summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--.gitignore270
-rw-r--r--GL/Makefile.am2
-rw-r--r--GL/apple/aglGlx.c1
-rw-r--r--GL/apple/indirect.c1
-rw-r--r--GL/glx/.gitignore5
-rw-r--r--GL/glx/Makefile.am29
-rw-r--r--GL/glx/extension_string.c165
-rw-r--r--GL/glx/extension_string.h63
-rw-r--r--GL/glx/g_disptab.c841
-rw-r--r--GL/glx/g_disptab.h83
-rw-r--r--GL/glx/g_disptab_EXT.c4657
-rw-r--r--GL/glx/g_disptab_EXT.h48
-rw-r--r--GL/glx/global.c77
-rw-r--r--GL/glx/glxcmds.c888
-rw-r--r--GL/glx/glxcmdsswap.c592
-rw-r--r--GL/glx/glxcontext.h7
-rw-r--r--GL/glx/glxdrawable.h7
-rw-r--r--GL/glx/glxdri.c370
-rw-r--r--GL/glx/glxerror.h58
-rw-r--r--GL/glx/glxext.c189
-rw-r--r--GL/glx/glxext.h16
-rw-r--r--GL/glx/glxscreens.c50
-rw-r--r--GL/glx/glxscreens.h18
-rw-r--r--GL/glx/glxserver.h18
-rw-r--r--GL/glx/glxutil.c37
-rw-r--r--GL/glx/glxutil.h26
-rw-r--r--GL/glx/indirect_dispatch.c2086
-rw-r--r--GL/glx/indirect_dispatch.h248
-rw-r--r--GL/glx/indirect_dispatch_swap.c2126
-rw-r--r--GL/glx/indirect_program.c163
-rw-r--r--GL/glx/indirect_reqsize.c2
-rw-r--r--GL/glx/indirect_size_get.c1753
-rw-r--r--GL/glx/indirect_size_get.h15
-rw-r--r--GL/glx/indirect_table.c1593
-rw-r--r--GL/glx/indirect_table.h106
-rw-r--r--GL/glx/indirect_texture_compression.c133
-rw-r--r--GL/glx/indirect_util.c118
-rw-r--r--GL/glx/indirect_util.h10
-rw-r--r--GL/glx/render2.c1
-rw-r--r--GL/glx/render2swap.c1
-rw-r--r--GL/glx/rensize.c3
-rw-r--r--GL/glx/rensizetab.c2553
-rw-r--r--GL/glx/single2.c1
-rw-r--r--GL/glx/single2swap.c1
-rw-r--r--GL/glx/singlepix.c126
-rw-r--r--GL/glx/singlepixswap.c96
-rw-r--r--GL/glx/singlesize.c1
-rw-r--r--GL/glx/swap_interval.c105
-rw-r--r--GL/glx/unpack.h1
-rw-r--r--GL/glx/xfont.c5
-rw-r--r--GL/include/GL/Makefile.am1
-rw-r--r--GL/include/GL/glx_ansic.h112
-rw-r--r--GL/include/GL/xf86glx.h39
-rw-r--r--GL/include/Makefile.am1
-rw-r--r--GL/mesa/.gitignore32
-rw-r--r--GL/mesa/X/Makefile.am4
-rw-r--r--GL/mesa/X/xf86glx.c41
-rw-r--r--GL/mesa/X/xf86glx_util.c2
-rw-r--r--GL/mesa/X/xf86glx_util.h1
-rw-r--r--GL/mesa/X/xf86glxint.h1
-rw-r--r--GL/mesa/array_cache/Makefile.am4
-rw-r--r--GL/mesa/glapi/Makefile.am4
-rw-r--r--GL/mesa/main/Makefile.am6
-rw-r--r--GL/mesa/math/Makefile.am4
-rw-r--r--GL/mesa/shader/Makefile.am4
-rw-r--r--GL/mesa/shader/grammar/Makefile.am4
-rw-r--r--GL/mesa/shader/slang/Makefile.am4
-rw-r--r--GL/mesa/swrast/Makefile.am4
-rw-r--r--GL/mesa/swrast_setup/Makefile.am4
-rw-r--r--GL/mesa/tnl/Makefile.am4
-rwxr-xr-xGL/symlink-mesa.sh385
-rw-r--r--Makefile.am21
-rw-r--r--XTrap/Makefile.am2
-rw-r--r--XTrap/xtrapddmi.c1
-rw-r--r--XTrap/xtrapdi.c16
-rw-r--r--XTrap/xtrapdiswp.c4
-rw-r--r--Xext/EVI.c2
-rw-r--r--Xext/EVIstruct.h2
-rw-r--r--Xext/Makefile.am28
-rw-r--r--Xext/appgroup.c125
-rw-r--r--Xext/appgroup.h87
-rw-r--r--Xext/bigreq.c2
-rw-r--r--Xext/cup.c4
-rw-r--r--Xext/dpms.c2
-rw-r--r--Xext/dpmsproc.h1
-rw-r--r--Xext/dpmsstubs.c2
-rw-r--r--Xext/fontcache.c5
-rw-r--r--Xext/mbuf.c43
-rw-r--r--Xext/mbufbf.c2
-rw-r--r--Xext/mbufpx.c2
-rw-r--r--Xext/mitmisc.c14
-rw-r--r--Xext/panoramiX.c30
-rw-r--r--Xext/panoramiX.h2
-rw-r--r--Xext/panoramiXSwap.c2
-rw-r--r--Xext/panoramiXh.h1
-rw-r--r--Xext/panoramiXprocs.c232
-rw-r--r--Xext/panoramiXsrv.h1
-rw-r--r--Xext/sampleEVI.c1
-rw-r--r--Xext/saver.c49
-rw-r--r--Xext/security.c440
-rw-r--r--Xext/securitysrv.h98
-rw-r--r--Xext/shape.c89
-rw-r--r--Xext/shm.c54
-rw-r--r--Xext/sleepuntil.c2
-rw-r--r--Xext/sleepuntil.h1
-rw-r--r--Xext/sync.c38
-rw-r--r--Xext/xace.c498
-rw-r--r--Xext/xace.h119
-rw-r--r--Xext/xacestr.h135
-rw-r--r--Xext/xcalibrate.c262
-rw-r--r--Xext/xcmisc.c2
-rw-r--r--Xext/xevie.c29
-rw-r--r--Xext/xf86bigfont.c6
-rw-r--r--Xext/xprint.c44
-rw-r--r--Xext/xres.c66
-rw-r--r--Xext/xtest.c22
-rw-r--r--Xext/xvdisp.c83
-rw-r--r--Xext/xvdix.h1
-rw-r--r--Xext/xvmain.c2
-rw-r--r--Xext/xvmc.c1
-rw-r--r--Xext/xvmcext.h1
-rw-r--r--Xi/Makefile.am2
-rw-r--r--Xi/chgdctl.c146
-rw-r--r--Xi/chgkbd.c102
-rw-r--r--Xi/chgkbd.h5
-rw-r--r--Xi/chgprop.c9
-rw-r--r--Xi/chgptr.c132
-rw-r--r--Xi/chgptr.h5
-rw-r--r--Xi/exevents.c75
-rw-r--r--Xi/exglobals.h7
-rw-r--r--Xi/extinit.c46
-rw-r--r--Xi/getdctl.c128
-rw-r--r--Xi/getdctl.h18
-rw-r--r--Xi/getprop.c9
-rw-r--r--Xi/getselev.c8
-rw-r--r--Xi/listdev.c15
-rw-r--r--Xi/selectev.c62
-rw-r--r--Xi/stubs.c99
-rw-r--r--Xi/ungrdevb.c7
-rw-r--r--Xi/ungrdevk.c7
-rw-r--r--XpConfig/C/print/models/PS2PDFspooldir-GS/Makefile.am3
-rw-r--r--XpConfig/C/print/models/PSspooldir/Makefile.am3
-rw-r--r--Xprint/etc/Xsession.d/Makefile.am1
-rw-r--r--Xprint/etc/init.d/Makefile.am1
-rw-r--r--Xprint/pcl/PclPixmap.c85
-rw-r--r--Xprint/raster/Makefile.am11
-rw-r--r--afb/Makefile.am2
-rw-r--r--afb/afb.h2
-rw-r--r--afb/afbbitblt.c2
-rw-r--r--afb/afbblt.c2
-rw-r--r--afb/afbbres.c1
-rw-r--r--afb/afbbresd.c1
-rw-r--r--afb/afbbstore.c1
-rw-r--r--afb/afbclip.c2
-rw-r--r--afb/afbcmap.c2
-rw-r--r--afb/afbfillarc.c2
-rw-r--r--afb/afbfillrct.c2
-rw-r--r--afb/afbfillsp.c2
-rw-r--r--afb/afbfont.c1
-rw-r--r--afb/afbgc.c2
-rw-r--r--afb/afbgetsp.c2
-rw-r--r--afb/afbhrzvert.c2
-rw-r--r--afb/afbimage.c1
-rw-r--r--afb/afbimggblt.c2
-rw-r--r--afb/afbline.c2
-rw-r--r--afb/afbmisc.c1
-rw-r--r--afb/afbpixmap.c2
-rw-r--r--afb/afbply1rct.c2
-rw-r--r--afb/afbplygblt.c2
-rw-r--r--afb/afbpntarea.c2
-rw-r--r--afb/afbpntwin.c1
-rw-r--r--afb/afbpolypnt.c2
-rw-r--r--afb/afbpushpxl.c2
-rw-r--r--afb/afbscrinit.c2
-rw-r--r--afb/afbsetsp.c2
-rw-r--r--afb/afbtegblt.c2
-rw-r--r--afb/afbtile.c2
-rw-r--r--afb/afbwindow.c2
-rw-r--r--afb/afbzerarc.c2
-rw-r--r--cfb/Makefile.am2
-rw-r--r--cfb/cfb.h2
-rw-r--r--cfb/cfb16.h1
-rw-r--r--cfb/cfb24.h1
-rw-r--r--cfb/cfb32.h1
-rw-r--r--cfb/cfb8bit.c2
-rw-r--r--cfb/cfb8bit.h2
-rw-r--r--cfb/cfb8line.c2
-rw-r--r--cfb/cfballpriv.c2
-rw-r--r--cfb/cfbbitblt.c2
-rw-r--r--cfb/cfbblt.c2
-rw-r--r--cfb/cfbbres.c2
-rw-r--r--cfb/cfbbresd.c2
-rw-r--r--cfb/cfbbstore.c2
-rw-r--r--cfb/cfbcmap.c2
-rw-r--r--cfb/cfbcppl.c1
-rw-r--r--cfb/cfbfillarc.c2
-rw-r--r--cfb/cfbfillrct.c2
-rw-r--r--cfb/cfbfillsp.c2
-rw-r--r--cfb/cfbgc.c2
-rw-r--r--cfb/cfbgetsp.c2
-rw-r--r--cfb/cfbglblt8.c2
-rw-r--r--cfb/cfbhrzvert.c2
-rw-r--r--cfb/cfbigblt8.c2
-rw-r--r--cfb/cfbimage.c2
-rw-r--r--cfb/cfbline.c2
-rw-r--r--cfb/cfbmap.h2
-rw-r--r--cfb/cfbmskbits.c2
-rw-r--r--cfb/cfbmskbits.h2
-rw-r--r--cfb/cfbpixmap.c2
-rw-r--r--cfb/cfbply1rct.c2
-rw-r--r--cfb/cfbpntwin.c3
-rw-r--r--cfb/cfbpolypnt.c2
-rw-r--r--cfb/cfbpush8.c2
-rw-r--r--cfb/cfbrctstp8.c2
-rw-r--r--cfb/cfbrrop.c2
-rw-r--r--cfb/cfbrrop.h2
-rw-r--r--cfb/cfbscrinit.c2
-rw-r--r--cfb/cfbsetsp.c2
-rw-r--r--cfb/cfbsolid.c2
-rw-r--r--cfb/cfbteblt8.c4
-rw-r--r--cfb/cfbtegblt.c2
-rw-r--r--cfb/cfbtile32.c2
-rw-r--r--cfb/cfbtileodd.c2
-rw-r--r--cfb/cfbunmap.h1
-rw-r--r--cfb/cfbwindow.c2
-rw-r--r--cfb/cfbzerarc.c2
-rw-r--r--cfb/stip68kgnu.h2
-rw-r--r--cfb32/Makefile.am2
-rw-r--r--composite/Makefile.am2
-rw-r--r--composite/compext.c5
-rw-r--r--composite/compinit.c46
-rw-r--r--composite/compint.h13
-rw-r--r--composite/compwindow.c8
-rw-r--r--config/Makefile.am10
-rw-r--r--config/config.c450
-rw-r--r--config/dbus-api35
-rw-r--r--config/xorg-server.conf13
-rw-r--r--configure.ac557
-rw-r--r--cpprules.in1
-rw-r--r--damageext/Makefile.am2
-rwxr-xr-xdamageext/damageext.c16
-rw-r--r--dbe/Makefile.am2
-rw-r--r--dbe/dbe.c35
-rw-r--r--dbe/dbestruct.h1
-rw-r--r--dbe/midbe.c2
-rw-r--r--dbe/midbe.h1
-rw-r--r--dbe/midbestr.h1
-rw-r--r--dix/Makefile.am26
-rw-r--r--dix/Xserver-dtrace.h.in100
-rw-r--r--dix/Xserver.d59
-rw-r--r--dix/atom.c4
-rw-r--r--dix/colormap.c10
-rw-r--r--dix/cursor.c6
-rw-r--r--dix/devices.c986
-rw-r--r--dix/dispatch.c647
-rw-r--r--dix/dispatch.h1
-rw-r--r--dix/dixfonts.c76
-rw-r--r--dix/dixutils.c221
-rw-r--r--dix/events.c396
-rw-r--r--dix/extension.c114
-rw-r--r--dix/ffs.c9
-rw-r--r--dix/gc.c10
-rw-r--r--dix/getevents.c785
-rw-r--r--dix/globals.c12
-rw-r--r--dix/glyphcurs.c1
-rw-r--r--dix/grabs.c2
-rw-r--r--dix/main.c51
-rw-r--r--dix/pixmap.c2
-rw-r--r--dix/privates.c61
-rw-r--r--dix/property.c131
-rw-r--r--dix/resource.c133
-rw-r--r--dix/strcasecmp.c48
-rw-r--r--dix/swaprep.c2
-rw-r--r--dix/swapreq.c2
-rw-r--r--dix/tables.c2
-rw-r--r--dix/window.c118
-rw-r--r--dix/xpstubs.c4
-rw-r--r--doc/.gitignore2
-rw-r--r--doc/Xserver.man.pre12
-rw-r--r--doc/c-extensions32
-rw-r--r--exa/Makefile.am2
-rw-r--r--exa/exa.c40
-rw-r--r--exa/exa.h9
-rw-r--r--exa/exa_accel.c47
-rw-r--r--exa/exa_offscreen.c5
-rw-r--r--exa/exa_priv.h8
-rw-r--r--exa/exa_render.c123
-rw-r--r--fb/Makefile.am14
-rw-r--r--fb/fb.h123
-rw-r--r--fb/fb24_32.c78
-rw-r--r--fb/fballpriv.c6
-rw-r--r--fb/fbarc.c2
-rw-r--r--fb/fbbits.c17
-rw-r--r--fb/fbbits.h35
-rw-r--r--fb/fbblt.c139
-rw-r--r--fb/fbbltone.c97
-rw-r--r--fb/fbbstore.c1
-rw-r--r--fb/fbcmap.c2
-rw-r--r--fb/fbcompose.c730
-rw-r--r--fb/fbcopy.c11
-rw-r--r--fb/fbedge.c16
-rw-r--r--fb/fbedgeimp.h10
-rw-r--r--fb/fbfill.c14
-rw-r--r--fb/fbfillrect.c1
-rw-r--r--fb/fbfillsp.c1
-rw-r--r--fb/fbgc.c15
-rw-r--r--fb/fbgetsp.c3
-rw-r--r--fb/fbglyph.c20
-rw-r--r--fb/fbimage.c9
-rw-r--r--fb/fbmmx.c2
-rw-r--r--fb/fboverlay.c2
-rw-r--r--fb/fboverlay.h1
-rw-r--r--fb/fbpict.c200
-rw-r--r--fb/fbpict.h77
-rw-r--r--fb/fbpixmap.c13
-rw-r--r--fb/fbpoint.c8
-rw-r--r--fb/fbpseudocolor.c6
-rw-r--r--fb/fbpush.c8
-rw-r--r--fb/fbrop.h1
-rw-r--r--fb/fbscreen.c45
-rw-r--r--fb/fbseg.c29
-rw-r--r--fb/fbsetsp.c2
-rw-r--r--fb/fbsolid.c42
-rw-r--r--fb/fbstipple.c7
-rw-r--r--fb/fbtile.c7
-rw-r--r--fb/fbtrap.c4
-rw-r--r--fb/fbutil.c1
-rw-r--r--fb/fbwindow.c10
-rw-r--r--fb/wfbrename.h198
-rw-r--r--hw/Makefile.am9
-rw-r--r--hw/darwin/Makefile.am5
-rw-r--r--hw/darwin/darwin.c2
-rw-r--r--hw/darwin/darwin.h1
-rw-r--r--hw/darwin/darwinClut8.h1
-rw-r--r--hw/darwin/darwinEvents.c1
-rw-r--r--hw/darwin/darwinKeyboard.c3
-rw-r--r--hw/darwin/darwinKeyboard.h1
-rw-r--r--hw/darwin/darwinXinput.c2
-rw-r--r--hw/darwin/iokit/xfIOKit.c2
-rw-r--r--hw/darwin/iokit/xfIOKit.h1
-rw-r--r--hw/darwin/iokit/xfIOKitCursor.c1
-rw-r--r--hw/darwin/iokit/xfIOKitStartup.c1
-rw-r--r--hw/darwin/quartz/Preferences.h1
-rw-r--r--hw/darwin/quartz/XDarwinStartup.c1
-rw-r--r--hw/darwin/quartz/XServer.h2
-rw-r--r--hw/darwin/quartz/applewm.c15
-rw-r--r--hw/darwin/quartz/applewmExt.h1
-rw-r--r--hw/darwin/quartz/cr/XView.h1
-rw-r--r--hw/darwin/quartz/fullscreen/fullscreen.c2
-rw-r--r--hw/darwin/quartz/fullscreen/quartzCursor.c1
-rw-r--r--hw/darwin/quartz/fullscreen/quartzCursor.h1
-rw-r--r--hw/darwin/quartz/pseudoramiX.c28
-rw-r--r--hw/darwin/quartz/pseudoramiX.h1
-rw-r--r--hw/darwin/quartz/quartz.c2
-rw-r--r--hw/darwin/quartz/quartz.h2
-rw-r--r--hw/darwin/quartz/quartzAudio.c1
-rw-r--r--hw/darwin/quartz/quartzAudio.h1
-rw-r--r--hw/darwin/quartz/quartzCommon.h2
-rw-r--r--hw/darwin/quartz/quartzCursor.c1
-rw-r--r--hw/darwin/quartz/quartzCursor.h1
-rw-r--r--hw/darwin/quartz/quartzKeyboard.c1
-rw-r--r--hw/darwin/quartz/quartzPasteboard.c1
-rw-r--r--hw/darwin/quartz/quartzPasteboard.h3
-rw-r--r--hw/darwin/quartz/quartzStartup.c3
-rw-r--r--hw/darwin/quartz/xpr/Xplugin.h1
-rw-r--r--hw/darwin/quartz/xpr/appledri.c23
-rw-r--r--hw/darwin/quartz/xpr/dri.c6
-rw-r--r--hw/darwin/quartz/xpr/dri.h1
-rw-r--r--hw/darwin/quartz/xpr/dristruct.h1
-rw-r--r--hw/darwin/quartz/xpr/x-hash.c1
-rw-r--r--hw/darwin/quartz/xpr/x-hash.h1
-rw-r--r--hw/darwin/quartz/xpr/x-list.c1
-rw-r--r--hw/darwin/quartz/xpr/x-list.h1
-rw-r--r--hw/darwin/quartz/xpr/xpr.h2
-rw-r--r--hw/darwin/quartz/xpr/xprAppleWM.c1
-rw-r--r--hw/darwin/quartz/xpr/xprCursor.c1
-rw-r--r--hw/darwin/quartz/xpr/xprFrame.c2
-rw-r--r--hw/darwin/quartz/xpr/xprScreen.c2
-rw-r--r--hw/darwin/utils/dumpkeymap.c1
-rw-r--r--hw/dmx/Makefile.am7
-rw-r--r--hw/dmx/config/Makefile.am2
-rw-r--r--hw/dmx/dmx-config.h1
-rw-r--r--hw/dmx/dmx.c18
-rw-r--r--hw/dmx/dmx.h4
-rw-r--r--hw/dmx/dmxcmap.c21
-rw-r--r--hw/dmx/dmxcursor.c4
-rw-r--r--hw/dmx/dmxextension.c136
-rw-r--r--hw/dmx/dmxinit.c16
-rw-r--r--hw/dmx/dmxinput.c2
-rw-r--r--hw/dmx/dmxpict.c109
-rw-r--r--hw/dmx/dmxpict.h2
-rw-r--r--hw/dmx/glxProxy/Makefile.am4
-rw-r--r--hw/dmx/glxProxy/compsize.c1
-rw-r--r--hw/dmx/glxProxy/g_disptab.c1
-rw-r--r--hw/dmx/glxProxy/g_disptab.h1
-rw-r--r--hw/dmx/glxProxy/global.c1
-rw-r--r--hw/dmx/glxProxy/glxcmds.c120
-rw-r--r--hw/dmx/glxProxy/glxcmdsswap.c8
-rw-r--r--hw/dmx/glxProxy/glxcontext.h1
-rw-r--r--hw/dmx/glxProxy/glxdrawable.h1
-rw-r--r--hw/dmx/glxProxy/glxerror.h1
-rw-r--r--hw/dmx/glxProxy/glxext.c14
-rw-r--r--hw/dmx/glxProxy/glxext.h1
-rw-r--r--hw/dmx/glxProxy/glxscreens.c8
-rw-r--r--hw/dmx/glxProxy/glxscreens.h1
-rw-r--r--hw/dmx/glxProxy/glxserver.h2
-rw-r--r--hw/dmx/glxProxy/glxsingle.c1
-rw-r--r--hw/dmx/glxProxy/glxutil.c4
-rw-r--r--hw/dmx/glxProxy/glxutil.h1
-rw-r--r--hw/dmx/glxProxy/glxvendor.c1
-rw-r--r--hw/dmx/glxProxy/glxvisuals.c1
-rw-r--r--hw/dmx/glxProxy/render2swap.c1
-rw-r--r--hw/dmx/glxProxy/renderpixswap.c1
-rw-r--r--hw/dmx/glxProxy/unpack.h1
-rw-r--r--hw/dmx/input/Makefile.am2
-rw-r--r--hw/dmx/input/dmxeq.c1
-rw-r--r--hw/kdrive/Makefile.am14
-rw-r--r--hw/kdrive/ati/Makefile.am10
-rw-r--r--hw/kdrive/ati/ati_dripriv.h1
-rw-r--r--hw/kdrive/ati/ati_stub.c10
-rw-r--r--hw/kdrive/ati/r128_common.h1
-rw-r--r--hw/kdrive/ati/r128_sarea.h1
-rw-r--r--hw/kdrive/ati/radeon_common.h1
-rw-r--r--hw/kdrive/ati/radeon_sarea.h1
-rw-r--r--hw/kdrive/chips/Makefile.am15
-rw-r--r--hw/kdrive/chips/chipsstub.c3
-rw-r--r--hw/kdrive/ephyr/Makefile.am13
-rw-r--r--hw/kdrive/ephyr/ephyr.c167
-rw-r--r--hw/kdrive/ephyr/ephyr.h9
-rw-r--r--hw/kdrive/ephyr/ephyrinit.c26
-rw-r--r--hw/kdrive/ephyr/hostx.c56
-rw-r--r--hw/kdrive/ephyr/hostx.h17
-rw-r--r--hw/kdrive/ephyr/os.c30
-rw-r--r--hw/kdrive/epson/Makefile.am11
-rw-r--r--hw/kdrive/epson/epson13806stub.c6
-rw-r--r--hw/kdrive/fake/Makefile.am11
-rw-r--r--hw/kdrive/fake/fake.c6
-rw-r--r--hw/kdrive/fake/fake.h4
-rw-r--r--hw/kdrive/fake/fakeinit.c17
-rw-r--r--hw/kdrive/fake/kbd.c48
-rw-r--r--hw/kdrive/fake/mouse.c26
-rw-r--r--hw/kdrive/fbdev/Makefile.am18
-rw-r--r--hw/kdrive/fbdev/fbdev.c24
-rw-r--r--hw/kdrive/fbdev/fbdev.h1
-rw-r--r--hw/kdrive/fbdev/fbinit.c33
-rw-r--r--hw/kdrive/i810/Makefile.am8
-rw-r--r--hw/kdrive/i810/i810stub.c3
-rw-r--r--hw/kdrive/igs/igsstub.c3
-rw-r--r--hw/kdrive/itsy/kbd.c51
-rw-r--r--hw/kdrive/itsy/ts.c7
-rw-r--r--hw/kdrive/linux/Makefile.am13
-rw-r--r--hw/kdrive/linux/bus.c75
-rw-r--r--hw/kdrive/linux/evdev.c384
-rw-r--r--hw/kdrive/linux/keyboard.c484
-rw-r--r--hw/kdrive/linux/linux.c52
-rw-r--r--hw/kdrive/linux/mouse.c236
-rw-r--r--hw/kdrive/linux/ms.c61
-rw-r--r--hw/kdrive/linux/ps2.c84
-rw-r--r--hw/kdrive/linux/ts.c140
-rw-r--r--hw/kdrive/linux/tslib.c343
-rw-r--r--hw/kdrive/mach64/Makefile.am6
-rw-r--r--hw/kdrive/mach64/mach64stub.c3
-rw-r--r--hw/kdrive/mga/Makefile.am9
-rw-r--r--hw/kdrive/mga/g400_composite.c4
-rw-r--r--hw/kdrive/mga/mgastub.c3
-rw-r--r--hw/kdrive/neomagic/Makefile.am9
-rw-r--r--hw/kdrive/neomagic/neomagic.h8
-rw-r--r--hw/kdrive/neomagic/neomagicstub.c6
-rw-r--r--hw/kdrive/nvidia/Makefile.am9
-rw-r--r--hw/kdrive/nvidia/nvidiastub.c3
-rw-r--r--hw/kdrive/pcmcia/pcmciastub.c3
-rw-r--r--hw/kdrive/pm2/Makefile.am9
-rw-r--r--hw/kdrive/pm2/glint_regs.h1
-rw-r--r--hw/kdrive/pm2/pm2stub.c3
-rw-r--r--hw/kdrive/r128/Makefile.am9
-rw-r--r--hw/kdrive/r128/r128stub.c3
-rw-r--r--hw/kdrive/savage/s3stub.c8
-rw-r--r--hw/kdrive/sdl/Makefile.am7
-rw-r--r--hw/kdrive/sdl/sdl.c144
-rw-r--r--hw/kdrive/sis300/Makefile.am6
-rw-r--r--hw/kdrive/sis300/sis_reg.h1
-rw-r--r--hw/kdrive/sis300/sis_stub.c3
-rw-r--r--hw/kdrive/sis530/sisstub.c3
-rw-r--r--hw/kdrive/smi/Makefile.am9
-rw-r--r--hw/kdrive/smi/smi.c1
-rw-r--r--hw/kdrive/smi/smi.h1
-rw-r--r--hw/kdrive/smi/smidraw.c1
-rw-r--r--hw/kdrive/smi/smidraw.h1
-rw-r--r--hw/kdrive/smi/smistub.c4
-rw-r--r--hw/kdrive/smi/smivideo.c1
-rw-r--r--hw/kdrive/src/Makefile.am3
-rw-r--r--hw/kdrive/src/fourcc.h1
-rw-r--r--hw/kdrive/src/kdrive.c190
-rw-r--r--hw/kdrive/src/kdrive.h252
-rw-r--r--hw/kdrive/src/kinfo.c85
-rw-r--r--hw/kdrive/src/kinput.c1847
-rw-r--r--hw/kdrive/src/kkeymap.c66
-rw-r--r--hw/kdrive/src/kloadmap.c1
-rw-r--r--hw/kdrive/src/kxv.c2
-rw-r--r--hw/kdrive/trident/tridentstub.c3
-rw-r--r--hw/kdrive/trio/s3stub.c3
-rw-r--r--hw/kdrive/vesa/Makefile.am11
-rw-r--r--hw/kdrive/vesa/vbe.c2
-rw-r--r--hw/kdrive/vesa/vesa.c8
-rw-r--r--hw/kdrive/vesa/vesainit.c11
-rw-r--r--hw/kdrive/vesa/vm86.c31
-rw-r--r--hw/kdrive/via/Makefile.am9
-rw-r--r--hw/kdrive/via/viastub.c3
-rw-r--r--hw/kdrive/vxworks/vxkbd.c4
-rw-r--r--hw/kdrive/vxworks/vxworks.c33
-rw-r--r--hw/vfb/.gitignore2
-rw-r--r--hw/vfb/InitInput.c15
-rw-r--r--hw/vfb/InitOutput.c18
-rw-r--r--hw/vfb/Makefile.am5
-rw-r--r--hw/vfb/lk201kbd.h1
-rw-r--r--hw/xfree86/Makefile.am35
-rw-r--r--hw/xfree86/common/Makefile.am17
-rw-r--r--hw/xfree86/common/atKeynames.h1
-rw-r--r--hw/xfree86/common/compiler.h109
-rw-r--r--hw/xfree86/common/fourcc.h1
-rw-r--r--hw/xfree86/common/scoasm.h1
-rw-r--r--hw/xfree86/common/vesamodes6
-rw-r--r--hw/xfree86/common/xf86.h32
-rw-r--r--hw/xfree86/common/xf86AutoConfig.c209
-rw-r--r--hw/xfree86/common/xf86Bus.c99
-rw-r--r--hw/xfree86/common/xf86Bus.h12
-rw-r--r--hw/xfree86/common/xf86Config.c460
-rw-r--r--hw/xfree86/common/xf86Config.h1
-rw-r--r--hw/xfree86/common/xf86Configure.c28
-rw-r--r--hw/xfree86/common/xf86Cursor.c48
-rw-r--r--hw/xfree86/common/xf86DGA.c54
-rw-r--r--hw/xfree86/common/xf86DPMS.c2
-rw-r--r--hw/xfree86/common/xf86Date.h2
-rw-r--r--hw/xfree86/common/xf86Debug.c3
-rw-r--r--hw/xfree86/common/xf86DoProbe.c5
-rw-r--r--hw/xfree86/common/xf86DoScanPci.c14
-rw-r--r--hw/xfree86/common/xf86Events.c966
-rw-r--r--hw/xfree86/common/xf86Globals.c42
-rw-r--r--hw/xfree86/common/xf86Helper.c252
-rw-r--r--hw/xfree86/common/xf86InPriv.h8
-rw-r--r--hw/xfree86/common/xf86Init.c187
-rw-r--r--hw/xfree86/common/xf86Io.c501
-rw-r--r--hw/xfree86/common/xf86Kbd.c395
-rw-r--r--hw/xfree86/common/xf86KbdBSD.c1266
-rw-r--r--hw/xfree86/common/xf86KbdLnx.c651
-rw-r--r--hw/xfree86/common/xf86KbdMach.c317
-rw-r--r--hw/xfree86/common/xf86Keymap.h455
-rw-r--r--hw/xfree86/common/xf86MiscExt.c87
-rw-r--r--hw/xfree86/common/xf86Mode.c779
-rw-r--r--hw/xfree86/common/xf86Module.h5
-rw-r--r--hw/xfree86/common/xf86Opt.h1
-rw-r--r--hw/xfree86/common/xf86Option.c5
-rw-r--r--hw/xfree86/common/xf86PM.c1
-rw-r--r--hw/xfree86/common/xf86PciInfo.h5
-rw-r--r--hw/xfree86/common/xf86Priv.h22
-rw-r--r--hw/xfree86/common/xf86Privstr.h51
-rw-r--r--hw/xfree86/common/xf86RandR.c14
-rw-r--r--hw/xfree86/common/xf86Resources.h1
-rw-r--r--hw/xfree86/common/xf86Version.h3
-rw-r--r--hw/xfree86/common/xf86Versions.c4
-rw-r--r--hw/xfree86/common/xf86VidMode.c1
-rw-r--r--hw/xfree86/common/xf86XKB.c1
-rw-r--r--hw/xfree86/common/xf86Xinput.c1446
-rw-r--r--hw/xfree86/common/xf86Xinput.h42
-rw-r--r--hw/xfree86/common/xf86cmap.c2
-rw-r--r--hw/xfree86/common/xf86cmap.h1
-rw-r--r--hw/xfree86/common/xf86cvt.c292
-rw-r--r--hw/xfree86/common/xf86fbBus.c1
-rw-r--r--hw/xfree86/common/xf86fbman.c1
-rw-r--r--hw/xfree86/common/xf86fbman.h1
-rw-r--r--hw/xfree86/common/xf86isaBus.c1
-rw-r--r--hw/xfree86/common/xf86noBus.c1
-rw-r--r--hw/xfree86/common/xf86pciBus.c14
-rw-r--r--hw/xfree86/common/xf86pciBus.h1
-rw-r--r--hw/xfree86/common/xf86sbusBus.c1
-rw-r--r--hw/xfree86/common/xf86sbusBus.h1
-rw-r--r--hw/xfree86/common/xf86str.h10
-rw-r--r--hw/xfree86/common/xf86xv.c76
-rw-r--r--hw/xfree86/common/xf86xv.h4
-rw-r--r--hw/xfree86/common/xf86xvmc.c7
-rw-r--r--hw/xfree86/common/xf86xvmc.h1
-rw-r--r--hw/xfree86/common/xf86xvpriv.h2
-rw-r--r--hw/xfree86/common/xisb.c1
-rw-r--r--hw/xfree86/common/xorgHelper.c1
-rw-r--r--hw/xfree86/common/xorgVersion.h2
-rw-r--r--hw/xfree86/ddc/Makefile.am5
-rw-r--r--hw/xfree86/ddc/ddcProperty.c204
-rw-r--r--hw/xfree86/ddc/edid.c1
-rw-r--r--hw/xfree86/ddc/edid.h1
-rw-r--r--hw/xfree86/ddc/edid_modes.c348
-rw-r--r--hw/xfree86/ddc/interpret_edid.c52
-rw-r--r--hw/xfree86/ddc/interpret_vdif.c1
-rw-r--r--hw/xfree86/ddc/print_edid.c1
-rw-r--r--hw/xfree86/ddc/print_vdif.c1
-rw-r--r--hw/xfree86/ddc/vdif.h1
-rw-r--r--hw/xfree86/ddc/xf86DDC.c41
-rw-r--r--hw/xfree86/ddc/xf86DDC.h6
-rw-r--r--hw/xfree86/dixmods/Makefile.am11
-rw-r--r--hw/xfree86/dixmods/extmod/Makefile.am2
-rw-r--r--hw/xfree86/dixmods/extmod/dgaproc.h1
-rw-r--r--hw/xfree86/dixmods/extmod/modinit.h8
-rw-r--r--hw/xfree86/dixmods/extmod/vidmodeproc.h1
-rw-r--r--hw/xfree86/dixmods/extmod/xf86dga.c1
-rw-r--r--hw/xfree86/dixmods/extmod/xf86dga2.c1
-rw-r--r--hw/xfree86/dixmods/extmod/xf86misc.c1
-rw-r--r--hw/xfree86/dixmods/extmod/xf86miscproc.h1
-rw-r--r--hw/xfree86/dixmods/extmod/xf86vmode.c3
-rw-r--r--hw/xfree86/dixmods/extmod/xvmod.c1
-rw-r--r--hw/xfree86/dixmods/extmod/xvmodproc.h1
-rw-r--r--hw/xfree86/dixmods/fbmodule.c6
-rw-r--r--hw/xfree86/dixmods/type1mod.c15
-rw-r--r--hw/xfree86/dixmods/xkbKillSrv.c2
-rw-r--r--hw/xfree86/dixmods/xkbPrivate.c9
-rw-r--r--hw/xfree86/dixmods/xkbVT.c2
-rw-r--r--hw/xfree86/doc/Makefile.am3
-rw-r--r--hw/xfree86/doc/changelogs/CHANGELOG18691
-rw-r--r--hw/xfree86/doc/changelogs/CHANGELOG.ND418
-rw-r--r--hw/xfree86/doc/changelogs/CHANGELOG.R51249
-rw-r--r--hw/xfree86/doc/man/.gitignore4
-rw-r--r--hw/xfree86/doc/man/Xorg.man.pre68
-rw-r--r--hw/xfree86/doc/man/xorg.conf.man.pre11
-rw-r--r--hw/xfree86/doc/sgml/DESIGN.sgml7
-rw-r--r--hw/xfree86/dri/Makefile.am7
-rw-r--r--hw/xfree86/dri/dri.c125
-rw-r--r--hw/xfree86/dri/dri.h3
-rw-r--r--hw/xfree86/dri/drimodule.c48
-rw-r--r--hw/xfree86/dri/dristruct.h1
-rw-r--r--hw/xfree86/dri/sarea.h2
-rw-r--r--hw/xfree86/dri/xf86dri.c73
-rw-r--r--hw/xfree86/dummylib/Makefile.am13
-rw-r--r--hw/xfree86/dummylib/dummylib.h1
-rw-r--r--hw/xfree86/dummylib/getvalidbios.c1
-rw-r--r--hw/xfree86/dummylib/logvwrite.c1
-rw-r--r--hw/xfree86/dummylib/xalloc.c1
-rw-r--r--hw/xfree86/dummylib/xf86addrestolist.c1
-rw-r--r--hw/xfree86/dummylib/xf86drvmsg.c1
-rw-r--r--hw/xfree86/dummylib/xf86drvmsgverb.c1
-rw-r--r--hw/xfree86/dummylib/xf86errorf.c1
-rw-r--r--hw/xfree86/dummylib/xf86errorfverb.c1
-rw-r--r--hw/xfree86/dummylib/xf86msg.c1
-rw-r--r--hw/xfree86/dummylib/xf86msgverb.c1
-rw-r--r--hw/xfree86/dummylib/xf86opt.c1
-rw-r--r--hw/xfree86/exa/Makefile.am14
-rw-r--r--hw/xfree86/exa/exa.man.pre40
-rw-r--r--hw/xfree86/exa/examodule.c35
-rw-r--r--hw/xfree86/fbdevhw/.gitignore2
-rw-r--r--hw/xfree86/fbdevhw/Makefile.am2
-rw-r--r--hw/xfree86/fbdevhw/fbdevhw.h1
-rw-r--r--hw/xfree86/fbdevhw/fbdevhwstub.c1
-rw-r--r--hw/xfree86/fbdevhw/fbpriv.h1
-rw-r--r--hw/xfree86/getconfig/Makefile.am56
-rw-r--r--hw/xfree86/getconfig/cfg.man.pre137
-rw-r--r--hw/xfree86/getconfig/cfg.sample110
-rw-r--r--hw/xfree86/getconfig/getconfig43
-rw-r--r--hw/xfree86/getconfig/getconfig.man.pre98
-rw-r--r--hw/xfree86/getconfig/getconfig.pl433
-rw-r--r--hw/xfree86/getconfig/xorg.cfg50
-rw-r--r--hw/xfree86/i2c/Makefile.am2
-rw-r--r--hw/xfree86/i2c/bt829.h18
-rw-r--r--hw/xfree86/i2c/fi1236.c9
-rw-r--r--hw/xfree86/i2c/fi1236.h14
-rw-r--r--hw/xfree86/i2c/i2c_def.h15
-rw-r--r--hw/xfree86/i2c/msp3430.h12
-rw-r--r--hw/xfree86/i2c/tda8425.h11
-rw-r--r--hw/xfree86/i2c/tda9850.c2
-rw-r--r--hw/xfree86/i2c/tda9850.h13
-rw-r--r--hw/xfree86/i2c/tda9885.h12
-rw-r--r--hw/xfree86/i2c/uda1380.h15
-rw-r--r--hw/xfree86/i2c/xf86i2c.c1
-rw-r--r--hw/xfree86/i2c/xf86i2c.h1
-rw-r--r--hw/xfree86/int10/Makefile.am31
-rw-r--r--hw/xfree86/int10/generic.c111
-rw-r--r--hw/xfree86/int10/helper_exec.c22
-rw-r--r--hw/xfree86/int10/helper_mem.c148
-rw-r--r--hw/xfree86/int10/pci.c1
-rw-r--r--hw/xfree86/int10/stub.c1
-rw-r--r--hw/xfree86/int10/xf86int10.c1
-rw-r--r--hw/xfree86/int10/xf86int10.h16
-rw-r--r--hw/xfree86/int10/xf86x86emu.c1
-rw-r--r--hw/xfree86/int10/xf86x86emu.h1
-rw-r--r--hw/xfree86/loader/Makefile.am16
-rw-r--r--hw/xfree86/loader/dixsym.c25
-rw-r--r--hw/xfree86/loader/dlloader.c113
-rw-r--r--hw/xfree86/loader/dlloader.h8
-rw-r--r--hw/xfree86/loader/extsym.c7
-rw-r--r--hw/xfree86/loader/fontsym.c5
-rw-r--r--hw/xfree86/loader/hash.c356
-rw-r--r--hw/xfree86/loader/hash.h40
-rw-r--r--hw/xfree86/loader/loader.c673
-rw-r--r--hw/xfree86/loader/loader.h158
-rw-r--r--hw/xfree86/loader/loaderProcs.h15
-rw-r--r--hw/xfree86/loader/loadext.c5
-rw-r--r--hw/xfree86/loader/loadfont.c2
-rw-r--r--hw/xfree86/loader/loadmod.c179
-rw-r--r--hw/xfree86/loader/misym.c10
-rw-r--r--hw/xfree86/loader/os.c6
-rw-r--r--hw/xfree86/loader/sym.h27
-rw-r--r--hw/xfree86/loader/xf86sym.c31
-rw-r--r--hw/xfree86/os-support/Makefile.am15
-rw-r--r--hw/xfree86/os-support/assyntax.h1
-rw-r--r--hw/xfree86/os-support/bsd/Makefile.am9
-rw-r--r--hw/xfree86/os-support/bsd/alpha_video.c1
-rw-r--r--hw/xfree86/os-support/bsd/arm_video.c1
-rw-r--r--hw/xfree86/os-support/bsd/bsdResource.c1
-rw-r--r--hw/xfree86/os-support/bsd/bsd_KbdMap.c1087
-rw-r--r--hw/xfree86/os-support/bsd/bsd_VTsw.c1
-rw-r--r--hw/xfree86/os-support/bsd/bsd_axp.c1
-rw-r--r--hw/xfree86/os-support/bsd/bsd_bell.c86
-rw-r--r--hw/xfree86/os-support/bsd/bsd_ev56.c1
-rw-r--r--hw/xfree86/os-support/bsd/bsd_init.c1
-rw-r--r--hw/xfree86/os-support/bsd/bsd_io.c294
-rw-r--r--hw/xfree86/os-support/bsd/bsd_jstk.c5
-rw-r--r--hw/xfree86/os-support/bsd/bsd_kbd.c573
-rw-r--r--hw/xfree86/os-support/bsd/bsd_kbd.h5
-rw-r--r--hw/xfree86/os-support/bsd/bsd_kqueue_apm.c1
-rw-r--r--hw/xfree86/os-support/bsd/bsd_mouse.c1
-rw-r--r--hw/xfree86/os-support/bsd/i386_video.c1
-rw-r--r--hw/xfree86/os-support/bsd/libusb/data.c1
-rw-r--r--hw/xfree86/os-support/bsd/libusb/descr.c1
-rw-r--r--hw/xfree86/os-support/bsd/libusb/parse.c1
-rw-r--r--hw/xfree86/os-support/bsd/libusb/usage.c1
-rw-r--r--hw/xfree86/os-support/bsd/libusb/usb.h1
-rw-r--r--hw/xfree86/os-support/bsd/libusb/usbvar.h1
-rw-r--r--hw/xfree86/os-support/bsd/ppc_video.c1
-rw-r--r--hw/xfree86/os-support/bsd/sparc64_video.c1
-rw-r--r--hw/xfree86/os-support/bus/460gxPCI.c1
-rw-r--r--hw/xfree86/os-support/bus/460gxPCI.h1
-rw-r--r--hw/xfree86/os-support/bus/Makefile.am2
-rw-r--r--hw/xfree86/os-support/bus/Pci.c9
-rw-r--r--hw/xfree86/os-support/bus/Pci.h5
-rw-r--r--hw/xfree86/os-support/bus/Sbus.c1
-rw-r--r--hw/xfree86/os-support/bus/altixPCI.c9
-rw-r--r--hw/xfree86/os-support/bus/axpPci.c1
-rw-r--r--hw/xfree86/os-support/bus/e8870PCI.c1
-rw-r--r--hw/xfree86/os-support/bus/e8870PCI.h1
-rw-r--r--hw/xfree86/os-support/bus/freebsdPci.c1
-rw-r--r--hw/xfree86/os-support/bus/ix86Pci.c1
-rw-r--r--hw/xfree86/os-support/bus/linuxPci.c299
-rw-r--r--hw/xfree86/os-support/bus/netbsdPci.c1
-rw-r--r--hw/xfree86/os-support/bus/ppcPci.c1
-rw-r--r--hw/xfree86/os-support/bus/sparcPci.c1
-rw-r--r--hw/xfree86/os-support/bus/xf86Pci.h2
-rw-r--r--hw/xfree86/os-support/bus/xf86Sbus.h1
-rw-r--r--hw/xfree86/os-support/bus/zx1PCI.c1
-rw-r--r--hw/xfree86/os-support/bus/zx1PCI.h1
-rw-r--r--hw/xfree86/os-support/drm/Makefile.am20
-rw-r--r--hw/xfree86/os-support/drm/drmmodule.c57
-rw-r--r--hw/xfree86/os-support/drm/xf86drm.c2326
-rw-r--r--hw/xfree86/os-support/drm/xf86drmHash.c435
-rw-r--r--hw/xfree86/os-support/drm/xf86drmRandom.c219
-rw-r--r--hw/xfree86/os-support/drm/xf86drmSL.c494
-rw-r--r--hw/xfree86/os-support/hurd/Makefile.am17
-rw-r--r--hw/xfree86/os-support/hurd/hurd_bell.c35
-rw-r--r--hw/xfree86/os-support/hurd/hurd_init.c90
-rw-r--r--hw/xfree86/os-support/hurd/hurd_mmap.c96
-rw-r--r--hw/xfree86/os-support/hurd/hurd_mouse.c221
-rw-r--r--hw/xfree86/os-support/hurd/hurd_video.c191
-rw-r--r--hw/xfree86/os-support/int10Defines.h1
-rw-r--r--hw/xfree86/os-support/linux/Makefile.am29
-rw-r--r--hw/xfree86/os-support/linux/int10/linux.c130
-rw-r--r--hw/xfree86/os-support/linux/lnx.h1
-rw-r--r--hw/xfree86/os-support/linux/lnxResource.c1
-rw-r--r--hw/xfree86/os-support/linux/lnx_KbdMap.c606
-rw-r--r--hw/xfree86/os-support/linux/lnx_acpi.c24
-rw-r--r--hw/xfree86/os-support/linux/lnx_agp.c7
-rw-r--r--hw/xfree86/os-support/linux/lnx_apm.c1
-rw-r--r--hw/xfree86/os-support/linux/lnx_axp.c1
-rw-r--r--hw/xfree86/os-support/linux/lnx_bell.c43
-rw-r--r--hw/xfree86/os-support/linux/lnx_ev56.c1
-rw-r--r--hw/xfree86/os-support/linux/lnx_init.c2
-rw-r--r--hw/xfree86/os-support/linux/lnx_io.c275
-rw-r--r--hw/xfree86/os-support/linux/lnx_jstk.c5
-rw-r--r--hw/xfree86/os-support/linux/lnx_kbd.c559
-rw-r--r--hw/xfree86/os-support/linux/lnx_kbd.h5
-rw-r--r--hw/xfree86/os-support/linux/lnx_kmod.c1
-rw-r--r--hw/xfree86/os-support/linux/lnx_mouse.c3
-rw-r--r--hw/xfree86/os-support/linux/lnx_pci.c81
-rw-r--r--hw/xfree86/os-support/linux/lnx_video.c18
-rw-r--r--hw/xfree86/os-support/lynxos/Makefile.am1
-rw-r--r--hw/xfree86/os-support/lynxos/lynx_init.c1
-rw-r--r--hw/xfree86/os-support/lynxos/lynx_io.c166
-rw-r--r--hw/xfree86/os-support/lynxos/lynx_mmap.c1
-rw-r--r--hw/xfree86/os-support/lynxos/lynx_mouse.c1
-rw-r--r--hw/xfree86/os-support/lynxos/lynx_noinline.c1
-rw-r--r--hw/xfree86/os-support/lynxos/lynx_ppc.c1
-rw-r--r--hw/xfree86/os-support/lynxos/lynx_video.c1
-rw-r--r--hw/xfree86/os-support/misc/BUSmemcpy.c1
-rw-r--r--hw/xfree86/os-support/misc/Delay.c1
-rw-r--r--hw/xfree86/os-support/misc/IODelay.c1
-rw-r--r--hw/xfree86/os-support/misc/Makefile.am16
-rw-r--r--hw/xfree86/os-support/misc/SlowBcopy.c1
-rw-r--r--hw/xfree86/os-support/misc/xf86_IlHack.c1
-rw-r--r--hw/xfree86/os-support/misc/xf86_Util.c1
-rw-r--r--hw/xfree86/os-support/sco/Makefile.am4
-rw-r--r--hw/xfree86/os-support/sco/VTsw_sco.c1
-rw-r--r--hw/xfree86/os-support/sco/sco_KbdMap.c304
-rw-r--r--hw/xfree86/os-support/sco/sco_init.c1
-rw-r--r--hw/xfree86/os-support/sco/sco_io.c269
-rw-r--r--hw/xfree86/os-support/sco/sco_kbd.c530
-rw-r--r--hw/xfree86/os-support/sco/sco_kbd.h20
-rw-r--r--hw/xfree86/os-support/sco/sco_mouse.c1
-rw-r--r--hw/xfree86/os-support/sco/sco_video.c1
-rw-r--r--hw/xfree86/os-support/shared/VTsw_noop.c1
-rw-r--r--hw/xfree86/os-support/shared/VTsw_usl.c1
-rw-r--r--hw/xfree86/os-support/shared/agp_noop.c1
-rw-r--r--hw/xfree86/os-support/shared/at_scancode.c132
-rw-r--r--hw/xfree86/os-support/shared/bios_devmem.c1
-rw-r--r--hw/xfree86/os-support/shared/bios_mmap.c1
-rw-r--r--hw/xfree86/os-support/shared/ia64Pci.c1
-rw-r--r--hw/xfree86/os-support/shared/ioperm_noop.c1
-rw-r--r--hw/xfree86/os-support/shared/kbd.c39
-rw-r--r--hw/xfree86/os-support/shared/kmod_noop.c1
-rw-r--r--hw/xfree86/os-support/shared/libc_wrapper.c10
-rw-r--r--hw/xfree86/os-support/shared/pm_noop.c1
-rw-r--r--hw/xfree86/os-support/shared/posix_tty.c1
-rw-r--r--hw/xfree86/os-support/shared/sigio.c27
-rw-r--r--hw/xfree86/os-support/shared/sigiostubs.c12
-rw-r--r--hw/xfree86/os-support/shared/stdPci.c1
-rw-r--r--hw/xfree86/os-support/shared/stdResource.c1
-rw-r--r--hw/xfree86/os-support/shared/std_kbdEv.c50
-rw-r--r--hw/xfree86/os-support/shared/sysv_kbd.c106
-rw-r--r--hw/xfree86/os-support/shared/vidmem.c1
-rw-r--r--hw/xfree86/os-support/shared/xf86Axp.c1
-rw-r--r--hw/xfree86/os-support/solaris/Makefile.am10
-rw-r--r--hw/xfree86/os-support/solaris/agpgart.h1
-rw-r--r--hw/xfree86/os-support/solaris/apSolaris.shar378
-rw-r--r--hw/xfree86/os-support/solaris/sun_agp.c1
-rw-r--r--hw/xfree86/os-support/solaris/sun_bell.c185
-rw-r--r--hw/xfree86/os-support/solaris/sun_bios.c1
-rw-r--r--hw/xfree86/os-support/solaris/sun_init.c33
-rw-r--r--hw/xfree86/os-support/solaris/sun_io.c160
-rw-r--r--hw/xfree86/os-support/solaris/sun_kbd.c662
-rw-r--r--hw/xfree86/os-support/solaris/sun_kbd.h72
-rw-r--r--hw/xfree86/os-support/solaris/sun_kbdEv.c856
-rw-r--r--hw/xfree86/os-support/solaris/sun_mouse.c2
-rw-r--r--hw/xfree86/os-support/solaris/sun_vid.c1
-rw-r--r--hw/xfree86/os-support/sysv/Makefile.am2
-rw-r--r--hw/xfree86/os-support/sysv/sysv_init.c1
-rw-r--r--hw/xfree86/os-support/sysv/sysv_io.c78
-rw-r--r--hw/xfree86/os-support/sysv/sysv_mouse.c4
-rw-r--r--hw/xfree86/os-support/sysv/sysv_video.c1
-rw-r--r--hw/xfree86/os-support/sysv/xqueue.c537
-rw-r--r--hw/xfree86/os-support/sysv/xqueue.h12
-rw-r--r--hw/xfree86/os-support/usl/Makefile.am8
-rw-r--r--hw/xfree86/os-support/usl/usl_KbdMap.c304
-rw-r--r--hw/xfree86/os-support/usl/usl_io.c172
-rw-r--r--hw/xfree86/os-support/usl/usl_iop.c1
-rw-r--r--hw/xfree86/os-support/usl/usl_kbd.c456
-rw-r--r--hw/xfree86/os-support/usl/usl_kbd.h14
-rw-r--r--hw/xfree86/os-support/usl/usl_mouse.c8
-rw-r--r--hw/xfree86/os-support/usl/usl_xqueue.c360
-rw-r--r--hw/xfree86/os-support/usl/usl_xqueue.h9
-rw-r--r--hw/xfree86/os-support/xf86OSKbd.h133
-rw-r--r--hw/xfree86/os-support/xf86OSmouse.h1
-rw-r--r--hw/xfree86/os-support/xf86OSpriv.h1
-rw-r--r--hw/xfree86/os-support/xf86_OSlib.h11
-rw-r--r--hw/xfree86/os-support/xf86_OSproc.h24
-rw-r--r--hw/xfree86/os-support/xf86_ansic.h53
-rw-r--r--hw/xfree86/os-support/xf86_libc.h13
-rw-r--r--hw/xfree86/os-support/xf86drm.h638
-rw-r--r--hw/xfree86/os-support/xf86drmCompat.h259
-rw-r--r--hw/xfree86/parser/Configint.h1
-rw-r--r--hw/xfree86/parser/DRI.c1
-rw-r--r--hw/xfree86/parser/Device.c1
-rw-r--r--hw/xfree86/parser/Files.c1
-rw-r--r--hw/xfree86/parser/Flags.c1
-rw-r--r--hw/xfree86/parser/Input.c6
-rw-r--r--hw/xfree86/parser/Keyboard.c309
-rw-r--r--hw/xfree86/parser/Layout.c1
-rw-r--r--hw/xfree86/parser/Makefile.am9
-rw-r--r--hw/xfree86/parser/Module.c1
-rw-r--r--hw/xfree86/parser/Monitor.c3
-rw-r--r--hw/xfree86/parser/Pointer.c1
-rw-r--r--hw/xfree86/parser/Screen.c1
-rw-r--r--hw/xfree86/parser/Vendor.c1
-rw-r--r--hw/xfree86/parser/Video.c1
-rw-r--r--hw/xfree86/parser/configProcs.h3
-rw-r--r--hw/xfree86/parser/cpconfig.c1
-rw-r--r--hw/xfree86/parser/read.c8
-rw-r--r--hw/xfree86/parser/scan.c124
-rw-r--r--hw/xfree86/parser/write.c6
-rw-r--r--hw/xfree86/parser/xf86Optrec.h1
-rw-r--r--hw/xfree86/parser/xf86Parser.h1
-rw-r--r--hw/xfree86/parser/xf86tokens.h1
-rw-r--r--hw/xfree86/rac/Makefile.am7
-rw-r--r--hw/xfree86/rac/xf86RAC.c12
-rw-r--r--hw/xfree86/rac/xf86RAC.h1
-rw-r--r--hw/xfree86/rac/xf86RACmodule.c21
-rw-r--r--hw/xfree86/ramdac/BT.c1
-rw-r--r--hw/xfree86/ramdac/BT.h1
-rw-r--r--hw/xfree86/ramdac/BTPriv.h1
-rw-r--r--hw/xfree86/ramdac/IBM.c1
-rw-r--r--hw/xfree86/ramdac/IBM.h1
-rw-r--r--hw/xfree86/ramdac/IBMPriv.h1
-rw-r--r--hw/xfree86/ramdac/Makefile.am2
-rw-r--r--hw/xfree86/ramdac/TI.c1
-rw-r--r--hw/xfree86/ramdac/TI.h1
-rw-r--r--hw/xfree86/ramdac/TIPriv.h1
-rw-r--r--hw/xfree86/ramdac/xf86Cursor.c1
-rw-r--r--hw/xfree86/ramdac/xf86Cursor.h1
-rw-r--r--hw/xfree86/ramdac/xf86CursorPriv.h1
-rw-r--r--hw/xfree86/ramdac/xf86HWCurs.c1
-rw-r--r--hw/xfree86/ramdac/xf86RamDac.c1
-rw-r--r--hw/xfree86/ramdac/xf86RamDac.h1
-rw-r--r--hw/xfree86/ramdac/xf86RamDacCmap.c1
-rw-r--r--hw/xfree86/ramdac/xf86RamDacPriv.h1
-rw-r--r--hw/xfree86/scanpci/Makefile.am2
-rw-r--r--hw/xfree86/scanpci/extrapci.ids7
-rw-r--r--hw/xfree86/scanpci/pci.ids1108
-rw-r--r--hw/xfree86/scanpci/pciid2c.pl3
-rw-r--r--hw/xfree86/scanpci/xf86PciData.h1
-rw-r--r--hw/xfree86/scanpci/xf86PciStdIds.h7524
-rw-r--r--hw/xfree86/scanpci/xf86PciStr.h1
-rw-r--r--hw/xfree86/scanpci/xf86ScanPci.h1
-rw-r--r--hw/xfree86/shadowfb/Makefile.am2
-rw-r--r--hw/xfree86/shadowfb/shadow.c1
-rw-r--r--hw/xfree86/shadowfb/shadowfb.h1
-rw-r--r--hw/xfree86/utils/cvt/Makefile.am7
-rw-r--r--hw/xfree86/utils/cvt/cvt.c263
-rw-r--r--hw/xfree86/utils/gtf/.gitignore2
-rw-r--r--hw/xfree86/utils/gtf/gtf.c2
-rw-r--r--hw/xfree86/utils/ioport/Makefile.am2
-rw-r--r--hw/xfree86/utils/ioport/ioport.c1
-rw-r--r--hw/xfree86/utils/kbd_mode/bsd-kbd_mode.c1
-rw-r--r--hw/xfree86/utils/kbd_mode/sun-kbd_mode.c2
-rw-r--r--hw/xfree86/utils/pcitweak/.gitignore3
-rw-r--r--hw/xfree86/utils/pcitweak/Makefile.am2
-rw-r--r--hw/xfree86/utils/pcitweak/pcitweak.c1
-rw-r--r--hw/xfree86/utils/scanpci/.gitignore2
-rw-r--r--hw/xfree86/utils/scanpci/Makefile.am2
-rw-r--r--hw/xfree86/utils/scanpci/scanpci.c1
-rw-r--r--hw/xfree86/utils/xorgcfg/.gitignore2
-rw-r--r--hw/xfree86/utils/xorgcfg/Makefile.am22
-rw-r--r--hw/xfree86/utils/xorgcfg/accessx.c1
-rw-r--r--hw/xfree86/utils/xorgcfg/card-cfg.c1
-rw-r--r--hw/xfree86/utils/xorgcfg/cards.c1
-rw-r--r--hw/xfree86/utils/xorgcfg/cards.h1
-rw-r--r--hw/xfree86/utils/xorgcfg/config.c1
-rw-r--r--hw/xfree86/utils/xorgcfg/config.h1
-rw-r--r--hw/xfree86/utils/xorgcfg/expert.c1
-rw-r--r--hw/xfree86/utils/xorgcfg/help.c1
-rw-r--r--hw/xfree86/utils/xorgcfg/interface.c5
-rw-r--r--hw/xfree86/utils/xorgcfg/keyboard-cfg.c8
-rw-r--r--hw/xfree86/utils/xorgcfg/keyboard-cfg.h1
-rw-r--r--hw/xfree86/utils/xorgcfg/loader.c2
-rw-r--r--hw/xfree86/utils/xorgcfg/loader.h4
-rw-r--r--hw/xfree86/utils/xorgcfg/loadmod.c3
-rw-r--r--hw/xfree86/utils/xorgcfg/monitor-cfg.c1
-rw-r--r--hw/xfree86/utils/xorgcfg/monitor-cfg.h1
-rw-r--r--hw/xfree86/utils/xorgcfg/mouse-cfg.c4
-rw-r--r--hw/xfree86/utils/xorgcfg/options.c1
-rw-r--r--hw/xfree86/utils/xorgcfg/options.h1
-rw-r--r--hw/xfree86/utils/xorgcfg/screen-cfg.c1
-rw-r--r--hw/xfree86/utils/xorgcfg/screen-cfg.h1
-rw-r--r--hw/xfree86/utils/xorgcfg/screen.c1
-rw-r--r--hw/xfree86/utils/xorgcfg/screen.h1
-rw-r--r--hw/xfree86/utils/xorgcfg/startx.c1
-rw-r--r--hw/xfree86/utils/xorgcfg/stubs.c1
-rw-r--r--hw/xfree86/utils/xorgcfg/stubs.h1
-rw-r--r--hw/xfree86/utils/xorgcfg/text-mode.c19
-rw-r--r--hw/xfree86/utils/xorgcfg/vidmode.c1
-rw-r--r--hw/xfree86/utils/xorgcfg/vidmode.h1
-rw-r--r--hw/xfree86/utils/xorgcfg/xf86config.c1
-rw-r--r--hw/xfree86/utils/xorgcfg/xf86config.h1
-rw-r--r--hw/xfree86/utils/xorgconfig/.gitignore1
-rw-r--r--hw/xfree86/utils/xorgconfig/Cards5
-rw-r--r--hw/xfree86/utils/xorgconfig/Makefile.am2
-rw-r--r--hw/xfree86/utils/xorgconfig/cards.c2
-rw-r--r--hw/xfree86/utils/xorgconfig/cards.h1
-rw-r--r--hw/xfree86/utils/xorgconfig/xorgconfig.c25
-rw-r--r--hw/xfree86/vbe/Makefile.am2
-rw-r--r--hw/xfree86/vbe/vbe.c8
-rw-r--r--hw/xfree86/vbe/vbe.h1
-rw-r--r--hw/xfree86/vbe/vbeModes.c1
-rw-r--r--hw/xfree86/vbe/vbeModes.h1
-rw-r--r--hw/xfree86/vbe/vbe_module.c16
-rw-r--r--hw/xfree86/vgahw/Makefile.am2
-rw-r--r--hw/xfree86/vgahw/vgaCmap.c1
-rw-r--r--hw/xfree86/vgahw/vgaHW.c1
-rw-r--r--hw/xfree86/vgahw/vgaHW.h3
-rw-r--r--hw/xfree86/x86emu/Makefile.am2
-rw-r--r--hw/xfree86/xaa/Makefile.am2
-rw-r--r--hw/xfree86/xaa/xaa.h1
-rw-r--r--hw/xfree86/xaa/xaaBitBlt.c1
-rw-r--r--hw/xfree86/xaa/xaaBitOrder.c1
-rw-r--r--hw/xfree86/xaa/xaaBitmap.c1
-rw-r--r--hw/xfree86/xaa/xaaCpyArea.c1
-rw-r--r--hw/xfree86/xaa/xaaCpyPlane.c1
-rw-r--r--hw/xfree86/xaa/xaaCpyWin.c1
-rw-r--r--hw/xfree86/xaa/xaaDashLine.c1
-rw-r--r--hw/xfree86/xaa/xaaFallback.c1
-rw-r--r--hw/xfree86/xaa/xaaFillArc.c1
-rw-r--r--hw/xfree86/xaa/xaaFillPoly.c1
-rw-r--r--hw/xfree86/xaa/xaaFillRect.c1
-rw-r--r--hw/xfree86/xaa/xaaGC.c1
-rw-r--r--hw/xfree86/xaa/xaaGCmisc.c1
-rw-r--r--hw/xfree86/xaa/xaaImage.c1
-rw-r--r--hw/xfree86/xaa/xaaInit.c1
-rw-r--r--hw/xfree86/xaa/xaaLine.c1
-rw-r--r--hw/xfree86/xaa/xaaLineMisc.c1
-rw-r--r--hw/xfree86/xaa/xaaNonTEGlyph.c1
-rw-r--r--hw/xfree86/xaa/xaaNonTEText.c1
-rw-r--r--hw/xfree86/xaa/xaaOffscreen.c1
-rw-r--r--hw/xfree86/xaa/xaaOverlay.c2
-rw-r--r--hw/xfree86/xaa/xaaOverlayDF.c1
-rw-r--r--hw/xfree86/xaa/xaaPCache.c1
-rw-r--r--hw/xfree86/xaa/xaaPaintWin.c2
-rw-r--r--hw/xfree86/xaa/xaaPict.c14
-rw-r--r--hw/xfree86/xaa/xaaRect.c1
-rw-r--r--hw/xfree86/xaa/xaaSpans.c1
-rw-r--r--hw/xfree86/xaa/xaaStateChange.c1
-rw-r--r--hw/xfree86/xaa/xaaStipple.c1
-rw-r--r--hw/xfree86/xaa/xaaTEGlyph.c1
-rw-r--r--hw/xfree86/xaa/xaaTEText.c1
-rw-r--r--hw/xfree86/xaa/xaaTables.c1
-rw-r--r--hw/xfree86/xaa/xaaWideLine.c21
-rw-r--r--hw/xfree86/xaa/xaacexp.h1
-rw-r--r--hw/xfree86/xaa/xaalocal.h1
-rw-r--r--hw/xfree86/xaa/xaawrap.h1
-rw-r--r--hw/xfree86/xf1bpp/Makefile.am3
-rw-r--r--hw/xfree86/xf1bpp/mfbmap.h1
-rw-r--r--hw/xfree86/xf1bpp/mfbunmap.h1
-rw-r--r--hw/xfree86/xf1bpp/xf1bpp.h1
-rw-r--r--hw/xfree86/xf4bpp/Makefile.am4
-rw-r--r--hw/xfree86/xf4bpp/OScompiler.h1
-rw-r--r--hw/xfree86/xf4bpp/emulOpStip.c1
-rw-r--r--hw/xfree86/xf4bpp/emulRepAre.c1
-rw-r--r--hw/xfree86/xf4bpp/emulTile.c1
-rw-r--r--hw/xfree86/xf4bpp/ibmTrace.h1
-rw-r--r--hw/xfree86/xf4bpp/mfbbres.c1
-rw-r--r--hw/xfree86/xf4bpp/mfbbresd.c1
-rw-r--r--hw/xfree86/xf4bpp/mfbfillarc.c1
-rw-r--r--hw/xfree86/xf4bpp/mfbhrzvert.c1
-rw-r--r--hw/xfree86/xf4bpp/mfbimggblt.c1
-rw-r--r--hw/xfree86/xf4bpp/mfbline.c1
-rw-r--r--hw/xfree86/xf4bpp/mfbzerarc.c1
-rw-r--r--hw/xfree86/xf4bpp/offscreen.c1
-rw-r--r--hw/xfree86/xf4bpp/ppcArea.c1
-rw-r--r--hw/xfree86/xf4bpp/ppcBStore.c1
-rw-r--r--hw/xfree86/xf4bpp/ppcCReduce.c1
-rw-r--r--hw/xfree86/xf4bpp/ppcClip.c1
-rw-r--r--hw/xfree86/xf4bpp/ppcCpArea.c8
-rw-r--r--hw/xfree86/xf4bpp/ppcDepth.c1
-rw-r--r--hw/xfree86/xf4bpp/ppcFillRct.c1
-rw-r--r--hw/xfree86/xf4bpp/ppcGC.c5
-rw-r--r--hw/xfree86/xf4bpp/ppcGCstr.h1
-rw-r--r--hw/xfree86/xf4bpp/ppcGetSp.c1
-rw-r--r--hw/xfree86/xf4bpp/ppcIO.c1
-rw-r--r--hw/xfree86/xf4bpp/ppcImg.c1
-rw-r--r--hw/xfree86/xf4bpp/ppcPixFS.c1
-rw-r--r--hw/xfree86/xf4bpp/ppcPixmap.c1
-rw-r--r--hw/xfree86/xf4bpp/ppcPntWin.c1
-rw-r--r--hw/xfree86/xf4bpp/ppcPolyPnt.c1
-rw-r--r--hw/xfree86/xf4bpp/ppcPolyRec.c1
-rw-r--r--hw/xfree86/xf4bpp/ppcQuery.c1
-rw-r--r--hw/xfree86/xf4bpp/ppcRslvC.c1
-rw-r--r--hw/xfree86/xf4bpp/ppcSetSp.c1
-rw-r--r--hw/xfree86/xf4bpp/ppcSpMcro.h1
-rw-r--r--hw/xfree86/xf4bpp/ppcWinFS.c1
-rw-r--r--hw/xfree86/xf4bpp/ppcWindow.c1
-rw-r--r--hw/xfree86/xf4bpp/vgaBitBlt.c1
-rw-r--r--hw/xfree86/xf4bpp/vgaGC.c1
-rw-r--r--hw/xfree86/xf4bpp/vgaImages.c1
-rw-r--r--hw/xfree86/xf4bpp/vgaReg.h1
-rw-r--r--hw/xfree86/xf4bpp/vgaSolid.c1
-rw-r--r--hw/xfree86/xf4bpp/vgaStipple.c1
-rw-r--r--hw/xfree86/xf4bpp/vgaVideo.h1
-rw-r--r--hw/xfree86/xf4bpp/wm3.c1
-rw-r--r--hw/xfree86/xf4bpp/wm3.h1
-rw-r--r--hw/xfree86/xf4bpp/xf4bpp.h1
-rw-r--r--hw/xfree86/xf8_16bpp/Makefile.am2
-rw-r--r--hw/xfree86/xf8_32bpp/Makefile.am2
-rw-r--r--hw/xfree86/xf8_32bpp/cfb8_32.h1
-rw-r--r--hw/xfree86/xf8_32bpp/cfbbstore.c1
-rw-r--r--hw/xfree86/xf8_32bpp/cfbcpyarea.c1
-rw-r--r--hw/xfree86/xf8_32bpp/cfbgc.c1
-rw-r--r--hw/xfree86/xf8_32bpp/cfbgcunder.c1
-rw-r--r--hw/xfree86/xf8_32bpp/cfbimage.c1
-rw-r--r--hw/xfree86/xf8_32bpp/cfbpntwin.c2
-rw-r--r--hw/xfree86/xf8_32bpp/cfbscrinit.c1
-rw-r--r--hw/xfree86/xf8_32bpp/cfbwindow.c1
-rw-r--r--hw/xfree86/xf8_32bpp/xf86overlay.c1
-rw-r--r--hw/xfree86/xorgconf.cpp20
-rw-r--r--hw/xgl/Makefile.am2
-rw-r--r--hw/xgl/egl/Makefile.am2
-rw-r--r--hw/xgl/egl/module/Makefile.am1
-rw-r--r--hw/xgl/egl/module/xeglmodule.c2
-rw-r--r--hw/xgl/egl/xegl.c2
-rw-r--r--hw/xgl/egl/xegl.h2
-rw-r--r--hw/xgl/egl/xeglinit.c2
-rw-r--r--hw/xgl/glx/Makefile.am2
-rw-r--r--hw/xgl/glx/module/Makefile.am2
-rw-r--r--hw/xgl/glx/module/xglxmodule.c2
-rw-r--r--hw/xgl/glx/xglx.c2
-rw-r--r--hw/xgl/glx/xglx.h2
-rw-r--r--hw/xgl/glx/xglxinit.c2
-rw-r--r--hw/xgl/glxext/Makefile.am2
-rw-r--r--hw/xgl/glxext/module/Makefile.am2
-rw-r--r--hw/xgl/xglinit.c2
-rw-r--r--hw/xnest/.gitignore2
-rw-r--r--hw/xnest/Args.c11
-rw-r--r--hw/xnest/Args.h1
-rw-r--r--hw/xnest/Color.c1
-rw-r--r--hw/xnest/Color.h1
-rw-r--r--hw/xnest/Cursor.c2
-rw-r--r--hw/xnest/Display.c2
-rw-r--r--hw/xnest/Display.h2
-rw-r--r--hw/xnest/Drawable.h1
-rw-r--r--hw/xnest/Events.c67
-rw-r--r--hw/xnest/Events.h1
-rw-r--r--hw/xnest/Font.c2
-rw-r--r--hw/xnest/GC.c2
-rw-r--r--hw/xnest/GCOps.c2
-rw-r--r--hw/xnest/GCOps.h1
-rw-r--r--hw/xnest/GetTime.c51
-rw-r--r--hw/xnest/Handlers.c2
-rw-r--r--hw/xnest/Handlers.h1
-rw-r--r--hw/xnest/Init.c11
-rw-r--r--hw/xnest/Init.h1
-rw-r--r--hw/xnest/Keyboard.c14
-rw-r--r--hw/xnest/Keyboard.h1
-rw-r--r--hw/xnest/Makefile.am4
-rw-r--r--hw/xnest/Pixmap.c2
-rw-r--r--hw/xnest/Pointer.c5
-rw-r--r--hw/xnest/Pointer.h1
-rw-r--r--hw/xnest/Screen.c2
-rw-r--r--hw/xnest/Screen.h1
-rw-r--r--hw/xnest/Visual.c1
-rw-r--r--hw/xnest/Visual.h1
-rw-r--r--hw/xnest/Window.c2
-rw-r--r--hw/xnest/XNCursor.h3
-rw-r--r--hw/xnest/XNFont.h1
-rw-r--r--hw/xnest/XNGC.h1
-rw-r--r--hw/xnest/XNPixmap.h2
-rw-r--r--hw/xnest/XNWindow.h2
-rw-r--r--hw/xnest/Xnest.h1
-rw-r--r--hw/xnest/os2Stub.c1
-rw-r--r--hw/xnest/xnest-config.h1
-rw-r--r--hw/xprint/AttrValid.c (renamed from Xprint/AttrValid.c)1
-rw-r--r--hw/xprint/AttrValid.h (renamed from Xprint/AttrValid.h)5
-rw-r--r--hw/xprint/DiPrint.h (renamed from Xprint/DiPrint.h)6
-rw-r--r--hw/xprint/Init.c (renamed from Xprint/Init.c)36
-rw-r--r--hw/xprint/Makefile.am (renamed from Xprint/Makefile.am)13
-rw-r--r--hw/xprint/Oid.c (renamed from Xprint/Oid.c)3
-rw-r--r--hw/xprint/Oid.h (renamed from Xprint/Oid.h)1
-rw-r--r--hw/xprint/OidDefs.h (renamed from Xprint/OidDefs.h)1
-rw-r--r--hw/xprint/OidStrs.h (renamed from Xprint/OidStrs.h)1
-rw-r--r--hw/xprint/Util.c (renamed from Xprint/Util.c)2
-rw-r--r--hw/xprint/ValTree.c (renamed from Xprint/ValTree.c)1
-rw-r--r--hw/xprint/attributes.c (renamed from Xprint/attributes.c)14
-rw-r--r--hw/xprint/attributes.h (renamed from Xprint/attributes.h)1
-rw-r--r--hw/xprint/config/C/Makefile.am (renamed from XpConfig/C/Makefile.am)0
-rw-r--r--hw/xprint/config/C/print/Makefile.am (renamed from XpConfig/C/print/Makefile.am)0
-rw-r--r--hw/xprint/config/C/print/Xprinters (renamed from XpConfig/C/print/Xprinters)0
-rw-r--r--hw/xprint/config/C/print/attributes/Makefile.am (renamed from XpConfig/C/print/attributes/Makefile.am)0
-rw-r--r--hw/xprint/config/C/print/attributes/document (renamed from XpConfig/C/print/attributes/document)0
-rw-r--r--hw/xprint/config/C/print/attributes/job (renamed from XpConfig/C/print/attributes/job)0
-rw-r--r--hw/xprint/config/C/print/attributes/printer (renamed from XpConfig/C/print/attributes/printer)0
-rw-r--r--hw/xprint/config/C/print/ddx-config/Makefile.am (renamed from XpConfig/C/print/ddx-config/Makefile.am)0
-rw-r--r--hw/xprint/config/C/print/ddx-config/raster/Makefile.am (renamed from XpConfig/C/print/ddx-config/raster/Makefile.am)0
-rw-r--r--hw/xprint/config/C/print/ddx-config/raster/pcl (renamed from XpConfig/C/print/ddx-config/raster/pcl)0
-rw-r--r--hw/xprint/config/C/print/ddx-config/raster/postscript (renamed from XpConfig/C/print/ddx-config/raster/postscript)0
-rw-r--r--hw/xprint/config/C/print/models/CANONBJ10E-GS/Makefile.am (renamed from XpConfig/C/print/models/CANONBJ10E-GS/Makefile.am)0
-rw-r--r--hw/xprint/config/C/print/models/CANONBJ10E-GS/model-config (renamed from XpConfig/C/print/models/CANONBJ10E-GS/model-config)0
-rw-r--r--hw/xprint/config/C/print/models/CANONC3200-PS/Makefile.am (renamed from XpConfig/C/print/models/CANONC3200-PS/Makefile.am)0
-rw-r--r--hw/xprint/config/C/print/models/CANONC3200-PS/fonts/Makefile.am (renamed from XpConfig/C/print/models/CANONC3200-PS/fonts/Makefile.am)0
-rw-r--r--hw/xprint/config/C/print/models/CANONC3200-PS/model-config (renamed from XpConfig/C/print/models/CANONC3200-PS/model-config)0
-rw-r--r--hw/xprint/config/C/print/models/GSdefault/Makefile.am (renamed from XpConfig/C/print/models/GSdefault/Makefile.am)0
-rw-r--r--hw/xprint/config/C/print/models/GSdefault/model-config (renamed from XpConfig/C/print/models/GSdefault/model-config)0
-rw-r--r--hw/xprint/config/C/print/models/HPDJ1600C/Makefile.am (renamed from XpConfig/C/print/models/HPDJ1600C/Makefile.am)0
-rw-r--r--hw/xprint/config/C/print/models/HPDJ1600C/fonts/9nb00051.pmf (renamed from XpConfig/C/print/models/HPDJ1600C/fonts/9nb00051.pmf)bin5740 -> 5740 bytes
-rw-r--r--hw/xprint/config/C/print/models/HPDJ1600C/fonts/9nb00052.pmf (renamed from XpConfig/C/print/models/HPDJ1600C/fonts/9nb00052.pmf)bin5736 -> 5736 bytes
-rw-r--r--hw/xprint/config/C/print/models/HPDJ1600C/fonts/9nb00053.pmf (renamed from XpConfig/C/print/models/HPDJ1600C/fonts/9nb00053.pmf)bin5740 -> 5740 bytes
-rw-r--r--hw/xprint/config/C/print/models/HPDJ1600C/fonts/9nb00054.pmf (renamed from XpConfig/C/print/models/HPDJ1600C/fonts/9nb00054.pmf)bin5744 -> 5744 bytes
-rw-r--r--hw/xprint/config/C/print/models/HPDJ1600C/fonts/9nb00055.pmf (renamed from XpConfig/C/print/models/HPDJ1600C/fonts/9nb00055.pmf)bin5740 -> 5740 bytes
-rw-r--r--hw/xprint/config/C/print/models/HPDJ1600C/fonts/9nb00056.pmf (renamed from XpConfig/C/print/models/HPDJ1600C/fonts/9nb00056.pmf)bin5724 -> 5724 bytes
-rw-r--r--hw/xprint/config/C/print/models/HPDJ1600C/fonts/9nb00057.pmf (renamed from XpConfig/C/print/models/HPDJ1600C/fonts/9nb00057.pmf)bin5632 -> 5632 bytes
-rw-r--r--hw/xprint/config/C/print/models/HPDJ1600C/fonts/9nb00058.pmf (renamed from XpConfig/C/print/models/HPDJ1600C/fonts/9nb00058.pmf)bin5740 -> 5740 bytes
-rw-r--r--hw/xprint/config/C/print/models/HPDJ1600C/fonts/9nb00059.pmf (renamed from XpConfig/C/print/models/HPDJ1600C/fonts/9nb00059.pmf)bin5720 -> 5720 bytes
-rw-r--r--hw/xprint/config/C/print/models/HPDJ1600C/fonts/9nb00060.pmf (renamed from XpConfig/C/print/models/HPDJ1600C/fonts/9nb00060.pmf)bin5740 -> 5740 bytes
-rw-r--r--hw/xprint/config/C/print/models/HPDJ1600C/fonts/9nb00061.pmf (renamed from XpConfig/C/print/models/HPDJ1600C/fonts/9nb00061.pmf)bin5720 -> 5720 bytes
-rw-r--r--hw/xprint/config/C/print/models/HPDJ1600C/fonts/9nb00062.pmf (renamed from XpConfig/C/print/models/HPDJ1600C/fonts/9nb00062.pmf)bin5728 -> 5728 bytes
-rw-r--r--hw/xprint/config/C/print/models/HPDJ1600C/fonts/9nb00063.pmf (renamed from XpConfig/C/print/models/HPDJ1600C/fonts/9nb00063.pmf)bin5728 -> 5728 bytes
-rw-r--r--hw/xprint/config/C/print/models/HPDJ1600C/fonts/9nb00064.pmf (renamed from XpConfig/C/print/models/HPDJ1600C/fonts/9nb00064.pmf)bin5720 -> 5720 bytes
-rw-r--r--hw/xprint/config/C/print/models/HPDJ1600C/fonts/9nb00065.pmf (renamed from XpConfig/C/print/models/HPDJ1600C/fonts/9nb00065.pmf)bin5728 -> 5728 bytes
-rw-r--r--hw/xprint/config/C/print/models/HPDJ1600C/fonts/9nb00066.pmf (renamed from XpConfig/C/print/models/HPDJ1600C/fonts/9nb00066.pmf)bin5732 -> 5732 bytes
-rw-r--r--hw/xprint/config/C/print/models/HPDJ1600C/fonts/9nb00067.pmf (renamed from XpConfig/C/print/models/HPDJ1600C/fonts/9nb00067.pmf)bin5736 -> 5736 bytes
-rw-r--r--hw/xprint/config/C/print/models/HPDJ1600C/fonts/9nb00068.pmf (renamed from XpConfig/C/print/models/HPDJ1600C/fonts/9nb00068.pmf)bin5732 -> 5732 bytes
-rw-r--r--hw/xprint/config/C/print/models/HPDJ1600C/fonts/9nb00069.pmf (renamed from XpConfig/C/print/models/HPDJ1600C/fonts/9nb00069.pmf)bin5740 -> 5740 bytes
-rw-r--r--hw/xprint/config/C/print/models/HPDJ1600C/fonts/9nb00070.pmf (renamed from XpConfig/C/print/models/HPDJ1600C/fonts/9nb00070.pmf)bin5744 -> 5744 bytes
-rw-r--r--hw/xprint/config/C/print/models/HPDJ1600C/fonts/9nb00071.pmf (renamed from XpConfig/C/print/models/HPDJ1600C/fonts/9nb00071.pmf)bin5740 -> 5740 bytes
-rw-r--r--hw/xprint/config/C/print/models/HPDJ1600C/fonts/9nb00072.pmf (renamed from XpConfig/C/print/models/HPDJ1600C/fonts/9nb00072.pmf)bin5724 -> 5724 bytes
-rw-r--r--hw/xprint/config/C/print/models/HPDJ1600C/fonts/9nb00073.pmf (renamed from XpConfig/C/print/models/HPDJ1600C/fonts/9nb00073.pmf)bin5720 -> 5720 bytes
-rw-r--r--hw/xprint/config/C/print/models/HPDJ1600C/fonts/9nb00074.pmf (renamed from XpConfig/C/print/models/HPDJ1600C/fonts/9nb00074.pmf)bin5724 -> 5724 bytes
-rw-r--r--hw/xprint/config/C/print/models/HPDJ1600C/fonts/9nb00075.pmf (renamed from XpConfig/C/print/models/HPDJ1600C/fonts/9nb00075.pmf)bin5724 -> 5724 bytes
-rw-r--r--hw/xprint/config/C/print/models/HPDJ1600C/fonts/9nb00076.pmf (renamed from XpConfig/C/print/models/HPDJ1600C/fonts/9nb00076.pmf)bin5716 -> 5716 bytes
-rw-r--r--hw/xprint/config/C/print/models/HPDJ1600C/fonts/9nb00077.pmf (renamed from XpConfig/C/print/models/HPDJ1600C/fonts/9nb00077.pmf)bin5720 -> 5720 bytes
-rw-r--r--hw/xprint/config/C/print/models/HPDJ1600C/fonts/9nb00079.pmf (renamed from XpConfig/C/print/models/HPDJ1600C/fonts/9nb00079.pmf)bin5656 -> 5656 bytes
-rw-r--r--hw/xprint/config/C/print/models/HPDJ1600C/fonts/9nb00080.pmf (renamed from XpConfig/C/print/models/HPDJ1600C/fonts/9nb00080.pmf)bin5664 -> 5664 bytes
-rw-r--r--hw/xprint/config/C/print/models/HPDJ1600C/fonts/9nb00081.pmf (renamed from XpConfig/C/print/models/HPDJ1600C/fonts/9nb00081.pmf)bin5672 -> 5672 bytes
-rw-r--r--hw/xprint/config/C/print/models/HPDJ1600C/fonts/9nb00082.pmf (renamed from XpConfig/C/print/models/HPDJ1600C/fonts/9nb00082.pmf)bin5660 -> 5660 bytes
-rw-r--r--hw/xprint/config/C/print/models/HPDJ1600C/fonts/9nb00083.pmf (renamed from XpConfig/C/print/models/HPDJ1600C/fonts/9nb00083.pmf)bin5720 -> 5720 bytes
-rw-r--r--hw/xprint/config/C/print/models/HPDJ1600C/fonts/9nb00084.pmf (renamed from XpConfig/C/print/models/HPDJ1600C/fonts/9nb00084.pmf)bin5724 -> 5724 bytes
-rw-r--r--hw/xprint/config/C/print/models/HPDJ1600C/fonts/9nb00085.pmf (renamed from XpConfig/C/print/models/HPDJ1600C/fonts/9nb00085.pmf)bin5724 -> 5724 bytes
-rw-r--r--hw/xprint/config/C/print/models/HPDJ1600C/fonts/9nb00086.pmf (renamed from XpConfig/C/print/models/HPDJ1600C/fonts/9nb00086.pmf)bin5716 -> 5716 bytes
-rw-r--r--hw/xprint/config/C/print/models/HPDJ1600C/fonts/9nb00087.pmf (renamed from XpConfig/C/print/models/HPDJ1600C/fonts/9nb00087.pmf)bin5752 -> 5752 bytes
-rw-r--r--hw/xprint/config/C/print/models/HPDJ1600C/fonts/9nb00088.pmf (renamed from XpConfig/C/print/models/HPDJ1600C/fonts/9nb00088.pmf)bin5720 -> 5720 bytes
-rw-r--r--hw/xprint/config/C/print/models/HPDJ1600C/fonts/9nb00089.pmf (renamed from XpConfig/C/print/models/HPDJ1600C/fonts/9nb00089.pmf)bin5744 -> 5744 bytes
-rw-r--r--hw/xprint/config/C/print/models/HPDJ1600C/fonts/9nb00090.pmf (renamed from XpConfig/C/print/models/HPDJ1600C/fonts/9nb00090.pmf)bin5736 -> 5736 bytes
-rw-r--r--hw/xprint/config/C/print/models/HPDJ1600C/fonts/9nb00091.pmf (renamed from XpConfig/C/print/models/HPDJ1600C/fonts/9nb00091.pmf)bin5744 -> 5744 bytes
-rw-r--r--hw/xprint/config/C/print/models/HPDJ1600C/fonts/9nb00092.pmf (renamed from XpConfig/C/print/models/HPDJ1600C/fonts/9nb00092.pmf)bin5736 -> 5736 bytes
-rw-r--r--hw/xprint/config/C/print/models/HPDJ1600C/fonts/9nb00093.pmf (renamed from XpConfig/C/print/models/HPDJ1600C/fonts/9nb00093.pmf)bin5728 -> 5728 bytes
-rw-r--r--hw/xprint/config/C/print/models/HPDJ1600C/fonts/9nb00094.pmf (renamed from XpConfig/C/print/models/HPDJ1600C/fonts/9nb00094.pmf)bin5728 -> 5728 bytes
-rw-r--r--hw/xprint/config/C/print/models/HPDJ1600C/fonts/Makefile.am (renamed from XpConfig/C/print/models/HPDJ1600C/fonts/Makefile.am)0
-rw-r--r--hw/xprint/config/C/print/models/HPDJ1600C/fonts/README (renamed from XpConfig/C/print/models/HPDJ1600C/fonts/README)0
-rw-r--r--hw/xprint/config/C/print/models/HPDJ1600C/fonts/fonts.alias (renamed from XpConfig/C/print/models/HPDJ1600C/fonts/fonts.alias)0
-rw-r--r--hw/xprint/config/C/print/models/HPDJ1600C/fonts/fonts.dir (renamed from XpConfig/C/print/models/HPDJ1600C/fonts/fonts.dir)0
-rw-r--r--hw/xprint/config/C/print/models/HPDJ1600C/fonts/lpr0ye1a.pmf (renamed from XpConfig/C/print/models/HPDJ1600C/fonts/lpr0ye1a.pmf)bin4296 -> 4296 bytes
-rw-r--r--hw/xprint/config/C/print/models/HPDJ1600C/model-config (renamed from XpConfig/C/print/models/HPDJ1600C/model-config)0
-rw-r--r--hw/xprint/config/C/print/models/HPLJ4050-PS/Makefile.am (renamed from XpConfig/C/print/models/HPLJ4050-PS/Makefile.am)0
-rw-r--r--hw/xprint/config/C/print/models/HPLJ4050-PS/fonts/Makefile.am (renamed from XpConfig/C/print/models/HPLJ4050-PS/fonts/Makefile.am)0
-rw-r--r--hw/xprint/config/C/print/models/HPLJ4050-PS/model-config (renamed from XpConfig/C/print/models/HPLJ4050-PS/model-config)0
-rw-r--r--hw/xprint/config/C/print/models/HPLJ4family/Makefile.am (renamed from XpConfig/C/print/models/HPLJ4family/Makefile.am)0
-rw-r--r--hw/xprint/config/C/print/models/HPLJ4family/fonts/9nb00051.pmf (renamed from XpConfig/C/print/models/HPLJ4family/fonts/9nb00051.pmf)bin5740 -> 5740 bytes
-rw-r--r--hw/xprint/config/C/print/models/HPLJ4family/fonts/9nb00052.pmf (renamed from XpConfig/C/print/models/HPLJ4family/fonts/9nb00052.pmf)bin5736 -> 5736 bytes
-rw-r--r--hw/xprint/config/C/print/models/HPLJ4family/fonts/9nb00053.pmf (renamed from XpConfig/C/print/models/HPLJ4family/fonts/9nb00053.pmf)bin5740 -> 5740 bytes
-rw-r--r--hw/xprint/config/C/print/models/HPLJ4family/fonts/9nb00054.pmf (renamed from XpConfig/C/print/models/HPLJ4family/fonts/9nb00054.pmf)bin5744 -> 5744 bytes
-rw-r--r--hw/xprint/config/C/print/models/HPLJ4family/fonts/9nb00055.pmf (renamed from XpConfig/C/print/models/HPLJ4family/fonts/9nb00055.pmf)bin5740 -> 5740 bytes
-rw-r--r--hw/xprint/config/C/print/models/HPLJ4family/fonts/9nb00056.pmf (renamed from XpConfig/C/print/models/HPLJ4family/fonts/9nb00056.pmf)bin5724 -> 5724 bytes
-rw-r--r--hw/xprint/config/C/print/models/HPLJ4family/fonts/9nb00057.pmf (renamed from XpConfig/C/print/models/HPLJ4family/fonts/9nb00057.pmf)bin5632 -> 5632 bytes
-rw-r--r--hw/xprint/config/C/print/models/HPLJ4family/fonts/9nb00058.pmf (renamed from XpConfig/C/print/models/HPLJ4family/fonts/9nb00058.pmf)bin5740 -> 5740 bytes
-rw-r--r--hw/xprint/config/C/print/models/HPLJ4family/fonts/9nb00059.pmf (renamed from XpConfig/C/print/models/HPLJ4family/fonts/9nb00059.pmf)bin5720 -> 5720 bytes
-rw-r--r--hw/xprint/config/C/print/models/HPLJ4family/fonts/9nb00060.pmf (renamed from XpConfig/C/print/models/HPLJ4family/fonts/9nb00060.pmf)bin5740 -> 5740 bytes
-rw-r--r--hw/xprint/config/C/print/models/HPLJ4family/fonts/9nb00061.pmf (renamed from XpConfig/C/print/models/HPLJ4family/fonts/9nb00061.pmf)bin5720 -> 5720 bytes
-rw-r--r--hw/xprint/config/C/print/models/HPLJ4family/fonts/9nb00062.pmf (renamed from XpConfig/C/print/models/HPLJ4family/fonts/9nb00062.pmf)bin5728 -> 5728 bytes
-rw-r--r--hw/xprint/config/C/print/models/HPLJ4family/fonts/9nb00063.pmf (renamed from XpConfig/C/print/models/HPLJ4family/fonts/9nb00063.pmf)bin5728 -> 5728 bytes
-rw-r--r--hw/xprint/config/C/print/models/HPLJ4family/fonts/9nb00064.pmf (renamed from XpConfig/C/print/models/HPLJ4family/fonts/9nb00064.pmf)bin5720 -> 5720 bytes
-rw-r--r--hw/xprint/config/C/print/models/HPLJ4family/fonts/9nb00065.pmf (renamed from XpConfig/C/print/models/HPLJ4family/fonts/9nb00065.pmf)bin5728 -> 5728 bytes
-rw-r--r--hw/xprint/config/C/print/models/HPLJ4family/fonts/9nb00066.pmf (renamed from XpConfig/C/print/models/HPLJ4family/fonts/9nb00066.pmf)bin5732 -> 5732 bytes
-rw-r--r--hw/xprint/config/C/print/models/HPLJ4family/fonts/9nb00067.pmf (renamed from XpConfig/C/print/models/HPLJ4family/fonts/9nb00067.pmf)bin5736 -> 5736 bytes
-rw-r--r--hw/xprint/config/C/print/models/HPLJ4family/fonts/9nb00068.pmf (renamed from XpConfig/C/print/models/HPLJ4family/fonts/9nb00068.pmf)bin5732 -> 5732 bytes
-rw-r--r--hw/xprint/config/C/print/models/HPLJ4family/fonts/9nb00069.pmf (renamed from XpConfig/C/print/models/HPLJ4family/fonts/9nb00069.pmf)bin5740 -> 5740 bytes
-rw-r--r--hw/xprint/config/C/print/models/HPLJ4family/fonts/9nb00070.pmf (renamed from XpConfig/C/print/models/HPLJ4family/fonts/9nb00070.pmf)bin5744 -> 5744 bytes
-rw-r--r--hw/xprint/config/C/print/models/HPLJ4family/fonts/9nb00071.pmf (renamed from XpConfig/C/print/models/HPLJ4family/fonts/9nb00071.pmf)bin5740 -> 5740 bytes
-rw-r--r--hw/xprint/config/C/print/models/HPLJ4family/fonts/9nb00072.pmf (renamed from XpConfig/C/print/models/HPLJ4family/fonts/9nb00072.pmf)bin5724 -> 5724 bytes
-rw-r--r--hw/xprint/config/C/print/models/HPLJ4family/fonts/9nb00073.pmf (renamed from XpConfig/C/print/models/HPLJ4family/fonts/9nb00073.pmf)bin5720 -> 5720 bytes
-rw-r--r--hw/xprint/config/C/print/models/HPLJ4family/fonts/9nb00074.pmf (renamed from XpConfig/C/print/models/HPLJ4family/fonts/9nb00074.pmf)bin5724 -> 5724 bytes
-rw-r--r--hw/xprint/config/C/print/models/HPLJ4family/fonts/9nb00075.pmf (renamed from XpConfig/C/print/models/HPLJ4family/fonts/9nb00075.pmf)bin5724 -> 5724 bytes
-rw-r--r--hw/xprint/config/C/print/models/HPLJ4family/fonts/9nb00076.pmf (renamed from XpConfig/C/print/models/HPLJ4family/fonts/9nb00076.pmf)bin5716 -> 5716 bytes
-rw-r--r--hw/xprint/config/C/print/models/HPLJ4family/fonts/9nb00077.pmf (renamed from XpConfig/C/print/models/HPLJ4family/fonts/9nb00077.pmf)bin5720 -> 5720 bytes
-rw-r--r--hw/xprint/config/C/print/models/HPLJ4family/fonts/9nb00079.pmf (renamed from XpConfig/C/print/models/HPLJ4family/fonts/9nb00079.pmf)bin5656 -> 5656 bytes
-rw-r--r--hw/xprint/config/C/print/models/HPLJ4family/fonts/9nb00080.pmf (renamed from XpConfig/C/print/models/HPLJ4family/fonts/9nb00080.pmf)bin5664 -> 5664 bytes
-rw-r--r--hw/xprint/config/C/print/models/HPLJ4family/fonts/9nb00081.pmf (renamed from XpConfig/C/print/models/HPLJ4family/fonts/9nb00081.pmf)bin5672 -> 5672 bytes
-rw-r--r--hw/xprint/config/C/print/models/HPLJ4family/fonts/9nb00082.pmf (renamed from XpConfig/C/print/models/HPLJ4family/fonts/9nb00082.pmf)bin5660 -> 5660 bytes
-rw-r--r--hw/xprint/config/C/print/models/HPLJ4family/fonts/9nb00083.pmf (renamed from XpConfig/C/print/models/HPLJ4family/fonts/9nb00083.pmf)bin5720 -> 5720 bytes
-rw-r--r--hw/xprint/config/C/print/models/HPLJ4family/fonts/9nb00084.pmf (renamed from XpConfig/C/print/models/HPLJ4family/fonts/9nb00084.pmf)bin5724 -> 5724 bytes
-rw-r--r--hw/xprint/config/C/print/models/HPLJ4family/fonts/9nb00085.pmf (renamed from XpConfig/C/print/models/HPLJ4family/fonts/9nb00085.pmf)bin5724 -> 5724 bytes
-rw-r--r--hw/xprint/config/C/print/models/HPLJ4family/fonts/9nb00086.pmf (renamed from XpConfig/C/print/models/HPLJ4family/fonts/9nb00086.pmf)bin5716 -> 5716 bytes
-rw-r--r--hw/xprint/config/C/print/models/HPLJ4family/fonts/9nb00087.pmf (renamed from XpConfig/C/print/models/HPLJ4family/fonts/9nb00087.pmf)bin5752 -> 5752 bytes
-rw-r--r--hw/xprint/config/C/print/models/HPLJ4family/fonts/9nb00088.pmf (renamed from XpConfig/C/print/models/HPLJ4family/fonts/9nb00088.pmf)bin5720 -> 5720 bytes
-rw-r--r--hw/xprint/config/C/print/models/HPLJ4family/fonts/9nb00089.pmf (renamed from XpConfig/C/print/models/HPLJ4family/fonts/9nb00089.pmf)bin5744 -> 5744 bytes
-rw-r--r--hw/xprint/config/C/print/models/HPLJ4family/fonts/9nb00090.pmf (renamed from XpConfig/C/print/models/HPLJ4family/fonts/9nb00090.pmf)bin5736 -> 5736 bytes
-rw-r--r--hw/xprint/config/C/print/models/HPLJ4family/fonts/9nb00091.pmf (renamed from XpConfig/C/print/models/HPLJ4family/fonts/9nb00091.pmf)bin5744 -> 5744 bytes
-rw-r--r--hw/xprint/config/C/print/models/HPLJ4family/fonts/9nb00092.pmf (renamed from XpConfig/C/print/models/HPLJ4family/fonts/9nb00092.pmf)bin5736 -> 5736 bytes
-rw-r--r--hw/xprint/config/C/print/models/HPLJ4family/fonts/9nb00093.pmf (renamed from XpConfig/C/print/models/HPLJ4family/fonts/9nb00093.pmf)bin5728 -> 5728 bytes
-rw-r--r--hw/xprint/config/C/print/models/HPLJ4family/fonts/9nb00094.pmf (renamed from XpConfig/C/print/models/HPLJ4family/fonts/9nb00094.pmf)bin5728 -> 5728 bytes
-rw-r--r--hw/xprint/config/C/print/models/HPLJ4family/fonts/Makefile.am (renamed from XpConfig/C/print/models/HPLJ4family/fonts/Makefile.am)0
-rw-r--r--hw/xprint/config/C/print/models/HPLJ4family/fonts/README (renamed from XpConfig/C/print/models/HPLJ4family/fonts/README)0
-rw-r--r--hw/xprint/config/C/print/models/HPLJ4family/fonts/fonts.alias (renamed from XpConfig/C/print/models/HPLJ4family/fonts/fonts.alias)0
-rw-r--r--hw/xprint/config/C/print/models/HPLJ4family/fonts/fonts.dir (renamed from XpConfig/C/print/models/HPLJ4family/fonts/fonts.dir)0
-rw-r--r--hw/xprint/config/C/print/models/HPLJ4family/fonts/lpr0ye1a.pmf (renamed from XpConfig/C/print/models/HPLJ4family/fonts/lpr0ye1a.pmf)bin4296 -> 4296 bytes
-rw-r--r--hw/xprint/config/C/print/models/HPLJ4family/model-config (renamed from XpConfig/C/print/models/HPLJ4family/model-config)0
-rw-r--r--hw/xprint/config/C/print/models/Makefile.am (renamed from XpConfig/C/print/models/Makefile.am)0
-rw-r--r--hw/xprint/config/C/print/models/PS2PDFspooldir-GS/Makefile.am4
-rw-r--r--hw/xprint/config/C/print/models/PS2PDFspooldir-GS/model-config (renamed from XpConfig/C/print/models/PS2PDFspooldir-GS/model-config)0
-rwxr-xr-xhw/xprint/config/C/print/models/PS2PDFspooldir-GS/ps2pdf_spooltodir.sh (renamed from XpConfig/C/print/models/PS2PDFspooldir-GS/ps2pdf_spooltodir.sh)0
-rw-r--r--hw/xprint/config/C/print/models/PSdefault/Makefile.am (renamed from XpConfig/C/print/models/PSdefault/Makefile.am)0
-rw-r--r--hw/xprint/config/C/print/models/PSdefault/fonts/AvantGarde-Book.pmf (renamed from XpConfig/C/print/models/PSdefault/fonts/AvantGarde-Book.pmf)bin6716 -> 6716 bytes
-rw-r--r--hw/xprint/config/C/print/models/PSdefault/fonts/AvantGarde-BookOblique.pmf (renamed from XpConfig/C/print/models/PSdefault/fonts/AvantGarde-BookOblique.pmf)bin6728 -> 6728 bytes
-rw-r--r--hw/xprint/config/C/print/models/PSdefault/fonts/AvantGarde-Demi.pmf (renamed from XpConfig/C/print/models/PSdefault/fonts/AvantGarde-Demi.pmf)bin6712 -> 6712 bytes
-rw-r--r--hw/xprint/config/C/print/models/PSdefault/fonts/AvantGarde-DemiOblique.pmf (renamed from XpConfig/C/print/models/PSdefault/fonts/AvantGarde-DemiOblique.pmf)bin6724 -> 6724 bytes
-rw-r--r--hw/xprint/config/C/print/models/PSdefault/fonts/Courier-Bold.pmf (renamed from XpConfig/C/print/models/PSdefault/fonts/Courier-Bold.pmf)bin6612 -> 6612 bytes
-rw-r--r--hw/xprint/config/C/print/models/PSdefault/fonts/Courier-BoldOblique.pmf (renamed from XpConfig/C/print/models/PSdefault/fonts/Courier-BoldOblique.pmf)bin6636 -> 6636 bytes
-rw-r--r--hw/xprint/config/C/print/models/PSdefault/fonts/Courier-Oblique.pmf (renamed from XpConfig/C/print/models/PSdefault/fonts/Courier-Oblique.pmf)bin6608 -> 6608 bytes
-rw-r--r--hw/xprint/config/C/print/models/PSdefault/fonts/Courier.pmf (renamed from XpConfig/C/print/models/PSdefault/fonts/Courier.pmf)bin6592 -> 6592 bytes
-rw-r--r--hw/xprint/config/C/print/models/PSdefault/fonts/Helvetica-Bold.pmf (renamed from XpConfig/C/print/models/PSdefault/fonts/Helvetica-Bold.pmf)bin6680 -> 6680 bytes
-rw-r--r--hw/xprint/config/C/print/models/PSdefault/fonts/Helvetica-BoldOblique.pmf (renamed from XpConfig/C/print/models/PSdefault/fonts/Helvetica-BoldOblique.pmf)bin6692 -> 6692 bytes
-rw-r--r--hw/xprint/config/C/print/models/PSdefault/fonts/Helvetica-Oblique.pmf (renamed from XpConfig/C/print/models/PSdefault/fonts/Helvetica-Oblique.pmf)bin6688 -> 6688 bytes
-rw-r--r--hw/xprint/config/C/print/models/PSdefault/fonts/Helvetica.pmf (renamed from XpConfig/C/print/models/PSdefault/fonts/Helvetica.pmf)bin6672 -> 6672 bytes
-rw-r--r--hw/xprint/config/C/print/models/PSdefault/fonts/LubalinGraph-Book.pmf (renamed from XpConfig/C/print/models/PSdefault/fonts/LubalinGraph-Book.pmf)bin6628 -> 6628 bytes
-rw-r--r--hw/xprint/config/C/print/models/PSdefault/fonts/LubalinGraph-BookOblique.pmf (renamed from XpConfig/C/print/models/PSdefault/fonts/LubalinGraph-BookOblique.pmf)bin6640 -> 6640 bytes
-rw-r--r--hw/xprint/config/C/print/models/PSdefault/fonts/LubalinGraph-Demi.pmf (renamed from XpConfig/C/print/models/PSdefault/fonts/LubalinGraph-Demi.pmf)bin6624 -> 6624 bytes
-rw-r--r--hw/xprint/config/C/print/models/PSdefault/fonts/LubalinGraph-DemiOblique.pmf (renamed from XpConfig/C/print/models/PSdefault/fonts/LubalinGraph-DemiOblique.pmf)bin6636 -> 6636 bytes
-rw-r--r--hw/xprint/config/C/print/models/PSdefault/fonts/Makefile.am (renamed from XpConfig/C/print/models/PSdefault/fonts/Makefile.am)1
-rw-r--r--hw/xprint/config/C/print/models/PSdefault/fonts/NewCenturySchlbk-Bold.pmf (renamed from XpConfig/C/print/models/PSdefault/fonts/NewCenturySchlbk-Bold.pmf)bin6644 -> 6644 bytes
-rw-r--r--hw/xprint/config/C/print/models/PSdefault/fonts/NewCenturySchlbk-BoldItalic.pmf (renamed from XpConfig/C/print/models/PSdefault/fonts/NewCenturySchlbk-BoldItalic.pmf)bin6656 -> 6656 bytes
-rw-r--r--hw/xprint/config/C/print/models/PSdefault/fonts/NewCenturySchlbk-Italic.pmf (renamed from XpConfig/C/print/models/PSdefault/fonts/NewCenturySchlbk-Italic.pmf)bin6652 -> 6652 bytes
-rw-r--r--hw/xprint/config/C/print/models/PSdefault/fonts/NewCenturySchlbk-Roman.pmf (renamed from XpConfig/C/print/models/PSdefault/fonts/NewCenturySchlbk-Roman.pmf)bin6648 -> 6648 bytes
-rw-r--r--hw/xprint/config/C/print/models/PSdefault/fonts/Souvenir-Demi.pmf (renamed from XpConfig/C/print/models/PSdefault/fonts/Souvenir-Demi.pmf)bin6680 -> 6680 bytes
-rw-r--r--hw/xprint/config/C/print/models/PSdefault/fonts/Souvenir-DemiItalic.pmf (renamed from XpConfig/C/print/models/PSdefault/fonts/Souvenir-DemiItalic.pmf)bin6692 -> 6692 bytes
-rw-r--r--hw/xprint/config/C/print/models/PSdefault/fonts/Souvenir-Light.pmf (renamed from XpConfig/C/print/models/PSdefault/fonts/Souvenir-Light.pmf)bin6684 -> 6684 bytes
-rw-r--r--hw/xprint/config/C/print/models/PSdefault/fonts/Souvenir-LightItalic.pmf (renamed from XpConfig/C/print/models/PSdefault/fonts/Souvenir-LightItalic.pmf)bin6696 -> 6696 bytes
-rw-r--r--hw/xprint/config/C/print/models/PSdefault/fonts/Symbol.pmf (renamed from XpConfig/C/print/models/PSdefault/fonts/Symbol.pmf)bin6556 -> 6556 bytes
-rw-r--r--hw/xprint/config/C/print/models/PSdefault/fonts/Times-Bold.pmf (renamed from XpConfig/C/print/models/PSdefault/fonts/Times-Bold.pmf)bin6660 -> 6660 bytes
-rw-r--r--hw/xprint/config/C/print/models/PSdefault/fonts/Times-BoldItalic.pmf (renamed from XpConfig/C/print/models/PSdefault/fonts/Times-BoldItalic.pmf)bin6672 -> 6672 bytes
-rw-r--r--hw/xprint/config/C/print/models/PSdefault/fonts/Times-Italic.pmf (renamed from XpConfig/C/print/models/PSdefault/fonts/Times-Italic.pmf)bin6668 -> 6668 bytes
-rw-r--r--hw/xprint/config/C/print/models/PSdefault/fonts/Times-Roman.pmf (renamed from XpConfig/C/print/models/PSdefault/fonts/Times-Roman.pmf)bin6664 -> 6664 bytes
-rw-r--r--hw/xprint/config/C/print/models/PSdefault/fonts/ZapfDingbats.pmf (renamed from XpConfig/C/print/models/PSdefault/fonts/ZapfDingbats.pmf)bin6676 -> 6676 bytes
-rw-r--r--hw/xprint/config/C/print/models/PSdefault/model-config (renamed from XpConfig/C/print/models/PSdefault/model-config)0
-rw-r--r--hw/xprint/config/C/print/models/PSspooldir/Makefile.am4
-rw-r--r--hw/xprint/config/C/print/models/PSspooldir/model-config (renamed from XpConfig/C/print/models/PSspooldir/model-config)0
-rwxr-xr-xhw/xprint/config/C/print/models/PSspooldir/spooltodir.sh (renamed from XpConfig/C/print/models/PSspooldir/spooltodir.sh)0
-rw-r--r--hw/xprint/config/C/print/models/SPSPARC2/Makefile.am (renamed from XpConfig/C/print/models/SPSPARC2/Makefile.am)0
-rw-r--r--hw/xprint/config/C/print/models/SPSPARC2/fonts/Makefile.am (renamed from XpConfig/C/print/models/SPSPARC2/fonts/Makefile.am)0
-rw-r--r--hw/xprint/config/C/print/models/SPSPARC2/model-config (renamed from XpConfig/C/print/models/SPSPARC2/model-config)0
-rw-r--r--hw/xprint/config/Makefile.am (renamed from XpConfig/Makefile.am)2
-rw-r--r--hw/xprint/config/README (renamed from XpConfig/README)0
-rw-r--r--hw/xprint/config/en_US/Makefile.am (renamed from XpConfig/en_US/Makefile.am)0
-rw-r--r--hw/xprint/config/en_US/print/Makefile.am (renamed from XpConfig/en_US/print/Makefile.am)0
-rw-r--r--hw/xprint/config/en_US/print/attributes/Makefile.am (renamed from XpConfig/en_US/print/attributes/Makefile.am)0
-rw-r--r--hw/xprint/config/en_US/print/attributes/document (renamed from XpConfig/en_US/print/attributes/document)0
-rw-r--r--hw/xprint/ddxInit.c (renamed from Xprint/ddxInit.c)25
-rw-r--r--hw/xprint/doc/Makefile.am (renamed from Xprint/doc/Makefile.am)0
-rw-r--r--hw/xprint/doc/Xprt.html (renamed from Xprint/doc/Xprt.html)6
-rw-r--r--hw/xprint/doc/Xprt.man.pre (renamed from Xprint/doc/Xprt.man.pre)6
-rw-r--r--hw/xprint/doc/Xprt.sgml (renamed from Xprint/doc/Xprt.sgml)6
-rw-r--r--hw/xprint/etc/Makefile.am (renamed from Xprint/etc/Makefile.am)0
-rw-r--r--hw/xprint/etc/Xsession.d/92xprint-xpserverlist (renamed from Xprint/etc/Xsession.d/cde_xsessiond_xprint.sh)12
-rw-r--r--hw/xprint/etc/Xsession.d/Makefile.am2
-rw-r--r--hw/xprint/etc/init.d/Makefile.am12
-rw-r--r--hw/xprint/etc/init.d/xprint.cpp (renamed from Xprint/etc/init.d/xprint.cpp)0
-rw-r--r--hw/xprint/etc/profile.d/Makefile.am (renamed from Xprint/etc/profile.d/Makefile.am)0
-rw-r--r--hw/xprint/etc/profile.d/xprint.csh (renamed from Xprint/etc/profile.d/xprint.csh)0
-rw-r--r--hw/xprint/etc/profile.d/xprint.sh (renamed from Xprint/etc/profile.d/xprint.sh)0
-rw-r--r--hw/xprint/mediaSizes.c (renamed from Xprint/mediaSizes.c)1
-rw-r--r--hw/xprint/pcl-mono/Makefile.am (renamed from Xprint/pcl-mono/Makefile.am)0
-rw-r--r--hw/xprint/pcl/Makefile.am (renamed from Xprint/pcl/Makefile.am)0
-rw-r--r--hw/xprint/pcl/Makefile.am.inc (renamed from Xprint/pcl/Makefile.am.inc)6
-rw-r--r--hw/xprint/pcl/Pcl.h (renamed from Xprint/pcl/Pcl.h)2
-rw-r--r--hw/xprint/pcl/PclArc.c (renamed from Xprint/pcl/PclArc.c)2
-rw-r--r--hw/xprint/pcl/PclArea.c (renamed from Xprint/pcl/PclArea.c)2
-rw-r--r--hw/xprint/pcl/PclAttVal.c (renamed from Xprint/pcl/PclAttVal.c)1
-rw-r--r--hw/xprint/pcl/PclAttr.c (renamed from Xprint/pcl/PclAttr.c)1
-rw-r--r--hw/xprint/pcl/PclColor.c (renamed from Xprint/pcl/PclColor.c)2
-rw-r--r--hw/xprint/pcl/PclCursor.c (renamed from Xprint/pcl/PclCursor.c)2
-rw-r--r--hw/xprint/pcl/PclDef.h (renamed from Xprint/pcl/PclDef.h)1
-rw-r--r--hw/xprint/pcl/PclFonts.c (renamed from Xprint/pcl/PclFonts.c)1
-rw-r--r--hw/xprint/pcl/PclGC.c (renamed from Xprint/pcl/PclGC.c)2
-rw-r--r--hw/xprint/pcl/PclInit.c (renamed from Xprint/pcl/PclInit.c)2
-rw-r--r--hw/xprint/pcl/PclLine.c (renamed from Xprint/pcl/PclLine.c)2
-rw-r--r--hw/xprint/pcl/PclMisc.c (renamed from Xprint/pcl/PclMisc.c)2
-rw-r--r--hw/xprint/pcl/PclPixel.c (renamed from Xprint/pcl/PclPixel.c)2
-rw-r--r--hw/xprint/pcl/PclPolygon.c (renamed from Xprint/pcl/PclPolygon.c)2
-rw-r--r--hw/xprint/pcl/PclPrint.c (renamed from Xprint/pcl/PclPrint.c)2
-rw-r--r--hw/xprint/pcl/PclSFonts.c (renamed from Xprint/pcl/PclSFonts.c)2
-rw-r--r--hw/xprint/pcl/PclSFonts.h (renamed from Xprint/pcl/PclSFonts.h)1
-rw-r--r--hw/xprint/pcl/PclSpans.c (renamed from Xprint/pcl/PclSpans.c)2
-rw-r--r--hw/xprint/pcl/PclText.c (renamed from Xprint/pcl/PclText.c)2
-rw-r--r--hw/xprint/pcl/PclWindow.c (renamed from Xprint/pcl/PclWindow.c)2
-rw-r--r--hw/xprint/pcl/Pclmap.h (renamed from Xprint/pcl/Pclmap.h)2
-rw-r--r--hw/xprint/ps/Makefile.am (renamed from Xprint/ps/Makefile.am)6
-rw-r--r--hw/xprint/ps/Ps.h (renamed from Xprint/ps/Ps.h)13
-rw-r--r--hw/xprint/ps/PsArc.c (renamed from Xprint/ps/PsArc.c)1
-rw-r--r--hw/xprint/ps/PsArea.c (renamed from Xprint/ps/PsArea.c)3
-rw-r--r--hw/xprint/ps/PsAttVal.c (renamed from Xprint/ps/PsAttVal.c)1
-rw-r--r--hw/xprint/ps/PsAttr.c (renamed from Xprint/ps/PsAttr.c)1
-rw-r--r--hw/xprint/ps/PsCache.c (renamed from Xprint/ps/PsCache.c)2
-rw-r--r--hw/xprint/ps/PsColor.c (renamed from Xprint/ps/PsColor.c)1
-rw-r--r--hw/xprint/ps/PsDef.h (renamed from Xprint/ps/PsDef.h)1
-rw-r--r--hw/xprint/ps/PsFTFonts.c (renamed from Xprint/ps/PsFTFonts.c)0
-rw-r--r--hw/xprint/ps/PsFonts.c (renamed from Xprint/ps/PsFonts.c)5
-rw-r--r--hw/xprint/ps/PsGC.c (renamed from Xprint/ps/PsGC.c)2
-rw-r--r--hw/xprint/ps/PsImageUtil.c (renamed from Xprint/ps/PsImageUtil.c)2
-rw-r--r--hw/xprint/ps/PsInit.c (renamed from Xprint/ps/PsInit.c)3
-rw-r--r--hw/xprint/ps/PsLine.c (renamed from Xprint/ps/PsLine.c)1
-rw-r--r--hw/xprint/ps/PsMisc.c (renamed from Xprint/ps/PsMisc.c)1
-rw-r--r--hw/xprint/ps/PsPixel.c (renamed from Xprint/ps/PsPixel.c)1
-rw-r--r--hw/xprint/ps/PsPixmap.c (renamed from Xprint/ps/PsPixmap.c)6
-rw-r--r--hw/xprint/ps/PsPolygon.c (renamed from Xprint/ps/PsPolygon.c)5
-rw-r--r--hw/xprint/ps/PsPrint.c (renamed from Xprint/ps/PsPrint.c)4
-rw-r--r--hw/xprint/ps/PsSpans.c (renamed from Xprint/ps/PsSpans.c)2
-rw-r--r--hw/xprint/ps/PsText.c (renamed from Xprint/ps/PsText.c)7
-rw-r--r--hw/xprint/ps/PsWindow.c (renamed from Xprint/ps/PsWindow.c)7
-rw-r--r--hw/xprint/ps/psout.c (renamed from Xprint/ps/psout.c)13
-rw-r--r--hw/xprint/ps/psout.h (renamed from Xprint/ps/psout.h)2
-rw-r--r--hw/xprint/ps/psout_ft.c (renamed from Xprint/ps/psout_ft.c)0
-rw-r--r--hw/xprint/ps/psout_ftpstype1.c (renamed from Xprint/ps/psout_ftpstype1.c)0
-rw-r--r--hw/xprint/ps/psout_ftpstype3.c (renamed from Xprint/ps/psout_ftpstype3.c)0
-rw-r--r--hw/xprint/ps/ttf2pt1wrap.c (renamed from Xprint/ps/ttf2pt1wrap.c)0
-rw-r--r--hw/xprint/raster/Makefile.am10
-rw-r--r--hw/xprint/raster/Raster.c (renamed from Xprint/raster/Raster.c)2
-rw-r--r--hw/xprint/raster/Raster.h (renamed from Xprint/raster/Raster.h)1
-rw-r--r--hw/xprint/raster/RasterAttVal.c (renamed from Xprint/raster/RasterAttVal.c)2
-rw-r--r--hw/xprint/spooler.c (renamed from Xprint/spooler.c)1
-rw-r--r--hw/xprint/spooler.h (renamed from Xprint/spooler.h)1
-rw-r--r--hw/xwin/InitInput.c3
-rw-r--r--hw/xwin/InitOutput.c11
-rw-r--r--hw/xwin/Makefile.am2
-rw-r--r--hw/xwin/win.h1
-rw-r--r--hw/xwin/winallpriv.c1
-rw-r--r--hw/xwin/winauth.c5
-rw-r--r--hw/xwin/winclipboardwndproc.c147
-rwxr-xr-xhw/xwin/winclipboardwrappers.c8
-rw-r--r--hw/xwin/wincmap.c1
-rw-r--r--hw/xwin/winconfig.c1
-rw-r--r--hw/xwin/wincreatewnd.c6
-rw-r--r--hw/xwin/wincursor.c1
-rw-r--r--hw/xwin/winfillsp.c1
-rw-r--r--hw/xwin/wingetsp.c1
-rw-r--r--hw/xwin/winkeybd.c1
-rw-r--r--hw/xwin/winkeybd.h1
-rw-r--r--[-rwxr-xr-x]hw/xwin/winkeymap.h1
-rw-r--r--[-rwxr-xr-x]hw/xwin/winkeynames.h1
-rw-r--r--hw/xwin/winmouse.c1
-rw-r--r--[-rwxr-xr-x]hw/xwin/winmultiwindowicons.c1
-rw-r--r--[-rwxr-xr-x]hw/xwin/winmultiwindowshape.c1
-rw-r--r--hw/xwin/winmultiwindowwindow.c8
-rw-r--r--hw/xwin/winmultiwindowwm.c1
-rw-r--r--[-rwxr-xr-x]hw/xwin/winmultiwindowwndproc.c30
-rw-r--r--hw/xwin/winnativegdi.c1
-rw-r--r--hw/xwin/winpfbdd.c1
-rw-r--r--hw/xwin/winpixmap.c1
-rw-r--r--hw/xwin/winpushpxl.c1
-rw-r--r--hw/xwin/winscrinit.c1
-rw-r--r--hw/xwin/winsetsp.c1
-rw-r--r--hw/xwin/winshaddd.c1
-rw-r--r--hw/xwin/winshadddnl.c1
-rw-r--r--hw/xwin/winshadgdi.c7
-rw-r--r--hw/xwin/winwakeup.c1
-rw-r--r--hw/xwin/winwindow.c1
-rw-r--r--hw/xwin/winwindow.h1
-rwxr-xr-xhw/xwin/winwindowswm.c21
-rw-r--r--hw/xwin/winwndproc.c1
-rw-r--r--include/Makefile.am1
-rw-r--r--include/XIstubs.h13
-rw-r--r--include/bstore.h1
-rw-r--r--include/bstorestr.h1
-rw-r--r--include/closestr.h2
-rw-r--r--include/closure.h1
-rw-r--r--include/colormap.h2
-rw-r--r--include/colormapst.h1
-rw-r--r--include/cursor.h3
-rw-r--r--include/cursorstr.h2
-rw-r--r--include/dix-config.h.in36
-rw-r--r--include/dix.h220
-rw-r--r--include/dixevents.h5
-rw-r--r--include/dixfont.h2
-rw-r--r--include/dixfontstr.h1
-rw-r--r--include/dixgrabs.h1
-rw-r--r--include/dixstruct.h12
-rw-r--r--include/exevents.h14
-rw-r--r--include/extension.h14
-rw-r--r--include/extinit.h7
-rw-r--r--include/extnsionst.h8
-rw-r--r--include/gc.h2
-rw-r--r--include/gcstruct.h2
-rw-r--r--include/globals.h3
-rw-r--r--include/hotplug.h31
-rw-r--r--include/input.h96
-rw-r--r--include/inputstr.h75
-rw-r--r--include/kdrive-config.h.in9
-rw-r--r--include/misc.h16
-rw-r--r--include/miscstruct.h2
-rw-r--r--include/opaque.h4
-rw-r--r--include/os.h24
-rw-r--r--include/pixmap.h11
-rw-r--r--include/pixmapstr.h1
-rw-r--r--include/property.h2
-rw-r--r--include/propertyst.h2
-rw-r--r--include/region.h1
-rw-r--r--include/regionstr.h6
-rw-r--r--include/resource.h22
-rw-r--r--include/rgb.h1
-rw-r--r--include/screenint.h2
-rw-r--r--include/scrnintstr.h2
-rw-r--r--include/selection.h1
-rw-r--r--include/servermd.h3
-rw-r--r--include/site.h2
-rw-r--r--include/swaprep.h1
-rw-r--r--include/swapreq.h1
-rw-r--r--include/validate.h2
-rw-r--r--include/window.h3
-rw-r--r--include/windowstr.h2
-rw-r--r--include/xorg-config.h.in9
-rw-r--r--include/xorg-server.h.in3
-rw-r--r--mfb/Makefile.am2
-rw-r--r--mfb/fastblt.h2
-rw-r--r--mfb/maskbits.c2
-rw-r--r--mfb/maskbits.h4
-rw-r--r--mfb/mergerop.h2
-rw-r--r--mfb/mfb.h2
-rw-r--r--mfb/mfbbitblt.c2
-rw-r--r--mfb/mfbblt.c2
-rw-r--r--mfb/mfbbres.c2
-rw-r--r--mfb/mfbbresd.c2
-rw-r--r--mfb/mfbbstore.c1
-rw-r--r--mfb/mfbclip.c2
-rw-r--r--mfb/mfbcmap.c2
-rw-r--r--mfb/mfbfillarc.c2
-rw-r--r--mfb/mfbfillrct.c2
-rw-r--r--mfb/mfbfillsp.c2
-rw-r--r--mfb/mfbfont.c1
-rw-r--r--mfb/mfbgc.c2
-rw-r--r--mfb/mfbgetsp.c2
-rw-r--r--mfb/mfbhrzvert.c2
-rw-r--r--mfb/mfbimage.c2
-rw-r--r--mfb/mfbimggblt.c2
-rw-r--r--mfb/mfbline.c2
-rw-r--r--mfb/mfbmisc.c1
-rw-r--r--mfb/mfbpixmap.c1
-rw-r--r--mfb/mfbply1rct.c2
-rw-r--r--mfb/mfbplygblt.c2
-rw-r--r--mfb/mfbpntarea.c1
-rw-r--r--mfb/mfbpntwin.c1
-rw-r--r--mfb/mfbpolypnt.c2
-rw-r--r--mfb/mfbpushpxl.c2
-rw-r--r--mfb/mfbscrclse.c2
-rw-r--r--mfb/mfbscrinit.c2
-rw-r--r--mfb/mfbsetsp.c2
-rw-r--r--mfb/mfbtegblt.c2
-rw-r--r--mfb/mfbtile.c2
-rw-r--r--mfb/mfbwindow.c1
-rw-r--r--mfb/mfbzerarc.c2
-rw-r--r--mi/Makefile.am2
-rw-r--r--mi/cbrt.c2
-rw-r--r--mi/mi.h6
-rw-r--r--mi/miarc.c3
-rw-r--r--mi/mibank.c1
-rw-r--r--mi/mibank.h1
-rw-r--r--mi/mibitblt.c4
-rw-r--r--mi/mibstore.c2
-rw-r--r--mi/mibstore.h2
-rw-r--r--mi/mibstorest.h2
-rw-r--r--mi/micmap.c2
-rw-r--r--mi/micmap.h1
-rw-r--r--mi/micoord.h1
-rw-r--r--mi/micursor.c2
-rw-r--r--mi/midash.c2
-rw-r--r--mi/midispcur.c2
-rw-r--r--mi/mieq.c213
-rw-r--r--mi/miexpose.c3
-rw-r--r--mi/mifillarc.c2
-rw-r--r--mi/mifillarc.h2
-rw-r--r--mi/mifillrct.c2
-rw-r--r--mi/mifpoly.h2
-rw-r--r--mi/mifpolycon.c2
-rw-r--r--mi/migc.c2
-rw-r--r--mi/migc.h2
-rw-r--r--mi/miglblt.c2
-rw-r--r--mi/miinitext.c45
-rw-r--r--mi/miline.h2
-rw-r--r--mi/mioverlay.c1
-rw-r--r--mi/mioverlay.h1
-rw-r--r--mi/mipointer.c200
-rw-r--r--mi/mipointer.h69
-rw-r--r--mi/mipointrst.h12
-rw-r--r--mi/mipoly.c1
-rw-r--r--mi/mipoly.h2
-rw-r--r--mi/mipolycon.c2
-rw-r--r--mi/mipolygen.c2
-rw-r--r--mi/mipolypnt.c2
-rw-r--r--mi/mipolyrect.c2
-rw-r--r--mi/mipolyseg.c2
-rw-r--r--mi/mipolytext.c2
-rw-r--r--mi/mipolyutil.c2
-rw-r--r--mi/mipushpxl.c12
-rw-r--r--mi/miregion.c7
-rw-r--r--mi/miscanfill.h1
-rw-r--r--mi/miscrinit.c2
-rw-r--r--mi/mispans.c2
-rw-r--r--mi/mispans.h2
-rw-r--r--mi/misprite.c2
-rw-r--r--mi/misprite.h2
-rw-r--r--mi/mispritest.h2
-rw-r--r--mi/mistruct.h1
-rw-r--r--mi/mivalidate.h1
-rw-r--r--mi/mivaltree.c3
-rw-r--r--mi/miwideline.c4
-rw-r--r--mi/miwideline.h2
-rw-r--r--mi/miwindow.c2
-rw-r--r--mi/mizerarc.c2
-rw-r--r--mi/mizerarc.h2
-rw-r--r--mi/mizerclip.c1
-rw-r--r--mi/mizerline.c2
-rw-r--r--miext/cw/Makefile.am2
-rw-r--r--miext/cw/cw_ops.c4
-rw-r--r--miext/damage/Makefile.am2
-rwxr-xr-xmiext/damage/damage.c2
-rw-r--r--miext/rootless/accel/rlAccel.c1
-rw-r--r--miext/rootless/accel/rlAccel.h1
-rw-r--r--miext/rootless/accel/rlBlt.c1
-rw-r--r--miext/rootless/accel/rlCopy.c1
-rw-r--r--miext/rootless/accel/rlFill.c1
-rw-r--r--miext/rootless/accel/rlFillRect.c1
-rw-r--r--miext/rootless/accel/rlFillSpans.c1
-rw-r--r--miext/rootless/accel/rlGlyph.c1
-rw-r--r--miext/rootless/accel/rlSolid.c1
-rw-r--r--miext/rootless/rootless.h1
-rw-r--r--miext/rootless/rootlessCommon.c1
-rw-r--r--miext/rootless/rootlessCommon.h1
-rw-r--r--miext/rootless/rootlessConfig.h1
-rw-r--r--miext/rootless/rootlessGC.c1
-rw-r--r--miext/rootless/rootlessScreen.c1
-rw-r--r--miext/rootless/rootlessValTree.c1
-rw-r--r--miext/rootless/rootlessWindow.c2
-rw-r--r--miext/rootless/rootlessWindow.h1
-rw-r--r--miext/rootless/safeAlpha/safeAlpha.h1
-rw-r--r--miext/rootless/safeAlpha/safeAlphaPicture.c1
-rw-r--r--miext/rootless/safeAlpha/safeAlphaWindow.c2
-rw-r--r--miext/shadow/Makefile.am2
-rw-r--r--miext/shadow/shadow.h1
-rw-r--r--miext/shadow/shpacked.c1
-rw-r--r--miext/shadow/shplanar.c1
-rw-r--r--miext/shadow/shplanar8.c1
-rw-r--r--miext/shadow/shrotate.c1
-rw-r--r--miext/shadow/shrotpack.h1
-rw-r--r--os/Makefile.am40
-rw-r--r--os/WaitFor.c48
-rw-r--r--os/access.c29
-rw-r--r--os/auth.c5
-rw-r--r--os/connection.c109
-rw-r--r--os/io.c5
-rw-r--r--os/k5auth.c2
-rw-r--r--os/log.c3
-rw-r--r--os/mitauth.c2
-rw-r--r--os/oscolor.c2
-rw-r--r--os/osdep.h2
-rw-r--r--os/osinit.c2
-rw-r--r--os/rpcauth.c2
-rw-r--r--os/secauth.c5
-rw-r--r--os/utils.c95
-rw-r--r--os/xalloc.c1
-rw-r--r--os/xdmauth.c11
-rw-r--r--os/xdmcp.c7
-rw-r--r--randr/Makefile.am14
-rw-r--r--randr/mirandr.c166
-rw-r--r--randr/randr.c1297
-rw-r--r--randr/randrstr.h755
-rw-r--r--randr/rrcrtc.c856
-rw-r--r--randr/rrdispatch.c211
-rw-r--r--randr/rrinfo.c344
-rw-r--r--randr/rrmode.c242
-rw-r--r--randr/rroutput.c465
-rw-r--r--randr/rrpointer.c137
-rw-r--r--randr/rrproperty.c624
-rw-r--r--randr/rrscreen.c944
-rw-r--r--randr/rrsdispatch.c305
-rw-r--r--randr/rrxinerama.c434
-rw-r--r--record/Makefile.am2
-rw-r--r--record/record.c3
-rw-r--r--record/set.c312
-rw-r--r--record/set.h1
-rw-r--r--render/Makefile.am2
-rw-r--r--render/animcur.c1
-rw-r--r--render/filter.c32
-rw-r--r--render/glyph.c1
-rw-r--r--render/glyphstr.h1
-rw-r--r--render/miglyph.c1
-rw-r--r--render/miindex.c1
-rw-r--r--render/mipict.c1
-rw-r--r--render/mipict.h1
-rw-r--r--render/mirect.c1
-rw-r--r--render/mitrap.c1
-rw-r--r--render/mitri.c1
-rw-r--r--render/picture.c43
-rw-r--r--render/picture.h83
-rw-r--r--render/picturestr.h12
-rw-r--r--render/render.c139
-rw-r--r--xfixes/Makefile.am2
-rwxr-xr-xxfixes/cursor.c18
-rwxr-xr-xxfixes/region.c55
-rwxr-xr-xxfixes/saveset.c7
-rwxr-xr-xxfixes/select.c8
-rwxr-xr-xxfixes/xfixes.c17
-rw-r--r--xkb/Makefile.am6
-rw-r--r--xkb/XKBAlloc.c7
-rw-r--r--xkb/XKBGAlloc.c2
-rw-r--r--xkb/XKBMAlloc.c2
-rw-r--r--xkb/XKBMisc.c2
-rw-r--r--xkb/ddxBeep.c34
-rw-r--r--xkb/ddxCtrls.c2
-rw-r--r--xkb/ddxDevBtn.c2
-rw-r--r--xkb/ddxFakeBtn.c1
-rw-r--r--xkb/ddxFakeMtn.c3
-rw-r--r--xkb/ddxInit.c1
-rw-r--r--xkb/ddxKeyClick.c1
-rw-r--r--xkb/ddxKillSrv.c2
-rw-r--r--xkb/ddxLEDs.c1
-rw-r--r--xkb/ddxList.c4
-rw-r--r--xkb/ddxLoad.c26
-rw-r--r--xkb/ddxPrivate.c1
-rw-r--r--xkb/ddxVT.c2
-rw-r--r--xkb/maprules.c18
-rw-r--r--xkb/xkb.c502
-rw-r--r--xkb/xkb.h5
-rw-r--r--xkb/xkbAccessX.c12
-rw-r--r--xkb/xkbActions.c11
-rw-r--r--xkb/xkbDflts.h2
-rw-r--r--xkb/xkbEvents.c4
-rw-r--r--xkb/xkbInit.c3
-rw-r--r--xkb/xkbLEDs.c26
-rw-r--r--xkb/xkbPrKeyEv.c6
-rw-r--r--xkb/xkbPrOtherEv.c1
-rw-r--r--xkb/xkbSwap.c2
-rw-r--r--xkb/xkbUtils.c1190
-rw-r--r--xkb/xkberrs.c2
-rw-r--r--xkb/xkbfmisc.c455
-rw-r--r--xkb/xkbout.c1051
-rw-r--r--xkb/xkbtext.c1325
-rw-r--r--xkb/xkmread.c96
-rw-r--r--xorg-server.pc.in2
1711 files changed, 43000 insertions, 68949 deletions
diff --git a/.gitignore b/.gitignore
new file mode 100644
index 000000000..62b5fd6b4
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,270 @@
+Makefile
+Makefile.in
+.deps
+.libs
+.msg
+*.lo
+*.la
+*.a
+*.o
+*~
+aclocal.m4
+autom4te.cache
+compile
+config.guess
+config.log
+config.status
+config.sub
+configure
+depcomp
+install-sh
+libtool
+ltmain.sh
+missing
+xorg-server.pc
+stamp-h?
+do-not-use-config.h
+do-not-use-config.h.in
+afb/afbbltC.c
+afb/afbbltCI.c
+afb/afbbltG.c
+afb/afbbltO.c
+afb/afbbltX.c
+afb/afbseg.c
+afb/afbtileC.c
+afb/afbtileG.c
+cfb/cfb8lineCO.c
+cfb/cfb8lineCP.c
+cfb/cfb8lineG.c
+cfb/cfb8lineX.c
+cfb/cfb8segC.c
+cfb/cfb8segCS.c
+cfb/cfb8segX.c
+cfb/cfb8setG.c
+cfb/cfbbltC.c
+cfb/cfbbltG.c
+cfb/cfbbltO.c
+cfb/cfbbltX.c
+cfb/cfbfillarcC.c
+cfb/cfbfillarcG.c
+cfb/cfbglrop8.c
+cfb/cfbply1rctC.c
+cfb/cfbply1rctG.c
+cfb/cfbseg.c
+cfb/cfbsolidC.c
+cfb/cfbsolidG.c
+cfb/cfbsolidX.c
+cfb/cfbtile32C.c
+cfb/cfbtile32G.c
+cfb/cfbtileoddC.c
+cfb/cfbtileoddG.c
+cfb/cfbzerarcC.c
+cfb/cfbzerarcG.c
+cfb/cfbzerarcX.c
+cfb32/cfb8lineCO.c
+cfb32/cfb8lineCP.c
+cfb32/cfb8lineG.c
+cfb32/cfb8lineX.c
+cfb32/cfb8segC.c
+cfb32/cfb8segCS.c
+cfb32/cfb8segX.c
+cfb32/cfb8setG.c
+cfb32/cfbbltC.c
+cfb32/cfbbltG.c
+cfb32/cfbbltO.c
+cfb32/cfbbltX.c
+cfb32/cfbfillarcC.c
+cfb32/cfbfillarcG.c
+cfb32/cfbply1rctC.c
+cfb32/cfbply1rctG.c
+cfb32/cfbseg.c
+cfb32/cfbsolidC.c
+cfb32/cfbsolidG.c
+cfb32/cfbsolidX.c
+cfb32/cfbtile32C.c
+cfb32/cfbtile32G.c
+cfb32/cfbtileoddC.c
+cfb32/cfbtileoddG.c
+cfb32/cfbzerarcC.c
+cfb32/cfbzerarcG.c
+cfb32/cfbzerarcX.c
+doc/Xserver.1x
+doc/Xserver.man
+hw/dmx/Xdmx
+hw/dmx/Xdmx.1x
+hw/dmx/config/dmxtodmx
+hw/dmx/config/dmxtodmx.1x
+hw/dmx/config/parser.c
+hw/dmx/config/parser.h
+hw/dmx/config/scanner.c
+hw/dmx/config/vdltodmx
+hw/dmx/config/vdltodmx.1x
+hw/dmx/config/xdmxconfig
+hw/dmx/config/xdmxconfig.1x
+hw/dmx/examples/dmxaddinput
+hw/dmx/examples/dmxaddscreen
+hw/dmx/examples/dmxreconfig
+hw/dmx/examples/dmxresize
+hw/dmx/examples/dmxrminput
+hw/dmx/examples/dmxrmscreen
+hw/dmx/examples/dmxwininfo
+hw/dmx/examples/ev
+hw/dmx/examples/evi
+hw/dmx/examples/res
+hw/dmx/examples/xbell
+hw/dmx/examples/xdmx
+hw/dmx/examples/xinput
+hw/dmx/examples/xled
+hw/dmx/examples/xtest
+hw/kdrive/ati/Xati
+hw/kdrive/chips/Xchips
+hw/kdrive/ephyr/Xephyr
+hw/kdrive/epson/Xepson
+hw/kdrive/fake/Xfake
+hw/kdrive/fbdev/Xfbdev
+hw/kdrive/i810/Xi810
+hw/kdrive/mach64/Xmach64
+hw/kdrive/mga/Xmga
+hw/kdrive/neomagic/Xneomagic
+hw/kdrive/nvidia/Xnvidia
+hw/kdrive/pm2/Xpm2
+hw/kdrive/r128/Xr128
+hw/kdrive/sdl/Xsdl
+hw/kdrive/sis300/Xsis
+hw/kdrive/smi/Xsmi
+hw/kdrive/vesa/Xvesa
+hw/kdrive/via/Xvia
+hw/vfb/Xvfb
+hw/vfb/Xvfb.1x
+hw/vfb/Xvfb.man
+hw/xfree86/Xorg
+hw/xfree86/common/xf86Build.h
+hw/xfree86/common/xf86DefModeSet.c
+hw/xfree86/doc/man/Xorg.1x
+hw/xfree86/doc/man/Xorg.man
+hw/xfree86/doc/man/xorg.conf.5x
+hw/xfree86/doc/man/xorg.conf.man
+hw/xfree86/exa/exa.4
+hw/xfree86/exa/exa.4x
+hw/xfree86/exa/exa.man
+hw/xfree86/fbdevhw/fbdevhw.4x
+hw/xfree86/fbdevhw/fbdevhw.man
+hw/xfree86/getconfig/cfg.man
+hw/xfree86/getconfig/getconfig.1x
+hw/xfree86/getconfig/getconfig.5x
+hw/xfree86/getconfig/getconfig.man
+hw/xfree86/os-support/xorgos.c
+hw/xfree86/osandcommon.c
+hw/xfree86/ramdac/xf86BitOrder.c
+hw/xfree86/scanpci/xf86PciData.c
+hw/xfree86/scanpci/xf86PciIds.h
+hw/xfree86/utils/cvt/cvt
+hw/xfree86/utils/cvt/cvt.man
+hw/xfree86/utils/gtf/gtf
+hw/xfree86/utils/gtf/gtf.1x
+hw/xfree86/utils/gtf/gtf.man
+hw/xfree86/utils/ioport/inb
+hw/xfree86/utils/ioport/inl
+hw/xfree86/utils/ioport/inw
+hw/xfree86/utils/ioport/ioport
+hw/xfree86/utils/ioport/outb
+hw/xfree86/utils/ioport/outl
+hw/xfree86/utils/ioport/outw
+hw/xfree86/utils/pcitweak/pcitweak
+hw/xfree86/utils/pcitweak/pcitweak.1x
+hw/xfree86/utils/pcitweak/pcitweak.man
+hw/xfree86/utils/scanpci/scanpci
+hw/xfree86/utils/scanpci/scanpci.1x
+hw/xfree86/utils/scanpci/scanpci.man
+hw/xfree86/utils/xorgcfg/XOrgCfg
+hw/xfree86/utils/xorgcfg/xorgcfg
+hw/xfree86/utils/xorgcfg/xorgcfg.1x
+hw/xfree86/utils/xorgcfg/xorgcfg.man
+hw/xfree86/utils/xorgconfig/xorgconfig
+hw/xfree86/utils/xorgconfig/xorgconfig.1x
+hw/xfree86/utils/xorgconfig/xorgconfig.man
+hw/xfree86/xaa/l-xaaBitmap.c
+hw/xfree86/xaa/l-xaaStipple.c
+hw/xfree86/xaa/l-xaaTEGlyph.c
+hw/xfree86/xaa/l3-xaaBitmap.c
+hw/xfree86/xaa/l3-xaaStipple.c
+hw/xfree86/xaa/lf-xaaBitmap.c
+hw/xfree86/xaa/lf-xaaStipple.c
+hw/xfree86/xaa/lf-xaaTEGlyph.c
+hw/xfree86/xaa/lf3-xaaBitmap.c
+hw/xfree86/xaa/lf3-xaaStipple.c
+hw/xfree86/xaa/m-xaaBitmap.c
+hw/xfree86/xaa/m-xaaStipple.c
+hw/xfree86/xaa/m-xaaTEGlyph.c
+hw/xfree86/xaa/m3-xaaBitmap.c
+hw/xfree86/xaa/m3-xaaStipple.c
+hw/xfree86/xaa/mf-xaaBitmap.c
+hw/xfree86/xaa/mf-xaaStipple.c
+hw/xfree86/xaa/mf-xaaTEGlyph.c
+hw/xfree86/xaa/mf3-xaaBitmap.c
+hw/xfree86/xaa/mf3-xaaStipple.c
+hw/xfree86/xaa/s-xaaDashLine.c
+hw/xfree86/xaa/s-xaaLine.c
+hw/xfree86/xf1bpp/mfbbltC.c
+hw/xfree86/xf1bpp/mfbbltCI.c
+hw/xfree86/xf1bpp/mfbbltG.c
+hw/xfree86/xf1bpp/mfbbltO.c
+hw/xfree86/xf1bpp/mfbbltX.c
+hw/xfree86/xf1bpp/mfbigbblak.c
+hw/xfree86/xf1bpp/mfbigbwht.c
+hw/xfree86/xf1bpp/mfbpablack.c
+hw/xfree86/xf1bpp/mfbpainv.c
+hw/xfree86/xf1bpp/mfbpawhite.c
+hw/xfree86/xf1bpp/mfbpgbblak.c
+hw/xfree86/xf1bpp/mfbpgbinv.c
+hw/xfree86/xf1bpp/mfbpgbwht.c
+hw/xfree86/xf1bpp/mfbplyblack.c
+hw/xfree86/xf1bpp/mfbplyinv.c
+hw/xfree86/xf1bpp/mfbplywhite.c
+hw/xfree86/xf1bpp/mfbseg.c
+hw/xfree86/xf1bpp/mfbteblack.c
+hw/xfree86/xf1bpp/mfbtewhite.c
+hw/xfree86/xf1bpp/mfbtileC.c
+hw/xfree86/xf1bpp/mfbtileG.c
+hw/xfree86/xf4bpp/mfbseg.c
+hw/xfree86/xf8_32bpp/cfbgc32.c
+hw/xfree86/xf8_32bpp/cfbgc8.c
+hw/xfree86/xorg.c
+hw/xnest/Xnest
+hw/xnest/Xnest.1x
+hw/xnest/Xnest.man
+hw/xprint/Xprt
+hw/xprint/config/C/print/Xprinters.ghostscript
+hw/xprint/doc/Xprt.1x
+hw/xprint/doc/Xprt.man
+hw/xprint/dpmsstubs-wrapper.c
+hw/xprint/miinitext-wrapper.c
+include/dix-config.h
+include/kdrive-config.h
+include/xgl-config.h
+include/xkb-config.h
+include/xorg-config.h
+include/xorg-server.h
+include/xwin-config.h
+mfb/mfbbltC.c
+mfb/mfbbltCI.c
+mfb/mfbbltG.c
+mfb/mfbbltO.c
+mfb/mfbbltX.c
+mfb/mfbigbblak.c
+mfb/mfbigbwht.c
+mfb/mfbpablack.c
+mfb/mfbpainv.c
+mfb/mfbpawhite.c
+mfb/mfbpgbblak.c
+mfb/mfbpgbinv.c
+mfb/mfbpgbwht.c
+mfb/mfbplyblack.c
+mfb/mfbplyinv.c
+mfb/mfbplywhite.c
+mfb/mfbseg.c
+mfb/mfbteblack.c
+mfb/mfbtewhite.c
+mfb/mfbtileC.c
+mfb/mfbtileG.c
+.*.swp
diff --git a/GL/Makefile.am b/GL/Makefile.am
index e8e080df1..b9337ba69 100644
--- a/GL/Makefile.am
+++ b/GL/Makefile.am
@@ -1,4 +1,4 @@
-SUBDIRS = glx mesa include
+SUBDIRS = glx mesa
# someone could get really crazy someday and add support for the SI...
diff --git a/GL/apple/aglGlx.c b/GL/apple/aglGlx.c
index be846be83..900a9a96e 100644
--- a/GL/apple/aglGlx.c
+++ b/GL/apple/aglGlx.c
@@ -32,7 +32,6 @@
* 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>
diff --git a/GL/apple/indirect.c b/GL/apple/indirect.c
index 448b1f76a..8cba1c63d 100644
--- a/GL/apple/indirect.c
+++ b/GL/apple/indirect.c
@@ -31,7 +31,6 @@
* 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>
diff --git a/GL/glx/.gitignore b/GL/glx/.gitignore
new file mode 100644
index 000000000..5cf6f0a44
--- /dev/null
+++ b/GL/glx/.gitignore
@@ -0,0 +1,5 @@
+indirect_size.h
+glcontextmodes.c
+glcontextmodes.h
+glapi.c
+glthread.c
diff --git a/GL/glx/Makefile.am b/GL/glx/Makefile.am
index fd8a59bd0..8184f605f 100644
--- a/GL/glx/Makefile.am
+++ b/GL/glx/Makefile.am
@@ -13,9 +13,7 @@ AM_CFLAGS = \
@DRIPROTO_CFLAGS@ \
-I@MESA_SOURCE@/src/mesa/glapi \
-I@MESA_SOURCE@/src/mesa/main \
- @SERVER_DEFINES@ \
- @MODULE_DEFINES@ \
- @LOADER_DEFINES@ \
+ -DXFree86Server \
-DNO_LIBCWRAPPER \
@GLX_DEFINES@
@@ -30,26 +28,23 @@ INCLUDES = \
-I$(top_srcdir)/mi
-nodist_libglx_la_SOURCES = indirect_size.h
+nodist_libglx_la_SOURCES = indirect_size.h \
+ glapi.c \
+ glcontextmodes.c \
+ glcontextmode.h \
+ glthread.c
libglxdri_la_SOURCES = \
- glxdri.c
+ glxdri.c \
+ extension_string.c \
+ extension_string.h
libglx_la_SOURCES = \
- g_disptab.c \
g_disptab.h \
- g_disptab_EXT.c \
- g_disptab_EXT.h \
- glapi.c \
- glcontextmodes.c \
- glcontextmodes.h \
- global.c \
- glthread.c \
glxcmds.c \
glxcmdsswap.c \
glxcontext.h \
glxdrawable.h \
- glxerror.h \
glxext.c \
glxext.h \
glxvisuals.c \
@@ -61,10 +56,14 @@ libglx_la_SOURCES = \
indirect_dispatch.c \
indirect_dispatch.h \
indirect_dispatch_swap.c \
+ indirect_program.c \
indirect_reqsize.c \
indirect_reqsize.h \
indirect_size_get.c \
indirect_size_get.h \
+ indirect_table.c \
+ indirect_table.h \
+ indirect_texture_compression.c \
indirect_util.c \
indirect_util.h \
render2.c \
@@ -72,12 +71,12 @@ libglx_la_SOURCES = \
renderpix.c \
renderpixswap.c \
rensize.c \
- rensizetab.c \
single2.c \
single2swap.c \
singlepix.c \
singlepixswap.c \
singlesize.c \
singlesize.h \
+ swap_interval.c \
unpack.h \
xfont.c
diff --git a/GL/glx/extension_string.c b/GL/glx/extension_string.c
new file mode 100644
index 000000000..a4b202af3
--- /dev/null
+++ b/GL/glx/extension_string.c
@@ -0,0 +1,165 @@
+/*
+ * (C) Copyright IBM Corporation 2002-2006
+ * All Rights Reserved.
+ *
+ * Permission is hereby granted, free of charge, to 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, 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
+ * THE COPYRIGHT HOLDERS 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 extension_string.c
+ * Routines to manage the GLX extension string and GLX version for AIGLX
+ * drivers. This code is loosely based on src/glx/x11/glxextensions.c from
+ * Mesa.
+ *
+ * \author Ian Romanick <idr@us.ibm.com>
+ */
+
+#include <string.h>
+#include "extension_string.h"
+
+#define SET_BIT(m,b) (m[ (b) / 8 ] |= (1U << ((b) % 8)))
+#define CLR_BIT(m,b) (m[ (b) / 8 ] &= ~(1U << ((b) % 8)))
+#define IS_SET(m,b) ((m[ (b) / 8 ] & (1U << ((b) % 8))) != 0)
+#define CONCAT(a,b) a ## b
+#define GLX(n) "GLX_" # n, 4 + sizeof( # n ) - 1, CONCAT(n,_bit)
+#define VER(a,b) a, b
+#define Y 1
+#define N 0
+#define EXT_ENABLED(bit,supported) (IS_SET(supported, bit))
+
+struct extension_info {
+ const char * const name;
+ unsigned name_len;
+
+ unsigned char bit;
+
+ /**
+ * This is the lowest version of GLX that "requires" this extension.
+ * For example, GLX 1.3 requires SGIX_fbconfig, SGIX_pbuffer, and
+ * SGI_make_current_read. If the extension is not required by any known
+ * version of GLX, use 0, 0.
+ */
+ unsigned char version_major;
+ unsigned char version_minor;
+
+ /**
+ * Is driver support forced by the ABI?
+ */
+ unsigned char driver_support;
+};
+
+static const struct extension_info known_glx_extensions[] = {
+/* GLX_ARB_get_proc_address is implemented on the client. */
+ { GLX(ARB_multisample), VER(1,4), Y, },
+
+ { GLX(EXT_import_context), VER(0,0), Y, },
+ { GLX(EXT_texture_from_pixmap), VER(0,0), Y, },
+ { GLX(EXT_visual_info), VER(0,0), Y, },
+ { GLX(EXT_visual_rating), VER(0,0), Y, },
+
+ { GLX(MESA_copy_sub_buffer), VER(0,0), N, },
+ { GLX(OML_swap_method), VER(0,0), Y, },
+ { GLX(SGI_make_current_read), VER(1,3), N, },
+ { GLX(SGI_swap_control), VER(0,0), N, },
+ { GLX(SGIS_multisample), VER(0,0), Y, },
+ { GLX(SGIX_fbconfig), VER(1,3), Y, },
+ { GLX(SGIX_pbuffer), VER(1,3), N, },
+ { GLX(SGIX_visual_select_group), VER(0,0), Y, },
+ { NULL }
+};
+
+
+/**
+ * Create a GLX extension string for a set of enable bits.
+ *
+ * Creates a GLX extension string for the set of bit in \c enable_bits. This
+ * string is then stored in \c buffer if buffer is not \c NULL. This allows
+ * two-pass operation. On the first pass the caller passes \c NULL for
+ * \c buffer, and the function determines how much space is required to store
+ * the extension string. The caller allocates the buffer and calls the
+ * function again.
+ *
+ * \param enable_bits Bits representing the enabled extensions.
+ * \param buffer Buffer to store the extension string. May be \c NULL.
+ *
+ * \return
+ * The number of characters in \c buffer that were written to. If \c buffer
+ * is \c NULL, this is the size of buffer that must be allocated by the
+ * caller.
+ */
+int
+__glXGetExtensionString(const unsigned char *enable_bits, char *buffer)
+{
+ unsigned i;
+ int length = 0;
+
+
+ for (i = 0; known_glx_extensions[i].name != NULL; i++) {
+ const unsigned bit = known_glx_extensions[i].bit;
+ const size_t len = known_glx_extensions[i].name_len;
+
+ if (EXT_ENABLED(bit, enable_bits)) {
+ if (buffer != NULL) {
+ (void) memcpy(& buffer[length], known_glx_extensions[i].name,
+ len);
+
+ buffer[length + len + 0] = ' ';
+ buffer[length + len + 1] = '\0';
+ }
+
+ length += len + 1;
+ }
+ }
+
+ return length + 1;
+}
+
+
+void
+__glXEnableExtension(unsigned char *enable_bits, const char *ext)
+{
+ const size_t ext_name_len = strlen(ext);
+ unsigned i;
+
+
+ for (i = 0; known_glx_extensions[i].name != NULL; i++) {
+ if ((ext_name_len == known_glx_extensions[i].name_len)
+ && (memcmp(ext, known_glx_extensions[i].name, ext_name_len) == 0)) {
+ SET_BIT(enable_bits, known_glx_extensions[i].bit);
+ break;
+ }
+ }
+}
+
+
+void
+__glXInitExtensionEnableBits(unsigned char *enable_bits)
+{
+ unsigned i;
+
+
+ (void) memset(enable_bits, 0, __GLX_EXT_BYTES);
+
+ for (i = 0; known_glx_extensions[i].name != NULL; i++) {
+ if (known_glx_extensions[i].driver_support) {
+ SET_BIT(enable_bits, known_glx_extensions[i].bit);
+ }
+ }
+}
diff --git a/GL/glx/extension_string.h b/GL/glx/extension_string.h
new file mode 100644
index 000000000..98e91bc18
--- /dev/null
+++ b/GL/glx/extension_string.h
@@ -0,0 +1,63 @@
+/*
+ * (C) Copyright IBM Corporation 2002-2006
+ * All Rights Reserved.
+ *
+ * Permission is hereby granted, free of charge, to 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, 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
+ * THE COPYRIGHT HOLDERS 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 extension_string.h
+ * Routines to manage the GLX extension string and GLX version for AIGLX
+ * drivers. This code is loosely based on src/glx/x11/glxextensions.c from
+ * Mesa.
+ *
+ * \author Ian Romanick <idr@us.ibm.com>
+ */
+
+#ifndef GLX_EXTENSION_STRING_H
+#define GLX_EXTENSION_STRING_H
+
+enum {
+/* GLX_ARB_get_proc_address is implemented on the client. */
+ ARB_multisample_bit = 0,
+ EXT_import_context_bit,
+ EXT_texture_from_pixmap_bit,
+ EXT_visual_info_bit,
+ EXT_visual_rating_bit,
+ MESA_copy_sub_buffer_bit,
+ OML_swap_method_bit,
+ SGI_make_current_read_bit,
+ SGI_swap_control_bit,
+ SGI_video_sync_bit,
+ SGIS_multisample_bit,
+ SGIX_fbconfig_bit,
+ SGIX_pbuffer_bit,
+ SGIX_visual_select_group_bit,
+ __NUM_GLX_EXTS,
+};
+
+#define __GLX_EXT_BYTES ((__NUM_GLX_EXTS + 7) / 8)
+
+extern int __glXGetExtensionString(const unsigned char *enable_bits,
+ char *buffer);
+extern void __glXEnableExtension(unsigned char *enable_bits, const char *ext);
+extern void __glXInitExtensionEnableBits(unsigned char *enable_bits);
+
+#endif /* GLX_EXTENSION_STRING_H */
diff --git a/GL/glx/g_disptab.c b/GL/glx/g_disptab.c
deleted file mode 100644
index c41c45e9f..000000000
--- a/GL/glx/g_disptab.c
+++ /dev/null
@@ -1,841 +0,0 @@
-/* $XFree86: xc/programs/Xserver/GL/glx/g_disptab.c,v 1.5 2004/01/28 18:11:50 alanh 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_DIX_CONFIG_H
-#include <dix-config.h>
-#endif
-
-#include "glxserver.h"
-#include "glxext.h"
-#include "g_disptab.h"
-#include "indirect_dispatch.h"
-
-__GLXdispatchSingleProcPtr __glXSingleTable[__GLX_SINGLE_TABLE_SIZE] = {
- __glXNoSuchSingleOpcode,
- __glXRender,
- __glXRenderLarge,
- __glXCreateContext,
- __glXDestroyContext,
- __glXMakeCurrent,
- __glXIsDirect,
- __glXQueryVersion,
- __glXWaitGL,
- __glXWaitX,
- __glXCopyContext,
- __glXSwapBuffers,
- __glXUseXFont,
- __glXCreateGLXPixmap,
- __glXGetVisualConfigs,
- __glXDestroyGLXPixmap,
- __glXVendorPrivate,
- __glXVendorPrivateWithReply,
- __glXQueryExtensionsString,
- __glXQueryServerString,
- __glXClientInfo,
- __glXGetFBConfigs,
- __glXCreatePixmap,
- __glXDestroyGLXPixmap, /* glXDestroyPixmap */
- __glXCreateNewContext,
- __glXNoSuchSingleOpcode, /* glXQueryContext */
- __glXMakeContextCurrent,
- __glXNoSuchSingleOpcode, /* glXCreatePbuffer */
- __glXNoSuchSingleOpcode, /* glXDestroyPbuffer */
- __glXNoSuchSingleOpcode, /* glXGetDrawableAttributes */
- __glXNoSuchSingleOpcode, /* glXChangeDrawableAttributes */
- __glXNoSuchSingleOpcode, /* glXCreateWindow */
- __glXNoSuchSingleOpcode, /* 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,
- __glXDisp_NewList,
- __glXDisp_EndList,
- __glXDisp_DeleteLists,
- __glXDisp_GenLists,
- __glXDisp_FeedbackBuffer,
- __glXDisp_SelectBuffer,
- __glXDisp_RenderMode,
- __glXDisp_Finish,
- __glXDisp_PixelStoref,
- __glXDisp_PixelStorei,
- __glXDisp_ReadPixels,
- __glXDisp_GetBooleanv,
- __glXDisp_GetClipPlane,
- __glXDisp_GetDoublev,
- __glXDisp_GetError,
- __glXDisp_GetFloatv,
- __glXDisp_GetIntegerv,
- __glXDisp_GetLightfv,
- __glXDisp_GetLightiv,
- __glXDisp_GetMapdv,
- __glXDisp_GetMapfv,
- __glXDisp_GetMapiv,
- __glXDisp_GetMaterialfv,
- __glXDisp_GetMaterialiv,
- __glXDisp_GetPixelMapfv,
- __glXDisp_GetPixelMapuiv,
- __glXDisp_GetPixelMapusv,
- __glXDisp_GetPolygonStipple,
- __glXDisp_GetString,
- __glXDisp_GetTexEnvfv,
- __glXDisp_GetTexEnviv,
- __glXDisp_GetTexGendv,
- __glXDisp_GetTexGenfv,
- __glXDisp_GetTexGeniv,
- __glXDisp_GetTexImage,
- __glXDisp_GetTexParameterfv,
- __glXDisp_GetTexParameteriv,
- __glXDisp_GetTexLevelParameterfv,
- __glXDisp_GetTexLevelParameteriv,
- __glXDisp_IsEnabled,
- __glXDisp_IsList,
- __glXDisp_Flush,
- __glXDisp_AreTexturesResident,
- __glXDisp_DeleteTextures,
- __glXDisp_GenTextures,
- __glXDisp_IsTexture,
- __glXDisp_GetColorTable,
- __glXDisp_GetColorTableParameterfv,
- __glXDisp_GetColorTableParameteriv,
- __glXDisp_GetConvolutionFilter,
- __glXDisp_GetConvolutionParameterfv,
- __glXDisp_GetConvolutionParameteriv,
- __glXDisp_GetSeparableFilter,
- __glXDisp_GetHistogram,
- __glXDisp_GetHistogramParameterfv,
- __glXDisp_GetHistogramParameteriv,
- __glXDisp_GetMinmax,
- __glXDisp_GetMinmaxParameterfv,
- __glXDisp_GetMinmaxParameteriv,
-};
-
-__GLXdispatchRenderProcPtr __glXRenderTable[] = {
- __glXNoSuchRenderOpcode,
- __glXDisp_CallList,
- __glXDisp_CallLists,
- __glXDisp_ListBase,
- __glXDisp_Begin,
- __glXDisp_Bitmap,
- __glXDisp_Color3bv,
- __glXDisp_Color3dv,
- __glXDisp_Color3fv,
- __glXDisp_Color3iv,
- __glXDisp_Color3sv,
- __glXDisp_Color3ubv,
- __glXDisp_Color3uiv,
- __glXDisp_Color3usv,
- __glXDisp_Color4bv,
- __glXDisp_Color4dv,
- __glXDisp_Color4fv,
- __glXDisp_Color4iv,
- __glXDisp_Color4sv,
- __glXDisp_Color4ubv,
- __glXDisp_Color4uiv,
- __glXDisp_Color4usv,
- __glXDisp_EdgeFlagv,
- __glXDisp_End,
- __glXDisp_Indexdv,
- __glXDisp_Indexfv,
- __glXDisp_Indexiv,
- __glXDisp_Indexsv,
- __glXDisp_Normal3bv,
- __glXDisp_Normal3dv,
- __glXDisp_Normal3fv,
- __glXDisp_Normal3iv,
- __glXDisp_Normal3sv,
- __glXDisp_RasterPos2dv,
- __glXDisp_RasterPos2fv,
- __glXDisp_RasterPos2iv,
- __glXDisp_RasterPos2sv,
- __glXDisp_RasterPos3dv,
- __glXDisp_RasterPos3fv,
- __glXDisp_RasterPos3iv,
- __glXDisp_RasterPos3sv,
- __glXDisp_RasterPos4dv,
- __glXDisp_RasterPos4fv,
- __glXDisp_RasterPos4iv,
- __glXDisp_RasterPos4sv,
- __glXDisp_Rectdv,
- __glXDisp_Rectfv,
- __glXDisp_Rectiv,
- __glXDisp_Rectsv,
- __glXDisp_TexCoord1dv,
- __glXDisp_TexCoord1fv,
- __glXDisp_TexCoord1iv,
- __glXDisp_TexCoord1sv,
- __glXDisp_TexCoord2dv,
- __glXDisp_TexCoord2fv,
- __glXDisp_TexCoord2iv,
- __glXDisp_TexCoord2sv,
- __glXDisp_TexCoord3dv,
- __glXDisp_TexCoord3fv,
- __glXDisp_TexCoord3iv,
- __glXDisp_TexCoord3sv,
- __glXDisp_TexCoord4dv,
- __glXDisp_TexCoord4fv,
- __glXDisp_TexCoord4iv,
- __glXDisp_TexCoord4sv,
- __glXDisp_Vertex2dv,
- __glXDisp_Vertex2fv,
- __glXDisp_Vertex2iv,
- __glXDisp_Vertex2sv,
- __glXDisp_Vertex3dv,
- __glXDisp_Vertex3fv,
- __glXDisp_Vertex3iv,
- __glXDisp_Vertex3sv,
- __glXDisp_Vertex4dv,
- __glXDisp_Vertex4fv,
- __glXDisp_Vertex4iv,
- __glXDisp_Vertex4sv,
- __glXDisp_ClipPlane,
- __glXDisp_ColorMaterial,
- __glXDisp_CullFace,
- __glXDisp_Fogf,
- __glXDisp_Fogfv,
- __glXDisp_Fogi,
- __glXDisp_Fogiv,
- __glXDisp_FrontFace,
- __glXDisp_Hint,
- __glXDisp_Lightf,
- __glXDisp_Lightfv,
- __glXDisp_Lighti,
- __glXDisp_Lightiv,
- __glXDisp_LightModelf,
- __glXDisp_LightModelfv,
- __glXDisp_LightModeli,
- __glXDisp_LightModeliv,
- __glXDisp_LineStipple,
- __glXDisp_LineWidth,
- __glXDisp_Materialf,
- __glXDisp_Materialfv,
- __glXDisp_Materiali,
- __glXDisp_Materialiv,
- __glXDisp_PointSize,
- __glXDisp_PolygonMode,
- __glXDisp_PolygonStipple,
- __glXDisp_Scissor,
- __glXDisp_ShadeModel,
- __glXDisp_TexParameterf,
- __glXDisp_TexParameterfv,
- __glXDisp_TexParameteri,
- __glXDisp_TexParameteriv,
- __glXDisp_TexImage1D,
- __glXDisp_TexImage2D,
- __glXDisp_TexEnvf,
- __glXDisp_TexEnvfv,
- __glXDisp_TexEnvi,
- __glXDisp_TexEnviv,
- __glXDisp_TexGend,
- __glXDisp_TexGendv,
- __glXDisp_TexGenf,
- __glXDisp_TexGenfv,
- __glXDisp_TexGeni,
- __glXDisp_TexGeniv,
- __glXDisp_InitNames,
- __glXDisp_LoadName,
- __glXDisp_PassThrough,
- __glXDisp_PopName,
- __glXDisp_PushName,
- __glXDisp_DrawBuffer,
- __glXDisp_Clear,
- __glXDisp_ClearAccum,
- __glXDisp_ClearIndex,
- __glXDisp_ClearColor,
- __glXDisp_ClearStencil,
- __glXDisp_ClearDepth,
- __glXDisp_StencilMask,
- __glXDisp_ColorMask,
- __glXDisp_DepthMask,
- __glXDisp_IndexMask,
- __glXDisp_Accum,
- __glXDisp_Disable,
- __glXDisp_Enable,
- __glXNoSuchRenderOpcode,
- __glXDisp_PopAttrib,
- __glXDisp_PushAttrib,
- __glXDisp_Map1d,
- __glXDisp_Map1f,
- __glXDisp_Map2d,
- __glXDisp_Map2f,
- __glXDisp_MapGrid1d,
- __glXDisp_MapGrid1f,
- __glXDisp_MapGrid2d,
- __glXDisp_MapGrid2f,
- __glXDisp_EvalCoord1dv,
- __glXDisp_EvalCoord1fv,
- __glXDisp_EvalCoord2dv,
- __glXDisp_EvalCoord2fv,
- __glXDisp_EvalMesh1,
- __glXDisp_EvalPoint1,
- __glXDisp_EvalMesh2,
- __glXDisp_EvalPoint2,
- __glXDisp_AlphaFunc,
- __glXDisp_BlendFunc,
- __glXDisp_LogicOp,
- __glXDisp_StencilFunc,
- __glXDisp_StencilOp,
- __glXDisp_DepthFunc,
- __glXDisp_PixelZoom,
- __glXDisp_PixelTransferf,
- __glXDisp_PixelTransferi,
- __glXDisp_PixelMapfv,
- __glXDisp_PixelMapuiv,
- __glXDisp_PixelMapusv,
- __glXDisp_ReadBuffer,
- __glXDisp_CopyPixels,
- __glXDisp_DrawPixels,
- __glXDisp_DepthRange,
- __glXDisp_Frustum,
- __glXDisp_LoadIdentity,
- __glXDisp_LoadMatrixf,
- __glXDisp_LoadMatrixd,
- __glXDisp_MatrixMode,
- __glXDisp_MultMatrixf,
- __glXDisp_MultMatrixd,
- __glXDisp_Ortho,
- __glXDisp_PopMatrix,
- __glXDisp_PushMatrix,
- __glXDisp_Rotated,
- __glXDisp_Rotatef,
- __glXDisp_Scaled,
- __glXDisp_Scalef,
- __glXDisp_Translated,
- __glXDisp_Translatef,
- __glXDisp_Viewport,
- __glXDisp_PolygonOffset,
- __glXDisp_DrawArrays,
- __glXDisp_Indexubv,
- __glXDisp_ColorSubTable,
- __glXDisp_CopyColorSubTable,
- __glXDisp_ActiveTextureARB,
- __glXDisp_MultiTexCoord1dvARB,
- __glXDisp_MultiTexCoord1fvARB,
- __glXDisp_MultiTexCoord1ivARB,
- __glXDisp_MultiTexCoord1svARB,
- __glXDisp_MultiTexCoord2dvARB,
- __glXDisp_MultiTexCoord2fvARB,
- __glXDisp_MultiTexCoord2ivARB,
- __glXDisp_MultiTexCoord2svARB,
- __glXDisp_MultiTexCoord3dvARB,
- __glXDisp_MultiTexCoord3fvARB,
- __glXDisp_MultiTexCoord3ivARB,
- __glXDisp_MultiTexCoord3svARB,
- __glXDisp_MultiTexCoord4dvARB,
- __glXDisp_MultiTexCoord4fvARB,
- __glXDisp_MultiTexCoord4ivARB,
- __glXDisp_MultiTexCoord4svARB, /* 213 */
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode, /* 220 */
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXDisp_SampleCoverageARB,
-#ifndef MISSING_GL_EXTS
- __glXDisp_WindowPos3fvMESA /* 230 */
-#else
- __glXNoSuchRenderOpcode
-#endif
-};
-
-__GLXdispatchSingleProcPtr __glXSwapSingleTable[__GLX_SINGLE_TABLE_SIZE] = {
- __glXNoSuchSingleOpcode,
- __glXSwapRender,
- __glXSwapRenderLarge,
- __glXSwapCreateContext,
- __glXSwapDestroyContext,
- __glXSwapMakeCurrent,
- __glXSwapIsDirect,
- __glXSwapQueryVersion,
- __glXSwapWaitGL,
- __glXSwapWaitX,
- __glXSwapCopyContext,
- __glXSwapSwapBuffers,
- __glXSwapUseXFont,
- __glXSwapCreateGLXPixmap,
- __glXSwapGetVisualConfigs,
- __glXSwapDestroyGLXPixmap,
- __glXSwapVendorPrivate,
- __glXSwapVendorPrivateWithReply,
- __glXSwapQueryExtensionsString,
- __glXSwapQueryServerString,
- __glXSwapClientInfo,
- __glXSwapGetFBConfigs,
- __glXSwapCreatePixmap,
- __glXSwapDestroyGLXPixmap, /* glXDestroyPixmap */
- __glXSwapCreateNewContext,
- __glXNoSuchSingleOpcode, /* glXQueryContext */
- __glXSwapMakeContextCurrent,
- __glXNoSuchSingleOpcode, /* glXCreatePbuffer */
- __glXNoSuchSingleOpcode, /* glXDestroyPbuffer */
- __glXNoSuchSingleOpcode, /* glXGetDrawableAttributes */
- __glXNoSuchSingleOpcode, /* glXChangeDrawableAttributes */
- __glXNoSuchSingleOpcode, /* glXCreateWindow */
- __glXNoSuchSingleOpcode, /* 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,
- __glXDispSwap_NewList,
- __glXDispSwap_EndList,
- __glXDispSwap_DeleteLists,
- __glXDispSwap_GenLists,
- __glXDispSwap_FeedbackBuffer,
- __glXDispSwap_SelectBuffer,
- __glXDispSwap_RenderMode,
- __glXDispSwap_Finish,
- __glXDispSwap_PixelStoref,
- __glXDispSwap_PixelStorei,
- __glXDispSwap_ReadPixels,
- __glXDispSwap_GetBooleanv,
- __glXDispSwap_GetClipPlane,
- __glXDispSwap_GetDoublev,
- __glXDispSwap_GetError,
- __glXDispSwap_GetFloatv,
- __glXDispSwap_GetIntegerv,
- __glXDispSwap_GetLightfv,
- __glXDispSwap_GetLightiv,
- __glXDispSwap_GetMapdv,
- __glXDispSwap_GetMapfv,
- __glXDispSwap_GetMapiv,
- __glXDispSwap_GetMaterialfv,
- __glXDispSwap_GetMaterialiv,
- __glXDispSwap_GetPixelMapfv,
- __glXDispSwap_GetPixelMapuiv,
- __glXDispSwap_GetPixelMapusv,
- __glXDispSwap_GetPolygonStipple,
- __glXDispSwap_GetString,
- __glXDispSwap_GetTexEnvfv,
- __glXDispSwap_GetTexEnviv,
- __glXDispSwap_GetTexGendv,
- __glXDispSwap_GetTexGenfv,
- __glXDispSwap_GetTexGeniv,
- __glXDispSwap_GetTexImage,
- __glXDispSwap_GetTexParameterfv,
- __glXDispSwap_GetTexParameteriv,
- __glXDispSwap_GetTexLevelParameterfv,
- __glXDispSwap_GetTexLevelParameteriv,
- __glXDispSwap_IsEnabled,
- __glXDispSwap_IsList,
- __glXDispSwap_Flush,
- __glXDispSwap_AreTexturesResident,
- __glXDispSwap_DeleteTextures,
- __glXDispSwap_GenTextures,
- __glXDispSwap_IsTexture,
- __glXDispSwap_GetColorTable,
- __glXDispSwap_GetColorTableParameterfv,
- __glXDispSwap_GetColorTableParameteriv,
- __glXDispSwap_GetConvolutionFilter,
- __glXDispSwap_GetConvolutionParameterfv,
- __glXDispSwap_GetConvolutionParameteriv,
- __glXDispSwap_GetSeparableFilter,
- __glXDispSwap_GetHistogram,
- __glXDispSwap_GetHistogramParameterfv,
- __glXDispSwap_GetHistogramParameteriv,
- __glXDispSwap_GetMinmax,
- __glXDispSwap_GetMinmaxParameterfv,
- __glXDispSwap_GetMinmaxParameteriv,
-};
-
-__GLXdispatchRenderProcPtr __glXSwapRenderTable[__GLX_RENDER_TABLE_SIZE] = {
- __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, /* 213 */
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode, /* 220 */
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXDispSwap_SampleCoverageARB,
-#ifndef MISSING_GL_EXTS
- __glXDispSwap_WindowPos3fvMESA /* 230 */
-#else
- __glXNoSuchRenderOpcode
-#endif
-};
diff --git a/GL/glx/g_disptab.h b/GL/glx/g_disptab.h
index 9ae901c1d..f9a09ccd6 100644
--- a/GL/glx/g_disptab.h
+++ b/GL/glx/g_disptab.h
@@ -1,4 +1,3 @@
-/* $XFree86: xc/programs/Xserver/GL/glx/g_disptab.h,v 1.4 2003/09/28 20:15:42 alanh Exp $ */
/* DO NOT EDIT - THIS FILE IS AUTOMATICALLY GENERATED */
#ifdef HAVE_DIX_CONFIG_H
#include <dix-config.h>
@@ -35,74 +34,20 @@
** version 1.2.1 Specification.
*/
-extern int __glXRender(__GLXclientState*, GLbyte*);
-extern int __glXRenderLarge(__GLXclientState*, GLbyte*);
-extern int __glXCreateContext(__GLXclientState*, GLbyte*);
-extern int __glXDestroyContext(__GLXclientState*, GLbyte*);
-extern int __glXMakeCurrent(__GLXclientState*, GLbyte*);
-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 __glXBindTexImageEXT(__GLXclientState *cl, GLbyte *pc);
-extern int __glXReleaseTexImageEXT(__GLXclientState *cl, GLbyte *pc);
-extern int __glXGetDrawableAttributesSGIX(__GLXclientState *cl, GLbyte *pc);
-extern int __glXUseXFont(__GLXclientState*, GLbyte*);
-extern int __glXCreateGLXPixmap(__GLXclientState*, GLbyte*);
-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 __glXMakeContextCurrent(__GLXclientState*, GLbyte*);
-extern int __glXGetFBConfigs(__GLXclientState*, GLbyte*);
-extern int __glXCreateNewContext(__GLXclientState*, GLbyte*);
-extern int __glXCreatePixmap(__GLXclientState*, GLbyte*);
+extern int __glXDisp_GetDrawableAttributesSGIX(__GLXclientState *cl, GLbyte *pc);
+extern int __glXDisp_BindSwapBarrierSGIX(__GLXclientState *cl, GLbyte *pc);
+extern int __glXDisp_QueryMaxSwapBarriersSGIX(__GLXclientState *cl, GLbyte *pc);
+extern int __glXDisp_QueryHyperpipeNetworkSGIX(__GLXclientState *cl, GLbyte *pc);
+extern int __glXDisp_DestroyHyperpipeConfigSGIX (__GLXclientState *cl, GLbyte *pc);
+extern int __glXDisp_QueryHyperpipeConfigSGIX(__GLXclientState *cl, GLbyte *pc);
+extern int __glXDisp_HyperpipeConfigSGIX(__GLXclientState *cl, GLbyte *pc);
-extern int __glXSwapRender(__GLXclientState*, GLbyte*);
-extern int __glXSwapRenderLarge(__GLXclientState*, GLbyte*);
-extern int __glXSwapCreateContext(__GLXclientState*, GLbyte*);
-extern int __glXSwapDestroyContext(__GLXclientState*, GLbyte*);
-extern int __glXSwapMakeCurrent(__GLXclientState*, GLbyte*);
-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 __glXSwapBindTexImageEXT(__GLXclientState *cl, GLbyte *pc);
-extern int __glXSwapReleaseTexImageEXT(__GLXclientState *cl, GLbyte *pc);
-extern int __glXSwapGetDrawableAttributesSGIX(__GLXclientState *cl, GLbyte *pc);
-extern int __glXSwapUseXFont(__GLXclientState*, GLbyte*);
-extern int __glXSwapCreateGLXPixmap(__GLXclientState*, GLbyte*);
-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 __glXSwapMakeContextCurrent(__GLXclientState*, GLbyte*);
-extern int __glXSwapGetFBConfigs(__GLXclientState*, GLbyte*);
-extern int __glXSwapCreateNewContext(__GLXclientState*, GLbyte*);
-extern int __glXSwapCreatePixmap(__GLXclientState*, GLbyte*);
+extern int __glXDispSwap_GetDrawableAttributesSGIX(__GLXclientState *cl, GLbyte *pc);
+extern int __glXDispSwap_BindSwapBarrierSGIX(__GLXclientState *cl, GLbyte *pc);
+extern int __glXDispSwap_QueryMaxSwapBarriersSGIX(__GLXclientState *cl, GLbyte *pc);
+extern int __glXDispSwap_QueryHyperpipeNetworkSGIX(__GLXclientState *cl, GLbyte *pc);
+extern int __glXDispSwap_DestroyHyperpipeConfigSGIX (__GLXclientState *cl, GLbyte *pc);
+extern int __glXDispSwap_QueryHyperpipeConfigSGIX(__GLXclientState *cl, GLbyte *pc);
+extern int __glXDispSwap_HyperpipeConfigSGIX(__GLXclientState *cl, GLbyte *pc);
-#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_MAX_RENDER_OPCODE 230
-#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_RENDER_TABLE_SIZE 231
-extern __GLXdispatchRenderProcPtr __glXRenderTable[__GLX_RENDER_TABLE_SIZE];
-extern __GLXdispatchSingleProcPtr __glXSingleTable[__GLX_SINGLE_TABLE_SIZE];
-extern __GLXdispatchRenderProcPtr __glXSwapRenderTable[__GLX_RENDER_TABLE_SIZE];
-extern __GLXdispatchSingleProcPtr __glXSwapSingleTable[__GLX_SINGLE_TABLE_SIZE];
#endif /* _GLX_g_disptab_h_ */
diff --git a/GL/glx/g_disptab_EXT.c b/GL/glx/g_disptab_EXT.c
deleted file mode 100644
index 255f3832c..000000000
--- a/GL/glx/g_disptab_EXT.c
+++ /dev/null
@@ -1,4657 +0,0 @@
-/* $XFree86: xc/programs/Xserver/GL/glx/g_disptab_EXT.c,v 1.5 2004/01/28 18:11:50 alanh 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_DIX_CONFIG_H
-#include <dix-config.h>
-#endif
-
-#include "glxserver.h"
-#include "glxext.h"
-#include "g_disptab_EXT.h"
-#include "indirect_dispatch.h"
-
-__GLXdispatchRenderProcPtr __glXRenderTable_EXT[__GLX_MAX_RENDER_OPCODE_EXT - __GLX_MIN_RENDER_OPCODE_EXT + 1] = {
- __glXDisp_ColorTable, /* 2053 */
- __glXDisp_ColorTableParameterfv, /* 2054 */
- __glXDisp_ColorTableParameteriv,
- __glXDisp_CopyColorTable,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode, /* 2060 */
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
-#ifndef MISSING_GL_EXTS
- __glXDisp_PointParameterfEXT, /* 2065 */
- __glXDisp_PointParameterfvEXT, /* 2066 */
-#else
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
-#endif
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode, /* 2070 */
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXDisp_BlendColor, /* 4096 */
- __glXDisp_BlendEquation, /* 4097 */
- __glXNoSuchRenderOpcode, /* 4098 */
- __glXDisp_TexSubImage1D, /* 4099 */
- __glXDisp_TexSubImage2D, /* 4100 */
- __glXDisp_ConvolutionFilter1D,
- __glXDisp_ConvolutionFilter2D,
- __glXDisp_ConvolutionParameterf,
- __glXDisp_ConvolutionParameterfv,
- __glXDisp_ConvolutionParameteri,
- __glXDisp_ConvolutionParameteriv,
- __glXDisp_CopyConvolutionFilter1D,
- __glXDisp_CopyConvolutionFilter2D,
- __glXDisp_SeparableFilter2D,
- __glXDisp_Histogram, /* 4110 */
- __glXDisp_Minmax,
- __glXDisp_ResetHistogram,
- __glXDisp_ResetMinmax,
- __glXDisp_TexImage3D,
- __glXDisp_TexSubImage3D,
- __glXDisp_DrawArrays,
- __glXDisp_BindTexture,
- __glXDisp_PrioritizeTextures,
- __glXDisp_CopyTexImage1D,
- __glXDisp_CopyTexImage2D, /* 4120 */
- __glXDisp_CopyTexSubImage1D, /* 4121 */
- __glXDisp_CopyTexSubImage2D, /* 4122 */
- __glXDisp_CopyTexSubImage3D, /* 4123 */
-#ifndef MISSING_GL_EXTS
- __glXDisp_FogCoordfvEXT, /* 4124 */
- __glXDisp_FogCoorddvEXT, /* 4125 */
- __glXDisp_SecondaryColor3bvEXT, /* 4126 */
- __glXDisp_SecondaryColor3svEXT, /* 4127 */
- __glXDisp_SecondaryColor3ivEXT, /* 4128 */
- __glXDisp_SecondaryColor3fvEXT, /* 4129 */
- __glXDisp_SecondaryColor3dvEXT, /* 4130 */
- __glXDisp_SecondaryColor3ubvEXT, /* 4131 */
- __glXDisp_SecondaryColor3usvEXT, /* 4132 */
- __glXDisp_SecondaryColor3uivEXT, /* 4133 */
- __glXDisp_BlendFuncSeparateEXT, /* 4134 */
-#else
- __glXNoSuchRenderOpcode, /* 4124 */
- __glXNoSuchRenderOpcode, /* 4125 */
- __glXNoSuchRenderOpcode, /* 4126 */
- __glXNoSuchRenderOpcode, /* 4127 */
- __glXNoSuchRenderOpcode, /* 4128 */
- __glXNoSuchRenderOpcode, /* 4129 */
- __glXNoSuchRenderOpcode, /* 4130 */
- __glXNoSuchRenderOpcode, /* 4131 */
- __glXNoSuchRenderOpcode, /* 4132 */
- __glXNoSuchRenderOpcode, /* 4133 */
- __glXNoSuchRenderOpcode, /* 4134 */
-#endif
- __glXNoSuchRenderOpcode, /* 4135 */
- __glXNoSuchRenderOpcode, /* 4136 */
- __glXNoSuchRenderOpcode, /* 4137 */
- __glXNoSuchRenderOpcode, /* 4138 */
- __glXNoSuchRenderOpcode, /* 4139 */
- __glXNoSuchRenderOpcode, /* 4140 */
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode, /* 4150 */
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode, /* 4160 */
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode, /* 4170 */
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode, /* 4180 */
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode, /* 4190 */
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode, /* 4200 */
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode, /* 4210 */
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode, /* 4219 */
-#ifndef MISSING_GL_EXTS
- __glXDisp_ActiveStencilFaceEXT, /* 4220 */
- __glXDisp_PointParameteriNV, /* 4221 */
- __glXDisp_PointParameterivNV, /* 4222 */
-#else
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
-#endif
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
-
- __glXDisp_BindRenderbufferEXT, /* 4316 */
- __glXDisp_DeleteRenderbuffersEXT, /* 4317 */
- __glXDisp_RenderbufferStorageEXT, /* 4318 */
- __glXDisp_BindFramebufferEXT, /* 4319 */
- __glXDisp_DeleteFramebuffersEXT, /* 4320 */
- __glXDisp_FramebufferTexture1DEXT, /* 4321 */
- __glXDisp_FramebufferTexture2DEXT, /* 4322 */
- __glXDisp_FramebufferTexture3DEXT, /* 4323 */
- __glXDisp_FramebufferRenderbufferEXT, /* 4324 */
- __glXDisp_GenerateMipmapEXT /* 4325 */
-};
-__GLXdispatchVendorPrivProcPtr __glXVendorPrivTable_EXT[__GLX_MAX_VENDPRIV_OPCODE_EXT - __GLX_MIN_VENDPRIV_OPCODE_EXT + 1] = {
- __glXDisp_AreTexturesResidentEXT, /* 11 */
- __glXDisp_DeleteTextures, /* 12 */
- __glXDisp_GenTexturesEXT, /* 13 */
- __glXDisp_IsTextureEXT, /* 14 */
-};
-
-
-__GLXdispatchRenderProcPtr __glXSwapRenderTable_EXT[__GLX_MAX_RENDER_OPCODE_EXT - __GLX_MIN_RENDER_OPCODE_EXT + 1] = {
- __glXDispSwap_ColorTable, /* 2053 */
- __glXDispSwap_ColorTableParameterfv, /* 2054 */
- __glXDispSwap_ColorTableParameteriv,
- __glXDispSwap_CopyColorTable,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode, /* 2060 */
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
-#ifndef MISSING_GL_EXTS
- __glXDispSwap_PointParameterfEXT, /* 2065 */
- __glXDispSwap_PointParameterfvEXT, /* 2066 */
-#else
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
-#endif
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode, /* 2070 */
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXDispSwap_BlendColor,
- __glXDispSwap_BlendEquation,
- __glXNoSuchRenderOpcode,
- __glXDispSwap_TexSubImage1D,
- __glXDispSwap_TexSubImage2D,
- __glXDispSwap_ConvolutionFilter1D,
- __glXDispSwap_ConvolutionFilter2D,
- __glXDispSwap_ConvolutionParameterf,
- __glXDispSwap_ConvolutionParameterfv,
- __glXDispSwap_ConvolutionParameteri,
- __glXDispSwap_ConvolutionParameteriv,
- __glXDispSwap_CopyConvolutionFilter1D,
- __glXDispSwap_CopyConvolutionFilter2D,
- __glXDispSwap_SeparableFilter2D,
- __glXDispSwap_Histogram,
- __glXDispSwap_Minmax,
- __glXDispSwap_ResetHistogram,
- __glXDispSwap_ResetMinmax,
- __glXDispSwap_TexImage3D,
- __glXDispSwap_TexSubImage3D,
- __glXDispSwap_DrawArrays,
- __glXDispSwap_BindTexture,
- __glXDispSwap_PrioritizeTextures,
- __glXDispSwap_CopyTexImage1D,
- __glXDispSwap_CopyTexImage2D, /* 4120 */
- __glXDispSwap_CopyTexSubImage1D, /* 4121 */
- __glXDispSwap_CopyTexSubImage2D, /* 4122 */
- __glXDispSwap_CopyTexSubImage3D, /* 4123 */
-#ifndef MISSING_GL_EXTS
- __glXDispSwap_FogCoordfvEXT, /* 4124 */
- __glXDispSwap_FogCoorddvEXT, /* 4125 */
- __glXDispSwap_SecondaryColor3bvEXT, /* 4126 */
- __glXDispSwap_SecondaryColor3svEXT, /* 4127 */
- __glXDispSwap_SecondaryColor3ivEXT, /* 4128 */
- __glXDispSwap_SecondaryColor3fvEXT, /* 4129 */
- __glXDispSwap_SecondaryColor3dvEXT, /* 4130 */
- __glXDispSwap_SecondaryColor3ubvEXT, /* 4131 */
- __glXDispSwap_SecondaryColor3usvEXT, /* 4132 */
- __glXDispSwap_SecondaryColor3uivEXT, /* 4133 */
- __glXDisp_BlendFuncSeparateEXT, /* 4134 */
-#else
- __glXNoSuchRenderOpcode, /* 4124 */
- __glXNoSuchRenderOpcode, /* 4125 */
- __glXNoSuchRenderOpcode, /* 4126 */
- __glXNoSuchRenderOpcode, /* 4127 */
- __glXNoSuchRenderOpcode, /* 4128 */
- __glXNoSuchRenderOpcode, /* 4129 */
- __glXNoSuchRenderOpcode, /* 4130 */
- __glXNoSuchRenderOpcode, /* 4131 */
- __glXNoSuchRenderOpcode, /* 4132 */
- __glXNoSuchRenderOpcode, /* 4133 */
- __glXNoSuchRenderOpcode, /* 4134 */
-#endif
- __glXNoSuchRenderOpcode, /* 4135 */
- __glXNoSuchRenderOpcode, /* 4136 */
- __glXNoSuchRenderOpcode, /* 4137 */
- __glXNoSuchRenderOpcode, /* 4138 */
- __glXNoSuchRenderOpcode, /* 4139 */
- __glXNoSuchRenderOpcode, /* 4140 */
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode, /* 4150 */
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode, /* 4160 */
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode, /* 4170 */
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode, /* 4180 */
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode, /* 4190 */
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode, /* 4200 */
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode, /* 4210 */
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode, /* 4219 */
-#ifndef MISSING_GL_EXTS
- __glXDispSwap_ActiveStencilFaceEXT, /* 4220 */
- __glXDispSwap_PointParameteriNV, /* 4221 */
- __glXDispSwap_PointParameterivNV, /* 4222 */
-#else
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
-#endif
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
- __glXNoSuchRenderOpcode,
-
- __glXDispSwap_BindRenderbufferEXT, /* 4316 */
- __glXDispSwap_DeleteRenderbuffersEXT, /* 4317 */
- __glXDispSwap_RenderbufferStorageEXT, /* 4318 */
- __glXDispSwap_BindFramebufferEXT, /* 4319 */
- __glXDispSwap_DeleteFramebuffersEXT, /* 4320 */
- __glXDispSwap_FramebufferTexture1DEXT, /* 4321 */
- __glXDispSwap_FramebufferTexture2DEXT, /* 4322 */
- __glXDispSwap_FramebufferTexture3DEXT, /* 4323 */
- __glXDispSwap_FramebufferRenderbufferEXT, /* 4324 */
- __glXDispSwap_GenerateMipmapEXT /* 4325 */
-};
-__GLXdispatchVendorPrivProcPtr __glXSwapVendorPrivTable_EXT[__GLX_MAX_VENDPRIV_OPCODE_EXT - __GLX_MIN_VENDPRIV_OPCODE_EXT + 1] = {
- __glXDispSwap_AreTexturesResidentEXT, /* 11 */
- __glXDispSwap_DeleteTextures, /* 12 */
- __glXDispSwap_GenTexturesEXT, /* 13 */
- __glXDispSwap_IsTextureEXT, /* 14 */
-};
-
diff --git a/GL/glx/g_disptab_EXT.h b/GL/glx/g_disptab_EXT.h
deleted file mode 100644
index b5ecc6995..000000000
--- a/GL/glx/g_disptab_EXT.h
+++ /dev/null
@@ -1,48 +0,0 @@
-/* $XFree86: xc/programs/Xserver/GL/glx/g_disptab_EXT.h,v 1.5 2004/01/28 18:11:50 alanh Exp $ */
-/* DO NOT EDIT - THIS FILE IS AUTOMATICALLY GENERATED */
-#ifdef HAVE_DIX_CONFIG_H
-#include <dix-config.h>
-#endif
-
-#ifndef _GLX_g_disptab_EXT_h_
-#define _GLX_g_disptab_EXT_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.
-*/
-
-#define __GLX_MIN_RENDER_OPCODE_EXT 2053
-#define __GLX_MAX_RENDER_OPCODE_EXT 4325
-#define __GLX_MIN_VENDPRIV_OPCODE_EXT 11
-#define __GLX_MAX_VENDPRIV_OPCODE_EXT 14
-#define __GLX_VENDPRIV_TABLE_SIZE_EXT (__GLX_MAX_VENDPRIV_OPCODE_EXT - __GLX_MIN_VENDPRIV_OPCODE_EXT + 1)
-#define __GLX_RENDER_TABLE_SIZE_EXT (__GLX_MAX_RENDER_OPCODE_EXT - __GLX_MIN_RENDER_OPCODE_EXT + 1)
-extern __GLXdispatchRenderProcPtr __glXRenderTable_EXT[__GLX_RENDER_TABLE_SIZE_EXT];
-extern __GLXdispatchVendorPrivProcPtr __glXVendorPrivTable_EXT[__GLX_VENDPRIV_TABLE_SIZE_EXT];
-extern __GLXdispatchRenderProcPtr __glXSwapRenderTable_EXT[__GLX_RENDER_TABLE_SIZE_EXT];
-extern __GLXdispatchVendorPrivProcPtr __glXSwapVendorPrivTable_EXT[__GLX_VENDPRIV_TABLE_SIZE_EXT];
-#endif /* _GLX_g_disptab_EXT_h_ */
diff --git a/GL/glx/global.c b/GL/glx/global.c
deleted file mode 100644
index 28030ec03..000000000
--- a/GL/glx/global.c
+++ /dev/null
@@ -1,77 +0,0 @@
-/* $XFree86$ */
-/*
-** 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
-#ifdef HAVE_DIX_CONFIG_H
-#include <dix-config.h>
-#endif
-
-#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 __glXDrawableRes;
-RESTYPE __glXSwapBarrierRes;
-
-/*
-** Error codes with the extension error base already added in.
-*/
-int __glXBadContext, __glXBadContextState, __glXBadDrawable, __glXBadPixmap;
-int __glXBadContextTag, __glXBadCurrentWindow;
-int __glXBadRenderRequest, __glXBadLargeRequest;
-int __glXUnsupportedPrivateRequest;
-
-/*
-** 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];
-
diff --git a/GL/glx/glxcmds.c b/GL/glx/glxcmds.c
index 3202f75dc..6273edc56 100644
--- a/GL/glx/glxcmds.c
+++ b/GL/glx/glxcmds.c
@@ -1,4 +1,3 @@
-/* $XFree86: xc/programs/Xserver/GL/glx/glxcmds.c,v 1.12 2004/01/28 18:11:50 alanh Exp $ */
/*
** License Applicability. Except to the extent portions of this file are
** made subject to an alternative license as permitted in the SGI Free
@@ -49,7 +48,6 @@
#include "g_disptab.h"
#include <pixmapstr.h>
#include <windowstr.h>
-#include "g_disptab_EXT.h"
#include "glxutil.h"
#include "glxext.h"
#include "glcontextmodes.h"
@@ -58,6 +56,8 @@
#include "glthread.h"
#include "dispatch.h"
#include "indirect_dispatch.h"
+#include "indirect_table.h"
+#include "indirect_util.h"
/************************************************************************/
@@ -67,18 +67,6 @@ GlxSetRenderTables (struct _glapi_table *table)
_glapi_set_dispatch (table);
}
-static int __glXGetFBConfigsSGIX(__GLXclientState *cl, GLbyte *pc);
-static int __glXCreateContextWithConfigSGIX(__GLXclientState *cl, GLbyte *pc);
-static int __glXCreateGLXPixmapWithConfigSGIX(__GLXclientState *cl, GLbyte *pc);
-static int __glXMakeCurrentReadSGI(__GLXclientState *cl, GLbyte *pc);
-
-static int __glXBindSwapBarrierSGIX(__GLXclientState *cl, GLbyte *pc);
-static int __glXQueryMaxSwapBarriersSGIX(__GLXclientState *cl, GLbyte *pc);
-static int __glxQueryHyperpipeNetworkSGIX(__GLXclientState *cl, GLbyte *pc);
-static int __glxDestroyHyperpipeConfigSGIX (__GLXclientState *cl, GLbyte *pc);
-static int __glxQueryHyperpipeConfigSGIX(__GLXclientState *cl, GLbyte *pc);
-static int __glxHyperpipeConfigSGIX(__GLXclientState *cl, GLbyte *pc);
-
/************************************************************************/
@@ -188,7 +176,7 @@ int DoCreateContext(__GLXclientState *cl, GLXContextID gcId,
shareglxc = (__GLXcontext *) LookupIDByType(shareList, __glXContextRes);
if (!shareglxc) {
client->errorValue = shareList;
- return __glXBadContext;
+ return __glXError(GLXBadContext);
}
if (shareglxc->isDirect) {
/*
@@ -255,7 +243,7 @@ int DoCreateContext(__GLXclientState *cl, GLXContextID gcId,
}
-int __glXCreateContext(__GLXclientState *cl, GLbyte *pc)
+int __glXDisp_CreateContext(__GLXclientState *cl, GLbyte *pc)
{
xGLXCreateContextReq *req = (xGLXCreateContextReq *) pc;
return DoCreateContext( cl, req->context, req->shareList, req->visual,
@@ -263,7 +251,7 @@ int __glXCreateContext(__GLXclientState *cl, GLbyte *pc)
}
-int __glXCreateNewContext(__GLXclientState *cl, GLbyte *pc)
+int __glXDisp_CreateNewContext(__GLXclientState *cl, GLbyte *pc)
{
xGLXCreateNewContextReq *req = (xGLXCreateNewContextReq *) pc;
return DoCreateContext( cl, req->context, req->shareList, req->fbconfig,
@@ -271,7 +259,7 @@ int __glXCreateNewContext(__GLXclientState *cl, GLbyte *pc)
}
-int __glXCreateContextWithConfigSGIX(__GLXclientState *cl, GLbyte *pc)
+int __glXDisp_CreateContextWithConfigSGIX(__GLXclientState *cl, GLbyte *pc)
{
xGLXCreateContextWithConfigSGIXReq *req =
(xGLXCreateContextWithConfigSGIXReq *) pc;
@@ -282,7 +270,7 @@ int __glXCreateContextWithConfigSGIX(__GLXclientState *cl, GLbyte *pc)
/*
** Destroy a GL context as an X resource.
*/
-int __glXDestroyContext(__GLXclientState *cl, GLbyte *pc)
+int __glXDisp_DestroyContext(__GLXclientState *cl, GLbyte *pc)
{
ClientPtr client = cl->client;
xGLXDestroyContextReq *req = (xGLXDestroyContextReq *) pc;
@@ -301,7 +289,7 @@ int __glXDestroyContext(__GLXclientState *cl, GLbyte *pc)
return Success;
} else {
client->errorValue = gcId;
- return __glXBadContext;
+ return __glXError(GLXBadContext);
}
}
@@ -400,7 +388,7 @@ static void StartUsingContext(__GLXclientState *cl, __GLXcontext *glxc)
** Make an OpenGL context and drawable current.
*/
-int __glXMakeCurrent(__GLXclientState *cl, GLbyte *pc)
+int __glXDisp_MakeCurrent(__GLXclientState *cl, GLbyte *pc)
{
xGLXMakeCurrentReq *req = (xGLXMakeCurrentReq *) pc;
@@ -408,7 +396,7 @@ int __glXMakeCurrent(__GLXclientState *cl, GLbyte *pc)
req->context, req->oldContextTag );
}
-int __glXMakeContextCurrent(__GLXclientState *cl, GLbyte *pc)
+int __glXDisp_MakeContextCurrent(__GLXclientState *cl, GLbyte *pc)
{
xGLXMakeContextCurrentReq *req = (xGLXMakeContextCurrentReq *) pc;
@@ -416,7 +404,7 @@ int __glXMakeContextCurrent(__GLXclientState *cl, GLbyte *pc)
req->context, req->oldContextTag );
}
-int __glXMakeCurrentReadSGI(__GLXclientState *cl, GLbyte *pc)
+int __glXDisp_MakeCurrentReadSGI(__GLXclientState *cl, GLbyte *pc)
{
xGLXMakeCurrentReadSGIReq *req = (xGLXMakeCurrentReadSGIReq *) pc;
@@ -445,61 +433,96 @@ int __glXMakeCurrentReadSGI(__GLXclientState *cl, GLbyte *pc)
* is added.
*/
static int GetDrawableOrPixmap( __GLXcontext *glxc, GLXDrawable drawId,
- DrawablePtr *ppDraw, __GLXpixmap **ppPixmap,
+ __GLXdrawable **ppGlxDraw,
+ __GLXpixmap **ppPixmap,
ClientPtr client )
{
DrawablePtr pDraw;
+ __GLcontextModes *modes;
+ __GLXdrawable *pGlxDraw;
__GLXpixmap *drawPixmap = NULL;
+ int rc;
+
+ /* This is the GLX 1.3 case - the client passes in a GLXWindow and
+ * we just return the __GLXdrawable. The first time a GLXPixmap
+ * comes in, it doesn't have a corresponding __GLXdrawable, so it
+ * falls through to the else-case below, but after that it'll have
+ * a __GLXdrawable and we'll handle it here. */
+ pGlxDraw = (__GLXdrawable *) LookupIDByType(drawId, __glXDrawableRes);
+ if (pGlxDraw != NULL) {
+ if (glxc != NULL && pGlxDraw->modes != glxc->modes) {
+ client->errorValue = drawId;
+ return BadMatch;
+ }
+
+ *ppGlxDraw = pGlxDraw;
+ *ppPixmap = pGlxDraw->pGlxPixmap;
+ return Success;
+ }
- pDraw = (DrawablePtr) LookupDrawable(drawId, client);
- if (pDraw) {
+ /* The drawId wasn't a GLXWindow, so presumably it's a regular X
+ * window. In that case, we create a shadow GLXWindow for it on
+ * demand here for pre GLX 1.3 compatibility and use the X Window
+ * XID as its GLXWindow XID. The client can't explicitly create a
+ * GLXWindow with the same XID as an X Window, so we wont get any
+ * resource ID clashes. Effectively, the X Window is now also a
+ * GLXWindow. */
+ rc = dixLookupDrawable(&pDraw, drawId, client, 0, DixUnknownAccess);
+ if (rc == Success) {
if (pDraw->type == DRAWABLE_WINDOW) {
- /*
- ** Drawable is an X Window.
- */
- WindowPtr pWin = (WindowPtr)pDraw;
- VisualID vid = wVisual(pWin);
+ VisualID vid = wVisual((WindowPtr)pDraw);
- /*
- ** Check if window and context are similar.
- */
- if ((vid != glxc->pVisual->vid) ||
- (pWin->drawable.pScreen != glxc->pScreen)) {
- client->errorValue = drawId;
- return BadMatch;
- }
+ modes = _gl_context_modes_find_visual(glxc->pGlxScreen->modes,
+ vid);
} 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;
+ return __glXError(GLXBadDrawable);
}
} else {
drawPixmap = (__GLXpixmap *) LookupIDByType(drawId, __glXPixmapRes);
if (drawPixmap) {
- /*
- ** Check if pixmap and context are similar.
- */
- if (drawPixmap->pScreen != glxc->pScreen ||
- drawPixmap->modes->visualID != glxc->modes->visualID) {
- client->errorValue = drawId;
- return BadMatch;
- }
pDraw = drawPixmap->pDraw;
-
+ modes = drawPixmap->modes;
} else {
/*
** Drawable is neither a Window nor a GLXPixmap.
*/
client->errorValue = drawId;
- return __glXBadDrawable;
+ return __glXError(GLXBadDrawable);
}
}
+ /* If we're not given a context, don't create the __GLXdrawable */
+ if (glxc == NULL) {
+ *ppPixmap = NULL;
+ *ppGlxDraw = NULL;
+ return Success;
+ }
+
+ /* We're binding an X Window or a GLX Pixmap for the first time
+ * and need to create a GLX drawable for it. First check that the
+ * drawable screen and fbconfig matches the context ditto. */
+ if (pDraw->pScreen != glxc->pScreen || modes != glxc->modes) {
+ client->errorValue = drawId;
+ return BadMatch;
+ }
+
+ pGlxDraw =
+ glxc->pGlxScreen->createDrawable(glxc->pGlxScreen,
+ pDraw, drawId, modes);
+
+ /* since we are creating the drawablePrivate, drawId should be new */
+ if (!AddResource(drawId, __glXDrawableRes, pGlxDraw)) {
+ pGlxDraw->destroy (pGlxDraw);
+ return BadAlloc;
+ }
+
*ppPixmap = drawPixmap;
- *ppDraw = pDraw;
+ *ppGlxDraw = pGlxDraw;
return 0;
}
@@ -510,8 +533,6 @@ int DoMakeCurrent( __GLXclientState *cl,
GLXContextID contextId, GLXContextTag tag )
{
ClientPtr client = cl->client;
- DrawablePtr pDraw;
- DrawablePtr pRead;
xGLXMakeCurrentReply reply;
__GLXpixmap *drawPixmap = NULL;
__GLXpixmap *readPixmap = NULL;
@@ -542,12 +563,12 @@ int DoMakeCurrent( __GLXclientState *cl,
/*
** Tag for previous context is invalid.
*/
- return __glXBadContextTag;
+ return __glXError(GLXBadContextTag);
}
if (prevglxc->renderMode != GL_RENDER) {
/* Oops. Not in render mode render. */
client->errorValue = prevglxc->id;
- return __glXBadContextState;
+ return __glXError(GLXBadContextState);
}
} else {
prevglxc = 0;
@@ -562,7 +583,7 @@ int DoMakeCurrent( __GLXclientState *cl,
glxc = (__GLXcontext *) LookupIDByType(contextId, __glXContextRes);
if (!glxc) {
client->errorValue = contextId;
- return __glXBadContext;
+ return __glXError(GLXBadContext);
}
if ((glxc != prevglxc) && glxc->isCurrent) {
/* Context is current to somebody else */
@@ -572,45 +593,27 @@ int DoMakeCurrent( __GLXclientState *cl,
assert( drawId != None );
assert( readId != None );
- status = GetDrawableOrPixmap( glxc, drawId, & pDraw, & drawPixmap,
- client );
+ status = GetDrawableOrPixmap(glxc, drawId, &drawPriv, &drawPixmap,
+ client);
if ( status != 0 ) {
return status;
}
if ( readId != drawId ) {
- status = GetDrawableOrPixmap( glxc, readId, & pRead, & readPixmap,
- client );
+ status = GetDrawableOrPixmap(glxc, readId, &readPriv, &readPixmap,
+ client);
if ( status != 0 ) {
return status;
}
} else {
- pRead = pDraw;
- }
-
- /* FIXME: Finish refactoring this. - idr */
- /* get the drawable private */
- if (pDraw) {
- drawPriv = __glXGetDrawable(glxc, pDraw, drawId);
- if (drawPriv == NULL) {
- return __glXBadDrawable;
- }
- }
-
- if (pRead != pDraw) {
- readPriv = __glXGetDrawable(glxc, pRead, readId);
- if (readPriv == NULL) {
- return __glXBadDrawable;
- }
- } else {
readPriv = drawPriv;
}
} else {
/* Switching to no context. Ignore new drawable. */
glxc = 0;
- pDraw = 0;
- pRead = 0;
+ drawPriv = 0;
+ readPriv = 0;
}
@@ -631,7 +634,7 @@ int DoMakeCurrent( __GLXclientState *cl,
** Make the previous context not current.
*/
if (!(*prevglxc->loseCurrent)(prevglxc)) {
- return __glXBadContext;
+ return __glXError(GLXBadContext);
}
__glXFlushContextCache();
__glXDeassociateContext(prevglxc);
@@ -647,7 +650,7 @@ int DoMakeCurrent( __GLXclientState *cl,
if (!(*glxc->makeCurrent)(glxc)) {
glxc->drawPriv = NULL;
glxc->readPriv = NULL;
- return __glXBadContext;
+ return __glXError(GLXBadContext);
}
/* resize the buffers */
@@ -656,7 +659,7 @@ int DoMakeCurrent( __GLXclientState *cl,
(*glxc->loseCurrent)(glxc);
glxc->drawPriv = NULL;
glxc->readPriv = NULL;
- return __glXBadContext;
+ return __glXError(GLXBadContext);
}
glxc->isCurrent = GL_TRUE;
@@ -737,7 +740,7 @@ int DoMakeCurrent( __GLXclientState *cl,
return Success;
}
-int __glXIsDirect(__GLXclientState *cl, GLbyte *pc)
+int __glXDisp_IsDirect(__GLXclientState *cl, GLbyte *pc)
{
ClientPtr client = cl->client;
xGLXIsDirectReq *req = (xGLXIsDirectReq *) pc;
@@ -750,7 +753,7 @@ int __glXIsDirect(__GLXclientState *cl, GLbyte *pc)
glxc = (__GLXcontext *) LookupIDByType(req->context, __glXContextRes);
if (!glxc) {
client->errorValue = req->context;
- return __glXBadContext;
+ return __glXError(GLXBadContext);
}
reply.isDirect = glxc->isDirect;
@@ -767,7 +770,7 @@ int __glXIsDirect(__GLXclientState *cl, GLbyte *pc)
return Success;
}
-int __glXQueryVersion(__GLXclientState *cl, GLbyte *pc)
+int __glXDisp_QueryVersion(__GLXclientState *cl, GLbyte *pc)
{
ClientPtr client = cl->client;
xGLXQueryVersionReq *req = (xGLXQueryVersionReq *) pc;
@@ -798,7 +801,7 @@ int __glXQueryVersion(__GLXclientState *cl, GLbyte *pc)
return Success;
}
-int __glXWaitGL(__GLXclientState *cl, GLbyte *pc)
+int __glXDisp_WaitGL(__GLXclientState *cl, GLbyte *pc)
{
xGLXWaitGLReq *req = (xGLXWaitGLReq *)pc;
int error;
@@ -810,7 +813,7 @@ int __glXWaitGL(__GLXclientState *cl, GLbyte *pc)
return Success;
}
-int __glXWaitX(__GLXclientState *cl, GLbyte *pc)
+int __glXDisp_WaitX(__GLXclientState *cl, GLbyte *pc)
{
xGLXWaitXReq *req = (xGLXWaitXReq *)pc;
int error;
@@ -827,7 +830,7 @@ int __glXWaitX(__GLXclientState *cl, GLbyte *pc)
return Success;
}
-int __glXCopyContext(__GLXclientState *cl, GLbyte *pc)
+int __glXDisp_CopyContext(__GLXclientState *cl, GLbyte *pc)
{
ClientPtr client = cl->client;
xGLXCopyContextReq *req = (xGLXCopyContextReq *) pc;
@@ -844,12 +847,12 @@ int __glXCopyContext(__GLXclientState *cl, GLbyte *pc)
src = (__GLXcontext *) LookupIDByType(source, __glXContextRes);
if (!src) {
client->errorValue = source;
- return __glXBadContext;
+ return __glXError(GLXBadContext);
}
dst = (__GLXcontext *) LookupIDByType(dest, __glXContextRes);
if (!dst) {
client->errorValue = dest;
- return __glXBadContext;
+ return __glXError(GLXBadContext);
}
/*
@@ -874,7 +877,7 @@ int __glXCopyContext(__GLXclientState *cl, GLbyte *pc)
__GLXcontext *tagcx = __glXLookupContextByTag(cl, tag);
if (!tagcx) {
- return __glXBadContextTag;
+ return __glXError(GLXBadContextTag);
}
if (tagcx != src) {
/*
@@ -998,7 +1001,7 @@ int DoGetVisualConfigs(__GLXclientState *cl, unsigned screen,
return Success;
}
-int __glXGetVisualConfigs(__GLXclientState *cl, GLbyte *pc)
+int __glXDisp_GetVisualConfigs(__GLXclientState *cl, GLbyte *pc)
{
xGLXGetVisualConfigsReq *req = (xGLXGetVisualConfigsReq *) pc;
return DoGetVisualConfigs( cl, req->screen, GL_FALSE );
@@ -1174,95 +1177,97 @@ int DoGetFBConfigs(__GLXclientState *cl, unsigned screen, GLboolean do_swap)
}
-int __glXGetFBConfigs(__GLXclientState *cl, GLbyte *pc)
+int __glXDisp_GetFBConfigs(__GLXclientState *cl, GLbyte *pc)
{
xGLXGetFBConfigsReq *req = (xGLXGetFBConfigsReq *) pc;
return DoGetFBConfigs( cl, req->screen, GL_FALSE );
}
-int __glXGetFBConfigsSGIX(__GLXclientState *cl, GLbyte *pc)
+int __glXDisp_GetFBConfigsSGIX(__GLXclientState *cl, GLbyte *pc)
{
xGLXGetFBConfigsSGIXReq *req = (xGLXGetFBConfigsSGIXReq *) pc;
return DoGetFBConfigs( cl, req->screen, GL_FALSE );
}
-
-/*
-** Create a GLX Pixmap from an X Pixmap.
-*/
-int DoCreateGLXPixmap(__GLXclientState *cl, VisualID visual,
- GLuint screenNum, XID pixmapId, XID glxpixmapId)
+static int ValidateCreateDrawable(ClientPtr client,
+ int screenNum, XID fbconfigId,
+ XID drawablId, XID glxDrawableId,
+ int type, __GLcontextModes **modes,
+ DrawablePtr *ppDraw)
{
- ClientPtr client = cl->client;
DrawablePtr pDraw;
ScreenPtr pScreen;
VisualPtr pVisual;
- __GLXpixmap *pGlxPixmap;
__GLXscreen *pGlxScreen;
- __GLcontextModes *modes;
- int i;
+ int i, rc;
- LEGAL_NEW_RESOURCE(glxpixmapId, client);
-
- pDraw = (DrawablePtr) LookupDrawable(pixmapId, client);
- if (!pDraw || pDraw->type != DRAWABLE_PIXMAP) {
- client->errorValue = pixmapId;
- return BadPixmap;
+ LEGAL_NEW_RESOURCE(glxDrawableId, client);
+
+ rc = dixLookupDrawable(&pDraw, drawablId, client, 0, DixUnknownAccess);
+ if (rc != Success || pDraw->type != type) {
+ client->errorValue = drawablId;
+ return type == DRAWABLE_WINDOW ? BadWindow : BadPixmap;
}
- /*
- ** Check if screen of visual matches screen of pixmap.
- */
+ /* Check if screen of the fbconfig matches screen of drawable. */
pScreen = pDraw->pScreen;
if (screenNum != pScreen->myNum) {
return BadMatch;
}
- /*
- ** Find the VisualRec for this visual.
- */
+ /* If this fbconfig has a corresponding VisualRec the number of
+ * planes must match the drawable depth. */
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) {
- return BadMatch;
+ for (i = 0; i < pScreen->numVisuals; i++, pVisual++) {
+ if (pVisual->vid == fbconfigId && pVisual->nplanes != pDraw->depth)
+ return BadMatch;
}
- /*
- ** Get configuration of the visual.
- */
- pGlxScreen = __glXActiveScreens[screenNum];
- modes = _gl_context_modes_find_visual( pGlxScreen->modes, visual );
- if (modes == NULL) {
- /*
- ** Visual not support on this screen by this OpenGL implementation.
- */
- client->errorValue = visual;
+ /* Get configuration of the visual. */
+ pGlxScreen = __glXgetActiveScreen(screenNum);
+ *modes = _gl_context_modes_find_visual(pGlxScreen->modes, fbconfigId);
+ if (*modes == NULL) {
+ /* Visual not support on this screen by this OpenGL implementation. */
+ client->errorValue = fbconfigId;
return BadValue;
}
+ *ppDraw = pDraw;
+
+ return Success;
+}
+
+/*
+** Create a GLX Pixmap from an X Pixmap.
+*/
+int DoCreateGLXPixmap(__GLXclientState *cl, XID fbconfigId,
+ GLuint screenNum, XID pixmapId, XID glxPixmapId)
+{
+ ClientPtr client = cl->client;
+ DrawablePtr pDraw;
+ __GLXpixmap *pGlxPixmap;
+ __GLcontextModes *modes;
+ int retval;
+
+ retval = ValidateCreateDrawable (client, screenNum, fbconfigId,
+ pixmapId, glxPixmapId,
+ DRAWABLE_PIXMAP, &modes, &pDraw);
+ if (retval != Success)
+ return retval;
+
pGlxPixmap = (__GLXpixmap *) xalloc(sizeof(__GLXpixmap));
if (!pGlxPixmap) {
return BadAlloc;
}
- if (!(AddResource(glxpixmapId, __glXPixmapRes, pGlxPixmap))) {
+ if (!(AddResource(glxPixmapId, __glXPixmapRes, pGlxPixmap))) {
return BadAlloc;
}
pGlxPixmap->pDraw = pDraw;
- pGlxPixmap->pGlxScreen = pGlxScreen;
- pGlxPixmap->pScreen = pScreen;
+ pGlxPixmap->pGlxScreen = __glXgetActiveScreen(screenNum);
+ pGlxPixmap->pScreen = pDraw->pScreen;
pGlxPixmap->idExists = True;
+ pGlxPixmap->pDamage = NULL;
pGlxPixmap->refcnt = 0;
pGlxPixmap->modes = modes;
@@ -1275,21 +1280,21 @@ int DoCreateGLXPixmap(__GLXclientState *cl, VisualID visual,
return Success;
}
-int __glXCreateGLXPixmap(__GLXclientState *cl, GLbyte *pc)
+int __glXDisp_CreateGLXPixmap(__GLXclientState *cl, GLbyte *pc)
{
xGLXCreateGLXPixmapReq *req = (xGLXCreateGLXPixmapReq *) pc;
return DoCreateGLXPixmap( cl, req->visual, req->screen,
req->pixmap, req->glxpixmap );
}
-int __glXCreatePixmap(__GLXclientState *cl, GLbyte *pc)
+int __glXDisp_CreatePixmap(__GLXclientState *cl, GLbyte *pc)
{
xGLXCreatePixmapReq *req = (xGLXCreatePixmapReq *) pc;
return DoCreateGLXPixmap( cl, req->fbconfig, req->screen,
req->pixmap, req->glxpixmap );
}
-int __glXCreateGLXPixmapWithConfigSGIX(__GLXclientState *cl, GLbyte *pc)
+int __glXDisp_CreateGLXPixmapWithConfigSGIX(__GLXclientState *cl, GLbyte *pc)
{
xGLXCreateGLXPixmapWithConfigSGIXReq *req =
(xGLXCreateGLXPixmapWithConfigSGIXReq *) pc;
@@ -1298,28 +1303,114 @@ int __glXCreateGLXPixmapWithConfigSGIX(__GLXclientState *cl, GLbyte *pc)
}
-/**
- * Destroy a GLX pixmap. This function is used for both
- * \c glXDestroyGLXPixmap and \c glXDestroyPixmap.
- */
-
-int __glXDestroyGLXPixmap(__GLXclientState *cl, GLbyte *pc)
+int DoDestroyPixmap(__GLXclientState *cl, XID glxpixmap)
{
ClientPtr client = cl->client;
- xGLXDestroyGLXPixmapReq *req = (xGLXDestroyGLXPixmapReq *) pc;
- XID glxpixmap = req->glxpixmap;
/*
** Check if it's a valid GLX pixmap.
*/
if (!LookupIDByType(glxpixmap, __glXPixmapRes)) {
client->errorValue = glxpixmap;
- return __glXBadPixmap;
+ return __glXError(GLXBadPixmap);
}
FreeResource(glxpixmap, FALSE);
+
+ return Success;
+}
+
+int __glXDisp_DestroyGLXPixmap(__GLXclientState *cl, GLbyte *pc)
+{
+ xGLXDestroyGLXPixmapReq *req = (xGLXDestroyGLXPixmapReq *) pc;
+
+ return DoDestroyPixmap(cl, req->glxpixmap);
+}
+
+int __glXDisp_DestroyPixmap(__GLXclientState *cl, GLbyte *pc)
+{
+ xGLXDestroyPixmapReq *req = (xGLXDestroyPixmapReq *) pc;
+
+ return DoDestroyPixmap(cl, req->glxpixmap);
+}
+
+int __glXDisp_CreatePbuffer(__GLXclientState *cl, GLbyte *pc)
+{
+ xGLXCreatePbufferReq *req = (xGLXCreatePbufferReq *) pc;
+
+ (void) req;
+
+ return BadRequest;
+}
+
+int __glXDisp_DestroyPbuffer(__GLXclientState *cl, GLbyte *pc)
+{
+ xGLXDestroyPbufferReq *req = (xGLXDestroyPbufferReq *) pc;
+
+ (void) req;
+
+ return BadRequest;
+}
+
+int __glXDisp_ChangeDrawableAttributes(__GLXclientState *cl, GLbyte *pc)
+{
+ xGLXChangeDrawableAttributesReq *req =
+ (xGLXChangeDrawableAttributesReq *) pc;
+
+ (void) req;
+
+ return BadRequest;
+}
+
+int __glXDisp_CreateWindow(__GLXclientState *cl, GLbyte *pc)
+{
+ xGLXCreateWindowReq *req = (xGLXCreateWindowReq *) pc;
+ ClientPtr client = cl->client;
+ DrawablePtr pDraw;
+ __GLXdrawable *glxPriv;
+ __GLXscreen *screen;
+ __GLcontextModes *modes;
+ int retval;
+
+ retval = ValidateCreateDrawable (client, req->screen, req->fbconfig,
+ req->window, req->glxwindow,
+ DRAWABLE_WINDOW, &modes, &pDraw);
+ if (retval != Success)
+ return retval;
+
+ /* FIXME: We need to check that the window visual is compatible
+ * with the specified fbconfig. */
+
+ screen = __glXgetActiveScreen(req->screen);
+ glxPriv = screen->createDrawable(screen, pDraw, req->glxwindow, modes);
+ if (glxPriv == NULL)
+ return BadAlloc;
+
+ if (!AddResource(req->glxwindow, __glXDrawableRes, glxPriv)) {
+ glxPriv->destroy (glxPriv);
+ return BadAlloc;
+ }
+
+ return Success;
+}
+
+int __glXDisp_DestroyWindow(__GLXclientState *cl, GLbyte *pc)
+{
+ xGLXDestroyWindowReq *req = (xGLXDestroyWindowReq *) pc;
+ ClientPtr client = cl->client;
+
+ /*
+ ** Check if it's a valid GLX window.
+ */
+ if (!LookupIDByType(req->glxwindow, __glXDrawableRes)) {
+ client->errorValue = req->glxwindow;
+ return __glXError(GLXBadWindow);
+ }
+ FreeResource(req->glxwindow, FALSE);
+
return Success;
}
+
/*****************************************************************************/
/*
@@ -1327,53 +1418,21 @@ int __glXDestroyGLXPixmap(__GLXclientState *cl, GLbyte *pc)
** this time that is of value. Consequently, this code must be
** implemented by somebody other than SGI.
*/
-int __glXSwapBuffers(__GLXclientState *cl, GLbyte *pc)
+int __glXDisp_SwapBuffers(__GLXclientState *cl, GLbyte *pc)
{
ClientPtr client = cl->client;
- DrawablePtr pDraw;
xGLXSwapBuffersReq *req = (xGLXSwapBuffersReq *) pc;
GLXContextTag tag = req->contextTag;
XID drawId = req->drawable;
- __GLXpixmap *pGlxPixmap;
__GLXcontext *glxc = NULL;
+ __GLXdrawable *pGlxDraw;
+ __GLXpixmap *pPixmap;
int error;
-
- /*
- ** Check that the GLX drawable is valid.
- */
- pDraw = (DrawablePtr) LookupDrawable(drawId, client);
- if (pDraw) {
- if (pDraw->type == DRAWABLE_WINDOW) {
- /*
- ** Drawable is an X window.
- */
- } else {
- /*
- ** Drawable is an X pixmap, which is not allowed.
- */
- client->errorValue = drawId;
- return __glXBadDrawable;
- }
- } else {
- pGlxPixmap = (__GLXpixmap *) LookupIDByType(drawId,
- __glXPixmapRes);
- if (pGlxPixmap) {
- /*
- ** Drawable is a GLX pixmap.
- */
- } else {
- /*
- ** 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;
+ return __glXError(GLXBadContextTag);
}
/*
** The calling thread is swapping its current drawable. In this case,
@@ -1392,47 +1451,31 @@ int __glXSwapBuffers(__GLXclientState *cl, GLbyte *pc)
}
}
- if (pDraw) {
- __GLXdrawable *glxPriv;
+ error = GetDrawableOrPixmap(glxc, drawId, &pGlxDraw, &pPixmap, client);
+ if (error != Success)
+ return error;
- if (glxc) {
- glxPriv = __glXGetDrawable(glxc, pDraw, drawId);
- if (glxPriv == NULL) {
- return __glXBadDrawable;
- }
- }
- else {
- glxPriv = __glXFindDrawable(drawId);
- if (glxPriv == NULL) {
- /* This is a window we've never seen before, do nothing */
- return Success;
- }
- }
-
- if ((*glxPriv->swapBuffers)(glxPriv) == GL_FALSE) {
- return __glXBadDrawable;
- }
- }
+ if (pGlxDraw != NULL && pGlxDraw->type == DRAWABLE_WINDOW &&
+ (*pGlxDraw->swapBuffers)(pGlxDraw) == GL_FALSE)
+ return __glXError(GLXBadDrawable);
return Success;
}
-int __glXQueryContextInfoEXT(__GLXclientState *cl, GLbyte *pc)
+int DoQueryContext(__GLXclientState *cl, GLXContextID gcId)
{
ClientPtr client = cl->client;
__GLXcontext *ctx;
- xGLXQueryContextInfoEXTReq *req;
xGLXQueryContextInfoEXTReply reply;
int nProps;
int *sendBuf, *pSendBuf;
int nReplyBytes;
- req = (xGLXQueryContextInfoEXTReq *)pc;
- ctx = (__GLXcontext *) LookupIDByType(req->context, __glXContextRes);
+ ctx = (__GLXcontext *) LookupIDByType(gcId, __glXContextRes);
if (!ctx) {
- client->errorValue = req->context;
- return __glXBadContext;
+ client->errorValue = gcId;
+ return __glXError(GLXBadContext);
}
nProps = 3;
@@ -1444,7 +1487,7 @@ int __glXQueryContextInfoEXT(__GLXclientState *cl, GLbyte *pc)
nReplyBytes = reply.length << 2;
sendBuf = (int *)xalloc((size_t)nReplyBytes);
if (sendBuf == NULL) {
- return __glXBadContext; /* XXX: Is this correct? */
+ return __glXError(GLXBadContext); /* XXX: Is this correct? */
}
pSendBuf = sendBuf;
*pSendBuf++ = GLX_SHARE_CONTEXT_EXT;
@@ -1465,8 +1508,21 @@ int __glXQueryContextInfoEXT(__GLXclientState *cl, GLbyte *pc)
return Success;
}
+int __glXDisp_QueryContextInfoEXT(__GLXclientState *cl, GLbyte *pc)
+{
+ xGLXQueryContextInfoEXTReq *req = (xGLXQueryContextInfoEXTReq *) pc;
-int __glXBindTexImageEXT(__GLXclientState *cl, GLbyte *pc)
+ return DoQueryContext(cl, req->context);
+}
+
+int __glXDisp_QueryContext(__GLXclientState *cl, GLbyte *pc)
+{
+ xGLXQueryContextReq *req = (xGLXQueryContextReq *) pc;
+
+ return DoQueryContext(cl, req->context);
+}
+
+int __glXDisp_BindTexImageEXT(__GLXclientState *cl, GLbyte *pc)
{
xGLXVendorPrivateReq *req = (xGLXVendorPrivateReq *) pc;
ClientPtr client = cl->client;
@@ -1482,7 +1538,7 @@ int __glXBindTexImageEXT(__GLXclientState *cl, GLbyte *pc)
buffer = *((INT32 *) (pc + 4));
if (buffer != GLX_FRONT_LEFT_EXT)
- return __glXBadPixmap;
+ return __glXError(GLXBadPixmap);
context = __glXForceCurrent (cl, req->contextTag, &error);
if (!context)
@@ -1491,18 +1547,18 @@ int __glXBindTexImageEXT(__GLXclientState *cl, GLbyte *pc)
pGlxPixmap = (__GLXpixmap *)LookupIDByType(drawId, __glXPixmapRes);
if (!pGlxPixmap) {
client->errorValue = drawId;
- return __glXBadPixmap;
+ return __glXError(GLXBadPixmap);
}
if (!context->textureFromPixmap)
- return __glXUnsupportedPrivateRequest;
+ return __glXError(GLXUnsupportedPrivateRequest);
return context->textureFromPixmap->bindTexImage(context,
buffer,
pGlxPixmap);
}
-int __glXReleaseTexImageEXT(__GLXclientState *cl, GLbyte *pc)
+int __glXDisp_ReleaseTexImageEXT(__GLXclientState *cl, GLbyte *pc)
{
xGLXVendorPrivateReq *req = (xGLXVendorPrivateReq *) pc;
ClientPtr client = cl->client;
@@ -1524,17 +1580,76 @@ int __glXReleaseTexImageEXT(__GLXclientState *cl, GLbyte *pc)
pGlxPixmap = (__GLXpixmap *)LookupIDByType(drawId, __glXPixmapRes);
if (!pGlxPixmap) {
client->errorValue = drawId;
- return __glXBadDrawable;
+ return __glXError(GLXBadDrawable);
}
if (!context->textureFromPixmap)
- return __glXUnsupportedPrivateRequest;
+ return __glXError(GLXUnsupportedPrivateRequest);
return context->textureFromPixmap->releaseTexImage(context,
buffer,
pGlxPixmap);
}
+int __glXDisp_CopySubBufferMESA(__GLXclientState *cl, GLbyte *pc)
+{
+ xGLXVendorPrivateReq *req = (xGLXVendorPrivateReq *) pc;
+ GLXContextTag tag = req->contextTag;
+ __GLXcontext *glxc = NULL;
+ __GLXdrawable *pGlxDraw;
+ __GLXpixmap *pPixmap;
+ ClientPtr client = cl->client;
+ GLXDrawable drawId;
+ int error;
+ int x, y, width, height;
+
+ (void) client;
+ (void) req;
+
+ pc += __GLX_VENDPRIV_HDR_SIZE;
+
+ drawId = *((CARD32 *) (pc));
+ x = *((INT32 *) (pc + 4));
+ y = *((INT32 *) (pc + 8));
+ width = *((INT32 *) (pc + 12));
+ height = *((INT32 *) (pc + 16));
+
+ if (tag) {
+ glxc = __glXLookupContextByTag(cl, tag);
+ if (!glxc) {
+ return __glXError(GLXBadContextTag);
+ }
+ /*
+ ** The calling thread is swapping its current drawable. In this case,
+ ** glxSwapBuffers is in both GL and X streams, in terms of
+ ** sequentiality.
+ */
+ if (__glXForceCurrent(cl, tag, &error)) {
+ /*
+ ** Do whatever is needed to make sure that all preceding requests
+ ** in both streams are completed before the swap is executed.
+ */
+ CALL_Finish( GET_DISPATCH(), () );
+ __GLX_NOTE_FLUSHED_CMDS(glxc);
+ } else {
+ return error;
+ }
+ }
+
+ error = GetDrawableOrPixmap(glxc, drawId, &pGlxDraw, &pPixmap, client);
+ if (error != Success)
+ return error;
+
+ if (pGlxDraw == NULL ||
+ pGlxDraw->type != DRAWABLE_WINDOW ||
+ pGlxDraw->copySubBuffer == NULL)
+ return __glXError(GLXBadDrawable);
+
+ (*pGlxDraw->copySubBuffer)(pGlxDraw, x, y, width, height);
+
+ return Success;
+}
+
/*
** Get drawable attributes
*/
@@ -1550,7 +1665,7 @@ DoGetDrawableAttributes(__GLXclientState *cl, XID drawId)
glxPixmap = (__GLXpixmap *)LookupIDByType(drawId, __glXPixmapRes);
if (!glxPixmap) {
client->errorValue = drawId;
- return __glXBadPixmap;
+ return __glXError(GLXBadPixmap);
}
numAttribs = 2;
@@ -1576,7 +1691,7 @@ DoGetDrawableAttributes(__GLXclientState *cl, XID drawId)
return Success;
}
-int __glXGetDrawableAttributesSGIX(__GLXclientState *cl, GLbyte *pc)
+int __glXDisp_GetDrawableAttributesSGIX(__GLXclientState *cl, GLbyte *pc)
{
xGLXVendorPrivateWithReplyReq *req = (xGLXVendorPrivateWithReplyReq *)pc;
CARD32 *data;
@@ -1588,6 +1703,13 @@ int __glXGetDrawableAttributesSGIX(__GLXclientState *cl, GLbyte *pc)
return DoGetDrawableAttributes(cl, drawable);
}
+int __glXDisp_GetDrawableAttributes(__GLXclientState *cl, GLbyte *pc)
+{
+ xGLXGetDrawableAttributesReq *req = (xGLXGetDrawableAttributesReq *)pc;
+
+ return DoGetDrawableAttributes(cl, req->drawable);
+}
+
/************************************************************************/
/*
@@ -1595,10 +1717,7 @@ int __glXGetDrawableAttributesSGIX(__GLXclientState *cl, GLbyte *pc)
** client library to send batches of GL rendering commands.
*/
-/*
-** Execute all the drawing commands in a request.
-*/
-int __glXRender(__GLXclientState *cl, GLbyte *pc)
+int DoRender(__GLXclientState *cl, GLbyte *pc, int do_swap)
{
xGLXRenderReq *req;
ClientPtr client= cl->client;
@@ -1607,14 +1726,15 @@ int __glXRender(__GLXclientState *cl, GLbyte *pc)
CARD16 opcode;
__GLXrenderHeader *hdr;
__GLXcontext *glxc;
+ __GLX_DECLARE_SWAP_VARIABLES;
- /*
- ** 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;
+ if (do_swap) {
+ __GLX_SWAP_SHORT(&req->length);
+ __GLX_SWAP_INT(&req->contextTag);
+ }
+
glxc = __glXForceCurrent(cl, req->contextTag, &error);
if (!glxc) {
return error;
@@ -1624,56 +1744,47 @@ int __glXRender(__GLXclientState *cl, GLbyte *pc)
pc += sz_xGLXRenderReq;
left = (req->length << 2) - sz_xGLXRenderReq;
while (left > 0) {
- __GLXrenderSizeData *entry;
+ __GLXrenderSizeData entry;
int extra;
- void (* proc)(GLbyte *);
+ __GLXdispatchRenderProcPtr proc;
+ int err;
/*
** Verify that the header length and the overall length agree.
** Also, each command must be word aligned.
*/
hdr = (__GLXrenderHeader *) pc;
+ if (do_swap) {
+ __GLX_SWAP_SHORT(&hdr->length);
+ __GLX_SWAP_SHORT(&hdr->opcode);
+ }
cmdlen = hdr->length;
opcode = hdr->opcode;
/*
** Check for core opcodes and grab entry data.
*/
- if ( (opcode >= __GLX_MIN_RENDER_OPCODE) &&
- (opcode <= __GLX_MAX_RENDER_OPCODE) ) {
- entry = &__glXRenderSizeTable[opcode];
- proc = __glXRenderTable[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) ) {
- entry =
- &__glXRenderSizeTable_EXT[opcode -
- __GLX_MIN_RENDER_OPCODE_EXT];
- proc = __glXRenderTable_EXT[opcode -
- __GLX_MIN_RENDER_OPCODE_EXT];
-#endif /* __GLX_MAX_RENDER_OPCODE_EXT > __GLX_MIN_RENDER_OPCODE_EXT */
- } else {
+ err = __glXGetProtocolSizeData(& Render_dispatch_info, opcode, & entry);
+ proc = (__GLXdispatchRenderProcPtr)
+ __glXGetProtocolDecodeFunction(& Render_dispatch_info, opcode, do_swap);
+
+ if ((err < 0) || (proc == NULL)) {
client->errorValue = commandsDone;
- return __glXBadRenderRequest;
+ return __glXError(GLXBadRenderRequest);
}
- if (!entry->bytes) {
- /* unused opcode */
- client->errorValue = commandsDone;
- return __glXBadRenderRequest;
- }
- if (entry->varsize) {
+ if (entry.varsize) {
/* variable size command */
- extra = (*entry->varsize)(pc + __GLX_RENDER_HDR_SIZE, False);
+ extra = (*entry.varsize)(pc + __GLX_RENDER_HDR_SIZE, do_swap);
if (extra < 0) {
extra = 0;
}
- if (cmdlen != __GLX_PAD(entry->bytes + extra)) {
+ if (cmdlen != __GLX_PAD(entry.bytes + extra)) {
return BadLength;
}
} else {
/* constant size command */
- if (cmdlen != __GLX_PAD(entry->bytes)) {
+ if (cmdlen != __GLX_PAD(entry.bytes)) {
return BadLength;
}
}
@@ -1698,26 +1809,34 @@ int __glXRender(__GLXclientState *cl, GLbyte *pc)
}
/*
-** Execute a large rendering request (one that spans multiple X requests).
+** Execute all the drawing commands in a request.
*/
-int __glXRenderLarge(__GLXclientState *cl, GLbyte *pc)
+int __glXDisp_Render(__GLXclientState *cl, GLbyte *pc)
+{
+ return DoRender(cl, pc, False);
+}
+
+int DoRenderLarge(__GLXclientState *cl, GLbyte *pc, int do_swap)
{
xGLXRenderLargeReq *req;
ClientPtr client= cl->client;
- GLuint dataBytes;
- void (*proc)(GLbyte *);
+ size_t dataBytes;
__GLXrenderLargeHeader *hdr;
__GLXcontext *glxc;
int error;
CARD16 opcode;
+ __GLX_DECLARE_SWAP_VARIABLES;
- /*
- ** 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;
+ if (do_swap) {
+ __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);
+ }
+
glxc = __glXForceCurrent(cl, req->contextTag, &error);
if (!glxc) {
/* Reset in case this isn't 1st request. */
@@ -1738,60 +1857,54 @@ int __glXRenderLarge(__GLXclientState *cl, GLbyte *pc)
pc += sz_xGLXRenderLargeReq;
if (cl->largeCmdRequestsSoFar == 0) {
- __GLXrenderSizeData *entry;
- int extra, cmdlen;
+ __GLXrenderSizeData entry;
+ int extra;
+ size_t cmdlen;
+ int err;
+
/*
** This is the first request of a multi request command.
** Make enough space in the buffer, then copy the entire request.
*/
if (req->requestNumber != 1) {
client->errorValue = req->requestNumber;
- return __glXBadLargeRequest;
+ return __glXError(GLXBadLargeRequest);
}
hdr = (__GLXrenderLargeHeader *) pc;
+ if (do_swap) {
+ __GLX_SWAP_INT(&hdr->length);
+ __GLX_SWAP_INT(&hdr->opcode);
+ }
cmdlen = hdr->length;
opcode = hdr->opcode;
/*
** Check for core opcodes and grab entry data.
*/
- if ( (opcode >= __GLX_MIN_RENDER_OPCODE) &&
- (opcode <= __GLX_MAX_RENDER_OPCODE) ) {
- entry = &__glXRenderSizeTable[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) ) {
- opcode -= __GLX_MIN_RENDER_OPCODE_EXT;
- entry = &__glXRenderSizeTable_EXT[opcode];
-#endif /* __GLX_MAX_RENDER_OPCODE_EXT > __GLX_MIN_RENDER_OPCODE_EXT */
- } else {
+ err = __glXGetProtocolSizeData(& Render_dispatch_info, opcode, & entry);
+ if (err < 0) {
client->errorValue = opcode;
- return __glXBadLargeRequest;
+ return __glXError(GLXBadLargeRequest);
}
- if (!entry->bytes) {
- /* unused opcode */
- client->errorValue = opcode;
- return __glXBadLargeRequest;
- }
- if (entry->varsize) {
+ if (entry.varsize) {
/*
** If it's a variable-size command (a command whose length must
** be computed from its parameters), all the parameters needed
** will be in the 1st request, so it's okay to do this.
*/
- extra = (*entry->varsize)(pc + __GLX_RENDER_LARGE_HDR_SIZE, False);
+ extra = (*entry.varsize)(pc + __GLX_RENDER_LARGE_HDR_SIZE, do_swap);
if (extra < 0) {
extra = 0;
}
/* large command's header is 4 bytes longer, so add 4 */
- if (cmdlen != __GLX_PAD(entry->bytes + 4 + extra)) {
+ if (cmdlen != __GLX_PAD(entry.bytes + 4 + extra)) {
return BadLength;
}
} else {
/* constant size command */
- if (cmdlen != __GLX_PAD(entry->bytes + 4)) {
+ if (cmdlen != __GLX_PAD(entry.bytes + 4)) {
return BadLength;
}
}
@@ -1800,10 +1913,9 @@ int __glXRenderLarge(__GLXclientState *cl, GLbyte *pc)
*/
if (cl->largeCmdBufSize < cmdlen) {
if (!cl->largeCmdBuf) {
- cl->largeCmdBuf = (GLbyte *) xalloc((size_t)cmdlen);
+ cl->largeCmdBuf = (GLbyte *) xalloc(cmdlen);
} else {
- cl->largeCmdBuf = (GLbyte *) xrealloc(cl->largeCmdBuf,
- (size_t)cmdlen);
+ cl->largeCmdBuf = (GLbyte *) xrealloc(cl->largeCmdBuf, cmdlen);
}
if (!cl->largeCmdBuf) {
return BadAlloc;
@@ -1830,12 +1942,12 @@ int __glXRenderLarge(__GLXclientState *cl, GLbyte *pc)
if (req->requestNumber != cl->largeCmdRequestsSoFar + 1) {
client->errorValue = req->requestNumber;
__glXResetLargeCommandStatus(cl);
- return __glXBadLargeRequest;
+ return __glXError(GLXBadLargeRequest);
}
if (req->requestTotal != cl->largeCmdRequestsTotal) {
client->errorValue = req->requestTotal;
__glXResetLargeCommandStatus(cl);
- return __glXBadLargeRequest;
+ return __glXError(GLXBadLargeRequest);
}
/*
@@ -1844,13 +1956,15 @@ int __glXRenderLarge(__GLXclientState *cl, GLbyte *pc)
if ((cl->largeCmdBytesSoFar + dataBytes) > cl->largeCmdBytesTotal) {
client->errorValue = dataBytes;
__glXResetLargeCommandStatus(cl);
- return __glXBadLargeRequest;
+ return __glXError(GLXBadLargeRequest);
}
memcpy(cl->largeCmdBuf + cl->largeCmdBytesSoFar, pc, dataBytes);
cl->largeCmdBytesSoFar += dataBytes;
cl->largeCmdRequestsSoFar++;
if (req->requestNumber == cl->largeCmdRequestsTotal) {
+ __GLXdispatchRenderProcPtr proc;
+
/*
** This is the last request; it must have enough bytes to complete
** the command.
@@ -1868,26 +1982,22 @@ int __glXRenderLarge(__GLXclientState *cl, GLbyte *pc)
__GLX_PAD(cl->largeCmdBytesTotal)) {
client->errorValue = dataBytes;
__glXResetLargeCommandStatus(cl);
- return __glXBadLargeRequest;
+ return __glXError(GLXBadLargeRequest);
}
hdr = (__GLXrenderLargeHeader *) cl->largeCmdBuf;
- opcode = hdr->opcode;
-
/*
+ ** The opcode and length field in the header had already been
+ ** swapped when the first request was received.
+ **
** Use the opcode to index into the procedure table.
*/
- if ( (opcode >= __GLX_MIN_RENDER_OPCODE) &&
- (opcode <= __GLX_MAX_RENDER_OPCODE) ) {
- proc = __glXRenderTable[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) ) {
- opcode -= __GLX_MIN_RENDER_OPCODE_EXT;
- proc = __glXRenderTable_EXT[opcode];
-#endif /* __GLX_MAX_RENDER_OPCODE_EXT > __GLX_MIN_RENDER_OPCODE_EXT */
- } else {
+ opcode = hdr->opcode;
+
+ proc = (__GLXdispatchRenderProcPtr)
+ __glXGetProtocolDecodeFunction(& Render_dispatch_info, opcode, do_swap);
+ if (proc == NULL) {
client->errorValue = opcode;
- return __glXBadLargeRequest;
+ return __glXError(GLXBadLargeRequest);
}
/*
@@ -1909,18 +2019,27 @@ int __glXRenderLarge(__GLXclientState *cl, GLbyte *pc)
}
}
+/*
+** Execute a large rendering request (one that spans multiple X requests).
+*/
+int __glXDisp_RenderLarge(__GLXclientState *cl, GLbyte *pc)
+{
+ return DoRenderLarge(cl, pc, False);
+}
+
extern RESTYPE __glXSwapBarrierRes;
-static int __glXBindSwapBarrierSGIX(__GLXclientState *cl, GLbyte *pc)
+int __glXDisp_BindSwapBarrierSGIX(__GLXclientState *cl, GLbyte *pc)
{
ClientPtr client = cl->client;
xGLXBindSwapBarrierSGIXReq *req = (xGLXBindSwapBarrierSGIXReq *) pc;
XID drawable = req->drawable;
int barrier = req->barrier;
- DrawablePtr pDraw = (DrawablePtr) LookupDrawable(drawable, client);
- int screen;
+ DrawablePtr pDraw;
+ int screen, rc;
- if (pDraw && (pDraw->type == DRAWABLE_WINDOW)) {
+ rc = dixLookupDrawable(&pDraw, drawable, client, 0, DixUnknownAccess);
+ if (rc == Success && (pDraw->type == DRAWABLE_WINDOW)) {
screen = pDraw->pScreen->myNum;
if (__glXSwapBarrierFuncs &&
__glXSwapBarrierFuncs[screen].bindSwapBarrierFunc) {
@@ -1937,11 +2056,11 @@ static int __glXBindSwapBarrierSGIX(__GLXclientState *cl, GLbyte *pc)
}
}
client->errorValue = drawable;
- return __glXBadDrawable;
+ return __glXError(GLXBadDrawable);
}
-static int __glXQueryMaxSwapBarriersSGIX(__GLXclientState *cl, GLbyte *pc)
+int __glXDisp_QueryMaxSwapBarriersSGIX(__GLXclientState *cl, GLbyte *pc)
{
ClientPtr client = cl->client;
xGLXQueryMaxSwapBarriersSGIXReq *req =
@@ -1972,7 +2091,7 @@ static int __glXQueryMaxSwapBarriersSGIX(__GLXclientState *cl, GLbyte *pc)
#define GLX_BAD_HYPERPIPE_SGIX 92
-static int __glxQueryHyperpipeNetworkSGIX(__GLXclientState *cl, GLbyte *pc)
+int __glXDisp_QueryHyperpipeNetworkSGIX(__GLXclientState *cl, GLbyte *pc)
{
ClientPtr client = cl->client;
xGLXQueryHyperpipeNetworkSGIXReq * req = (xGLXQueryHyperpipeNetworkSGIXReq *) pc;
@@ -2012,7 +2131,7 @@ static int __glxQueryHyperpipeNetworkSGIX(__GLXclientState *cl, GLbyte *pc)
return Success;
}
-static int __glxDestroyHyperpipeConfigSGIX (__GLXclientState *cl, GLbyte *pc)
+int __glXDisp_DestroyHyperpipeConfigSGIX (__GLXclientState *cl, GLbyte *pc)
{
ClientPtr client = cl->client;
xGLXDestroyHyperpipeConfigSGIXReq * req =
@@ -2047,7 +2166,7 @@ static int __glxDestroyHyperpipeConfigSGIX (__GLXclientState *cl, GLbyte *pc)
return Success;
}
-static int __glxQueryHyperpipeConfigSGIX(__GLXclientState *cl, GLbyte *pc)
+int __glXDisp_QueryHyperpipeConfigSGIX(__GLXclientState *cl, GLbyte *pc)
{
ClientPtr client = cl->client;
xGLXQueryHyperpipeConfigSGIXReq * req =
@@ -2091,7 +2210,7 @@ static int __glxQueryHyperpipeConfigSGIX(__GLXclientState *cl, GLbyte *pc)
return Success;
}
-static int __glxHyperpipeConfigSGIX(__GLXclientState *cl, GLbyte *pc)
+int __glXDisp_HyperpipeConfigSGIX(__GLXclientState *cl, GLbyte *pc)
{
ClientPtr client = cl->client;
xGLXHyperpipeConfigSGIXReq * req =
@@ -2142,106 +2261,44 @@ static int __glxHyperpipeConfigSGIX(__GLXclientState *cl, GLbyte *pc)
** allocating the entry points in the dispatch table.
*/
-int __glXVendorPrivate(__GLXclientState *cl, GLbyte *pc)
+int __glXDisp_VendorPrivate(__GLXclientState *cl, GLbyte *pc)
{
- xGLXVendorPrivateReq *req;
- GLint vendorcode;
+ xGLXVendorPrivateReq *req = (xGLXVendorPrivateReq *) pc;
+ GLint vendorcode = req->vendorCode;
+ __GLXdispatchVendorPrivProcPtr proc;
- req = (xGLXVendorPrivateReq *) pc;
- vendorcode = req->vendorCode;
-#ifndef __DARWIN__
- switch( vendorcode ) {
- case X_GLvop_SampleMaskSGIS:
- CALL_SampleMaskSGIS( GET_DISPATCH(),
- (*(GLfloat *)(pc + 4), *(GLboolean *)(pc + 8)) );
- return Success;
- case X_GLvop_SamplePatternSGIS:
- CALL_SamplePatternSGIS( GET_DISPATCH(), (*(GLenum *)(pc + 4)) );
+ proc = (__GLXdispatchVendorPrivProcPtr)
+ __glXGetProtocolDecodeFunction(& VendorPriv_dispatch_info,
+ vendorcode, 0);
+ if (proc != NULL) {
+ (*proc)(cl, (GLbyte*)req);
return Success;
- case X_GLXvop_BindSwapBarrierSGIX:
- return __glXBindSwapBarrierSGIX(cl, pc);
- case X_GLXvop_BindTexImageEXT:
- return __glXBindTexImageEXT(cl, pc);
- case X_GLXvop_ReleaseTexImageEXT:
- return __glXReleaseTexImageEXT(cl, pc);
}
-#endif
- if ((vendorcode >= __GLX_MIN_VENDPRIV_OPCODE_EXT) &&
- (vendorcode <= __GLX_MAX_VENDPRIV_OPCODE_EXT)) {
- (*__glXVendorPrivTable_EXT[vendorcode-__GLX_MIN_VENDPRIV_OPCODE_EXT])
- (cl, (GLbyte*)req);
- return Success;
- }
- /*
- ** This sample implemention does not support any private requests.
- */
cl->client->errorValue = req->vendorCode;
- return __glXUnsupportedPrivateRequest;
-}
-
-int __glXVendorPrivateWithReply(__GLXclientState *cl, GLbyte *pc)
-{
- xGLXVendorPrivateWithReplyReq *req;
- GLint vendorcode;
-
- req = (xGLXVendorPrivateWithReplyReq *) pc;
- vendorcode = req->vendorCode;
-
- switch (vendorcode) {
- case X_GLXvop_QueryContextInfoEXT:
- return __glXQueryContextInfoEXT(cl, pc);
- case X_GLXvop_MakeCurrentReadSGI:
- return __glXMakeCurrentReadSGI(cl, pc);
- case X_GLXvop_QueryMaxSwapBarriersSGIX:
- return __glXQueryMaxSwapBarriersSGIX(cl, pc);
- case X_GLXvop_QueryHyperpipeNetworkSGIX:
- return __glxQueryHyperpipeNetworkSGIX(cl, pc);
- case X_GLXvop_QueryHyperpipeConfigSGIX:
- return __glxQueryHyperpipeConfigSGIX(cl, pc);
- case X_GLXvop_DestroyHyperpipeConfigSGIX:
- return __glxDestroyHyperpipeConfigSGIX(cl, pc);
- case X_GLXvop_HyperpipeConfigSGIX:
- return __glxHyperpipeConfigSGIX(cl, pc);
- case X_GLXvop_GetFBConfigsSGIX:
- return __glXGetFBConfigsSGIX(cl, pc);
- case X_GLXvop_CreateContextWithConfigSGIX:
- return __glXCreateContextWithConfigSGIX(cl, pc);
- case X_GLXvop_CreateGLXPixmapWithConfigSGIX:
- return __glXCreateGLXPixmapWithConfigSGIX(cl, pc);
- case X_GLXvop_GetDrawableAttributesSGIX:
- return __glXGetDrawableAttributesSGIX(cl, pc);
- case X_GLvop_IsRenderbufferEXT:
- return __glXDisp_IsRenderbufferEXT(cl, pc);
- case X_GLvop_GenRenderbuffersEXT:
- return __glXDisp_GenRenderbuffersEXT(cl, pc);
- case X_GLvop_GetRenderbufferParameterivEXT:
- return __glXDisp_GetRenderbufferParameterivEXT(cl, pc);
- case X_GLvop_IsFramebufferEXT:
- return __glXDisp_IsFramebufferEXT(cl, pc);
- case X_GLvop_GenFramebuffersEXT:
- return __glXDisp_GenFramebuffersEXT(cl, pc);
- case X_GLvop_CheckFramebufferStatusEXT:
- return __glXDisp_CheckFramebufferStatusEXT(cl, pc);
- case X_GLvop_GetFramebufferAttachmentParameterivEXT:
- return __glXDisp_GetFramebufferAttachmentParameterivEXT(cl, pc);
- default:
- break;
- }
-
- if ((vendorcode >= __GLX_MIN_VENDPRIV_OPCODE_EXT) &&
- (vendorcode <= __GLX_MAX_VENDPRIV_OPCODE_EXT)) {
- return
- (*__glXVendorPrivTable_EXT[vendorcode-__GLX_MIN_VENDPRIV_OPCODE_EXT])
- (cl, (GLbyte*)req);
+ return __glXError(GLXUnsupportedPrivateRequest);
+}
+
+int __glXDisp_VendorPrivateWithReply(__GLXclientState *cl, GLbyte *pc)
+{
+ xGLXVendorPrivateReq *req = (xGLXVendorPrivateReq *) pc;
+ GLint vendorcode = req->vendorCode;
+ __GLXdispatchVendorPrivProcPtr proc;
+
+
+ proc = (__GLXdispatchVendorPrivProcPtr)
+ __glXGetProtocolDecodeFunction(& VendorPriv_dispatch_info,
+ vendorcode, 0);
+ if (proc != NULL) {
+ return (*proc)(cl, (GLbyte*)req);
}
cl->client->errorValue = vendorcode;
- return __glXUnsupportedPrivateRequest;
+ return __glXError(GLXUnsupportedPrivateRequest);
}
-int __glXQueryExtensionsString(__GLXclientState *cl, GLbyte *pc)
+int __glXDisp_QueryExtensionsString(__GLXclientState *cl, GLbyte *pc)
{
ClientPtr client = cl->client;
xGLXQueryExtensionsStringReq *req = (xGLXQueryExtensionsStringReq *) pc;
@@ -2286,7 +2343,7 @@ int __glXQueryExtensionsString(__GLXclientState *cl, GLbyte *pc)
return Success;
}
-int __glXQueryServerString(__GLXclientState *cl, GLbyte *pc)
+int __glXDisp_QueryServerString(__GLXclientState *cl, GLbyte *pc)
{
ClientPtr client = cl->client;
xGLXQueryServerStringReq *req = (xGLXQueryServerStringReq *) pc;
@@ -2344,7 +2401,7 @@ int __glXQueryServerString(__GLXclientState *cl, GLbyte *pc)
return Success;
}
-int __glXClientInfo(__GLXclientState *cl, GLbyte *pc)
+int __glXDisp_ClientInfo(__GLXclientState *cl, GLbyte *pc)
{
xGLXClientInfoReq *req = (xGLXClientInfoReq *) pc;
const char *buf;
@@ -2358,4 +2415,3 @@ int __glXClientInfo(__GLXclientState *cl, GLbyte *pc)
return Success;
}
-
diff --git a/GL/glx/glxcmdsswap.c b/GL/glx/glxcmdsswap.c
index 0f8b67496..d59dfdb4c 100644
--- a/GL/glx/glxcmdsswap.c
+++ b/GL/glx/glxcmdsswap.c
@@ -1,4 +1,3 @@
-/* $XFree86: xc/programs/Xserver/GL/glx/glxcmdsswap.c,v 1.10 2004/01/28 18:11:50 alanh Exp $ */
/*
** License Applicability. Except to the extent portions of this file are
** made subject to an alternative license as permitted in the SGI Free
@@ -45,8 +44,7 @@
#include "glxutil.h"
#include <GL/glxtokens.h>
#include <unpack.h>
-#include <g_disptab.h>
-#include <g_disptab_EXT.h>
+#include "g_disptab.h"
#include <pixmapstr.h>
#include <windowstr.h>
#include "glxext.h"
@@ -55,11 +53,9 @@
#include "glthread.h"
#include "dispatch.h"
#include "indirect_dispatch.h"
+#include "indirect_table.h"
+#include "indirect_util.h"
-static int __glXSwapGetFBConfigsSGIX(__GLXclientState *cl, GLbyte *pc);
-static int __glXSwapCreateContextWithConfigSGIX(__GLXclientState *cl, GLbyte *pc);
-static int __glXSwapCreateGLXPixmapWithConfigSGIX(__GLXclientState *cl, GLbyte *pc);
-static int __glXSwapMakeCurrentReadSGI(__GLXclientState *cl, GLbyte *pc);
/************************************************************************/
@@ -70,7 +66,7 @@ static int __glXSwapMakeCurrentReadSGI(__GLXclientState *cl, GLbyte *pc);
** it is called at the end of the unswapped routine.
*/
-int __glXSwapCreateContext(__GLXclientState *cl, GLbyte *pc)
+int __glXDispSwap_CreateContext(__GLXclientState *cl, GLbyte *pc)
{
xGLXCreateContextReq *req = (xGLXCreateContextReq *) pc;
__GLX_DECLARE_SWAP_VARIABLES;
@@ -85,7 +81,7 @@ int __glXSwapCreateContext(__GLXclientState *cl, GLbyte *pc)
req->screen, req->isDirect );
}
-int __glXSwapCreateNewContext(__GLXclientState *cl, GLbyte *pc)
+int __glXDispSwap_CreateNewContext(__GLXclientState *cl, GLbyte *pc)
{
xGLXCreateNewContextReq *req = (xGLXCreateNewContextReq *) pc;
__GLX_DECLARE_SWAP_VARIABLES;
@@ -101,7 +97,7 @@ int __glXSwapCreateNewContext(__GLXclientState *cl, GLbyte *pc)
req->screen, req->isDirect );
}
-int __glXSwapCreateContextWithConfigSGIX(__GLXclientState *cl, GLbyte *pc)
+int __glXDispSwap_CreateContextWithConfigSGIX(__GLXclientState *cl, GLbyte *pc)
{
xGLXCreateContextWithConfigSGIXReq *req =
(xGLXCreateContextWithConfigSGIXReq *) pc;
@@ -118,7 +114,7 @@ int __glXSwapCreateContextWithConfigSGIX(__GLXclientState *cl, GLbyte *pc)
req->screen, req->isDirect );
}
-int __glXSwapDestroyContext(__GLXclientState *cl, GLbyte *pc)
+int __glXDispSwap_DestroyContext(__GLXclientState *cl, GLbyte *pc)
{
xGLXDestroyContextReq *req = (xGLXDestroyContextReq *) pc;
__GLX_DECLARE_SWAP_VARIABLES;
@@ -126,10 +122,10 @@ int __glXSwapDestroyContext(__GLXclientState *cl, GLbyte *pc)
__GLX_SWAP_SHORT(&req->length);
__GLX_SWAP_INT(&req->context);
- return __glXDestroyContext(cl, pc);
+ return __glXDisp_DestroyContext(cl, pc);
}
-int __glXSwapMakeCurrent(__GLXclientState *cl, GLbyte *pc)
+int __glXDispSwap_MakeCurrent(__GLXclientState *cl, GLbyte *pc)
{
xGLXMakeCurrentReq *req = (xGLXMakeCurrentReq *) pc;
__GLX_DECLARE_SWAP_VARIABLES;
@@ -143,7 +139,7 @@ int __glXSwapMakeCurrent(__GLXclientState *cl, GLbyte *pc)
req->context, req->oldContextTag );
}
-int __glXSwapMakeContextCurrent(__GLXclientState *cl, GLbyte *pc)
+int __glXDispSwap_MakeContextCurrent(__GLXclientState *cl, GLbyte *pc)
{
xGLXMakeContextCurrentReq *req = (xGLXMakeContextCurrentReq *) pc;
__GLX_DECLARE_SWAP_VARIABLES;
@@ -158,7 +154,7 @@ int __glXSwapMakeContextCurrent(__GLXclientState *cl, GLbyte *pc)
req->context, req->oldContextTag );
}
-int __glXSwapMakeCurrentReadSGI(__GLXclientState *cl, GLbyte *pc)
+int __glXDispSwap_MakeCurrentReadSGI(__GLXclientState *cl, GLbyte *pc)
{
xGLXMakeCurrentReadSGIReq *req = (xGLXMakeCurrentReadSGIReq *) pc;
__GLX_DECLARE_SWAP_VARIABLES;
@@ -173,7 +169,7 @@ int __glXSwapMakeCurrentReadSGI(__GLXclientState *cl, GLbyte *pc)
req->context, req->oldContextTag );
}
-int __glXSwapIsDirect(__GLXclientState *cl, GLbyte *pc)
+int __glXDispSwap_IsDirect(__GLXclientState *cl, GLbyte *pc)
{
xGLXIsDirectReq *req = (xGLXIsDirectReq *) pc;
__GLX_DECLARE_SWAP_VARIABLES;
@@ -181,10 +177,10 @@ int __glXSwapIsDirect(__GLXclientState *cl, GLbyte *pc)
__GLX_SWAP_SHORT(&req->length);
__GLX_SWAP_INT(&req->context);
- return __glXIsDirect(cl, pc);
+ return __glXDisp_IsDirect(cl, pc);
}
-int __glXSwapQueryVersion(__GLXclientState *cl, GLbyte *pc)
+int __glXDispSwap_QueryVersion(__GLXclientState *cl, GLbyte *pc)
{
xGLXQueryVersionReq *req = (xGLXQueryVersionReq *) pc;
__GLX_DECLARE_SWAP_VARIABLES;
@@ -193,10 +189,10 @@ int __glXSwapQueryVersion(__GLXclientState *cl, GLbyte *pc)
__GLX_SWAP_INT(&req->majorVersion);
__GLX_SWAP_INT(&req->minorVersion);
- return __glXQueryVersion(cl, pc);
+ return __glXDisp_QueryVersion(cl, pc);
}
-int __glXSwapWaitGL(__GLXclientState *cl, GLbyte *pc)
+int __glXDispSwap_WaitGL(__GLXclientState *cl, GLbyte *pc)
{
xGLXWaitGLReq *req = (xGLXWaitGLReq *) pc;
__GLX_DECLARE_SWAP_VARIABLES;
@@ -204,10 +200,10 @@ int __glXSwapWaitGL(__GLXclientState *cl, GLbyte *pc)
__GLX_SWAP_SHORT(&req->length);
__GLX_SWAP_INT(&req->contextTag);
- return __glXWaitGL(cl, pc);
+ return __glXDisp_WaitGL(cl, pc);
}
-int __glXSwapWaitX(__GLXclientState *cl, GLbyte *pc)
+int __glXDispSwap_WaitX(__GLXclientState *cl, GLbyte *pc)
{
xGLXWaitXReq *req = (xGLXWaitXReq *) pc;
__GLX_DECLARE_SWAP_VARIABLES;
@@ -215,10 +211,10 @@ int __glXSwapWaitX(__GLXclientState *cl, GLbyte *pc)
__GLX_SWAP_SHORT(&req->length);
__GLX_SWAP_INT(&req->contextTag);
- return __glXWaitX(cl, pc);
+ return __glXDisp_WaitX(cl, pc);
}
-int __glXSwapCopyContext(__GLXclientState *cl, GLbyte *pc)
+int __glXDispSwap_CopyContext(__GLXclientState *cl, GLbyte *pc)
{
xGLXCopyContextReq *req = (xGLXCopyContextReq *) pc;
__GLX_DECLARE_SWAP_VARIABLES;
@@ -228,10 +224,10 @@ int __glXSwapCopyContext(__GLXclientState *cl, GLbyte *pc)
__GLX_SWAP_INT(&req->dest);
__GLX_SWAP_INT(&req->mask);
- return __glXCopyContext(cl, pc);
+ return __glXDisp_CopyContext(cl, pc);
}
-int __glXSwapGetVisualConfigs(__GLXclientState *cl, GLbyte *pc)
+int __glXDispSwap_GetVisualConfigs(__GLXclientState *cl, GLbyte *pc)
{
xGLXGetVisualConfigsReq *req = (xGLXGetVisualConfigsReq *) pc;
__GLX_DECLARE_SWAP_VARIABLES;
@@ -240,7 +236,7 @@ int __glXSwapGetVisualConfigs(__GLXclientState *cl, GLbyte *pc)
return DoGetVisualConfigs( cl, req->screen, GL_TRUE );
}
-int __glXSwapGetFBConfigs(__GLXclientState *cl, GLbyte *pc)
+int __glXDispSwap_GetFBConfigs(__GLXclientState *cl, GLbyte *pc)
{
xGLXGetFBConfigsReq *req = (xGLXGetFBConfigsReq *) pc;
__GLX_DECLARE_SWAP_VARIABLES;
@@ -249,7 +245,7 @@ int __glXSwapGetFBConfigs(__GLXclientState *cl, GLbyte *pc)
return DoGetFBConfigs( cl, req->screen, GL_TRUE );
}
-int __glXSwapGetFBConfigsSGIX(__GLXclientState *cl, GLbyte *pc)
+int __glXDispSwap_GetFBConfigsSGIX(__GLXclientState *cl, GLbyte *pc)
{
xGLXGetFBConfigsSGIXReq *req = (xGLXGetFBConfigsSGIXReq *) pc;
__GLX_DECLARE_SWAP_VARIABLES;
@@ -258,7 +254,7 @@ int __glXSwapGetFBConfigsSGIX(__GLXclientState *cl, GLbyte *pc)
return DoGetFBConfigs( cl, req->screen, GL_TRUE );
}
-int __glXSwapCreateGLXPixmap(__GLXclientState *cl, GLbyte *pc)
+int __glXDispSwap_CreateGLXPixmap(__GLXclientState *cl, GLbyte *pc)
{
xGLXCreateGLXPixmapReq *req = (xGLXCreateGLXPixmapReq *) pc;
__GLX_DECLARE_SWAP_VARIABLES;
@@ -273,7 +269,7 @@ int __glXSwapCreateGLXPixmap(__GLXclientState *cl, GLbyte *pc)
req->pixmap, req->glxpixmap );
}
-int __glXSwapCreatePixmap(__GLXclientState *cl, GLbyte *pc)
+int __glXDispSwap_CreatePixmap(__GLXclientState *cl, GLbyte *pc)
{
xGLXCreatePixmapReq *req = (xGLXCreatePixmapReq *) pc;
__GLX_DECLARE_SWAP_VARIABLES;
@@ -288,7 +284,7 @@ int __glXSwapCreatePixmap(__GLXclientState *cl, GLbyte *pc)
req->pixmap, req->glxpixmap );
}
-int __glXSwapCreateGLXPixmapWithConfigSGIX(__GLXclientState *cl, GLbyte *pc)
+int __glXDispSwap_CreateGLXPixmapWithConfigSGIX(__GLXclientState *cl, GLbyte *pc)
{
xGLXCreateGLXPixmapWithConfigSGIXReq *req =
(xGLXCreateGLXPixmapWithConfigSGIXReq *) pc;
@@ -304,7 +300,7 @@ int __glXSwapCreateGLXPixmapWithConfigSGIX(__GLXclientState *cl, GLbyte *pc)
req->pixmap, req->glxpixmap );
}
-int __glXSwapDestroyGLXPixmap(__GLXclientState *cl, GLbyte *pc)
+int __glXDispSwap_DestroyGLXPixmap(__GLXclientState *cl, GLbyte *pc)
{
xGLXDestroyGLXPixmapReq *req = (xGLXDestroyGLXPixmapReq *) pc;
__GLX_DECLARE_SWAP_VARIABLES;
@@ -312,10 +308,72 @@ int __glXSwapDestroyGLXPixmap(__GLXclientState *cl, GLbyte *pc)
__GLX_SWAP_SHORT(&req->length);
__GLX_SWAP_INT(&req->glxpixmap);
- return __glXDestroyGLXPixmap(cl, pc);
+ return __glXDisp_DestroyGLXPixmap(cl, pc);
}
-int __glXSwapSwapBuffers(__GLXclientState *cl, GLbyte *pc)
+int __glXDispSwap_DestroyPixmap(__GLXclientState *cl, GLbyte *pc)
+{
+ xGLXDestroyGLXPixmapReq *req = (xGLXDestroyGLXPixmapReq *) pc;
+ __GLX_DECLARE_SWAP_VARIABLES;
+
+ __GLX_SWAP_SHORT(&req->length);
+ __GLX_SWAP_INT(&req->glxpixmap);
+
+ return __glXDisp_DestroyGLXPixmap(cl, pc);
+}
+
+int __glXDispSwap_QueryContext(__GLXclientState *cl, GLbyte *pc)
+{
+ xGLXQueryContextReq *req = (xGLXQueryContextReq *) pc;
+
+ (void) req;
+
+ return BadRequest;
+}
+
+int __glXDispSwap_CreatePbuffer(__GLXclientState *cl, GLbyte *pc)
+{
+ xGLXCreatePbufferReq *req = (xGLXCreatePbufferReq *) pc;
+
+ (void) req;
+
+ return BadRequest;
+}
+
+int __glXDispSwap_DestroyPbuffer(__GLXclientState *cl, GLbyte *pc)
+{
+ xGLXDestroyPbufferReq *req = (xGLXDestroyPbufferReq *) req;
+
+ return BadRequest;
+}
+
+int __glXDispSwap_ChangeDrawableAttributes(__GLXclientState *cl, GLbyte *pc)
+{
+ xGLXChangeDrawableAttributesReq *req =
+ (xGLXChangeDrawableAttributesReq *) req;
+
+ return BadRequest;
+}
+
+int __glXDispSwap_CreateWindow(__GLXclientState *cl, GLbyte *pc)
+{
+ xGLXCreateWindowReq *req = (xGLXCreateWindowReq *) pc;
+
+ (void) req;
+
+ return BadRequest;
+}
+
+int __glXDispSwap_DestroyWindow(__GLXclientState *cl, GLbyte *pc)
+{
+ xGLXDestroyWindowReq *req = (xGLXDestroyWindowReq *) pc;
+
+ (void) req;
+
+ return BadRequest;
+}
+
+int __glXDispSwap_SwapBuffers(__GLXclientState *cl, GLbyte *pc)
{
xGLXSwapBuffersReq *req = (xGLXSwapBuffersReq *) pc;
__GLX_DECLARE_SWAP_VARIABLES;
@@ -324,10 +382,10 @@ int __glXSwapSwapBuffers(__GLXclientState *cl, GLbyte *pc)
__GLX_SWAP_INT(&req->contextTag);
__GLX_SWAP_INT(&req->drawable);
- return __glXSwapBuffers(cl, pc);
+ return __glXDisp_SwapBuffers(cl, pc);
}
-int __glXSwapUseXFont(__GLXclientState *cl, GLbyte *pc)
+int __glXDispSwap_UseXFont(__GLXclientState *cl, GLbyte *pc)
{
xGLXUseXFontReq *req = (xGLXUseXFontReq *) pc;
__GLX_DECLARE_SWAP_VARIABLES;
@@ -339,11 +397,11 @@ int __glXSwapUseXFont(__GLXclientState *cl, GLbyte *pc)
__GLX_SWAP_INT(&req->count);
__GLX_SWAP_INT(&req->listBase);
- return __glXUseXFont(cl, pc);
+ return __glXDisp_UseXFont(cl, pc);
}
-int __glXSwapQueryExtensionsString(__GLXclientState *cl, GLbyte *pc)
+int __glXDispSwap_QueryExtensionsString(__GLXclientState *cl, GLbyte *pc)
{
xGLXQueryExtensionsStringReq *req = (xGLXQueryExtensionsStringReq *)pc;
__GLX_DECLARE_SWAP_VARIABLES;
@@ -351,10 +409,10 @@ int __glXSwapQueryExtensionsString(__GLXclientState *cl, GLbyte *pc)
__GLX_SWAP_SHORT(&req->length);
__GLX_SWAP_INT(&req->screen);
- return __glXQueryExtensionsString(cl, pc);
+ return __glXDisp_QueryExtensionsString(cl, pc);
}
-int __glXSwapQueryServerString(__GLXclientState *cl, GLbyte *pc)
+int __glXDispSwap_QueryServerString(__GLXclientState *cl, GLbyte *pc)
{
xGLXQueryServerStringReq *req = (xGLXQueryServerStringReq *)pc;
__GLX_DECLARE_SWAP_VARIABLES;
@@ -363,10 +421,10 @@ int __glXSwapQueryServerString(__GLXclientState *cl, GLbyte *pc)
__GLX_SWAP_INT(&req->screen);
__GLX_SWAP_INT(&req->name);
- return __glXQueryServerString(cl, pc);
+ return __glXDisp_QueryServerString(cl, pc);
}
-int __glXSwapClientInfo(__GLXclientState *cl, GLbyte *pc)
+int __glXDispSwap_ClientInfo(__GLXclientState *cl, GLbyte *pc)
{
xGLXClientInfoReq *req = (xGLXClientInfoReq *)pc;
__GLX_DECLARE_SWAP_VARIABLES;
@@ -376,10 +434,10 @@ int __glXSwapClientInfo(__GLXclientState *cl, GLbyte *pc)
__GLX_SWAP_INT(&req->minor);
__GLX_SWAP_INT(&req->numbytes);
- return __glXClientInfo(cl, pc);
+ return __glXDisp_ClientInfo(cl, pc);
}
-int __glXSwapQueryContextInfoEXT(__GLXclientState *cl, GLbyte *pc)
+int __glXDispSwap_QueryContextInfoEXT(__GLXclientState *cl, GLbyte *pc)
{
xGLXQueryContextInfoEXTReq *req = (xGLXQueryContextInfoEXTReq *) pc;
__GLX_DECLARE_SWAP_VARIABLES;
@@ -387,10 +445,10 @@ int __glXSwapQueryContextInfoEXT(__GLXclientState *cl, GLbyte *pc)
__GLX_SWAP_SHORT(&req->length);
__GLX_SWAP_INT(&req->context);
- return __glXQueryContextInfoEXT(cl, pc);
+ return __glXDisp_QueryContextInfoEXT(cl, pc);
}
-int __glXSwapBindTexImageEXT(__GLXclientState *cl, GLbyte *pc)
+int __glXDispSwap_BindTexImageEXT(__GLXclientState *cl, GLbyte *pc)
{
xGLXVendorPrivateReq *req = (xGLXVendorPrivateReq *) pc;
GLXDrawable *drawId;
@@ -408,10 +466,10 @@ int __glXSwapBindTexImageEXT(__GLXclientState *cl, GLbyte *pc)
__GLX_SWAP_INT(drawId);
__GLX_SWAP_INT(buffer);
- return __glXBindTexImageEXT(cl, (GLbyte *)pc);
+ return __glXDisp_BindTexImageEXT(cl, (GLbyte *)pc);
}
-int __glXSwapReleaseTexImageEXT(__GLXclientState *cl, GLbyte *pc)
+int __glXDispSwap_ReleaseTexImageEXT(__GLXclientState *cl, GLbyte *pc)
{
xGLXVendorPrivateReq *req = (xGLXVendorPrivateReq *) pc;
GLXDrawable *drawId;
@@ -429,10 +487,35 @@ int __glXSwapReleaseTexImageEXT(__GLXclientState *cl, GLbyte *pc)
__GLX_SWAP_INT(drawId);
__GLX_SWAP_INT(buffer);
- return __glXReleaseTexImageEXT(cl, (GLbyte *)pc);
+ return __glXDisp_ReleaseTexImageEXT(cl, (GLbyte *)pc);
}
-int __glXSwapGetDrawableAttributesSGIX(__GLXclientState *cl, GLbyte *pc)
+int __glXDispSwap_CopySubBufferMESA(__GLXclientState *cl, GLbyte *pc)
+{
+ xGLXVendorPrivateReq *req = (xGLXVendorPrivateReq *) pc;
+ GLXDrawable *drawId;
+ int *buffer;
+
+ (void) drawId;
+ (void) buffer;
+
+ __GLX_DECLARE_SWAP_VARIABLES;
+
+ pc += __GLX_VENDPRIV_HDR_SIZE;
+
+ __GLX_SWAP_SHORT(&req->length);
+ __GLX_SWAP_INT(&req->contextTag);
+ __GLX_SWAP_INT(pc);
+ __GLX_SWAP_INT(pc + 4);
+ __GLX_SWAP_INT(pc + 8);
+ __GLX_SWAP_INT(pc + 12);
+ __GLX_SWAP_INT(pc + 16);
+
+ return __glXDisp_CopySubBufferMESA(cl, pc);
+
+}
+
+int __glXDispSwap_GetDrawableAttributesSGIX(__GLXclientState *cl, GLbyte *pc)
{
xGLXVendorPrivateWithReplyReq *req = (xGLXVendorPrivateWithReplyReq *)pc;
CARD32 *data;
@@ -444,7 +527,19 @@ int __glXSwapGetDrawableAttributesSGIX(__GLXclientState *cl, GLbyte *pc)
__GLX_SWAP_INT(&req->contextTag);
__GLX_SWAP_INT(data);
- return __glXGetDrawableAttributesSGIX(cl, (GLbyte *)pc);
+ return __glXDisp_GetDrawableAttributesSGIX(cl, pc);
+}
+
+int __glXDispSwap_GetDrawableAttributes(__GLXclientState *cl, GLbyte *pc)
+{
+ xGLXGetDrawableAttributesReq *req = (xGLXGetDrawableAttributesReq *)pc;
+
+ __GLX_DECLARE_SWAP_VARIABLES;
+
+ __GLX_SWAP_SHORT(&req->length);
+ __GLX_SWAP_INT(&req->drawable);
+
+ return __glXDisp_GetDrawableAttributes(cl, pc);
}
@@ -543,325 +638,17 @@ void __glXSwapGetDrawableAttributesReply(ClientPtr client,
** client library to send batches of GL rendering commands.
*/
-int __glXSwapRender(__GLXclientState *cl, GLbyte *pc)
+int __glXDispSwap_Render(__GLXclientState *cl, GLbyte *pc)
{
- xGLXRenderReq *req;
- ClientPtr client= cl->client;
- int left, cmdlen, error;
- int commandsDone;
- CARD16 opcode;
- __GLXrenderHeader *hdr;
- __GLXcontext *cx;
- __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);
-
- cx = __glXForceCurrent(cl, req->contextTag, &error);
- if (!cx) {
- return error;
- }
-
- commandsDone = 0;
- pc += sz_xGLXRenderReq;
- left = (req->length << 2) - sz_xGLXRenderReq;
- while (left > 0) {
- __GLXrenderSizeData *entry;
- int extra;
- void (* proc)(GLbyte *);
-
- /*
- ** 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);
- cmdlen = hdr->length;
- opcode = hdr->opcode;
-
- if ( (opcode >= __GLX_MIN_RENDER_OPCODE) &&
- (opcode <= __GLX_MAX_RENDER_OPCODE) ) {
- entry = &__glXRenderSizeTable[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;
- entry = &__glXRenderSizeTable_EXT[index];
- proc = __glXSwapRenderTable_EXT[index];
-#endif /* __GLX_MAX_RENDER_OPCODE_EXT > __GLX_MIN_RENDER_OPCODE_EXT */
- } else {
- client->errorValue = commandsDone;
- return __glXBadRenderRequest;
- }
- if (!entry->bytes) {
- /* unused opcode */
- client->errorValue = commandsDone;
- return __glXBadRenderRequest;
- }
- if (entry->varsize) {
- /* variable size command */
- extra = (*entry->varsize)(pc + __GLX_RENDER_HDR_SIZE, True);
- if (extra < 0) {
- extra = 0;
- }
- if (cmdlen != __GLX_PAD(entry->bytes + extra)) {
- return BadLength;
- }
- } else {
- /* constant size command */
- if (cmdlen != __GLX_PAD(entry->bytes)) {
- return BadLength;
- }
- }
- if (left < cmdlen) {
- return BadLength;
- }
-
- /*
- ** Skip over the header and execute the command. We allow the
- ** caller to trash the command memory. This is useful especially
- ** for things that require double alignment - they can just shift
- ** the data towards lower memory (trashing the header) by 4 bytes
- ** and achieve the required alignment.
- */
- (*proc)(pc + __GLX_RENDER_HDR_SIZE);
- pc += cmdlen;
- left -= cmdlen;
- commandsDone++;
- }
- __GLX_NOTE_UNFLUSHED_CMDS(cx);
- return Success;
+ return DoRender(cl, pc, True);
}
/*
** Execute a large rendering request (one that spans multiple X requests).
*/
-int __glXSwapRenderLarge(__GLXclientState *cl, GLbyte *pc)
-{
- xGLXRenderLargeReq *req;
- ClientPtr client= cl->client;
- size_t dataBytes;
- void (*proc)(GLbyte *);
- __GLXrenderLargeHeader *hdr;
- __GLXcontext *cx;
- int error;
- CARD16 opcode;
- __GLX_DECLARE_SWAP_VARIABLES;
-
- /*
- ** NOTE: much of this code also appears in the nonswapping version of this
- ** routine, __glXRenderLarge(). Any changes made here should also be
- ** duplicated there.
- */
-
- 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);
- cx = __glXForceCurrent(cl, req->contextTag, &error);
- if (!cx) {
- /* Reset in case this isn't 1st request. */
- __glXResetLargeCommandStatus(cl);
- return error;
- }
- dataBytes = req->dataBytes;
-
- /*
- ** Check the request length.
- */
- if ((req->length << 2) != __GLX_PAD(dataBytes) + sz_xGLXRenderLargeReq) {
- client->errorValue = req->length;
- /* Reset in case this isn't 1st request. */
- __glXResetLargeCommandStatus(cl);
- return BadLength;
- }
- pc += sz_xGLXRenderLargeReq;
-
- if (cl->largeCmdRequestsSoFar == 0) {
- __GLXrenderSizeData *entry;
- int extra;
- size_t cmdlen;
- /*
- ** This is the first request of a multi request command.
- ** Make enough space in the buffer, then copy the entire request.
- */
- if (req->requestNumber != 1) {
- client->errorValue = req->requestNumber;
- return __glXBadLargeRequest;
- }
- hdr = (__GLXrenderLargeHeader *) pc;
- __GLX_SWAP_INT(&hdr->length);
- __GLX_SWAP_INT(&hdr->opcode);
- cmdlen = hdr->length;
- opcode = hdr->opcode;
-
- if ( (opcode >= __GLX_MIN_RENDER_OPCODE) &&
- (opcode <= __GLX_MAX_RENDER_OPCODE) ) {
- entry = &__glXRenderSizeTable[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;
- entry = &__glXRenderSizeTable_EXT[index];
- proc = __glXSwapRenderTable_EXT[index];
-#endif /* __GLX_MAX_RENDER_OPCODE_EXT > __GLX_MIN_RENDER_OPCODE_EXT */
- } else {
- client->errorValue = opcode;
- return __glXBadLargeRequest;
- }
-
- if (!entry->bytes) {
- /* unused opcode */
- client->errorValue = opcode;
- return __glXBadLargeRequest;
- }
- if (entry->varsize) {
- /*
- ** If it's a variable-size command (a command whose length must
- ** be computed from its parameters), all the parameters needed
- ** will be in the 1st request, so it's okay to do this.
- */
- extra = (*entry->varsize)(pc + __GLX_RENDER_LARGE_HDR_SIZE, True);
- if (extra < 0) {
- extra = 0;
- }
- /* large command's header is 4 bytes longer, so add 4 */
- if (cmdlen != __GLX_PAD(entry->bytes + 4 + extra)) {
- return BadLength;
- }
- } else {
- /* constant size command */
- if (cmdlen != __GLX_PAD(entry->bytes + 4)) {
- return BadLength;
- }
- }
- /*
- ** Make enough space in the buffer, then copy the entire request.
- */
- if (cl->largeCmdBufSize < cmdlen) {
- if (!cl->largeCmdBuf) {
- cl->largeCmdBuf = (GLbyte *) xalloc(cmdlen);
- } else {
- cl->largeCmdBuf = (GLbyte *) xrealloc(cl->largeCmdBuf, cmdlen);
- }
- if (!cl->largeCmdBuf) {
- return BadAlloc;
- }
- cl->largeCmdBufSize = cmdlen;
- }
- memcpy(cl->largeCmdBuf, pc, dataBytes);
-
- cl->largeCmdBytesSoFar = dataBytes;
- cl->largeCmdBytesTotal = cmdlen;
- cl->largeCmdRequestsSoFar = 1;
- cl->largeCmdRequestsTotal = req->requestTotal;
- return Success;
-
- } else {
- /*
- ** We are receiving subsequent (i.e. not the first) requests of a
- ** multi request command.
- */
-
- /*
- ** Check the request number and the total request count.
- */
- if (req->requestNumber != cl->largeCmdRequestsSoFar + 1) {
- client->errorValue = req->requestNumber;
- __glXResetLargeCommandStatus(cl);
- return __glXBadLargeRequest;
- }
- if (req->requestTotal != cl->largeCmdRequestsTotal) {
- client->errorValue = req->requestTotal;
- __glXResetLargeCommandStatus(cl);
- return __glXBadLargeRequest;
- }
-
- /*
- ** Check that we didn't get too much data.
- */
- if ((cl->largeCmdBytesSoFar + dataBytes) > cl->largeCmdBytesTotal) {
- client->errorValue = dataBytes;
- __glXResetLargeCommandStatus(cl);
- return __glXBadLargeRequest;
- }
- memcpy(cl->largeCmdBuf + cl->largeCmdBytesSoFar, pc, dataBytes);
- cl->largeCmdBytesSoFar += dataBytes;
- cl->largeCmdRequestsSoFar++;
-
- if (req->requestNumber == cl->largeCmdRequestsTotal) {
- /*
- ** This is the last request; it must have enough bytes to complete
- ** the command.
- */
- /* NOTE: the two pad macros have been added below; they are needed
- ** because the client library pads the total byte count, but not
- ** the per-request byte counts. The Protocol Encoding says the
- ** total byte count should not be padded, so a proposal will be
- ** made to the ARB to relax the padding constraint on the total
- ** byte count, thus preserving backward compatibility. Meanwhile,
- ** the padding done below fixes a bug that did not allow
- ** large commands of odd sizes to be accepted by the server.
- */
- if (__GLX_PAD(cl->largeCmdBytesSoFar) !=
- __GLX_PAD(cl->largeCmdBytesTotal)) {
- client->errorValue = dataBytes;
- __glXResetLargeCommandStatus(cl);
- return __glXBadLargeRequest;
- }
- hdr = (__GLXrenderLargeHeader *) cl->largeCmdBuf;
- /*
- ** The opcode and length field in the header had already been
- ** swapped when the first request was received.
- */
-
- /*
- ** Use the opcode to index into the procedure table.
- */
- 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;
- proc = __glXSwapRenderTable_EXT[index];
-#endif /* __GLX_MAX_RENDER_OPCODE_EXT > __GLX_MIN_RENDER_OPCODE_EXT */
- } else {
- client->errorValue = opcode;
- return __glXBadLargeRequest;
- }
-
- /*
- ** Skip over the header and execute the command.
- */
- (*proc)(cl->largeCmdBuf + __GLX_RENDER_LARGE_HDR_SIZE);
- __GLX_NOTE_UNFLUSHED_CMDS(cx);
-
- /*
- ** Reset for the next RenderLarge series.
- */
- __glXResetLargeCommandStatus(cl);
- } else {
- /*
- ** This is neither the first nor the last request.
- */
- }
- return Success;
- }
+int __glXDispSwap_RenderLarge(__GLXclientState *cl, GLbyte *pc)
+{
+ return DoRenderLarge(cl, pc, True);
}
/************************************************************************/
@@ -871,10 +658,11 @@ int __glXSwapRenderLarge(__GLXclientState *cl, GLbyte *pc)
** allocating these entry points in the dispatch table.
*/
-int __glXSwapVendorPrivate(__GLXclientState *cl, GLbyte *pc)
+int __glXDispSwap_VendorPrivate(__GLXclientState *cl, GLbyte *pc)
{
xGLXVendorPrivateReq *req;
GLint vendorcode;
+ __GLXdispatchVendorPrivProcPtr proc;
__GLX_DECLARE_SWAP_VARIABLES;
@@ -884,39 +672,24 @@ int __glXSwapVendorPrivate(__GLXclientState *cl, GLbyte *pc)
vendorcode = req->vendorCode;
-#ifndef __DARWIN__
- switch( vendorcode ) {
- case X_GLvop_SampleMaskSGIS:
- __GLX_SWAP_FLOAT(pc + 4);
- __GLX_SWAP_INT(pc + 8);
- CALL_SampleMaskSGIS( GET_DISPATCH(),
- (*(GLfloat *)(pc + 4), *(GLboolean *)(pc + 8)) );
+ proc = (__GLXdispatchVendorPrivProcPtr)
+ __glXGetProtocolDecodeFunction(& VendorPriv_dispatch_info,
+ vendorcode, 1);
+ if (proc != NULL) {
+ (*proc)(cl, (GLbyte*)req);
return Success;
- case X_GLvop_SamplePatternSGIS:
- __GLX_SWAP_INT(pc + 4);
- CALL_SamplePatternSGIS( GET_DISPATCH(), (*(GLenum *)(pc + 4)) );
- return Success;
- case X_GLXvop_BindTexImageEXT:
- return __glXSwapBindTexImageEXT(cl, pc);
- case X_GLXvop_ReleaseTexImageEXT:
- return __glXSwapReleaseTexImageEXT(cl, pc);
}
-#endif
-
- if ((vendorcode >= __GLX_MIN_VENDPRIV_OPCODE_EXT) &&
- (vendorcode <= __GLX_MAX_VENDPRIV_OPCODE_EXT)) {
- (*__glXSwapVendorPrivTable_EXT[vendorcode-__GLX_MIN_VENDPRIV_OPCODE_EXT])(cl, (GLbyte*)req);
- return Success;
- }
cl->client->errorValue = req->vendorCode;
- return __glXUnsupportedPrivateRequest;
+ return __glXError(GLXUnsupportedPrivateRequest);
}
-int __glXSwapVendorPrivateWithReply(__GLXclientState *cl, GLbyte *pc)
+
+int __glXDispSwap_VendorPrivateWithReply(__GLXclientState *cl, GLbyte *pc)
{
xGLXVendorPrivateWithReplyReq *req;
GLint vendorcode;
+ __GLXdispatchVendorPrivProcPtr proc;
__GLX_DECLARE_SWAP_VARIABLES;
@@ -926,42 +699,13 @@ int __glXSwapVendorPrivateWithReply(__GLXclientState *cl, GLbyte *pc)
vendorcode = req->vendorCode;
- switch (vendorcode) {
- case X_GLXvop_QueryContextInfoEXT:
- return __glXSwapQueryContextInfoEXT(cl, pc);
- case X_GLXvop_MakeCurrentReadSGI:
- return __glXSwapMakeCurrentReadSGI(cl, pc);
- case X_GLXvop_GetFBConfigsSGIX:
- return __glXSwapGetFBConfigsSGIX(cl, pc);
- case X_GLXvop_CreateContextWithConfigSGIX:
- return __glXSwapCreateContextWithConfigSGIX(cl, pc);
- case X_GLXvop_CreateGLXPixmapWithConfigSGIX:
- return __glXSwapCreateGLXPixmapWithConfigSGIX(cl, pc);
- case X_GLXvop_GetDrawableAttributesSGIX:
- return __glXSwapGetDrawableAttributesSGIX(cl, pc);
- case X_GLvop_IsRenderbufferEXT:
- return __glXDispSwap_IsRenderbufferEXT(cl, pc);
- case X_GLvop_GenRenderbuffersEXT:
- return __glXDispSwap_GenRenderbuffersEXT(cl, pc);
- case X_GLvop_GetRenderbufferParameterivEXT:
- return __glXDispSwap_GetRenderbufferParameterivEXT(cl, pc);
- case X_GLvop_IsFramebufferEXT:
- return __glXDispSwap_IsFramebufferEXT(cl, pc);
- case X_GLvop_GenFramebuffersEXT:
- return __glXDispSwap_GenFramebuffersEXT(cl, pc);
- case X_GLvop_CheckFramebufferStatusEXT:
- return __glXDispSwap_CheckFramebufferStatusEXT(cl, pc);
- case X_GLvop_GetFramebufferAttachmentParameterivEXT:
- return __glXDispSwap_GetFramebufferAttachmentParameterivEXT(cl, pc);
- default:
- break;
+ proc = (__GLXdispatchVendorPrivProcPtr)
+ __glXGetProtocolDecodeFunction(& VendorPriv_dispatch_info,
+ vendorcode, 1);
+ if (proc != NULL) {
+ return (*proc)(cl, (GLbyte*)req);
}
-
- if ((vendorcode >= __GLX_MIN_VENDPRIV_OPCODE_EXT) &&
- (vendorcode <= __GLX_MAX_VENDPRIV_OPCODE_EXT)) {
- return (*__glXSwapVendorPrivTable_EXT[vendorcode-__GLX_MIN_VENDPRIV_OPCODE_EXT])(cl, (GLbyte*)req);
- }
cl->client->errorValue = req->vendorCode;
- return __glXUnsupportedPrivateRequest;
+ return __glXError(GLXUnsupportedPrivateRequest);
}
diff --git a/GL/glx/glxcontext.h b/GL/glx/glxcontext.h
index d57745a25..a54e323cc 100644
--- a/GL/glx/glxcontext.h
+++ b/GL/glx/glxcontext.h
@@ -1,4 +1,3 @@
-/* $XFree86: xc/programs/Xserver/GL/glx/glxcontext.h,v 1.4 2002/02/22 21:45:07 dawes Exp $ */
#ifdef HAVE_DIX_CONFIG_H
#include <dix-config.h>
#endif
@@ -58,7 +57,7 @@ struct __GLXtextureFromPixmap {
struct __GLXcontext {
- void (*destroy) (__GLXcontext *context);
+ void (*destroy) (__GLXcontext *context);
int (*makeCurrent) (__GLXcontext *context);
int (*loseCurrent) (__GLXcontext *context);
int (*copy) (__GLXcontext *dst,
@@ -66,10 +65,6 @@ struct __GLXcontext {
unsigned long mask);
int (*forceCurrent) (__GLXcontext *context);
- __GLXdrawable *(*createDrawable)(__GLXcontext *context,
- DrawablePtr pDraw,
- XID drawId);
-
__GLXtextureFromPixmap *textureFromPixmap;
/*
diff --git a/GL/glx/glxdrawable.h b/GL/glx/glxdrawable.h
index 2d5d07a79..20e9b437f 100644
--- a/GL/glx/glxdrawable.h
+++ b/GL/glx/glxdrawable.h
@@ -1,4 +1,3 @@
-/* $XFree86: xc/programs/Xserver/GL/glx/glxdrawable.h,v 1.3 2001/03/21 16:29:36 dawes Exp $ */
#ifdef HAVE_DIX_CONFIG_H
#include <dix-config.h>
#endif
@@ -41,6 +40,8 @@
**
*/
+#include <damage.h>
+
typedef struct {
DrawablePtr pDraw;
@@ -49,13 +50,15 @@ typedef struct {
ScreenPtr pScreen;
Bool idExists;
int refcnt;
-
+ DamagePtr pDamage;
} __GLXpixmap;
struct __GLXdrawable {
void (*destroy)(__GLXdrawable *private);
GLboolean (*resize)(__GLXdrawable *private);
GLboolean (*swapBuffers)(__GLXdrawable *);
+ void (*copySubBuffer)(__GLXdrawable *drawable,
+ int x, int y, int w, int h);
/*
** list of drawable private structs
diff --git a/GL/glx/glxdri.c b/GL/glx/glxdri.c
index 4935b0aca..170662c7e 100644
--- a/GL/glx/glxdri.c
+++ b/GL/glx/glxdri.c
@@ -53,11 +53,11 @@
#include "glcontextmodes.h"
#include "g_disptab.h"
-#include "g_disptab_EXT.h"
#include "glapitable.h"
#include "glapi.h"
#include "glthread.h"
#include "dispatch.h"
+#include "extension_string.h"
#define STRINGIFY(macro_or_string) STRINGIFY_ARG (macro_or_string)
@@ -72,6 +72,11 @@ struct __GLXDRIscreen {
__DRIscreen driScreen;
void *driver;
+
+ xf86EnterVTProc *enterVT;
+ xf86LeaveVTProc *leaveVT;
+
+ unsigned char glx_enable_bits[__GLX_EXT_BYTES];
};
struct __GLXDRIcontext {
@@ -112,28 +117,54 @@ struct __GLXDRIdrawable {
* months ago. :(
* 20050727 - Gut all the old interfaces. This breaks compatability with
* any DRI driver built to any previous version.
+ * 20060314 - Added support for GLX_MESA_copy_sub_buffer.
*/
+
#define INTERNAL_VERSION 20050727
static const char CREATE_NEW_SCREEN_FUNC[] =
"__driCreateNewScreen_" STRINGIFY (INTERNAL_VERSION);
+/* The DRI driver entry point version wasn't bumped when the
+ * copySubBuffer functionality was added to the DRI drivers, but the
+ * functionality is still conditional on the value of the
+ * internal_api_version passed to __driCreateNewScreen. However, the
+ * screen constructor doesn't fail for a DRI driver that's older than
+ * the passed in version number, so there's no way we can know for
+ * sure that we can actually use the copySubBuffer functionality. But
+ * since the earliest (and at this point only) released mesa version
+ * (6.5) that uses the 20050727 entry point does have copySubBuffer,
+ * we'll just settle for that. We still have to pass in a higher to
+ * the screen constructor to enable the functionality.
+ */
+#define COPY_SUB_BUFFER_INTERNAL_VERSION 20060314
+
static void
__glXDRIleaveServer(void)
{
- int i;
-
- for (i = 0; i < screenInfo.numScreens; i++)
- DRIDoBlockHandler(i, NULL, NULL, NULL);
+ DRIBlockHandler(NULL, NULL, NULL);
}
static void
__glXDRIenterServer(void)
{
- int i;
+ DRIWakeupHandler(NULL, 0, NULL);
+}
- for (i = 0; i < screenInfo.numScreens; i++)
- DRIDoWakeupHandler(i, NULL, 0, NULL);
+/**
+ * \bug
+ * We're jumping through hoops here to get the DRIdrawable which the DRI
+ * driver tries to keep to it self... cf. FIXME in \c createDrawable.
+ */
+static void
+__glXDRIdrawableFoo(__GLXDRIdrawable *draw)
+{
+ __GLXDRIscreen * const screen =
+ (__GLXDRIscreen *) __glXgetActiveScreen(draw->base.pDraw->pScreen->myNum);
+
+ draw->driDrawable = (*screen->driScreen.getDrawable)(NULL,
+ draw->base.drawId,
+ screen->driScreen.private);
}
static void
@@ -160,16 +191,8 @@ static GLboolean
__glXDRIdrawableSwapBuffers(__GLXdrawable *basePrivate)
{
__GLXDRIdrawable *private = (__GLXDRIdrawable *) basePrivate;
- __GLXDRIscreen *screen;
- /* FIXME: We're jumping through hoops here to get the DRIdrawable
- * which the dri driver tries to keep to it self... cf. FIXME in
- * createDrawable. */
-
- screen = (__GLXDRIscreen *) __glXgetActiveScreen(private->base.pDraw->pScreen->myNum);
- private->driDrawable = (screen->driScreen.getDrawable)(NULL,
- private->base.drawId,
- screen->driScreen.private);
+ __glXDRIdrawableFoo(private);
(*private->driDrawable->swapBuffers)(NULL,
private->driDrawable->private);
@@ -177,48 +200,32 @@ __glXDRIdrawableSwapBuffers(__GLXdrawable *basePrivate)
return TRUE;
}
-static __GLXdrawable *
-__glXDRIcontextCreateDrawable(__GLXcontext *context,
- DrawablePtr pDraw,
- XID drawId)
+
+static int
+__glXDRIdrawableSwapInterval(__GLXdrawable *baseDrawable, int interval)
{
- __GLXDRIdrawable *private;
+ __GLXDRIdrawable *draw = (__GLXDRIdrawable *) baseDrawable;
- private = xalloc(sizeof *private);
- if (private == NULL)
- return NULL;
+ __glXDRIdrawableFoo(draw);
- memset(private, 0, sizeof *private);
+ draw->driDrawable->swap_interval = interval;
+ return 0;
+}
- if (!__glXDrawableInit(&private->base, context, pDraw, drawId)) {
- xfree(private);
- return NULL;
- }
- private->base.destroy = __glXDRIdrawableDestroy;
- private->base.resize = __glXDRIdrawableResize;
- private->base.swapBuffers = __glXDRIdrawableSwapBuffers;
-
-#if 0
- /* FIXME: It would only be natural that we called
- * driScreen->createNewDrawable here but the DRI drivers manage
- * them a little oddly. FIXME: describe this better.*/
-
- /* The last argument is 'attrs', which is used with pbuffers which
- * we currently don't support. */
+static void
+__glXDRIdrawableCopySubBuffer(__GLXdrawable *basePrivate,
+ int x, int y, int w, int h)
+{
+ __GLXDRIdrawable *private = (__GLXDRIdrawable *) basePrivate;
- glxPriv->driDrawable.private =
- (pGlxScreen->driScreen.createNewDrawable)(NULL, modes,
- drawId,
- &glxPriv->driDrawable,
- 0,
- NULL);
-#endif
+ __glXDRIdrawableFoo(private);
- return &private->base;
+ (*private->driDrawable->copySubBuffer)(NULL,
+ private->driDrawable->private,
+ x, y, w, h);
}
-
static void
__glXDRIcontextDestroy(__GLXcontext *baseContext)
{
@@ -296,24 +303,18 @@ glxCountBits(int word)
}
static void
-glxFillAlphaChannel (PixmapPtr pixmap)
+glxFillAlphaChannel (PixmapPtr pixmap, int x, int y, int width, int height)
{
- int i, j;
- CARD32 *pixels = (CARD32 *)pixmap->devPrivate.ptr;
+ int i;
+ CARD32 *p, *end, *pixels = (CARD32 *)pixmap->devPrivate.ptr;
CARD32 rowstride = pixmap->devKind / 4;
- CARD32 x, y;
-
- x = pixmap->drawable.x;
- y = pixmap->drawable.y;
- for (i = y; i < pixmap->drawable.height + y; ++i)
+ for (i = y; i < y + height; i++)
{
- for (j = x; j < pixmap->drawable.width + x; ++j)
- {
- int index = i * rowstride + j;
-
- pixels[index] |= 0xFF000000;
- }
+ p = &pixels[i * rowstride + x];
+ end = p + width;
+ while (p < end)
+ *p++ |= 0xFF000000;
}
}
@@ -326,7 +327,6 @@ glxFillAlphaChannel (PixmapPtr pixmap)
* - No fbconfig handling for TEXTURE_TARGET
* - No fbconfig exposure of Y inversion state
* - No GenerateMipmapEXT support (due to no FBO support)
- * - No damage tracking between binds
* - No support for anything but 16bpp and 32bpp-sparse pixmaps
*/
@@ -335,38 +335,108 @@ __glXDRIbindTexImage(__GLXcontext *baseContext,
int buffer,
__GLXpixmap *glxPixmap)
{
+ RegionPtr pRegion;
PixmapPtr pixmap;
int bpp;
- Bool npot;
+ GLenum target, format, type;
pixmap = (PixmapPtr) glxPixmap->pDraw;
- bpp = pixmap->drawable.depth >= 24 ? 4 : 2; /* XXX 24bpp packed, 8, etc */
-
+ if (!glxPixmap->pDamage) {
+ glxPixmap->pDamage = DamageCreate(NULL, NULL, DamageReportNone,
+ TRUE, glxPixmap->pScreen, NULL);
+ if (!glxPixmap->pDamage)
+ return BadAlloc;
+
+ DamageRegister ((DrawablePtr) pixmap, glxPixmap->pDamage);
+ pRegion = NULL;
+ } else {
+ pRegion = DamageRegion(glxPixmap->pDamage);
+ if (REGION_NIL(pRegion))
+ return Success;
+ }
+
+ /* XXX 24bpp packed, 8, etc */
+ if (pixmap->drawable.depth >= 24) {
+ bpp = 4;
+ format = GL_BGRA;
+ type =
+#if X_BYTE_ORDER == X_LITTLE_ENDIAN
+ GL_UNSIGNED_BYTE;
+#else
+ GL_UNSIGNED_INT_8_8_8_8_REV;
+#endif
+ } else {
+ bpp = 2;
+ format = GL_RGB;
+ type = GL_UNSIGNED_SHORT_5_6_5;
+ }
+
+ if (!(glxCountBits(pixmap->drawable.width) == 1 &&
+ glxCountBits(pixmap->drawable.height) == 1)
+ /* || strstr(CALL_GetString(GL_EXTENSIONS,
+ "GL_ARB_texture_non_power_of_two")) */)
+ target = GL_TEXTURE_RECTANGLE_ARB;
+ else
+ target = GL_TEXTURE_2D;
+
CALL_PixelStorei( GET_DISPATCH(), (GL_UNPACK_ROW_LENGTH,
- pixmap->devKind / bpp) );
- CALL_PixelStorei( GET_DISPATCH(), (GL_UNPACK_SKIP_ROWS,
- pixmap->drawable.y) );
- CALL_PixelStorei( GET_DISPATCH(), (GL_UNPACK_SKIP_PIXELS,
- pixmap->drawable.x) );
-
- if (pixmap->drawable.depth == 24)
- glxFillAlphaChannel(pixmap);
-
- npot = !(glxCountBits(pixmap->drawable.width) == 1 &&
- glxCountBits(pixmap->drawable.height) == 1) /* ||
- strstr(CALL_GetString(GL_EXTENSIONS,
- "GL_ARB_texture_non_power_of_two")) */ ;
-
- CALL_TexImage2D( GET_DISPATCH(),
- ( npot ? GL_TEXTURE_RECTANGLE_ARB : GL_TEXTURE_2D,
- 0,
- bpp == 4 ? 4 : 3,
- pixmap->drawable.width,
- pixmap->drawable.height,
- 0,
- bpp == 4 ? GL_BGRA : GL_RGB,
- bpp == 4 ? GL_UNSIGNED_BYTE : GL_UNSIGNED_SHORT_5_6_5,
- pixmap->devPrivate.ptr ) );
+ pixmap->devKind / bpp) );
+ if (pRegion == NULL)
+ {
+ if (pixmap->drawable.depth == 24)
+ glxFillAlphaChannel(pixmap,
+ pixmap->drawable.x,
+ pixmap->drawable.y,
+ pixmap->drawable.width,
+ pixmap->drawable.height);
+
+ CALL_PixelStorei( GET_DISPATCH(), (GL_UNPACK_SKIP_PIXELS,
+ pixmap->drawable.x) );
+ CALL_PixelStorei( GET_DISPATCH(), (GL_UNPACK_SKIP_ROWS,
+ pixmap->drawable.y) );
+
+ CALL_TexImage2D( GET_DISPATCH(),
+ (target,
+ 0,
+ bpp == 4 ? 4 : 3,
+ pixmap->drawable.width,
+ pixmap->drawable.height,
+ 0,
+ format,
+ type,
+ pixmap->devPrivate.ptr) );
+ } else {
+ int i, numRects;
+ BoxPtr p;
+
+ numRects = REGION_NUM_RECTS (pRegion);
+ p = REGION_RECTS (pRegion);
+ for (i = 0; i < numRects; i++)
+ {
+ if (pixmap->drawable.depth == 24)
+ glxFillAlphaChannel(pixmap,
+ pixmap->drawable.x + p[i].x1,
+ pixmap->drawable.y + p[i].y1,
+ p[i].x2 - p[i].x1,
+ p[i].y2 - p[i].y1);
+
+ CALL_PixelStorei( GET_DISPATCH(), (GL_UNPACK_SKIP_PIXELS,
+ pixmap->drawable.x + p[i].x1) );
+ CALL_PixelStorei( GET_DISPATCH(), (GL_UNPACK_SKIP_ROWS,
+ pixmap->drawable.y + p[i].y1) );
+
+ CALL_TexSubImage2D( GET_DISPATCH(),
+ (target,
+ 0,
+ p[i].x1, p[i].y1,
+ p[i].x2 - p[i].x1, p[i].y2 - p[i].y1,
+ format,
+ type,
+ pixmap->devPrivate.ptr) );
+ }
+ }
+
+ DamageEmpty(glxPixmap->pDamage);
return Success;
}
@@ -425,7 +495,6 @@ __glXDRIscreenCreateContext(__GLXscreen *baseScreen,
context->base.loseCurrent = __glXDRIcontextLoseCurrent;
context->base.copy = __glXDRIcontextCopy;
context->base.forceCurrent = __glXDRIcontextForceCurrent;
- context->base.createDrawable = __glXDRIcontextCreateDrawable;
context->base.textureFromPixmap = &__glXDRItextureFromPixmap;
@@ -440,6 +509,50 @@ __glXDRIscreenCreateContext(__GLXscreen *baseScreen,
return &context->base;
}
+static __GLXdrawable *
+__glXDRIscreenCreateDrawable(__GLXscreen *screen,
+ DrawablePtr pDraw,
+ XID drawId,
+ __GLcontextModes *modes)
+{
+ __GLXDRIdrawable *private;
+
+ private = xalloc(sizeof *private);
+ if (private == NULL)
+ return NULL;
+
+ memset(private, 0, sizeof *private);
+
+ if (!__glXDrawableInit(&private->base, screen, pDraw, drawId, modes)) {
+ xfree(private);
+ return NULL;
+ }
+
+ private->base.destroy = __glXDRIdrawableDestroy;
+ private->base.resize = __glXDRIdrawableResize;
+ private->base.swapBuffers = __glXDRIdrawableSwapBuffers;
+ private->base.copySubBuffer = __glXDRIdrawableCopySubBuffer;
+
+#if 0
+ /* FIXME: It would only be natural that we called
+ * driScreen->createNewDrawable here but the DRI drivers manage
+ * them a little oddly. FIXME: describe this better.*/
+
+ /* The last argument is 'attrs', which is used with pbuffers which
+ * we currently don't support. */
+
+ glxPriv->driDrawable.private =
+ (screen->driScreen.createNewDrawable)(NULL, modes,
+ drawId,
+ &glxPriv->driDrawable,
+ 0,
+ NULL);
+#endif
+
+ return &private->base;
+}
+
+
static unsigned
filter_modes(__GLcontextModes **server_modes,
const __GLcontextModes *driver_modes)
@@ -497,15 +610,27 @@ filter_modes(__GLcontextModes **server_modes,
}
+static void
+enable_glx_extension(void *psc, const char *ext_name)
+{
+ __GLXDRIscreen * const screen = (__GLXDRIscreen *) psc;
+
+ __glXEnableExtension(screen->glx_enable_bits, ext_name);
+}
+
+
static __DRIfuncPtr getProcAddress(const char *proc_name)
{
+ if (strcmp(proc_name, "glxEnableExtension") == 0) {
+ return (__DRIfuncPtr) enable_glx_extension;
+ }
+
return NULL;
}
static __DRIscreen *findScreen(__DRInativeDisplay *dpy, int scrn)
{
- __GLXDRIscreen *screen =
- (__GLXDRIscreen *) __glXgetActiveScreen(scrn);
+ __GLXDRIscreen *screen = (__GLXDRIscreen *) __glXgetActiveScreen(scrn);
return &screen->driScreen;
}
@@ -699,6 +824,30 @@ static const __DRIinterfaceMethods interface_methods = {
static const char dri_driver_path[] = DRI_DRIVER_PATH;
+static Bool
+glxDRIEnterVT (int index, int flags)
+{
+ __GLXDRIscreen *screen = (__GLXDRIscreen *) __glXgetActiveScreen(index);
+
+ LogMessage(X_INFO, "AIGLX: Resuming AIGLX clients after VT switch\n");
+
+ glxResumeClients();
+
+ return (*screen->enterVT) (index, flags);
+}
+
+static void
+glxDRILeaveVT (int index, int flags)
+{
+ __GLXDRIscreen *screen = (__GLXDRIscreen *) __glXgetActiveScreen(index);
+
+ LogMessage(X_INFO, "AIGLX: Suspending AIGLX clients for VT switch\n");
+
+ glxSuspendClients();
+
+ return (*screen->leaveVT) (index, flags);
+}
+
static __GLXscreen *
__glXDRIscreenProbe(ScreenPtr pScreen)
{
@@ -712,7 +861,7 @@ __glXDRIscreenProbe(ScreenPtr pScreen)
__DRIframebuffer framebuffer;
int fd = -1;
int status;
- int api_ver = INTERNAL_VERSION;
+ int api_ver = COPY_SUB_BUFFER_INTERNAL_VERSION;
drm_magic_t magic;
drmVersionPtr version;
char *driverName;
@@ -723,6 +872,8 @@ __glXDRIscreenProbe(ScreenPtr pScreen)
void *dev_priv = NULL;
char filename[128];
Bool isCapable;
+ size_t buffer_size;
+ ScrnInfoPtr pScrn = xf86Screens[pScreen->myNum];
if (!xf86LoaderCheckSymbol("DRIQueryDirectRenderingCapable")) {
LogMessage(X_ERROR, "AIGLX: DRI module not loaded\n");
@@ -740,10 +891,16 @@ __glXDRIscreenProbe(ScreenPtr pScreen)
return NULL;
memset(screen, 0, sizeof *screen);
- screen->base.destroy = __glXDRIscreenDestroy;
- screen->base.createContext = __glXDRIscreenCreateContext;
+ screen->base.destroy = __glXDRIscreenDestroy;
+ screen->base.createContext = __glXDRIscreenCreateContext;
+ screen->base.createDrawable = __glXDRIscreenCreateDrawable;
+ screen->base.swapInterval = __glXDRIdrawableSwapInterval;
screen->base.pScreen = pScreen;
+ __glXInitExtensionEnableBits(screen->glx_enable_bits);
+ screen->driScreen.screenConfigs = screen;
+
+
/* DRI protocol version. */
dri_version.major = XF86DRI_MAJOR_VERSION;
dri_version.minor = XF86DRI_MINOR_VERSION;
@@ -887,11 +1044,28 @@ __glXDRIscreenProbe(ScreenPtr pScreen)
__glXScreenInit(&screen->base, pScreen);
+ buffer_size = __glXGetExtensionString(screen->glx_enable_bits, NULL);
+ if (buffer_size > 0) {
+ if (screen->base.GLXextensions != NULL) {
+ xfree(screen->base.GLXextensions);
+ }
+
+ screen->base.GLXextensions = xnfalloc(buffer_size);
+ (void) __glXGetExtensionString(screen->glx_enable_bits,
+ screen->base.GLXextensions);
+ }
+
+
filter_modes(&screen->base.modes, driver_modes);
_gl_context_modes_destroy(driver_modes);
__glXsetEnterLeaveServerFuncs(__glXDRIenterServer, __glXDRIleaveServer);
+ screen->enterVT = pScrn->EnterVT;
+ pScrn->EnterVT = glxDRIEnterVT;
+ screen->leaveVT = pScrn->LeaveVT;
+ pScrn->LeaveVT = glxDRILeaveVT;
+
LogMessage(X_INFO,
"AIGLX: Loaded and initialized %s\n", filename);
diff --git a/GL/glx/glxerror.h b/GL/glx/glxerror.h
deleted file mode 100644
index 2c6d6d863..000000000
--- a/GL/glx/glxerror.h
+++ /dev/null
@@ -1,58 +0,0 @@
-/* $XFree86$ */
-#ifdef HAVE_DIX_CONFIG_H
-#include <dix-config.h>
-#endif
-
-#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 __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;
-
-#endif
diff --git a/GL/glx/glxext.c b/GL/glx/glxext.c
index c2a165efe..1f6c7f376 100644
--- a/GL/glx/glxext.c
+++ b/GL/glx/glxext.c
@@ -1,4 +1,4 @@
-/* $XFree86: xc/programs/Xserver/GL/glx/glxext.c,v 1.9 2003/09/28 20:15:43 alanh 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.,
@@ -32,8 +32,34 @@
#include "unpack.h"
#include "glxutil.h"
#include "glxext.h"
+#include "indirect_table.h"
+#include "indirect_util.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 __glXDrawableRes;
+RESTYPE __glXSwapBarrierRes;
+
+/*
+** Reply for most singles.
+*/
+xGLXSingleReply __glXReply;
-static Bool inDispatch;
+/*
+** A set of state for each client. The 0th one is unused because client
+** indices start at 1, not 0.
+*/
+static __GLXclientState *__glXClients[MAXCLIENTS + 1];
/*
** Forward declarations.
@@ -141,6 +167,10 @@ static int PixmapGone(__GLXpixmap *pGlxPixmap, XID id)
pGlxPixmap->idExists = False;
if (!pGlxPixmap->refcnt) {
+ if (pGlxPixmap->pDamage) {
+ DamageUnregister (pGlxPixmap->pDraw, pGlxPixmap->pDamage);
+ DamageDestroy(pGlxPixmap->pDamage);
+ }
/*
** The DestroyPixmap routine should decrement the refcount and free
** only if it's zero.
@@ -186,6 +216,10 @@ static Bool DrawableGone(__GLXdrawable *glxPriv, XID xid)
return True;
}
+static __GLXcontext *glxPendingDestroyContexts;
+static int glxServerLeaveCount;
+static int glxBlockClients;
+
/*
** Free a context.
*/
@@ -203,13 +237,14 @@ GLboolean __glXFreeContext(__GLXcontext *cx)
* __glXDispatch() or as a callback from the resource manager. In
* the latter case we need to lift the DRI lock manually. */
- if (!inDispatch)
- __glXleaveServer();
-
- cx->destroy(cx);
-
- if (!inDispatch)
- __glXenterServer();
+ if (!glxBlockClients) {
+ __glXleaveServer();
+ cx->destroy(cx);
+ __glXenterServer();
+ } else {
+ cx->next = glxPendingDestroyContexts;
+ glxPendingDestroyContexts = cx;
+ }
return GL_TRUE;
}
@@ -261,6 +296,13 @@ GLboolean __glXErrorOccured(void)
return errorOccured;
}
+static int __glXErrorBase;
+
+int __glXError(int error)
+{
+ return __glXErrorBase + error;
+}
+
/************************************************************************/
/*
@@ -270,11 +312,12 @@ void GlxExtensionInit(void)
{
ExtensionEntry *extEntry;
int i;
-
+
__glXContextRes = CreateNewResourceType((DeleteType)ContextGone);
__glXClientRes = CreateNewResourceType((DeleteType)ClientGone);
__glXPixmapRes = CreateNewResourceType((DeleteType)PixmapGone);
__glXDrawableRes = CreateNewResourceType((DeleteType)DrawableGone);
+ __glXSwapBarrierRes = CreateNewResourceType((DeleteType)SwapBarrierGone);
/*
** Add extension to server extensions.
@@ -292,23 +335,12 @@ void GlxExtensionInit(void)
return;
}
- __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;
-
- __glXSwapBarrierRes = CreateNewResourceType((DeleteType)SwapBarrierGone);
+ __glXErrorBase = extEntry->errorBase;
/*
** Initialize table of client state. There is never a client 0.
*/
- for (i=1; i <= MAXCLIENTS; i++) {
+ for (i = 1; i <= MAXCLIENTS; i++) {
__glXClients[i] = 0;
}
@@ -343,7 +375,7 @@ __GLXcontext *__glXForceCurrent(__GLXclientState *cl, GLXContextTag tag,
cx = (__GLXcontext *) __glXLookupContextByTag(cl, tag);
if (!cx) {
cl->client->errorValue = tag;
- *error = __glXBadContextTag;
+ *error = __glXError(GLXBadContextTag);
return 0;
}
@@ -354,7 +386,7 @@ __GLXcontext *__glXForceCurrent(__GLXclientState *cl, GLXContextTag tag,
** windows can be destroyed from under us; GLX pixmaps are
** refcounted and don't go away until no one is using them.
*/
- *error = __glXBadCurrentWindow;
+ *error = __glXError(GLXBadCurrentWindow);
return 0;
}
}
@@ -369,7 +401,7 @@ __GLXcontext *__glXForceCurrent(__GLXclientState *cl, GLXContextTag tag,
if (!(*cx->forceCurrent)(cx)) {
/* Bind failed, and set the error code. Bummer */
cl->client->errorValue = cx->id;
- *error = __glXBadContextState;
+ *error = __glXError(GLXBadContextState);
return 0;
}
}
@@ -379,11 +411,43 @@ __GLXcontext *__glXForceCurrent(__GLXclientState *cl, GLXContextTag tag,
/************************************************************************/
-/*
-** Top level dispatcher; all commands are executed from here down.
-*/
+void glxSuspendClients(void)
+{
+ int i;
-/* I cried when I wrote this. Damn you XAA! */
+ for (i = 1; i <= MAXCLIENTS; i++) {
+ if (__glXClients[i] == NULL || !__glXClients[i]->inUse)
+ continue;
+
+ IgnoreClient(__glXClients[i]->client);
+ }
+
+ glxBlockClients = TRUE;
+}
+
+void glxResumeClients(void)
+{
+ __GLXcontext *cx, *next;
+ int i;
+
+ glxBlockClients = FALSE;
+
+ for (i = 1; i <= MAXCLIENTS; i++) {
+ if (__glXClients[i] == NULL || !__glXClients[i]->inUse)
+ continue;
+
+ AttendClient(__glXClients[i]->client);
+ }
+
+ __glXleaveServer();
+ for (cx = glxPendingDestroyContexts; cx != NULL; cx = next) {
+ next = cx->next;
+
+ cx->destroy(cx);
+ }
+ glxPendingDestroyContexts = NULL;
+ __glXenterServer();
+}
static void
__glXnopEnterServer(void)
@@ -408,14 +472,19 @@ void __glXsetEnterLeaveServerFuncs(void (*enter)(void),
void __glXenterServer(void)
{
- (*__glXenterServerFunc)();
+ glxServerLeaveCount--;
+
+ if (glxServerLeaveCount == 0)
+ (*__glXenterServerFunc)();
}
void __glXleaveServer(void)
{
- (*__glXleaveServerFunc)();
-}
+ if (glxServerLeaveCount == 0)
+ (*__glXleaveServerFunc)();
+ glxServerLeaveCount++;
+}
/*
** Top level dispatcher; all commands are executed from here down.
@@ -424,7 +493,7 @@ static int __glXDispatch(ClientPtr client)
{
REQUEST(xGLXSingleReq);
CARD8 opcode;
- int (*proc)(__GLXclientState *cl, GLbyte *pc);
+ __GLXdispatchSingleProcPtr proc;
__GLXclientState *cl;
int retval;
@@ -454,48 +523,38 @@ static int __glXDispatch(ClientPtr client)
}
/*
- ** Check for valid opcode.
- */
- if (opcode >= __GLX_SINGLE_TABLE_SIZE) {
- return BadRequest;
- }
-
- /*
** If we're expecting a glXRenderLarge request, this better be one.
*/
if ((cl->largeCmdRequestsSoFar != 0) && (opcode != X_GLXRenderLarge)) {
client->errorValue = stuff->glxCode;
- return __glXBadLargeRequest;
+ return __glXError(GLXBadLargeRequest);
+ }
+
+ /* If we're currently blocking GLX clients, just put this guy to
+ * sleep, reset the request and return. */
+ if (glxBlockClients) {
+ ResetCurrentRequest(client);
+ client->sequence--;
+ IgnoreClient(client);
+ return(client->noClientException);
}
/*
** Use the opcode to index into the procedure table.
*/
- if (client->swapped)
- proc = __glXSwapSingleTable[opcode];
- else
- proc = __glXSingleTable[opcode];
-
- __glXleaveServer();
+ proc = (__GLXdispatchSingleProcPtr) __glXGetProtocolDecodeFunction(& Single_dispatch_info,
+ opcode,
+ client->swapped);
+ if (proc != NULL) {
+ __glXleaveServer();
- inDispatch = True;
+ retval = (*proc)(cl, (GLbyte *) stuff);
- retval = proc(cl, (GLbyte *) stuff);
-
- inDispatch = False;
-
- __glXenterServer();
+ __glXenterServer();
+ }
+ else {
+ retval = BadRequest;
+ }
return retval;
}
-
-int __glXNoSuchSingleOpcode(__GLXclientState *cl, GLbyte *pc)
-{
- return BadRequest;
-}
-
-void __glXNoSuchRenderOpcode(GLbyte *pc)
-{
- return;
-}
-
diff --git a/GL/glx/glxext.h b/GL/glx/glxext.h
index 5d569899f..edd66a8f0 100644
--- a/GL/glx/glxext.h
+++ b/GL/glx/glxext.h
@@ -1,4 +1,3 @@
-/* $XFree86: xc/programs/Xserver/GL/glx/glxext.h,v 1.7 2003/11/17 22:20:26 dawes Exp $ */
#ifdef HAVE_DIX_CONFIG_H
#include <dix-config.h>
#endif
@@ -67,16 +66,11 @@ typedef struct {
extern GLboolean __glXFreeContext(__GLXcontext *glxc);
extern void __glXFlushContextCache(void);
-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, GLbyte *pc);
-
extern int DoMakeCurrent( __GLXclientState *cl, GLXDrawable drawId,
GLXDrawable readId, GLXContextID contextId, GLXContextTag tag );
extern int DoGetVisualConfigs(__GLXclientState *cl, unsigned screen,
@@ -85,12 +79,16 @@ extern int DoGetFBConfigs(__GLXclientState *cl, unsigned screen,
GLboolean do_swap);
extern int DoCreateContext(__GLXclientState *cl, GLXContextID gcId,
GLXContextID shareList, VisualID visual, GLuint screen, GLboolean isDirect);
-extern int DoCreateGLXPixmap(__GLXclientState *cl, VisualID visual,
+extern int DoCreateGLXPixmap(__GLXclientState *cl, XID fbconfigId,
GLuint screenNum, XID pixmapId, XID glxpixmapId);
+extern int DoDestroyPixmap(__GLXclientState *cl, XID glxpixmapId);
-extern void GlxExtensionInit(void);
+extern int DoQueryContext(__GLXclientState *cl, GLXContextID gcId);
-extern Bool __glXCoreType(void);
+extern int DoRender(__GLXclientState *cl, GLbyte *pc, int do_swap);
+extern int DoRenderLarge(__GLXclientState *cl, GLbyte *pc, int do_swap);
+
+extern void GlxExtensionInit(void);
extern const char GLServerVersion[];
extern int DoGetString(__GLXclientState *cl, GLbyte *pc, GLboolean need_swap);
diff --git a/GL/glx/glxscreens.c b/GL/glx/glxscreens.c
index 77654d3ab..43447a4e4 100644
--- a/GL/glx/glxscreens.c
+++ b/GL/glx/glxscreens.c
@@ -1,4 +1,3 @@
-/* $XFree86: xc/programs/Xserver/GL/glx/glxscreens.c,v 1.14 2004/02/09 23:46:31 alanh Exp $ */
/*
** License Applicability. Except to the extent portions of this file are
** made subject to an alternative license as permitted in the SGI Free
@@ -46,28 +45,36 @@
#include "glxutil.h"
#include "glxext.h"
-const char GLServerVersion[] = "1.2";
+const char GLServerVersion[] = "1.4";
static const char GLServerExtensions[] =
"GL_ARB_depth_texture "
+ "GL_ARB_draw_buffers "
+ "GL_ARB_fragment_program "
+ "GL_ARB_fragment_program_shadow "
"GL_ARB_imaging "
+ "GL_ARB_multisample "
"GL_ARB_multitexture "
+ "GL_ARB_occlusion_query "
"GL_ARB_point_parameters "
"GL_ARB_point_sprite "
"GL_ARB_shadow "
"GL_ARB_shadow_ambient "
"GL_ARB_texture_border_clamp "
+ "GL_ARB_texture_compression "
"GL_ARB_texture_cube_map "
"GL_ARB_texture_env_add "
"GL_ARB_texture_env_combine "
"GL_ARB_texture_env_crossbar "
"GL_ARB_texture_env_dot3 "
"GL_ARB_texture_mirrored_repeat "
+ "GL_ARB_texture_non_power_of_two "
"GL_ARB_transpose_matrix "
+ "GL_ARB_vertex_program "
"GL_ARB_window_pos "
- "GL_ARB_texture_non_power_of_two "
"GL_EXT_abgr "
"GL_EXT_bgra "
"GL_EXT_blend_color "
+ "GL_EXT_blend_equation_separate "
"GL_EXT_blend_func_separate "
"GL_EXT_blend_logic_op "
"GL_EXT_blend_minmax "
@@ -76,47 +83,77 @@ static const char GLServerExtensions[] =
"GL_EXT_copy_texture "
"GL_EXT_draw_range_elements "
"GL_EXT_fog_coord "
+ "GL_EXT_framebuffer_object "
"GL_EXT_multi_draw_arrays "
"GL_EXT_packed_pixels "
+ "GL_EXT_paletted_texture "
+ "GL_EXT_point_parameters "
"GL_EXT_polygon_offset "
"GL_EXT_rescale_normal "
"GL_EXT_secondary_color "
"GL_EXT_separate_specular_color "
"GL_EXT_shadow_funcs "
+ "GL_EXT_shared_texture_palette "
"GL_EXT_stencil_two_side "
"GL_EXT_stencil_wrap "
"GL_EXT_subtexture "
"GL_EXT_texture "
"GL_EXT_texture3D "
+ "GL_EXT_texture_compression_dxt1 "
+ "GL_EXT_texture_compression_s3tc "
"GL_EXT_texture_edge_clamp "
"GL_EXT_texture_env_add "
"GL_EXT_texture_env_combine "
"GL_EXT_texture_env_dot3 "
+ "GL_EXT_texture_filter_ansiotropic "
"GL_EXT_texture_lod "
"GL_EXT_texture_lod_bias "
+ "GL_EXT_texture_mirror_clamp "
"GL_EXT_texture_object "
"GL_EXT_texture_rectangle "
"GL_EXT_vertex_array "
- "GL_EXT_framebuffer_object "
+ "GL_3DFX_texture_compression_FXT1 "
"GL_APPLE_packed_pixels "
- "GL_ATI_texture_mirror_once "
+ "GL_ATI_draw_buffers "
"GL_ATI_texture_env_combine3 "
+ "GL_ATI_texture_mirror_once "
"GL_HP_occlusion_test "
"GL_IBM_texture_mirrored_repeat "
+ "GL_INGR_blend_func_separate "
"GL_MESA_pack_invert "
"GL_MESA_ycbcr_texture "
"GL_NV_blend_square "
+ "GL_NV_depth_clamp "
+ "GL_NV_fog_distance "
+ "GL_NV_fragment_program "
+ "GL_NV_fragment_program_option "
+ "GL_NV_fragment_program2 "
+ "GL_NV_light_max_exponent "
+ "GL_NV_multisample_filter_hint "
"GL_NV_point_sprite "
"GL_NV_texgen_reflection "
- "GL_NV_texture_rectangle "
+ "GL_NV_texture_compression_vtc "
"GL_NV_texture_env_combine4 "
+ "GL_NV_texture_expand_normal "
+ "GL_NV_texture_rectangle "
+ "GL_NV_vertex_program "
+ "GL_NV_vertex_program1_1 "
+ "GL_NV_vertex_program2 "
+ "GL_NV_vertex_program2_option "
+ "GL_NV_vertex_program3 "
+ "GL_OES_compressed_paletted_texture "
+ "GL_SGI_color_matrix "
+ "GL_SGI_color_table "
"GL_SGIS_generate_mipmap "
+ "GL_SGIS_multisample "
+ "GL_SGIS_point_parameters "
"GL_SGIS_texture_border_clamp "
"GL_SGIS_texture_edge_clamp "
"GL_SGIS_texture_lod "
"GL_SGIX_depth_texture "
"GL_SGIX_shadow "
"GL_SGIX_shadow_ambient "
+ "GL_SUN_slice_accum "
;
/*
@@ -139,6 +176,7 @@ static char GLXServerExtensions[] =
"GLX_SGIX_swap_barrier "
#endif
"GLX_SGIX_fbconfig "
+ "GLX_MESA_copy_sub_buffer "
;
__GLXscreen **__glXActiveScreens;
diff --git a/GL/glx/glxscreens.h b/GL/glx/glxscreens.h
index 8a2b2388f..a7700f649 100644
--- a/GL/glx/glxscreens.h
+++ b/GL/glx/glxscreens.h
@@ -5,7 +5,6 @@
#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
@@ -53,11 +52,18 @@
*/
typedef struct __GLXscreen __GLXscreen;
struct __GLXscreen {
- void (*destroy)(__GLXscreen *screen);
-
- __GLXcontext *(*createContext)(__GLXscreen *screen,
- __GLcontextModes *modes,
- __GLXcontext *shareContext);
+ void (*destroy) (__GLXscreen *screen);
+
+ __GLXcontext *(*createContext) (__GLXscreen *screen,
+ __GLcontextModes *modes,
+ __GLXcontext *shareContext);
+
+ __GLXdrawable *(*createDrawable)(__GLXscreen *context,
+ DrawablePtr pDraw,
+ XID drawId,
+ __GLcontextModes *modes);
+ int (*swapInterval) (__GLXdrawable *drawable,
+ int interval);
ScreenPtr pScreen;
diff --git a/GL/glx/glxserver.h b/GL/glx/glxserver.h
index a41720f54..49cad7328 100644
--- a/GL/glx/glxserver.h
+++ b/GL/glx/glxserver.h
@@ -1,4 +1,3 @@
-/* $XFree86: xc/programs/Xserver/GL/glx/glxserver.h,v 1.5 2003/09/28 20:15:43 alanh Exp $ */
#ifdef HAVE_DIX_CONFIG_H
#include <dix-config.h>
#endif
@@ -70,7 +69,6 @@ typedef struct __GLXcontext __GLXcontext;
#include "glxscreens.h"
#include "glxdrawable.h"
#include "glxcontext.h"
-#include "glxerror.h"
#define GLX_SERVER_MAJOR_VERSION 1
@@ -112,6 +110,8 @@ void __glXScreenInitVisuals(__GLXscreen *screen);
extern __GLXcontext *__glXLastContext;
extern __GLXcontext *__glXForceCurrent(__GLXclientState*, GLXContextTag, int*);
+int __glXError(int error);
+
/*
** Macros to set, unset, and retrieve the flag that says whether a context
** has unflushed commands.
@@ -136,6 +136,9 @@ void __glXsetEnterLeaveServerFuncs(void (*enter)(void),
void __glXenterServer(void);
void __glXleaveServer(void);
+void glxSuspendClients(void);
+void glxResumeClients(void);
+
/*
** State kept per client.
*/
@@ -176,8 +179,6 @@ struct __GLXclientStateRec {
char *GLClientextensions;
};
-extern __GLXclientState *__glXClients[];
-
/************************************************************************/
/*
@@ -191,17 +192,16 @@ typedef int (*__GLXdispatchVendorPrivProcPtr)(__GLXclientState *, GLbyte *);
* Dispatch for GLX commands.
*/
typedef int (*__GLXprocPtr)(__GLXclientState *, char *pc);
-extern __GLXprocPtr __glXProcTable[];
/*
* Tables for computing the size of each rendering command.
*/
+typedef int (*gl_proto_size_func)(const GLbyte *, Bool);
+
typedef struct {
int bytes;
- int (*varsize)(const GLbyte *pc, Bool swap);
+ gl_proto_size_func varsize;
} __GLXrenderSizeData;
-extern __GLXrenderSizeData __glXRenderSizeTable[];
-extern __GLXrenderSizeData __glXRenderSizeTable_EXT[];
/************************************************************************/
@@ -252,6 +252,4 @@ extern int __glXImageSize(GLenum format, GLenum type,
GLint imageHeight, GLint rowLength, GLint skipImages, GLint skipRows,
GLint alignment);
-extern int __glXDrawArraysSize(const GLbyte *pc, Bool swap);
-
#endif /* !__GLX_server_h__ */
diff --git a/GL/glx/glxutil.c b/GL/glx/glxutil.c
index f1f9c06c5..1f172929f 100644
--- a/GL/glx/glxutil.c
+++ b/GL/glx/glxutil.c
@@ -1,4 +1,3 @@
-/* $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
@@ -140,12 +139,14 @@ __glXUnrefDrawable(__GLXdrawable *glxPriv)
GLboolean
__glXDrawableInit(__GLXdrawable *drawable,
- __GLXcontext *ctx, DrawablePtr pDraw, XID drawId)
+ __GLXscreen *screen, DrawablePtr pDraw, XID drawId,
+ __GLcontextModes *modes)
{
drawable->type = pDraw->type;
drawable->pDraw = pDraw;
drawable->drawId = drawId;
drawable->refCount = 1;
+ drawable->modes = modes;
/* if not a pixmap, lookup will fail, so pGlxPixmap will be NULL */
drawable->pGlxPixmap = (__GLXpixmap *)
@@ -153,35 +154,3 @@ __glXDrawableInit(__GLXdrawable *drawable,
return GL_TRUE;
}
-
-__GLXdrawable *
-__glXFindDrawable(XID drawId)
-{
- __GLXdrawable *glxPriv;
-
- glxPriv = (__GLXdrawable *)LookupIDByType(drawId, __glXDrawableRes);
-
- return glxPriv;
-}
-
-__GLXdrawable *
-__glXGetDrawable(__GLXcontext *ctx, DrawablePtr pDraw, XID drawId)
-{
- __GLXdrawable *glxPriv;
-
- glxPriv = __glXFindDrawable(drawId);
-
- if (glxPriv == NULL)
- {
- glxPriv = ctx->createDrawable(ctx, pDraw, drawId);
-
- /* since we are creating the drawablePrivate, drawId should be new */
- if (!AddResource(drawId, __glXDrawableRes, glxPriv))
- {
- glxPriv->destroy (glxPriv);
- return NULL;
- }
- }
-
- return glxPriv;
-}
diff --git a/GL/glx/glxutil.h b/GL/glx/glxutil.h
index d5cfa20b5..1937ef2cf 100644
--- a/GL/glx/glxutil.h
+++ b/GL/glx/glxutil.h
@@ -1,4 +1,3 @@
-/* $XFree86: xc/programs/Xserver/GL/glx/glxutil.h,v 1.3 2001/03/21 16:29:37 dawes Exp $ */
#ifdef HAVE_DIX_CONFIG_H
#include <dix-config.h>
#endif
@@ -41,34 +40,18 @@
**
*/
-extern void __glXNop(void);
-
/* relate contexts with drawables */
extern void __glXAssociateContext(__GLXcontext *glxc);
extern void __glXDeassociateContext(__GLXcontext *glxc);
-/* drawable operation */
-extern void __glXGetDrawableSize(__GLdrawablePrivate *glPriv,
- GLint *x, GLint *y,
- GLuint *width, GLuint *height);
-extern GLboolean __glXResizeDrawable(__GLdrawablePrivate *glPriv);
-extern GLboolean __glXResizeDrawableBuffers(__GLXdrawable *glxPriv);
-
/* drawable management */
extern void __glXRefDrawable(__GLXdrawable *glxPriv);
extern void __glXUnrefDrawable(__GLXdrawable *glxPriv);
-extern __GLXdrawable *__glXCreateDrawable(__GLXcontext *ctx,
- DrawablePtr pDraw,
- XID glxpixmapId);
-extern GLboolean __glXDrawableInit(__GLXdrawable *drawable, __GLXcontext *ctx,
- DrawablePtr pDraw, XID drawID);
-extern GLboolean __glXDestroyDrawable(__GLXdrawable *glxPriv);
-extern __GLXdrawable *__glXFindDrawable(XID glxpixmapId);
-extern __GLXdrawable *__glXGetDrawable(__GLXcontext *ctx,
- DrawablePtr pDraw,
- XID glxpixmapId);
-extern void __glXCacheDrawableSize(__GLXdrawable *glxPriv);
+extern GLboolean __glXDrawableInit(__GLXdrawable *drawable,
+ __GLXscreen *screen,
+ DrawablePtr pDraw, XID drawID,
+ __GLcontextModes *modes);
/* context helper routines */
extern __GLXcontext *__glXLookupContextByTag(__GLXclientState*, GLXContextTag);
@@ -78,4 +61,3 @@ extern void *__glXglDDXScreenInfo(void);
extern void *__glXglDDXExtensionInfo(void);
#endif /* _glxcmds_h_ */
-
diff --git a/GL/glx/indirect_dispatch.c b/GL/glx/indirect_dispatch.c
index fa794ac9b..d86dedfd5 100644
--- a/GL/glx/indirect_dispatch.c
+++ b/GL/glx/indirect_dispatch.c
@@ -2756,6 +2756,31 @@ int __glXDisp_AreTexturesResident(__GLXclientState *cl, GLbyte *pc)
return error;
}
+int __glXDisp_AreTexturesResidentEXT(__GLXclientState *cl, GLbyte *pc)
+{
+ xGLXVendorPrivateReq * const req = (xGLXVendorPrivateReq *) pc;
+ int error;
+ __GLXcontext * const cx = __glXForceCurrent(cl, req->contextTag, &error);
+
+ pc += __GLX_VENDPRIV_HDR_SIZE;
+ if ( cx != NULL ) {
+ const GLsizei n = *(GLsizei *)(pc + 0);
+
+ GLboolean retval;
+ GLboolean answerBuffer[200];
+ GLboolean * residences = __glXGetAnswerBuffer(cl, n, answerBuffer, sizeof(answerBuffer), 1);
+ retval = CALL_AreTexturesResident( GET_DISPATCH(), (
+ n,
+ (const GLuint *)(pc + 4),
+ residences
+ ) );
+ __glXSendReply(cl->client, residences, n, 1, GL_TRUE, retval);
+ error = Success;
+ }
+
+ return error;
+}
+
void __glXDisp_CopyTexImage1D(GLbyte * pc)
{
CALL_CopyTexImage1D( GET_DISPATCH(), (
@@ -2811,6 +2836,26 @@ void __glXDisp_CopyTexSubImage2D(GLbyte * pc)
int __glXDisp_DeleteTextures(__GLXclientState *cl, GLbyte *pc)
{
+ xGLXSingleReq * const req = (xGLXSingleReq *) pc;
+ int error;
+ __GLXcontext * const cx = __glXForceCurrent(cl, req->contextTag, &error);
+
+ pc += __GLX_SINGLE_HDR_SIZE;
+ if ( cx != NULL ) {
+ const GLsizei n = *(GLsizei *)(pc + 0);
+
+ CALL_DeleteTextures( GET_DISPATCH(), (
+ n,
+ (const GLuint *)(pc + 4)
+ ) );
+ error = Success;
+ }
+
+ return error;
+}
+
+int __glXDisp_DeleteTexturesEXT(__GLXclientState *cl, GLbyte *pc)
+{
xGLXVendorPrivateReq * const req = (xGLXVendorPrivateReq *) pc;
int error;
__GLXcontext * const cx = __glXForceCurrent(cl, req->contextTag, &error);
@@ -2852,6 +2897,29 @@ int __glXDisp_GenTextures(__GLXclientState *cl, GLbyte *pc)
return error;
}
+int __glXDisp_GenTexturesEXT(__GLXclientState *cl, GLbyte *pc)
+{
+ xGLXVendorPrivateReq * const req = (xGLXVendorPrivateReq *) pc;
+ int error;
+ __GLXcontext * const cx = __glXForceCurrent(cl, req->contextTag, &error);
+
+ pc += __GLX_VENDPRIV_HDR_SIZE;
+ if ( cx != NULL ) {
+ const GLsizei n = *(GLsizei *)(pc + 0);
+
+ GLuint answerBuffer[200];
+ GLuint * textures = __glXGetAnswerBuffer(cl, n * 4, answerBuffer, sizeof(answerBuffer), 4);
+ CALL_GenTextures( GET_DISPATCH(), (
+ n,
+ textures
+ ) );
+ __glXSendReply(cl->client, textures, n, 4, GL_TRUE, 0);
+ error = Success;
+ }
+
+ return error;
+}
+
int __glXDisp_IsTexture(__GLXclientState *cl, GLbyte *pc)
{
xGLXSingleReq * const req = (xGLXSingleReq *) pc;
@@ -2871,6 +2939,25 @@ int __glXDisp_IsTexture(__GLXclientState *cl, GLbyte *pc)
return error;
}
+int __glXDisp_IsTextureEXT(__GLXclientState *cl, GLbyte *pc)
+{
+ xGLXVendorPrivateReq * const req = (xGLXVendorPrivateReq *) pc;
+ int error;
+ __GLXcontext * const cx = __glXForceCurrent(cl, req->contextTag, &error);
+
+ pc += __GLX_VENDPRIV_HDR_SIZE;
+ if ( cx != NULL ) {
+ GLboolean retval;
+ retval = CALL_IsTexture( GET_DISPATCH(), (
+ *(GLuint *)(pc + 0)
+ ) );
+ __glXSendReply(cl->client, dummy_answer, 0, 0, GL_FALSE, retval);
+ error = Success;
+ }
+
+ return error;
+}
+
void __glXDisp_PrioritizeTextures(GLbyte * pc)
{
const GLsizei n = *(GLsizei *)(pc + 0);
@@ -3039,6 +3126,35 @@ int __glXDisp_GetColorTableParameterfv(__GLXclientState *cl, GLbyte *pc)
return error;
}
+int __glXDisp_GetColorTableParameterfvSGI(__GLXclientState *cl, GLbyte *pc)
+{
+ xGLXVendorPrivateReq * const req = (xGLXVendorPrivateReq *) pc;
+ int error;
+ __GLXcontext * const cx = __glXForceCurrent(cl, req->contextTag, &error);
+
+ pc += __GLX_VENDPRIV_HDR_SIZE;
+ if ( cx != NULL ) {
+ const GLenum pname = *(GLenum *)(pc + 4);
+
+ const GLuint compsize = __glGetColorTableParameterfv_size(pname);
+ GLfloat answerBuffer[200];
+ GLfloat * params = __glXGetAnswerBuffer(cl, compsize * 4, answerBuffer, sizeof(answerBuffer), 4);
+
+ if (params == NULL) return BadAlloc;
+ __glXClearErrorOccured();
+
+ CALL_GetColorTableParameterfv( GET_DISPATCH(), (
+ *(GLenum *)(pc + 0),
+ pname,
+ params
+ ) );
+ __glXSendReply(cl->client, params, compsize, 4, GL_FALSE, 0);
+ error = Success;
+ }
+
+ return error;
+}
+
int __glXDisp_GetColorTableParameteriv(__GLXclientState *cl, GLbyte *pc)
{
xGLXSingleReq * const req = (xGLXSingleReq *) pc;
@@ -3068,6 +3184,35 @@ int __glXDisp_GetColorTableParameteriv(__GLXclientState *cl, GLbyte *pc)
return error;
}
+int __glXDisp_GetColorTableParameterivSGI(__GLXclientState *cl, GLbyte *pc)
+{
+ xGLXVendorPrivateReq * const req = (xGLXVendorPrivateReq *) pc;
+ int error;
+ __GLXcontext * const cx = __glXForceCurrent(cl, req->contextTag, &error);
+
+ pc += __GLX_VENDPRIV_HDR_SIZE;
+ if ( cx != NULL ) {
+ const GLenum pname = *(GLenum *)(pc + 4);
+
+ const GLuint compsize = __glGetColorTableParameteriv_size(pname);
+ GLint answerBuffer[200];
+ GLint * params = __glXGetAnswerBuffer(cl, compsize * 4, answerBuffer, sizeof(answerBuffer), 4);
+
+ if (params == NULL) return BadAlloc;
+ __glXClearErrorOccured();
+
+ CALL_GetColorTableParameteriv( GET_DISPATCH(), (
+ *(GLenum *)(pc + 0),
+ pname,
+ params
+ ) );
+ __glXSendReply(cl->client, params, compsize, 4, GL_FALSE, 0);
+ error = Success;
+ }
+
+ return error;
+}
+
void __glXDisp_ColorSubTable(GLbyte * pc)
{
const GLvoid * const data = (const GLvoid *) (pc + 40);
@@ -3244,6 +3389,35 @@ int __glXDisp_GetConvolutionParameterfv(__GLXclientState *cl, GLbyte *pc)
return error;
}
+int __glXDisp_GetConvolutionParameterfvEXT(__GLXclientState *cl, GLbyte *pc)
+{
+ xGLXVendorPrivateReq * const req = (xGLXVendorPrivateReq *) pc;
+ int error;
+ __GLXcontext * const cx = __glXForceCurrent(cl, req->contextTag, &error);
+
+ pc += __GLX_VENDPRIV_HDR_SIZE;
+ if ( cx != NULL ) {
+ const GLenum pname = *(GLenum *)(pc + 4);
+
+ const GLuint compsize = __glGetConvolutionParameterfv_size(pname);
+ GLfloat answerBuffer[200];
+ GLfloat * params = __glXGetAnswerBuffer(cl, compsize * 4, answerBuffer, sizeof(answerBuffer), 4);
+
+ if (params == NULL) return BadAlloc;
+ __glXClearErrorOccured();
+
+ CALL_GetConvolutionParameterfv( GET_DISPATCH(), (
+ *(GLenum *)(pc + 0),
+ pname,
+ params
+ ) );
+ __glXSendReply(cl->client, params, compsize, 4, GL_FALSE, 0);
+ error = Success;
+ }
+
+ return error;
+}
+
int __glXDisp_GetConvolutionParameteriv(__GLXclientState *cl, GLbyte *pc)
{
xGLXSingleReq * const req = (xGLXSingleReq *) pc;
@@ -3273,6 +3447,35 @@ int __glXDisp_GetConvolutionParameteriv(__GLXclientState *cl, GLbyte *pc)
return error;
}
+int __glXDisp_GetConvolutionParameterivEXT(__GLXclientState *cl, GLbyte *pc)
+{
+ xGLXVendorPrivateReq * const req = (xGLXVendorPrivateReq *) pc;
+ int error;
+ __GLXcontext * const cx = __glXForceCurrent(cl, req->contextTag, &error);
+
+ pc += __GLX_VENDPRIV_HDR_SIZE;
+ if ( cx != NULL ) {
+ const GLenum pname = *(GLenum *)(pc + 4);
+
+ const GLuint compsize = __glGetConvolutionParameteriv_size(pname);
+ GLint answerBuffer[200];
+ GLint * params = __glXGetAnswerBuffer(cl, compsize * 4, answerBuffer, sizeof(answerBuffer), 4);
+
+ if (params == NULL) return BadAlloc;
+ __glXClearErrorOccured();
+
+ CALL_GetConvolutionParameteriv( GET_DISPATCH(), (
+ *(GLenum *)(pc + 0),
+ pname,
+ params
+ ) );
+ __glXSendReply(cl->client, params, compsize, 4, GL_FALSE, 0);
+ error = Success;
+ }
+
+ return error;
+}
+
int __glXDisp_GetHistogramParameterfv(__GLXclientState *cl, GLbyte *pc)
{
xGLXSingleReq * const req = (xGLXSingleReq *) pc;
@@ -3302,6 +3505,35 @@ int __glXDisp_GetHistogramParameterfv(__GLXclientState *cl, GLbyte *pc)
return error;
}
+int __glXDisp_GetHistogramParameterfvEXT(__GLXclientState *cl, GLbyte *pc)
+{
+ xGLXVendorPrivateReq * const req = (xGLXVendorPrivateReq *) pc;
+ int error;
+ __GLXcontext * const cx = __glXForceCurrent(cl, req->contextTag, &error);
+
+ pc += __GLX_VENDPRIV_HDR_SIZE;
+ if ( cx != NULL ) {
+ const GLenum pname = *(GLenum *)(pc + 4);
+
+ const GLuint compsize = __glGetHistogramParameterfv_size(pname);
+ GLfloat answerBuffer[200];
+ GLfloat * params = __glXGetAnswerBuffer(cl, compsize * 4, answerBuffer, sizeof(answerBuffer), 4);
+
+ if (params == NULL) return BadAlloc;
+ __glXClearErrorOccured();
+
+ CALL_GetHistogramParameterfv( GET_DISPATCH(), (
+ *(GLenum *)(pc + 0),
+ pname,
+ params
+ ) );
+ __glXSendReply(cl->client, params, compsize, 4, GL_FALSE, 0);
+ error = Success;
+ }
+
+ return error;
+}
+
int __glXDisp_GetHistogramParameteriv(__GLXclientState *cl, GLbyte *pc)
{
xGLXSingleReq * const req = (xGLXSingleReq *) pc;
@@ -3331,6 +3563,35 @@ int __glXDisp_GetHistogramParameteriv(__GLXclientState *cl, GLbyte *pc)
return error;
}
+int __glXDisp_GetHistogramParameterivEXT(__GLXclientState *cl, GLbyte *pc)
+{
+ xGLXVendorPrivateReq * const req = (xGLXVendorPrivateReq *) pc;
+ int error;
+ __GLXcontext * const cx = __glXForceCurrent(cl, req->contextTag, &error);
+
+ pc += __GLX_VENDPRIV_HDR_SIZE;
+ if ( cx != NULL ) {
+ const GLenum pname = *(GLenum *)(pc + 4);
+
+ const GLuint compsize = __glGetHistogramParameteriv_size(pname);
+ GLint answerBuffer[200];
+ GLint * params = __glXGetAnswerBuffer(cl, compsize * 4, answerBuffer, sizeof(answerBuffer), 4);
+
+ if (params == NULL) return BadAlloc;
+ __glXClearErrorOccured();
+
+ CALL_GetHistogramParameteriv( GET_DISPATCH(), (
+ *(GLenum *)(pc + 0),
+ pname,
+ params
+ ) );
+ __glXSendReply(cl->client, params, compsize, 4, GL_FALSE, 0);
+ error = Success;
+ }
+
+ return error;
+}
+
int __glXDisp_GetMinmaxParameterfv(__GLXclientState *cl, GLbyte *pc)
{
xGLXSingleReq * const req = (xGLXSingleReq *) pc;
@@ -3360,6 +3621,35 @@ int __glXDisp_GetMinmaxParameterfv(__GLXclientState *cl, GLbyte *pc)
return error;
}
+int __glXDisp_GetMinmaxParameterfvEXT(__GLXclientState *cl, GLbyte *pc)
+{
+ xGLXVendorPrivateReq * const req = (xGLXVendorPrivateReq *) pc;
+ int error;
+ __GLXcontext * const cx = __glXForceCurrent(cl, req->contextTag, &error);
+
+ pc += __GLX_VENDPRIV_HDR_SIZE;
+ if ( cx != NULL ) {
+ const GLenum pname = *(GLenum *)(pc + 4);
+
+ const GLuint compsize = __glGetMinmaxParameterfv_size(pname);
+ GLfloat answerBuffer[200];
+ GLfloat * params = __glXGetAnswerBuffer(cl, compsize * 4, answerBuffer, sizeof(answerBuffer), 4);
+
+ if (params == NULL) return BadAlloc;
+ __glXClearErrorOccured();
+
+ CALL_GetMinmaxParameterfv( GET_DISPATCH(), (
+ *(GLenum *)(pc + 0),
+ pname,
+ params
+ ) );
+ __glXSendReply(cl->client, params, compsize, 4, GL_FALSE, 0);
+ error = Success;
+ }
+
+ return error;
+}
+
int __glXDisp_GetMinmaxParameteriv(__GLXclientState *cl, GLbyte *pc)
{
xGLXSingleReq * const req = (xGLXSingleReq *) pc;
@@ -3389,6 +3679,35 @@ int __glXDisp_GetMinmaxParameteriv(__GLXclientState *cl, GLbyte *pc)
return error;
}
+int __glXDisp_GetMinmaxParameterivEXT(__GLXclientState *cl, GLbyte *pc)
+{
+ xGLXVendorPrivateReq * const req = (xGLXVendorPrivateReq *) pc;
+ int error;
+ __GLXcontext * const cx = __glXForceCurrent(cl, req->contextTag, &error);
+
+ pc += __GLX_VENDPRIV_HDR_SIZE;
+ if ( cx != NULL ) {
+ const GLenum pname = *(GLenum *)(pc + 4);
+
+ const GLuint compsize = __glGetMinmaxParameteriv_size(pname);
+ GLint answerBuffer[200];
+ GLint * params = __glXGetAnswerBuffer(cl, compsize * 4, answerBuffer, sizeof(answerBuffer), 4);
+
+ if (params == NULL) return BadAlloc;
+ __glXClearErrorOccured();
+
+ CALL_GetMinmaxParameteriv( GET_DISPATCH(), (
+ *(GLenum *)(pc + 0),
+ pname,
+ params
+ ) );
+ __glXSendReply(cl->client, params, compsize, 4, GL_FALSE, 0);
+ error = Success;
+ }
+
+ return error;
+}
+
void __glXDisp_Histogram(GLbyte * pc)
{
CALL_Histogram( GET_DISPATCH(), (
@@ -3667,17 +3986,106 @@ void __glXDisp_SampleCoverageARB(GLbyte * pc)
) );
}
-void __glXDisp_DrawBuffersARB(GLbyte * pc)
+void __glXDisp_CompressedTexImage1DARB(GLbyte * pc)
{
- const GLsizei n = *(GLsizei *)(pc + 0);
+ const GLsizei imageSize = *(GLsizei *)(pc + 20);
- CALL_DrawBuffersARB( GET_DISPATCH(), (
- n,
- (const GLenum *)(pc + 4)
+ CALL_CompressedTexImage1DARB( GET_DISPATCH(), (
+ *(GLenum *)(pc + 0),
+ *(GLint *)(pc + 4),
+ *(GLenum *)(pc + 8),
+ *(GLsizei *)(pc + 12),
+ *(GLint *)(pc + 16),
+ imageSize,
+ (const GLvoid *)(pc + 24)
) );
}
-int __glXDisp_AreTexturesResidentEXT(__GLXclientState *cl, GLbyte *pc)
+void __glXDisp_CompressedTexImage2DARB(GLbyte * pc)
+{
+ const GLsizei imageSize = *(GLsizei *)(pc + 24);
+
+ CALL_CompressedTexImage2DARB( GET_DISPATCH(), (
+ *(GLenum *)(pc + 0),
+ *(GLint *)(pc + 4),
+ *(GLenum *)(pc + 8),
+ *(GLsizei *)(pc + 12),
+ *(GLsizei *)(pc + 16),
+ *(GLint *)(pc + 20),
+ imageSize,
+ (const GLvoid *)(pc + 28)
+ ) );
+}
+
+void __glXDisp_CompressedTexImage3DARB(GLbyte * pc)
+{
+ const GLsizei imageSize = *(GLsizei *)(pc + 28);
+
+ CALL_CompressedTexImage3DARB( GET_DISPATCH(), (
+ *(GLenum *)(pc + 0),
+ *(GLint *)(pc + 4),
+ *(GLenum *)(pc + 8),
+ *(GLsizei *)(pc + 12),
+ *(GLsizei *)(pc + 16),
+ *(GLsizei *)(pc + 20),
+ *(GLint *)(pc + 24),
+ imageSize,
+ (const GLvoid *)(pc + 32)
+ ) );
+}
+
+void __glXDisp_CompressedTexSubImage1DARB(GLbyte * pc)
+{
+ const GLsizei imageSize = *(GLsizei *)(pc + 20);
+
+ CALL_CompressedTexSubImage1DARB( GET_DISPATCH(), (
+ *(GLenum *)(pc + 0),
+ *(GLint *)(pc + 4),
+ *(GLint *)(pc + 8),
+ *(GLsizei *)(pc + 12),
+ *(GLenum *)(pc + 16),
+ imageSize,
+ (const GLvoid *)(pc + 24)
+ ) );
+}
+
+void __glXDisp_CompressedTexSubImage2DARB(GLbyte * pc)
+{
+ const GLsizei imageSize = *(GLsizei *)(pc + 28);
+
+ CALL_CompressedTexSubImage2DARB( GET_DISPATCH(), (
+ *(GLenum *)(pc + 0),
+ *(GLint *)(pc + 4),
+ *(GLint *)(pc + 8),
+ *(GLint *)(pc + 12),
+ *(GLsizei *)(pc + 16),
+ *(GLsizei *)(pc + 20),
+ *(GLenum *)(pc + 24),
+ imageSize,
+ (const GLvoid *)(pc + 32)
+ ) );
+}
+
+void __glXDisp_CompressedTexSubImage3DARB(GLbyte * pc)
+{
+ const GLsizei imageSize = *(GLsizei *)(pc + 36);
+
+ CALL_CompressedTexSubImage3DARB( GET_DISPATCH(), (
+ *(GLenum *)(pc + 0),
+ *(GLint *)(pc + 4),
+ *(GLint *)(pc + 8),
+ *(GLint *)(pc + 12),
+ *(GLint *)(pc + 16),
+ *(GLsizei *)(pc + 20),
+ *(GLsizei *)(pc + 24),
+ *(GLsizei *)(pc + 28),
+ *(GLenum *)(pc + 32),
+ imageSize,
+ (const GLvoid *)(pc + 40)
+ ) );
+}
+
+int __glXDisp_GetProgramEnvParameterdvARB(__GLXclientState *cl, GLbyte *pc)
{
xGLXVendorPrivateReq * const req = (xGLXVendorPrivateReq *) pc;
int error;
@@ -3685,24 +4093,41 @@ int __glXDisp_AreTexturesResidentEXT(__GLXclientState *cl, GLbyte *pc)
pc += __GLX_VENDPRIV_HDR_SIZE;
if ( cx != NULL ) {
- const GLsizei n = *(GLsizei *)(pc + 0);
+ GLdouble params[4];
+ CALL_GetProgramEnvParameterdvARB( GET_DISPATCH(), (
+ *(GLenum *)(pc + 0),
+ *(GLuint *)(pc + 4),
+ params
+ ) );
+ __glXSendReply(cl->client, params, 4, 8, GL_FALSE, 0);
+ error = Success;
+ }
- GLboolean retval;
- GLboolean answerBuffer[200];
- GLboolean * residences = __glXGetAnswerBuffer(cl, n, answerBuffer, sizeof(answerBuffer), 1);
- retval = CALL_AreTexturesResidentEXT( GET_DISPATCH(), (
- n,
- (const GLuint *)(pc + 4),
- residences
+ return error;
+}
+
+int __glXDisp_GetProgramEnvParameterfvARB(__GLXclientState *cl, GLbyte *pc)
+{
+ xGLXVendorPrivateReq * const req = (xGLXVendorPrivateReq *) pc;
+ int error;
+ __GLXcontext * const cx = __glXForceCurrent(cl, req->contextTag, &error);
+
+ pc += __GLX_VENDPRIV_HDR_SIZE;
+ if ( cx != NULL ) {
+ GLfloat params[4];
+ CALL_GetProgramEnvParameterfvARB( GET_DISPATCH(), (
+ *(GLenum *)(pc + 0),
+ *(GLuint *)(pc + 4),
+ params
) );
- __glXSendReply(cl->client, residences, n, 1, GL_TRUE, retval);
+ __glXSendReply(cl->client, params, 4, 4, GL_FALSE, 0);
error = Success;
}
return error;
}
-int __glXDisp_GenTexturesEXT(__GLXclientState *cl, GLbyte *pc)
+int __glXDisp_GetProgramLocalParameterdvARB(__GLXclientState *cl, GLbyte *pc)
{
xGLXVendorPrivateReq * const req = (xGLXVendorPrivateReq *) pc;
int error;
@@ -3710,22 +4135,41 @@ int __glXDisp_GenTexturesEXT(__GLXclientState *cl, GLbyte *pc)
pc += __GLX_VENDPRIV_HDR_SIZE;
if ( cx != NULL ) {
- const GLsizei n = *(GLsizei *)(pc + 0);
+ GLdouble params[4];
+ CALL_GetProgramLocalParameterdvARB( GET_DISPATCH(), (
+ *(GLenum *)(pc + 0),
+ *(GLuint *)(pc + 4),
+ params
+ ) );
+ __glXSendReply(cl->client, params, 4, 8, GL_FALSE, 0);
+ error = Success;
+ }
- GLuint answerBuffer[200];
- GLuint * textures = __glXGetAnswerBuffer(cl, n * 4, answerBuffer, sizeof(answerBuffer), 4);
- CALL_GenTexturesEXT( GET_DISPATCH(), (
- n,
- textures
+ return error;
+}
+
+int __glXDisp_GetProgramLocalParameterfvARB(__GLXclientState *cl, GLbyte *pc)
+{
+ xGLXVendorPrivateReq * const req = (xGLXVendorPrivateReq *) pc;
+ int error;
+ __GLXcontext * const cx = __glXForceCurrent(cl, req->contextTag, &error);
+
+ pc += __GLX_VENDPRIV_HDR_SIZE;
+ if ( cx != NULL ) {
+ GLfloat params[4];
+ CALL_GetProgramLocalParameterfvARB( GET_DISPATCH(), (
+ *(GLenum *)(pc + 0),
+ *(GLuint *)(pc + 4),
+ params
) );
- __glXSendReply(cl->client, textures, n, 4, GL_TRUE, 0);
+ __glXSendReply(cl->client, params, 4, 4, GL_FALSE, 0);
error = Success;
}
return error;
}
-int __glXDisp_IsTextureEXT(__GLXclientState *cl, GLbyte *pc)
+int __glXDisp_GetProgramivARB(__GLXclientState *cl, GLbyte *pc)
{
xGLXVendorPrivateReq * const req = (xGLXVendorPrivateReq *) pc;
int error;
@@ -3733,187 +4177,595 @@ int __glXDisp_IsTextureEXT(__GLXclientState *cl, GLbyte *pc)
pc += __GLX_VENDPRIV_HDR_SIZE;
if ( cx != NULL ) {
- GLboolean retval;
- retval = CALL_IsTextureEXT( GET_DISPATCH(), (
- *(GLuint *)(pc + 0)
+ const GLenum pname = *(GLenum *)(pc + 4);
+
+ const GLuint compsize = __glGetProgramivARB_size(pname);
+ GLint answerBuffer[200];
+ GLint * params = __glXGetAnswerBuffer(cl, compsize * 4, answerBuffer, sizeof(answerBuffer), 4);
+
+ if (params == NULL) return BadAlloc;
+ __glXClearErrorOccured();
+
+ CALL_GetProgramivARB( GET_DISPATCH(), (
+ *(GLenum *)(pc + 0),
+ pname,
+ params
) );
- __glXSendReply(cl->client, dummy_answer, 0, 0, GL_FALSE, retval);
+ __glXSendReply(cl->client, params, compsize, 4, GL_FALSE, 0);
error = Success;
}
return error;
}
-void __glXDisp_SampleMaskSGIS(GLbyte * pc)
+int __glXDisp_GetVertexAttribdvARB(__GLXclientState *cl, GLbyte *pc)
{
- CALL_SampleMaskSGIS( GET_DISPATCH(), (
- *(GLclampf *)(pc + 0),
- *(GLboolean *)(pc + 4)
- ) );
+ xGLXVendorPrivateReq * const req = (xGLXVendorPrivateReq *) pc;
+ int error;
+ __GLXcontext * const cx = __glXForceCurrent(cl, req->contextTag, &error);
+
+ pc += __GLX_VENDPRIV_HDR_SIZE;
+ if ( cx != NULL ) {
+ const GLenum pname = *(GLenum *)(pc + 4);
+
+ const GLuint compsize = __glGetVertexAttribdvARB_size(pname);
+ GLdouble answerBuffer[200];
+ GLdouble * params = __glXGetAnswerBuffer(cl, compsize * 8, answerBuffer, sizeof(answerBuffer), 8);
+
+ if (params == NULL) return BadAlloc;
+ __glXClearErrorOccured();
+
+ CALL_GetVertexAttribdvARB( GET_DISPATCH(), (
+ *(GLuint *)(pc + 0),
+ pname,
+ params
+ ) );
+ __glXSendReply(cl->client, params, compsize, 8, GL_FALSE, 0);
+ error = Success;
+ }
+
+ return error;
}
-void __glXDisp_SamplePatternSGIS(GLbyte * pc)
+int __glXDisp_GetVertexAttribfvARB(__GLXclientState *cl, GLbyte *pc)
{
- CALL_SamplePatternSGIS( GET_DISPATCH(), (
- *(GLenum *)(pc + 0)
- ) );
+ xGLXVendorPrivateReq * const req = (xGLXVendorPrivateReq *) pc;
+ int error;
+ __GLXcontext * const cx = __glXForceCurrent(cl, req->contextTag, &error);
+
+ pc += __GLX_VENDPRIV_HDR_SIZE;
+ if ( cx != NULL ) {
+ const GLenum pname = *(GLenum *)(pc + 4);
+
+ const GLuint compsize = __glGetVertexAttribfvARB_size(pname);
+ GLfloat answerBuffer[200];
+ GLfloat * params = __glXGetAnswerBuffer(cl, compsize * 4, answerBuffer, sizeof(answerBuffer), 4);
+
+ if (params == NULL) return BadAlloc;
+ __glXClearErrorOccured();
+
+ CALL_GetVertexAttribfvARB( GET_DISPATCH(), (
+ *(GLuint *)(pc + 0),
+ pname,
+ params
+ ) );
+ __glXSendReply(cl->client, params, compsize, 4, GL_FALSE, 0);
+ error = Success;
+ }
+
+ return error;
}
-void __glXDisp_PointParameterfEXT(GLbyte * pc)
+int __glXDisp_GetVertexAttribivARB(__GLXclientState *cl, GLbyte *pc)
{
- CALL_PointParameterfEXT( GET_DISPATCH(), (
+ xGLXVendorPrivateReq * const req = (xGLXVendorPrivateReq *) pc;
+ int error;
+ __GLXcontext * const cx = __glXForceCurrent(cl, req->contextTag, &error);
+
+ pc += __GLX_VENDPRIV_HDR_SIZE;
+ if ( cx != NULL ) {
+ const GLenum pname = *(GLenum *)(pc + 4);
+
+ const GLuint compsize = __glGetVertexAttribivARB_size(pname);
+ GLint answerBuffer[200];
+ GLint * params = __glXGetAnswerBuffer(cl, compsize * 4, answerBuffer, sizeof(answerBuffer), 4);
+
+ if (params == NULL) return BadAlloc;
+ __glXClearErrorOccured();
+
+ CALL_GetVertexAttribivARB( GET_DISPATCH(), (
+ *(GLuint *)(pc + 0),
+ pname,
+ params
+ ) );
+ __glXSendReply(cl->client, params, compsize, 4, GL_FALSE, 0);
+ error = Success;
+ }
+
+ return error;
+}
+
+void __glXDisp_ProgramEnvParameter4dvARB(GLbyte * pc)
+{
+#ifdef __GLX_ALIGN64
+ if ((unsigned long)(pc) & 7) {
+ (void) memmove(pc-4, pc, 40);
+ pc -= 4;
+ }
+#endif
+
+ CALL_ProgramEnvParameter4dvARB( GET_DISPATCH(), (
*(GLenum *)(pc + 0),
- *(GLfloat *)(pc + 4)
+ *(GLuint *)(pc + 4),
+ (const GLdouble *)(pc + 8)
) );
}
-void __glXDisp_PointParameterfvEXT(GLbyte * pc)
+void __glXDisp_ProgramEnvParameter4fvARB(GLbyte * pc)
{
- const GLenum pname = *(GLenum *)(pc + 0);
- const GLfloat * params;
+ CALL_ProgramEnvParameter4fvARB( GET_DISPATCH(), (
+ *(GLenum *)(pc + 0),
+ *(GLuint *)(pc + 4),
+ (const GLfloat *)(pc + 8)
+ ) );
+}
- params = (const GLfloat *) (pc + 4);
+void __glXDisp_ProgramLocalParameter4dvARB(GLbyte * pc)
+{
+#ifdef __GLX_ALIGN64
+ if ((unsigned long)(pc) & 7) {
+ (void) memmove(pc-4, pc, 40);
+ pc -= 4;
+ }
+#endif
- CALL_PointParameterfvEXT( GET_DISPATCH(), (
- pname,
- params
+ CALL_ProgramLocalParameter4dvARB( GET_DISPATCH(), (
+ *(GLenum *)(pc + 0),
+ *(GLuint *)(pc + 4),
+ (const GLdouble *)(pc + 8)
) );
}
-void __glXDisp_WindowPos3fvMESA(GLbyte * pc)
+void __glXDisp_ProgramLocalParameter4fvARB(GLbyte * pc)
{
- CALL_WindowPos3fvMESA( GET_DISPATCH(), (
- (const GLfloat *)(pc + 0)
+ CALL_ProgramLocalParameter4fvARB( GET_DISPATCH(), (
+ *(GLenum *)(pc + 0),
+ *(GLuint *)(pc + 4),
+ (const GLfloat *)(pc + 8)
) );
}
-void __glXDisp_BlendFuncSeparateEXT(GLbyte * pc)
+void __glXDisp_ProgramStringARB(GLbyte * pc)
{
- CALL_BlendFuncSeparateEXT( GET_DISPATCH(), (
+ const GLsizei len = *(GLsizei *)(pc + 8);
+
+ CALL_ProgramStringARB( GET_DISPATCH(), (
*(GLenum *)(pc + 0),
*(GLenum *)(pc + 4),
- *(GLenum *)(pc + 8),
- *(GLenum *)(pc + 12)
+ len,
+ (const GLvoid *)(pc + 12)
) );
}
-void __glXDisp_FogCoordfvEXT(GLbyte * pc)
+void __glXDisp_VertexAttrib1dvARB(GLbyte * pc)
{
- CALL_FogCoordfvEXT( GET_DISPATCH(), (
- (const GLfloat *)(pc + 0)
+#ifdef __GLX_ALIGN64
+ if ((unsigned long)(pc) & 7) {
+ (void) memmove(pc-4, pc, 12);
+ pc -= 4;
+ }
+#endif
+
+ CALL_VertexAttrib1dvARB( GET_DISPATCH(), (
+ *(GLuint *)(pc + 0),
+ (const GLdouble *)(pc + 4)
) );
}
-void __glXDisp_FogCoorddvEXT(GLbyte * pc)
+void __glXDisp_VertexAttrib1fvARB(GLbyte * pc)
+{
+ CALL_VertexAttrib1fvARB( GET_DISPATCH(), (
+ *(GLuint *)(pc + 0),
+ (const GLfloat *)(pc + 4)
+ ) );
+}
+
+void __glXDisp_VertexAttrib1svARB(GLbyte * pc)
+{
+ CALL_VertexAttrib1svARB( GET_DISPATCH(), (
+ *(GLuint *)(pc + 0),
+ (const GLshort *)(pc + 4)
+ ) );
+}
+
+void __glXDisp_VertexAttrib2dvARB(GLbyte * pc)
{
#ifdef __GLX_ALIGN64
if ((unsigned long)(pc) & 7) {
- (void) memmove(pc-4, pc, 8);
+ (void) memmove(pc-4, pc, 20);
pc -= 4;
}
#endif
- CALL_FogCoorddvEXT( GET_DISPATCH(), (
- (const GLdouble *)(pc + 0)
+ CALL_VertexAttrib2dvARB( GET_DISPATCH(), (
+ *(GLuint *)(pc + 0),
+ (const GLdouble *)(pc + 4)
) );
}
-void __glXDisp_CompressedTexImage3DARB(GLbyte * pc)
+void __glXDisp_VertexAttrib2fvARB(GLbyte * pc)
{
- const GLsizei imageSize = *(GLsizei *)(pc + 28);
+ CALL_VertexAttrib2fvARB( GET_DISPATCH(), (
+ *(GLuint *)(pc + 0),
+ (const GLfloat *)(pc + 4)
+ ) );
+}
- CALL_CompressedTexImage3DARB( GET_DISPATCH(), (
- *(GLenum *)(pc + 0),
- *(GLint *)(pc + 4),
- *(GLenum *)(pc + 8),
- *(GLsizei *)(pc + 12),
- *(GLsizei *)(pc + 16),
- *(GLsizei *)(pc + 20),
- *(GLint *)(pc + 24),
- imageSize,
- (const GLvoid *)(pc + 32)
+void __glXDisp_VertexAttrib2svARB(GLbyte * pc)
+{
+ CALL_VertexAttrib2svARB( GET_DISPATCH(), (
+ *(GLuint *)(pc + 0),
+ (const GLshort *)(pc + 4)
) );
}
-void __glXDisp_CompressedTexImage2DARB(GLbyte * pc)
+void __glXDisp_VertexAttrib3dvARB(GLbyte * pc)
{
- const GLsizei imageSize = *(GLsizei *)(pc + 24);
+#ifdef __GLX_ALIGN64
+ if ((unsigned long)(pc) & 7) {
+ (void) memmove(pc-4, pc, 28);
+ pc -= 4;
+ }
+#endif
- CALL_CompressedTexImage2DARB( GET_DISPATCH(), (
- *(GLenum *)(pc + 0),
- *(GLint *)(pc + 4),
- *(GLenum *)(pc + 8),
- *(GLsizei *)(pc + 12),
- *(GLsizei *)(pc + 16),
- *(GLint *)(pc + 20),
- imageSize,
- (const GLvoid *)(pc + 28)
+ CALL_VertexAttrib3dvARB( GET_DISPATCH(), (
+ *(GLuint *)(pc + 0),
+ (const GLdouble *)(pc + 4)
) );
}
-void __glXDisp_CompressedTexImage1DARB(GLbyte * pc)
+void __glXDisp_VertexAttrib3fvARB(GLbyte * pc)
{
- const GLsizei imageSize = *(GLsizei *)(pc + 20);
+ CALL_VertexAttrib3fvARB( GET_DISPATCH(), (
+ *(GLuint *)(pc + 0),
+ (const GLfloat *)(pc + 4)
+ ) );
+}
- CALL_CompressedTexImage1DARB( GET_DISPATCH(), (
- *(GLenum *)(pc + 0),
- *(GLint *)(pc + 4),
- *(GLenum *)(pc + 8),
- *(GLsizei *)(pc + 12),
- *(GLint *)(pc + 16),
- imageSize,
- (const GLvoid *)(pc + 24)
+void __glXDisp_VertexAttrib3svARB(GLbyte * pc)
+{
+ CALL_VertexAttrib3svARB( GET_DISPATCH(), (
+ *(GLuint *)(pc + 0),
+ (const GLshort *)(pc + 4)
) );
}
-void __glXDisp_CompressedTexSubImage3DARB(GLbyte * pc)
+void __glXDisp_VertexAttrib4NbvARB(GLbyte * pc)
{
- const GLsizei imageSize = *(GLsizei *)(pc + 36);
+ CALL_VertexAttrib4NbvARB( GET_DISPATCH(), (
+ *(GLuint *)(pc + 0),
+ (const GLbyte *)(pc + 4)
+ ) );
+}
- CALL_CompressedTexSubImage3DARB( GET_DISPATCH(), (
- *(GLenum *)(pc + 0),
- *(GLint *)(pc + 4),
- *(GLint *)(pc + 8),
- *(GLint *)(pc + 12),
- *(GLint *)(pc + 16),
- *(GLsizei *)(pc + 20),
- *(GLsizei *)(pc + 24),
- *(GLsizei *)(pc + 28),
- *(GLenum *)(pc + 32),
- imageSize,
- (const GLvoid *)(pc + 40)
+void __glXDisp_VertexAttrib4NivARB(GLbyte * pc)
+{
+ CALL_VertexAttrib4NivARB( GET_DISPATCH(), (
+ *(GLuint *)(pc + 0),
+ (const GLint *)(pc + 4)
) );
}
-void __glXDisp_CompressedTexSubImage2DARB(GLbyte * pc)
+void __glXDisp_VertexAttrib4NsvARB(GLbyte * pc)
{
- const GLsizei imageSize = *(GLsizei *)(pc + 28);
+ CALL_VertexAttrib4NsvARB( GET_DISPATCH(), (
+ *(GLuint *)(pc + 0),
+ (const GLshort *)(pc + 4)
+ ) );
+}
- CALL_CompressedTexSubImage2DARB( GET_DISPATCH(), (
+void __glXDisp_VertexAttrib4NubvARB(GLbyte * pc)
+{
+ CALL_VertexAttrib4NubvARB( GET_DISPATCH(), (
+ *(GLuint *)(pc + 0),
+ (const GLubyte *)(pc + 4)
+ ) );
+}
+
+void __glXDisp_VertexAttrib4NuivARB(GLbyte * pc)
+{
+ CALL_VertexAttrib4NuivARB( GET_DISPATCH(), (
+ *(GLuint *)(pc + 0),
+ (const GLuint *)(pc + 4)
+ ) );
+}
+
+void __glXDisp_VertexAttrib4NusvARB(GLbyte * pc)
+{
+ CALL_VertexAttrib4NusvARB( GET_DISPATCH(), (
+ *(GLuint *)(pc + 0),
+ (const GLushort *)(pc + 4)
+ ) );
+}
+
+void __glXDisp_VertexAttrib4bvARB(GLbyte * pc)
+{
+ CALL_VertexAttrib4bvARB( GET_DISPATCH(), (
+ *(GLuint *)(pc + 0),
+ (const GLbyte *)(pc + 4)
+ ) );
+}
+
+void __glXDisp_VertexAttrib4dvARB(GLbyte * pc)
+{
+#ifdef __GLX_ALIGN64
+ if ((unsigned long)(pc) & 7) {
+ (void) memmove(pc-4, pc, 36);
+ pc -= 4;
+ }
+#endif
+
+ CALL_VertexAttrib4dvARB( GET_DISPATCH(), (
+ *(GLuint *)(pc + 0),
+ (const GLdouble *)(pc + 4)
+ ) );
+}
+
+void __glXDisp_VertexAttrib4fvARB(GLbyte * pc)
+{
+ CALL_VertexAttrib4fvARB( GET_DISPATCH(), (
+ *(GLuint *)(pc + 0),
+ (const GLfloat *)(pc + 4)
+ ) );
+}
+
+void __glXDisp_VertexAttrib4ivARB(GLbyte * pc)
+{
+ CALL_VertexAttrib4ivARB( GET_DISPATCH(), (
+ *(GLuint *)(pc + 0),
+ (const GLint *)(pc + 4)
+ ) );
+}
+
+void __glXDisp_VertexAttrib4svARB(GLbyte * pc)
+{
+ CALL_VertexAttrib4svARB( GET_DISPATCH(), (
+ *(GLuint *)(pc + 0),
+ (const GLshort *)(pc + 4)
+ ) );
+}
+
+void __glXDisp_VertexAttrib4ubvARB(GLbyte * pc)
+{
+ CALL_VertexAttrib4ubvARB( GET_DISPATCH(), (
+ *(GLuint *)(pc + 0),
+ (const GLubyte *)(pc + 4)
+ ) );
+}
+
+void __glXDisp_VertexAttrib4uivARB(GLbyte * pc)
+{
+ CALL_VertexAttrib4uivARB( GET_DISPATCH(), (
+ *(GLuint *)(pc + 0),
+ (const GLuint *)(pc + 4)
+ ) );
+}
+
+void __glXDisp_VertexAttrib4usvARB(GLbyte * pc)
+{
+ CALL_VertexAttrib4usvARB( GET_DISPATCH(), (
+ *(GLuint *)(pc + 0),
+ (const GLushort *)(pc + 4)
+ ) );
+}
+
+void __glXDisp_BeginQueryARB(GLbyte * pc)
+{
+ CALL_BeginQueryARB( GET_DISPATCH(), (
*(GLenum *)(pc + 0),
- *(GLint *)(pc + 4),
- *(GLint *)(pc + 8),
- *(GLint *)(pc + 12),
- *(GLsizei *)(pc + 16),
- *(GLsizei *)(pc + 20),
- *(GLenum *)(pc + 24),
- imageSize,
- (const GLvoid *)(pc + 32)
+ *(GLuint *)(pc + 4)
) );
}
-void __glXDisp_CompressedTexSubImage1DARB(GLbyte * pc)
+int __glXDisp_DeleteQueriesARB(__GLXclientState *cl, GLbyte *pc)
{
- const GLsizei imageSize = *(GLsizei *)(pc + 20);
+ xGLXSingleReq * const req = (xGLXSingleReq *) pc;
+ int error;
+ __GLXcontext * const cx = __glXForceCurrent(cl, req->contextTag, &error);
- CALL_CompressedTexSubImage1DARB( GET_DISPATCH(), (
+ pc += __GLX_SINGLE_HDR_SIZE;
+ if ( cx != NULL ) {
+ const GLsizei n = *(GLsizei *)(pc + 0);
+
+ CALL_DeleteQueriesARB( GET_DISPATCH(), (
+ n,
+ (const GLuint *)(pc + 4)
+ ) );
+ error = Success;
+ }
+
+ return error;
+}
+
+void __glXDisp_EndQueryARB(GLbyte * pc)
+{
+ CALL_EndQueryARB( GET_DISPATCH(), (
+ *(GLenum *)(pc + 0)
+ ) );
+}
+
+int __glXDisp_GenQueriesARB(__GLXclientState *cl, GLbyte *pc)
+{
+ xGLXSingleReq * const req = (xGLXSingleReq *) pc;
+ int error;
+ __GLXcontext * const cx = __glXForceCurrent(cl, req->contextTag, &error);
+
+ pc += __GLX_SINGLE_HDR_SIZE;
+ if ( cx != NULL ) {
+ const GLsizei n = *(GLsizei *)(pc + 0);
+
+ GLuint answerBuffer[200];
+ GLuint * ids = __glXGetAnswerBuffer(cl, n * 4, answerBuffer, sizeof(answerBuffer), 4);
+ CALL_GenQueriesARB( GET_DISPATCH(), (
+ n,
+ ids
+ ) );
+ __glXSendReply(cl->client, ids, n, 4, GL_TRUE, 0);
+ error = Success;
+ }
+
+ return error;
+}
+
+int __glXDisp_GetQueryObjectivARB(__GLXclientState *cl, GLbyte *pc)
+{
+ xGLXSingleReq * const req = (xGLXSingleReq *) pc;
+ int error;
+ __GLXcontext * const cx = __glXForceCurrent(cl, req->contextTag, &error);
+
+ pc += __GLX_SINGLE_HDR_SIZE;
+ if ( cx != NULL ) {
+ const GLenum pname = *(GLenum *)(pc + 4);
+
+ const GLuint compsize = __glGetQueryObjectivARB_size(pname);
+ GLint answerBuffer[200];
+ GLint * params = __glXGetAnswerBuffer(cl, compsize * 4, answerBuffer, sizeof(answerBuffer), 4);
+
+ if (params == NULL) return BadAlloc;
+ __glXClearErrorOccured();
+
+ CALL_GetQueryObjectivARB( GET_DISPATCH(), (
+ *(GLuint *)(pc + 0),
+ pname,
+ params
+ ) );
+ __glXSendReply(cl->client, params, compsize, 4, GL_FALSE, 0);
+ error = Success;
+ }
+
+ return error;
+}
+
+int __glXDisp_GetQueryObjectuivARB(__GLXclientState *cl, GLbyte *pc)
+{
+ xGLXSingleReq * const req = (xGLXSingleReq *) pc;
+ int error;
+ __GLXcontext * const cx = __glXForceCurrent(cl, req->contextTag, &error);
+
+ pc += __GLX_SINGLE_HDR_SIZE;
+ if ( cx != NULL ) {
+ const GLenum pname = *(GLenum *)(pc + 4);
+
+ const GLuint compsize = __glGetQueryObjectuivARB_size(pname);
+ GLuint answerBuffer[200];
+ GLuint * params = __glXGetAnswerBuffer(cl, compsize * 4, answerBuffer, sizeof(answerBuffer), 4);
+
+ if (params == NULL) return BadAlloc;
+ __glXClearErrorOccured();
+
+ CALL_GetQueryObjectuivARB( GET_DISPATCH(), (
+ *(GLuint *)(pc + 0),
+ pname,
+ params
+ ) );
+ __glXSendReply(cl->client, params, compsize, 4, GL_FALSE, 0);
+ error = Success;
+ }
+
+ return error;
+}
+
+int __glXDisp_GetQueryivARB(__GLXclientState *cl, GLbyte *pc)
+{
+ xGLXSingleReq * const req = (xGLXSingleReq *) pc;
+ int error;
+ __GLXcontext * const cx = __glXForceCurrent(cl, req->contextTag, &error);
+
+ pc += __GLX_SINGLE_HDR_SIZE;
+ if ( cx != NULL ) {
+ const GLenum pname = *(GLenum *)(pc + 4);
+
+ const GLuint compsize = __glGetQueryivARB_size(pname);
+ GLint answerBuffer[200];
+ GLint * params = __glXGetAnswerBuffer(cl, compsize * 4, answerBuffer, sizeof(answerBuffer), 4);
+
+ if (params == NULL) return BadAlloc;
+ __glXClearErrorOccured();
+
+ CALL_GetQueryivARB( GET_DISPATCH(), (
+ *(GLenum *)(pc + 0),
+ pname,
+ params
+ ) );
+ __glXSendReply(cl->client, params, compsize, 4, GL_FALSE, 0);
+ error = Success;
+ }
+
+ return error;
+}
+
+int __glXDisp_IsQueryARB(__GLXclientState *cl, GLbyte *pc)
+{
+ xGLXSingleReq * const req = (xGLXSingleReq *) pc;
+ int error;
+ __GLXcontext * const cx = __glXForceCurrent(cl, req->contextTag, &error);
+
+ pc += __GLX_SINGLE_HDR_SIZE;
+ if ( cx != NULL ) {
+ GLboolean retval;
+ retval = CALL_IsQueryARB( GET_DISPATCH(), (
+ *(GLuint *)(pc + 0)
+ ) );
+ __glXSendReply(cl->client, dummy_answer, 0, 0, GL_FALSE, retval);
+ error = Success;
+ }
+
+ return error;
+}
+
+void __glXDisp_DrawBuffersARB(GLbyte * pc)
+{
+ const GLsizei n = *(GLsizei *)(pc + 0);
+
+ CALL_DrawBuffersARB( GET_DISPATCH(), (
+ n,
+ (const GLenum *)(pc + 4)
+ ) );
+}
+
+void __glXDisp_SampleMaskSGIS(GLbyte * pc)
+{
+ CALL_SampleMaskSGIS( GET_DISPATCH(), (
+ *(GLclampf *)(pc + 0),
+ *(GLboolean *)(pc + 4)
+ ) );
+}
+
+void __glXDisp_SamplePatternSGIS(GLbyte * pc)
+{
+ CALL_SamplePatternSGIS( GET_DISPATCH(), (
+ *(GLenum *)(pc + 0)
+ ) );
+}
+
+void __glXDisp_PointParameterfEXT(GLbyte * pc)
+{
+ CALL_PointParameterfEXT( GET_DISPATCH(), (
*(GLenum *)(pc + 0),
- *(GLint *)(pc + 4),
- *(GLint *)(pc + 8),
- *(GLsizei *)(pc + 12),
- *(GLenum *)(pc + 16),
- imageSize,
- (const GLvoid *)(pc + 24)
+ *(GLfloat *)(pc + 4)
+ ) );
+}
+
+void __glXDisp_PointParameterfvEXT(GLbyte * pc)
+{
+ const GLenum pname = *(GLenum *)(pc + 0);
+ const GLfloat * params;
+
+ params = (const GLfloat *) (pc + 4);
+
+ CALL_PointParameterfvEXT( GET_DISPATCH(), (
+ pname,
+ params
) );
}
@@ -3980,6 +4832,44 @@ void __glXDisp_SecondaryColor3usvEXT(GLbyte * pc)
) );
}
+void __glXDisp_FogCoorddvEXT(GLbyte * pc)
+{
+#ifdef __GLX_ALIGN64
+ if ((unsigned long)(pc) & 7) {
+ (void) memmove(pc-4, pc, 8);
+ pc -= 4;
+ }
+#endif
+
+ CALL_FogCoorddvEXT( GET_DISPATCH(), (
+ (const GLdouble *)(pc + 0)
+ ) );
+}
+
+void __glXDisp_FogCoordfvEXT(GLbyte * pc)
+{
+ CALL_FogCoordfvEXT( GET_DISPATCH(), (
+ (const GLfloat *)(pc + 0)
+ ) );
+}
+
+void __glXDisp_BlendFuncSeparateEXT(GLbyte * pc)
+{
+ CALL_BlendFuncSeparateEXT( GET_DISPATCH(), (
+ *(GLenum *)(pc + 0),
+ *(GLenum *)(pc + 4),
+ *(GLenum *)(pc + 8),
+ *(GLenum *)(pc + 12)
+ ) );
+}
+
+void __glXDisp_WindowPos3fvMESA(GLbyte * pc)
+{
+ CALL_WindowPos3fvMESA( GET_DISPATCH(), (
+ (const GLfloat *)(pc + 0)
+ ) );
+}
+
int __glXDisp_AreProgramsResidentNV(__GLXclientState *cl, GLbyte *pc)
{
xGLXVendorPrivateReq * const req = (xGLXVendorPrivateReq *) pc;
@@ -4160,7 +5050,7 @@ int __glXDisp_GetTrackMatrixivNV(__GLXclientState *cl, GLbyte *pc)
return error;
}
-int __glXDisp_GetVertexAttribdvARB(__GLXclientState *cl, GLbyte *pc)
+int __glXDisp_GetVertexAttribdvNV(__GLXclientState *cl, GLbyte *pc)
{
xGLXVendorPrivateReq * const req = (xGLXVendorPrivateReq *) pc;
int error;
@@ -4170,14 +5060,14 @@ int __glXDisp_GetVertexAttribdvARB(__GLXclientState *cl, GLbyte *pc)
if ( cx != NULL ) {
const GLenum pname = *(GLenum *)(pc + 4);
- const GLuint compsize = __glGetVertexAttribdvARB_size(pname);
+ const GLuint compsize = __glGetVertexAttribdvNV_size(pname);
GLdouble answerBuffer[200];
GLdouble * params = __glXGetAnswerBuffer(cl, compsize * 8, answerBuffer, sizeof(answerBuffer), 8);
if (params == NULL) return BadAlloc;
__glXClearErrorOccured();
- CALL_GetVertexAttribdvARB( GET_DISPATCH(), (
+ CALL_GetVertexAttribdvNV( GET_DISPATCH(), (
*(GLuint *)(pc + 0),
pname,
params
@@ -4189,7 +5079,7 @@ int __glXDisp_GetVertexAttribdvARB(__GLXclientState *cl, GLbyte *pc)
return error;
}
-int __glXDisp_GetVertexAttribfvARB(__GLXclientState *cl, GLbyte *pc)
+int __glXDisp_GetVertexAttribfvNV(__GLXclientState *cl, GLbyte *pc)
{
xGLXVendorPrivateReq * const req = (xGLXVendorPrivateReq *) pc;
int error;
@@ -4199,14 +5089,14 @@ int __glXDisp_GetVertexAttribfvARB(__GLXclientState *cl, GLbyte *pc)
if ( cx != NULL ) {
const GLenum pname = *(GLenum *)(pc + 4);
- const GLuint compsize = __glGetVertexAttribfvARB_size(pname);
+ const GLuint compsize = __glGetVertexAttribfvNV_size(pname);
GLfloat answerBuffer[200];
GLfloat * params = __glXGetAnswerBuffer(cl, compsize * 4, answerBuffer, sizeof(answerBuffer), 4);
if (params == NULL) return BadAlloc;
__glXClearErrorOccured();
- CALL_GetVertexAttribfvARB( GET_DISPATCH(), (
+ CALL_GetVertexAttribfvNV( GET_DISPATCH(), (
*(GLuint *)(pc + 0),
pname,
params
@@ -4218,7 +5108,7 @@ int __glXDisp_GetVertexAttribfvARB(__GLXclientState *cl, GLbyte *pc)
return error;
}
-int __glXDisp_GetVertexAttribivARB(__GLXclientState *cl, GLbyte *pc)
+int __glXDisp_GetVertexAttribivNV(__GLXclientState *cl, GLbyte *pc)
{
xGLXVendorPrivateReq * const req = (xGLXVendorPrivateReq *) pc;
int error;
@@ -4228,14 +5118,14 @@ int __glXDisp_GetVertexAttribivARB(__GLXclientState *cl, GLbyte *pc)
if ( cx != NULL ) {
const GLenum pname = *(GLenum *)(pc + 4);
- const GLuint compsize = __glGetVertexAttribivARB_size(pname);
+ const GLuint compsize = __glGetVertexAttribivNV_size(pname);
GLint answerBuffer[200];
GLint * params = __glXGetAnswerBuffer(cl, compsize * 4, answerBuffer, sizeof(answerBuffer), 4);
if (params == NULL) return BadAlloc;
__glXClearErrorOccured();
- CALL_GetVertexAttribivARB( GET_DISPATCH(), (
+ CALL_GetVertexAttribivNV( GET_DISPATCH(), (
*(GLuint *)(pc + 0),
pname,
params
@@ -4355,7 +5245,7 @@ void __glXDisp_TrackMatrixNV(GLbyte * pc)
) );
}
-void __glXDisp_VertexAttrib1dvARB(GLbyte * pc)
+void __glXDisp_VertexAttrib1dvNV(GLbyte * pc)
{
#ifdef __GLX_ALIGN64
if ((unsigned long)(pc) & 7) {
@@ -4364,29 +5254,29 @@ void __glXDisp_VertexAttrib1dvARB(GLbyte * pc)
}
#endif
- CALL_VertexAttrib1dvARB( GET_DISPATCH(), (
- *(GLuint *)(pc + 8),
- (const GLdouble *)(pc + 0)
+ CALL_VertexAttrib1dvNV( GET_DISPATCH(), (
+ *(GLuint *)(pc + 0),
+ (const GLdouble *)(pc + 4)
) );
}
-void __glXDisp_VertexAttrib1fvARB(GLbyte * pc)
+void __glXDisp_VertexAttrib1fvNV(GLbyte * pc)
{
- CALL_VertexAttrib1fvARB( GET_DISPATCH(), (
+ CALL_VertexAttrib1fvNV( GET_DISPATCH(), (
*(GLuint *)(pc + 0),
(const GLfloat *)(pc + 4)
) );
}
-void __glXDisp_VertexAttrib1svARB(GLbyte * pc)
+void __glXDisp_VertexAttrib1svNV(GLbyte * pc)
{
- CALL_VertexAttrib1svARB( GET_DISPATCH(), (
+ CALL_VertexAttrib1svNV( GET_DISPATCH(), (
*(GLuint *)(pc + 0),
(const GLshort *)(pc + 4)
) );
}
-void __glXDisp_VertexAttrib2dvARB(GLbyte * pc)
+void __glXDisp_VertexAttrib2dvNV(GLbyte * pc)
{
#ifdef __GLX_ALIGN64
if ((unsigned long)(pc) & 7) {
@@ -4395,29 +5285,29 @@ void __glXDisp_VertexAttrib2dvARB(GLbyte * pc)
}
#endif
- CALL_VertexAttrib2dvARB( GET_DISPATCH(), (
- *(GLuint *)(pc + 16),
- (const GLdouble *)(pc + 0)
+ CALL_VertexAttrib2dvNV( GET_DISPATCH(), (
+ *(GLuint *)(pc + 0),
+ (const GLdouble *)(pc + 4)
) );
}
-void __glXDisp_VertexAttrib2fvARB(GLbyte * pc)
+void __glXDisp_VertexAttrib2fvNV(GLbyte * pc)
{
- CALL_VertexAttrib2fvARB( GET_DISPATCH(), (
+ CALL_VertexAttrib2fvNV( GET_DISPATCH(), (
*(GLuint *)(pc + 0),
(const GLfloat *)(pc + 4)
) );
}
-void __glXDisp_VertexAttrib2svARB(GLbyte * pc)
+void __glXDisp_VertexAttrib2svNV(GLbyte * pc)
{
- CALL_VertexAttrib2svARB( GET_DISPATCH(), (
+ CALL_VertexAttrib2svNV( GET_DISPATCH(), (
*(GLuint *)(pc + 0),
(const GLshort *)(pc + 4)
) );
}
-void __glXDisp_VertexAttrib3dvARB(GLbyte * pc)
+void __glXDisp_VertexAttrib3dvNV(GLbyte * pc)
{
#ifdef __GLX_ALIGN64
if ((unsigned long)(pc) & 7) {
@@ -4426,29 +5316,29 @@ void __glXDisp_VertexAttrib3dvARB(GLbyte * pc)
}
#endif
- CALL_VertexAttrib3dvARB( GET_DISPATCH(), (
- *(GLuint *)(pc + 24),
- (const GLdouble *)(pc + 0)
+ CALL_VertexAttrib3dvNV( GET_DISPATCH(), (
+ *(GLuint *)(pc + 0),
+ (const GLdouble *)(pc + 4)
) );
}
-void __glXDisp_VertexAttrib3fvARB(GLbyte * pc)
+void __glXDisp_VertexAttrib3fvNV(GLbyte * pc)
{
- CALL_VertexAttrib3fvARB( GET_DISPATCH(), (
+ CALL_VertexAttrib3fvNV( GET_DISPATCH(), (
*(GLuint *)(pc + 0),
(const GLfloat *)(pc + 4)
) );
}
-void __glXDisp_VertexAttrib3svARB(GLbyte * pc)
+void __glXDisp_VertexAttrib3svNV(GLbyte * pc)
{
- CALL_VertexAttrib3svARB( GET_DISPATCH(), (
+ CALL_VertexAttrib3svNV( GET_DISPATCH(), (
*(GLuint *)(pc + 0),
(const GLshort *)(pc + 4)
) );
}
-void __glXDisp_VertexAttrib4dvARB(GLbyte * pc)
+void __glXDisp_VertexAttrib4dvNV(GLbyte * pc)
{
#ifdef __GLX_ALIGN64
if ((unsigned long)(pc) & 7) {
@@ -4457,31 +5347,31 @@ void __glXDisp_VertexAttrib4dvARB(GLbyte * pc)
}
#endif
- CALL_VertexAttrib4dvARB( GET_DISPATCH(), (
- *(GLuint *)(pc + 32),
- (const GLdouble *)(pc + 0)
+ CALL_VertexAttrib4dvNV( GET_DISPATCH(), (
+ *(GLuint *)(pc + 0),
+ (const GLdouble *)(pc + 4)
) );
}
-void __glXDisp_VertexAttrib4fvARB(GLbyte * pc)
+void __glXDisp_VertexAttrib4fvNV(GLbyte * pc)
{
- CALL_VertexAttrib4fvARB( GET_DISPATCH(), (
+ CALL_VertexAttrib4fvNV( GET_DISPATCH(), (
*(GLuint *)(pc + 0),
(const GLfloat *)(pc + 4)
) );
}
-void __glXDisp_VertexAttrib4svARB(GLbyte * pc)
+void __glXDisp_VertexAttrib4svNV(GLbyte * pc)
{
- CALL_VertexAttrib4svARB( GET_DISPATCH(), (
+ CALL_VertexAttrib4svNV( GET_DISPATCH(), (
*(GLuint *)(pc + 0),
(const GLshort *)(pc + 4)
) );
}
-void __glXDisp_VertexAttrib4NubvARB(GLbyte * pc)
+void __glXDisp_VertexAttrib4ubvNV(GLbyte * pc)
{
- CALL_VertexAttrib4NubvARB( GET_DISPATCH(), (
+ CALL_VertexAttrib4ubvNV( GET_DISPATCH(), (
*(GLuint *)(pc + 0),
(const GLubyte *)(pc + 4)
) );
@@ -4690,170 +5580,7 @@ void __glXDisp_ActiveStencilFaceEXT(GLbyte * pc)
) );
}
-void __glXDisp_VertexAttrib4bvARB(GLbyte * pc)
-{
- CALL_VertexAttrib4bvARB( GET_DISPATCH(), (
- *(GLuint *)(pc + 0),
- (const GLbyte *)(pc + 4)
- ) );
-}
-
-void __glXDisp_VertexAttrib4ivARB(GLbyte * pc)
-{
- CALL_VertexAttrib4ivARB( GET_DISPATCH(), (
- *(GLuint *)(pc + 0),
- (const GLint *)(pc + 4)
- ) );
-}
-
-void __glXDisp_VertexAttrib4ubvARB(GLbyte * pc)
-{
- CALL_VertexAttrib4ubvARB( GET_DISPATCH(), (
- *(GLuint *)(pc + 0),
- (const GLubyte *)(pc + 4)
- ) );
-}
-
-void __glXDisp_VertexAttrib4usvARB(GLbyte * pc)
-{
- CALL_VertexAttrib4usvARB( GET_DISPATCH(), (
- *(GLuint *)(pc + 0),
- (const GLushort *)(pc + 4)
- ) );
-}
-
-void __glXDisp_VertexAttrib4uivARB(GLbyte * pc)
-{
- CALL_VertexAttrib4uivARB( GET_DISPATCH(), (
- *(GLuint *)(pc + 0),
- (const GLuint *)(pc + 4)
- ) );
-}
-
-void __glXDisp_VertexAttrib4NbvARB(GLbyte * pc)
-{
- CALL_VertexAttrib4NbvARB( GET_DISPATCH(), (
- *(GLuint *)(pc + 0),
- (const GLbyte *)(pc + 4)
- ) );
-}
-
-void __glXDisp_VertexAttrib4NsvARB(GLbyte * pc)
-{
- CALL_VertexAttrib4NsvARB( GET_DISPATCH(), (
- *(GLuint *)(pc + 0),
- (const GLshort *)(pc + 4)
- ) );
-}
-
-void __glXDisp_VertexAttrib4NivARB(GLbyte * pc)
-{
- CALL_VertexAttrib4NivARB( GET_DISPATCH(), (
- *(GLuint *)(pc + 0),
- (const GLint *)(pc + 4)
- ) );
-}
-
-void __glXDisp_VertexAttrib4NusvARB(GLbyte * pc)
-{
- CALL_VertexAttrib4NusvARB( GET_DISPATCH(), (
- *(GLuint *)(pc + 0),
- (const GLushort *)(pc + 4)
- ) );
-}
-
-void __glXDisp_VertexAttrib4NuivARB(GLbyte * pc)
-{
- CALL_VertexAttrib4NuivARB( GET_DISPATCH(), (
- *(GLuint *)(pc + 0),
- (const GLuint *)(pc + 4)
- ) );
-}
-
-void __glXDisp_ProgramStringARB(GLbyte * pc)
-{
- const GLsizei len = *(GLsizei *)(pc + 8);
-
- CALL_ProgramStringARB( GET_DISPATCH(), (
- *(GLenum *)(pc + 0),
- *(GLenum *)(pc + 4),
- len,
- (const GLvoid *)(pc + 12)
- ) );
-}
-
-void __glXDisp_ProgramEnvParameter4dvARB(GLbyte * pc)
-{
-#ifdef __GLX_ALIGN64
- if ((unsigned long)(pc) & 7) {
- (void) memmove(pc-4, pc, 40);
- pc -= 4;
- }
-#endif
-
- CALL_ProgramEnvParameter4dvARB( GET_DISPATCH(), (
- *(GLenum *)(pc + 0),
- *(GLuint *)(pc + 4),
- (const GLdouble *)(pc + 8)
- ) );
-}
-
-void __glXDisp_ProgramEnvParameter4fvARB(GLbyte * pc)
-{
- CALL_ProgramEnvParameter4fvARB( GET_DISPATCH(), (
- *(GLenum *)(pc + 0),
- *(GLuint *)(pc + 4),
- (const GLfloat *)(pc + 8)
- ) );
-}
-
-void __glXDisp_ProgramLocalParameter4dvARB(GLbyte * pc)
-{
-#ifdef __GLX_ALIGN64
- if ((unsigned long)(pc) & 7) {
- (void) memmove(pc-4, pc, 40);
- pc -= 4;
- }
-#endif
-
- CALL_ProgramLocalParameter4dvARB( GET_DISPATCH(), (
- *(GLenum *)(pc + 0),
- *(GLuint *)(pc + 4),
- (const GLdouble *)(pc + 8)
- ) );
-}
-
-void __glXDisp_ProgramLocalParameter4fvARB(GLbyte * pc)
-{
- CALL_ProgramLocalParameter4fvARB( GET_DISPATCH(), (
- *(GLenum *)(pc + 0),
- *(GLuint *)(pc + 4),
- (const GLfloat *)(pc + 8)
- ) );
-}
-
-int __glXDisp_GetProgramEnvParameterdvARB(__GLXclientState *cl, GLbyte *pc)
-{
- xGLXVendorPrivateReq * const req = (xGLXVendorPrivateReq *) pc;
- int error;
- __GLXcontext * const cx = __glXForceCurrent(cl, req->contextTag, &error);
-
- pc += __GLX_VENDPRIV_HDR_SIZE;
- if ( cx != NULL ) {
- GLdouble params[4];
- CALL_GetProgramEnvParameterdvARB( GET_DISPATCH(), (
- *(GLenum *)(pc + 0),
- *(GLuint *)(pc + 4),
- params
- ) );
- __glXSendReply(cl->client, params, 4, 8, GL_FALSE, 0);
- error = Success;
- }
-
- return error;
-}
-
-int __glXDisp_GetProgramEnvParameterfvARB(__GLXclientState *cl, GLbyte *pc)
+int __glXDisp_GetProgramNamedParameterdvNV(__GLXclientState *cl, GLbyte *pc)
{
xGLXVendorPrivateReq * const req = (xGLXVendorPrivateReq *) pc;
int error;
@@ -4861,62 +5588,23 @@ int __glXDisp_GetProgramEnvParameterfvARB(__GLXclientState *cl, GLbyte *pc)
pc += __GLX_VENDPRIV_HDR_SIZE;
if ( cx != NULL ) {
- GLfloat params[4];
- CALL_GetProgramEnvParameterfvARB( GET_DISPATCH(), (
- *(GLenum *)(pc + 0),
- *(GLuint *)(pc + 4),
- params
- ) );
- __glXSendReply(cl->client, params, 4, 4, GL_FALSE, 0);
- error = Success;
- }
-
- return error;
-}
-
-int __glXDisp_GetProgramLocalParameterdvARB(__GLXclientState *cl, GLbyte *pc)
-{
- xGLXVendorPrivateReq * const req = (xGLXVendorPrivateReq *) pc;
- int error;
- __GLXcontext * const cx = __glXForceCurrent(cl, req->contextTag, &error);
+ const GLsizei len = *(GLsizei *)(pc + 4);
- pc += __GLX_VENDPRIV_HDR_SIZE;
- if ( cx != NULL ) {
GLdouble params[4];
- CALL_GetProgramLocalParameterdvARB( GET_DISPATCH(), (
- *(GLenum *)(pc + 0),
- *(GLuint *)(pc + 4),
- params
- ) );
- __glXSendReply(cl->client, params, 4, 8, GL_FALSE, 0);
- error = Success;
- }
-
- return error;
-}
-
-int __glXDisp_GetProgramLocalParameterfvARB(__GLXclientState *cl, GLbyte *pc)
-{
- xGLXVendorPrivateReq * const req = (xGLXVendorPrivateReq *) pc;
- int error;
- __GLXcontext * const cx = __glXForceCurrent(cl, req->contextTag, &error);
-
- pc += __GLX_VENDPRIV_HDR_SIZE;
- if ( cx != NULL ) {
- GLfloat params[4];
- CALL_GetProgramLocalParameterfvARB( GET_DISPATCH(), (
- *(GLenum *)(pc + 0),
- *(GLuint *)(pc + 4),
+ CALL_GetProgramNamedParameterdvNV( GET_DISPATCH(), (
+ *(GLuint *)(pc + 0),
+ len,
+ (const GLubyte *)(pc + 8),
params
) );
- __glXSendReply(cl->client, params, 4, 4, GL_FALSE, 0);
+ __glXSendReply(cl->client, params, 4, 8, GL_TRUE, 0);
error = Success;
}
return error;
}
-int __glXDisp_GetProgramivARB(__GLXclientState *cl, GLbyte *pc)
+int __glXDisp_GetProgramNamedParameterfvNV(__GLXclientState *cl, GLbyte *pc)
{
xGLXVendorPrivateReq * const req = (xGLXVendorPrivateReq *) pc;
int error;
@@ -4924,39 +5612,22 @@ int __glXDisp_GetProgramivARB(__GLXclientState *cl, GLbyte *pc)
pc += __GLX_VENDPRIV_HDR_SIZE;
if ( cx != NULL ) {
- const GLenum pname = *(GLenum *)(pc + 4);
-
- const GLuint compsize = __glGetProgramivARB_size(pname);
- GLint answerBuffer[200];
- GLint * params = __glXGetAnswerBuffer(cl, compsize * 4, answerBuffer, sizeof(answerBuffer), 4);
-
- if (params == NULL) return BadAlloc;
- __glXClearErrorOccured();
+ const GLsizei len = *(GLsizei *)(pc + 4);
- CALL_GetProgramivARB( GET_DISPATCH(), (
- *(GLenum *)(pc + 0),
- pname,
+ GLfloat params[4];
+ CALL_GetProgramNamedParameterfvNV( GET_DISPATCH(), (
+ *(GLuint *)(pc + 0),
+ len,
+ (const GLubyte *)(pc + 8),
params
) );
- __glXSendReply(cl->client, params, compsize, 4, GL_FALSE, 0);
+ __glXSendReply(cl->client, params, 4, 4, GL_TRUE, 0);
error = Success;
}
return error;
}
-void __glXDisp_ProgramNamedParameter4fvNV(GLbyte * pc)
-{
- const GLsizei len = *(GLsizei *)(pc + 4);
-
- CALL_ProgramNamedParameter4fvNV( GET_DISPATCH(), (
- *(GLuint *)(pc + 0),
- len,
- (const GLubyte *)(pc + 24),
- (const GLfloat *)(pc + 8)
- ) );
-}
-
void __glXDisp_ProgramNamedParameter4dvNV(GLbyte * pc)
{
const GLsizei len = *(GLsizei *)(pc + 36);
@@ -4977,277 +5648,43 @@ void __glXDisp_ProgramNamedParameter4dvNV(GLbyte * pc)
) );
}
-int __glXDisp_GetProgramNamedParameterfvNV(__GLXclientState *cl, GLbyte *pc)
-{
- xGLXVendorPrivateReq * const req = (xGLXVendorPrivateReq *) pc;
- int error;
- __GLXcontext * const cx = __glXForceCurrent(cl, req->contextTag, &error);
-
- pc += __GLX_VENDPRIV_HDR_SIZE;
- if ( cx != NULL ) {
- const GLsizei len = *(GLsizei *)(pc + 4);
-
- GLfloat params[4];
- CALL_GetProgramNamedParameterfvNV( GET_DISPATCH(), (
- *(GLuint *)(pc + 0),
- len,
- (const GLubyte *)(pc + 8),
- params
- ) );
- __glXSendReply(cl->client, params, 4, 4, GL_TRUE, 0);
- error = Success;
- }
-
- return error;
-}
-
-int __glXDisp_GetProgramNamedParameterdvNV(__GLXclientState *cl, GLbyte *pc)
-{
- xGLXVendorPrivateReq * const req = (xGLXVendorPrivateReq *) pc;
- int error;
- __GLXcontext * const cx = __glXForceCurrent(cl, req->contextTag, &error);
-
- pc += __GLX_VENDPRIV_HDR_SIZE;
- if ( cx != NULL ) {
- const GLsizei len = *(GLsizei *)(pc + 4);
-
- GLdouble params[4];
- CALL_GetProgramNamedParameterdvNV( GET_DISPATCH(), (
- *(GLuint *)(pc + 0),
- len,
- (const GLubyte *)(pc + 8),
- params
- ) );
- __glXSendReply(cl->client, params, 4, 8, GL_TRUE, 0);
- error = Success;
- }
-
- return error;
-}
-
-int __glXDisp_GenQueriesARB(__GLXclientState *cl, GLbyte *pc)
-{
- xGLXSingleReq * const req = (xGLXSingleReq *) pc;
- int error;
- __GLXcontext * const cx = __glXForceCurrent(cl, req->contextTag, &error);
-
- pc += __GLX_SINGLE_HDR_SIZE;
- if ( cx != NULL ) {
- const GLsizei n = *(GLsizei *)(pc + 0);
-
- GLuint answerBuffer[200];
- GLuint * ids = __glXGetAnswerBuffer(cl, n * 4, answerBuffer, sizeof(answerBuffer), 4);
- CALL_GenQueriesARB( GET_DISPATCH(), (
- n,
- ids
- ) );
- __glXSendReply(cl->client, ids, n, 4, GL_TRUE, 0);
- error = Success;
- }
-
- return error;
-}
-
-int __glXDisp_DeleteQueriesARB(__GLXclientState *cl, GLbyte *pc)
+void __glXDisp_ProgramNamedParameter4fvNV(GLbyte * pc)
{
- xGLXSingleReq * const req = (xGLXSingleReq *) pc;
- int error;
- __GLXcontext * const cx = __glXForceCurrent(cl, req->contextTag, &error);
-
- pc += __GLX_SINGLE_HDR_SIZE;
- if ( cx != NULL ) {
- const GLsizei n = *(GLsizei *)(pc + 0);
-
- CALL_DeleteQueriesARB( GET_DISPATCH(), (
- n,
- (const GLuint *)(pc + 4)
- ) );
- error = Success;
- }
+ const GLsizei len = *(GLsizei *)(pc + 4);
- return error;
+ CALL_ProgramNamedParameter4fvNV( GET_DISPATCH(), (
+ *(GLuint *)(pc + 0),
+ len,
+ (const GLubyte *)(pc + 24),
+ (const GLfloat *)(pc + 8)
+ ) );
}
-int __glXDisp_IsQueryARB(__GLXclientState *cl, GLbyte *pc)
+void __glXDisp_BlendEquationSeparateEXT(GLbyte * pc)
{
- xGLXSingleReq * const req = (xGLXSingleReq *) pc;
- int error;
- __GLXcontext * const cx = __glXForceCurrent(cl, req->contextTag, &error);
-
- pc += __GLX_SINGLE_HDR_SIZE;
- if ( cx != NULL ) {
- GLboolean retval;
- retval = CALL_IsQueryARB( GET_DISPATCH(), (
- *(GLuint *)(pc + 0)
- ) );
- __glXSendReply(cl->client, dummy_answer, 0, 0, GL_FALSE, retval);
- error = Success;
- }
-
- return error;
+ CALL_BlendEquationSeparateEXT( GET_DISPATCH(), (
+ *(GLenum *)(pc + 0),
+ *(GLenum *)(pc + 4)
+ ) );
}
-void __glXDisp_BeginQueryARB(GLbyte * pc)
+void __glXDisp_BindFramebufferEXT(GLbyte * pc)
{
- CALL_BeginQueryARB( GET_DISPATCH(), (
+ CALL_BindFramebufferEXT( GET_DISPATCH(), (
*(GLenum *)(pc + 0),
*(GLuint *)(pc + 4)
) );
}
-void __glXDisp_EndQueryARB(GLbyte * pc)
+void __glXDisp_BindRenderbufferEXT(GLbyte * pc)
{
- CALL_EndQueryARB( GET_DISPATCH(), (
- *(GLenum *)(pc + 0)
+ CALL_BindRenderbufferEXT( GET_DISPATCH(), (
+ *(GLenum *)(pc + 0),
+ *(GLuint *)(pc + 4)
) );
}
-int __glXDisp_GetQueryivARB(__GLXclientState *cl, GLbyte *pc)
-{
- xGLXSingleReq * const req = (xGLXSingleReq *) pc;
- int error;
- __GLXcontext * const cx = __glXForceCurrent(cl, req->contextTag, &error);
-
- pc += __GLX_SINGLE_HDR_SIZE;
- if ( cx != NULL ) {
- const GLenum pname = *(GLenum *)(pc + 4);
-
- const GLuint compsize = __glGetQueryivARB_size(pname);
- GLint answerBuffer[200];
- GLint * params = __glXGetAnswerBuffer(cl, compsize * 4, answerBuffer, sizeof(answerBuffer), 4);
-
- if (params == NULL) return BadAlloc;
- __glXClearErrorOccured();
-
- CALL_GetQueryivARB( GET_DISPATCH(), (
- *(GLenum *)(pc + 0),
- pname,
- params
- ) );
- __glXSendReply(cl->client, params, compsize, 4, GL_FALSE, 0);
- error = Success;
- }
-
- return error;
-}
-
-int __glXDisp_GetQueryObjectivARB(__GLXclientState *cl, GLbyte *pc)
-{
- xGLXSingleReq * const req = (xGLXSingleReq *) pc;
- int error;
- __GLXcontext * const cx = __glXForceCurrent(cl, req->contextTag, &error);
-
- pc += __GLX_SINGLE_HDR_SIZE;
- if ( cx != NULL ) {
- const GLenum pname = *(GLenum *)(pc + 4);
-
- const GLuint compsize = __glGetQueryObjectivARB_size(pname);
- GLint answerBuffer[200];
- GLint * params = __glXGetAnswerBuffer(cl, compsize * 4, answerBuffer, sizeof(answerBuffer), 4);
-
- if (params == NULL) return BadAlloc;
- __glXClearErrorOccured();
-
- CALL_GetQueryObjectivARB( GET_DISPATCH(), (
- *(GLuint *)(pc + 0),
- pname,
- params
- ) );
- __glXSendReply(cl->client, params, compsize, 4, GL_FALSE, 0);
- error = Success;
- }
-
- return error;
-}
-
-int __glXDisp_GetQueryObjectuivARB(__GLXclientState *cl, GLbyte *pc)
-{
- xGLXSingleReq * const req = (xGLXSingleReq *) pc;
- int error;
- __GLXcontext * const cx = __glXForceCurrent(cl, req->contextTag, &error);
-
- pc += __GLX_SINGLE_HDR_SIZE;
- if ( cx != NULL ) {
- const GLenum pname = *(GLenum *)(pc + 4);
-
- const GLuint compsize = __glGetQueryObjectuivARB_size(pname);
- GLuint answerBuffer[200];
- GLuint * params = __glXGetAnswerBuffer(cl, compsize * 4, answerBuffer, sizeof(answerBuffer), 4);
-
- if (params == NULL) return BadAlloc;
- __glXClearErrorOccured();
-
- CALL_GetQueryObjectuivARB( GET_DISPATCH(), (
- *(GLuint *)(pc + 0),
- pname,
- params
- ) );
- __glXSendReply(cl->client, params, compsize, 4, GL_FALSE, 0);
- error = Success;
- }
-
- return error;
-}
-
-int __glXDisp_GetVertexAttribdvNV(__GLXclientState *cl, GLbyte *pc)
-{
- xGLXVendorPrivateReq * const req = (xGLXVendorPrivateReq *) pc;
- int error;
- __GLXcontext * const cx = __glXForceCurrent(cl, req->contextTag, &error);
-
- pc += __GLX_VENDPRIV_HDR_SIZE;
- if ( cx != NULL ) {
- const GLenum pname = *(GLenum *)(pc + 4);
-
- const GLuint compsize = __glGetVertexAttribdvNV_size(pname);
- GLdouble answerBuffer[200];
- GLdouble * params = __glXGetAnswerBuffer(cl, compsize * 8, answerBuffer, sizeof(answerBuffer), 8);
-
- if (params == NULL) return BadAlloc;
- __glXClearErrorOccured();
-
- CALL_GetVertexAttribdvNV( GET_DISPATCH(), (
- *(GLuint *)(pc + 0),
- pname,
- params
- ) );
- __glXSendReply(cl->client, params, compsize, 8, GL_FALSE, 0);
- error = Success;
- }
-
- return error;
-}
-
-int __glXDisp_GetVertexAttribfvNV(__GLXclientState *cl, GLbyte *pc)
-{
- xGLXVendorPrivateReq * const req = (xGLXVendorPrivateReq *) pc;
- int error;
- __GLXcontext * const cx = __glXForceCurrent(cl, req->contextTag, &error);
-
- pc += __GLX_VENDPRIV_HDR_SIZE;
- if ( cx != NULL ) {
- const GLenum pname = *(GLenum *)(pc + 4);
-
- const GLuint compsize = __glGetVertexAttribfvNV_size(pname);
- GLfloat answerBuffer[200];
- GLfloat * params = __glXGetAnswerBuffer(cl, compsize * 4, answerBuffer, sizeof(answerBuffer), 4);
-
- if (params == NULL) return BadAlloc;
- __glXClearErrorOccured();
-
- CALL_GetVertexAttribfvNV( GET_DISPATCH(), (
- *(GLuint *)(pc + 0),
- pname,
- params
- ) );
- __glXSendReply(cl->client, params, compsize, 4, GL_FALSE, 0);
- error = Success;
- }
-
- return error;
-}
-
-int __glXDisp_GetVertexAttribivNV(__GLXclientState *cl, GLbyte *pc)
+int __glXDisp_CheckFramebufferStatusEXT(__GLXclientState *cl, GLbyte *pc)
{
xGLXVendorPrivateReq * const req = (xGLXVendorPrivateReq *) pc;
int error;
@@ -5255,160 +5692,82 @@ int __glXDisp_GetVertexAttribivNV(__GLXclientState *cl, GLbyte *pc)
pc += __GLX_VENDPRIV_HDR_SIZE;
if ( cx != NULL ) {
- const GLenum pname = *(GLenum *)(pc + 4);
-
- const GLuint compsize = __glGetVertexAttribivNV_size(pname);
- GLint answerBuffer[200];
- GLint * params = __glXGetAnswerBuffer(cl, compsize * 4, answerBuffer, sizeof(answerBuffer), 4);
-
- if (params == NULL) return BadAlloc;
- __glXClearErrorOccured();
-
- CALL_GetVertexAttribivNV( GET_DISPATCH(), (
- *(GLuint *)(pc + 0),
- pname,
- params
+ GLenum retval;
+ retval = CALL_CheckFramebufferStatusEXT( GET_DISPATCH(), (
+ *(GLenum *)(pc + 0)
) );
- __glXSendReply(cl->client, params, compsize, 4, GL_FALSE, 0);
+ __glXSendReply(cl->client, dummy_answer, 0, 0, GL_FALSE, retval);
error = Success;
}
return error;
}
-void __glXDisp_VertexAttrib1dvNV(GLbyte * pc)
-{
-#ifdef __GLX_ALIGN64
- if ((unsigned long)(pc) & 7) {
- (void) memmove(pc-4, pc, 12);
- pc -= 4;
- }
-#endif
-
- CALL_VertexAttrib1dvNV( GET_DISPATCH(), (
- *(GLuint *)(pc + 0),
- (const GLdouble *)(pc + 4)
- ) );
-}
-
-void __glXDisp_VertexAttrib1fvNV(GLbyte * pc)
-{
- CALL_VertexAttrib1fvNV( GET_DISPATCH(), (
- *(GLuint *)(pc + 0),
- (const GLfloat *)(pc + 4)
- ) );
-}
-
-void __glXDisp_VertexAttrib1svNV(GLbyte * pc)
-{
- CALL_VertexAttrib1svNV( GET_DISPATCH(), (
- *(GLuint *)(pc + 0),
- (const GLshort *)(pc + 4)
- ) );
-}
-
-void __glXDisp_VertexAttrib2dvNV(GLbyte * pc)
-{
-#ifdef __GLX_ALIGN64
- if ((unsigned long)(pc) & 7) {
- (void) memmove(pc-4, pc, 20);
- pc -= 4;
- }
-#endif
-
- CALL_VertexAttrib2dvNV( GET_DISPATCH(), (
- *(GLuint *)(pc + 0),
- (const GLdouble *)(pc + 4)
- ) );
-}
-
-void __glXDisp_VertexAttrib2fvNV(GLbyte * pc)
-{
- CALL_VertexAttrib2fvNV( GET_DISPATCH(), (
- *(GLuint *)(pc + 0),
- (const GLfloat *)(pc + 4)
- ) );
-}
-
-void __glXDisp_VertexAttrib2svNV(GLbyte * pc)
-{
- CALL_VertexAttrib2svNV( GET_DISPATCH(), (
- *(GLuint *)(pc + 0),
- (const GLshort *)(pc + 4)
- ) );
-}
-
-void __glXDisp_VertexAttrib3dvNV(GLbyte * pc)
+void __glXDisp_DeleteFramebuffersEXT(GLbyte * pc)
{
-#ifdef __GLX_ALIGN64
- if ((unsigned long)(pc) & 7) {
- (void) memmove(pc-4, pc, 28);
- pc -= 4;
- }
-#endif
+ const GLsizei n = *(GLsizei *)(pc + 0);
- CALL_VertexAttrib3dvNV( GET_DISPATCH(), (
- *(GLuint *)(pc + 0),
- (const GLdouble *)(pc + 4)
+ CALL_DeleteFramebuffersEXT( GET_DISPATCH(), (
+ n,
+ (const GLuint *)(pc + 4)
) );
}
-void __glXDisp_VertexAttrib3fvNV(GLbyte * pc)
+void __glXDisp_DeleteRenderbuffersEXT(GLbyte * pc)
{
- CALL_VertexAttrib3fvNV( GET_DISPATCH(), (
- *(GLuint *)(pc + 0),
- (const GLfloat *)(pc + 4)
- ) );
-}
+ const GLsizei n = *(GLsizei *)(pc + 0);
-void __glXDisp_VertexAttrib3svNV(GLbyte * pc)
-{
- CALL_VertexAttrib3svNV( GET_DISPATCH(), (
- *(GLuint *)(pc + 0),
- (const GLshort *)(pc + 4)
+ CALL_DeleteRenderbuffersEXT( GET_DISPATCH(), (
+ n,
+ (const GLuint *)(pc + 4)
) );
}
-void __glXDisp_VertexAttrib4dvNV(GLbyte * pc)
+void __glXDisp_FramebufferRenderbufferEXT(GLbyte * pc)
{
-#ifdef __GLX_ALIGN64
- if ((unsigned long)(pc) & 7) {
- (void) memmove(pc-4, pc, 36);
- pc -= 4;
- }
-#endif
-
- CALL_VertexAttrib4dvNV( GET_DISPATCH(), (
- *(GLuint *)(pc + 0),
- (const GLdouble *)(pc + 4)
+ CALL_FramebufferRenderbufferEXT( GET_DISPATCH(), (
+ *(GLenum *)(pc + 0),
+ *(GLenum *)(pc + 4),
+ *(GLenum *)(pc + 8),
+ *(GLuint *)(pc + 12)
) );
}
-void __glXDisp_VertexAttrib4fvNV(GLbyte * pc)
+void __glXDisp_FramebufferTexture1DEXT(GLbyte * pc)
{
- CALL_VertexAttrib4fvNV( GET_DISPATCH(), (
- *(GLuint *)(pc + 0),
- (const GLfloat *)(pc + 4)
+ CALL_FramebufferTexture1DEXT( GET_DISPATCH(), (
+ *(GLenum *)(pc + 0),
+ *(GLenum *)(pc + 4),
+ *(GLenum *)(pc + 8),
+ *(GLuint *)(pc + 12),
+ *(GLint *)(pc + 16)
) );
}
-void __glXDisp_VertexAttrib4svNV(GLbyte * pc)
+void __glXDisp_FramebufferTexture2DEXT(GLbyte * pc)
{
- CALL_VertexAttrib4svNV( GET_DISPATCH(), (
- *(GLuint *)(pc + 0),
- (const GLshort *)(pc + 4)
+ CALL_FramebufferTexture2DEXT( GET_DISPATCH(), (
+ *(GLenum *)(pc + 0),
+ *(GLenum *)(pc + 4),
+ *(GLenum *)(pc + 8),
+ *(GLuint *)(pc + 12),
+ *(GLint *)(pc + 16)
) );
}
-void __glXDisp_VertexAttrib4ubvNV(GLbyte * pc)
+void __glXDisp_FramebufferTexture3DEXT(GLbyte * pc)
{
- CALL_VertexAttrib4ubvNV( GET_DISPATCH(), (
- *(GLuint *)(pc + 0),
- (const GLubyte *)(pc + 4)
+ CALL_FramebufferTexture3DEXT( GET_DISPATCH(), (
+ *(GLenum *)(pc + 0),
+ *(GLenum *)(pc + 4),
+ *(GLenum *)(pc + 8),
+ *(GLuint *)(pc + 12),
+ *(GLint *)(pc + 16),
+ *(GLint *)(pc + 20)
) );
}
-int __glXDisp_IsRenderbufferEXT(__GLXclientState *cl, GLbyte *pc)
+int __glXDisp_GenFramebuffersEXT(__GLXclientState *cl, GLbyte *pc)
{
xGLXVendorPrivateReq * const req = (xGLXVendorPrivateReq *) pc;
int error;
@@ -5416,35 +5775,21 @@ int __glXDisp_IsRenderbufferEXT(__GLXclientState *cl, GLbyte *pc)
pc += __GLX_VENDPRIV_HDR_SIZE;
if ( cx != NULL ) {
- GLboolean retval;
- retval = CALL_IsRenderbufferEXT( GET_DISPATCH(), (
- *(GLuint *)(pc + 0)
+ const GLsizei n = *(GLsizei *)(pc + 0);
+
+ GLuint answerBuffer[200];
+ GLuint * framebuffers = __glXGetAnswerBuffer(cl, n * 4, answerBuffer, sizeof(answerBuffer), 4);
+ CALL_GenFramebuffersEXT( GET_DISPATCH(), (
+ n,
+ framebuffers
) );
- __glXSendReply(cl->client, dummy_answer, 0, 0, GL_FALSE, retval);
+ __glXSendReply(cl->client, framebuffers, n, 4, GL_TRUE, 0);
error = Success;
}
return error;
}
-void __glXDisp_BindRenderbufferEXT(GLbyte * pc)
-{
- CALL_BindRenderbufferEXT( GET_DISPATCH(), (
- *(GLenum *)(pc + 0),
- *(GLuint *)(pc + 4)
- ) );
-}
-
-void __glXDisp_DeleteRenderbuffersEXT(GLbyte * pc)
-{
- const GLsizei n = *(GLsizei *)(pc + 0);
-
- CALL_DeleteRenderbuffersEXT( GET_DISPATCH(), (
- n,
- (const GLuint *)(pc + 4)
- ) );
-}
-
int __glXDisp_GenRenderbuffersEXT(__GLXclientState *cl, GLbyte *pc)
{
xGLXVendorPrivateReq * const req = (xGLXVendorPrivateReq *) pc;
@@ -5468,17 +5813,14 @@ int __glXDisp_GenRenderbuffersEXT(__GLXclientState *cl, GLbyte *pc)
return error;
}
-void __glXDisp_RenderbufferStorageEXT(GLbyte * pc)
+void __glXDisp_GenerateMipmapEXT(GLbyte * pc)
{
- CALL_RenderbufferStorageEXT( GET_DISPATCH(), (
- *(GLenum *)(pc + 0),
- *(GLenum *)(pc + 4),
- *(GLsizei *)(pc + 8),
- *(GLsizei *)(pc + 12)
+ CALL_GenerateMipmapEXT( GET_DISPATCH(), (
+ *(GLenum *)(pc + 0)
) );
}
-int __glXDisp_GetRenderbufferParameterivEXT(__GLXclientState *cl, GLbyte *pc)
+int __glXDisp_GetFramebufferAttachmentParameterivEXT(__GLXclientState *cl, GLbyte *pc)
{
xGLXVendorPrivateReq * const req = (xGLXVendorPrivateReq *) pc;
int error;
@@ -5487,9 +5829,10 @@ int __glXDisp_GetRenderbufferParameterivEXT(__GLXclientState *cl, GLbyte *pc)
pc += __GLX_VENDPRIV_HDR_SIZE;
if ( cx != NULL ) {
GLint params[1];
- CALL_GetRenderbufferParameterivEXT( GET_DISPATCH(), (
+ CALL_GetFramebufferAttachmentParameterivEXT( GET_DISPATCH(), (
*(GLenum *)(pc + 0),
*(GLenum *)(pc + 4),
+ *(GLenum *)(pc + 8),
params
) );
__glXSendReply(cl->client, params, 1, 4, GL_FALSE, 0);
@@ -5499,7 +5842,7 @@ int __glXDisp_GetRenderbufferParameterivEXT(__GLXclientState *cl, GLbyte *pc)
return error;
}
-int __glXDisp_IsFramebufferEXT(__GLXclientState *cl, GLbyte *pc)
+int __glXDisp_GetRenderbufferParameterivEXT(__GLXclientState *cl, GLbyte *pc)
{
xGLXVendorPrivateReq * const req = (xGLXVendorPrivateReq *) pc;
int error;
@@ -5507,36 +5850,20 @@ int __glXDisp_IsFramebufferEXT(__GLXclientState *cl, GLbyte *pc)
pc += __GLX_VENDPRIV_HDR_SIZE;
if ( cx != NULL ) {
- GLboolean retval;
- retval = CALL_IsFramebufferEXT( GET_DISPATCH(), (
- *(GLuint *)(pc + 0)
+ GLint params[1];
+ CALL_GetRenderbufferParameterivEXT( GET_DISPATCH(), (
+ *(GLenum *)(pc + 0),
+ *(GLenum *)(pc + 4),
+ params
) );
- __glXSendReply(cl->client, dummy_answer, 0, 0, GL_FALSE, retval);
+ __glXSendReply(cl->client, params, 1, 4, GL_FALSE, 0);
error = Success;
}
return error;
}
-void __glXDisp_BindFramebufferEXT(GLbyte * pc)
-{
- CALL_BindFramebufferEXT( GET_DISPATCH(), (
- *(GLenum *)(pc + 0),
- *(GLuint *)(pc + 4)
- ) );
-}
-
-void __glXDisp_DeleteFramebuffersEXT(GLbyte * pc)
-{
- const GLsizei n = *(GLsizei *)(pc + 0);
-
- CALL_DeleteFramebuffersEXT( GET_DISPATCH(), (
- n,
- (const GLuint *)(pc + 4)
- ) );
-}
-
-int __glXDisp_GenFramebuffersEXT(__GLXclientState *cl, GLbyte *pc)
+int __glXDisp_IsFramebufferEXT(__GLXclientState *cl, GLbyte *pc)
{
xGLXVendorPrivateReq * const req = (xGLXVendorPrivateReq *) pc;
int error;
@@ -5544,22 +5871,18 @@ int __glXDisp_GenFramebuffersEXT(__GLXclientState *cl, GLbyte *pc)
pc += __GLX_VENDPRIV_HDR_SIZE;
if ( cx != NULL ) {
- const GLsizei n = *(GLsizei *)(pc + 0);
-
- GLuint answerBuffer[200];
- GLuint * framebuffers = __glXGetAnswerBuffer(cl, n * 4, answerBuffer, sizeof(answerBuffer), 4);
- CALL_GenFramebuffersEXT( GET_DISPATCH(), (
- n,
- framebuffers
+ GLboolean retval;
+ retval = CALL_IsFramebufferEXT( GET_DISPATCH(), (
+ *(GLuint *)(pc + 0)
) );
- __glXSendReply(cl->client, framebuffers, n, 4, GL_TRUE, 0);
+ __glXSendReply(cl->client, dummy_answer, 0, 0, GL_FALSE, retval);
error = Success;
}
return error;
}
-int __glXDisp_CheckFramebufferStatusEXT(__GLXclientState *cl, GLbyte *pc)
+int __glXDisp_IsRenderbufferEXT(__GLXclientState *cl, GLbyte *pc)
{
xGLXVendorPrivateReq * const req = (xGLXVendorPrivateReq *) pc;
int error;
@@ -5567,9 +5890,9 @@ int __glXDisp_CheckFramebufferStatusEXT(__GLXclientState *cl, GLbyte *pc)
pc += __GLX_VENDPRIV_HDR_SIZE;
if ( cx != NULL ) {
- GLenum retval;
- retval = CALL_CheckFramebufferStatusEXT( GET_DISPATCH(), (
- *(GLenum *)(pc + 0)
+ GLboolean retval;
+ retval = CALL_IsRenderbufferEXT( GET_DISPATCH(), (
+ *(GLuint *)(pc + 0)
) );
__glXSendReply(cl->client, dummy_answer, 0, 0, GL_FALSE, retval);
error = Success;
@@ -5578,76 +5901,13 @@ int __glXDisp_CheckFramebufferStatusEXT(__GLXclientState *cl, GLbyte *pc)
return error;
}
-void __glXDisp_FramebufferTexture1DEXT(GLbyte * pc)
-{
- CALL_FramebufferTexture1DEXT( GET_DISPATCH(), (
- *(GLenum *)(pc + 0),
- *(GLenum *)(pc + 4),
- *(GLenum *)(pc + 8),
- *(GLuint *)(pc + 12),
- *(GLint *)(pc + 16)
- ) );
-}
-
-void __glXDisp_FramebufferTexture2DEXT(GLbyte * pc)
-{
- CALL_FramebufferTexture2DEXT( GET_DISPATCH(), (
- *(GLenum *)(pc + 0),
- *(GLenum *)(pc + 4),
- *(GLenum *)(pc + 8),
- *(GLuint *)(pc + 12),
- *(GLint *)(pc + 16)
- ) );
-}
-
-void __glXDisp_FramebufferTexture3DEXT(GLbyte * pc)
-{
- CALL_FramebufferTexture3DEXT( GET_DISPATCH(), (
- *(GLenum *)(pc + 0),
- *(GLenum *)(pc + 4),
- *(GLenum *)(pc + 8),
- *(GLuint *)(pc + 12),
- *(GLint *)(pc + 16),
- *(GLint *)(pc + 20)
- ) );
-}
-
-void __glXDisp_FramebufferRenderbufferEXT(GLbyte * pc)
+void __glXDisp_RenderbufferStorageEXT(GLbyte * pc)
{
- CALL_FramebufferRenderbufferEXT( GET_DISPATCH(), (
+ CALL_RenderbufferStorageEXT( GET_DISPATCH(), (
*(GLenum *)(pc + 0),
*(GLenum *)(pc + 4),
- *(GLenum *)(pc + 8),
- *(GLuint *)(pc + 12)
- ) );
-}
-
-int __glXDisp_GetFramebufferAttachmentParameterivEXT(__GLXclientState *cl, GLbyte *pc)
-{
- xGLXVendorPrivateReq * const req = (xGLXVendorPrivateReq *) pc;
- int error;
- __GLXcontext * const cx = __glXForceCurrent(cl, req->contextTag, &error);
-
- pc += __GLX_VENDPRIV_HDR_SIZE;
- if ( cx != NULL ) {
- GLint params[1];
- CALL_GetFramebufferAttachmentParameterivEXT( GET_DISPATCH(), (
- *(GLenum *)(pc + 0),
- *(GLenum *)(pc + 4),
- *(GLenum *)(pc + 8),
- params
- ) );
- __glXSendReply(cl->client, params, 1, 4, GL_FALSE, 0);
- error = Success;
- }
-
- return error;
-}
-
-void __glXDisp_GenerateMipmapEXT(GLbyte * pc)
-{
- CALL_GenerateMipmapEXT( GET_DISPATCH(), (
- *(GLenum *)(pc + 0)
+ *(GLsizei *)(pc + 8),
+ *(GLsizei *)(pc + 12)
) );
}
diff --git a/GL/glx/indirect_dispatch.h b/GL/glx/indirect_dispatch.h
index 950d484bd..17a372f91 100644
--- a/GL/glx/indirect_dispatch.h
+++ b/GL/glx/indirect_dispatch.h
@@ -67,8 +67,12 @@ extern HIDDEN void __glXDisp_Histogram(GLbyte * pc);
extern HIDDEN void __glXDispSwap_Histogram(GLbyte * pc);
extern HIDDEN int __glXDisp_GetMapfv(struct __GLXclientStateRec *, GLbyte *);
extern HIDDEN int __glXDispSwap_GetMapfv(struct __GLXclientStateRec *, GLbyte *);
+extern HIDDEN void __glXDisp_RasterPos4dv(GLbyte * pc);
+extern HIDDEN void __glXDispSwap_RasterPos4dv(GLbyte * pc);
extern HIDDEN void __glXDisp_PolygonStipple(GLbyte * pc);
extern HIDDEN void __glXDispSwap_PolygonStipple(GLbyte * pc);
+extern HIDDEN void __glXDisp_BlendEquationSeparateEXT(GLbyte * pc);
+extern HIDDEN void __glXDispSwap_BlendEquationSeparateEXT(GLbyte * pc);
extern HIDDEN int __glXDisp_GetPixelMapfv(struct __GLXclientStateRec *, GLbyte *);
extern HIDDEN int __glXDispSwap_GetPixelMapfv(struct __GLXclientStateRec *, GLbyte *);
extern HIDDEN void __glXDisp_Color3uiv(GLbyte * pc);
@@ -79,16 +83,24 @@ extern HIDDEN void __glXDisp_VertexAttrib4svNV(GLbyte * pc);
extern HIDDEN void __glXDispSwap_VertexAttrib4svNV(GLbyte * pc);
extern HIDDEN void __glXDisp_EvalCoord2fv(GLbyte * pc);
extern HIDDEN void __glXDispSwap_EvalCoord2fv(GLbyte * pc);
-extern HIDDEN void __glXDisp_ProgramEnvParameter4dvARB(GLbyte * pc);
-extern HIDDEN void __glXDispSwap_ProgramEnvParameter4dvARB(GLbyte * pc);
+extern HIDDEN int __glXDisp_DestroyPixmap(struct __GLXclientStateRec *, GLbyte *);
+extern HIDDEN int __glXDispSwap_DestroyPixmap(struct __GLXclientStateRec *, GLbyte *);
extern HIDDEN int __glXDisp_GetMapiv(struct __GLXclientStateRec *, GLbyte *);
extern HIDDEN int __glXDispSwap_GetMapiv(struct __GLXclientStateRec *, GLbyte *);
+extern HIDDEN int __glXDisp_SwapBuffers(struct __GLXclientStateRec *, GLbyte *);
+extern HIDDEN int __glXDispSwap_SwapBuffers(struct __GLXclientStateRec *, GLbyte *);
extern HIDDEN void __glXDisp_Indexubv(GLbyte * pc);
extern HIDDEN void __glXDispSwap_Indexubv(GLbyte * pc);
+extern HIDDEN int __glXDisp_Render(struct __GLXclientStateRec *, GLbyte *);
+extern HIDDEN int __glXDispSwap_Render(struct __GLXclientStateRec *, GLbyte *);
extern HIDDEN int __glXDisp_GetQueryivARB(struct __GLXclientStateRec *, GLbyte *);
extern HIDDEN int __glXDispSwap_GetQueryivARB(struct __GLXclientStateRec *, GLbyte *);
extern HIDDEN void __glXDisp_TexImage3D(GLbyte * pc);
extern HIDDEN void __glXDispSwap_TexImage3D(GLbyte * pc);
+extern HIDDEN int __glXDisp_MakeContextCurrent(struct __GLXclientStateRec *, GLbyte *);
+extern HIDDEN int __glXDispSwap_MakeContextCurrent(struct __GLXclientStateRec *, GLbyte *);
+extern HIDDEN int __glXDisp_GetFBConfigs(struct __GLXclientStateRec *, GLbyte *);
+extern HIDDEN int __glXDispSwap_GetFBConfigs(struct __GLXclientStateRec *, GLbyte *);
extern HIDDEN void __glXDisp_Color3ubv(GLbyte * pc);
extern HIDDEN void __glXDispSwap_Color3ubv(GLbyte * pc);
extern HIDDEN int __glXDisp_GetQueryObjectivARB(struct __GLXclientStateRec *, GLbyte *);
@@ -105,16 +117,20 @@ extern HIDDEN void __glXDisp_VertexAttribs1dvNV(GLbyte * pc);
extern HIDDEN void __glXDispSwap_VertexAttribs1dvNV(GLbyte * pc);
extern HIDDEN void __glXDisp_Normal3bv(GLbyte * pc);
extern HIDDEN void __glXDispSwap_Normal3bv(GLbyte * pc);
-extern HIDDEN void __glXDisp_TexGeniv(GLbyte * pc);
-extern HIDDEN void __glXDispSwap_TexGeniv(GLbyte * pc);
+extern HIDDEN int __glXDisp_VendorPrivate(struct __GLXclientStateRec *, GLbyte *);
+extern HIDDEN int __glXDispSwap_VendorPrivate(struct __GLXclientStateRec *, GLbyte *);
+extern HIDDEN int __glXDisp_CreateGLXPixmapWithConfigSGIX(struct __GLXclientStateRec *, GLbyte *);
+extern HIDDEN int __glXDispSwap_CreateGLXPixmapWithConfigSGIX(struct __GLXclientStateRec *, GLbyte *);
+extern HIDDEN void __glXDisp_VertexAttrib1fvNV(GLbyte * pc);
+extern HIDDEN void __glXDispSwap_VertexAttrib1fvNV(GLbyte * pc);
extern HIDDEN void __glXDisp_Vertex3iv(GLbyte * pc);
extern HIDDEN void __glXDispSwap_Vertex3iv(GLbyte * pc);
extern HIDDEN void __glXDisp_CopyConvolutionFilter1D(GLbyte * pc);
extern HIDDEN void __glXDispSwap_CopyConvolutionFilter1D(GLbyte * pc);
extern HIDDEN void __glXDisp_BlendColor(GLbyte * pc);
extern HIDDEN void __glXDispSwap_BlendColor(GLbyte * pc);
-extern HIDDEN void __glXDisp_CallLists(GLbyte * pc);
-extern HIDDEN void __glXDispSwap_CallLists(GLbyte * pc);
+extern HIDDEN void __glXDisp_Scalef(GLbyte * pc);
+extern HIDDEN void __glXDispSwap_Scalef(GLbyte * pc);
extern HIDDEN void __glXDisp_Normal3iv(GLbyte * pc);
extern HIDDEN void __glXDispSwap_Normal3iv(GLbyte * pc);
extern HIDDEN void __glXDisp_PassThrough(GLbyte * pc);
@@ -123,8 +139,10 @@ extern HIDDEN void __glXDisp_Viewport(GLbyte * pc);
extern HIDDEN void __glXDispSwap_Viewport(GLbyte * pc);
extern HIDDEN void __glXDisp_VertexAttrib4NusvARB(GLbyte * pc);
extern HIDDEN void __glXDispSwap_VertexAttrib4NusvARB(GLbyte * pc);
-extern HIDDEN void __glXDisp_PrioritizeTextures(GLbyte * pc);
-extern HIDDEN void __glXDispSwap_PrioritizeTextures(GLbyte * pc);
+extern HIDDEN void __glXDisp_CopyTexSubImage2D(GLbyte * pc);
+extern HIDDEN void __glXDispSwap_CopyTexSubImage2D(GLbyte * pc);
+extern HIDDEN void __glXDisp_DepthRange(GLbyte * pc);
+extern HIDDEN void __glXDispSwap_DepthRange(GLbyte * pc);
extern HIDDEN void __glXDisp_ResetHistogram(GLbyte * pc);
extern HIDDEN void __glXDispSwap_ResetHistogram(GLbyte * pc);
extern HIDDEN int __glXDisp_GetProgramNamedParameterfvNV(struct __GLXclientStateRec *, GLbyte *);
@@ -143,12 +161,18 @@ extern HIDDEN void __glXDisp_Color3sv(GLbyte * pc);
extern HIDDEN void __glXDispSwap_Color3sv(GLbyte * pc);
extern HIDDEN int __glXDisp_GetConvolutionParameteriv(struct __GLXclientStateRec *, GLbyte *);
extern HIDDEN int __glXDispSwap_GetConvolutionParameteriv(struct __GLXclientStateRec *, GLbyte *);
+extern HIDDEN int __glXDisp_GetConvolutionParameterivEXT(struct __GLXclientStateRec *, GLbyte *);
+extern HIDDEN int __glXDispSwap_GetConvolutionParameterivEXT(struct __GLXclientStateRec *, GLbyte *);
extern HIDDEN void __glXDisp_Vertex2dv(GLbyte * pc);
extern HIDDEN void __glXDispSwap_Vertex2dv(GLbyte * pc);
+extern HIDDEN int __glXDisp_GetVisualConfigs(struct __GLXclientStateRec *, GLbyte *);
+extern HIDDEN int __glXDispSwap_GetVisualConfigs(struct __GLXclientStateRec *, GLbyte *);
extern HIDDEN void __glXDisp_MultiTexCoord1fvARB(GLbyte * pc);
extern HIDDEN void __glXDispSwap_MultiTexCoord1fvARB(GLbyte * pc);
extern HIDDEN void __glXDisp_TexCoord3iv(GLbyte * pc);
extern HIDDEN void __glXDispSwap_TexCoord3iv(GLbyte * pc);
+extern HIDDEN int __glXDisp_CopyContext(struct __GLXclientStateRec *, GLbyte *);
+extern HIDDEN int __glXDispSwap_CopyContext(struct __GLXclientStateRec *, GLbyte *);
extern HIDDEN void __glXDisp_Color3fv(GLbyte * pc);
extern HIDDEN void __glXDispSwap_Color3fv(GLbyte * pc);
extern HIDDEN void __glXDisp_PointSize(GLbyte * pc);
@@ -161,36 +185,40 @@ extern HIDDEN void __glXDisp_Vertex4sv(GLbyte * pc);
extern HIDDEN void __glXDispSwap_Vertex4sv(GLbyte * pc);
extern HIDDEN int __glXDisp_GetTexEnvfv(struct __GLXclientStateRec *, GLbyte *);
extern HIDDEN int __glXDispSwap_GetTexEnvfv(struct __GLXclientStateRec *, GLbyte *);
+extern HIDDEN void __glXDisp_LineStipple(GLbyte * pc);
+extern HIDDEN void __glXDispSwap_LineStipple(GLbyte * pc);
extern HIDDEN void __glXDisp_TexEnvi(GLbyte * pc);
extern HIDDEN void __glXDispSwap_TexEnvi(GLbyte * pc);
extern HIDDEN int __glXDisp_GetClipPlane(struct __GLXclientStateRec *, GLbyte *);
extern HIDDEN int __glXDispSwap_GetClipPlane(struct __GLXclientStateRec *, GLbyte *);
extern HIDDEN void __glXDisp_VertexAttribs3dvNV(GLbyte * pc);
extern HIDDEN void __glXDispSwap_VertexAttribs3dvNV(GLbyte * pc);
+extern HIDDEN void __glXDisp_LightModeli(GLbyte * pc);
+extern HIDDEN void __glXDispSwap_LightModeli(GLbyte * pc);
extern HIDDEN void __glXDisp_VertexAttribs4fvNV(GLbyte * pc);
extern HIDDEN void __glXDispSwap_VertexAttribs4fvNV(GLbyte * pc);
extern HIDDEN void __glXDisp_Scaled(GLbyte * pc);
extern HIDDEN void __glXDispSwap_Scaled(GLbyte * pc);
-extern HIDDEN void __glXDisp_Scalef(GLbyte * pc);
-extern HIDDEN void __glXDispSwap_Scalef(GLbyte * pc);
+extern HIDDEN void __glXDisp_CallLists(GLbyte * pc);
+extern HIDDEN void __glXDispSwap_CallLists(GLbyte * pc);
extern HIDDEN void __glXDisp_AlphaFunc(GLbyte * pc);
extern HIDDEN void __glXDispSwap_AlphaFunc(GLbyte * pc);
extern HIDDEN void __glXDisp_TexCoord2iv(GLbyte * pc);
extern HIDDEN void __glXDispSwap_TexCoord2iv(GLbyte * pc);
extern HIDDEN void __glXDisp_CompressedTexImage1DARB(GLbyte * pc);
extern HIDDEN void __glXDispSwap_CompressedTexImage1DARB(GLbyte * pc);
-extern HIDDEN void __glXDisp_Rotated(GLbyte * pc);
-extern HIDDEN void __glXDispSwap_Rotated(GLbyte * pc);
extern HIDDEN int __glXDisp_ReadPixels(struct __GLXclientStateRec *, GLbyte *);
extern HIDDEN int __glXDispSwap_ReadPixels(struct __GLXclientStateRec *, GLbyte *);
extern HIDDEN void __glXDisp_EdgeFlagv(GLbyte * pc);
extern HIDDEN void __glXDispSwap_EdgeFlagv(GLbyte * pc);
-extern HIDDEN void __glXDisp_Color4iv(GLbyte * pc);
-extern HIDDEN void __glXDispSwap_Color4iv(GLbyte * pc);
+extern HIDDEN void __glXDisp_Rotatef(GLbyte * pc);
+extern HIDDEN void __glXDispSwap_Rotatef(GLbyte * pc);
extern HIDDEN void __glXDisp_TexParameterf(GLbyte * pc);
extern HIDDEN void __glXDispSwap_TexParameterf(GLbyte * pc);
extern HIDDEN void __glXDisp_TexParameteri(GLbyte * pc);
extern HIDDEN void __glXDispSwap_TexParameteri(GLbyte * pc);
+extern HIDDEN int __glXDisp_DestroyContext(struct __GLXclientStateRec *, GLbyte *);
+extern HIDDEN int __glXDispSwap_DestroyContext(struct __GLXclientStateRec *, GLbyte *);
extern HIDDEN void __glXDisp_DrawPixels(GLbyte * pc);
extern HIDDEN void __glXDispSwap_DrawPixels(GLbyte * pc);
extern HIDDEN void __glXDisp_MultiTexCoord2svARB(GLbyte * pc);
@@ -215,22 +243,18 @@ extern HIDDEN void __glXDisp_Color4usv(GLbyte * pc);
extern HIDDEN void __glXDispSwap_Color4usv(GLbyte * pc);
extern HIDDEN void __glXDisp_Fogi(GLbyte * pc);
extern HIDDEN void __glXDispSwap_Fogi(GLbyte * pc);
-extern HIDDEN void __glXDisp_DepthRange(GLbyte * pc);
-extern HIDDEN void __glXDispSwap_DepthRange(GLbyte * pc);
extern HIDDEN void __glXDisp_RasterPos3iv(GLbyte * pc);
extern HIDDEN void __glXDispSwap_RasterPos3iv(GLbyte * pc);
extern HIDDEN void __glXDisp_PixelMapfv(GLbyte * pc);
extern HIDDEN void __glXDispSwap_PixelMapfv(GLbyte * pc);
extern HIDDEN void __glXDisp_Color3usv(GLbyte * pc);
extern HIDDEN void __glXDispSwap_Color3usv(GLbyte * pc);
-extern HIDDEN void __glXDisp_DrawBuffersARB(GLbyte * pc);
-extern HIDDEN void __glXDispSwap_DrawBuffersARB(GLbyte * pc);
extern HIDDEN int __glXDisp_AreTexturesResident(struct __GLXclientStateRec *, GLbyte *);
extern HIDDEN int __glXDispSwap_AreTexturesResident(struct __GLXclientStateRec *, GLbyte *);
+extern HIDDEN int __glXDisp_AreTexturesResidentEXT(struct __GLXclientStateRec *, GLbyte *);
+extern HIDDEN int __glXDispSwap_AreTexturesResidentEXT(struct __GLXclientStateRec *, GLbyte *);
extern HIDDEN int __glXDisp_IsRenderbufferEXT(struct __GLXclientStateRec *, GLbyte *);
extern HIDDEN int __glXDispSwap_IsRenderbufferEXT(struct __GLXclientStateRec *, GLbyte *);
-extern HIDDEN void __glXDisp_ColorTableParameteriv(GLbyte * pc);
-extern HIDDEN void __glXDispSwap_ColorTableParameteriv(GLbyte * pc);
extern HIDDEN void __glXDisp_PointParameterfvEXT(GLbyte * pc);
extern HIDDEN void __glXDispSwap_PointParameterfvEXT(GLbyte * pc);
extern HIDDEN void __glXDisp_Color3bv(GLbyte * pc);
@@ -255,6 +279,8 @@ extern HIDDEN void __glXDisp_ClearStencil(GLbyte * pc);
extern HIDDEN void __glXDispSwap_ClearStencil(GLbyte * pc);
extern HIDDEN void __glXDisp_VertexAttrib3dvARB(GLbyte * pc);
extern HIDDEN void __glXDispSwap_VertexAttrib3dvARB(GLbyte * pc);
+extern HIDDEN void __glXDisp_VertexAttribs4ubvNV(GLbyte * pc);
+extern HIDDEN void __glXDispSwap_VertexAttribs4ubvNV(GLbyte * pc);
extern HIDDEN void __glXDisp_ConvolutionParameteriv(GLbyte * pc);
extern HIDDEN void __glXDispSwap_ConvolutionParameteriv(GLbyte * pc);
extern HIDDEN void __glXDisp_RasterPos2fv(GLbyte * pc);
@@ -291,10 +317,20 @@ extern HIDDEN int __glXDisp_CheckFramebufferStatusEXT(struct __GLXclientStateRec
extern HIDDEN int __glXDispSwap_CheckFramebufferStatusEXT(struct __GLXclientStateRec *, GLbyte *);
extern HIDDEN int __glXDisp_GetVertexAttribivARB(struct __GLXclientStateRec *, GLbyte *);
extern HIDDEN int __glXDispSwap_GetVertexAttribivARB(struct __GLXclientStateRec *, GLbyte *);
+extern HIDDEN int __glXDisp_GetFBConfigsSGIX(struct __GLXclientStateRec *, GLbyte *);
+extern HIDDEN int __glXDispSwap_GetFBConfigsSGIX(struct __GLXclientStateRec *, GLbyte *);
+extern HIDDEN int __glXDisp_CreateNewContext(struct __GLXclientStateRec *, GLbyte *);
+extern HIDDEN int __glXDispSwap_CreateNewContext(struct __GLXclientStateRec *, GLbyte *);
extern HIDDEN int __glXDisp_GetMinmax(struct __GLXclientStateRec *, GLbyte *);
extern HIDDEN int __glXDispSwap_GetMinmax(struct __GLXclientStateRec *, GLbyte *);
+extern HIDDEN int __glXDisp_GetMinmaxEXT(struct __GLXclientStateRec *, GLbyte *);
+extern HIDDEN int __glXDispSwap_GetMinmaxEXT(struct __GLXclientStateRec *, GLbyte *);
+extern HIDDEN int __glXDisp_GetVertexAttribdvNV(struct __GLXclientStateRec *, GLbyte *);
+extern HIDDEN int __glXDispSwap_GetVertexAttribdvNV(struct __GLXclientStateRec *, GLbyte *);
extern HIDDEN void __glXDisp_Normal3fv(GLbyte * pc);
extern HIDDEN void __glXDispSwap_Normal3fv(GLbyte * pc);
+extern HIDDEN void __glXDisp_ProgramEnvParameter4dvARB(GLbyte * pc);
+extern HIDDEN void __glXDispSwap_ProgramEnvParameter4dvARB(GLbyte * pc);
extern HIDDEN void __glXDisp_VertexAttrib4ivARB(GLbyte * pc);
extern HIDDEN void __glXDispSwap_VertexAttrib4ivARB(GLbyte * pc);
extern HIDDEN void __glXDisp_End(GLbyte * pc);
@@ -305,6 +341,8 @@ extern HIDDEN void __glXDisp_MultiTexCoord3fvARB(GLbyte * pc);
extern HIDDEN void __glXDispSwap_MultiTexCoord3fvARB(GLbyte * pc);
extern HIDDEN int __glXDisp_GetProgramParameterfvNV(struct __GLXclientStateRec *, GLbyte *);
extern HIDDEN int __glXDispSwap_GetProgramParameterfvNV(struct __GLXclientStateRec *, GLbyte *);
+extern HIDDEN void __glXDisp_BindTexture(GLbyte * pc);
+extern HIDDEN void __glXDispSwap_BindTexture(GLbyte * pc);
extern HIDDEN void __glXDisp_TexSubImage2D(GLbyte * pc);
extern HIDDEN void __glXDispSwap_TexSubImage2D(GLbyte * pc);
extern HIDDEN void __glXDisp_DeleteRenderbuffersEXT(GLbyte * pc);
@@ -313,8 +351,12 @@ extern HIDDEN void __glXDisp_TexGenfv(GLbyte * pc);
extern HIDDEN void __glXDispSwap_TexGenfv(GLbyte * pc);
extern HIDDEN void __glXDisp_VertexAttrib4bvARB(GLbyte * pc);
extern HIDDEN void __glXDispSwap_VertexAttrib4bvARB(GLbyte * pc);
+extern HIDDEN int __glXDisp_CreateContextWithConfigSGIX(struct __GLXclientStateRec *, GLbyte *);
+extern HIDDEN int __glXDispSwap_CreateContextWithConfigSGIX(struct __GLXclientStateRec *, GLbyte *);
extern HIDDEN void __glXDisp_FramebufferTexture3DEXT(GLbyte * pc);
extern HIDDEN void __glXDispSwap_FramebufferTexture3DEXT(GLbyte * pc);
+extern HIDDEN int __glXDisp_CopySubBufferMESA(struct __GLXclientStateRec *, GLbyte *);
+extern HIDDEN int __glXDispSwap_CopySubBufferMESA(struct __GLXclientStateRec *, GLbyte *);
extern HIDDEN void __glXDisp_BlendEquation(GLbyte * pc);
extern HIDDEN void __glXDispSwap_BlendEquation(GLbyte * pc);
extern HIDDEN int __glXDisp_GetError(struct __GLXclientStateRec *, GLbyte *);
@@ -337,6 +379,8 @@ extern HIDDEN void __glXDisp_EndQueryARB(GLbyte * pc);
extern HIDDEN void __glXDispSwap_EndQueryARB(GLbyte * pc);
extern HIDDEN void __glXDisp_DepthMask(GLbyte * pc);
extern HIDDEN void __glXDispSwap_DepthMask(GLbyte * pc);
+extern HIDDEN void __glXDisp_Rotated(GLbyte * pc);
+extern HIDDEN void __glXDispSwap_Rotated(GLbyte * pc);
extern HIDDEN int __glXDisp_GetMaterialiv(struct __GLXclientStateRec *, GLbyte *);
extern HIDDEN int __glXDispSwap_GetMaterialiv(struct __GLXclientStateRec *, GLbyte *);
extern HIDDEN void __glXDisp_StencilOp(GLbyte * pc);
@@ -345,6 +389,8 @@ extern HIDDEN void __glXDisp_MultiTexCoord3svARB(GLbyte * pc);
extern HIDDEN void __glXDispSwap_MultiTexCoord3svARB(GLbyte * pc);
extern HIDDEN void __glXDisp_TexEnvfv(GLbyte * pc);
extern HIDDEN void __glXDispSwap_TexEnvfv(GLbyte * pc);
+extern HIDDEN int __glXDisp_QueryServerString(struct __GLXclientStateRec *, GLbyte *);
+extern HIDDEN int __glXDispSwap_QueryServerString(struct __GLXclientStateRec *, GLbyte *);
extern HIDDEN void __glXDisp_LoadMatrixf(GLbyte * pc);
extern HIDDEN void __glXDispSwap_LoadMatrixf(GLbyte * pc);
extern HIDDEN void __glXDisp_Color4bv(GLbyte * pc);
@@ -361,16 +407,22 @@ extern HIDDEN void __glXDisp_LogicOp(GLbyte * pc);
extern HIDDEN void __glXDispSwap_LogicOp(GLbyte * pc);
extern HIDDEN void __glXDisp_TexCoord4fv(GLbyte * pc);
extern HIDDEN void __glXDispSwap_TexCoord4fv(GLbyte * pc);
-extern HIDDEN void __glXDisp_VertexAttrib2dvNV(GLbyte * pc);
-extern HIDDEN void __glXDispSwap_VertexAttrib2dvNV(GLbyte * pc);
+extern HIDDEN int __glXDisp_WaitX(struct __GLXclientStateRec *, GLbyte *);
+extern HIDDEN int __glXDispSwap_WaitX(struct __GLXclientStateRec *, GLbyte *);
+extern HIDDEN void __glXDisp_SecondaryColor3uivEXT(GLbyte * pc);
+extern HIDDEN void __glXDispSwap_SecondaryColor3uivEXT(GLbyte * pc);
extern HIDDEN void __glXDisp_FramebufferRenderbufferEXT(GLbyte * pc);
extern HIDDEN void __glXDispSwap_FramebufferRenderbufferEXT(GLbyte * pc);
extern HIDDEN void __glXDisp_VertexAttrib1dvNV(GLbyte * pc);
extern HIDDEN void __glXDispSwap_VertexAttrib1dvNV(GLbyte * pc);
extern HIDDEN int __glXDisp_GenTextures(struct __GLXclientStateRec *, GLbyte *);
extern HIDDEN int __glXDispSwap_GenTextures(struct __GLXclientStateRec *, GLbyte *);
+extern HIDDEN int __glXDisp_GenTexturesEXT(struct __GLXclientStateRec *, GLbyte *);
+extern HIDDEN int __glXDispSwap_GenTexturesEXT(struct __GLXclientStateRec *, GLbyte *);
extern HIDDEN void __glXDisp_FramebufferTexture1DEXT(GLbyte * pc);
extern HIDDEN void __glXDispSwap_FramebufferTexture1DEXT(GLbyte * pc);
+extern HIDDEN int __glXDisp_GetDrawableAttributes(struct __GLXclientStateRec *, GLbyte *);
+extern HIDDEN int __glXDispSwap_GetDrawableAttributes(struct __GLXclientStateRec *, GLbyte *);
extern HIDDEN void __glXDisp_ProgramParameter4fvNV(GLbyte * pc);
extern HIDDEN void __glXDispSwap_ProgramParameter4fvNV(GLbyte * pc);
extern HIDDEN void __glXDisp_RasterPos2sv(GLbyte * pc);
@@ -383,6 +435,8 @@ extern HIDDEN void __glXDisp_TexCoord2fv(GLbyte * pc);
extern HIDDEN void __glXDispSwap_TexCoord2fv(GLbyte * pc);
extern HIDDEN void __glXDisp_TexCoord1sv(GLbyte * pc);
extern HIDDEN void __glXDispSwap_TexCoord1sv(GLbyte * pc);
+extern HIDDEN void __glXDisp_TexGeniv(GLbyte * pc);
+extern HIDDEN void __glXDispSwap_TexGeniv(GLbyte * pc);
extern HIDDEN void __glXDisp_DepthFunc(GLbyte * pc);
extern HIDDEN void __glXDispSwap_DepthFunc(GLbyte * pc);
extern HIDDEN void __glXDisp_PixelMapusv(GLbyte * pc);
@@ -391,6 +445,8 @@ extern HIDDEN void __glXDisp_PointParameterivNV(GLbyte * pc);
extern HIDDEN void __glXDispSwap_PointParameterivNV(GLbyte * pc);
extern HIDDEN void __glXDisp_BlendFunc(GLbyte * pc);
extern HIDDEN void __glXDispSwap_BlendFunc(GLbyte * pc);
+extern HIDDEN int __glXDisp_WaitGL(struct __GLXclientStateRec *, GLbyte *);
+extern HIDDEN int __glXDispSwap_WaitGL(struct __GLXclientStateRec *, GLbyte *);
extern HIDDEN void __glXDisp_MultiTexCoord3dvARB(GLbyte * pc);
extern HIDDEN void __glXDispSwap_MultiTexCoord3dvARB(GLbyte * pc);
extern HIDDEN void __glXDisp_ProgramNamedParameter4dvNV(GLbyte * pc);
@@ -405,54 +461,68 @@ extern HIDDEN void __glXDisp_BindFramebufferEXT(GLbyte * pc);
extern HIDDEN void __glXDispSwap_BindFramebufferEXT(GLbyte * pc);
extern HIDDEN void __glXDisp_PushAttrib(GLbyte * pc);
extern HIDDEN void __glXDispSwap_PushAttrib(GLbyte * pc);
-extern HIDDEN void __glXDisp_VertexAttrib4usvARB(GLbyte * pc);
-extern HIDDEN void __glXDispSwap_VertexAttrib4usvARB(GLbyte * pc);
+extern HIDDEN int __glXDisp_DestroyPbuffer(struct __GLXclientStateRec *, GLbyte *);
+extern HIDDEN int __glXDispSwap_DestroyPbuffer(struct __GLXclientStateRec *, GLbyte *);
extern HIDDEN void __glXDisp_TexParameteriv(GLbyte * pc);
extern HIDDEN void __glXDispSwap_TexParameteriv(GLbyte * pc);
extern HIDDEN void __glXDisp_WindowPos3fvMESA(GLbyte * pc);
extern HIDDEN void __glXDispSwap_WindowPos3fvMESA(GLbyte * pc);
extern HIDDEN void __glXDisp_VertexAttrib1svNV(GLbyte * pc);
extern HIDDEN void __glXDispSwap_VertexAttrib1svNV(GLbyte * pc);
+extern HIDDEN int __glXDisp_QueryExtensionsString(struct __GLXclientStateRec *, GLbyte *);
+extern HIDDEN int __glXDispSwap_QueryExtensionsString(struct __GLXclientStateRec *, GLbyte *);
extern HIDDEN void __glXDisp_RasterPos3fv(GLbyte * pc);
extern HIDDEN void __glXDispSwap_RasterPos3fv(GLbyte * pc);
extern HIDDEN void __glXDisp_CopyTexSubImage3D(GLbyte * pc);
extern HIDDEN void __glXDispSwap_CopyTexSubImage3D(GLbyte * pc);
extern HIDDEN int __glXDisp_GetColorTable(struct __GLXclientStateRec *, GLbyte *);
extern HIDDEN int __glXDispSwap_GetColorTable(struct __GLXclientStateRec *, GLbyte *);
-extern HIDDEN int __glXDisp_SelectBuffer(struct __GLXclientStateRec *, GLbyte *);
-extern HIDDEN int __glXDispSwap_SelectBuffer(struct __GLXclientStateRec *, GLbyte *);
+extern HIDDEN int __glXDisp_GetColorTableSGI(struct __GLXclientStateRec *, GLbyte *);
+extern HIDDEN int __glXDispSwap_GetColorTableSGI(struct __GLXclientStateRec *, GLbyte *);
extern HIDDEN void __glXDisp_Indexiv(GLbyte * pc);
extern HIDDEN void __glXDispSwap_Indexiv(GLbyte * pc);
+extern HIDDEN int __glXDisp_CreateContext(struct __GLXclientStateRec *, GLbyte *);
+extern HIDDEN int __glXDispSwap_CreateContext(struct __GLXclientStateRec *, GLbyte *);
extern HIDDEN void __glXDisp_CopyColorTable(GLbyte * pc);
extern HIDDEN void __glXDispSwap_CopyColorTable(GLbyte * pc);
extern HIDDEN int __glXDisp_GetHistogramParameterfv(struct __GLXclientStateRec *, GLbyte *);
extern HIDDEN int __glXDispSwap_GetHistogramParameterfv(struct __GLXclientStateRec *, GLbyte *);
+extern HIDDEN int __glXDisp_GetHistogramParameterfvEXT(struct __GLXclientStateRec *, GLbyte *);
+extern HIDDEN int __glXDispSwap_GetHistogramParameterfvEXT(struct __GLXclientStateRec *, GLbyte *);
extern HIDDEN void __glXDisp_Frustum(GLbyte * pc);
extern HIDDEN void __glXDispSwap_Frustum(GLbyte * pc);
extern HIDDEN int __glXDisp_GetString(struct __GLXclientStateRec *, GLbyte *);
extern HIDDEN int __glXDispSwap_GetString(struct __GLXclientStateRec *, GLbyte *);
+extern HIDDEN int __glXDisp_CreateGLXPixmap(struct __GLXclientStateRec *, GLbyte *);
+extern HIDDEN int __glXDispSwap_CreateGLXPixmap(struct __GLXclientStateRec *, GLbyte *);
extern HIDDEN void __glXDisp_TexEnvf(GLbyte * pc);
extern HIDDEN void __glXDispSwap_TexEnvf(GLbyte * pc);
+extern HIDDEN int __glXDisp_GetProgramStringARB(struct __GLXclientStateRec *, GLbyte *);
+extern HIDDEN int __glXDispSwap_GetProgramStringARB(struct __GLXclientStateRec *, GLbyte *);
extern HIDDEN void __glXDisp_MultiTexCoord3ivARB(GLbyte * pc);
extern HIDDEN void __glXDispSwap_MultiTexCoord3ivARB(GLbyte * pc);
extern HIDDEN void __glXDisp_VertexAttrib1dvARB(GLbyte * pc);
extern HIDDEN void __glXDispSwap_VertexAttrib1dvARB(GLbyte * pc);
extern HIDDEN int __glXDisp_DeleteTextures(struct __GLXclientStateRec *, GLbyte *);
extern HIDDEN int __glXDispSwap_DeleteTextures(struct __GLXclientStateRec *, GLbyte *);
+extern HIDDEN int __glXDisp_DeleteTexturesEXT(struct __GLXclientStateRec *, GLbyte *);
+extern HIDDEN int __glXDispSwap_DeleteTexturesEXT(struct __GLXclientStateRec *, GLbyte *);
extern HIDDEN int __glXDisp_GetTexLevelParameteriv(struct __GLXclientStateRec *, GLbyte *);
extern HIDDEN int __glXDispSwap_GetTexLevelParameteriv(struct __GLXclientStateRec *, GLbyte *);
extern HIDDEN void __glXDisp_ClearAccum(GLbyte * pc);
extern HIDDEN void __glXDispSwap_ClearAccum(GLbyte * pc);
+extern HIDDEN int __glXDisp_QueryVersion(struct __GLXclientStateRec *, GLbyte *);
+extern HIDDEN int __glXDispSwap_QueryVersion(struct __GLXclientStateRec *, GLbyte *);
extern HIDDEN int __glXDisp_GetVertexAttribfvARB(struct __GLXclientStateRec *, GLbyte *);
extern HIDDEN int __glXDispSwap_GetVertexAttribfvARB(struct __GLXclientStateRec *, GLbyte *);
extern HIDDEN void __glXDisp_SecondaryColor3ivEXT(GLbyte * pc);
extern HIDDEN void __glXDispSwap_SecondaryColor3ivEXT(GLbyte * pc);
extern HIDDEN void __glXDisp_TexCoord4iv(GLbyte * pc);
extern HIDDEN void __glXDispSwap_TexCoord4iv(GLbyte * pc);
-extern HIDDEN void __glXDisp_PolygonOffset(GLbyte * pc);
-extern HIDDEN void __glXDispSwap_PolygonOffset(GLbyte * pc);
extern HIDDEN void __glXDisp_SampleMaskSGIS(GLbyte * pc);
extern HIDDEN void __glXDispSwap_SampleMaskSGIS(GLbyte * pc);
+extern HIDDEN void __glXDisp_ColorTableParameteriv(GLbyte * pc);
+extern HIDDEN void __glXDispSwap_ColorTableParameteriv(GLbyte * pc);
extern HIDDEN void __glXDisp_VertexAttrib4ubvARB(GLbyte * pc);
extern HIDDEN void __glXDispSwap_VertexAttrib4ubvARB(GLbyte * pc);
extern HIDDEN void __glXDisp_CopyTexImage2D(GLbyte * pc);
@@ -467,6 +537,8 @@ extern HIDDEN void __glXDisp_Color4fv(GLbyte * pc);
extern HIDDEN void __glXDispSwap_Color4fv(GLbyte * pc);
extern HIDDEN void __glXDisp_MultiTexCoord4ivARB(GLbyte * pc);
extern HIDDEN void __glXDispSwap_MultiTexCoord4ivARB(GLbyte * pc);
+extern HIDDEN int __glXDisp_CreatePixmap(struct __GLXclientStateRec *, GLbyte *);
+extern HIDDEN int __glXDispSwap_CreatePixmap(struct __GLXclientStateRec *, GLbyte *);
extern HIDDEN void __glXDisp_Lightiv(GLbyte * pc);
extern HIDDEN void __glXDispSwap_Lightiv(GLbyte * pc);
extern HIDDEN int __glXDisp_GetQueryObjectuivARB(struct __GLXclientStateRec *, GLbyte *);
@@ -479,8 +551,6 @@ extern HIDDEN void __glXDisp_VertexAttrib2dvARB(GLbyte * pc);
extern HIDDEN void __glXDispSwap_VertexAttrib2dvARB(GLbyte * pc);
extern HIDDEN void __glXDisp_VertexAttribs2svNV(GLbyte * pc);
extern HIDDEN void __glXDispSwap_VertexAttribs2svNV(GLbyte * pc);
-extern HIDDEN void __glXDisp_VertexAttrib2fvARB(GLbyte * pc);
-extern HIDDEN void __glXDispSwap_VertexAttrib2fvARB(GLbyte * pc);
extern HIDDEN void __glXDisp_Rectdv(GLbyte * pc);
extern HIDDEN void __glXDispSwap_Rectdv(GLbyte * pc);
extern HIDDEN void __glXDisp_VertexAttrib4NivARB(GLbyte * pc);
@@ -493,10 +563,12 @@ extern HIDDEN void __glXDisp_PolygonMode(GLbyte * pc);
extern HIDDEN void __glXDispSwap_PolygonMode(GLbyte * pc);
extern HIDDEN void __glXDisp_CompressedTexSubImage1DARB(GLbyte * pc);
extern HIDDEN void __glXDispSwap_CompressedTexSubImage1DARB(GLbyte * pc);
+extern HIDDEN void __glXDisp_VertexAttrib2dvNV(GLbyte * pc);
+extern HIDDEN void __glXDispSwap_VertexAttrib2dvNV(GLbyte * pc);
extern HIDDEN int __glXDisp_GetVertexAttribivNV(struct __GLXclientStateRec *, GLbyte *);
extern HIDDEN int __glXDispSwap_GetVertexAttribivNV(struct __GLXclientStateRec *, GLbyte *);
-extern HIDDEN int __glXDisp_GetProgramStringARB(struct __GLXclientStateRec *, GLbyte *);
-extern HIDDEN int __glXDispSwap_GetProgramStringARB(struct __GLXclientStateRec *, GLbyte *);
+extern HIDDEN int __glXDisp_IsQueryARB(struct __GLXclientStateRec *, GLbyte *);
+extern HIDDEN int __glXDispSwap_IsQueryARB(struct __GLXclientStateRec *, GLbyte *);
extern HIDDEN void __glXDisp_TexGeni(GLbyte * pc);
extern HIDDEN void __glXDispSwap_TexGeni(GLbyte * pc);
extern HIDDEN void __glXDisp_TexGenf(GLbyte * pc);
@@ -513,6 +585,8 @@ extern HIDDEN void __glXDisp_VertexAttribs1fvNV(GLbyte * pc);
extern HIDDEN void __glXDispSwap_VertexAttribs1fvNV(GLbyte * pc);
extern HIDDEN void __glXDisp_VertexAttrib4NuivARB(GLbyte * pc);
extern HIDDEN void __glXDispSwap_VertexAttrib4NuivARB(GLbyte * pc);
+extern HIDDEN int __glXDisp_DestroyWindow(struct __GLXclientStateRec *, GLbyte *);
+extern HIDDEN int __glXDispSwap_DestroyWindow(struct __GLXclientStateRec *, GLbyte *);
extern HIDDEN void __glXDisp_Color4sv(GLbyte * pc);
extern HIDDEN void __glXDispSwap_Color4sv(GLbyte * pc);
extern HIDDEN int __glXDisp_IsProgramNV(struct __GLXclientStateRec *, GLbyte *);
@@ -527,18 +601,26 @@ extern HIDDEN void __glXDisp_Color3dv(GLbyte * pc);
extern HIDDEN void __glXDispSwap_Color3dv(GLbyte * pc);
extern HIDDEN int __glXDisp_IsTexture(struct __GLXclientStateRec *, GLbyte *);
extern HIDDEN int __glXDispSwap_IsTexture(struct __GLXclientStateRec *, GLbyte *);
+extern HIDDEN int __glXDisp_IsTextureEXT(struct __GLXclientStateRec *, GLbyte *);
+extern HIDDEN int __glXDispSwap_IsTextureEXT(struct __GLXclientStateRec *, GLbyte *);
extern HIDDEN int __glXDisp_DeleteQueriesARB(struct __GLXclientStateRec *, GLbyte *);
extern HIDDEN int __glXDispSwap_DeleteQueriesARB(struct __GLXclientStateRec *, GLbyte *);
extern HIDDEN int __glXDisp_GetMapdv(struct __GLXclientStateRec *, GLbyte *);
extern HIDDEN int __glXDispSwap_GetMapdv(struct __GLXclientStateRec *, GLbyte *);
+extern HIDDEN int __glXDisp_DestroyGLXPixmap(struct __GLXclientStateRec *, GLbyte *);
+extern HIDDEN int __glXDispSwap_DestroyGLXPixmap(struct __GLXclientStateRec *, GLbyte *);
extern HIDDEN void __glXDisp_SamplePatternSGIS(GLbyte * pc);
extern HIDDEN void __glXDispSwap_SamplePatternSGIS(GLbyte * pc);
extern HIDDEN int __glXDisp_PixelStoref(struct __GLXclientStateRec *, GLbyte *);
extern HIDDEN int __glXDispSwap_PixelStoref(struct __GLXclientStateRec *, GLbyte *);
-extern HIDDEN int __glXDisp_IsQueryARB(struct __GLXclientStateRec *, GLbyte *);
-extern HIDDEN int __glXDispSwap_IsQueryARB(struct __GLXclientStateRec *, GLbyte *);
+extern HIDDEN void __glXDisp_PrioritizeTextures(GLbyte * pc);
+extern HIDDEN void __glXDispSwap_PrioritizeTextures(GLbyte * pc);
extern HIDDEN int __glXDisp_PixelStorei(struct __GLXclientStateRec *, GLbyte *);
extern HIDDEN int __glXDispSwap_PixelStorei(struct __GLXclientStateRec *, GLbyte *);
+extern HIDDEN void __glXDisp_VertexAttrib4usvARB(GLbyte * pc);
+extern HIDDEN void __glXDispSwap_VertexAttrib4usvARB(GLbyte * pc);
+extern HIDDEN void __glXDisp_Color4iv(GLbyte * pc);
+extern HIDDEN void __glXDispSwap_Color4iv(GLbyte * pc);
extern HIDDEN void __glXDisp_EvalCoord2dv(GLbyte * pc);
extern HIDDEN void __glXDispSwap_EvalCoord2dv(GLbyte * pc);
extern HIDDEN void __glXDisp_VertexAttrib3svARB(GLbyte * pc);
@@ -553,6 +635,8 @@ extern HIDDEN int __glXDisp_GetVertexAttribdvARB(struct __GLXclientStateRec *, G
extern HIDDEN int __glXDispSwap_GetVertexAttribdvARB(struct __GLXclientStateRec *, GLbyte *);
extern HIDDEN int __glXDisp_GetSeparableFilter(struct __GLXclientStateRec *, GLbyte *);
extern HIDDEN int __glXDispSwap_GetSeparableFilter(struct __GLXclientStateRec *, GLbyte *);
+extern HIDDEN int __glXDisp_GetSeparableFilterEXT(struct __GLXclientStateRec *, GLbyte *);
+extern HIDDEN int __glXDispSwap_GetSeparableFilterEXT(struct __GLXclientStateRec *, GLbyte *);
extern HIDDEN void __glXDisp_RequestResidentProgramsNV(GLbyte * pc);
extern HIDDEN void __glXDispSwap_RequestResidentProgramsNV(GLbyte * pc);
extern HIDDEN int __glXDisp_FeedbackBuffer(struct __GLXclientStateRec *, GLbyte *);
@@ -563,10 +647,12 @@ extern HIDDEN void __glXDisp_TexImage1D(GLbyte * pc);
extern HIDDEN void __glXDispSwap_TexImage1D(GLbyte * pc);
extern HIDDEN void __glXDisp_FrontFace(GLbyte * pc);
extern HIDDEN void __glXDispSwap_FrontFace(GLbyte * pc);
-extern HIDDEN void __glXDisp_SecondaryColor3ubvEXT(GLbyte * pc);
-extern HIDDEN void __glXDispSwap_SecondaryColor3ubvEXT(GLbyte * pc);
+extern HIDDEN int __glXDisp_RenderLarge(struct __GLXclientStateRec *, GLbyte *);
+extern HIDDEN int __glXDispSwap_RenderLarge(struct __GLXclientStateRec *, GLbyte *);
extern HIDDEN void __glXDisp_VertexAttrib4dvARB(GLbyte * pc);
extern HIDDEN void __glXDispSwap_VertexAttrib4dvARB(GLbyte * pc);
+extern HIDDEN void __glXDisp_PolygonOffset(GLbyte * pc);
+extern HIDDEN void __glXDispSwap_PolygonOffset(GLbyte * pc);
extern HIDDEN void __glXDisp_ExecuteProgramNV(GLbyte * pc);
extern HIDDEN void __glXDispSwap_ExecuteProgramNV(GLbyte * pc);
extern HIDDEN void __glXDisp_Normal3dv(GLbyte * pc);
@@ -585,6 +671,8 @@ extern HIDDEN int __glXDisp_GetFramebufferAttachmentParameterivEXT(struct __GLXc
extern HIDDEN int __glXDispSwap_GetFramebufferAttachmentParameterivEXT(struct __GLXclientStateRec *, GLbyte *);
extern HIDDEN void __glXDisp_MultiTexCoord4dvARB(GLbyte * pc);
extern HIDDEN void __glXDispSwap_MultiTexCoord4dvARB(GLbyte * pc);
+extern HIDDEN int __glXDisp_CreatePbuffer(struct __GLXclientStateRec *, GLbyte *);
+extern HIDDEN int __glXDispSwap_CreatePbuffer(struct __GLXclientStateRec *, GLbyte *);
extern HIDDEN int __glXDisp_GetDoublev(struct __GLXclientStateRec *, GLbyte *);
extern HIDDEN int __glXDispSwap_GetDoublev(struct __GLXclientStateRec *, GLbyte *);
extern HIDDEN void __glXDisp_MultMatrixd(GLbyte * pc);
@@ -603,16 +691,20 @@ extern HIDDEN void __glXDisp_VertexAttrib3fvARB(GLbyte * pc);
extern HIDDEN void __glXDispSwap_VertexAttrib3fvARB(GLbyte * pc);
extern HIDDEN void __glXDisp_ClearColor(GLbyte * pc);
extern HIDDEN void __glXDispSwap_ClearColor(GLbyte * pc);
+extern HIDDEN int __glXDisp_IsDirect(struct __GLXclientStateRec *, GLbyte *);
+extern HIDDEN int __glXDispSwap_IsDirect(struct __GLXclientStateRec *, GLbyte *);
extern HIDDEN void __glXDisp_DeleteFramebuffersEXT(GLbyte * pc);
extern HIDDEN void __glXDispSwap_DeleteFramebuffersEXT(GLbyte * pc);
extern HIDDEN void __glXDisp_TexEnviv(GLbyte * pc);
extern HIDDEN void __glXDispSwap_TexEnviv(GLbyte * pc);
extern HIDDEN void __glXDisp_TexSubImage3D(GLbyte * pc);
extern HIDDEN void __glXDispSwap_TexSubImage3D(GLbyte * pc);
-extern HIDDEN void __glXDisp_SecondaryColor3uivEXT(GLbyte * pc);
-extern HIDDEN void __glXDispSwap_SecondaryColor3uivEXT(GLbyte * pc);
+extern HIDDEN int __glXDisp_SwapIntervalSGI(struct __GLXclientStateRec *, GLbyte *);
+extern HIDDEN int __glXDispSwap_SwapIntervalSGI(struct __GLXclientStateRec *, GLbyte *);
extern HIDDEN int __glXDisp_GetColorTableParameterfv(struct __GLXclientStateRec *, GLbyte *);
extern HIDDEN int __glXDispSwap_GetColorTableParameterfv(struct __GLXclientStateRec *, GLbyte *);
+extern HIDDEN int __glXDisp_GetColorTableParameterfvSGI(struct __GLXclientStateRec *, GLbyte *);
+extern HIDDEN int __glXDispSwap_GetColorTableParameterfvSGI(struct __GLXclientStateRec *, GLbyte *);
extern HIDDEN void __glXDisp_Bitmap(GLbyte * pc);
extern HIDDEN void __glXDispSwap_Bitmap(GLbyte * pc);
extern HIDDEN int __glXDisp_GetTexLevelParameterfv(struct __GLXclientStateRec *, GLbyte *);
@@ -633,6 +725,8 @@ extern HIDDEN void __glXDisp_VertexAttrib3svNV(GLbyte * pc);
extern HIDDEN void __glXDispSwap_VertexAttrib3svNV(GLbyte * pc);
extern HIDDEN int __glXDisp_GetTexEnviv(struct __GLXclientStateRec *, GLbyte *);
extern HIDDEN int __glXDispSwap_GetTexEnviv(struct __GLXclientStateRec *, GLbyte *);
+extern HIDDEN int __glXDisp_VendorPrivateWithReply(struct __GLXclientStateRec *, GLbyte *);
+extern HIDDEN int __glXDispSwap_VendorPrivateWithReply(struct __GLXclientStateRec *, GLbyte *);
extern HIDDEN void __glXDisp_SeparableFilter2D(GLbyte * pc);
extern HIDDEN void __glXDispSwap_SeparableFilter2D(GLbyte * pc);
extern HIDDEN void __glXDisp_Map1d(GLbyte * pc);
@@ -647,8 +741,12 @@ extern HIDDEN void __glXDisp_ProgramParameters4fvNV(GLbyte * pc);
extern HIDDEN void __glXDispSwap_ProgramParameters4fvNV(GLbyte * pc);
extern HIDDEN int __glXDisp_GetProgramivNV(struct __GLXclientStateRec *, GLbyte *);
extern HIDDEN int __glXDispSwap_GetProgramivNV(struct __GLXclientStateRec *, GLbyte *);
+extern HIDDEN int __glXDisp_ChangeDrawableAttributes(struct __GLXclientStateRec *, GLbyte *);
+extern HIDDEN int __glXDispSwap_ChangeDrawableAttributes(struct __GLXclientStateRec *, GLbyte *);
extern HIDDEN int __glXDisp_GetMinmaxParameteriv(struct __GLXclientStateRec *, GLbyte *);
extern HIDDEN int __glXDispSwap_GetMinmaxParameteriv(struct __GLXclientStateRec *, GLbyte *);
+extern HIDDEN int __glXDisp_GetMinmaxParameterivEXT(struct __GLXclientStateRec *, GLbyte *);
+extern HIDDEN int __glXDispSwap_GetMinmaxParameterivEXT(struct __GLXclientStateRec *, GLbyte *);
extern HIDDEN void __glXDisp_PixelTransferf(GLbyte * pc);
extern HIDDEN void __glXDispSwap_PixelTransferf(GLbyte * pc);
extern HIDDEN void __glXDisp_CopyTexImage1D(GLbyte * pc);
@@ -661,12 +759,10 @@ extern HIDDEN void __glXDisp_TexCoord1dv(GLbyte * pc);
extern HIDDEN void __glXDispSwap_TexCoord1dv(GLbyte * pc);
extern HIDDEN void __glXDisp_PixelTransferi(GLbyte * pc);
extern HIDDEN void __glXDispSwap_PixelTransferi(GLbyte * pc);
-extern HIDDEN int __glXDisp_GetVertexAttribdvNV(struct __GLXclientStateRec *, GLbyte *);
-extern HIDDEN int __glXDispSwap_GetVertexAttribdvNV(struct __GLXclientStateRec *, GLbyte *);
+extern HIDDEN void __glXDisp_SecondaryColor3ubvEXT(GLbyte * pc);
+extern HIDDEN void __glXDispSwap_SecondaryColor3ubvEXT(GLbyte * pc);
extern HIDDEN void __glXDisp_VertexAttrib3fvNV(GLbyte * pc);
extern HIDDEN void __glXDispSwap_VertexAttrib3fvNV(GLbyte * pc);
-extern HIDDEN void __glXDisp_Rotatef(GLbyte * pc);
-extern HIDDEN void __glXDispSwap_Rotatef(GLbyte * pc);
extern HIDDEN void __glXDisp_Clear(GLbyte * pc);
extern HIDDEN void __glXDispSwap_Clear(GLbyte * pc);
extern HIDDEN void __glXDisp_ReadBuffer(GLbyte * pc);
@@ -681,14 +777,16 @@ extern HIDDEN void __glXDisp_ConvolutionParameterf(GLbyte * pc);
extern HIDDEN void __glXDispSwap_ConvolutionParameterf(GLbyte * pc);
extern HIDDEN int __glXDisp_GetColorTableParameteriv(struct __GLXclientStateRec *, GLbyte *);
extern HIDDEN int __glXDispSwap_GetColorTableParameteriv(struct __GLXclientStateRec *, GLbyte *);
-extern HIDDEN void __glXDisp_ShadeModel(GLbyte * pc);
-extern HIDDEN void __glXDispSwap_ShadeModel(GLbyte * pc);
+extern HIDDEN int __glXDisp_GetColorTableParameterivSGI(struct __GLXclientStateRec *, GLbyte *);
+extern HIDDEN int __glXDispSwap_GetColorTableParameterivSGI(struct __GLXclientStateRec *, GLbyte *);
+extern HIDDEN int __glXDisp_ReleaseTexImageEXT(struct __GLXclientStateRec *, GLbyte *);
+extern HIDDEN int __glXDispSwap_ReleaseTexImageEXT(struct __GLXclientStateRec *, GLbyte *);
+extern HIDDEN void __glXDisp_CallList(GLbyte * pc);
+extern HIDDEN void __glXDispSwap_CallList(GLbyte * pc);
extern HIDDEN void __glXDisp_VertexAttribs2fvNV(GLbyte * pc);
extern HIDDEN void __glXDispSwap_VertexAttribs2fvNV(GLbyte * pc);
extern HIDDEN void __glXDisp_Rectiv(GLbyte * pc);
extern HIDDEN void __glXDispSwap_Rectiv(GLbyte * pc);
-extern HIDDEN void __glXDisp_VertexAttrib1fvNV(GLbyte * pc);
-extern HIDDEN void __glXDispSwap_VertexAttrib1fvNV(GLbyte * pc);
extern HIDDEN void __glXDisp_SecondaryColor3dvEXT(GLbyte * pc);
extern HIDDEN void __glXDispSwap_SecondaryColor3dvEXT(GLbyte * pc);
extern HIDDEN void __glXDisp_Vertex2fv(GLbyte * pc);
@@ -697,6 +795,8 @@ extern HIDDEN void __glXDisp_BindRenderbufferEXT(GLbyte * pc);
extern HIDDEN void __glXDispSwap_BindRenderbufferEXT(GLbyte * pc);
extern HIDDEN void __glXDisp_Vertex3sv(GLbyte * pc);
extern HIDDEN void __glXDispSwap_Vertex3sv(GLbyte * pc);
+extern HIDDEN int __glXDisp_BindTexImageEXT(struct __GLXclientStateRec *, GLbyte *);
+extern HIDDEN int __glXDispSwap_BindTexImageEXT(struct __GLXclientStateRec *, GLbyte *);
extern HIDDEN void __glXDisp_ProgramLocalParameter4fvARB(GLbyte * pc);
extern HIDDEN void __glXDispSwap_ProgramLocalParameter4fvARB(GLbyte * pc);
extern HIDDEN int __glXDisp_DeleteProgramsNV(struct __GLXclientStateRec *, GLbyte *);
@@ -711,20 +811,24 @@ extern HIDDEN int __glXDisp_GetProgramStringNV(struct __GLXclientStateRec *, GLb
extern HIDDEN int __glXDispSwap_GetProgramStringNV(struct __GLXclientStateRec *, GLbyte *);
extern HIDDEN void __glXDisp_LineWidth(GLbyte * pc);
extern HIDDEN void __glXDispSwap_LineWidth(GLbyte * pc);
+extern HIDDEN void __glXDisp_VertexAttrib2fvARB(GLbyte * pc);
+extern HIDDEN void __glXDispSwap_VertexAttrib2fvARB(GLbyte * pc);
extern HIDDEN void __glXDisp_TexGendv(GLbyte * pc);
extern HIDDEN void __glXDispSwap_TexGendv(GLbyte * pc);
extern HIDDEN void __glXDisp_ResetMinmax(GLbyte * pc);
extern HIDDEN void __glXDispSwap_ResetMinmax(GLbyte * pc);
-extern HIDDEN int __glXDisp_GenTexturesEXT(struct __GLXclientStateRec *, GLbyte *);
-extern HIDDEN int __glXDispSwap_GenTexturesEXT(struct __GLXclientStateRec *, GLbyte *);
extern HIDDEN int __glXDisp_GetConvolutionParameterfv(struct __GLXclientStateRec *, GLbyte *);
extern HIDDEN int __glXDispSwap_GetConvolutionParameterfv(struct __GLXclientStateRec *, GLbyte *);
+extern HIDDEN int __glXDisp_GetConvolutionParameterfvEXT(struct __GLXclientStateRec *, GLbyte *);
+extern HIDDEN int __glXDispSwap_GetConvolutionParameterfvEXT(struct __GLXclientStateRec *, GLbyte *);
extern HIDDEN void __glXDisp_VertexAttribs4dvNV(GLbyte * pc);
extern HIDDEN void __glXDispSwap_VertexAttribs4dvNV(GLbyte * pc);
extern HIDDEN int __glXDisp_GetMaterialfv(struct __GLXclientStateRec *, GLbyte *);
extern HIDDEN int __glXDispSwap_GetMaterialfv(struct __GLXclientStateRec *, GLbyte *);
-extern HIDDEN void __glXDisp_CallList(GLbyte * pc);
-extern HIDDEN void __glXDispSwap_CallList(GLbyte * pc);
+extern HIDDEN int __glXDisp_UseXFont(struct __GLXclientStateRec *, GLbyte *);
+extern HIDDEN int __glXDispSwap_UseXFont(struct __GLXclientStateRec *, GLbyte *);
+extern HIDDEN void __glXDisp_ShadeModel(GLbyte * pc);
+extern HIDDEN void __glXDispSwap_ShadeModel(GLbyte * pc);
extern HIDDEN void __glXDisp_Materialfv(GLbyte * pc);
extern HIDDEN void __glXDispSwap_Materialfv(GLbyte * pc);
extern HIDDEN void __glXDisp_TexCoord3fv(GLbyte * pc);
@@ -735,16 +839,20 @@ extern HIDDEN void __glXDisp_MultiTexCoord1ivARB(GLbyte * pc);
extern HIDDEN void __glXDispSwap_MultiTexCoord1ivARB(GLbyte * pc);
extern HIDDEN void __glXDisp_MultiTexCoord2ivARB(GLbyte * pc);
extern HIDDEN void __glXDispSwap_MultiTexCoord2ivARB(GLbyte * pc);
-extern HIDDEN void __glXDisp_CopyTexSubImage2D(GLbyte * pc);
-extern HIDDEN void __glXDispSwap_CopyTexSubImage2D(GLbyte * pc);
+extern HIDDEN void __glXDisp_DrawArrays(GLbyte * pc);
+extern HIDDEN void __glXDispSwap_DrawArrays(GLbyte * pc);
extern HIDDEN void __glXDisp_Color3iv(GLbyte * pc);
extern HIDDEN void __glXDispSwap_Color3iv(GLbyte * pc);
extern HIDDEN int __glXDisp_GetProgramLocalParameterdvARB(struct __GLXclientStateRec *, GLbyte *);
extern HIDDEN int __glXDispSwap_GetProgramLocalParameterdvARB(struct __GLXclientStateRec *, GLbyte *);
extern HIDDEN int __glXDisp_GetHistogramParameteriv(struct __GLXclientStateRec *, GLbyte *);
extern HIDDEN int __glXDispSwap_GetHistogramParameteriv(struct __GLXclientStateRec *, GLbyte *);
+extern HIDDEN int __glXDisp_GetHistogramParameterivEXT(struct __GLXclientStateRec *, GLbyte *);
+extern HIDDEN int __glXDispSwap_GetHistogramParameterivEXT(struct __GLXclientStateRec *, GLbyte *);
extern HIDDEN int __glXDisp_GetConvolutionFilter(struct __GLXclientStateRec *, GLbyte *);
extern HIDDEN int __glXDispSwap_GetConvolutionFilter(struct __GLXclientStateRec *, GLbyte *);
+extern HIDDEN int __glXDisp_GetConvolutionFilterEXT(struct __GLXclientStateRec *, GLbyte *);
+extern HIDDEN int __glXDispSwap_GetConvolutionFilterEXT(struct __GLXclientStateRec *, GLbyte *);
extern HIDDEN int __glXDisp_GetProgramivARB(struct __GLXclientStateRec *, GLbyte *);
extern HIDDEN int __glXDispSwap_GetProgramivARB(struct __GLXclientStateRec *, GLbyte *);
extern HIDDEN void __glXDisp_BlendFuncSeparateEXT(GLbyte * pc);
@@ -757,24 +865,26 @@ extern HIDDEN void __glXDisp_EvalPoint1(GLbyte * pc);
extern HIDDEN void __glXDispSwap_EvalPoint1(GLbyte * pc);
extern HIDDEN void __glXDisp_PopMatrix(GLbyte * pc);
extern HIDDEN void __glXDispSwap_PopMatrix(GLbyte * pc);
-extern HIDDEN int __glXDisp_AreTexturesResidentEXT(struct __GLXclientStateRec *, GLbyte *);
-extern HIDDEN int __glXDispSwap_AreTexturesResidentEXT(struct __GLXclientStateRec *, GLbyte *);
+extern HIDDEN int __glXDisp_MakeCurrentReadSGI(struct __GLXclientStateRec *, GLbyte *);
+extern HIDDEN int __glXDispSwap_MakeCurrentReadSGI(struct __GLXclientStateRec *, GLbyte *);
extern HIDDEN int __glXDisp_GetTexGeniv(struct __GLXclientStateRec *, GLbyte *);
extern HIDDEN int __glXDispSwap_GetTexGeniv(struct __GLXclientStateRec *, GLbyte *);
+extern HIDDEN int __glXDisp_MakeCurrent(struct __GLXclientStateRec *, GLbyte *);
+extern HIDDEN int __glXDispSwap_MakeCurrent(struct __GLXclientStateRec *, GLbyte *);
extern HIDDEN void __glXDisp_Map2d(GLbyte * pc);
extern HIDDEN void __glXDispSwap_Map2d(GLbyte * pc);
extern HIDDEN void __glXDisp_Map2f(GLbyte * pc);
extern HIDDEN void __glXDispSwap_Map2f(GLbyte * pc);
extern HIDDEN void __glXDisp_ProgramStringARB(GLbyte * pc);
extern HIDDEN void __glXDispSwap_ProgramStringARB(GLbyte * pc);
-extern HIDDEN void __glXDisp_RasterPos4dv(GLbyte * pc);
-extern HIDDEN void __glXDispSwap_RasterPos4dv(GLbyte * pc);
extern HIDDEN int __glXDisp_GetCompressedTexImageARB(struct __GLXclientStateRec *, GLbyte *);
extern HIDDEN int __glXDispSwap_GetCompressedTexImageARB(struct __GLXclientStateRec *, GLbyte *);
extern HIDDEN int __glXDisp_GetTexGenfv(struct __GLXclientStateRec *, GLbyte *);
extern HIDDEN int __glXDispSwap_GetTexGenfv(struct __GLXclientStateRec *, GLbyte *);
extern HIDDEN int __glXDisp_GetHistogram(struct __GLXclientStateRec *, GLbyte *);
extern HIDDEN int __glXDispSwap_GetHistogram(struct __GLXclientStateRec *, GLbyte *);
+extern HIDDEN int __glXDisp_GetHistogramEXT(struct __GLXclientStateRec *, GLbyte *);
+extern HIDDEN int __glXDispSwap_GetHistogramEXT(struct __GLXclientStateRec *, GLbyte *);
extern HIDDEN void __glXDisp_ActiveStencilFaceEXT(GLbyte * pc);
extern HIDDEN void __glXDispSwap_ActiveStencilFaceEXT(GLbyte * pc);
extern HIDDEN void __glXDisp_Materialf(GLbyte * pc);
@@ -799,22 +909,24 @@ extern HIDDEN void __glXDisp_Translatef(GLbyte * pc);
extern HIDDEN void __glXDispSwap_Translatef(GLbyte * pc);
extern HIDDEN void __glXDisp_StencilMask(GLbyte * pc);
extern HIDDEN void __glXDispSwap_StencilMask(GLbyte * pc);
+extern HIDDEN int __glXDisp_CreateWindow(struct __GLXclientStateRec *, GLbyte *);
+extern HIDDEN int __glXDispSwap_CreateWindow(struct __GLXclientStateRec *, GLbyte *);
extern HIDDEN int __glXDisp_GetLightiv(struct __GLXclientStateRec *, GLbyte *);
extern HIDDEN int __glXDispSwap_GetLightiv(struct __GLXclientStateRec *, GLbyte *);
extern HIDDEN int __glXDisp_IsList(struct __GLXclientStateRec *, GLbyte *);
extern HIDDEN int __glXDispSwap_IsList(struct __GLXclientStateRec *, GLbyte *);
extern HIDDEN int __glXDisp_RenderMode(struct __GLXclientStateRec *, GLbyte *);
extern HIDDEN int __glXDispSwap_RenderMode(struct __GLXclientStateRec *, GLbyte *);
+extern HIDDEN void __glXDisp_DrawBuffersARB(GLbyte * pc);
+extern HIDDEN void __glXDispSwap_DrawBuffersARB(GLbyte * pc);
extern HIDDEN void __glXDisp_LoadName(GLbyte * pc);
extern HIDDEN void __glXDispSwap_LoadName(GLbyte * pc);
-extern HIDDEN void __glXDisp_VertexAttribs4ubvNV(GLbyte * pc);
-extern HIDDEN void __glXDispSwap_VertexAttribs4ubvNV(GLbyte * pc);
extern HIDDEN void __glXDisp_CopyTexSubImage1D(GLbyte * pc);
extern HIDDEN void __glXDispSwap_CopyTexSubImage1D(GLbyte * pc);
extern HIDDEN void __glXDisp_CullFace(GLbyte * pc);
extern HIDDEN void __glXDispSwap_CullFace(GLbyte * pc);
-extern HIDDEN void __glXDisp_BindTexture(GLbyte * pc);
-extern HIDDEN void __glXDispSwap_BindTexture(GLbyte * pc);
+extern HIDDEN int __glXDisp_QueryContextInfoEXT(struct __GLXclientStateRec *, GLbyte *);
+extern HIDDEN int __glXDispSwap_QueryContextInfoEXT(struct __GLXclientStateRec *, GLbyte *);
extern HIDDEN void __glXDisp_VertexAttribs3svNV(GLbyte * pc);
extern HIDDEN void __glXDispSwap_VertexAttribs3svNV(GLbyte * pc);
extern HIDDEN void __glXDisp_StencilFunc(GLbyte * pc);
@@ -831,12 +943,12 @@ extern HIDDEN void __glXDisp_VertexAttrib4uivARB(GLbyte * pc);
extern HIDDEN void __glXDispSwap_VertexAttrib4uivARB(GLbyte * pc);
extern HIDDEN void __glXDisp_ClipPlane(GLbyte * pc);
extern HIDDEN void __glXDispSwap_ClipPlane(GLbyte * pc);
-extern HIDDEN int __glXDisp_IsTextureEXT(struct __GLXclientStateRec *, GLbyte *);
-extern HIDDEN int __glXDispSwap_IsTextureEXT(struct __GLXclientStateRec *, GLbyte *);
extern HIDDEN int __glXDisp_GetPixelMapuiv(struct __GLXclientStateRec *, GLbyte *);
extern HIDDEN int __glXDispSwap_GetPixelMapuiv(struct __GLXclientStateRec *, GLbyte *);
extern HIDDEN void __glXDisp_Indexfv(GLbyte * pc);
extern HIDDEN void __glXDispSwap_Indexfv(GLbyte * pc);
+extern HIDDEN int __glXDisp_QueryContext(struct __GLXclientStateRec *, GLbyte *);
+extern HIDDEN int __glXDispSwap_QueryContext(struct __GLXclientStateRec *, GLbyte *);
extern HIDDEN void __glXDisp_SecondaryColor3svEXT(GLbyte * pc);
extern HIDDEN void __glXDispSwap_SecondaryColor3svEXT(GLbyte * pc);
extern HIDDEN void __glXDisp_IndexMask(GLbyte * pc);
@@ -885,8 +997,8 @@ extern HIDDEN void __glXDisp_TexCoord4dv(GLbyte * pc);
extern HIDDEN void __glXDispSwap_TexCoord4dv(GLbyte * pc);
extern HIDDEN void __glXDisp_Begin(GLbyte * pc);
extern HIDDEN void __glXDispSwap_Begin(GLbyte * pc);
-extern HIDDEN void __glXDisp_LightModeli(GLbyte * pc);
-extern HIDDEN void __glXDispSwap_LightModeli(GLbyte * pc);
+extern HIDDEN int __glXDisp_ClientInfo(struct __GLXclientStateRec *, GLbyte *);
+extern HIDDEN int __glXDispSwap_ClientInfo(struct __GLXclientStateRec *, GLbyte *);
extern HIDDEN void __glXDisp_Rectfv(GLbyte * pc);
extern HIDDEN void __glXDispSwap_Rectfv(GLbyte * pc);
extern HIDDEN void __glXDisp_LightModelf(GLbyte * pc);
@@ -901,20 +1013,20 @@ extern HIDDEN void __glXDisp_MultiTexCoord2fvARB(GLbyte * pc);
extern HIDDEN void __glXDispSwap_MultiTexCoord2fvARB(GLbyte * pc);
extern HIDDEN int __glXDisp_GetRenderbufferParameterivEXT(struct __GLXclientStateRec *, GLbyte *);
extern HIDDEN int __glXDispSwap_GetRenderbufferParameterivEXT(struct __GLXclientStateRec *, GLbyte *);
-extern HIDDEN void __glXDisp_DrawArrays(GLbyte * pc);
-extern HIDDEN void __glXDispSwap_DrawArrays(GLbyte * pc);
+extern HIDDEN int __glXDisp_SelectBuffer(struct __GLXclientStateRec *, GLbyte *);
+extern HIDDEN int __glXDispSwap_SelectBuffer(struct __GLXclientStateRec *, GLbyte *);
extern HIDDEN void __glXDisp_ColorMask(GLbyte * pc);
extern HIDDEN void __glXDispSwap_ColorMask(GLbyte * pc);
extern HIDDEN void __glXDisp_RasterPos4iv(GLbyte * pc);
extern HIDDEN void __glXDispSwap_RasterPos4iv(GLbyte * pc);
extern HIDDEN void __glXDisp_Enable(GLbyte * pc);
extern HIDDEN void __glXDispSwap_Enable(GLbyte * pc);
-extern HIDDEN void __glXDisp_LineStipple(GLbyte * pc);
-extern HIDDEN void __glXDispSwap_LineStipple(GLbyte * pc);
extern HIDDEN void __glXDisp_VertexAttribs4svNV(GLbyte * pc);
extern HIDDEN void __glXDispSwap_VertexAttribs4svNV(GLbyte * pc);
extern HIDDEN int __glXDisp_GetMinmaxParameterfv(struct __GLXclientStateRec *, GLbyte *);
extern HIDDEN int __glXDispSwap_GetMinmaxParameterfv(struct __GLXclientStateRec *, GLbyte *);
+extern HIDDEN int __glXDisp_GetMinmaxParameterfvEXT(struct __GLXclientStateRec *, GLbyte *);
+extern HIDDEN int __glXDispSwap_GetMinmaxParameterfvEXT(struct __GLXclientStateRec *, GLbyte *);
extern HIDDEN void __glXDisp_VertexAttrib1fvARB(GLbyte * pc);
extern HIDDEN void __glXDispSwap_VertexAttrib1fvARB(GLbyte * pc);
extern HIDDEN void __glXDisp_VertexAttribs1svNV(GLbyte * pc);
diff --git a/GL/glx/indirect_dispatch_swap.c b/GL/glx/indirect_dispatch_swap.c
index f5ed1009a..136f0d010 100644
--- a/GL/glx/indirect_dispatch_swap.c
+++ b/GL/glx/indirect_dispatch_swap.c
@@ -28,7 +28,7 @@
#include <X11/Xmd.h>
#include <GL/gl.h>
#include <GL/glxproto.h>
-#ifdef __linux__
+#if defined(__linux__) || defined (__GLIBC__) || defined(__GNU__)
#include <byteswap.h>
#elif defined(__OpenBSD__)
#include <sys/endian.h>
@@ -2887,6 +2887,31 @@ int __glXDispSwap_AreTexturesResident(__GLXclientState *cl, GLbyte *pc)
return error;
}
+int __glXDispSwap_AreTexturesResidentEXT(__GLXclientState *cl, GLbyte *pc)
+{
+ xGLXVendorPrivateReq * const req = (xGLXVendorPrivateReq *) pc;
+ int error;
+ __GLXcontext * const cx = __glXForceCurrent(cl, bswap_CARD32( &req->contextTag ), &error);
+
+ pc += __GLX_VENDPRIV_HDR_SIZE;
+ if ( cx != NULL ) {
+ const GLsizei n = (GLsizei )bswap_CARD32 ( pc + 0 );
+
+ GLboolean retval;
+ GLboolean answerBuffer[200];
+ GLboolean * residences = __glXGetAnswerBuffer(cl, n, answerBuffer, sizeof(answerBuffer), 1);
+ retval = CALL_AreTexturesResident( GET_DISPATCH(), (
+ n,
+ (const GLuint *)bswap_32_array( (uint32_t *) (pc + 4), 0 ),
+ residences
+ ) );
+ __glXSendReplySwap(cl->client, residences, n, 1, GL_TRUE, retval);
+ error = Success;
+ }
+
+ return error;
+}
+
void __glXDispSwap_CopyTexImage1D(GLbyte * pc)
{
CALL_CopyTexImage1D( GET_DISPATCH(), (
@@ -2942,6 +2967,26 @@ void __glXDispSwap_CopyTexSubImage2D(GLbyte * pc)
int __glXDispSwap_DeleteTextures(__GLXclientState *cl, GLbyte *pc)
{
+ xGLXSingleReq * const req = (xGLXSingleReq *) pc;
+ int error;
+ __GLXcontext * const cx = __glXForceCurrent(cl, bswap_CARD32( &req->contextTag ), &error);
+
+ pc += __GLX_SINGLE_HDR_SIZE;
+ if ( cx != NULL ) {
+ const GLsizei n = (GLsizei )bswap_CARD32 ( pc + 0 );
+
+ CALL_DeleteTextures( GET_DISPATCH(), (
+ n,
+ (const GLuint *)bswap_32_array( (uint32_t *) (pc + 4), 0 )
+ ) );
+ error = Success;
+ }
+
+ return error;
+}
+
+int __glXDispSwap_DeleteTexturesEXT(__GLXclientState *cl, GLbyte *pc)
+{
xGLXVendorPrivateReq * const req = (xGLXVendorPrivateReq *) pc;
int error;
__GLXcontext * const cx = __glXForceCurrent(cl, bswap_CARD32( &req->contextTag ), &error);
@@ -2984,6 +3029,30 @@ int __glXDispSwap_GenTextures(__GLXclientState *cl, GLbyte *pc)
return error;
}
+int __glXDispSwap_GenTexturesEXT(__GLXclientState *cl, GLbyte *pc)
+{
+ xGLXVendorPrivateReq * const req = (xGLXVendorPrivateReq *) pc;
+ int error;
+ __GLXcontext * const cx = __glXForceCurrent(cl, bswap_CARD32( &req->contextTag ), &error);
+
+ pc += __GLX_VENDPRIV_HDR_SIZE;
+ if ( cx != NULL ) {
+ const GLsizei n = (GLsizei )bswap_CARD32 ( pc + 0 );
+
+ GLuint answerBuffer[200];
+ GLuint * textures = __glXGetAnswerBuffer(cl, n * 4, answerBuffer, sizeof(answerBuffer), 4);
+ CALL_GenTextures( GET_DISPATCH(), (
+ n,
+ textures
+ ) );
+ (void) bswap_32_array( (uint32_t *) textures, n );
+ __glXSendReplySwap(cl->client, textures, n, 4, GL_TRUE, 0);
+ error = Success;
+ }
+
+ return error;
+}
+
int __glXDispSwap_IsTexture(__GLXclientState *cl, GLbyte *pc)
{
xGLXSingleReq * const req = (xGLXSingleReq *) pc;
@@ -3003,6 +3072,25 @@ int __glXDispSwap_IsTexture(__GLXclientState *cl, GLbyte *pc)
return error;
}
+int __glXDispSwap_IsTextureEXT(__GLXclientState *cl, GLbyte *pc)
+{
+ xGLXVendorPrivateReq * const req = (xGLXVendorPrivateReq *) pc;
+ int error;
+ __GLXcontext * const cx = __glXForceCurrent(cl, bswap_CARD32( &req->contextTag ), &error);
+
+ pc += __GLX_VENDPRIV_HDR_SIZE;
+ if ( cx != NULL ) {
+ GLboolean retval;
+ retval = CALL_IsTexture( GET_DISPATCH(), (
+ (GLuint )bswap_CARD32 ( pc + 0 )
+ ) );
+ __glXSendReplySwap(cl->client, dummy_answer, 0, 0, GL_FALSE, retval);
+ error = Success;
+ }
+
+ return error;
+}
+
void __glXDispSwap_PrioritizeTextures(GLbyte * pc)
{
const GLsizei n = (GLsizei )bswap_CARD32 ( pc + 0 );
@@ -3172,6 +3260,36 @@ int __glXDispSwap_GetColorTableParameterfv(__GLXclientState *cl, GLbyte *pc)
return error;
}
+int __glXDispSwap_GetColorTableParameterfvSGI(__GLXclientState *cl, GLbyte *pc)
+{
+ xGLXVendorPrivateReq * const req = (xGLXVendorPrivateReq *) pc;
+ int error;
+ __GLXcontext * const cx = __glXForceCurrent(cl, bswap_CARD32( &req->contextTag ), &error);
+
+ pc += __GLX_VENDPRIV_HDR_SIZE;
+ if ( cx != NULL ) {
+ const GLenum pname = (GLenum )bswap_ENUM ( pc + 4 );
+
+ const GLuint compsize = __glGetColorTableParameterfv_size(pname);
+ GLfloat answerBuffer[200];
+ GLfloat * params = __glXGetAnswerBuffer(cl, compsize * 4, answerBuffer, sizeof(answerBuffer), 4);
+
+ if (params == NULL) return BadAlloc;
+ __glXClearErrorOccured();
+
+ CALL_GetColorTableParameterfv( GET_DISPATCH(), (
+ (GLenum )bswap_ENUM ( pc + 0 ),
+ pname,
+ params
+ ) );
+ (void) bswap_32_array( (uint32_t *) params, compsize );
+ __glXSendReplySwap(cl->client, params, compsize, 4, GL_FALSE, 0);
+ error = Success;
+ }
+
+ return error;
+}
+
int __glXDispSwap_GetColorTableParameteriv(__GLXclientState *cl, GLbyte *pc)
{
xGLXSingleReq * const req = (xGLXSingleReq *) pc;
@@ -3202,6 +3320,36 @@ int __glXDispSwap_GetColorTableParameteriv(__GLXclientState *cl, GLbyte *pc)
return error;
}
+int __glXDispSwap_GetColorTableParameterivSGI(__GLXclientState *cl, GLbyte *pc)
+{
+ xGLXVendorPrivateReq * const req = (xGLXVendorPrivateReq *) pc;
+ int error;
+ __GLXcontext * const cx = __glXForceCurrent(cl, bswap_CARD32( &req->contextTag ), &error);
+
+ pc += __GLX_VENDPRIV_HDR_SIZE;
+ if ( cx != NULL ) {
+ const GLenum pname = (GLenum )bswap_ENUM ( pc + 4 );
+
+ const GLuint compsize = __glGetColorTableParameteriv_size(pname);
+ GLint answerBuffer[200];
+ GLint * params = __glXGetAnswerBuffer(cl, compsize * 4, answerBuffer, sizeof(answerBuffer), 4);
+
+ if (params == NULL) return BadAlloc;
+ __glXClearErrorOccured();
+
+ CALL_GetColorTableParameteriv( GET_DISPATCH(), (
+ (GLenum )bswap_ENUM ( pc + 0 ),
+ pname,
+ params
+ ) );
+ (void) bswap_32_array( (uint32_t *) params, compsize );
+ __glXSendReplySwap(cl->client, params, compsize, 4, GL_FALSE, 0);
+ error = Success;
+ }
+
+ return error;
+}
+
void __glXDispSwap_ColorSubTable(GLbyte * pc)
{
const GLvoid * const data = (const GLvoid *) (pc + 40);
@@ -3379,6 +3527,36 @@ int __glXDispSwap_GetConvolutionParameterfv(__GLXclientState *cl, GLbyte *pc)
return error;
}
+int __glXDispSwap_GetConvolutionParameterfvEXT(__GLXclientState *cl, GLbyte *pc)
+{
+ xGLXVendorPrivateReq * const req = (xGLXVendorPrivateReq *) pc;
+ int error;
+ __GLXcontext * const cx = __glXForceCurrent(cl, bswap_CARD32( &req->contextTag ), &error);
+
+ pc += __GLX_VENDPRIV_HDR_SIZE;
+ if ( cx != NULL ) {
+ const GLenum pname = (GLenum )bswap_ENUM ( pc + 4 );
+
+ const GLuint compsize = __glGetConvolutionParameterfv_size(pname);
+ GLfloat answerBuffer[200];
+ GLfloat * params = __glXGetAnswerBuffer(cl, compsize * 4, answerBuffer, sizeof(answerBuffer), 4);
+
+ if (params == NULL) return BadAlloc;
+ __glXClearErrorOccured();
+
+ CALL_GetConvolutionParameterfv( GET_DISPATCH(), (
+ (GLenum )bswap_ENUM ( pc + 0 ),
+ pname,
+ params
+ ) );
+ (void) bswap_32_array( (uint32_t *) params, compsize );
+ __glXSendReplySwap(cl->client, params, compsize, 4, GL_FALSE, 0);
+ error = Success;
+ }
+
+ return error;
+}
+
int __glXDispSwap_GetConvolutionParameteriv(__GLXclientState *cl, GLbyte *pc)
{
xGLXSingleReq * const req = (xGLXSingleReq *) pc;
@@ -3409,6 +3587,36 @@ int __glXDispSwap_GetConvolutionParameteriv(__GLXclientState *cl, GLbyte *pc)
return error;
}
+int __glXDispSwap_GetConvolutionParameterivEXT(__GLXclientState *cl, GLbyte *pc)
+{
+ xGLXVendorPrivateReq * const req = (xGLXVendorPrivateReq *) pc;
+ int error;
+ __GLXcontext * const cx = __glXForceCurrent(cl, bswap_CARD32( &req->contextTag ), &error);
+
+ pc += __GLX_VENDPRIV_HDR_SIZE;
+ if ( cx != NULL ) {
+ const GLenum pname = (GLenum )bswap_ENUM ( pc + 4 );
+
+ const GLuint compsize = __glGetConvolutionParameteriv_size(pname);
+ GLint answerBuffer[200];
+ GLint * params = __glXGetAnswerBuffer(cl, compsize * 4, answerBuffer, sizeof(answerBuffer), 4);
+
+ if (params == NULL) return BadAlloc;
+ __glXClearErrorOccured();
+
+ CALL_GetConvolutionParameteriv( GET_DISPATCH(), (
+ (GLenum )bswap_ENUM ( pc + 0 ),
+ pname,
+ params
+ ) );
+ (void) bswap_32_array( (uint32_t *) params, compsize );
+ __glXSendReplySwap(cl->client, params, compsize, 4, GL_FALSE, 0);
+ error = Success;
+ }
+
+ return error;
+}
+
int __glXDispSwap_GetHistogramParameterfv(__GLXclientState *cl, GLbyte *pc)
{
xGLXSingleReq * const req = (xGLXSingleReq *) pc;
@@ -3439,6 +3647,36 @@ int __glXDispSwap_GetHistogramParameterfv(__GLXclientState *cl, GLbyte *pc)
return error;
}
+int __glXDispSwap_GetHistogramParameterfvEXT(__GLXclientState *cl, GLbyte *pc)
+{
+ xGLXVendorPrivateReq * const req = (xGLXVendorPrivateReq *) pc;
+ int error;
+ __GLXcontext * const cx = __glXForceCurrent(cl, bswap_CARD32( &req->contextTag ), &error);
+
+ pc += __GLX_VENDPRIV_HDR_SIZE;
+ if ( cx != NULL ) {
+ const GLenum pname = (GLenum )bswap_ENUM ( pc + 4 );
+
+ const GLuint compsize = __glGetHistogramParameterfv_size(pname);
+ GLfloat answerBuffer[200];
+ GLfloat * params = __glXGetAnswerBuffer(cl, compsize * 4, answerBuffer, sizeof(answerBuffer), 4);
+
+ if (params == NULL) return BadAlloc;
+ __glXClearErrorOccured();
+
+ CALL_GetHistogramParameterfv( GET_DISPATCH(), (
+ (GLenum )bswap_ENUM ( pc + 0 ),
+ pname,
+ params
+ ) );
+ (void) bswap_32_array( (uint32_t *) params, compsize );
+ __glXSendReplySwap(cl->client, params, compsize, 4, GL_FALSE, 0);
+ error = Success;
+ }
+
+ return error;
+}
+
int __glXDispSwap_GetHistogramParameteriv(__GLXclientState *cl, GLbyte *pc)
{
xGLXSingleReq * const req = (xGLXSingleReq *) pc;
@@ -3469,6 +3707,36 @@ int __glXDispSwap_GetHistogramParameteriv(__GLXclientState *cl, GLbyte *pc)
return error;
}
+int __glXDispSwap_GetHistogramParameterivEXT(__GLXclientState *cl, GLbyte *pc)
+{
+ xGLXVendorPrivateReq * const req = (xGLXVendorPrivateReq *) pc;
+ int error;
+ __GLXcontext * const cx = __glXForceCurrent(cl, bswap_CARD32( &req->contextTag ), &error);
+
+ pc += __GLX_VENDPRIV_HDR_SIZE;
+ if ( cx != NULL ) {
+ const GLenum pname = (GLenum )bswap_ENUM ( pc + 4 );
+
+ const GLuint compsize = __glGetHistogramParameteriv_size(pname);
+ GLint answerBuffer[200];
+ GLint * params = __glXGetAnswerBuffer(cl, compsize * 4, answerBuffer, sizeof(answerBuffer), 4);
+
+ if (params == NULL) return BadAlloc;
+ __glXClearErrorOccured();
+
+ CALL_GetHistogramParameteriv( GET_DISPATCH(), (
+ (GLenum )bswap_ENUM ( pc + 0 ),
+ pname,
+ params
+ ) );
+ (void) bswap_32_array( (uint32_t *) params, compsize );
+ __glXSendReplySwap(cl->client, params, compsize, 4, GL_FALSE, 0);
+ error = Success;
+ }
+
+ return error;
+}
+
int __glXDispSwap_GetMinmaxParameterfv(__GLXclientState *cl, GLbyte *pc)
{
xGLXSingleReq * const req = (xGLXSingleReq *) pc;
@@ -3499,6 +3767,36 @@ int __glXDispSwap_GetMinmaxParameterfv(__GLXclientState *cl, GLbyte *pc)
return error;
}
+int __glXDispSwap_GetMinmaxParameterfvEXT(__GLXclientState *cl, GLbyte *pc)
+{
+ xGLXVendorPrivateReq * const req = (xGLXVendorPrivateReq *) pc;
+ int error;
+ __GLXcontext * const cx = __glXForceCurrent(cl, bswap_CARD32( &req->contextTag ), &error);
+
+ pc += __GLX_VENDPRIV_HDR_SIZE;
+ if ( cx != NULL ) {
+ const GLenum pname = (GLenum )bswap_ENUM ( pc + 4 );
+
+ const GLuint compsize = __glGetMinmaxParameterfv_size(pname);
+ GLfloat answerBuffer[200];
+ GLfloat * params = __glXGetAnswerBuffer(cl, compsize * 4, answerBuffer, sizeof(answerBuffer), 4);
+
+ if (params == NULL) return BadAlloc;
+ __glXClearErrorOccured();
+
+ CALL_GetMinmaxParameterfv( GET_DISPATCH(), (
+ (GLenum )bswap_ENUM ( pc + 0 ),
+ pname,
+ params
+ ) );
+ (void) bswap_32_array( (uint32_t *) params, compsize );
+ __glXSendReplySwap(cl->client, params, compsize, 4, GL_FALSE, 0);
+ error = Success;
+ }
+
+ return error;
+}
+
int __glXDispSwap_GetMinmaxParameteriv(__GLXclientState *cl, GLbyte *pc)
{
xGLXSingleReq * const req = (xGLXSingleReq *) pc;
@@ -3529,6 +3827,36 @@ int __glXDispSwap_GetMinmaxParameteriv(__GLXclientState *cl, GLbyte *pc)
return error;
}
+int __glXDispSwap_GetMinmaxParameterivEXT(__GLXclientState *cl, GLbyte *pc)
+{
+ xGLXVendorPrivateReq * const req = (xGLXVendorPrivateReq *) pc;
+ int error;
+ __GLXcontext * const cx = __glXForceCurrent(cl, bswap_CARD32( &req->contextTag ), &error);
+
+ pc += __GLX_VENDPRIV_HDR_SIZE;
+ if ( cx != NULL ) {
+ const GLenum pname = (GLenum )bswap_ENUM ( pc + 4 );
+
+ const GLuint compsize = __glGetMinmaxParameteriv_size(pname);
+ GLint answerBuffer[200];
+ GLint * params = __glXGetAnswerBuffer(cl, compsize * 4, answerBuffer, sizeof(answerBuffer), 4);
+
+ if (params == NULL) return BadAlloc;
+ __glXClearErrorOccured();
+
+ CALL_GetMinmaxParameteriv( GET_DISPATCH(), (
+ (GLenum )bswap_ENUM ( pc + 0 ),
+ pname,
+ params
+ ) );
+ (void) bswap_32_array( (uint32_t *) params, compsize );
+ __glXSendReplySwap(cl->client, params, compsize, 4, GL_FALSE, 0);
+ error = Success;
+ }
+
+ return error;
+}
+
void __glXDispSwap_Histogram(GLbyte * pc)
{
CALL_Histogram( GET_DISPATCH(), (
@@ -3807,17 +4135,106 @@ void __glXDispSwap_SampleCoverageARB(GLbyte * pc)
) );
}
-void __glXDispSwap_DrawBuffersARB(GLbyte * pc)
+void __glXDispSwap_CompressedTexImage1DARB(GLbyte * pc)
{
- const GLsizei n = (GLsizei )bswap_CARD32 ( pc + 0 );
+ const GLsizei imageSize = (GLsizei )bswap_CARD32 ( pc + 20 );
- CALL_DrawBuffersARB( GET_DISPATCH(), (
- n,
- (const GLenum *)bswap_32_array( (uint32_t *) (pc + 4), 0 )
+ CALL_CompressedTexImage1DARB( GET_DISPATCH(), (
+ (GLenum )bswap_ENUM ( pc + 0 ),
+ (GLint )bswap_CARD32 ( pc + 4 ),
+ (GLenum )bswap_ENUM ( pc + 8 ),
+ (GLsizei )bswap_CARD32 ( pc + 12 ),
+ (GLint )bswap_CARD32 ( pc + 16 ),
+ imageSize,
+ (const GLvoid *)(pc + 24)
) );
}
-int __glXDispSwap_AreTexturesResidentEXT(__GLXclientState *cl, GLbyte *pc)
+void __glXDispSwap_CompressedTexImage2DARB(GLbyte * pc)
+{
+ const GLsizei imageSize = (GLsizei )bswap_CARD32 ( pc + 24 );
+
+ CALL_CompressedTexImage2DARB( GET_DISPATCH(), (
+ (GLenum )bswap_ENUM ( pc + 0 ),
+ (GLint )bswap_CARD32 ( pc + 4 ),
+ (GLenum )bswap_ENUM ( pc + 8 ),
+ (GLsizei )bswap_CARD32 ( pc + 12 ),
+ (GLsizei )bswap_CARD32 ( pc + 16 ),
+ (GLint )bswap_CARD32 ( pc + 20 ),
+ imageSize,
+ (const GLvoid *)(pc + 28)
+ ) );
+}
+
+void __glXDispSwap_CompressedTexImage3DARB(GLbyte * pc)
+{
+ const GLsizei imageSize = (GLsizei )bswap_CARD32 ( pc + 28 );
+
+ CALL_CompressedTexImage3DARB( GET_DISPATCH(), (
+ (GLenum )bswap_ENUM ( pc + 0 ),
+ (GLint )bswap_CARD32 ( pc + 4 ),
+ (GLenum )bswap_ENUM ( pc + 8 ),
+ (GLsizei )bswap_CARD32 ( pc + 12 ),
+ (GLsizei )bswap_CARD32 ( pc + 16 ),
+ (GLsizei )bswap_CARD32 ( pc + 20 ),
+ (GLint )bswap_CARD32 ( pc + 24 ),
+ imageSize,
+ (const GLvoid *)(pc + 32)
+ ) );
+}
+
+void __glXDispSwap_CompressedTexSubImage1DARB(GLbyte * pc)
+{
+ const GLsizei imageSize = (GLsizei )bswap_CARD32 ( pc + 20 );
+
+ CALL_CompressedTexSubImage1DARB( GET_DISPATCH(), (
+ (GLenum )bswap_ENUM ( pc + 0 ),
+ (GLint )bswap_CARD32 ( pc + 4 ),
+ (GLint )bswap_CARD32 ( pc + 8 ),
+ (GLsizei )bswap_CARD32 ( pc + 12 ),
+ (GLenum )bswap_ENUM ( pc + 16 ),
+ imageSize,
+ (const GLvoid *)(pc + 24)
+ ) );
+}
+
+void __glXDispSwap_CompressedTexSubImage2DARB(GLbyte * pc)
+{
+ const GLsizei imageSize = (GLsizei )bswap_CARD32 ( pc + 28 );
+
+ CALL_CompressedTexSubImage2DARB( GET_DISPATCH(), (
+ (GLenum )bswap_ENUM ( pc + 0 ),
+ (GLint )bswap_CARD32 ( pc + 4 ),
+ (GLint )bswap_CARD32 ( pc + 8 ),
+ (GLint )bswap_CARD32 ( pc + 12 ),
+ (GLsizei )bswap_CARD32 ( pc + 16 ),
+ (GLsizei )bswap_CARD32 ( pc + 20 ),
+ (GLenum )bswap_ENUM ( pc + 24 ),
+ imageSize,
+ (const GLvoid *)(pc + 32)
+ ) );
+}
+
+void __glXDispSwap_CompressedTexSubImage3DARB(GLbyte * pc)
+{
+ const GLsizei imageSize = (GLsizei )bswap_CARD32 ( pc + 36 );
+
+ CALL_CompressedTexSubImage3DARB( GET_DISPATCH(), (
+ (GLenum )bswap_ENUM ( pc + 0 ),
+ (GLint )bswap_CARD32 ( pc + 4 ),
+ (GLint )bswap_CARD32 ( pc + 8 ),
+ (GLint )bswap_CARD32 ( pc + 12 ),
+ (GLint )bswap_CARD32 ( pc + 16 ),
+ (GLsizei )bswap_CARD32 ( pc + 20 ),
+ (GLsizei )bswap_CARD32 ( pc + 24 ),
+ (GLsizei )bswap_CARD32 ( pc + 28 ),
+ (GLenum )bswap_ENUM ( pc + 32 ),
+ imageSize,
+ (const GLvoid *)(pc + 40)
+ ) );
+}
+
+int __glXDispSwap_GetProgramEnvParameterdvARB(__GLXclientState *cl, GLbyte *pc)
{
xGLXVendorPrivateReq * const req = (xGLXVendorPrivateReq *) pc;
int error;
@@ -3825,24 +4242,43 @@ int __glXDispSwap_AreTexturesResidentEXT(__GLXclientState *cl, GLbyte *pc)
pc += __GLX_VENDPRIV_HDR_SIZE;
if ( cx != NULL ) {
- const GLsizei n = (GLsizei )bswap_CARD32 ( pc + 0 );
+ GLdouble params[4];
+ CALL_GetProgramEnvParameterdvARB( GET_DISPATCH(), (
+ (GLenum )bswap_ENUM ( pc + 0 ),
+ (GLuint )bswap_CARD32 ( pc + 4 ),
+ params
+ ) );
+ (void) bswap_64_array( (uint64_t *) params, 4 );
+ __glXSendReplySwap(cl->client, params, 4, 8, GL_FALSE, 0);
+ error = Success;
+ }
- GLboolean retval;
- GLboolean answerBuffer[200];
- GLboolean * residences = __glXGetAnswerBuffer(cl, n, answerBuffer, sizeof(answerBuffer), 1);
- retval = CALL_AreTexturesResidentEXT( GET_DISPATCH(), (
- n,
- (const GLuint *)bswap_32_array( (uint32_t *) (pc + 4), 0 ),
- residences
+ return error;
+}
+
+int __glXDispSwap_GetProgramEnvParameterfvARB(__GLXclientState *cl, GLbyte *pc)
+{
+ xGLXVendorPrivateReq * const req = (xGLXVendorPrivateReq *) pc;
+ int error;
+ __GLXcontext * const cx = __glXForceCurrent(cl, bswap_CARD32( &req->contextTag ), &error);
+
+ pc += __GLX_VENDPRIV_HDR_SIZE;
+ if ( cx != NULL ) {
+ GLfloat params[4];
+ CALL_GetProgramEnvParameterfvARB( GET_DISPATCH(), (
+ (GLenum )bswap_ENUM ( pc + 0 ),
+ (GLuint )bswap_CARD32 ( pc + 4 ),
+ params
) );
- __glXSendReplySwap(cl->client, residences, n, 1, GL_TRUE, retval);
+ (void) bswap_32_array( (uint32_t *) params, 4 );
+ __glXSendReplySwap(cl->client, params, 4, 4, GL_FALSE, 0);
error = Success;
}
return error;
}
-int __glXDispSwap_GenTexturesEXT(__GLXclientState *cl, GLbyte *pc)
+int __glXDispSwap_GetProgramLocalParameterdvARB(__GLXclientState *cl, GLbyte *pc)
{
xGLXVendorPrivateReq * const req = (xGLXVendorPrivateReq *) pc;
int error;
@@ -3850,23 +4286,43 @@ int __glXDispSwap_GenTexturesEXT(__GLXclientState *cl, GLbyte *pc)
pc += __GLX_VENDPRIV_HDR_SIZE;
if ( cx != NULL ) {
- const GLsizei n = (GLsizei )bswap_CARD32 ( pc + 0 );
+ GLdouble params[4];
+ CALL_GetProgramLocalParameterdvARB( GET_DISPATCH(), (
+ (GLenum )bswap_ENUM ( pc + 0 ),
+ (GLuint )bswap_CARD32 ( pc + 4 ),
+ params
+ ) );
+ (void) bswap_64_array( (uint64_t *) params, 4 );
+ __glXSendReplySwap(cl->client, params, 4, 8, GL_FALSE, 0);
+ error = Success;
+ }
- GLuint answerBuffer[200];
- GLuint * textures = __glXGetAnswerBuffer(cl, n * 4, answerBuffer, sizeof(answerBuffer), 4);
- CALL_GenTexturesEXT( GET_DISPATCH(), (
- n,
- textures
+ return error;
+}
+
+int __glXDispSwap_GetProgramLocalParameterfvARB(__GLXclientState *cl, GLbyte *pc)
+{
+ xGLXVendorPrivateReq * const req = (xGLXVendorPrivateReq *) pc;
+ int error;
+ __GLXcontext * const cx = __glXForceCurrent(cl, bswap_CARD32( &req->contextTag ), &error);
+
+ pc += __GLX_VENDPRIV_HDR_SIZE;
+ if ( cx != NULL ) {
+ GLfloat params[4];
+ CALL_GetProgramLocalParameterfvARB( GET_DISPATCH(), (
+ (GLenum )bswap_ENUM ( pc + 0 ),
+ (GLuint )bswap_CARD32 ( pc + 4 ),
+ params
) );
- (void) bswap_32_array( (uint32_t *) textures, n );
- __glXSendReplySwap(cl->client, textures, n, 4, GL_TRUE, 0);
+ (void) bswap_32_array( (uint32_t *) params, 4 );
+ __glXSendReplySwap(cl->client, params, 4, 4, GL_FALSE, 0);
error = Success;
}
return error;
}
-int __glXDispSwap_IsTextureEXT(__GLXclientState *cl, GLbyte *pc)
+int __glXDispSwap_GetProgramivARB(__GLXclientState *cl, GLbyte *pc)
{
xGLXVendorPrivateReq * const req = (xGLXVendorPrivateReq *) pc;
int error;
@@ -3874,187 +4330,603 @@ int __glXDispSwap_IsTextureEXT(__GLXclientState *cl, GLbyte *pc)
pc += __GLX_VENDPRIV_HDR_SIZE;
if ( cx != NULL ) {
- GLboolean retval;
- retval = CALL_IsTextureEXT( GET_DISPATCH(), (
- (GLuint )bswap_CARD32 ( pc + 0 )
+ const GLenum pname = (GLenum )bswap_ENUM ( pc + 4 );
+
+ const GLuint compsize = __glGetProgramivARB_size(pname);
+ GLint answerBuffer[200];
+ GLint * params = __glXGetAnswerBuffer(cl, compsize * 4, answerBuffer, sizeof(answerBuffer), 4);
+
+ if (params == NULL) return BadAlloc;
+ __glXClearErrorOccured();
+
+ CALL_GetProgramivARB( GET_DISPATCH(), (
+ (GLenum )bswap_ENUM ( pc + 0 ),
+ pname,
+ params
) );
- __glXSendReplySwap(cl->client, dummy_answer, 0, 0, GL_FALSE, retval);
+ (void) bswap_32_array( (uint32_t *) params, compsize );
+ __glXSendReplySwap(cl->client, params, compsize, 4, GL_FALSE, 0);
error = Success;
}
return error;
}
-void __glXDispSwap_SampleMaskSGIS(GLbyte * pc)
+int __glXDispSwap_GetVertexAttribdvARB(__GLXclientState *cl, GLbyte *pc)
{
- CALL_SampleMaskSGIS( GET_DISPATCH(), (
- (GLclampf)bswap_FLOAT32( pc + 0 ),
- *(GLboolean *)(pc + 4)
- ) );
+ xGLXVendorPrivateReq * const req = (xGLXVendorPrivateReq *) pc;
+ int error;
+ __GLXcontext * const cx = __glXForceCurrent(cl, bswap_CARD32( &req->contextTag ), &error);
+
+ pc += __GLX_VENDPRIV_HDR_SIZE;
+ if ( cx != NULL ) {
+ const GLenum pname = (GLenum )bswap_ENUM ( pc + 4 );
+
+ const GLuint compsize = __glGetVertexAttribdvARB_size(pname);
+ GLdouble answerBuffer[200];
+ GLdouble * params = __glXGetAnswerBuffer(cl, compsize * 8, answerBuffer, sizeof(answerBuffer), 8);
+
+ if (params == NULL) return BadAlloc;
+ __glXClearErrorOccured();
+
+ CALL_GetVertexAttribdvARB( GET_DISPATCH(), (
+ (GLuint )bswap_CARD32 ( pc + 0 ),
+ pname,
+ params
+ ) );
+ (void) bswap_64_array( (uint64_t *) params, compsize );
+ __glXSendReplySwap(cl->client, params, compsize, 8, GL_FALSE, 0);
+ error = Success;
+ }
+
+ return error;
}
-void __glXDispSwap_SamplePatternSGIS(GLbyte * pc)
+int __glXDispSwap_GetVertexAttribfvARB(__GLXclientState *cl, GLbyte *pc)
{
- CALL_SamplePatternSGIS( GET_DISPATCH(), (
- (GLenum )bswap_ENUM ( pc + 0 )
- ) );
+ xGLXVendorPrivateReq * const req = (xGLXVendorPrivateReq *) pc;
+ int error;
+ __GLXcontext * const cx = __glXForceCurrent(cl, bswap_CARD32( &req->contextTag ), &error);
+
+ pc += __GLX_VENDPRIV_HDR_SIZE;
+ if ( cx != NULL ) {
+ const GLenum pname = (GLenum )bswap_ENUM ( pc + 4 );
+
+ const GLuint compsize = __glGetVertexAttribfvARB_size(pname);
+ GLfloat answerBuffer[200];
+ GLfloat * params = __glXGetAnswerBuffer(cl, compsize * 4, answerBuffer, sizeof(answerBuffer), 4);
+
+ if (params == NULL) return BadAlloc;
+ __glXClearErrorOccured();
+
+ CALL_GetVertexAttribfvARB( GET_DISPATCH(), (
+ (GLuint )bswap_CARD32 ( pc + 0 ),
+ pname,
+ params
+ ) );
+ (void) bswap_32_array( (uint32_t *) params, compsize );
+ __glXSendReplySwap(cl->client, params, compsize, 4, GL_FALSE, 0);
+ error = Success;
+ }
+
+ return error;
}
-void __glXDispSwap_PointParameterfEXT(GLbyte * pc)
+int __glXDispSwap_GetVertexAttribivARB(__GLXclientState *cl, GLbyte *pc)
{
- CALL_PointParameterfEXT( GET_DISPATCH(), (
+ xGLXVendorPrivateReq * const req = (xGLXVendorPrivateReq *) pc;
+ int error;
+ __GLXcontext * const cx = __glXForceCurrent(cl, bswap_CARD32( &req->contextTag ), &error);
+
+ pc += __GLX_VENDPRIV_HDR_SIZE;
+ if ( cx != NULL ) {
+ const GLenum pname = (GLenum )bswap_ENUM ( pc + 4 );
+
+ const GLuint compsize = __glGetVertexAttribivARB_size(pname);
+ GLint answerBuffer[200];
+ GLint * params = __glXGetAnswerBuffer(cl, compsize * 4, answerBuffer, sizeof(answerBuffer), 4);
+
+ if (params == NULL) return BadAlloc;
+ __glXClearErrorOccured();
+
+ CALL_GetVertexAttribivARB( GET_DISPATCH(), (
+ (GLuint )bswap_CARD32 ( pc + 0 ),
+ pname,
+ params
+ ) );
+ (void) bswap_32_array( (uint32_t *) params, compsize );
+ __glXSendReplySwap(cl->client, params, compsize, 4, GL_FALSE, 0);
+ error = Success;
+ }
+
+ return error;
+}
+
+void __glXDispSwap_ProgramEnvParameter4dvARB(GLbyte * pc)
+{
+#ifdef __GLX_ALIGN64
+ if ((unsigned long)(pc) & 7) {
+ (void) memmove(pc-4, pc, 40);
+ pc -= 4;
+ }
+#endif
+
+ CALL_ProgramEnvParameter4dvARB( GET_DISPATCH(), (
(GLenum )bswap_ENUM ( pc + 0 ),
- (GLfloat )bswap_FLOAT32( pc + 4 )
+ (GLuint )bswap_CARD32 ( pc + 4 ),
+ (const GLdouble *)bswap_64_array( (uint64_t *) (pc + 8), 4 )
) );
}
-void __glXDispSwap_PointParameterfvEXT(GLbyte * pc)
+void __glXDispSwap_ProgramEnvParameter4fvARB(GLbyte * pc)
{
- const GLenum pname = (GLenum )bswap_ENUM ( pc + 0 );
- const GLfloat * params;
+ CALL_ProgramEnvParameter4fvARB( GET_DISPATCH(), (
+ (GLenum )bswap_ENUM ( pc + 0 ),
+ (GLuint )bswap_CARD32 ( pc + 4 ),
+ (const GLfloat *)bswap_32_array( (uint32_t *) (pc + 8), 4 )
+ ) );
+}
- params = (const GLfloat *) bswap_32_array( (uint32_t *) (pc + 4), __glPointParameterfvEXT_size(pname) );
+void __glXDispSwap_ProgramLocalParameter4dvARB(GLbyte * pc)
+{
+#ifdef __GLX_ALIGN64
+ if ((unsigned long)(pc) & 7) {
+ (void) memmove(pc-4, pc, 40);
+ pc -= 4;
+ }
+#endif
- CALL_PointParameterfvEXT( GET_DISPATCH(), (
- pname,
- params
+ CALL_ProgramLocalParameter4dvARB( GET_DISPATCH(), (
+ (GLenum )bswap_ENUM ( pc + 0 ),
+ (GLuint )bswap_CARD32 ( pc + 4 ),
+ (const GLdouble *)bswap_64_array( (uint64_t *) (pc + 8), 4 )
) );
}
-void __glXDispSwap_WindowPos3fvMESA(GLbyte * pc)
+void __glXDispSwap_ProgramLocalParameter4fvARB(GLbyte * pc)
{
- CALL_WindowPos3fvMESA( GET_DISPATCH(), (
- (const GLfloat *)bswap_32_array( (uint32_t *) (pc + 0), 3 )
+ CALL_ProgramLocalParameter4fvARB( GET_DISPATCH(), (
+ (GLenum )bswap_ENUM ( pc + 0 ),
+ (GLuint )bswap_CARD32 ( pc + 4 ),
+ (const GLfloat *)bswap_32_array( (uint32_t *) (pc + 8), 4 )
) );
}
-void __glXDispSwap_BlendFuncSeparateEXT(GLbyte * pc)
+void __glXDispSwap_ProgramStringARB(GLbyte * pc)
{
- CALL_BlendFuncSeparateEXT( GET_DISPATCH(), (
+ const GLsizei len = (GLsizei )bswap_CARD32 ( pc + 8 );
+
+ CALL_ProgramStringARB( GET_DISPATCH(), (
(GLenum )bswap_ENUM ( pc + 0 ),
(GLenum )bswap_ENUM ( pc + 4 ),
- (GLenum )bswap_ENUM ( pc + 8 ),
- (GLenum )bswap_ENUM ( pc + 12 )
+ len,
+ (const GLvoid *)(pc + 12)
) );
}
-void __glXDispSwap_FogCoordfvEXT(GLbyte * pc)
+void __glXDispSwap_VertexAttrib1dvARB(GLbyte * pc)
{
- CALL_FogCoordfvEXT( GET_DISPATCH(), (
- (const GLfloat *)bswap_32_array( (uint32_t *) (pc + 0), 1 )
+#ifdef __GLX_ALIGN64
+ if ((unsigned long)(pc) & 7) {
+ (void) memmove(pc-4, pc, 12);
+ pc -= 4;
+ }
+#endif
+
+ CALL_VertexAttrib1dvARB( GET_DISPATCH(), (
+ (GLuint )bswap_CARD32 ( pc + 0 ),
+ (const GLdouble *)bswap_64_array( (uint64_t *) (pc + 4), 1 )
) );
}
-void __glXDispSwap_FogCoorddvEXT(GLbyte * pc)
+void __glXDispSwap_VertexAttrib1fvARB(GLbyte * pc)
+{
+ CALL_VertexAttrib1fvARB( GET_DISPATCH(), (
+ (GLuint )bswap_CARD32 ( pc + 0 ),
+ (const GLfloat *)bswap_32_array( (uint32_t *) (pc + 4), 1 )
+ ) );
+}
+
+void __glXDispSwap_VertexAttrib1svARB(GLbyte * pc)
+{
+ CALL_VertexAttrib1svARB( GET_DISPATCH(), (
+ (GLuint )bswap_CARD32 ( pc + 0 ),
+ (const GLshort *)bswap_16_array( (uint16_t *) (pc + 4), 1 )
+ ) );
+}
+
+void __glXDispSwap_VertexAttrib2dvARB(GLbyte * pc)
{
#ifdef __GLX_ALIGN64
if ((unsigned long)(pc) & 7) {
- (void) memmove(pc-4, pc, 8);
+ (void) memmove(pc-4, pc, 20);
pc -= 4;
}
#endif
- CALL_FogCoorddvEXT( GET_DISPATCH(), (
- (const GLdouble *)bswap_64_array( (uint64_t *) (pc + 0), 1 )
+ CALL_VertexAttrib2dvARB( GET_DISPATCH(), (
+ (GLuint )bswap_CARD32 ( pc + 0 ),
+ (const GLdouble *)bswap_64_array( (uint64_t *) (pc + 4), 2 )
) );
}
-void __glXDispSwap_CompressedTexImage3DARB(GLbyte * pc)
+void __glXDispSwap_VertexAttrib2fvARB(GLbyte * pc)
{
- const GLsizei imageSize = (GLsizei )bswap_CARD32 ( pc + 28 );
+ CALL_VertexAttrib2fvARB( GET_DISPATCH(), (
+ (GLuint )bswap_CARD32 ( pc + 0 ),
+ (const GLfloat *)bswap_32_array( (uint32_t *) (pc + 4), 2 )
+ ) );
+}
- CALL_CompressedTexImage3DARB( GET_DISPATCH(), (
- (GLenum )bswap_ENUM ( pc + 0 ),
- (GLint )bswap_CARD32 ( pc + 4 ),
- (GLenum )bswap_ENUM ( pc + 8 ),
- (GLsizei )bswap_CARD32 ( pc + 12 ),
- (GLsizei )bswap_CARD32 ( pc + 16 ),
- (GLsizei )bswap_CARD32 ( pc + 20 ),
- (GLint )bswap_CARD32 ( pc + 24 ),
- imageSize,
- (const GLvoid *)(pc + 32)
+void __glXDispSwap_VertexAttrib2svARB(GLbyte * pc)
+{
+ CALL_VertexAttrib2svARB( GET_DISPATCH(), (
+ (GLuint )bswap_CARD32 ( pc + 0 ),
+ (const GLshort *)bswap_16_array( (uint16_t *) (pc + 4), 2 )
) );
}
-void __glXDispSwap_CompressedTexImage2DARB(GLbyte * pc)
+void __glXDispSwap_VertexAttrib3dvARB(GLbyte * pc)
{
- const GLsizei imageSize = (GLsizei )bswap_CARD32 ( pc + 24 );
+#ifdef __GLX_ALIGN64
+ if ((unsigned long)(pc) & 7) {
+ (void) memmove(pc-4, pc, 28);
+ pc -= 4;
+ }
+#endif
- CALL_CompressedTexImage2DARB( GET_DISPATCH(), (
- (GLenum )bswap_ENUM ( pc + 0 ),
- (GLint )bswap_CARD32 ( pc + 4 ),
- (GLenum )bswap_ENUM ( pc + 8 ),
- (GLsizei )bswap_CARD32 ( pc + 12 ),
- (GLsizei )bswap_CARD32 ( pc + 16 ),
- (GLint )bswap_CARD32 ( pc + 20 ),
- imageSize,
- (const GLvoid *)(pc + 28)
+ CALL_VertexAttrib3dvARB( GET_DISPATCH(), (
+ (GLuint )bswap_CARD32 ( pc + 0 ),
+ (const GLdouble *)bswap_64_array( (uint64_t *) (pc + 4), 3 )
) );
}
-void __glXDispSwap_CompressedTexImage1DARB(GLbyte * pc)
+void __glXDispSwap_VertexAttrib3fvARB(GLbyte * pc)
{
- const GLsizei imageSize = (GLsizei )bswap_CARD32 ( pc + 20 );
+ CALL_VertexAttrib3fvARB( GET_DISPATCH(), (
+ (GLuint )bswap_CARD32 ( pc + 0 ),
+ (const GLfloat *)bswap_32_array( (uint32_t *) (pc + 4), 3 )
+ ) );
+}
- CALL_CompressedTexImage1DARB( GET_DISPATCH(), (
- (GLenum )bswap_ENUM ( pc + 0 ),
- (GLint )bswap_CARD32 ( pc + 4 ),
- (GLenum )bswap_ENUM ( pc + 8 ),
- (GLsizei )bswap_CARD32 ( pc + 12 ),
- (GLint )bswap_CARD32 ( pc + 16 ),
- imageSize,
- (const GLvoid *)(pc + 24)
+void __glXDispSwap_VertexAttrib3svARB(GLbyte * pc)
+{
+ CALL_VertexAttrib3svARB( GET_DISPATCH(), (
+ (GLuint )bswap_CARD32 ( pc + 0 ),
+ (const GLshort *)bswap_16_array( (uint16_t *) (pc + 4), 3 )
) );
}
-void __glXDispSwap_CompressedTexSubImage3DARB(GLbyte * pc)
+void __glXDispSwap_VertexAttrib4NbvARB(GLbyte * pc)
{
- const GLsizei imageSize = (GLsizei )bswap_CARD32 ( pc + 36 );
+ CALL_VertexAttrib4NbvARB( GET_DISPATCH(), (
+ (GLuint )bswap_CARD32 ( pc + 0 ),
+ (const GLbyte *)(pc + 4)
+ ) );
+}
- CALL_CompressedTexSubImage3DARB( GET_DISPATCH(), (
- (GLenum )bswap_ENUM ( pc + 0 ),
- (GLint )bswap_CARD32 ( pc + 4 ),
- (GLint )bswap_CARD32 ( pc + 8 ),
- (GLint )bswap_CARD32 ( pc + 12 ),
- (GLint )bswap_CARD32 ( pc + 16 ),
- (GLsizei )bswap_CARD32 ( pc + 20 ),
- (GLsizei )bswap_CARD32 ( pc + 24 ),
- (GLsizei )bswap_CARD32 ( pc + 28 ),
- (GLenum )bswap_ENUM ( pc + 32 ),
- imageSize,
- (const GLvoid *)(pc + 40)
+void __glXDispSwap_VertexAttrib4NivARB(GLbyte * pc)
+{
+ CALL_VertexAttrib4NivARB( GET_DISPATCH(), (
+ (GLuint )bswap_CARD32 ( pc + 0 ),
+ (const GLint *)bswap_32_array( (uint32_t *) (pc + 4), 4 )
) );
}
-void __glXDispSwap_CompressedTexSubImage2DARB(GLbyte * pc)
+void __glXDispSwap_VertexAttrib4NsvARB(GLbyte * pc)
{
- const GLsizei imageSize = (GLsizei )bswap_CARD32 ( pc + 28 );
+ CALL_VertexAttrib4NsvARB( GET_DISPATCH(), (
+ (GLuint )bswap_CARD32 ( pc + 0 ),
+ (const GLshort *)bswap_16_array( (uint16_t *) (pc + 4), 4 )
+ ) );
+}
- CALL_CompressedTexSubImage2DARB( GET_DISPATCH(), (
+void __glXDispSwap_VertexAttrib4NubvARB(GLbyte * pc)
+{
+ CALL_VertexAttrib4NubvARB( GET_DISPATCH(), (
+ (GLuint )bswap_CARD32 ( pc + 0 ),
+ (const GLubyte *)(pc + 4)
+ ) );
+}
+
+void __glXDispSwap_VertexAttrib4NuivARB(GLbyte * pc)
+{
+ CALL_VertexAttrib4NuivARB( GET_DISPATCH(), (
+ (GLuint )bswap_CARD32 ( pc + 0 ),
+ (const GLuint *)bswap_32_array( (uint32_t *) (pc + 4), 4 )
+ ) );
+}
+
+void __glXDispSwap_VertexAttrib4NusvARB(GLbyte * pc)
+{
+ CALL_VertexAttrib4NusvARB( GET_DISPATCH(), (
+ (GLuint )bswap_CARD32 ( pc + 0 ),
+ (const GLushort *)bswap_16_array( (uint16_t *) (pc + 4), 4 )
+ ) );
+}
+
+void __glXDispSwap_VertexAttrib4bvARB(GLbyte * pc)
+{
+ CALL_VertexAttrib4bvARB( GET_DISPATCH(), (
+ (GLuint )bswap_CARD32 ( pc + 0 ),
+ (const GLbyte *)(pc + 4)
+ ) );
+}
+
+void __glXDispSwap_VertexAttrib4dvARB(GLbyte * pc)
+{
+#ifdef __GLX_ALIGN64
+ if ((unsigned long)(pc) & 7) {
+ (void) memmove(pc-4, pc, 36);
+ pc -= 4;
+ }
+#endif
+
+ CALL_VertexAttrib4dvARB( GET_DISPATCH(), (
+ (GLuint )bswap_CARD32 ( pc + 0 ),
+ (const GLdouble *)bswap_64_array( (uint64_t *) (pc + 4), 4 )
+ ) );
+}
+
+void __glXDispSwap_VertexAttrib4fvARB(GLbyte * pc)
+{
+ CALL_VertexAttrib4fvARB( GET_DISPATCH(), (
+ (GLuint )bswap_CARD32 ( pc + 0 ),
+ (const GLfloat *)bswap_32_array( (uint32_t *) (pc + 4), 4 )
+ ) );
+}
+
+void __glXDispSwap_VertexAttrib4ivARB(GLbyte * pc)
+{
+ CALL_VertexAttrib4ivARB( GET_DISPATCH(), (
+ (GLuint )bswap_CARD32 ( pc + 0 ),
+ (const GLint *)bswap_32_array( (uint32_t *) (pc + 4), 4 )
+ ) );
+}
+
+void __glXDispSwap_VertexAttrib4svARB(GLbyte * pc)
+{
+ CALL_VertexAttrib4svARB( GET_DISPATCH(), (
+ (GLuint )bswap_CARD32 ( pc + 0 ),
+ (const GLshort *)bswap_16_array( (uint16_t *) (pc + 4), 4 )
+ ) );
+}
+
+void __glXDispSwap_VertexAttrib4ubvARB(GLbyte * pc)
+{
+ CALL_VertexAttrib4ubvARB( GET_DISPATCH(), (
+ (GLuint )bswap_CARD32 ( pc + 0 ),
+ (const GLubyte *)(pc + 4)
+ ) );
+}
+
+void __glXDispSwap_VertexAttrib4uivARB(GLbyte * pc)
+{
+ CALL_VertexAttrib4uivARB( GET_DISPATCH(), (
+ (GLuint )bswap_CARD32 ( pc + 0 ),
+ (const GLuint *)bswap_32_array( (uint32_t *) (pc + 4), 4 )
+ ) );
+}
+
+void __glXDispSwap_VertexAttrib4usvARB(GLbyte * pc)
+{
+ CALL_VertexAttrib4usvARB( GET_DISPATCH(), (
+ (GLuint )bswap_CARD32 ( pc + 0 ),
+ (const GLushort *)bswap_16_array( (uint16_t *) (pc + 4), 4 )
+ ) );
+}
+
+void __glXDispSwap_BeginQueryARB(GLbyte * pc)
+{
+ CALL_BeginQueryARB( GET_DISPATCH(), (
(GLenum )bswap_ENUM ( pc + 0 ),
- (GLint )bswap_CARD32 ( pc + 4 ),
- (GLint )bswap_CARD32 ( pc + 8 ),
- (GLint )bswap_CARD32 ( pc + 12 ),
- (GLsizei )bswap_CARD32 ( pc + 16 ),
- (GLsizei )bswap_CARD32 ( pc + 20 ),
- (GLenum )bswap_ENUM ( pc + 24 ),
- imageSize,
- (const GLvoid *)(pc + 32)
+ (GLuint )bswap_CARD32 ( pc + 4 )
) );
}
-void __glXDispSwap_CompressedTexSubImage1DARB(GLbyte * pc)
+int __glXDispSwap_DeleteQueriesARB(__GLXclientState *cl, GLbyte *pc)
{
- const GLsizei imageSize = (GLsizei )bswap_CARD32 ( pc + 20 );
+ xGLXSingleReq * const req = (xGLXSingleReq *) pc;
+ int error;
+ __GLXcontext * const cx = __glXForceCurrent(cl, bswap_CARD32( &req->contextTag ), &error);
- CALL_CompressedTexSubImage1DARB( GET_DISPATCH(), (
+ pc += __GLX_SINGLE_HDR_SIZE;
+ if ( cx != NULL ) {
+ const GLsizei n = (GLsizei )bswap_CARD32 ( pc + 0 );
+
+ CALL_DeleteQueriesARB( GET_DISPATCH(), (
+ n,
+ (const GLuint *)bswap_32_array( (uint32_t *) (pc + 4), 0 )
+ ) );
+ error = Success;
+ }
+
+ return error;
+}
+
+void __glXDispSwap_EndQueryARB(GLbyte * pc)
+{
+ CALL_EndQueryARB( GET_DISPATCH(), (
+ (GLenum )bswap_ENUM ( pc + 0 )
+ ) );
+}
+
+int __glXDispSwap_GenQueriesARB(__GLXclientState *cl, GLbyte *pc)
+{
+ xGLXSingleReq * const req = (xGLXSingleReq *) pc;
+ int error;
+ __GLXcontext * const cx = __glXForceCurrent(cl, bswap_CARD32( &req->contextTag ), &error);
+
+ pc += __GLX_SINGLE_HDR_SIZE;
+ if ( cx != NULL ) {
+ const GLsizei n = (GLsizei )bswap_CARD32 ( pc + 0 );
+
+ GLuint answerBuffer[200];
+ GLuint * ids = __glXGetAnswerBuffer(cl, n * 4, answerBuffer, sizeof(answerBuffer), 4);
+ CALL_GenQueriesARB( GET_DISPATCH(), (
+ n,
+ ids
+ ) );
+ (void) bswap_32_array( (uint32_t *) ids, n );
+ __glXSendReplySwap(cl->client, ids, n, 4, GL_TRUE, 0);
+ error = Success;
+ }
+
+ return error;
+}
+
+int __glXDispSwap_GetQueryObjectivARB(__GLXclientState *cl, GLbyte *pc)
+{
+ xGLXSingleReq * const req = (xGLXSingleReq *) pc;
+ int error;
+ __GLXcontext * const cx = __glXForceCurrent(cl, bswap_CARD32( &req->contextTag ), &error);
+
+ pc += __GLX_SINGLE_HDR_SIZE;
+ if ( cx != NULL ) {
+ const GLenum pname = (GLenum )bswap_ENUM ( pc + 4 );
+
+ const GLuint compsize = __glGetQueryObjectivARB_size(pname);
+ GLint answerBuffer[200];
+ GLint * params = __glXGetAnswerBuffer(cl, compsize * 4, answerBuffer, sizeof(answerBuffer), 4);
+
+ if (params == NULL) return BadAlloc;
+ __glXClearErrorOccured();
+
+ CALL_GetQueryObjectivARB( GET_DISPATCH(), (
+ (GLuint )bswap_CARD32 ( pc + 0 ),
+ pname,
+ params
+ ) );
+ (void) bswap_32_array( (uint32_t *) params, compsize );
+ __glXSendReplySwap(cl->client, params, compsize, 4, GL_FALSE, 0);
+ error = Success;
+ }
+
+ return error;
+}
+
+int __glXDispSwap_GetQueryObjectuivARB(__GLXclientState *cl, GLbyte *pc)
+{
+ xGLXSingleReq * const req = (xGLXSingleReq *) pc;
+ int error;
+ __GLXcontext * const cx = __glXForceCurrent(cl, bswap_CARD32( &req->contextTag ), &error);
+
+ pc += __GLX_SINGLE_HDR_SIZE;
+ if ( cx != NULL ) {
+ const GLenum pname = (GLenum )bswap_ENUM ( pc + 4 );
+
+ const GLuint compsize = __glGetQueryObjectuivARB_size(pname);
+ GLuint answerBuffer[200];
+ GLuint * params = __glXGetAnswerBuffer(cl, compsize * 4, answerBuffer, sizeof(answerBuffer), 4);
+
+ if (params == NULL) return BadAlloc;
+ __glXClearErrorOccured();
+
+ CALL_GetQueryObjectuivARB( GET_DISPATCH(), (
+ (GLuint )bswap_CARD32 ( pc + 0 ),
+ pname,
+ params
+ ) );
+ (void) bswap_32_array( (uint32_t *) params, compsize );
+ __glXSendReplySwap(cl->client, params, compsize, 4, GL_FALSE, 0);
+ error = Success;
+ }
+
+ return error;
+}
+
+int __glXDispSwap_GetQueryivARB(__GLXclientState *cl, GLbyte *pc)
+{
+ xGLXSingleReq * const req = (xGLXSingleReq *) pc;
+ int error;
+ __GLXcontext * const cx = __glXForceCurrent(cl, bswap_CARD32( &req->contextTag ), &error);
+
+ pc += __GLX_SINGLE_HDR_SIZE;
+ if ( cx != NULL ) {
+ const GLenum pname = (GLenum )bswap_ENUM ( pc + 4 );
+
+ const GLuint compsize = __glGetQueryivARB_size(pname);
+ GLint answerBuffer[200];
+ GLint * params = __glXGetAnswerBuffer(cl, compsize * 4, answerBuffer, sizeof(answerBuffer), 4);
+
+ if (params == NULL) return BadAlloc;
+ __glXClearErrorOccured();
+
+ CALL_GetQueryivARB( GET_DISPATCH(), (
+ (GLenum )bswap_ENUM ( pc + 0 ),
+ pname,
+ params
+ ) );
+ (void) bswap_32_array( (uint32_t *) params, compsize );
+ __glXSendReplySwap(cl->client, params, compsize, 4, GL_FALSE, 0);
+ error = Success;
+ }
+
+ return error;
+}
+
+int __glXDispSwap_IsQueryARB(__GLXclientState *cl, GLbyte *pc)
+{
+ xGLXSingleReq * const req = (xGLXSingleReq *) pc;
+ int error;
+ __GLXcontext * const cx = __glXForceCurrent(cl, bswap_CARD32( &req->contextTag ), &error);
+
+ pc += __GLX_SINGLE_HDR_SIZE;
+ if ( cx != NULL ) {
+ GLboolean retval;
+ retval = CALL_IsQueryARB( GET_DISPATCH(), (
+ (GLuint )bswap_CARD32 ( pc + 0 )
+ ) );
+ __glXSendReplySwap(cl->client, dummy_answer, 0, 0, GL_FALSE, retval);
+ error = Success;
+ }
+
+ return error;
+}
+
+void __glXDispSwap_DrawBuffersARB(GLbyte * pc)
+{
+ const GLsizei n = (GLsizei )bswap_CARD32 ( pc + 0 );
+
+ CALL_DrawBuffersARB( GET_DISPATCH(), (
+ n,
+ (const GLenum *)bswap_32_array( (uint32_t *) (pc + 4), 0 )
+ ) );
+}
+
+void __glXDispSwap_SampleMaskSGIS(GLbyte * pc)
+{
+ CALL_SampleMaskSGIS( GET_DISPATCH(), (
+ (GLclampf)bswap_FLOAT32( pc + 0 ),
+ *(GLboolean *)(pc + 4)
+ ) );
+}
+
+void __glXDispSwap_SamplePatternSGIS(GLbyte * pc)
+{
+ CALL_SamplePatternSGIS( GET_DISPATCH(), (
+ (GLenum )bswap_ENUM ( pc + 0 )
+ ) );
+}
+
+void __glXDispSwap_PointParameterfEXT(GLbyte * pc)
+{
+ CALL_PointParameterfEXT( GET_DISPATCH(), (
(GLenum )bswap_ENUM ( pc + 0 ),
- (GLint )bswap_CARD32 ( pc + 4 ),
- (GLint )bswap_CARD32 ( pc + 8 ),
- (GLsizei )bswap_CARD32 ( pc + 12 ),
- (GLenum )bswap_ENUM ( pc + 16 ),
- imageSize,
- (const GLvoid *)(pc + 24)
+ (GLfloat )bswap_FLOAT32( pc + 4 )
+ ) );
+}
+
+void __glXDispSwap_PointParameterfvEXT(GLbyte * pc)
+{
+ const GLenum pname = (GLenum )bswap_ENUM ( pc + 0 );
+ const GLfloat * params;
+
+ params = (const GLfloat *) bswap_32_array( (uint32_t *) (pc + 4), __glPointParameterfvEXT_size(pname) );
+
+ CALL_PointParameterfvEXT( GET_DISPATCH(), (
+ pname,
+ params
) );
}
@@ -4121,6 +4993,44 @@ void __glXDispSwap_SecondaryColor3usvEXT(GLbyte * pc)
) );
}
+void __glXDispSwap_FogCoorddvEXT(GLbyte * pc)
+{
+#ifdef __GLX_ALIGN64
+ if ((unsigned long)(pc) & 7) {
+ (void) memmove(pc-4, pc, 8);
+ pc -= 4;
+ }
+#endif
+
+ CALL_FogCoorddvEXT( GET_DISPATCH(), (
+ (const GLdouble *)bswap_64_array( (uint64_t *) (pc + 0), 1 )
+ ) );
+}
+
+void __glXDispSwap_FogCoordfvEXT(GLbyte * pc)
+{
+ CALL_FogCoordfvEXT( GET_DISPATCH(), (
+ (const GLfloat *)bswap_32_array( (uint32_t *) (pc + 0), 1 )
+ ) );
+}
+
+void __glXDispSwap_BlendFuncSeparateEXT(GLbyte * pc)
+{
+ CALL_BlendFuncSeparateEXT( GET_DISPATCH(), (
+ (GLenum )bswap_ENUM ( pc + 0 ),
+ (GLenum )bswap_ENUM ( pc + 4 ),
+ (GLenum )bswap_ENUM ( pc + 8 ),
+ (GLenum )bswap_ENUM ( pc + 12 )
+ ) );
+}
+
+void __glXDispSwap_WindowPos3fvMESA(GLbyte * pc)
+{
+ CALL_WindowPos3fvMESA( GET_DISPATCH(), (
+ (const GLfloat *)bswap_32_array( (uint32_t *) (pc + 0), 3 )
+ ) );
+}
+
int __glXDispSwap_AreProgramsResidentNV(__GLXclientState *cl, GLbyte *pc)
{
xGLXVendorPrivateReq * const req = (xGLXVendorPrivateReq *) pc;
@@ -4306,7 +5216,7 @@ int __glXDispSwap_GetTrackMatrixivNV(__GLXclientState *cl, GLbyte *pc)
return error;
}
-int __glXDispSwap_GetVertexAttribdvARB(__GLXclientState *cl, GLbyte *pc)
+int __glXDispSwap_GetVertexAttribdvNV(__GLXclientState *cl, GLbyte *pc)
{
xGLXVendorPrivateReq * const req = (xGLXVendorPrivateReq *) pc;
int error;
@@ -4316,14 +5226,14 @@ int __glXDispSwap_GetVertexAttribdvARB(__GLXclientState *cl, GLbyte *pc)
if ( cx != NULL ) {
const GLenum pname = (GLenum )bswap_ENUM ( pc + 4 );
- const GLuint compsize = __glGetVertexAttribdvARB_size(pname);
+ const GLuint compsize = __glGetVertexAttribdvNV_size(pname);
GLdouble answerBuffer[200];
GLdouble * params = __glXGetAnswerBuffer(cl, compsize * 8, answerBuffer, sizeof(answerBuffer), 8);
if (params == NULL) return BadAlloc;
__glXClearErrorOccured();
- CALL_GetVertexAttribdvARB( GET_DISPATCH(), (
+ CALL_GetVertexAttribdvNV( GET_DISPATCH(), (
(GLuint )bswap_CARD32 ( pc + 0 ),
pname,
params
@@ -4336,7 +5246,7 @@ int __glXDispSwap_GetVertexAttribdvARB(__GLXclientState *cl, GLbyte *pc)
return error;
}
-int __glXDispSwap_GetVertexAttribfvARB(__GLXclientState *cl, GLbyte *pc)
+int __glXDispSwap_GetVertexAttribfvNV(__GLXclientState *cl, GLbyte *pc)
{
xGLXVendorPrivateReq * const req = (xGLXVendorPrivateReq *) pc;
int error;
@@ -4346,14 +5256,14 @@ int __glXDispSwap_GetVertexAttribfvARB(__GLXclientState *cl, GLbyte *pc)
if ( cx != NULL ) {
const GLenum pname = (GLenum )bswap_ENUM ( pc + 4 );
- const GLuint compsize = __glGetVertexAttribfvARB_size(pname);
+ const GLuint compsize = __glGetVertexAttribfvNV_size(pname);
GLfloat answerBuffer[200];
GLfloat * params = __glXGetAnswerBuffer(cl, compsize * 4, answerBuffer, sizeof(answerBuffer), 4);
if (params == NULL) return BadAlloc;
__glXClearErrorOccured();
- CALL_GetVertexAttribfvARB( GET_DISPATCH(), (
+ CALL_GetVertexAttribfvNV( GET_DISPATCH(), (
(GLuint )bswap_CARD32 ( pc + 0 ),
pname,
params
@@ -4366,7 +5276,7 @@ int __glXDispSwap_GetVertexAttribfvARB(__GLXclientState *cl, GLbyte *pc)
return error;
}
-int __glXDispSwap_GetVertexAttribivARB(__GLXclientState *cl, GLbyte *pc)
+int __glXDispSwap_GetVertexAttribivNV(__GLXclientState *cl, GLbyte *pc)
{
xGLXVendorPrivateReq * const req = (xGLXVendorPrivateReq *) pc;
int error;
@@ -4376,14 +5286,14 @@ int __glXDispSwap_GetVertexAttribivARB(__GLXclientState *cl, GLbyte *pc)
if ( cx != NULL ) {
const GLenum pname = (GLenum )bswap_ENUM ( pc + 4 );
- const GLuint compsize = __glGetVertexAttribivARB_size(pname);
+ const GLuint compsize = __glGetVertexAttribivNV_size(pname);
GLint answerBuffer[200];
GLint * params = __glXGetAnswerBuffer(cl, compsize * 4, answerBuffer, sizeof(answerBuffer), 4);
if (params == NULL) return BadAlloc;
__glXClearErrorOccured();
- CALL_GetVertexAttribivARB( GET_DISPATCH(), (
+ CALL_GetVertexAttribivNV( GET_DISPATCH(), (
(GLuint )bswap_CARD32 ( pc + 0 ),
pname,
params
@@ -4504,7 +5414,7 @@ void __glXDispSwap_TrackMatrixNV(GLbyte * pc)
) );
}
-void __glXDispSwap_VertexAttrib1dvARB(GLbyte * pc)
+void __glXDispSwap_VertexAttrib1dvNV(GLbyte * pc)
{
#ifdef __GLX_ALIGN64
if ((unsigned long)(pc) & 7) {
@@ -4513,29 +5423,29 @@ void __glXDispSwap_VertexAttrib1dvARB(GLbyte * pc)
}
#endif
- CALL_VertexAttrib1dvARB( GET_DISPATCH(), (
- (GLuint )bswap_CARD32 ( pc + 8 ),
- (const GLdouble *)bswap_64_array( (uint64_t *) (pc + 0), 1 )
+ CALL_VertexAttrib1dvNV( GET_DISPATCH(), (
+ (GLuint )bswap_CARD32 ( pc + 0 ),
+ (const GLdouble *)bswap_64_array( (uint64_t *) (pc + 4), 1 )
) );
}
-void __glXDispSwap_VertexAttrib1fvARB(GLbyte * pc)
+void __glXDispSwap_VertexAttrib1fvNV(GLbyte * pc)
{
- CALL_VertexAttrib1fvARB( GET_DISPATCH(), (
+ CALL_VertexAttrib1fvNV( GET_DISPATCH(), (
(GLuint )bswap_CARD32 ( pc + 0 ),
(const GLfloat *)bswap_32_array( (uint32_t *) (pc + 4), 1 )
) );
}
-void __glXDispSwap_VertexAttrib1svARB(GLbyte * pc)
+void __glXDispSwap_VertexAttrib1svNV(GLbyte * pc)
{
- CALL_VertexAttrib1svARB( GET_DISPATCH(), (
+ CALL_VertexAttrib1svNV( GET_DISPATCH(), (
(GLuint )bswap_CARD32 ( pc + 0 ),
(const GLshort *)bswap_16_array( (uint16_t *) (pc + 4), 1 )
) );
}
-void __glXDispSwap_VertexAttrib2dvARB(GLbyte * pc)
+void __glXDispSwap_VertexAttrib2dvNV(GLbyte * pc)
{
#ifdef __GLX_ALIGN64
if ((unsigned long)(pc) & 7) {
@@ -4544,29 +5454,29 @@ void __glXDispSwap_VertexAttrib2dvARB(GLbyte * pc)
}
#endif
- CALL_VertexAttrib2dvARB( GET_DISPATCH(), (
- (GLuint )bswap_CARD32 ( pc + 16 ),
- (const GLdouble *)bswap_64_array( (uint64_t *) (pc + 0), 2 )
+ CALL_VertexAttrib2dvNV( GET_DISPATCH(), (
+ (GLuint )bswap_CARD32 ( pc + 0 ),
+ (const GLdouble *)bswap_64_array( (uint64_t *) (pc + 4), 2 )
) );
}
-void __glXDispSwap_VertexAttrib2fvARB(GLbyte * pc)
+void __glXDispSwap_VertexAttrib2fvNV(GLbyte * pc)
{
- CALL_VertexAttrib2fvARB( GET_DISPATCH(), (
+ CALL_VertexAttrib2fvNV( GET_DISPATCH(), (
(GLuint )bswap_CARD32 ( pc + 0 ),
(const GLfloat *)bswap_32_array( (uint32_t *) (pc + 4), 2 )
) );
}
-void __glXDispSwap_VertexAttrib2svARB(GLbyte * pc)
+void __glXDispSwap_VertexAttrib2svNV(GLbyte * pc)
{
- CALL_VertexAttrib2svARB( GET_DISPATCH(), (
+ CALL_VertexAttrib2svNV( GET_DISPATCH(), (
(GLuint )bswap_CARD32 ( pc + 0 ),
(const GLshort *)bswap_16_array( (uint16_t *) (pc + 4), 2 )
) );
}
-void __glXDispSwap_VertexAttrib3dvARB(GLbyte * pc)
+void __glXDispSwap_VertexAttrib3dvNV(GLbyte * pc)
{
#ifdef __GLX_ALIGN64
if ((unsigned long)(pc) & 7) {
@@ -4575,29 +5485,29 @@ void __glXDispSwap_VertexAttrib3dvARB(GLbyte * pc)
}
#endif
- CALL_VertexAttrib3dvARB( GET_DISPATCH(), (
- (GLuint )bswap_CARD32 ( pc + 24 ),
- (const GLdouble *)bswap_64_array( (uint64_t *) (pc + 0), 3 )
+ CALL_VertexAttrib3dvNV( GET_DISPATCH(), (
+ (GLuint )bswap_CARD32 ( pc + 0 ),
+ (const GLdouble *)bswap_64_array( (uint64_t *) (pc + 4), 3 )
) );
}
-void __glXDispSwap_VertexAttrib3fvARB(GLbyte * pc)
+void __glXDispSwap_VertexAttrib3fvNV(GLbyte * pc)
{
- CALL_VertexAttrib3fvARB( GET_DISPATCH(), (
+ CALL_VertexAttrib3fvNV( GET_DISPATCH(), (
(GLuint )bswap_CARD32 ( pc + 0 ),
(const GLfloat *)bswap_32_array( (uint32_t *) (pc + 4), 3 )
) );
}
-void __glXDispSwap_VertexAttrib3svARB(GLbyte * pc)
+void __glXDispSwap_VertexAttrib3svNV(GLbyte * pc)
{
- CALL_VertexAttrib3svARB( GET_DISPATCH(), (
+ CALL_VertexAttrib3svNV( GET_DISPATCH(), (
(GLuint )bswap_CARD32 ( pc + 0 ),
(const GLshort *)bswap_16_array( (uint16_t *) (pc + 4), 3 )
) );
}
-void __glXDispSwap_VertexAttrib4dvARB(GLbyte * pc)
+void __glXDispSwap_VertexAttrib4dvNV(GLbyte * pc)
{
#ifdef __GLX_ALIGN64
if ((unsigned long)(pc) & 7) {
@@ -4606,31 +5516,31 @@ void __glXDispSwap_VertexAttrib4dvARB(GLbyte * pc)
}
#endif
- CALL_VertexAttrib4dvARB( GET_DISPATCH(), (
- (GLuint )bswap_CARD32 ( pc + 32 ),
- (const GLdouble *)bswap_64_array( (uint64_t *) (pc + 0), 4 )
+ CALL_VertexAttrib4dvNV( GET_DISPATCH(), (
+ (GLuint )bswap_CARD32 ( pc + 0 ),
+ (const GLdouble *)bswap_64_array( (uint64_t *) (pc + 4), 4 )
) );
}
-void __glXDispSwap_VertexAttrib4fvARB(GLbyte * pc)
+void __glXDispSwap_VertexAttrib4fvNV(GLbyte * pc)
{
- CALL_VertexAttrib4fvARB( GET_DISPATCH(), (
+ CALL_VertexAttrib4fvNV( GET_DISPATCH(), (
(GLuint )bswap_CARD32 ( pc + 0 ),
(const GLfloat *)bswap_32_array( (uint32_t *) (pc + 4), 4 )
) );
}
-void __glXDispSwap_VertexAttrib4svARB(GLbyte * pc)
+void __glXDispSwap_VertexAttrib4svNV(GLbyte * pc)
{
- CALL_VertexAttrib4svARB( GET_DISPATCH(), (
+ CALL_VertexAttrib4svNV( GET_DISPATCH(), (
(GLuint )bswap_CARD32 ( pc + 0 ),
(const GLshort *)bswap_16_array( (uint16_t *) (pc + 4), 4 )
) );
}
-void __glXDispSwap_VertexAttrib4NubvARB(GLbyte * pc)
+void __glXDispSwap_VertexAttrib4ubvNV(GLbyte * pc)
{
- CALL_VertexAttrib4NubvARB( GET_DISPATCH(), (
+ CALL_VertexAttrib4ubvNV( GET_DISPATCH(), (
(GLuint )bswap_CARD32 ( pc + 0 ),
(const GLubyte *)(pc + 4)
) );
@@ -4839,171 +5749,7 @@ void __glXDispSwap_ActiveStencilFaceEXT(GLbyte * pc)
) );
}
-void __glXDispSwap_VertexAttrib4bvARB(GLbyte * pc)
-{
- CALL_VertexAttrib4bvARB( GET_DISPATCH(), (
- (GLuint )bswap_CARD32 ( pc + 0 ),
- (const GLbyte *)(pc + 4)
- ) );
-}
-
-void __glXDispSwap_VertexAttrib4ivARB(GLbyte * pc)
-{
- CALL_VertexAttrib4ivARB( GET_DISPATCH(), (
- (GLuint )bswap_CARD32 ( pc + 0 ),
- (const GLint *)bswap_32_array( (uint32_t *) (pc + 4), 4 )
- ) );
-}
-
-void __glXDispSwap_VertexAttrib4ubvARB(GLbyte * pc)
-{
- CALL_VertexAttrib4ubvARB( GET_DISPATCH(), (
- (GLuint )bswap_CARD32 ( pc + 0 ),
- (const GLubyte *)(pc + 4)
- ) );
-}
-
-void __glXDispSwap_VertexAttrib4usvARB(GLbyte * pc)
-{
- CALL_VertexAttrib4usvARB( GET_DISPATCH(), (
- (GLuint )bswap_CARD32 ( pc + 0 ),
- (const GLushort *)bswap_16_array( (uint16_t *) (pc + 4), 4 )
- ) );
-}
-
-void __glXDispSwap_VertexAttrib4uivARB(GLbyte * pc)
-{
- CALL_VertexAttrib4uivARB( GET_DISPATCH(), (
- (GLuint )bswap_CARD32 ( pc + 0 ),
- (const GLuint *)bswap_32_array( (uint32_t *) (pc + 4), 4 )
- ) );
-}
-
-void __glXDispSwap_VertexAttrib4NbvARB(GLbyte * pc)
-{
- CALL_VertexAttrib4NbvARB( GET_DISPATCH(), (
- (GLuint )bswap_CARD32 ( pc + 0 ),
- (const GLbyte *)(pc + 4)
- ) );
-}
-
-void __glXDispSwap_VertexAttrib4NsvARB(GLbyte * pc)
-{
- CALL_VertexAttrib4NsvARB( GET_DISPATCH(), (
- (GLuint )bswap_CARD32 ( pc + 0 ),
- (const GLshort *)bswap_16_array( (uint16_t *) (pc + 4), 4 )
- ) );
-}
-
-void __glXDispSwap_VertexAttrib4NivARB(GLbyte * pc)
-{
- CALL_VertexAttrib4NivARB( GET_DISPATCH(), (
- (GLuint )bswap_CARD32 ( pc + 0 ),
- (const GLint *)bswap_32_array( (uint32_t *) (pc + 4), 4 )
- ) );
-}
-
-void __glXDispSwap_VertexAttrib4NusvARB(GLbyte * pc)
-{
- CALL_VertexAttrib4NusvARB( GET_DISPATCH(), (
- (GLuint )bswap_CARD32 ( pc + 0 ),
- (const GLushort *)bswap_16_array( (uint16_t *) (pc + 4), 4 )
- ) );
-}
-
-void __glXDispSwap_VertexAttrib4NuivARB(GLbyte * pc)
-{
- CALL_VertexAttrib4NuivARB( GET_DISPATCH(), (
- (GLuint )bswap_CARD32 ( pc + 0 ),
- (const GLuint *)bswap_32_array( (uint32_t *) (pc + 4), 4 )
- ) );
-}
-
-void __glXDispSwap_ProgramStringARB(GLbyte * pc)
-{
- const GLsizei len = (GLsizei )bswap_CARD32 ( pc + 8 );
-
- CALL_ProgramStringARB( GET_DISPATCH(), (
- (GLenum )bswap_ENUM ( pc + 0 ),
- (GLenum )bswap_ENUM ( pc + 4 ),
- len,
- (const GLvoid *)(pc + 12)
- ) );
-}
-
-void __glXDispSwap_ProgramEnvParameter4dvARB(GLbyte * pc)
-{
-#ifdef __GLX_ALIGN64
- if ((unsigned long)(pc) & 7) {
- (void) memmove(pc-4, pc, 40);
- pc -= 4;
- }
-#endif
-
- CALL_ProgramEnvParameter4dvARB( GET_DISPATCH(), (
- (GLenum )bswap_ENUM ( pc + 0 ),
- (GLuint )bswap_CARD32 ( pc + 4 ),
- (const GLdouble *)bswap_64_array( (uint64_t *) (pc + 8), 4 )
- ) );
-}
-
-void __glXDispSwap_ProgramEnvParameter4fvARB(GLbyte * pc)
-{
- CALL_ProgramEnvParameter4fvARB( GET_DISPATCH(), (
- (GLenum )bswap_ENUM ( pc + 0 ),
- (GLuint )bswap_CARD32 ( pc + 4 ),
- (const GLfloat *)bswap_32_array( (uint32_t *) (pc + 8), 4 )
- ) );
-}
-
-void __glXDispSwap_ProgramLocalParameter4dvARB(GLbyte * pc)
-{
-#ifdef __GLX_ALIGN64
- if ((unsigned long)(pc) & 7) {
- (void) memmove(pc-4, pc, 40);
- pc -= 4;
- }
-#endif
-
- CALL_ProgramLocalParameter4dvARB( GET_DISPATCH(), (
- (GLenum )bswap_ENUM ( pc + 0 ),
- (GLuint )bswap_CARD32 ( pc + 4 ),
- (const GLdouble *)bswap_64_array( (uint64_t *) (pc + 8), 4 )
- ) );
-}
-
-void __glXDispSwap_ProgramLocalParameter4fvARB(GLbyte * pc)
-{
- CALL_ProgramLocalParameter4fvARB( GET_DISPATCH(), (
- (GLenum )bswap_ENUM ( pc + 0 ),
- (GLuint )bswap_CARD32 ( pc + 4 ),
- (const GLfloat *)bswap_32_array( (uint32_t *) (pc + 8), 4 )
- ) );
-}
-
-int __glXDispSwap_GetProgramEnvParameterdvARB(__GLXclientState *cl, GLbyte *pc)
-{
- xGLXVendorPrivateReq * const req = (xGLXVendorPrivateReq *) pc;
- int error;
- __GLXcontext * const cx = __glXForceCurrent(cl, bswap_CARD32( &req->contextTag ), &error);
-
- pc += __GLX_VENDPRIV_HDR_SIZE;
- if ( cx != NULL ) {
- GLdouble params[4];
- CALL_GetProgramEnvParameterdvARB( GET_DISPATCH(), (
- (GLenum )bswap_ENUM ( pc + 0 ),
- (GLuint )bswap_CARD32 ( pc + 4 ),
- params
- ) );
- (void) bswap_64_array( (uint64_t *) params, 4 );
- __glXSendReplySwap(cl->client, params, 4, 8, GL_FALSE, 0);
- error = Success;
- }
-
- return error;
-}
-
-int __glXDispSwap_GetProgramEnvParameterfvARB(__GLXclientState *cl, GLbyte *pc)
+int __glXDispSwap_GetProgramNamedParameterdvNV(__GLXclientState *cl, GLbyte *pc)
{
xGLXVendorPrivateReq * const req = (xGLXVendorPrivateReq *) pc;
int error;
@@ -5011,43 +5757,24 @@ int __glXDispSwap_GetProgramEnvParameterfvARB(__GLXclientState *cl, GLbyte *pc)
pc += __GLX_VENDPRIV_HDR_SIZE;
if ( cx != NULL ) {
- GLfloat params[4];
- CALL_GetProgramEnvParameterfvARB( GET_DISPATCH(), (
- (GLenum )bswap_ENUM ( pc + 0 ),
- (GLuint )bswap_CARD32 ( pc + 4 ),
- params
- ) );
- (void) bswap_32_array( (uint32_t *) params, 4 );
- __glXSendReplySwap(cl->client, params, 4, 4, GL_FALSE, 0);
- error = Success;
- }
-
- return error;
-}
-
-int __glXDispSwap_GetProgramLocalParameterdvARB(__GLXclientState *cl, GLbyte *pc)
-{
- xGLXVendorPrivateReq * const req = (xGLXVendorPrivateReq *) pc;
- int error;
- __GLXcontext * const cx = __glXForceCurrent(cl, bswap_CARD32( &req->contextTag ), &error);
+ const GLsizei len = (GLsizei )bswap_CARD32 ( pc + 4 );
- pc += __GLX_VENDPRIV_HDR_SIZE;
- if ( cx != NULL ) {
GLdouble params[4];
- CALL_GetProgramLocalParameterdvARB( GET_DISPATCH(), (
- (GLenum )bswap_ENUM ( pc + 0 ),
- (GLuint )bswap_CARD32 ( pc + 4 ),
+ CALL_GetProgramNamedParameterdvNV( GET_DISPATCH(), (
+ (GLuint )bswap_CARD32 ( pc + 0 ),
+ len,
+ (const GLubyte *)(pc + 8),
params
) );
(void) bswap_64_array( (uint64_t *) params, 4 );
- __glXSendReplySwap(cl->client, params, 4, 8, GL_FALSE, 0);
+ __glXSendReplySwap(cl->client, params, 4, 8, GL_TRUE, 0);
error = Success;
}
return error;
}
-int __glXDispSwap_GetProgramLocalParameterfvARB(__GLXclientState *cl, GLbyte *pc)
+int __glXDispSwap_GetProgramNamedParameterfvNV(__GLXclientState *cl, GLbyte *pc)
{
xGLXVendorPrivateReq * const req = (xGLXVendorPrivateReq *) pc;
int error;
@@ -5055,62 +5782,23 @@ int __glXDispSwap_GetProgramLocalParameterfvARB(__GLXclientState *cl, GLbyte *pc
pc += __GLX_VENDPRIV_HDR_SIZE;
if ( cx != NULL ) {
+ const GLsizei len = (GLsizei )bswap_CARD32 ( pc + 4 );
+
GLfloat params[4];
- CALL_GetProgramLocalParameterfvARB( GET_DISPATCH(), (
- (GLenum )bswap_ENUM ( pc + 0 ),
- (GLuint )bswap_CARD32 ( pc + 4 ),
+ CALL_GetProgramNamedParameterfvNV( GET_DISPATCH(), (
+ (GLuint )bswap_CARD32 ( pc + 0 ),
+ len,
+ (const GLubyte *)(pc + 8),
params
) );
(void) bswap_32_array( (uint32_t *) params, 4 );
- __glXSendReplySwap(cl->client, params, 4, 4, GL_FALSE, 0);
- error = Success;
- }
-
- return error;
-}
-
-int __glXDispSwap_GetProgramivARB(__GLXclientState *cl, GLbyte *pc)
-{
- xGLXVendorPrivateReq * const req = (xGLXVendorPrivateReq *) pc;
- int error;
- __GLXcontext * const cx = __glXForceCurrent(cl, bswap_CARD32( &req->contextTag ), &error);
-
- pc += __GLX_VENDPRIV_HDR_SIZE;
- if ( cx != NULL ) {
- const GLenum pname = (GLenum )bswap_ENUM ( pc + 4 );
-
- const GLuint compsize = __glGetProgramivARB_size(pname);
- GLint answerBuffer[200];
- GLint * params = __glXGetAnswerBuffer(cl, compsize * 4, answerBuffer, sizeof(answerBuffer), 4);
-
- if (params == NULL) return BadAlloc;
- __glXClearErrorOccured();
-
- CALL_GetProgramivARB( GET_DISPATCH(), (
- (GLenum )bswap_ENUM ( pc + 0 ),
- pname,
- params
- ) );
- (void) bswap_32_array( (uint32_t *) params, compsize );
- __glXSendReplySwap(cl->client, params, compsize, 4, GL_FALSE, 0);
+ __glXSendReplySwap(cl->client, params, 4, 4, GL_TRUE, 0);
error = Success;
}
return error;
}
-void __glXDispSwap_ProgramNamedParameter4fvNV(GLbyte * pc)
-{
- const GLsizei len = (GLsizei )bswap_CARD32 ( pc + 4 );
-
- CALL_ProgramNamedParameter4fvNV( GET_DISPATCH(), (
- (GLuint )bswap_CARD32 ( pc + 0 ),
- len,
- (const GLubyte *)(pc + 24),
- (const GLfloat *)bswap_32_array( (uint32_t *) (pc + 8), 4 )
- ) );
-}
-
void __glXDispSwap_ProgramNamedParameter4dvNV(GLbyte * pc)
{
const GLsizei len = (GLsizei )bswap_CARD32 ( pc + 36 );
@@ -5131,285 +5819,43 @@ void __glXDispSwap_ProgramNamedParameter4dvNV(GLbyte * pc)
) );
}
-int __glXDispSwap_GetProgramNamedParameterfvNV(__GLXclientState *cl, GLbyte *pc)
-{
- xGLXVendorPrivateReq * const req = (xGLXVendorPrivateReq *) pc;
- int error;
- __GLXcontext * const cx = __glXForceCurrent(cl, bswap_CARD32( &req->contextTag ), &error);
-
- pc += __GLX_VENDPRIV_HDR_SIZE;
- if ( cx != NULL ) {
- const GLsizei len = (GLsizei )bswap_CARD32 ( pc + 4 );
-
- GLfloat params[4];
- CALL_GetProgramNamedParameterfvNV( GET_DISPATCH(), (
- (GLuint )bswap_CARD32 ( pc + 0 ),
- len,
- (const GLubyte *)(pc + 8),
- params
- ) );
- (void) bswap_32_array( (uint32_t *) params, 4 );
- __glXSendReplySwap(cl->client, params, 4, 4, GL_TRUE, 0);
- error = Success;
- }
-
- return error;
-}
-
-int __glXDispSwap_GetProgramNamedParameterdvNV(__GLXclientState *cl, GLbyte *pc)
-{
- xGLXVendorPrivateReq * const req = (xGLXVendorPrivateReq *) pc;
- int error;
- __GLXcontext * const cx = __glXForceCurrent(cl, bswap_CARD32( &req->contextTag ), &error);
-
- pc += __GLX_VENDPRIV_HDR_SIZE;
- if ( cx != NULL ) {
- const GLsizei len = (GLsizei )bswap_CARD32 ( pc + 4 );
-
- GLdouble params[4];
- CALL_GetProgramNamedParameterdvNV( GET_DISPATCH(), (
- (GLuint )bswap_CARD32 ( pc + 0 ),
- len,
- (const GLubyte *)(pc + 8),
- params
- ) );
- (void) bswap_64_array( (uint64_t *) params, 4 );
- __glXSendReplySwap(cl->client, params, 4, 8, GL_TRUE, 0);
- error = Success;
- }
-
- return error;
-}
-
-int __glXDispSwap_GenQueriesARB(__GLXclientState *cl, GLbyte *pc)
-{
- xGLXSingleReq * const req = (xGLXSingleReq *) pc;
- int error;
- __GLXcontext * const cx = __glXForceCurrent(cl, bswap_CARD32( &req->contextTag ), &error);
-
- pc += __GLX_SINGLE_HDR_SIZE;
- if ( cx != NULL ) {
- const GLsizei n = (GLsizei )bswap_CARD32 ( pc + 0 );
-
- GLuint answerBuffer[200];
- GLuint * ids = __glXGetAnswerBuffer(cl, n * 4, answerBuffer, sizeof(answerBuffer), 4);
- CALL_GenQueriesARB( GET_DISPATCH(), (
- n,
- ids
- ) );
- (void) bswap_32_array( (uint32_t *) ids, n );
- __glXSendReplySwap(cl->client, ids, n, 4, GL_TRUE, 0);
- error = Success;
- }
-
- return error;
-}
-
-int __glXDispSwap_DeleteQueriesARB(__GLXclientState *cl, GLbyte *pc)
+void __glXDispSwap_ProgramNamedParameter4fvNV(GLbyte * pc)
{
- xGLXSingleReq * const req = (xGLXSingleReq *) pc;
- int error;
- __GLXcontext * const cx = __glXForceCurrent(cl, bswap_CARD32( &req->contextTag ), &error);
-
- pc += __GLX_SINGLE_HDR_SIZE;
- if ( cx != NULL ) {
- const GLsizei n = (GLsizei )bswap_CARD32 ( pc + 0 );
-
- CALL_DeleteQueriesARB( GET_DISPATCH(), (
- n,
- (const GLuint *)bswap_32_array( (uint32_t *) (pc + 4), 0 )
- ) );
- error = Success;
- }
+ const GLsizei len = (GLsizei )bswap_CARD32 ( pc + 4 );
- return error;
+ CALL_ProgramNamedParameter4fvNV( GET_DISPATCH(), (
+ (GLuint )bswap_CARD32 ( pc + 0 ),
+ len,
+ (const GLubyte *)(pc + 24),
+ (const GLfloat *)bswap_32_array( (uint32_t *) (pc + 8), 4 )
+ ) );
}
-int __glXDispSwap_IsQueryARB(__GLXclientState *cl, GLbyte *pc)
+void __glXDispSwap_BlendEquationSeparateEXT(GLbyte * pc)
{
- xGLXSingleReq * const req = (xGLXSingleReq *) pc;
- int error;
- __GLXcontext * const cx = __glXForceCurrent(cl, bswap_CARD32( &req->contextTag ), &error);
-
- pc += __GLX_SINGLE_HDR_SIZE;
- if ( cx != NULL ) {
- GLboolean retval;
- retval = CALL_IsQueryARB( GET_DISPATCH(), (
- (GLuint )bswap_CARD32 ( pc + 0 )
- ) );
- __glXSendReplySwap(cl->client, dummy_answer, 0, 0, GL_FALSE, retval);
- error = Success;
- }
-
- return error;
+ CALL_BlendEquationSeparateEXT( GET_DISPATCH(), (
+ (GLenum )bswap_ENUM ( pc + 0 ),
+ (GLenum )bswap_ENUM ( pc + 4 )
+ ) );
}
-void __glXDispSwap_BeginQueryARB(GLbyte * pc)
+void __glXDispSwap_BindFramebufferEXT(GLbyte * pc)
{
- CALL_BeginQueryARB( GET_DISPATCH(), (
+ CALL_BindFramebufferEXT( GET_DISPATCH(), (
(GLenum )bswap_ENUM ( pc + 0 ),
(GLuint )bswap_CARD32 ( pc + 4 )
) );
}
-void __glXDispSwap_EndQueryARB(GLbyte * pc)
+void __glXDispSwap_BindRenderbufferEXT(GLbyte * pc)
{
- CALL_EndQueryARB( GET_DISPATCH(), (
- (GLenum )bswap_ENUM ( pc + 0 )
+ CALL_BindRenderbufferEXT( GET_DISPATCH(), (
+ (GLenum )bswap_ENUM ( pc + 0 ),
+ (GLuint )bswap_CARD32 ( pc + 4 )
) );
}
-int __glXDispSwap_GetQueryivARB(__GLXclientState *cl, GLbyte *pc)
-{
- xGLXSingleReq * const req = (xGLXSingleReq *) pc;
- int error;
- __GLXcontext * const cx = __glXForceCurrent(cl, bswap_CARD32( &req->contextTag ), &error);
-
- pc += __GLX_SINGLE_HDR_SIZE;
- if ( cx != NULL ) {
- const GLenum pname = (GLenum )bswap_ENUM ( pc + 4 );
-
- const GLuint compsize = __glGetQueryivARB_size(pname);
- GLint answerBuffer[200];
- GLint * params = __glXGetAnswerBuffer(cl, compsize * 4, answerBuffer, sizeof(answerBuffer), 4);
-
- if (params == NULL) return BadAlloc;
- __glXClearErrorOccured();
-
- CALL_GetQueryivARB( GET_DISPATCH(), (
- (GLenum )bswap_ENUM ( pc + 0 ),
- pname,
- params
- ) );
- (void) bswap_32_array( (uint32_t *) params, compsize );
- __glXSendReplySwap(cl->client, params, compsize, 4, GL_FALSE, 0);
- error = Success;
- }
-
- return error;
-}
-
-int __glXDispSwap_GetQueryObjectivARB(__GLXclientState *cl, GLbyte *pc)
-{
- xGLXSingleReq * const req = (xGLXSingleReq *) pc;
- int error;
- __GLXcontext * const cx = __glXForceCurrent(cl, bswap_CARD32( &req->contextTag ), &error);
-
- pc += __GLX_SINGLE_HDR_SIZE;
- if ( cx != NULL ) {
- const GLenum pname = (GLenum )bswap_ENUM ( pc + 4 );
-
- const GLuint compsize = __glGetQueryObjectivARB_size(pname);
- GLint answerBuffer[200];
- GLint * params = __glXGetAnswerBuffer(cl, compsize * 4, answerBuffer, sizeof(answerBuffer), 4);
-
- if (params == NULL) return BadAlloc;
- __glXClearErrorOccured();
-
- CALL_GetQueryObjectivARB( GET_DISPATCH(), (
- (GLuint )bswap_CARD32 ( pc + 0 ),
- pname,
- params
- ) );
- (void) bswap_32_array( (uint32_t *) params, compsize );
- __glXSendReplySwap(cl->client, params, compsize, 4, GL_FALSE, 0);
- error = Success;
- }
-
- return error;
-}
-
-int __glXDispSwap_GetQueryObjectuivARB(__GLXclientState *cl, GLbyte *pc)
-{
- xGLXSingleReq * const req = (xGLXSingleReq *) pc;
- int error;
- __GLXcontext * const cx = __glXForceCurrent(cl, bswap_CARD32( &req->contextTag ), &error);
-
- pc += __GLX_SINGLE_HDR_SIZE;
- if ( cx != NULL ) {
- const GLenum pname = (GLenum )bswap_ENUM ( pc + 4 );
-
- const GLuint compsize = __glGetQueryObjectuivARB_size(pname);
- GLuint answerBuffer[200];
- GLuint * params = __glXGetAnswerBuffer(cl, compsize * 4, answerBuffer, sizeof(answerBuffer), 4);
-
- if (params == NULL) return BadAlloc;
- __glXClearErrorOccured();
-
- CALL_GetQueryObjectuivARB( GET_DISPATCH(), (
- (GLuint )bswap_CARD32 ( pc + 0 ),
- pname,
- params
- ) );
- (void) bswap_32_array( (uint32_t *) params, compsize );
- __glXSendReplySwap(cl->client, params, compsize, 4, GL_FALSE, 0);
- error = Success;
- }
-
- return error;
-}
-
-int __glXDispSwap_GetVertexAttribdvNV(__GLXclientState *cl, GLbyte *pc)
-{
- xGLXVendorPrivateReq * const req = (xGLXVendorPrivateReq *) pc;
- int error;
- __GLXcontext * const cx = __glXForceCurrent(cl, bswap_CARD32( &req->contextTag ), &error);
-
- pc += __GLX_VENDPRIV_HDR_SIZE;
- if ( cx != NULL ) {
- const GLenum pname = (GLenum )bswap_ENUM ( pc + 4 );
-
- const GLuint compsize = __glGetVertexAttribdvNV_size(pname);
- GLdouble answerBuffer[200];
- GLdouble * params = __glXGetAnswerBuffer(cl, compsize * 8, answerBuffer, sizeof(answerBuffer), 8);
-
- if (params == NULL) return BadAlloc;
- __glXClearErrorOccured();
-
- CALL_GetVertexAttribdvNV( GET_DISPATCH(), (
- (GLuint )bswap_CARD32 ( pc + 0 ),
- pname,
- params
- ) );
- (void) bswap_64_array( (uint64_t *) params, compsize );
- __glXSendReplySwap(cl->client, params, compsize, 8, GL_FALSE, 0);
- error = Success;
- }
-
- return error;
-}
-
-int __glXDispSwap_GetVertexAttribfvNV(__GLXclientState *cl, GLbyte *pc)
-{
- xGLXVendorPrivateReq * const req = (xGLXVendorPrivateReq *) pc;
- int error;
- __GLXcontext * const cx = __glXForceCurrent(cl, bswap_CARD32( &req->contextTag ), &error);
-
- pc += __GLX_VENDPRIV_HDR_SIZE;
- if ( cx != NULL ) {
- const GLenum pname = (GLenum )bswap_ENUM ( pc + 4 );
-
- const GLuint compsize = __glGetVertexAttribfvNV_size(pname);
- GLfloat answerBuffer[200];
- GLfloat * params = __glXGetAnswerBuffer(cl, compsize * 4, answerBuffer, sizeof(answerBuffer), 4);
-
- if (params == NULL) return BadAlloc;
- __glXClearErrorOccured();
-
- CALL_GetVertexAttribfvNV( GET_DISPATCH(), (
- (GLuint )bswap_CARD32 ( pc + 0 ),
- pname,
- params
- ) );
- (void) bswap_32_array( (uint32_t *) params, compsize );
- __glXSendReplySwap(cl->client, params, compsize, 4, GL_FALSE, 0);
- error = Success;
- }
-
- return error;
-}
-
-int __glXDispSwap_GetVertexAttribivNV(__GLXclientState *cl, GLbyte *pc)
+int __glXDispSwap_CheckFramebufferStatusEXT(__GLXclientState *cl, GLbyte *pc)
{
xGLXVendorPrivateReq * const req = (xGLXVendorPrivateReq *) pc;
int error;
@@ -5417,161 +5863,82 @@ int __glXDispSwap_GetVertexAttribivNV(__GLXclientState *cl, GLbyte *pc)
pc += __GLX_VENDPRIV_HDR_SIZE;
if ( cx != NULL ) {
- const GLenum pname = (GLenum )bswap_ENUM ( pc + 4 );
-
- const GLuint compsize = __glGetVertexAttribivNV_size(pname);
- GLint answerBuffer[200];
- GLint * params = __glXGetAnswerBuffer(cl, compsize * 4, answerBuffer, sizeof(answerBuffer), 4);
-
- if (params == NULL) return BadAlloc;
- __glXClearErrorOccured();
-
- CALL_GetVertexAttribivNV( GET_DISPATCH(), (
- (GLuint )bswap_CARD32 ( pc + 0 ),
- pname,
- params
+ GLenum retval;
+ retval = CALL_CheckFramebufferStatusEXT( GET_DISPATCH(), (
+ (GLenum )bswap_ENUM ( pc + 0 )
) );
- (void) bswap_32_array( (uint32_t *) params, compsize );
- __glXSendReplySwap(cl->client, params, compsize, 4, GL_FALSE, 0);
+ __glXSendReplySwap(cl->client, dummy_answer, 0, 0, GL_FALSE, retval);
error = Success;
}
return error;
}
-void __glXDispSwap_VertexAttrib1dvNV(GLbyte * pc)
-{
-#ifdef __GLX_ALIGN64
- if ((unsigned long)(pc) & 7) {
- (void) memmove(pc-4, pc, 12);
- pc -= 4;
- }
-#endif
-
- CALL_VertexAttrib1dvNV( GET_DISPATCH(), (
- (GLuint )bswap_CARD32 ( pc + 0 ),
- (const GLdouble *)bswap_64_array( (uint64_t *) (pc + 4), 1 )
- ) );
-}
-
-void __glXDispSwap_VertexAttrib1fvNV(GLbyte * pc)
-{
- CALL_VertexAttrib1fvNV( GET_DISPATCH(), (
- (GLuint )bswap_CARD32 ( pc + 0 ),
- (const GLfloat *)bswap_32_array( (uint32_t *) (pc + 4), 1 )
- ) );
-}
-
-void __glXDispSwap_VertexAttrib1svNV(GLbyte * pc)
-{
- CALL_VertexAttrib1svNV( GET_DISPATCH(), (
- (GLuint )bswap_CARD32 ( pc + 0 ),
- (const GLshort *)bswap_16_array( (uint16_t *) (pc + 4), 1 )
- ) );
-}
-
-void __glXDispSwap_VertexAttrib2dvNV(GLbyte * pc)
-{
-#ifdef __GLX_ALIGN64
- if ((unsigned long)(pc) & 7) {
- (void) memmove(pc-4, pc, 20);
- pc -= 4;
- }
-#endif
-
- CALL_VertexAttrib2dvNV( GET_DISPATCH(), (
- (GLuint )bswap_CARD32 ( pc + 0 ),
- (const GLdouble *)bswap_64_array( (uint64_t *) (pc + 4), 2 )
- ) );
-}
-
-void __glXDispSwap_VertexAttrib2fvNV(GLbyte * pc)
-{
- CALL_VertexAttrib2fvNV( GET_DISPATCH(), (
- (GLuint )bswap_CARD32 ( pc + 0 ),
- (const GLfloat *)bswap_32_array( (uint32_t *) (pc + 4), 2 )
- ) );
-}
-
-void __glXDispSwap_VertexAttrib2svNV(GLbyte * pc)
-{
- CALL_VertexAttrib2svNV( GET_DISPATCH(), (
- (GLuint )bswap_CARD32 ( pc + 0 ),
- (const GLshort *)bswap_16_array( (uint16_t *) (pc + 4), 2 )
- ) );
-}
-
-void __glXDispSwap_VertexAttrib3dvNV(GLbyte * pc)
+void __glXDispSwap_DeleteFramebuffersEXT(GLbyte * pc)
{
-#ifdef __GLX_ALIGN64
- if ((unsigned long)(pc) & 7) {
- (void) memmove(pc-4, pc, 28);
- pc -= 4;
- }
-#endif
+ const GLsizei n = (GLsizei )bswap_CARD32 ( pc + 0 );
- CALL_VertexAttrib3dvNV( GET_DISPATCH(), (
- (GLuint )bswap_CARD32 ( pc + 0 ),
- (const GLdouble *)bswap_64_array( (uint64_t *) (pc + 4), 3 )
+ CALL_DeleteFramebuffersEXT( GET_DISPATCH(), (
+ n,
+ (const GLuint *)bswap_32_array( (uint32_t *) (pc + 4), 0 )
) );
}
-void __glXDispSwap_VertexAttrib3fvNV(GLbyte * pc)
+void __glXDispSwap_DeleteRenderbuffersEXT(GLbyte * pc)
{
- CALL_VertexAttrib3fvNV( GET_DISPATCH(), (
- (GLuint )bswap_CARD32 ( pc + 0 ),
- (const GLfloat *)bswap_32_array( (uint32_t *) (pc + 4), 3 )
- ) );
-}
+ const GLsizei n = (GLsizei )bswap_CARD32 ( pc + 0 );
-void __glXDispSwap_VertexAttrib3svNV(GLbyte * pc)
-{
- CALL_VertexAttrib3svNV( GET_DISPATCH(), (
- (GLuint )bswap_CARD32 ( pc + 0 ),
- (const GLshort *)bswap_16_array( (uint16_t *) (pc + 4), 3 )
+ CALL_DeleteRenderbuffersEXT( GET_DISPATCH(), (
+ n,
+ (const GLuint *)bswap_32_array( (uint32_t *) (pc + 4), 0 )
) );
}
-void __glXDispSwap_VertexAttrib4dvNV(GLbyte * pc)
+void __glXDispSwap_FramebufferRenderbufferEXT(GLbyte * pc)
{
-#ifdef __GLX_ALIGN64
- if ((unsigned long)(pc) & 7) {
- (void) memmove(pc-4, pc, 36);
- pc -= 4;
- }
-#endif
-
- CALL_VertexAttrib4dvNV( GET_DISPATCH(), (
- (GLuint )bswap_CARD32 ( pc + 0 ),
- (const GLdouble *)bswap_64_array( (uint64_t *) (pc + 4), 4 )
+ CALL_FramebufferRenderbufferEXT( GET_DISPATCH(), (
+ (GLenum )bswap_ENUM ( pc + 0 ),
+ (GLenum )bswap_ENUM ( pc + 4 ),
+ (GLenum )bswap_ENUM ( pc + 8 ),
+ (GLuint )bswap_CARD32 ( pc + 12 )
) );
}
-void __glXDispSwap_VertexAttrib4fvNV(GLbyte * pc)
+void __glXDispSwap_FramebufferTexture1DEXT(GLbyte * pc)
{
- CALL_VertexAttrib4fvNV( GET_DISPATCH(), (
- (GLuint )bswap_CARD32 ( pc + 0 ),
- (const GLfloat *)bswap_32_array( (uint32_t *) (pc + 4), 4 )
+ CALL_FramebufferTexture1DEXT( GET_DISPATCH(), (
+ (GLenum )bswap_ENUM ( pc + 0 ),
+ (GLenum )bswap_ENUM ( pc + 4 ),
+ (GLenum )bswap_ENUM ( pc + 8 ),
+ (GLuint )bswap_CARD32 ( pc + 12 ),
+ (GLint )bswap_CARD32 ( pc + 16 )
) );
}
-void __glXDispSwap_VertexAttrib4svNV(GLbyte * pc)
+void __glXDispSwap_FramebufferTexture2DEXT(GLbyte * pc)
{
- CALL_VertexAttrib4svNV( GET_DISPATCH(), (
- (GLuint )bswap_CARD32 ( pc + 0 ),
- (const GLshort *)bswap_16_array( (uint16_t *) (pc + 4), 4 )
+ CALL_FramebufferTexture2DEXT( GET_DISPATCH(), (
+ (GLenum )bswap_ENUM ( pc + 0 ),
+ (GLenum )bswap_ENUM ( pc + 4 ),
+ (GLenum )bswap_ENUM ( pc + 8 ),
+ (GLuint )bswap_CARD32 ( pc + 12 ),
+ (GLint )bswap_CARD32 ( pc + 16 )
) );
}
-void __glXDispSwap_VertexAttrib4ubvNV(GLbyte * pc)
+void __glXDispSwap_FramebufferTexture3DEXT(GLbyte * pc)
{
- CALL_VertexAttrib4ubvNV( GET_DISPATCH(), (
- (GLuint )bswap_CARD32 ( pc + 0 ),
- (const GLubyte *)(pc + 4)
+ CALL_FramebufferTexture3DEXT( GET_DISPATCH(), (
+ (GLenum )bswap_ENUM ( pc + 0 ),
+ (GLenum )bswap_ENUM ( pc + 4 ),
+ (GLenum )bswap_ENUM ( pc + 8 ),
+ (GLuint )bswap_CARD32 ( pc + 12 ),
+ (GLint )bswap_CARD32 ( pc + 16 ),
+ (GLint )bswap_CARD32 ( pc + 20 )
) );
}
-int __glXDispSwap_IsRenderbufferEXT(__GLXclientState *cl, GLbyte *pc)
+int __glXDispSwap_GenFramebuffersEXT(__GLXclientState *cl, GLbyte *pc)
{
xGLXVendorPrivateReq * const req = (xGLXVendorPrivateReq *) pc;
int error;
@@ -5579,35 +5946,22 @@ int __glXDispSwap_IsRenderbufferEXT(__GLXclientState *cl, GLbyte *pc)
pc += __GLX_VENDPRIV_HDR_SIZE;
if ( cx != NULL ) {
- GLboolean retval;
- retval = CALL_IsRenderbufferEXT( GET_DISPATCH(), (
- (GLuint )bswap_CARD32 ( pc + 0 )
+ const GLsizei n = (GLsizei )bswap_CARD32 ( pc + 0 );
+
+ GLuint answerBuffer[200];
+ GLuint * framebuffers = __glXGetAnswerBuffer(cl, n * 4, answerBuffer, sizeof(answerBuffer), 4);
+ CALL_GenFramebuffersEXT( GET_DISPATCH(), (
+ n,
+ framebuffers
) );
- __glXSendReplySwap(cl->client, dummy_answer, 0, 0, GL_FALSE, retval);
+ (void) bswap_32_array( (uint32_t *) framebuffers, n );
+ __glXSendReplySwap(cl->client, framebuffers, n, 4, GL_TRUE, 0);
error = Success;
}
return error;
}
-void __glXDispSwap_BindRenderbufferEXT(GLbyte * pc)
-{
- CALL_BindRenderbufferEXT( GET_DISPATCH(), (
- (GLenum )bswap_ENUM ( pc + 0 ),
- (GLuint )bswap_CARD32 ( pc + 4 )
- ) );
-}
-
-void __glXDispSwap_DeleteRenderbuffersEXT(GLbyte * pc)
-{
- const GLsizei n = (GLsizei )bswap_CARD32 ( pc + 0 );
-
- CALL_DeleteRenderbuffersEXT( GET_DISPATCH(), (
- n,
- (const GLuint *)bswap_32_array( (uint32_t *) (pc + 4), 0 )
- ) );
-}
-
int __glXDispSwap_GenRenderbuffersEXT(__GLXclientState *cl, GLbyte *pc)
{
xGLXVendorPrivateReq * const req = (xGLXVendorPrivateReq *) pc;
@@ -5632,17 +5986,14 @@ int __glXDispSwap_GenRenderbuffersEXT(__GLXclientState *cl, GLbyte *pc)
return error;
}
-void __glXDispSwap_RenderbufferStorageEXT(GLbyte * pc)
+void __glXDispSwap_GenerateMipmapEXT(GLbyte * pc)
{
- CALL_RenderbufferStorageEXT( GET_DISPATCH(), (
- (GLenum )bswap_ENUM ( pc + 0 ),
- (GLenum )bswap_ENUM ( pc + 4 ),
- (GLsizei )bswap_CARD32 ( pc + 8 ),
- (GLsizei )bswap_CARD32 ( pc + 12 )
+ CALL_GenerateMipmapEXT( GET_DISPATCH(), (
+ (GLenum )bswap_ENUM ( pc + 0 )
) );
}
-int __glXDispSwap_GetRenderbufferParameterivEXT(__GLXclientState *cl, GLbyte *pc)
+int __glXDispSwap_GetFramebufferAttachmentParameterivEXT(__GLXclientState *cl, GLbyte *pc)
{
xGLXVendorPrivateReq * const req = (xGLXVendorPrivateReq *) pc;
int error;
@@ -5651,9 +6002,10 @@ int __glXDispSwap_GetRenderbufferParameterivEXT(__GLXclientState *cl, GLbyte *pc
pc += __GLX_VENDPRIV_HDR_SIZE;
if ( cx != NULL ) {
GLint params[1];
- CALL_GetRenderbufferParameterivEXT( GET_DISPATCH(), (
+ CALL_GetFramebufferAttachmentParameterivEXT( GET_DISPATCH(), (
(GLenum )bswap_ENUM ( pc + 0 ),
(GLenum )bswap_ENUM ( pc + 4 ),
+ (GLenum )bswap_ENUM ( pc + 8 ),
params
) );
(void) bswap_32_array( (uint32_t *) params, 1 );
@@ -5664,7 +6016,7 @@ int __glXDispSwap_GetRenderbufferParameterivEXT(__GLXclientState *cl, GLbyte *pc
return error;
}
-int __glXDispSwap_IsFramebufferEXT(__GLXclientState *cl, GLbyte *pc)
+int __glXDispSwap_GetRenderbufferParameterivEXT(__GLXclientState *cl, GLbyte *pc)
{
xGLXVendorPrivateReq * const req = (xGLXVendorPrivateReq *) pc;
int error;
@@ -5672,36 +6024,21 @@ int __glXDispSwap_IsFramebufferEXT(__GLXclientState *cl, GLbyte *pc)
pc += __GLX_VENDPRIV_HDR_SIZE;
if ( cx != NULL ) {
- GLboolean retval;
- retval = CALL_IsFramebufferEXT( GET_DISPATCH(), (
- (GLuint )bswap_CARD32 ( pc + 0 )
+ GLint params[1];
+ CALL_GetRenderbufferParameterivEXT( GET_DISPATCH(), (
+ (GLenum )bswap_ENUM ( pc + 0 ),
+ (GLenum )bswap_ENUM ( pc + 4 ),
+ params
) );
- __glXSendReplySwap(cl->client, dummy_answer, 0, 0, GL_FALSE, retval);
+ (void) bswap_32_array( (uint32_t *) params, 1 );
+ __glXSendReplySwap(cl->client, params, 1, 4, GL_FALSE, 0);
error = Success;
}
return error;
}
-void __glXDispSwap_BindFramebufferEXT(GLbyte * pc)
-{
- CALL_BindFramebufferEXT( GET_DISPATCH(), (
- (GLenum )bswap_ENUM ( pc + 0 ),
- (GLuint )bswap_CARD32 ( pc + 4 )
- ) );
-}
-
-void __glXDispSwap_DeleteFramebuffersEXT(GLbyte * pc)
-{
- const GLsizei n = (GLsizei )bswap_CARD32 ( pc + 0 );
-
- CALL_DeleteFramebuffersEXT( GET_DISPATCH(), (
- n,
- (const GLuint *)bswap_32_array( (uint32_t *) (pc + 4), 0 )
- ) );
-}
-
-int __glXDispSwap_GenFramebuffersEXT(__GLXclientState *cl, GLbyte *pc)
+int __glXDispSwap_IsFramebufferEXT(__GLXclientState *cl, GLbyte *pc)
{
xGLXVendorPrivateReq * const req = (xGLXVendorPrivateReq *) pc;
int error;
@@ -5709,23 +6046,18 @@ int __glXDispSwap_GenFramebuffersEXT(__GLXclientState *cl, GLbyte *pc)
pc += __GLX_VENDPRIV_HDR_SIZE;
if ( cx != NULL ) {
- const GLsizei n = (GLsizei )bswap_CARD32 ( pc + 0 );
-
- GLuint answerBuffer[200];
- GLuint * framebuffers = __glXGetAnswerBuffer(cl, n * 4, answerBuffer, sizeof(answerBuffer), 4);
- CALL_GenFramebuffersEXT( GET_DISPATCH(), (
- n,
- framebuffers
+ GLboolean retval;
+ retval = CALL_IsFramebufferEXT( GET_DISPATCH(), (
+ (GLuint )bswap_CARD32 ( pc + 0 )
) );
- (void) bswap_32_array( (uint32_t *) framebuffers, n );
- __glXSendReplySwap(cl->client, framebuffers, n, 4, GL_TRUE, 0);
+ __glXSendReplySwap(cl->client, dummy_answer, 0, 0, GL_FALSE, retval);
error = Success;
}
return error;
}
-int __glXDispSwap_CheckFramebufferStatusEXT(__GLXclientState *cl, GLbyte *pc)
+int __glXDispSwap_IsRenderbufferEXT(__GLXclientState *cl, GLbyte *pc)
{
xGLXVendorPrivateReq * const req = (xGLXVendorPrivateReq *) pc;
int error;
@@ -5733,9 +6065,9 @@ int __glXDispSwap_CheckFramebufferStatusEXT(__GLXclientState *cl, GLbyte *pc)
pc += __GLX_VENDPRIV_HDR_SIZE;
if ( cx != NULL ) {
- GLenum retval;
- retval = CALL_CheckFramebufferStatusEXT( GET_DISPATCH(), (
- (GLenum )bswap_ENUM ( pc + 0 )
+ GLboolean retval;
+ retval = CALL_IsRenderbufferEXT( GET_DISPATCH(), (
+ (GLuint )bswap_CARD32 ( pc + 0 )
) );
__glXSendReplySwap(cl->client, dummy_answer, 0, 0, GL_FALSE, retval);
error = Success;
@@ -5744,77 +6076,13 @@ int __glXDispSwap_CheckFramebufferStatusEXT(__GLXclientState *cl, GLbyte *pc)
return error;
}
-void __glXDispSwap_FramebufferTexture1DEXT(GLbyte * pc)
-{
- CALL_FramebufferTexture1DEXT( GET_DISPATCH(), (
- (GLenum )bswap_ENUM ( pc + 0 ),
- (GLenum )bswap_ENUM ( pc + 4 ),
- (GLenum )bswap_ENUM ( pc + 8 ),
- (GLuint )bswap_CARD32 ( pc + 12 ),
- (GLint )bswap_CARD32 ( pc + 16 )
- ) );
-}
-
-void __glXDispSwap_FramebufferTexture2DEXT(GLbyte * pc)
-{
- CALL_FramebufferTexture2DEXT( GET_DISPATCH(), (
- (GLenum )bswap_ENUM ( pc + 0 ),
- (GLenum )bswap_ENUM ( pc + 4 ),
- (GLenum )bswap_ENUM ( pc + 8 ),
- (GLuint )bswap_CARD32 ( pc + 12 ),
- (GLint )bswap_CARD32 ( pc + 16 )
- ) );
-}
-
-void __glXDispSwap_FramebufferTexture3DEXT(GLbyte * pc)
-{
- CALL_FramebufferTexture3DEXT( GET_DISPATCH(), (
- (GLenum )bswap_ENUM ( pc + 0 ),
- (GLenum )bswap_ENUM ( pc + 4 ),
- (GLenum )bswap_ENUM ( pc + 8 ),
- (GLuint )bswap_CARD32 ( pc + 12 ),
- (GLint )bswap_CARD32 ( pc + 16 ),
- (GLint )bswap_CARD32 ( pc + 20 )
- ) );
-}
-
-void __glXDispSwap_FramebufferRenderbufferEXT(GLbyte * pc)
+void __glXDispSwap_RenderbufferStorageEXT(GLbyte * pc)
{
- CALL_FramebufferRenderbufferEXT( GET_DISPATCH(), (
+ CALL_RenderbufferStorageEXT( GET_DISPATCH(), (
(GLenum )bswap_ENUM ( pc + 0 ),
(GLenum )bswap_ENUM ( pc + 4 ),
- (GLenum )bswap_ENUM ( pc + 8 ),
- (GLuint )bswap_CARD32 ( pc + 12 )
- ) );
-}
-
-int __glXDispSwap_GetFramebufferAttachmentParameterivEXT(__GLXclientState *cl, GLbyte *pc)
-{
- xGLXVendorPrivateReq * const req = (xGLXVendorPrivateReq *) pc;
- int error;
- __GLXcontext * const cx = __glXForceCurrent(cl, bswap_CARD32( &req->contextTag ), &error);
-
- pc += __GLX_VENDPRIV_HDR_SIZE;
- if ( cx != NULL ) {
- GLint params[1];
- CALL_GetFramebufferAttachmentParameterivEXT( GET_DISPATCH(), (
- (GLenum )bswap_ENUM ( pc + 0 ),
- (GLenum )bswap_ENUM ( pc + 4 ),
- (GLenum )bswap_ENUM ( pc + 8 ),
- params
- ) );
- (void) bswap_32_array( (uint32_t *) params, 1 );
- __glXSendReplySwap(cl->client, params, 1, 4, GL_FALSE, 0);
- error = Success;
- }
-
- return error;
-}
-
-void __glXDispSwap_GenerateMipmapEXT(GLbyte * pc)
-{
- CALL_GenerateMipmapEXT( GET_DISPATCH(), (
- (GLenum )bswap_ENUM ( pc + 0 )
+ (GLsizei )bswap_CARD32 ( pc + 8 ),
+ (GLsizei )bswap_CARD32 ( pc + 12 )
) );
}
diff --git a/GL/glx/indirect_program.c b/GL/glx/indirect_program.c
new file mode 100644
index 000000000..8d5f0e60f
--- /dev/null
+++ b/GL/glx/indirect_program.c
@@ -0,0 +1,163 @@
+/*
+ * (C) Copyright IBM Corporation 2005, 2006
+ * All Rights Reserved.
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a
+ * copy of this software and 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
+ * THE COPYRIGHT HOLDERS, THE AUTHORS, 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 indirect_program.c
+ * Hand-coded routines needed to support programmable pipeline extensions.
+ *
+ * \author Ian Romanick <idr@us.ibm.com>
+ */
+
+#define NEED_REPLIES
+#ifdef HAVE_DIX_CONFIG_H
+#include <dix-config.h>
+#endif
+
+#include "glxserver.h"
+#include "glxext.h"
+#include "singlesize.h"
+#include "unpack.h"
+#include "indirect_size_get.h"
+#include "indirect_dispatch.h"
+#include "glapitable.h"
+#include "glapi.h"
+#include "glthread.h"
+#include "dispatch.h"
+#include "glapioffsets.h"
+
+#if defined(__linux__) || defined (__GLIBC__) || defined (__GNU__)
+#include <byteswap.h>
+#elif defined(__OpenBSD__)
+#include <sys/endian.h>
+#define bswap_16 __swap16
+#define bswap_32 __swap32
+#define bswap_64 __swap64
+#else
+#include <sys/endian.h>
+#define bswap_16 bswap16
+#define bswap_32 bswap32
+#define bswap_64 bswap64
+#endif
+
+static int DoGetProgramString(struct __GLXclientStateRec *cl, GLbyte *pc,
+ unsigned get_programiv_offset, unsigned get_program_string_offset,
+ Bool do_swap);
+
+/**
+ * Handle both types of glGetProgramString calls.
+ *
+ * This single function handles both \c glGetProgramStringARB and
+ * \c glGetProgramStringNV. The dispatch offsets for the functions to use
+ * for \c glGetProgramivARB and \c glGetProgramStringARB are passed in by the
+ * caller. These can be the offsets of either the ARB versions or the NV
+ * versions.
+ */
+int DoGetProgramString(struct __GLXclientStateRec *cl, GLbyte *pc,
+ unsigned get_programiv_offset,
+ unsigned get_program_string_offset,
+ Bool do_swap)
+{
+ xGLXVendorPrivateWithReplyReq * const req =
+ (xGLXVendorPrivateWithReplyReq *) pc;
+ int error;
+ __GLXcontext * const cx = __glXForceCurrent(cl, req->contextTag, & error);
+ ClientPtr client = cl->client;
+
+
+ pc += __GLX_VENDPRIV_HDR_SIZE;
+ if (cx != NULL) {
+ GLenum target;
+ GLenum pname;
+ GLint compsize = 0;
+ char *answer = NULL, answerBuffer[200];
+
+ if (do_swap) {
+ target = (GLenum) bswap_32(*(int *)(pc + 0));
+ pname = (GLenum) bswap_32(*(int *)(pc + 4));
+ }
+ else {
+ target = *(GLenum *)(pc + 0);
+ pname = *(GLuint *)(pc + 4);
+ }
+
+ /* The value of the GL_PROGRAM_LENGTH_ARB and GL_PROGRAM_LENGTH_NV
+ * enumerants is the same.
+ */
+ CALL_by_offset(GET_DISPATCH(),
+ (void (GLAPIENTRYP)(GLuint, GLenum, GLint *)),
+ get_programiv_offset,
+ (target, GL_PROGRAM_LENGTH_ARB, &compsize));
+
+ if (compsize != 0) {
+ __GLX_GET_ANSWER_BUFFER(answer,cl,compsize,1);
+ __glXClearErrorOccured();
+
+ CALL_by_offset(GET_DISPATCH(),
+ (void (GLAPIENTRYP)(GLuint, GLenum, GLubyte *)),
+ get_program_string_offset,
+ (target, pname, answer));
+ }
+
+ if (__glXErrorOccured()) {
+ __GLX_BEGIN_REPLY(0);
+ __GLX_SEND_HEADER();
+ } else {
+ __GLX_BEGIN_REPLY(compsize);
+ ((xGLXGetTexImageReply *)&__glXReply)->width = compsize;
+ __GLX_SEND_HEADER();
+ __GLX_SEND_VOID_ARRAY(compsize);
+ }
+
+ error = Success;
+ }
+
+ return error;
+}
+
+int __glXDisp_GetProgramStringARB(struct __GLXclientStateRec *cl, GLbyte *pc)
+{
+ return DoGetProgramString(cl, pc, _gloffset_GetProgramivARB,
+ _gloffset_GetProgramStringARB, False);
+}
+
+
+int __glXDispSwap_GetProgramStringARB(struct __GLXclientStateRec *cl, GLbyte *pc)
+{
+ return DoGetProgramString(cl, pc, _gloffset_GetProgramivARB,
+ _gloffset_GetProgramStringARB, True);
+}
+
+
+int __glXDisp_GetProgramStringNV(struct __GLXclientStateRec *cl, GLbyte *pc)
+{
+ return DoGetProgramString(cl, pc, _gloffset_GetProgramivNV,
+ _gloffset_GetProgramStringNV, False);
+}
+
+
+int __glXDispSwap_GetProgramStringNV(struct __GLXclientStateRec *cl, GLbyte *pc)
+{
+ return DoGetProgramString(cl, pc, _gloffset_GetProgramivNV,
+ _gloffset_GetProgramStringNV, True);
+}
diff --git a/GL/glx/indirect_reqsize.c b/GL/glx/indirect_reqsize.c
index 3906bd11d..d3e2bc516 100644
--- a/GL/glx/indirect_reqsize.c
+++ b/GL/glx/indirect_reqsize.c
@@ -31,7 +31,7 @@
#include "indirect_size.h"
#include "indirect_reqsize.h"
-#if defined(linux)
+#if defined(__linux__) || defined (__GLIBC__) || defined(__GNU__)
# include <byteswap.h>
# define SWAP_32(v) do { (v) = bswap_32(v); } while(0)
#else
diff --git a/GL/glx/indirect_size_get.c b/GL/glx/indirect_size_get.c
index 85b5cfba6..150c6a182 100644
--- a/GL/glx/indirect_size_get.c
+++ b/GL/glx/indirect_size_get.c
@@ -67,1097 +67,1124 @@
INTERNAL PURE FASTCALL GLint
-__glCallLists_size( GLenum e )
+__glCallLists_size(GLenum e)
{
- switch( e ) {
- case GL_BYTE:
- case GL_UNSIGNED_BYTE:
- return 1;
- case GL_SHORT:
- case GL_UNSIGNED_SHORT:
- case GL_2_BYTES:
- return 2;
- case GL_3_BYTES:
- return 3;
- case GL_INT:
- case GL_UNSIGNED_INT:
- case GL_FLOAT:
- case GL_4_BYTES:
- return 4;
- default: return 0;
+ switch (e) {
+ case GL_BYTE:
+ case GL_UNSIGNED_BYTE:
+ return 1;
+ case GL_SHORT:
+ case GL_UNSIGNED_SHORT:
+ case GL_2_BYTES:
+ return 2;
+ case GL_3_BYTES:
+ return 3;
+ case GL_INT:
+ case GL_UNSIGNED_INT:
+ case GL_FLOAT:
+ case GL_4_BYTES:
+ return 4;
+ default:
+ return 0;
}
}
INTERNAL PURE FASTCALL GLint
-__glFogfv_size( GLenum e )
+__glFogfv_size(GLenum e)
{
- switch( e ) {
- case GL_FOG_INDEX:
- case GL_FOG_DENSITY:
- case GL_FOG_START:
- case GL_FOG_END:
- case GL_FOG_MODE:
- case GL_FOG_OFFSET_VALUE_SGIX:
- case GL_FOG_DISTANCE_MODE_NV:
- return 1;
- case GL_FOG_COLOR:
- return 4;
- default: return 0;
+ switch (e) {
+ case GL_FOG_INDEX:
+ case GL_FOG_DENSITY:
+ case GL_FOG_START:
+ case GL_FOG_END:
+ case GL_FOG_MODE:
+ case GL_FOG_OFFSET_VALUE_SGIX:
+ case GL_FOG_DISTANCE_MODE_NV:
+ return 1;
+ case GL_FOG_COLOR:
+ return 4;
+ default:
+ return 0;
}
}
INTERNAL PURE FASTCALL GLint
-__glLightfv_size( GLenum e )
+__glLightfv_size(GLenum e)
{
- switch( e ) {
- case GL_SPOT_EXPONENT:
- case GL_SPOT_CUTOFF:
- case GL_CONSTANT_ATTENUATION:
- case GL_LINEAR_ATTENUATION:
- case GL_QUADRATIC_ATTENUATION:
- return 1;
- case GL_SPOT_DIRECTION:
- return 3;
- case GL_AMBIENT:
- case GL_DIFFUSE:
- case GL_SPECULAR:
- case GL_POSITION:
- return 4;
- default: return 0;
+ switch (e) {
+ case GL_SPOT_EXPONENT:
+ case GL_SPOT_CUTOFF:
+ case GL_CONSTANT_ATTENUATION:
+ case GL_LINEAR_ATTENUATION:
+ case GL_QUADRATIC_ATTENUATION:
+ return 1;
+ case GL_SPOT_DIRECTION:
+ return 3;
+ case GL_AMBIENT:
+ case GL_DIFFUSE:
+ case GL_SPECULAR:
+ case GL_POSITION:
+ return 4;
+ default:
+ return 0;
}
}
INTERNAL PURE FASTCALL GLint
-__glLightModelfv_size( GLenum e )
+__glLightModelfv_size(GLenum e)
{
- switch( e ) {
- case GL_LIGHT_MODEL_LOCAL_VIEWER:
- case GL_LIGHT_MODEL_TWO_SIDE:
- case GL_LIGHT_MODEL_COLOR_CONTROL:
+ switch (e) {
+ case GL_LIGHT_MODEL_LOCAL_VIEWER:
+ case GL_LIGHT_MODEL_TWO_SIDE:
+ case GL_LIGHT_MODEL_COLOR_CONTROL:
/* case GL_LIGHT_MODEL_COLOR_CONTROL_EXT:*/
- return 1;
- case GL_LIGHT_MODEL_AMBIENT:
- return 4;
- default: return 0;
+ return 1;
+ case GL_LIGHT_MODEL_AMBIENT:
+ return 4;
+ default:
+ return 0;
}
}
INTERNAL PURE FASTCALL GLint
-__glMaterialfv_size( GLenum e )
+__glMaterialfv_size(GLenum e)
{
- switch( e ) {
- case GL_SHININESS:
- return 1;
- case GL_COLOR_INDEXES:
- return 3;
- case GL_AMBIENT:
- case GL_DIFFUSE:
- case GL_SPECULAR:
- case GL_EMISSION:
- case GL_AMBIENT_AND_DIFFUSE:
- return 4;
- default: return 0;
+ switch (e) {
+ case GL_SHININESS:
+ return 1;
+ case GL_COLOR_INDEXES:
+ return 3;
+ case GL_AMBIENT:
+ case GL_DIFFUSE:
+ case GL_SPECULAR:
+ case GL_EMISSION:
+ case GL_AMBIENT_AND_DIFFUSE:
+ return 4;
+ default:
+ return 0;
}
}
INTERNAL PURE FASTCALL GLint
-__glTexParameterfv_size( GLenum e )
+__glTexParameterfv_size(GLenum e)
{
- switch( e ) {
- case GL_TEXTURE_MAG_FILTER:
- case GL_TEXTURE_MIN_FILTER:
- case GL_TEXTURE_WRAP_S:
- case GL_TEXTURE_WRAP_T:
- case GL_TEXTURE_PRIORITY:
- case GL_TEXTURE_WRAP_R:
- case GL_TEXTURE_COMPARE_FAIL_VALUE_ARB:
+ switch (e) {
+ case GL_TEXTURE_MAG_FILTER:
+ case GL_TEXTURE_MIN_FILTER:
+ case GL_TEXTURE_WRAP_S:
+ case GL_TEXTURE_WRAP_T:
+ case GL_TEXTURE_PRIORITY:
+ case GL_TEXTURE_WRAP_R:
+ case GL_TEXTURE_COMPARE_FAIL_VALUE_ARB:
/* case GL_SHADOW_AMBIENT_SGIX:*/
- case GL_TEXTURE_MIN_LOD:
- case GL_TEXTURE_MAX_LOD:
- case GL_TEXTURE_BASE_LEVEL:
- case GL_TEXTURE_MAX_LEVEL:
- case GL_TEXTURE_CLIPMAP_FRAME_SGIX:
- case GL_TEXTURE_LOD_BIAS_S_SGIX:
- case GL_TEXTURE_LOD_BIAS_T_SGIX:
- case GL_TEXTURE_LOD_BIAS_R_SGIX:
- case GL_GENERATE_MIPMAP:
+ case GL_TEXTURE_MIN_LOD:
+ case GL_TEXTURE_MAX_LOD:
+ case GL_TEXTURE_BASE_LEVEL:
+ case GL_TEXTURE_MAX_LEVEL:
+ case GL_TEXTURE_CLIPMAP_FRAME_SGIX:
+ case GL_TEXTURE_LOD_BIAS_S_SGIX:
+ case GL_TEXTURE_LOD_BIAS_T_SGIX:
+ case GL_TEXTURE_LOD_BIAS_R_SGIX:
+ case GL_GENERATE_MIPMAP:
/* case GL_GENERATE_MIPMAP_SGIS:*/
- case GL_TEXTURE_COMPARE_SGIX:
- case GL_TEXTURE_COMPARE_OPERATOR_SGIX:
- case GL_TEXTURE_MAX_CLAMP_S_SGIX:
- case GL_TEXTURE_MAX_CLAMP_T_SGIX:
- case GL_TEXTURE_MAX_CLAMP_R_SGIX:
- case GL_TEXTURE_MAX_ANISOTROPY_EXT:
- case GL_TEXTURE_LOD_BIAS:
+ case GL_TEXTURE_COMPARE_SGIX:
+ case GL_TEXTURE_COMPARE_OPERATOR_SGIX:
+ case GL_TEXTURE_MAX_CLAMP_S_SGIX:
+ case GL_TEXTURE_MAX_CLAMP_T_SGIX:
+ case GL_TEXTURE_MAX_CLAMP_R_SGIX:
+ case GL_TEXTURE_MAX_ANISOTROPY_EXT:
+ case GL_TEXTURE_LOD_BIAS:
/* case GL_TEXTURE_LOD_BIAS_EXT:*/
- case GL_DEPTH_TEXTURE_MODE:
+ case GL_DEPTH_TEXTURE_MODE:
/* case GL_DEPTH_TEXTURE_MODE_ARB:*/
- case GL_TEXTURE_COMPARE_MODE:
+ case GL_TEXTURE_COMPARE_MODE:
/* case GL_TEXTURE_COMPARE_MODE_ARB:*/
- case GL_TEXTURE_COMPARE_FUNC:
+ case GL_TEXTURE_COMPARE_FUNC:
/* case GL_TEXTURE_COMPARE_FUNC_ARB:*/
- case GL_TEXTURE_UNSIGNED_REMAP_MODE_NV:
- return 1;
- case GL_TEXTURE_CLIPMAP_CENTER_SGIX:
- case GL_TEXTURE_CLIPMAP_OFFSET_SGIX:
- return 2;
- case GL_TEXTURE_CLIPMAP_VIRTUAL_DEPTH_SGIX:
- return 3;
- case GL_TEXTURE_BORDER_COLOR:
- case GL_POST_TEXTURE_FILTER_BIAS_SGIX:
- case GL_POST_TEXTURE_FILTER_SCALE_SGIX:
- return 4;
- default: return 0;
+ case GL_TEXTURE_UNSIGNED_REMAP_MODE_NV:
+ return 1;
+ case GL_TEXTURE_CLIPMAP_CENTER_SGIX:
+ case GL_TEXTURE_CLIPMAP_OFFSET_SGIX:
+ return 2;
+ case GL_TEXTURE_CLIPMAP_VIRTUAL_DEPTH_SGIX:
+ return 3;
+ case GL_TEXTURE_BORDER_COLOR:
+ case GL_POST_TEXTURE_FILTER_BIAS_SGIX:
+ case GL_POST_TEXTURE_FILTER_SCALE_SGIX:
+ return 4;
+ default:
+ return 0;
}
}
INTERNAL PURE FASTCALL GLint
-__glTexEnvfv_size( GLenum e )
+__glTexEnvfv_size(GLenum e)
{
- switch( e ) {
- case GL_ALPHA_SCALE:
- case GL_TEXTURE_ENV_MODE:
- case GL_TEXTURE_LOD_BIAS:
- case GL_COMBINE_RGB:
- case GL_COMBINE_ALPHA:
- case GL_RGB_SCALE:
- case GL_SOURCE0_RGB:
- case GL_SOURCE1_RGB:
- case GL_SOURCE2_RGB:
- case GL_SOURCE3_RGB_NV:
- case GL_SOURCE0_ALPHA:
- case GL_SOURCE1_ALPHA:
- case GL_SOURCE2_ALPHA:
- case GL_SOURCE3_ALPHA_NV:
- case GL_OPERAND0_RGB:
- case GL_OPERAND1_RGB:
- case GL_OPERAND2_RGB:
- case GL_OPERAND3_RGB_NV:
- case GL_OPERAND0_ALPHA:
- case GL_OPERAND1_ALPHA:
- case GL_OPERAND2_ALPHA:
- case GL_OPERAND3_ALPHA_NV:
- case GL_COORD_REPLACE_ARB:
+ switch (e) {
+ case GL_ALPHA_SCALE:
+ case GL_TEXTURE_ENV_MODE:
+ case GL_TEXTURE_LOD_BIAS:
+ case GL_COMBINE_RGB:
+ case GL_COMBINE_ALPHA:
+ case GL_RGB_SCALE:
+ case GL_SOURCE0_RGB:
+ case GL_SOURCE1_RGB:
+ case GL_SOURCE2_RGB:
+ case GL_SOURCE3_RGB_NV:
+ case GL_SOURCE0_ALPHA:
+ case GL_SOURCE1_ALPHA:
+ case GL_SOURCE2_ALPHA:
+ case GL_SOURCE3_ALPHA_NV:
+ case GL_OPERAND0_RGB:
+ case GL_OPERAND1_RGB:
+ case GL_OPERAND2_RGB:
+ case GL_OPERAND3_RGB_NV:
+ case GL_OPERAND0_ALPHA:
+ case GL_OPERAND1_ALPHA:
+ case GL_OPERAND2_ALPHA:
+ case GL_OPERAND3_ALPHA_NV:
+ case GL_COORD_REPLACE_ARB:
/* case GL_COORD_REPLACE_NV:*/
- return 1;
- case GL_TEXTURE_ENV_COLOR:
- return 4;
- default: return 0;
+ return 1;
+ case GL_TEXTURE_ENV_COLOR:
+ return 4;
+ default:
+ return 0;
}
}
INTERNAL PURE FASTCALL GLint
-__glTexGendv_size( GLenum e )
+__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;
+ switch (e) {
+ case GL_TEXTURE_GEN_MODE:
+ return 1;
+ case GL_OBJECT_PLANE:
+ case GL_EYE_PLANE:
+ return 4;
+ default:
+ return 0;
}
}
INTERNAL PURE FASTCALL GLint
-__glMap1d_size( GLenum e )
+__glMap1d_size(GLenum e)
{
- switch( e ) {
- case GL_MAP1_INDEX:
- case GL_MAP1_TEXTURE_COORD_1:
- return 1;
- case GL_MAP1_TEXTURE_COORD_2:
- return 2;
- case GL_MAP1_NORMAL:
- case GL_MAP1_TEXTURE_COORD_3:
- case GL_MAP1_VERTEX_3:
- return 3;
- case GL_MAP1_COLOR_4:
- case GL_MAP1_TEXTURE_COORD_4:
- case GL_MAP1_VERTEX_4:
- return 4;
- default: return 0;
+ switch (e) {
+ case GL_MAP1_INDEX:
+ case GL_MAP1_TEXTURE_COORD_1:
+ return 1;
+ case GL_MAP1_TEXTURE_COORD_2:
+ return 2;
+ case GL_MAP1_NORMAL:
+ case GL_MAP1_TEXTURE_COORD_3:
+ case GL_MAP1_VERTEX_3:
+ return 3;
+ case GL_MAP1_COLOR_4:
+ case GL_MAP1_TEXTURE_COORD_4:
+ case GL_MAP1_VERTEX_4:
+ return 4;
+ default:
+ return 0;
}
}
INTERNAL PURE FASTCALL GLint
-__glMap2d_size( GLenum e )
+__glMap2d_size(GLenum e)
{
- switch( e ) {
- case GL_MAP2_INDEX:
- case GL_MAP2_TEXTURE_COORD_1:
- return 1;
- case GL_MAP2_TEXTURE_COORD_2:
- return 2;
- case GL_MAP2_NORMAL:
- case GL_MAP2_TEXTURE_COORD_3:
- case GL_MAP2_VERTEX_3:
- return 3;
- case GL_MAP2_COLOR_4:
- case GL_MAP2_TEXTURE_COORD_4:
- case GL_MAP2_VERTEX_4:
- return 4;
- default: return 0;
+ switch (e) {
+ case GL_MAP2_INDEX:
+ case GL_MAP2_TEXTURE_COORD_1:
+ return 1;
+ case GL_MAP2_TEXTURE_COORD_2:
+ return 2;
+ case GL_MAP2_NORMAL:
+ case GL_MAP2_TEXTURE_COORD_3:
+ case GL_MAP2_VERTEX_3:
+ return 3;
+ case GL_MAP2_COLOR_4:
+ case GL_MAP2_TEXTURE_COORD_4:
+ case GL_MAP2_VERTEX_4:
+ return 4;
+ default:
+ return 0;
}
}
INTERNAL PURE FASTCALL GLint
-__glGetBooleanv_size( GLenum e )
+__glGetBooleanv_size(GLenum e)
{
- switch( e ) {
- case GL_CURRENT_INDEX:
- case GL_CURRENT_RASTER_INDEX:
- case GL_CURRENT_RASTER_POSITION_VALID:
- case GL_CURRENT_RASTER_DISTANCE:
- case GL_POINT_SMOOTH:
- case GL_POINT_SIZE:
- case GL_SMOOTH_POINT_SIZE_GRANULARITY:
- case GL_LINE_SMOOTH:
- case GL_LINE_WIDTH:
- case GL_LINE_WIDTH_GRANULARITY:
- case GL_LINE_STIPPLE:
- case GL_LINE_STIPPLE_PATTERN:
- case GL_LINE_STIPPLE_REPEAT:
- case GL_LIST_MODE:
- case GL_MAX_LIST_NESTING:
- case GL_LIST_BASE:
- case GL_LIST_INDEX:
- case GL_POLYGON_SMOOTH:
- case GL_POLYGON_STIPPLE:
- case GL_EDGE_FLAG:
- case GL_CULL_FACE:
- case GL_CULL_FACE_MODE:
- case GL_FRONT_FACE:
- case GL_LIGHTING:
- case GL_LIGHT_MODEL_LOCAL_VIEWER:
- case GL_LIGHT_MODEL_TWO_SIDE:
- case GL_SHADE_MODEL:
- case GL_COLOR_MATERIAL_FACE:
- case GL_COLOR_MATERIAL_PARAMETER:
- case GL_COLOR_MATERIAL:
- case GL_FOG:
- case GL_FOG_INDEX:
- case GL_FOG_DENSITY:
- case GL_FOG_START:
- case GL_FOG_END:
- case GL_FOG_MODE:
- case GL_DEPTH_TEST:
- case GL_DEPTH_WRITEMASK:
- case GL_DEPTH_CLEAR_VALUE:
- case GL_DEPTH_FUNC:
- case GL_STENCIL_TEST:
- case GL_STENCIL_CLEAR_VALUE:
- case GL_STENCIL_FUNC:
- case GL_STENCIL_VALUE_MASK:
- case GL_STENCIL_FAIL:
- case GL_STENCIL_PASS_DEPTH_FAIL:
- case GL_STENCIL_PASS_DEPTH_PASS:
- case GL_STENCIL_REF:
- case GL_STENCIL_WRITEMASK:
- case GL_MATRIX_MODE:
- case GL_NORMALIZE:
- case GL_MODELVIEW_STACK_DEPTH:
- case GL_PROJECTION_STACK_DEPTH:
- case GL_TEXTURE_STACK_DEPTH:
- case GL_ATTRIB_STACK_DEPTH:
- case GL_ALPHA_TEST:
- case GL_ALPHA_TEST_FUNC:
- case GL_ALPHA_TEST_REF:
- case GL_DITHER:
- case GL_BLEND_DST:
- case GL_BLEND_SRC:
- case GL_BLEND:
- case GL_LOGIC_OP_MODE:
- case GL_LOGIC_OP:
- case GL_AUX_BUFFERS:
- case GL_DRAW_BUFFER:
- case GL_READ_BUFFER:
- case GL_SCISSOR_TEST:
- case GL_INDEX_CLEAR_VALUE:
- case GL_INDEX_WRITEMASK:
- case GL_INDEX_MODE:
- case GL_RGBA_MODE:
- case GL_DOUBLEBUFFER:
- case GL_STEREO:
- case GL_RENDER_MODE:
- case GL_PERSPECTIVE_CORRECTION_HINT:
- case GL_POINT_SMOOTH_HINT:
- case GL_LINE_SMOOTH_HINT:
- case GL_POLYGON_SMOOTH_HINT:
- case GL_FOG_HINT:
- case GL_TEXTURE_GEN_S:
- case GL_TEXTURE_GEN_T:
- case GL_TEXTURE_GEN_R:
- case GL_TEXTURE_GEN_Q:
- case GL_PIXEL_MAP_I_TO_I:
- case GL_PIXEL_MAP_I_TO_I_SIZE:
- case GL_PIXEL_MAP_S_TO_S_SIZE:
- case GL_PIXEL_MAP_I_TO_R_SIZE:
- case GL_PIXEL_MAP_I_TO_G_SIZE:
- case GL_PIXEL_MAP_I_TO_B_SIZE:
- case GL_PIXEL_MAP_I_TO_A_SIZE:
- case GL_PIXEL_MAP_R_TO_R_SIZE:
- case GL_PIXEL_MAP_G_TO_G_SIZE:
- case GL_PIXEL_MAP_B_TO_B_SIZE:
- case GL_PIXEL_MAP_A_TO_A_SIZE:
- case GL_UNPACK_SWAP_BYTES:
- case GL_UNPACK_LSB_FIRST:
- case GL_UNPACK_ROW_LENGTH:
- case GL_UNPACK_SKIP_ROWS:
- case GL_UNPACK_SKIP_PIXELS:
- case GL_UNPACK_ALIGNMENT:
- case GL_PACK_SWAP_BYTES:
- case GL_PACK_LSB_FIRST:
- case GL_PACK_ROW_LENGTH:
- case GL_PACK_SKIP_ROWS:
- case GL_PACK_SKIP_PIXELS:
- case GL_PACK_ALIGNMENT:
- case GL_MAP_COLOR:
- case GL_MAP_STENCIL:
- case GL_INDEX_SHIFT:
- case GL_INDEX_OFFSET:
- case GL_RED_SCALE:
- case GL_RED_BIAS:
- case GL_ZOOM_X:
- case GL_ZOOM_Y:
- case GL_GREEN_SCALE:
- case GL_GREEN_BIAS:
- case GL_BLUE_SCALE:
- case GL_BLUE_BIAS:
- case GL_ALPHA_SCALE:
- case GL_ALPHA_BIAS:
- case GL_DEPTH_SCALE:
- case GL_DEPTH_BIAS:
- case GL_MAX_EVAL_ORDER:
- case GL_MAX_LIGHTS:
- case GL_MAX_CLIP_PLANES:
- case GL_MAX_TEXTURE_SIZE:
- case GL_MAX_PIXEL_MAP_TABLE:
- case GL_MAX_ATTRIB_STACK_DEPTH:
- case GL_MAX_MODELVIEW_STACK_DEPTH:
- case GL_MAX_NAME_STACK_DEPTH:
- case GL_MAX_PROJECTION_STACK_DEPTH:
- case GL_MAX_TEXTURE_STACK_DEPTH:
- case GL_SUBPIXEL_BITS:
- case GL_INDEX_BITS:
- case GL_RED_BITS:
- case GL_GREEN_BITS:
- case GL_BLUE_BITS:
- case GL_ALPHA_BITS:
- case GL_DEPTH_BITS:
- case GL_STENCIL_BITS:
- case GL_ACCUM_RED_BITS:
- case GL_ACCUM_GREEN_BITS:
- case GL_ACCUM_BLUE_BITS:
- case GL_ACCUM_ALPHA_BITS:
- case GL_NAME_STACK_DEPTH:
- case GL_AUTO_NORMAL:
- case GL_MAP1_COLOR_4:
- case GL_MAP1_INDEX:
- case GL_MAP1_NORMAL:
- case GL_MAP1_TEXTURE_COORD_1:
- case GL_MAP1_TEXTURE_COORD_2:
- case GL_MAP1_TEXTURE_COORD_3:
- case GL_MAP1_TEXTURE_COORD_4:
- case GL_MAP1_VERTEX_3:
- case GL_MAP1_VERTEX_4:
- case GL_MAP2_COLOR_4:
- case GL_MAP2_INDEX:
- case GL_MAP2_NORMAL:
- case GL_MAP2_TEXTURE_COORD_1:
- case GL_MAP2_TEXTURE_COORD_2:
- case GL_MAP2_TEXTURE_COORD_3:
- case GL_MAP2_TEXTURE_COORD_4:
- case GL_MAP2_VERTEX_3:
- case GL_MAP2_VERTEX_4:
- case GL_MAP1_GRID_SEGMENTS:
- case GL_TEXTURE_1D:
- case GL_TEXTURE_2D:
- case GL_POLYGON_OFFSET_UNITS:
- case GL_CLIP_PLANE0:
- case GL_CLIP_PLANE1:
- case GL_CLIP_PLANE2:
- case GL_CLIP_PLANE3:
- case GL_CLIP_PLANE4:
- case GL_CLIP_PLANE5:
- case GL_LIGHT0:
- case GL_LIGHT1:
- case GL_LIGHT2:
- case GL_LIGHT3:
- case GL_LIGHT4:
- case GL_LIGHT5:
- case GL_LIGHT6:
- case GL_LIGHT7:
- case GL_BLEND_EQUATION:
+ switch (e) {
+ case GL_CURRENT_INDEX:
+ case GL_CURRENT_RASTER_INDEX:
+ case GL_CURRENT_RASTER_POSITION_VALID:
+ case GL_CURRENT_RASTER_DISTANCE:
+ case GL_POINT_SMOOTH:
+ case GL_POINT_SIZE:
+ case GL_SMOOTH_POINT_SIZE_GRANULARITY:
+ case GL_LINE_SMOOTH:
+ case GL_LINE_WIDTH:
+ case GL_LINE_WIDTH_GRANULARITY:
+ case GL_LINE_STIPPLE:
+ case GL_LINE_STIPPLE_PATTERN:
+ case GL_LINE_STIPPLE_REPEAT:
+ case GL_LIST_MODE:
+ case GL_MAX_LIST_NESTING:
+ case GL_LIST_BASE:
+ case GL_LIST_INDEX:
+ case GL_POLYGON_SMOOTH:
+ case GL_POLYGON_STIPPLE:
+ case GL_EDGE_FLAG:
+ case GL_CULL_FACE:
+ case GL_CULL_FACE_MODE:
+ case GL_FRONT_FACE:
+ case GL_LIGHTING:
+ case GL_LIGHT_MODEL_LOCAL_VIEWER:
+ case GL_LIGHT_MODEL_TWO_SIDE:
+ case GL_SHADE_MODEL:
+ case GL_COLOR_MATERIAL_FACE:
+ case GL_COLOR_MATERIAL_PARAMETER:
+ case GL_COLOR_MATERIAL:
+ case GL_FOG:
+ case GL_FOG_INDEX:
+ case GL_FOG_DENSITY:
+ case GL_FOG_START:
+ case GL_FOG_END:
+ case GL_FOG_MODE:
+ case GL_DEPTH_TEST:
+ case GL_DEPTH_WRITEMASK:
+ case GL_DEPTH_CLEAR_VALUE:
+ case GL_DEPTH_FUNC:
+ case GL_STENCIL_TEST:
+ case GL_STENCIL_CLEAR_VALUE:
+ case GL_STENCIL_FUNC:
+ case GL_STENCIL_VALUE_MASK:
+ case GL_STENCIL_FAIL:
+ case GL_STENCIL_PASS_DEPTH_FAIL:
+ case GL_STENCIL_PASS_DEPTH_PASS:
+ case GL_STENCIL_REF:
+ case GL_STENCIL_WRITEMASK:
+ case GL_MATRIX_MODE:
+ case GL_NORMALIZE:
+ case GL_MODELVIEW_STACK_DEPTH:
+ case GL_PROJECTION_STACK_DEPTH:
+ case GL_TEXTURE_STACK_DEPTH:
+ case GL_ATTRIB_STACK_DEPTH:
+ case GL_ALPHA_TEST:
+ case GL_ALPHA_TEST_FUNC:
+ case GL_ALPHA_TEST_REF:
+ case GL_DITHER:
+ case GL_BLEND_DST:
+ case GL_BLEND_SRC:
+ case GL_BLEND:
+ case GL_LOGIC_OP_MODE:
+ case GL_LOGIC_OP:
+ case GL_AUX_BUFFERS:
+ case GL_DRAW_BUFFER:
+ case GL_READ_BUFFER:
+ case GL_SCISSOR_TEST:
+ case GL_INDEX_CLEAR_VALUE:
+ case GL_INDEX_WRITEMASK:
+ case GL_INDEX_MODE:
+ case GL_RGBA_MODE:
+ case GL_DOUBLEBUFFER:
+ case GL_STEREO:
+ case GL_RENDER_MODE:
+ case GL_PERSPECTIVE_CORRECTION_HINT:
+ case GL_POINT_SMOOTH_HINT:
+ case GL_LINE_SMOOTH_HINT:
+ case GL_POLYGON_SMOOTH_HINT:
+ case GL_FOG_HINT:
+ case GL_TEXTURE_GEN_S:
+ case GL_TEXTURE_GEN_T:
+ case GL_TEXTURE_GEN_R:
+ case GL_TEXTURE_GEN_Q:
+ case GL_PIXEL_MAP_I_TO_I:
+ case GL_PIXEL_MAP_I_TO_I_SIZE:
+ case GL_PIXEL_MAP_S_TO_S_SIZE:
+ case GL_PIXEL_MAP_I_TO_R_SIZE:
+ case GL_PIXEL_MAP_I_TO_G_SIZE:
+ case GL_PIXEL_MAP_I_TO_B_SIZE:
+ case GL_PIXEL_MAP_I_TO_A_SIZE:
+ case GL_PIXEL_MAP_R_TO_R_SIZE:
+ case GL_PIXEL_MAP_G_TO_G_SIZE:
+ case GL_PIXEL_MAP_B_TO_B_SIZE:
+ case GL_PIXEL_MAP_A_TO_A_SIZE:
+ case GL_UNPACK_SWAP_BYTES:
+ case GL_UNPACK_LSB_FIRST:
+ case GL_UNPACK_ROW_LENGTH:
+ case GL_UNPACK_SKIP_ROWS:
+ case GL_UNPACK_SKIP_PIXELS:
+ case GL_UNPACK_ALIGNMENT:
+ case GL_PACK_SWAP_BYTES:
+ case GL_PACK_LSB_FIRST:
+ case GL_PACK_ROW_LENGTH:
+ case GL_PACK_SKIP_ROWS:
+ case GL_PACK_SKIP_PIXELS:
+ case GL_PACK_ALIGNMENT:
+ case GL_MAP_COLOR:
+ case GL_MAP_STENCIL:
+ case GL_INDEX_SHIFT:
+ case GL_INDEX_OFFSET:
+ case GL_RED_SCALE:
+ case GL_RED_BIAS:
+ case GL_ZOOM_X:
+ case GL_ZOOM_Y:
+ case GL_GREEN_SCALE:
+ case GL_GREEN_BIAS:
+ case GL_BLUE_SCALE:
+ case GL_BLUE_BIAS:
+ case GL_ALPHA_SCALE:
+ case GL_ALPHA_BIAS:
+ case GL_DEPTH_SCALE:
+ case GL_DEPTH_BIAS:
+ case GL_MAX_EVAL_ORDER:
+ case GL_MAX_LIGHTS:
+ case GL_MAX_CLIP_PLANES:
+ case GL_MAX_TEXTURE_SIZE:
+ case GL_MAX_PIXEL_MAP_TABLE:
+ case GL_MAX_ATTRIB_STACK_DEPTH:
+ case GL_MAX_MODELVIEW_STACK_DEPTH:
+ case GL_MAX_NAME_STACK_DEPTH:
+ case GL_MAX_PROJECTION_STACK_DEPTH:
+ case GL_MAX_TEXTURE_STACK_DEPTH:
+ case GL_SUBPIXEL_BITS:
+ case GL_INDEX_BITS:
+ case GL_RED_BITS:
+ case GL_GREEN_BITS:
+ case GL_BLUE_BITS:
+ case GL_ALPHA_BITS:
+ case GL_DEPTH_BITS:
+ case GL_STENCIL_BITS:
+ case GL_ACCUM_RED_BITS:
+ case GL_ACCUM_GREEN_BITS:
+ case GL_ACCUM_BLUE_BITS:
+ case GL_ACCUM_ALPHA_BITS:
+ case GL_NAME_STACK_DEPTH:
+ case GL_AUTO_NORMAL:
+ case GL_MAP1_COLOR_4:
+ case GL_MAP1_INDEX:
+ case GL_MAP1_NORMAL:
+ case GL_MAP1_TEXTURE_COORD_1:
+ case GL_MAP1_TEXTURE_COORD_2:
+ case GL_MAP1_TEXTURE_COORD_3:
+ case GL_MAP1_TEXTURE_COORD_4:
+ case GL_MAP1_VERTEX_3:
+ case GL_MAP1_VERTEX_4:
+ case GL_MAP2_COLOR_4:
+ case GL_MAP2_INDEX:
+ case GL_MAP2_NORMAL:
+ case GL_MAP2_TEXTURE_COORD_1:
+ case GL_MAP2_TEXTURE_COORD_2:
+ case GL_MAP2_TEXTURE_COORD_3:
+ case GL_MAP2_TEXTURE_COORD_4:
+ case GL_MAP2_VERTEX_3:
+ case GL_MAP2_VERTEX_4:
+ case GL_MAP1_GRID_SEGMENTS:
+ case GL_TEXTURE_1D:
+ case GL_TEXTURE_2D:
+ case GL_POLYGON_OFFSET_UNITS:
+ case GL_CLIP_PLANE0:
+ case GL_CLIP_PLANE1:
+ case GL_CLIP_PLANE2:
+ case GL_CLIP_PLANE3:
+ case GL_CLIP_PLANE4:
+ case GL_CLIP_PLANE5:
+ case GL_LIGHT0:
+ case GL_LIGHT1:
+ case GL_LIGHT2:
+ case GL_LIGHT3:
+ case GL_LIGHT4:
+ case GL_LIGHT5:
+ case GL_LIGHT6:
+ case GL_LIGHT7:
+ case GL_BLEND_EQUATION:
/* case GL_BLEND_EQUATION_EXT:*/
- case GL_CONVOLUTION_1D:
- case GL_CONVOLUTION_2D:
- case GL_SEPARABLE_2D:
- case GL_MAX_CONVOLUTION_WIDTH:
+ case GL_CONVOLUTION_1D:
+ case GL_CONVOLUTION_2D:
+ case GL_SEPARABLE_2D:
+ case GL_MAX_CONVOLUTION_WIDTH:
/* case GL_MAX_CONVOLUTION_WIDTH_EXT:*/
- case GL_MAX_CONVOLUTION_HEIGHT:
+ case GL_MAX_CONVOLUTION_HEIGHT:
/* case GL_MAX_CONVOLUTION_HEIGHT_EXT:*/
- case GL_POST_CONVOLUTION_RED_SCALE:
+ case GL_POST_CONVOLUTION_RED_SCALE:
/* case GL_POST_CONVOLUTION_RED_SCALE_EXT:*/
- case GL_POST_CONVOLUTION_GREEN_SCALE:
+ case GL_POST_CONVOLUTION_GREEN_SCALE:
/* case GL_POST_CONVOLUTION_GREEN_SCALE_EXT:*/
- case GL_POST_CONVOLUTION_BLUE_SCALE:
+ case GL_POST_CONVOLUTION_BLUE_SCALE:
/* case GL_POST_CONVOLUTION_BLUE_SCALE_EXT:*/
- case GL_POST_CONVOLUTION_ALPHA_SCALE:
+ case GL_POST_CONVOLUTION_ALPHA_SCALE:
/* case GL_POST_CONVOLUTION_ALPHA_SCALE_EXT:*/
- case GL_POST_CONVOLUTION_RED_BIAS:
+ case GL_POST_CONVOLUTION_RED_BIAS:
/* case GL_POST_CONVOLUTION_RED_BIAS_EXT:*/
- case GL_POST_CONVOLUTION_GREEN_BIAS:
+ case GL_POST_CONVOLUTION_GREEN_BIAS:
/* case GL_POST_CONVOLUTION_GREEN_BIAS_EXT:*/
- case GL_POST_CONVOLUTION_BLUE_BIAS:
+ case GL_POST_CONVOLUTION_BLUE_BIAS:
/* case GL_POST_CONVOLUTION_BLUE_BIAS_EXT:*/
- case GL_POST_CONVOLUTION_ALPHA_BIAS:
+ case GL_POST_CONVOLUTION_ALPHA_BIAS:
/* case GL_POST_CONVOLUTION_ALPHA_BIAS_EXT:*/
- case GL_HISTOGRAM:
- case GL_MINMAX:
- case GL_POLYGON_OFFSET_FACTOR:
- case GL_RESCALE_NORMAL:
+ case GL_HISTOGRAM:
+ case GL_MINMAX:
+ case GL_POLYGON_OFFSET_FACTOR:
+ case GL_RESCALE_NORMAL:
/* case GL_RESCALE_NORMAL_EXT:*/
- case GL_TEXTURE_BINDING_1D:
- case GL_TEXTURE_BINDING_2D:
- case GL_TEXTURE_BINDING_3D:
- case GL_PACK_SKIP_IMAGES:
- case GL_PACK_IMAGE_HEIGHT:
- case GL_UNPACK_SKIP_IMAGES:
- case GL_UNPACK_IMAGE_HEIGHT:
- case GL_TEXTURE_3D:
- case GL_VERTEX_ARRAY:
- case GL_NORMAL_ARRAY:
- case GL_COLOR_ARRAY:
- case GL_INDEX_ARRAY:
- case GL_TEXTURE_COORD_ARRAY:
- case GL_EDGE_FLAG_ARRAY:
- case GL_VERTEX_ARRAY_SIZE:
- case GL_VERTEX_ARRAY_TYPE:
- case GL_VERTEX_ARRAY_STRIDE:
- case GL_NORMAL_ARRAY_TYPE:
- case GL_NORMAL_ARRAY_STRIDE:
- case GL_COLOR_ARRAY_SIZE:
- case GL_COLOR_ARRAY_TYPE:
- case GL_COLOR_ARRAY_STRIDE:
- case GL_INDEX_ARRAY_TYPE:
- case GL_INDEX_ARRAY_STRIDE:
- case GL_TEXTURE_COORD_ARRAY_SIZE:
- case GL_TEXTURE_COORD_ARRAY_TYPE:
- case GL_TEXTURE_COORD_ARRAY_STRIDE:
- case GL_EDGE_FLAG_ARRAY_STRIDE:
- case GL_MULTISAMPLE:
+ case GL_TEXTURE_BINDING_1D:
+ case GL_TEXTURE_BINDING_2D:
+ case GL_TEXTURE_BINDING_3D:
+ case GL_PACK_SKIP_IMAGES:
+ case GL_PACK_IMAGE_HEIGHT:
+ case GL_UNPACK_SKIP_IMAGES:
+ case GL_UNPACK_IMAGE_HEIGHT:
+ case GL_TEXTURE_3D:
+ case GL_VERTEX_ARRAY:
+ case GL_NORMAL_ARRAY:
+ case GL_COLOR_ARRAY:
+ case GL_INDEX_ARRAY:
+ case GL_TEXTURE_COORD_ARRAY:
+ case GL_EDGE_FLAG_ARRAY:
+ case GL_VERTEX_ARRAY_SIZE:
+ case GL_VERTEX_ARRAY_TYPE:
+ case GL_VERTEX_ARRAY_STRIDE:
+ case GL_NORMAL_ARRAY_TYPE:
+ case GL_NORMAL_ARRAY_STRIDE:
+ case GL_COLOR_ARRAY_SIZE:
+ case GL_COLOR_ARRAY_TYPE:
+ case GL_COLOR_ARRAY_STRIDE:
+ case GL_INDEX_ARRAY_TYPE:
+ case GL_INDEX_ARRAY_STRIDE:
+ case GL_TEXTURE_COORD_ARRAY_SIZE:
+ case GL_TEXTURE_COORD_ARRAY_TYPE:
+ case GL_TEXTURE_COORD_ARRAY_STRIDE:
+ case GL_EDGE_FLAG_ARRAY_STRIDE:
+ case GL_MULTISAMPLE:
/* case GL_MULTISAMPLE_ARB:*/
- case GL_SAMPLE_ALPHA_TO_COVERAGE:
+ case GL_SAMPLE_ALPHA_TO_COVERAGE:
/* case GL_SAMPLE_ALPHA_TO_COVERAGE_ARB:*/
- case GL_SAMPLE_ALPHA_TO_ONE:
+ case GL_SAMPLE_ALPHA_TO_ONE:
/* case GL_SAMPLE_ALPHA_TO_ONE_ARB:*/
- case GL_SAMPLE_COVERAGE:
+ case GL_SAMPLE_COVERAGE:
/* case GL_SAMPLE_COVERAGE_ARB:*/
- case GL_SAMPLE_BUFFERS:
+ case GL_SAMPLE_BUFFERS:
/* case GL_SAMPLE_BUFFERS_ARB:*/
- case GL_SAMPLES:
+ case GL_SAMPLES:
/* case GL_SAMPLES_ARB:*/
- case GL_SAMPLE_COVERAGE_VALUE:
+ case GL_SAMPLE_COVERAGE_VALUE:
/* case GL_SAMPLE_COVERAGE_VALUE_ARB:*/
- case GL_SAMPLE_COVERAGE_INVERT:
+ case GL_SAMPLE_COVERAGE_INVERT:
/* case GL_SAMPLE_COVERAGE_INVERT_ARB:*/
- case GL_COLOR_MATRIX_STACK_DEPTH:
- case GL_MAX_COLOR_MATRIX_STACK_DEPTH:
- case GL_POST_COLOR_MATRIX_RED_SCALE:
- case GL_POST_COLOR_MATRIX_GREEN_SCALE:
- case GL_POST_COLOR_MATRIX_BLUE_SCALE:
- case GL_POST_COLOR_MATRIX_ALPHA_SCALE:
- case GL_POST_COLOR_MATRIX_RED_BIAS:
- case GL_POST_COLOR_MATRIX_GREEN_BIAS:
- case GL_POST_COLOR_MATRIX_BLUE_BIAS:
- case GL_POST_COLOR_MATRIX_ALPHA_BIAS:
- case GL_BLEND_DST_RGB:
- case GL_BLEND_SRC_RGB:
- case GL_BLEND_DST_ALPHA:
- case GL_BLEND_SRC_ALPHA:
- case GL_COLOR_TABLE:
- case GL_POST_CONVOLUTION_COLOR_TABLE:
- case GL_POST_COLOR_MATRIX_COLOR_TABLE:
- case GL_MAX_ELEMENTS_VERTICES:
- case GL_MAX_ELEMENTS_INDICES:
- case GL_CLIP_VOLUME_CLIPPING_HINT_EXT:
- case GL_OCCLUSION_TEST_HP:
- case GL_OCCLUSION_TEST_RESULT_HP:
- case GL_LIGHT_MODEL_COLOR_CONTROL:
- case GL_CURRENT_FOG_COORD:
- case GL_FOG_COORDINATE_ARRAY_TYPE:
- case GL_FOG_COORDINATE_ARRAY_STRIDE:
- case GL_FOG_COORD_ARRAY:
- case GL_COLOR_SUM_ARB:
- case GL_SECONDARY_COLOR_ARRAY_SIZE:
- case GL_SECONDARY_COLOR_ARRAY_TYPE:
- case GL_SECONDARY_COLOR_ARRAY_STRIDE:
- case GL_SECONDARY_COLOR_ARRAY:
- case GL_ACTIVE_TEXTURE:
+ case GL_COLOR_MATRIX_STACK_DEPTH:
+ case GL_MAX_COLOR_MATRIX_STACK_DEPTH:
+ case GL_POST_COLOR_MATRIX_RED_SCALE:
+ case GL_POST_COLOR_MATRIX_GREEN_SCALE:
+ case GL_POST_COLOR_MATRIX_BLUE_SCALE:
+ case GL_POST_COLOR_MATRIX_ALPHA_SCALE:
+ case GL_POST_COLOR_MATRIX_RED_BIAS:
+ case GL_POST_COLOR_MATRIX_GREEN_BIAS:
+ case GL_POST_COLOR_MATRIX_BLUE_BIAS:
+ case GL_POST_COLOR_MATRIX_ALPHA_BIAS:
+ case GL_BLEND_DST_RGB:
+ case GL_BLEND_SRC_RGB:
+ case GL_BLEND_DST_ALPHA:
+ case GL_BLEND_SRC_ALPHA:
+ case GL_COLOR_TABLE:
+ case GL_POST_CONVOLUTION_COLOR_TABLE:
+ case GL_POST_COLOR_MATRIX_COLOR_TABLE:
+ case GL_MAX_ELEMENTS_VERTICES:
+ case GL_MAX_ELEMENTS_INDICES:
+ case GL_CLIP_VOLUME_CLIPPING_HINT_EXT:
+ case GL_OCCLUSION_TEST_HP:
+ case GL_OCCLUSION_TEST_RESULT_HP:
+ case GL_LIGHT_MODEL_COLOR_CONTROL:
+ case GL_CURRENT_FOG_COORD:
+ case GL_FOG_COORDINATE_ARRAY_TYPE:
+ case GL_FOG_COORDINATE_ARRAY_STRIDE:
+ case GL_FOG_COORD_ARRAY:
+ case GL_COLOR_SUM_ARB:
+ case GL_SECONDARY_COLOR_ARRAY_SIZE:
+ case GL_SECONDARY_COLOR_ARRAY_TYPE:
+ case GL_SECONDARY_COLOR_ARRAY_STRIDE:
+ case GL_SECONDARY_COLOR_ARRAY:
+ case GL_ACTIVE_TEXTURE:
/* case GL_ACTIVE_TEXTURE_ARB:*/
- case GL_CLIENT_ACTIVE_TEXTURE:
+ case GL_CLIENT_ACTIVE_TEXTURE:
/* case GL_CLIENT_ACTIVE_TEXTURE_ARB:*/
- case GL_MAX_TEXTURE_UNITS:
+ case GL_MAX_TEXTURE_UNITS:
/* case GL_MAX_TEXTURE_UNITS_ARB:*/
- case GL_TEXTURE_COMPRESSION_HINT:
+ case GL_TEXTURE_COMPRESSION_HINT:
/* case GL_TEXTURE_COMPRESSION_HINT_ARB:*/
- case GL_TEXTURE_RECTANGLE_ARB:
+ case GL_TEXTURE_RECTANGLE_ARB:
/* case GL_TEXTURE_RECTANGLE_NV:*/
- case GL_TEXTURE_BINDING_RECTANGLE_ARB:
+ case GL_TEXTURE_BINDING_RECTANGLE_ARB:
/* case GL_TEXTURE_BINDING_RECTANGLE_NV:*/
- case GL_MAX_RECTANGLE_TEXTURE_SIZE_ARB:
+ case GL_MAX_RECTANGLE_TEXTURE_SIZE_ARB:
/* case GL_MAX_RECTANGLE_TEXTURE_SIZE_NV:*/
- case GL_MAX_TEXTURE_LOD_BIAS:
- case GL_MAX_SHININESS_NV:
- case GL_MAX_SPOT_EXPONENT_NV:
- case GL_TEXTURE_CUBE_MAP:
+ case GL_MAX_TEXTURE_LOD_BIAS:
+ case GL_MAX_TEXTURE_MAX_ANISOTROPY_EXT:
+ case GL_MAX_SHININESS_NV:
+ case GL_MAX_SPOT_EXPONENT_NV:
+ case GL_TEXTURE_CUBE_MAP:
/* case GL_TEXTURE_CUBE_MAP_ARB:*/
- case GL_TEXTURE_BINDING_CUBE_MAP:
+ case GL_TEXTURE_BINDING_CUBE_MAP:
/* case GL_TEXTURE_BINDING_CUBE_MAP_ARB:*/
- case GL_MAX_CUBE_MAP_TEXTURE_SIZE:
+ case GL_MAX_CUBE_MAP_TEXTURE_SIZE:
/* case GL_MAX_CUBE_MAP_TEXTURE_SIZE_ARB:*/
- case GL_MULTISAMPLE_FILTER_HINT_NV:
- case GL_FOG_DISTANCE_MODE_NV:
- case GL_VERTEX_PROGRAM_ARB:
- case GL_MAX_PROGRAM_MATRIX_STACK_DEPTH_ARB:
- case GL_MAX_PROGRAM_MATRICES_ARB:
- case GL_CURRENT_MATRIX_STACK_DEPTH_ARB:
- case GL_VERTEX_PROGRAM_POINT_SIZE_ARB:
- case GL_VERTEX_PROGRAM_TWO_SIDE_ARB:
- case GL_PROGRAM_ERROR_POSITION_ARB:
- case GL_DEPTH_CLAMP_NV:
- case GL_NUM_COMPRESSED_TEXTURE_FORMATS:
+ case GL_MULTISAMPLE_FILTER_HINT_NV:
+ case GL_FOG_DISTANCE_MODE_NV:
+ case GL_VERTEX_PROGRAM_ARB:
+ case GL_MAX_PROGRAM_MATRIX_STACK_DEPTH_ARB:
+ case GL_MAX_PROGRAM_MATRICES_ARB:
+ case GL_CURRENT_MATRIX_STACK_DEPTH_ARB:
+ case GL_VERTEX_PROGRAM_POINT_SIZE_ARB:
+ case GL_VERTEX_PROGRAM_TWO_SIDE_ARB:
+ case GL_PROGRAM_ERROR_POSITION_ARB:
+ case GL_DEPTH_CLAMP_NV:
+ case GL_NUM_COMPRESSED_TEXTURE_FORMATS:
/* case GL_NUM_TEXTURE_COMPRESSED_FORMATS_ARB:*/
- case GL_MAX_VERTEX_UNITS_ARB:
- case GL_ACTIVE_VERTEX_UNITS_ARB:
- case GL_WEIGHT_SUM_UNITY_ARB:
- case GL_VERTEX_BLEND_ARB:
- case GL_CURRENT_WEIGHT_ARB:
- case GL_WEIGHT_ARRAY_TYPE_ARB:
- case GL_WEIGHT_ARRAY_STRIDE_ARB:
- case GL_WEIGHT_ARRAY_SIZE_ARB:
- case GL_WEIGHT_ARRAY_ARB:
- case GL_PACK_INVERT_MESA:
- case GL_FRAGMENT_PROGRAM_ARB:
- case GL_MAX_DRAW_BUFFERS_ARB:
+ case GL_MAX_VERTEX_UNITS_ARB:
+ case GL_ACTIVE_VERTEX_UNITS_ARB:
+ case GL_WEIGHT_SUM_UNITY_ARB:
+ case GL_VERTEX_BLEND_ARB:
+ case GL_CURRENT_WEIGHT_ARB:
+ case GL_WEIGHT_ARRAY_TYPE_ARB:
+ case GL_WEIGHT_ARRAY_STRIDE_ARB:
+ case GL_WEIGHT_ARRAY_SIZE_ARB:
+ case GL_WEIGHT_ARRAY_ARB:
+ case GL_PACK_INVERT_MESA:
+ case GL_FRAGMENT_PROGRAM_ARB:
+ case GL_MAX_DRAW_BUFFERS_ARB:
/* case GL_MAX_DRAW_BUFFERS_ATI:*/
- case GL_DRAW_BUFFER0_ARB:
+ case GL_DRAW_BUFFER0_ARB:
/* case GL_DRAW_BUFFER0_ATI:*/
- case GL_DRAW_BUFFER1_ARB:
+ case GL_DRAW_BUFFER1_ARB:
/* case GL_DRAW_BUFFER1_ATI:*/
- case GL_DRAW_BUFFER2_ARB:
+ case GL_DRAW_BUFFER2_ARB:
/* case GL_DRAW_BUFFER2_ATI:*/
- case GL_DRAW_BUFFER3_ARB:
+ case GL_DRAW_BUFFER3_ARB:
/* case GL_DRAW_BUFFER3_ATI:*/
- case GL_DRAW_BUFFER4_ARB:
+ case GL_DRAW_BUFFER4_ARB:
/* case GL_DRAW_BUFFER4_ATI:*/
- case GL_DRAW_BUFFER5_ARB:
+ case GL_DRAW_BUFFER5_ARB:
/* case GL_DRAW_BUFFER5_ATI:*/
- case GL_DRAW_BUFFER6_ARB:
+ case GL_DRAW_BUFFER6_ARB:
/* case GL_DRAW_BUFFER6_ATI:*/
- case GL_DRAW_BUFFER7_ARB:
+ case GL_DRAW_BUFFER7_ARB:
/* case GL_DRAW_BUFFER7_ATI:*/
- case GL_DRAW_BUFFER8_ARB:
+ case GL_DRAW_BUFFER8_ARB:
/* case GL_DRAW_BUFFER8_ATI:*/
- case GL_DRAW_BUFFER9_ARB:
+ case GL_DRAW_BUFFER9_ARB:
/* case GL_DRAW_BUFFER9_ATI:*/
- case GL_DRAW_BUFFER10_ARB:
+ case GL_DRAW_BUFFER10_ARB:
/* case GL_DRAW_BUFFER10_ATI:*/
- case GL_DRAW_BUFFER11_ARB:
+ case GL_DRAW_BUFFER11_ARB:
/* case GL_DRAW_BUFFER11_ATI:*/
- case GL_DRAW_BUFFER12_ARB:
+ case GL_DRAW_BUFFER12_ARB:
/* case GL_DRAW_BUFFER12_ATI:*/
- case GL_DRAW_BUFFER13_ARB:
+ case GL_DRAW_BUFFER13_ARB:
/* case GL_DRAW_BUFFER13_ATI:*/
- case GL_DRAW_BUFFER14_ARB:
+ case GL_DRAW_BUFFER14_ARB:
/* case GL_DRAW_BUFFER14_ATI:*/
- case GL_DRAW_BUFFER15_ARB:
+ case GL_DRAW_BUFFER15_ARB:
/* case GL_DRAW_BUFFER15_ATI:*/
- case GL_BLEND_EQUATION_ALPHA_EXT:
- case GL_MATRIX_PALETTE_ARB:
- case GL_MAX_MATRIX_PALETTE_STACK_DEPTH_ARB:
- case GL_MAX_PALETTE_MATRICES_ARB:
- case GL_CURRENT_PALETTE_MATRIX_ARB:
- case GL_MATRIX_INDEX_ARRAY_ARB:
- case GL_CURRENT_MATRIX_INDEX_ARB:
- case GL_MATRIX_INDEX_ARRAY_SIZE_ARB:
- case GL_MATRIX_INDEX_ARRAY_TYPE_ARB:
- case GL_MATRIX_INDEX_ARRAY_STRIDE_ARB:
- case GL_POINT_SPRITE_ARB:
+ case GL_BLEND_EQUATION_ALPHA_EXT:
+ case GL_MATRIX_PALETTE_ARB:
+ case GL_MAX_MATRIX_PALETTE_STACK_DEPTH_ARB:
+ case GL_MAX_PALETTE_MATRICES_ARB:
+ case GL_CURRENT_PALETTE_MATRIX_ARB:
+ case GL_MATRIX_INDEX_ARRAY_ARB:
+ case GL_CURRENT_MATRIX_INDEX_ARB:
+ case GL_MATRIX_INDEX_ARRAY_SIZE_ARB:
+ case GL_MATRIX_INDEX_ARRAY_TYPE_ARB:
+ case GL_MATRIX_INDEX_ARRAY_STRIDE_ARB:
+ case GL_POINT_SPRITE_ARB:
/* case GL_POINT_SPRITE_NV:*/
- case GL_POINT_SPRITE_R_MODE_NV:
- case GL_MAX_VERTEX_ATTRIBS_ARB:
- case GL_DEPTH_BOUNDS_TEST_EXT:
- case GL_STENCIL_TEST_TWO_SIDE_EXT:
- case GL_ACTIVE_STENCIL_FACE_EXT:
- case GL_RASTER_POSITION_UNCLIPPED_IBM:
- return 1;
- case GL_SMOOTH_POINT_SIZE_RANGE:
- case GL_LINE_WIDTH_RANGE:
- case GL_POLYGON_MODE:
- case GL_DEPTH_RANGE:
- case GL_MAX_VIEWPORT_DIMS:
- case GL_MAP1_GRID_DOMAIN:
- case GL_MAP2_GRID_SEGMENTS:
- case GL_ALIASED_POINT_SIZE_RANGE:
- case GL_ALIASED_LINE_WIDTH_RANGE:
- case GL_DEPTH_BOUNDS_EXT:
- return 2;
- case GL_CURRENT_NORMAL:
- return 3;
- case GL_CURRENT_COLOR:
- case GL_CURRENT_TEXTURE_COORDS:
- case GL_CURRENT_RASTER_COLOR:
- case GL_CURRENT_RASTER_TEXTURE_COORDS:
- case GL_CURRENT_RASTER_POSITION:
- case GL_LIGHT_MODEL_AMBIENT:
- case GL_FOG_COLOR:
- case GL_ACCUM_CLEAR_VALUE:
- case GL_VIEWPORT:
- case GL_SCISSOR_BOX:
- case GL_COLOR_CLEAR_VALUE:
- case GL_COLOR_WRITEMASK:
- case GL_MAP2_GRID_DOMAIN:
- case GL_BLEND_COLOR:
+ case GL_POINT_SPRITE_R_MODE_NV:
+ case GL_MAX_VERTEX_ATTRIBS_ARB:
+ case GL_DEPTH_BOUNDS_TEST_EXT:
+ case GL_STENCIL_TEST_TWO_SIDE_EXT:
+ case GL_ACTIVE_STENCIL_FACE_EXT:
+ case GL_RASTER_POSITION_UNCLIPPED_IBM:
+ return 1;
+ case GL_SMOOTH_POINT_SIZE_RANGE:
+ case GL_LINE_WIDTH_RANGE:
+ case GL_POLYGON_MODE:
+ case GL_DEPTH_RANGE:
+ case GL_MAX_VIEWPORT_DIMS:
+ case GL_MAP1_GRID_DOMAIN:
+ case GL_MAP2_GRID_SEGMENTS:
+ case GL_ALIASED_POINT_SIZE_RANGE:
+ case GL_ALIASED_LINE_WIDTH_RANGE:
+ case GL_DEPTH_BOUNDS_EXT:
+ return 2;
+ case GL_CURRENT_NORMAL:
+ return 3;
+ case GL_CURRENT_COLOR:
+ case GL_CURRENT_TEXTURE_COORDS:
+ case GL_CURRENT_RASTER_COLOR:
+ case GL_CURRENT_RASTER_TEXTURE_COORDS:
+ case GL_CURRENT_RASTER_POSITION:
+ case GL_LIGHT_MODEL_AMBIENT:
+ case GL_FOG_COLOR:
+ case GL_ACCUM_CLEAR_VALUE:
+ case GL_VIEWPORT:
+ case GL_SCISSOR_BOX:
+ case GL_COLOR_CLEAR_VALUE:
+ case GL_COLOR_WRITEMASK:
+ case GL_MAP2_GRID_DOMAIN:
+ case GL_BLEND_COLOR:
/* case GL_BLEND_COLOR_EXT:*/
- case GL_CURRENT_SECONDARY_COLOR:
- return 4;
- case GL_MODELVIEW_MATRIX:
- case GL_PROJECTION_MATRIX:
- case GL_TEXTURE_MATRIX:
- case GL_MODELVIEW0_ARB:
- case GL_COLOR_MATRIX:
- case GL_MODELVIEW1_ARB:
- case GL_CURRENT_MATRIX_ARB:
- case GL_MODELVIEW2_ARB:
- case GL_MODELVIEW3_ARB:
- case GL_MODELVIEW4_ARB:
- case GL_MODELVIEW5_ARB:
- case GL_MODELVIEW6_ARB:
- case GL_MODELVIEW7_ARB:
- case GL_MODELVIEW8_ARB:
- case GL_MODELVIEW9_ARB:
- case GL_MODELVIEW10_ARB:
- case GL_MODELVIEW11_ARB:
- case GL_MODELVIEW12_ARB:
- case GL_MODELVIEW13_ARB:
- case GL_MODELVIEW14_ARB:
- case GL_MODELVIEW15_ARB:
- case GL_MODELVIEW16_ARB:
- case GL_MODELVIEW17_ARB:
- case GL_MODELVIEW18_ARB:
- case GL_MODELVIEW19_ARB:
- case GL_MODELVIEW20_ARB:
- case GL_MODELVIEW21_ARB:
- case GL_MODELVIEW22_ARB:
- case GL_MODELVIEW23_ARB:
- case GL_MODELVIEW24_ARB:
- case GL_MODELVIEW25_ARB:
- case GL_MODELVIEW26_ARB:
- case GL_MODELVIEW27_ARB:
- case GL_MODELVIEW28_ARB:
- case GL_MODELVIEW29_ARB:
- case GL_MODELVIEW30_ARB:
- case GL_MODELVIEW31_ARB:
- case GL_TRANSPOSE_CURRENT_MATRIX_ARB:
- return 16;
- case GL_FOG_COORDINATE_SOURCE:
- case GL_COMPRESSED_TEXTURE_FORMATS:
- return __glGetBooleanv_variable_size( e );
- default: return 0;
+ case GL_CURRENT_SECONDARY_COLOR:
+ return 4;
+ case GL_MODELVIEW_MATRIX:
+ case GL_PROJECTION_MATRIX:
+ case GL_TEXTURE_MATRIX:
+ case GL_MODELVIEW0_ARB:
+ case GL_COLOR_MATRIX:
+ case GL_MODELVIEW1_ARB:
+ case GL_CURRENT_MATRIX_ARB:
+ case GL_MODELVIEW2_ARB:
+ case GL_MODELVIEW3_ARB:
+ case GL_MODELVIEW4_ARB:
+ case GL_MODELVIEW5_ARB:
+ case GL_MODELVIEW6_ARB:
+ case GL_MODELVIEW7_ARB:
+ case GL_MODELVIEW8_ARB:
+ case GL_MODELVIEW9_ARB:
+ case GL_MODELVIEW10_ARB:
+ case GL_MODELVIEW11_ARB:
+ case GL_MODELVIEW12_ARB:
+ case GL_MODELVIEW13_ARB:
+ case GL_MODELVIEW14_ARB:
+ case GL_MODELVIEW15_ARB:
+ case GL_MODELVIEW16_ARB:
+ case GL_MODELVIEW17_ARB:
+ case GL_MODELVIEW18_ARB:
+ case GL_MODELVIEW19_ARB:
+ case GL_MODELVIEW20_ARB:
+ case GL_MODELVIEW21_ARB:
+ case GL_MODELVIEW22_ARB:
+ case GL_MODELVIEW23_ARB:
+ case GL_MODELVIEW24_ARB:
+ case GL_MODELVIEW25_ARB:
+ case GL_MODELVIEW26_ARB:
+ case GL_MODELVIEW27_ARB:
+ case GL_MODELVIEW28_ARB:
+ case GL_MODELVIEW29_ARB:
+ case GL_MODELVIEW30_ARB:
+ case GL_MODELVIEW31_ARB:
+ case GL_TRANSPOSE_CURRENT_MATRIX_ARB:
+ return 16;
+ case GL_FOG_COORDINATE_SOURCE:
+ case GL_COMPRESSED_TEXTURE_FORMATS:
+ return __glGetBooleanv_variable_size(e);
+ default:
+ return 0;
}
}
INTERNAL PURE FASTCALL GLint
-__glGetTexParameterfv_size( GLenum e )
+__glGetTexParameterfv_size(GLenum e)
{
- switch( e ) {
- case GL_TEXTURE_MAG_FILTER:
- case GL_TEXTURE_MIN_FILTER:
- case GL_TEXTURE_WRAP_S:
- case GL_TEXTURE_WRAP_T:
- case GL_TEXTURE_PRIORITY:
- case GL_TEXTURE_RESIDENT:
- case GL_TEXTURE_WRAP_R:
- case GL_TEXTURE_COMPARE_FAIL_VALUE_ARB:
+ switch (e) {
+ case GL_TEXTURE_MAG_FILTER:
+ case GL_TEXTURE_MIN_FILTER:
+ case GL_TEXTURE_WRAP_S:
+ case GL_TEXTURE_WRAP_T:
+ case GL_TEXTURE_PRIORITY:
+ case GL_TEXTURE_RESIDENT:
+ case GL_TEXTURE_WRAP_R:
+ case GL_TEXTURE_COMPARE_FAIL_VALUE_ARB:
/* case GL_SHADOW_AMBIENT_SGIX:*/
- case GL_TEXTURE_MIN_LOD:
- case GL_TEXTURE_MAX_LOD:
- case GL_TEXTURE_BASE_LEVEL:
- case GL_TEXTURE_MAX_LEVEL:
- case GL_TEXTURE_CLIPMAP_FRAME_SGIX:
- case GL_TEXTURE_LOD_BIAS_S_SGIX:
- case GL_TEXTURE_LOD_BIAS_T_SGIX:
- case GL_TEXTURE_LOD_BIAS_R_SGIX:
- case GL_GENERATE_MIPMAP:
+ case GL_TEXTURE_MIN_LOD:
+ case GL_TEXTURE_MAX_LOD:
+ case GL_TEXTURE_BASE_LEVEL:
+ case GL_TEXTURE_MAX_LEVEL:
+ case GL_TEXTURE_CLIPMAP_FRAME_SGIX:
+ case GL_TEXTURE_LOD_BIAS_S_SGIX:
+ case GL_TEXTURE_LOD_BIAS_T_SGIX:
+ case GL_TEXTURE_LOD_BIAS_R_SGIX:
+ case GL_GENERATE_MIPMAP:
/* case GL_GENERATE_MIPMAP_SGIS:*/
- case GL_TEXTURE_COMPARE_SGIX:
- case GL_TEXTURE_COMPARE_OPERATOR_SGIX:
- case GL_TEXTURE_MAX_CLAMP_S_SGIX:
- case GL_TEXTURE_MAX_CLAMP_T_SGIX:
- case GL_TEXTURE_MAX_CLAMP_R_SGIX:
- case GL_TEXTURE_MAX_ANISOTROPY_EXT:
- case GL_TEXTURE_LOD_BIAS:
+ case GL_TEXTURE_COMPARE_SGIX:
+ case GL_TEXTURE_COMPARE_OPERATOR_SGIX:
+ case GL_TEXTURE_MAX_CLAMP_S_SGIX:
+ case GL_TEXTURE_MAX_CLAMP_T_SGIX:
+ case GL_TEXTURE_MAX_CLAMP_R_SGIX:
+ case GL_TEXTURE_MAX_ANISOTROPY_EXT:
+ case GL_TEXTURE_LOD_BIAS:
/* case GL_TEXTURE_LOD_BIAS_EXT:*/
- case GL_DEPTH_TEXTURE_MODE:
+ case GL_DEPTH_TEXTURE_MODE:
/* case GL_DEPTH_TEXTURE_MODE_ARB:*/
- case GL_TEXTURE_COMPARE_MODE:
+ case GL_TEXTURE_COMPARE_MODE:
/* case GL_TEXTURE_COMPARE_MODE_ARB:*/
- case GL_TEXTURE_COMPARE_FUNC:
+ case GL_TEXTURE_COMPARE_FUNC:
/* case GL_TEXTURE_COMPARE_FUNC_ARB:*/
- case GL_TEXTURE_UNSIGNED_REMAP_MODE_NV:
- return 1;
- case GL_TEXTURE_CLIPMAP_CENTER_SGIX:
- case GL_TEXTURE_CLIPMAP_OFFSET_SGIX:
- return 2;
- case GL_TEXTURE_CLIPMAP_VIRTUAL_DEPTH_SGIX:
- return 3;
- case GL_TEXTURE_BORDER_COLOR:
- case GL_POST_TEXTURE_FILTER_BIAS_SGIX:
- case GL_POST_TEXTURE_FILTER_SCALE_SGIX:
- return 4;
- default: return 0;
+ case GL_TEXTURE_UNSIGNED_REMAP_MODE_NV:
+ return 1;
+ case GL_TEXTURE_CLIPMAP_CENTER_SGIX:
+ case GL_TEXTURE_CLIPMAP_OFFSET_SGIX:
+ return 2;
+ case GL_TEXTURE_CLIPMAP_VIRTUAL_DEPTH_SGIX:
+ return 3;
+ case GL_TEXTURE_BORDER_COLOR:
+ case GL_POST_TEXTURE_FILTER_BIAS_SGIX:
+ case GL_POST_TEXTURE_FILTER_SCALE_SGIX:
+ return 4;
+ default:
+ return 0;
}
}
INTERNAL PURE FASTCALL GLint
-__glGetTexLevelParameterfv_size( GLenum e )
+__glGetTexLevelParameterfv_size(GLenum e)
{
- switch( e ) {
- case GL_TEXTURE_WIDTH:
- case GL_TEXTURE_HEIGHT:
- case GL_TEXTURE_COMPONENTS:
- case GL_TEXTURE_BORDER:
- case GL_TEXTURE_RED_SIZE:
+ switch (e) {
+ case GL_TEXTURE_WIDTH:
+ case GL_TEXTURE_HEIGHT:
+ case GL_TEXTURE_COMPONENTS:
+ case GL_TEXTURE_BORDER:
+ case GL_TEXTURE_RED_SIZE:
/* case GL_TEXTURE_RED_SIZE_EXT:*/
- case GL_TEXTURE_GREEN_SIZE:
+ case GL_TEXTURE_GREEN_SIZE:
/* case GL_TEXTURE_GREEN_SIZE_EXT:*/
- case GL_TEXTURE_BLUE_SIZE:
+ case GL_TEXTURE_BLUE_SIZE:
/* case GL_TEXTURE_BLUE_SIZE_EXT:*/
- case GL_TEXTURE_ALPHA_SIZE:
+ case GL_TEXTURE_ALPHA_SIZE:
/* case GL_TEXTURE_ALPHA_SIZE_EXT:*/
- case GL_TEXTURE_LUMINANCE_SIZE:
+ case GL_TEXTURE_LUMINANCE_SIZE:
/* case GL_TEXTURE_LUMINANCE_SIZE_EXT:*/
- case GL_TEXTURE_INTENSITY_SIZE:
+ case GL_TEXTURE_INTENSITY_SIZE:
/* case GL_TEXTURE_INTENSITY_SIZE_EXT:*/
- case GL_TEXTURE_DEPTH:
- case GL_TEXTURE_INDEX_SIZE_EXT:
- case GL_TEXTURE_COMPRESSED_IMAGE_SIZE:
+ case GL_TEXTURE_DEPTH:
+ case GL_TEXTURE_INDEX_SIZE_EXT:
+ case GL_TEXTURE_COMPRESSED_IMAGE_SIZE:
/* case GL_TEXTURE_COMPRESSED_IMAGE_SIZE_ARB:*/
- case GL_TEXTURE_COMPRESSED:
+ case GL_TEXTURE_COMPRESSED:
/* case GL_TEXTURE_COMPRESSED_ARB:*/
- case GL_TEXTURE_DEPTH_SIZE:
+ case GL_TEXTURE_DEPTH_SIZE:
/* case GL_TEXTURE_DEPTH_SIZE_ARB:*/
- return 1;
- default: return 0;
+ return 1;
+ default:
+ return 0;
}
}
INTERNAL PURE FASTCALL GLint
-__glColorTableParameterfv_size( GLenum e )
+__glColorTableParameterfv_size(GLenum e)
{
- switch( e ) {
- case GL_COLOR_TABLE_SCALE:
- case GL_COLOR_TABLE_BIAS:
- return 4;
- default: return 0;
+ switch (e) {
+ case GL_COLOR_TABLE_SCALE:
+ case GL_COLOR_TABLE_BIAS:
+ return 4;
+ default:
+ return 0;
}
}
INTERNAL PURE FASTCALL GLint
-__glGetColorTableParameterfv_size( GLenum e )
+__glGetColorTableParameterfv_size(GLenum e)
{
- switch( e ) {
- case GL_COLOR_TABLE_FORMAT:
+ switch (e) {
+ case GL_COLOR_TABLE_FORMAT:
/* case GL_COLOR_TABLE_FORMAT_EXT:*/
- case GL_COLOR_TABLE_WIDTH:
+ case GL_COLOR_TABLE_WIDTH:
/* case GL_COLOR_TABLE_WIDTH_EXT:*/
- case GL_COLOR_TABLE_RED_SIZE:
+ case GL_COLOR_TABLE_RED_SIZE:
/* case GL_COLOR_TABLE_RED_SIZE_EXT:*/
- case GL_COLOR_TABLE_GREEN_SIZE:
+ case GL_COLOR_TABLE_GREEN_SIZE:
/* case GL_COLOR_TABLE_GREEN_SIZE_EXT:*/
- case GL_COLOR_TABLE_BLUE_SIZE:
+ case GL_COLOR_TABLE_BLUE_SIZE:
/* case GL_COLOR_TABLE_BLUE_SIZE_EXT:*/
- case GL_COLOR_TABLE_ALPHA_SIZE:
+ case GL_COLOR_TABLE_ALPHA_SIZE:
/* case GL_COLOR_TABLE_ALPHA_SIZE_EXT:*/
- case GL_COLOR_TABLE_LUMINANCE_SIZE:
+ case GL_COLOR_TABLE_LUMINANCE_SIZE:
/* case GL_COLOR_TABLE_LUMINANCE_SIZE_EXT:*/
- case GL_COLOR_TABLE_INTENSITY_SIZE:
+ case GL_COLOR_TABLE_INTENSITY_SIZE:
/* case GL_COLOR_TABLE_INTENSITY_SIZE_EXT:*/
- return 1;
- case GL_COLOR_TABLE_SCALE:
- case GL_COLOR_TABLE_BIAS:
- return 4;
- default: return 0;
+ return 1;
+ case GL_COLOR_TABLE_SCALE:
+ case GL_COLOR_TABLE_BIAS:
+ return 4;
+ default:
+ return 0;
}
}
INTERNAL PURE FASTCALL GLint
-__glConvolutionParameterfv_size( GLenum e )
+__glConvolutionParameterfv_size(GLenum e)
{
- switch( e ) {
- case GL_CONVOLUTION_BORDER_MODE:
+ switch (e) {
+ case GL_CONVOLUTION_BORDER_MODE:
/* case GL_CONVOLUTION_BORDER_MODE_EXT:*/
- return 1;
- case GL_CONVOLUTION_FILTER_SCALE:
+ return 1;
+ case GL_CONVOLUTION_FILTER_SCALE:
/* case GL_CONVOLUTION_FILTER_SCALE_EXT:*/
- case GL_CONVOLUTION_FILTER_BIAS:
+ case GL_CONVOLUTION_FILTER_BIAS:
/* case GL_CONVOLUTION_FILTER_BIAS_EXT:*/
- case GL_CONVOLUTION_BORDER_COLOR:
+ case GL_CONVOLUTION_BORDER_COLOR:
/* case GL_CONVOLUTION_BORDER_COLOR_HP:*/
- return 4;
- default: return 0;
+ return 4;
+ default:
+ return 0;
}
}
INTERNAL PURE FASTCALL GLint
-__glGetConvolutionParameterfv_size( GLenum e )
+__glGetConvolutionParameterfv_size(GLenum e)
{
- switch( e ) {
- case GL_CONVOLUTION_BORDER_MODE:
+ switch (e) {
+ case GL_CONVOLUTION_BORDER_MODE:
/* case GL_CONVOLUTION_BORDER_MODE_EXT:*/
- case GL_CONVOLUTION_FORMAT:
+ case GL_CONVOLUTION_FORMAT:
/* case GL_CONVOLUTION_FORMAT_EXT:*/
- case GL_CONVOLUTION_WIDTH:
+ case GL_CONVOLUTION_WIDTH:
/* case GL_CONVOLUTION_WIDTH_EXT:*/
- case GL_CONVOLUTION_HEIGHT:
+ case GL_CONVOLUTION_HEIGHT:
/* case GL_CONVOLUTION_HEIGHT_EXT:*/
- case GL_MAX_CONVOLUTION_WIDTH:
+ case GL_MAX_CONVOLUTION_WIDTH:
/* case GL_MAX_CONVOLUTION_WIDTH_EXT:*/
- case GL_MAX_CONVOLUTION_HEIGHT:
+ case GL_MAX_CONVOLUTION_HEIGHT:
/* case GL_MAX_CONVOLUTION_HEIGHT_EXT:*/
- return 1;
- case GL_CONVOLUTION_FILTER_SCALE:
+ return 1;
+ case GL_CONVOLUTION_FILTER_SCALE:
/* case GL_CONVOLUTION_FILTER_SCALE_EXT:*/
- case GL_CONVOLUTION_FILTER_BIAS:
+ case GL_CONVOLUTION_FILTER_BIAS:
/* case GL_CONVOLUTION_FILTER_BIAS_EXT:*/
- case GL_CONVOLUTION_BORDER_COLOR:
+ case GL_CONVOLUTION_BORDER_COLOR:
/* case GL_CONVOLUTION_BORDER_COLOR_HP:*/
- return 4;
- default: return 0;
+ return 4;
+ default:
+ return 0;
}
}
INTERNAL PURE FASTCALL GLint
-__glGetHistogramParameterfv_size( GLenum e )
+__glGetHistogramParameterfv_size(GLenum e)
{
- switch( e ) {
- case GL_HISTOGRAM_WIDTH:
- case GL_HISTOGRAM_FORMAT:
- case GL_HISTOGRAM_RED_SIZE:
- case GL_HISTOGRAM_GREEN_SIZE:
- case GL_HISTOGRAM_BLUE_SIZE:
- case GL_HISTOGRAM_ALPHA_SIZE:
- case GL_HISTOGRAM_LUMINANCE_SIZE:
- case GL_HISTOGRAM_SINK:
- return 1;
- default: return 0;
+ switch (e) {
+ case GL_HISTOGRAM_WIDTH:
+ case GL_HISTOGRAM_FORMAT:
+ case GL_HISTOGRAM_RED_SIZE:
+ case GL_HISTOGRAM_GREEN_SIZE:
+ case GL_HISTOGRAM_BLUE_SIZE:
+ case GL_HISTOGRAM_ALPHA_SIZE:
+ case GL_HISTOGRAM_LUMINANCE_SIZE:
+ case GL_HISTOGRAM_SINK:
+ return 1;
+ default:
+ return 0;
}
}
INTERNAL PURE FASTCALL GLint
-__glGetMinmaxParameterfv_size( GLenum e )
+__glGetMinmaxParameterfv_size(GLenum e)
{
- switch( e ) {
- case GL_MINMAX_FORMAT:
- case GL_MINMAX_SINK:
- return 1;
- default: return 0;
+ switch (e) {
+ case GL_MINMAX_FORMAT:
+ case GL_MINMAX_SINK:
+ return 1;
+ default:
+ return 0;
}
}
INTERNAL PURE FASTCALL GLint
-__glPointParameterfvEXT_size( GLenum e )
+__glGetProgramivARB_size(GLenum e)
{
- switch( e ) {
- case GL_POINT_SIZE_MIN:
-/* case GL_POINT_SIZE_MIN_ARB:*/
-/* case GL_POINT_SIZE_MIN_SGIS:*/
- case GL_POINT_SIZE_MAX:
-/* case GL_POINT_SIZE_MAX_ARB:*/
-/* case GL_POINT_SIZE_MAX_SGIS:*/
- case GL_POINT_FADE_THRESHOLD_SIZE:
-/* case GL_POINT_FADE_THRESHOLD_SIZE_ARB:*/
-/* case GL_POINT_FADE_THRESHOLD_SIZE_SGIS:*/
- case GL_POINT_SPRITE_R_MODE_NV:
- case GL_POINT_SPRITE_COORD_ORIGIN:
- return 1;
- case GL_POINT_DISTANCE_ATTENUATION:
-/* case GL_POINT_DISTANCE_ATTENUATION_ARB:*/
-/* case GL_POINT_DISTANCE_ATTENUATION_SGIS:*/
- return 3;
- default: return 0;
+ switch (e) {
+ case GL_PROGRAM_LENGTH_ARB:
+ case GL_PROGRAM_BINDING_ARB:
+ case GL_PROGRAM_ALU_INSTRUCTIONS_ARB:
+ case GL_PROGRAM_TEX_INSTRUCTIONS_ARB:
+ case GL_PROGRAM_TEX_INDIRECTIONS_ARB:
+ case GL_PROGRAM_NATIVE_ALU_INSTRUCTIONS_ARB:
+ case GL_PROGRAM_NATIVE_TEX_INSTRUCTIONS_ARB:
+ case GL_PROGRAM_NATIVE_TEX_INDIRECTIONS_ARB:
+ case GL_MAX_PROGRAM_ALU_INSTRUCTIONS_ARB:
+ case GL_MAX_PROGRAM_TEX_INSTRUCTIONS_ARB:
+ case GL_MAX_PROGRAM_TEX_INDIRECTIONS_ARB:
+ case GL_MAX_PROGRAM_NATIVE_ALU_INSTRUCTIONS_ARB:
+ case GL_MAX_PROGRAM_NATIVE_TEX_INSTRUCTIONS_ARB:
+ case GL_MAX_PROGRAM_NATIVE_TEX_INDIRECTIONS_ARB:
+ case GL_MAX_TEXTURE_COORDS_ARB:
+ case GL_MAX_TEXTURE_IMAGE_UNITS_ARB:
+ case GL_PROGRAM_FORMAT_ARB:
+ case GL_PROGRAM_INSTRUCTIONS_ARB:
+ case GL_MAX_PROGRAM_INSTRUCTIONS_ARB:
+ case GL_PROGRAM_NATIVE_INSTRUCTIONS_ARB:
+ case GL_MAX_PROGRAM_NATIVE_INSTRUCTIONS_ARB:
+ case GL_PROGRAM_TEMPORARIES_ARB:
+ case GL_MAX_PROGRAM_TEMPORARIES_ARB:
+ case GL_PROGRAM_NATIVE_TEMPORARIES_ARB:
+ case GL_MAX_PROGRAM_NATIVE_TEMPORARIES_ARB:
+ case GL_PROGRAM_PARAMETERS_ARB:
+ case GL_MAX_PROGRAM_PARAMETERS_ARB:
+ case GL_PROGRAM_NATIVE_PARAMETERS_ARB:
+ case GL_MAX_PROGRAM_NATIVE_PARAMETERS_ARB:
+ case GL_PROGRAM_ATTRIBS_ARB:
+ case GL_MAX_PROGRAM_ATTRIBS_ARB:
+ case GL_PROGRAM_NATIVE_ATTRIBS_ARB:
+ case GL_MAX_PROGRAM_NATIVE_ATTRIBS_ARB:
+ case GL_PROGRAM_ADDRESS_REGISTERS_ARB:
+ case GL_MAX_PROGRAM_ADDRESS_REGISTERS_ARB:
+ case GL_PROGRAM_NATIVE_ADDRESS_REGISTERS_ARB:
+ case GL_MAX_PROGRAM_NATIVE_ADDRESS_REGISTERS_ARB:
+ case GL_MAX_PROGRAM_LOCAL_PARAMETERS_ARB:
+ case GL_MAX_PROGRAM_ENV_PARAMETERS_ARB:
+ case GL_PROGRAM_UNDER_NATIVE_LIMITS_ARB:
+ case GL_MAX_PROGRAM_EXEC_INSTRUCTIONS_NV:
+ case GL_MAX_PROGRAM_CALL_DEPTH_NV:
+ case GL_MAX_PROGRAM_IF_DEPTH_NV:
+ case GL_MAX_PROGRAM_LOOP_DEPTH_NV:
+ case GL_MAX_PROGRAM_LOOP_COUNT_NV:
+ return 1;
+ default:
+ return 0;
}
}
INTERNAL PURE FASTCALL GLint
-__glGetProgramivNV_size( GLenum e )
+__glGetVertexAttribdvARB_size(GLenum e)
{
- switch( e ) {
- case GL_PROGRAM_LENGTH_NV:
- case GL_PROGRAM_TARGET_NV:
- case GL_PROGRAM_RESIDENT_NV:
- return 1;
- default: return 0;
+ switch (e) {
+ case GL_VERTEX_PROGRAM_ARB:
+ case GL_VERTEX_ATTRIB_ARRAY_ENABLED_ARB:
+ case GL_VERTEX_ATTRIB_ARRAY_SIZE_ARB:
+ case GL_VERTEX_ATTRIB_ARRAY_STRIDE_ARB:
+ case GL_VERTEX_ATTRIB_ARRAY_TYPE_ARB:
+ case GL_CURRENT_VERTEX_ATTRIB_ARB:
+ return 1;
+ default:
+ return 0;
}
}
INTERNAL PURE FASTCALL GLint
-__glGetVertexAttribdvARB_size( GLenum e )
+__glGetQueryObjectivARB_size(GLenum e)
{
- switch( e ) {
- case GL_VERTEX_PROGRAM_ARB:
- case GL_VERTEX_ATTRIB_ARRAY_ENABLED_ARB:
- case GL_VERTEX_ATTRIB_ARRAY_SIZE_ARB:
- case GL_VERTEX_ATTRIB_ARRAY_STRIDE_ARB:
- case GL_VERTEX_ATTRIB_ARRAY_TYPE_ARB:
- case GL_CURRENT_VERTEX_ATTRIB_ARB:
- return 1;
- default: return 0;
+ switch (e) {
+ case GL_QUERY_RESULT_ARB:
+ case GL_QUERY_RESULT_AVAILABLE_ARB:
+ return 1;
+ default:
+ return 0;
}
}
INTERNAL PURE FASTCALL GLint
-__glGetProgramivARB_size( GLenum e )
+__glGetQueryivARB_size(GLenum e)
{
- switch( e ) {
- case GL_PROGRAM_LENGTH_ARB:
- case GL_PROGRAM_BINDING_ARB:
- case GL_PROGRAM_ALU_INSTRUCTIONS_ARB:
- case GL_PROGRAM_TEX_INSTRUCTIONS_ARB:
- case GL_PROGRAM_TEX_INDIRECTIONS_ARB:
- case GL_PROGRAM_NATIVE_ALU_INSTRUCTIONS_ARB:
- case GL_PROGRAM_NATIVE_TEX_INSTRUCTIONS_ARB:
- case GL_PROGRAM_NATIVE_TEX_INDIRECTIONS_ARB:
- case GL_MAX_PROGRAM_ALU_INSTRUCTIONS_ARB:
- case GL_MAX_PROGRAM_TEX_INSTRUCTIONS_ARB:
- case GL_MAX_PROGRAM_TEX_INDIRECTIONS_ARB:
- case GL_MAX_PROGRAM_NATIVE_ALU_INSTRUCTIONS_ARB:
- case GL_MAX_PROGRAM_NATIVE_TEX_INSTRUCTIONS_ARB:
- case GL_MAX_PROGRAM_NATIVE_TEX_INDIRECTIONS_ARB:
- case GL_MAX_TEXTURE_COORDS_ARB:
- case GL_MAX_TEXTURE_IMAGE_UNITS_ARB:
- case GL_PROGRAM_FORMAT_ARB:
- case GL_PROGRAM_INSTRUCTIONS_ARB:
- case GL_MAX_PROGRAM_INSTRUCTIONS_ARB:
- case GL_PROGRAM_NATIVE_INSTRUCTIONS_ARB:
- case GL_MAX_PROGRAM_NATIVE_INSTRUCTIONS_ARB:
- case GL_PROGRAM_TEMPORARIES_ARB:
- case GL_MAX_PROGRAM_TEMPORARIES_ARB:
- case GL_PROGRAM_NATIVE_TEMPORARIES_ARB:
- case GL_MAX_PROGRAM_NATIVE_TEMPORARIES_ARB:
- case GL_PROGRAM_PARAMETERS_ARB:
- case GL_MAX_PROGRAM_PARAMETERS_ARB:
- case GL_PROGRAM_NATIVE_PARAMETERS_ARB:
- case GL_MAX_PROGRAM_NATIVE_PARAMETERS_ARB:
- case GL_PROGRAM_ATTRIBS_ARB:
- case GL_MAX_PROGRAM_ATTRIBS_ARB:
- case GL_PROGRAM_NATIVE_ATTRIBS_ARB:
- case GL_MAX_PROGRAM_NATIVE_ATTRIBS_ARB:
- case GL_PROGRAM_ADDRESS_REGISTERS_ARB:
- case GL_MAX_PROGRAM_ADDRESS_REGISTERS_ARB:
- case GL_PROGRAM_NATIVE_ADDRESS_REGISTERS_ARB:
- case GL_MAX_PROGRAM_NATIVE_ADDRESS_REGISTERS_ARB:
- case GL_MAX_PROGRAM_LOCAL_PARAMETERS_ARB:
- case GL_MAX_PROGRAM_ENV_PARAMETERS_ARB:
- case GL_PROGRAM_UNDER_NATIVE_LIMITS_ARB:
- case GL_MAX_PROGRAM_EXEC_INSTRUCTIONS_NV:
- case GL_MAX_PROGRAM_CALL_DEPTH_NV:
- case GL_MAX_PROGRAM_IF_DEPTH_NV:
- case GL_MAX_PROGRAM_LOOP_DEPTH_NV:
- case GL_MAX_PROGRAM_LOOP_COUNT_NV:
- return 1;
- default: return 0;
+ switch (e) {
+ case GL_QUERY_COUNTER_BITS_ARB:
+ case GL_CURRENT_QUERY_ARB:
+ return 1;
+ default:
+ return 0;
}
}
INTERNAL PURE FASTCALL GLint
-__glGetQueryivARB_size( GLenum e )
+__glPointParameterfvEXT_size(GLenum e)
{
- switch( e ) {
- case GL_QUERY_COUNTER_BITS_ARB:
- case GL_CURRENT_QUERY_ARB:
- return 1;
- default: return 0;
+ switch (e) {
+ case GL_POINT_SIZE_MIN:
+/* case GL_POINT_SIZE_MIN_ARB:*/
+/* case GL_POINT_SIZE_MIN_SGIS:*/
+ case GL_POINT_SIZE_MAX:
+/* case GL_POINT_SIZE_MAX_ARB:*/
+/* case GL_POINT_SIZE_MAX_SGIS:*/
+ case GL_POINT_FADE_THRESHOLD_SIZE:
+/* case GL_POINT_FADE_THRESHOLD_SIZE_ARB:*/
+/* case GL_POINT_FADE_THRESHOLD_SIZE_SGIS:*/
+ case GL_POINT_SPRITE_R_MODE_NV:
+ case GL_POINT_SPRITE_COORD_ORIGIN:
+ return 1;
+ case GL_POINT_DISTANCE_ATTENUATION:
+/* case GL_POINT_DISTANCE_ATTENUATION_ARB:*/
+/* case GL_POINT_DISTANCE_ATTENUATION_SGIS:*/
+ return 3;
+ default:
+ return 0;
}
}
INTERNAL PURE FASTCALL GLint
-__glGetQueryObjectivARB_size( GLenum e )
+__glGetProgramivNV_size(GLenum e)
{
- switch( e ) {
- case GL_QUERY_RESULT_ARB:
- case GL_QUERY_RESULT_AVAILABLE_ARB:
- return 1;
- default: return 0;
+ switch (e) {
+ case GL_PROGRAM_LENGTH_NV:
+ case GL_PROGRAM_TARGET_NV:
+ case GL_PROGRAM_RESIDENT_NV:
+ return 1;
+ default:
+ return 0;
}
}
INTERNAL PURE FASTCALL GLint
-__glGetVertexAttribdvNV_size( GLenum e )
+__glGetVertexAttribdvNV_size(GLenum e)
{
- switch( e ) {
- case GL_ATTRIB_ARRAY_SIZE_NV:
- case GL_ATTRIB_ARRAY_STRIDE_NV:
- case GL_ATTRIB_ARRAY_TYPE_NV:
- case GL_CURRENT_ATTRIB_NV:
- return 1;
- default: return 0;
+ switch (e) {
+ case GL_ATTRIB_ARRAY_SIZE_NV:
+ case GL_ATTRIB_ARRAY_STRIDE_NV:
+ case GL_ATTRIB_ARRAY_TYPE_NV:
+ case GL_CURRENT_ATTRIB_NV:
+ return 1;
+ default:
+ return 0;
}
}
INTERNAL PURE FASTCALL GLint
-__glGetFramebufferAttachmentParameterivEXT_size( GLenum e )
+__glGetFramebufferAttachmentParameterivEXT_size(GLenum e)
{
- switch( e ) {
- case GL_FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE_EXT:
- case GL_FRAMEBUFFER_ATTACHMENT_OBJECT_NAME_EXT:
- case GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL_EXT:
- case GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE_EXT:
- case GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_3D_ZOFFSET_EXT:
- return 1;
- default: return 0;
+ switch (e) {
+ case GL_FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE_EXT:
+ case GL_FRAMEBUFFER_ATTACHMENT_OBJECT_NAME_EXT:
+ case GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL_EXT:
+ case GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE_EXT:
+ case GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_3D_ZOFFSET_EXT:
+ return 1;
+ default:
+ return 0;
}
}
-ALIAS( Fogiv, Fogfv )
-ALIAS( Lightiv, Lightfv )
-ALIAS( LightModeliv, LightModelfv )
-ALIAS( Materialiv, Materialfv )
-ALIAS( TexParameteriv, TexParameterfv )
-ALIAS( TexEnviv, TexEnvfv )
-ALIAS( TexGenfv, TexGendv )
-ALIAS( TexGeniv, TexGendv )
-ALIAS( Map1f, Map1d )
-ALIAS( Map2f, Map2d )
-ALIAS( GetDoublev, GetBooleanv )
-ALIAS( GetFloatv, GetBooleanv )
-ALIAS( GetIntegerv, GetBooleanv )
-ALIAS( GetLightfv, Lightfv )
-ALIAS( GetLightiv, Lightfv )
-ALIAS( GetMaterialfv, Materialfv )
-ALIAS( GetMaterialiv, Materialfv )
-ALIAS( GetTexEnvfv, TexEnvfv )
-ALIAS( GetTexEnviv, TexEnvfv )
-ALIAS( GetTexGendv, TexGendv )
-ALIAS( GetTexGenfv, TexGendv )
-ALIAS( GetTexGeniv, TexGendv )
-ALIAS( GetTexParameteriv, GetTexParameterfv )
-ALIAS( GetTexLevelParameteriv, GetTexLevelParameterfv )
-ALIAS( ColorTableParameteriv, ColorTableParameterfv )
-ALIAS( GetColorTableParameteriv, GetColorTableParameterfv )
-ALIAS( ConvolutionParameteriv, ConvolutionParameterfv )
-ALIAS( GetConvolutionParameteriv, GetConvolutionParameterfv )
-ALIAS( GetHistogramParameteriv, GetHistogramParameterfv )
-ALIAS( GetMinmaxParameteriv, GetMinmaxParameterfv )
-ALIAS( GetVertexAttribfvARB, GetVertexAttribdvARB )
-ALIAS( GetVertexAttribivARB, GetVertexAttribdvARB )
-ALIAS( PointParameterivNV, PointParameterfvEXT )
-ALIAS( GetQueryObjectuivARB, GetQueryObjectivARB )
-ALIAS( GetVertexAttribfvNV, GetVertexAttribdvNV )
-ALIAS( GetVertexAttribivNV, GetVertexAttribdvNV )
-
+ALIAS(Fogiv, Fogfv)
+ ALIAS(Lightiv, Lightfv)
+ ALIAS(LightModeliv, LightModelfv)
+ ALIAS(Materialiv, Materialfv)
+ ALIAS(TexParameteriv, TexParameterfv)
+ ALIAS(TexEnviv, TexEnvfv)
+ ALIAS(TexGenfv, TexGendv)
+ ALIAS(TexGeniv, TexGendv)
+ ALIAS(Map1f, Map1d)
+ ALIAS(Map2f, Map2d)
+ ALIAS(GetDoublev, GetBooleanv)
+ ALIAS(GetFloatv, GetBooleanv)
+ ALIAS(GetIntegerv, GetBooleanv)
+ ALIAS(GetLightfv, Lightfv)
+ ALIAS(GetLightiv, Lightfv)
+ ALIAS(GetMaterialfv, Materialfv)
+ ALIAS(GetMaterialiv, Materialfv)
+ ALIAS(GetTexEnvfv, TexEnvfv)
+ ALIAS(GetTexEnviv, TexEnvfv)
+ ALIAS(GetTexGendv, TexGendv)
+ ALIAS(GetTexGenfv, TexGendv)
+ ALIAS(GetTexGeniv, TexGendv)
+ ALIAS(GetTexParameteriv, GetTexParameterfv)
+ ALIAS(GetTexLevelParameteriv, GetTexLevelParameterfv)
+ ALIAS(ColorTableParameteriv, ColorTableParameterfv)
+ ALIAS(GetColorTableParameteriv, GetColorTableParameterfv)
+ ALIAS(ConvolutionParameteriv, ConvolutionParameterfv)
+ ALIAS(GetConvolutionParameteriv, GetConvolutionParameterfv)
+ ALIAS(GetHistogramParameteriv, GetHistogramParameterfv)
+ ALIAS(GetMinmaxParameteriv, GetMinmaxParameterfv)
+ ALIAS(GetVertexAttribfvARB, GetVertexAttribdvARB)
+ ALIAS(GetVertexAttribivARB, GetVertexAttribdvARB)
+ ALIAS(GetQueryObjectuivARB, GetQueryObjectivARB)
+ ALIAS(GetVertexAttribfvNV, GetVertexAttribdvNV)
+ ALIAS(GetVertexAttribivNV, GetVertexAttribdvNV)
+ ALIAS(PointParameterivNV, PointParameterfvEXT)
# undef PURE
# undef FASTCALL
# undef INTERNAL
diff --git a/GL/glx/indirect_size_get.h b/GL/glx/indirect_size_get.h
index 5329d41bf..4fcb55b4e 100644
--- a/GL/glx/indirect_size_get.h
+++ b/GL/glx/indirect_size_get.h
@@ -73,24 +73,27 @@ extern INTERNAL PURE FASTCALL GLint __glGetTexLevelParameterfv_size(GLenum);
extern INTERNAL PURE FASTCALL GLint __glGetTexLevelParameteriv_size(GLenum);
extern INTERNAL PURE FASTCALL GLint __glGetColorTableParameterfv_size(GLenum);
extern INTERNAL PURE FASTCALL GLint __glGetColorTableParameteriv_size(GLenum);
-extern INTERNAL PURE FASTCALL GLint __glGetConvolutionParameterfv_size(GLenum);
-extern INTERNAL PURE FASTCALL GLint __glGetConvolutionParameteriv_size(GLenum);
+extern INTERNAL PURE FASTCALL GLint
+__glGetConvolutionParameterfv_size(GLenum);
+extern INTERNAL PURE FASTCALL GLint
+__glGetConvolutionParameteriv_size(GLenum);
extern INTERNAL PURE FASTCALL GLint __glGetHistogramParameterfv_size(GLenum);
extern INTERNAL PURE FASTCALL GLint __glGetHistogramParameteriv_size(GLenum);
extern INTERNAL PURE FASTCALL GLint __glGetMinmaxParameterfv_size(GLenum);
extern INTERNAL PURE FASTCALL GLint __glGetMinmaxParameteriv_size(GLenum);
-extern INTERNAL PURE FASTCALL GLint __glGetProgramivNV_size(GLenum);
+extern INTERNAL PURE FASTCALL GLint __glGetProgramivARB_size(GLenum);
extern INTERNAL PURE FASTCALL GLint __glGetVertexAttribdvARB_size(GLenum);
extern INTERNAL PURE FASTCALL GLint __glGetVertexAttribfvARB_size(GLenum);
extern INTERNAL PURE FASTCALL GLint __glGetVertexAttribivARB_size(GLenum);
-extern INTERNAL PURE FASTCALL GLint __glGetProgramivARB_size(GLenum);
-extern INTERNAL PURE FASTCALL GLint __glGetQueryivARB_size(GLenum);
extern INTERNAL PURE FASTCALL GLint __glGetQueryObjectivARB_size(GLenum);
extern INTERNAL PURE FASTCALL GLint __glGetQueryObjectuivARB_size(GLenum);
+extern INTERNAL PURE FASTCALL GLint __glGetQueryivARB_size(GLenum);
+extern INTERNAL PURE FASTCALL GLint __glGetProgramivNV_size(GLenum);
extern INTERNAL PURE FASTCALL GLint __glGetVertexAttribdvNV_size(GLenum);
extern INTERNAL PURE FASTCALL GLint __glGetVertexAttribfvNV_size(GLenum);
extern INTERNAL PURE FASTCALL GLint __glGetVertexAttribivNV_size(GLenum);
-extern INTERNAL PURE FASTCALL GLint __glGetFramebufferAttachmentParameterivEXT_size(GLenum);
+extern INTERNAL PURE FASTCALL GLint
+__glGetFramebufferAttachmentParameterivEXT_size(GLenum);
# undef PURE
# undef FASTCALL
diff --git a/GL/glx/indirect_table.c b/GL/glx/indirect_table.c
new file mode 100644
index 000000000..60d676064
--- /dev/null
+++ b/GL/glx/indirect_table.c
@@ -0,0 +1,1593 @@
+/* DO NOT EDIT - This file generated automatically by glX_server_table.py (from Mesa) script */
+
+/*
+ * (C) Copyright IBM Corporation 2005, 2006
+ * All Rights Reserved.
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a
+ * copy of this software and 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
+ * IBM,
+ * 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.
+ */
+
+#include <inttypes.h>
+#include "glxserver.h"
+#include "glxext.h"
+#include "indirect_dispatch.h"
+#include "indirect_reqsize.h"
+#include "g_disptab.h"
+#include "indirect_table.h"
+
+/*****************************************************************/
+/* tree depth = 3 */
+static const int_fast16_t Single_dispatch_tree[24] = {
+ /* [0] -> opcode range [0, 256], node depth 1 */
+ 2,
+ 5,
+ 13,
+ 16,
+ EMPTY_LEAF,
+
+ /* [5] -> opcode range [0, 64], node depth 2 */
+ 2,
+ LEAF(0),
+ LEAF(16),
+ 10,
+ EMPTY_LEAF,
+
+ /* [10] -> opcode range [32, 48], node depth 3 */
+ 1,
+ LEAF(32),
+ EMPTY_LEAF,
+
+ /* [13] -> opcode range [64, 128], node depth 2 */
+ 1,
+ EMPTY_LEAF,
+ LEAF(40),
+
+ /* [16] -> opcode range [128, 192], node depth 2 */
+ 2,
+ LEAF(72),
+ LEAF(88),
+ 21,
+ EMPTY_LEAF,
+
+ /* [21] -> opcode range [160, 176], node depth 3 */
+ 1,
+ LEAF(104),
+ EMPTY_LEAF,
+
+};
+
+static const void *Single_function_table[112][2] = {
+ /* [ 0] = 0 */ {NULL, NULL},
+ /* [ 1] = 1 */ {__glXDisp_Render, __glXDispSwap_Render},
+ /* [ 2] = 2 */ {__glXDisp_RenderLarge, __glXDispSwap_RenderLarge},
+ /* [ 3] = 3 */ {__glXDisp_CreateContext, __glXDispSwap_CreateContext},
+ /* [ 4] = 4 */ {__glXDisp_DestroyContext, __glXDispSwap_DestroyContext},
+ /* [ 5] = 5 */ {__glXDisp_MakeCurrent, __glXDispSwap_MakeCurrent},
+ /* [ 6] = 6 */ {__glXDisp_IsDirect, __glXDispSwap_IsDirect},
+ /* [ 7] = 7 */ {__glXDisp_QueryVersion, __glXDispSwap_QueryVersion},
+ /* [ 8] = 8 */ {__glXDisp_WaitGL, __glXDispSwap_WaitGL},
+ /* [ 9] = 9 */ {__glXDisp_WaitX, __glXDispSwap_WaitX},
+ /* [ 10] = 10 */ {__glXDisp_CopyContext, __glXDispSwap_CopyContext},
+ /* [ 11] = 11 */ {__glXDisp_SwapBuffers, __glXDispSwap_SwapBuffers},
+ /* [ 12] = 12 */ {__glXDisp_UseXFont, __glXDispSwap_UseXFont},
+ /* [ 13] = 13 */ {__glXDisp_CreateGLXPixmap, __glXDispSwap_CreateGLXPixmap},
+ /* [ 14] = 14 */ {__glXDisp_GetVisualConfigs, __glXDispSwap_GetVisualConfigs},
+ /* [ 15] = 15 */ {__glXDisp_DestroyGLXPixmap, __glXDispSwap_DestroyGLXPixmap},
+ /* [ 16] = 16 */ {__glXDisp_VendorPrivate, __glXDispSwap_VendorPrivate},
+ /* [ 17] = 17 */ {__glXDisp_VendorPrivateWithReply, __glXDispSwap_VendorPrivateWithReply},
+ /* [ 18] = 18 */ {__glXDisp_QueryExtensionsString, __glXDispSwap_QueryExtensionsString},
+ /* [ 19] = 19 */ {__glXDisp_QueryServerString, __glXDispSwap_QueryServerString},
+ /* [ 20] = 20 */ {__glXDisp_ClientInfo, __glXDispSwap_ClientInfo},
+ /* [ 21] = 21 */ {__glXDisp_GetFBConfigs, __glXDispSwap_GetFBConfigs},
+ /* [ 22] = 22 */ {__glXDisp_CreatePixmap, __glXDispSwap_CreatePixmap},
+ /* [ 23] = 23 */ {__glXDisp_DestroyPixmap, __glXDispSwap_DestroyPixmap},
+ /* [ 24] = 24 */ {__glXDisp_CreateNewContext, __glXDispSwap_CreateNewContext},
+ /* [ 25] = 25 */ {__glXDisp_QueryContext, __glXDispSwap_QueryContext},
+ /* [ 26] = 26 */ {__glXDisp_MakeContextCurrent, __glXDispSwap_MakeContextCurrent},
+ /* [ 27] = 27 */ {__glXDisp_CreatePbuffer, __glXDispSwap_CreatePbuffer},
+ /* [ 28] = 28 */ {__glXDisp_DestroyPbuffer, __glXDispSwap_DestroyPbuffer},
+ /* [ 29] = 29 */ {__glXDisp_GetDrawableAttributes, __glXDispSwap_GetDrawableAttributes},
+ /* [ 30] = 30 */ {__glXDisp_ChangeDrawableAttributes, __glXDispSwap_ChangeDrawableAttributes},
+ /* [ 31] = 31 */ {__glXDisp_CreateWindow, __glXDispSwap_CreateWindow},
+ /* [ 32] = 32 */ {__glXDisp_DestroyWindow, __glXDispSwap_DestroyWindow},
+ /* [ 33] = 33 */ {NULL, NULL},
+ /* [ 34] = 34 */ {NULL, NULL},
+ /* [ 35] = 35 */ {NULL, NULL},
+ /* [ 36] = 36 */ {NULL, NULL},
+ /* [ 37] = 37 */ {NULL, NULL},
+ /* [ 38] = 38 */ {NULL, NULL},
+ /* [ 39] = 39 */ {NULL, NULL},
+ /* [ 40] = 96 */ {NULL, NULL},
+ /* [ 41] = 97 */ {NULL, NULL},
+ /* [ 42] = 98 */ {NULL, NULL},
+ /* [ 43] = 99 */ {NULL, NULL},
+ /* [ 44] = 100 */ {NULL, NULL},
+ /* [ 45] = 101 */ {__glXDisp_NewList, __glXDispSwap_NewList},
+ /* [ 46] = 102 */ {__glXDisp_EndList, __glXDispSwap_EndList},
+ /* [ 47] = 103 */ {__glXDisp_DeleteLists, __glXDispSwap_DeleteLists},
+ /* [ 48] = 104 */ {__glXDisp_GenLists, __glXDispSwap_GenLists},
+ /* [ 49] = 105 */ {__glXDisp_FeedbackBuffer, __glXDispSwap_FeedbackBuffer},
+ /* [ 50] = 106 */ {__glXDisp_SelectBuffer, __glXDispSwap_SelectBuffer},
+ /* [ 51] = 107 */ {__glXDisp_RenderMode, __glXDispSwap_RenderMode},
+ /* [ 52] = 108 */ {__glXDisp_Finish, __glXDispSwap_Finish},
+ /* [ 53] = 109 */ {__glXDisp_PixelStoref, __glXDispSwap_PixelStoref},
+ /* [ 54] = 110 */ {__glXDisp_PixelStorei, __glXDispSwap_PixelStorei},
+ /* [ 55] = 111 */ {__glXDisp_ReadPixels, __glXDispSwap_ReadPixels},
+ /* [ 56] = 112 */ {__glXDisp_GetBooleanv, __glXDispSwap_GetBooleanv},
+ /* [ 57] = 113 */ {__glXDisp_GetClipPlane, __glXDispSwap_GetClipPlane},
+ /* [ 58] = 114 */ {__glXDisp_GetDoublev, __glXDispSwap_GetDoublev},
+ /* [ 59] = 115 */ {__glXDisp_GetError, __glXDispSwap_GetError},
+ /* [ 60] = 116 */ {__glXDisp_GetFloatv, __glXDispSwap_GetFloatv},
+ /* [ 61] = 117 */ {__glXDisp_GetIntegerv, __glXDispSwap_GetIntegerv},
+ /* [ 62] = 118 */ {__glXDisp_GetLightfv, __glXDispSwap_GetLightfv},
+ /* [ 63] = 119 */ {__glXDisp_GetLightiv, __glXDispSwap_GetLightiv},
+ /* [ 64] = 120 */ {__glXDisp_GetMapdv, __glXDispSwap_GetMapdv},
+ /* [ 65] = 121 */ {__glXDisp_GetMapfv, __glXDispSwap_GetMapfv},
+ /* [ 66] = 122 */ {__glXDisp_GetMapiv, __glXDispSwap_GetMapiv},
+ /* [ 67] = 123 */ {__glXDisp_GetMaterialfv, __glXDispSwap_GetMaterialfv},
+ /* [ 68] = 124 */ {__glXDisp_GetMaterialiv, __glXDispSwap_GetMaterialiv},
+ /* [ 69] = 125 */ {__glXDisp_GetPixelMapfv, __glXDispSwap_GetPixelMapfv},
+ /* [ 70] = 126 */ {__glXDisp_GetPixelMapuiv, __glXDispSwap_GetPixelMapuiv},
+ /* [ 71] = 127 */ {__glXDisp_GetPixelMapusv, __glXDispSwap_GetPixelMapusv},
+ /* [ 72] = 128 */ {__glXDisp_GetPolygonStipple, __glXDispSwap_GetPolygonStipple},
+ /* [ 73] = 129 */ {__glXDisp_GetString, __glXDispSwap_GetString},
+ /* [ 74] = 130 */ {__glXDisp_GetTexEnvfv, __glXDispSwap_GetTexEnvfv},
+ /* [ 75] = 131 */ {__glXDisp_GetTexEnviv, __glXDispSwap_GetTexEnviv},
+ /* [ 76] = 132 */ {__glXDisp_GetTexGendv, __glXDispSwap_GetTexGendv},
+ /* [ 77] = 133 */ {__glXDisp_GetTexGenfv, __glXDispSwap_GetTexGenfv},
+ /* [ 78] = 134 */ {__glXDisp_GetTexGeniv, __glXDispSwap_GetTexGeniv},
+ /* [ 79] = 135 */ {__glXDisp_GetTexImage, __glXDispSwap_GetTexImage},
+ /* [ 80] = 136 */ {__glXDisp_GetTexParameterfv, __glXDispSwap_GetTexParameterfv},
+ /* [ 81] = 137 */ {__glXDisp_GetTexParameteriv, __glXDispSwap_GetTexParameteriv},
+ /* [ 82] = 138 */ {__glXDisp_GetTexLevelParameterfv, __glXDispSwap_GetTexLevelParameterfv},
+ /* [ 83] = 139 */ {__glXDisp_GetTexLevelParameteriv, __glXDispSwap_GetTexLevelParameteriv},
+ /* [ 84] = 140 */ {__glXDisp_IsEnabled, __glXDispSwap_IsEnabled},
+ /* [ 85] = 141 */ {__glXDisp_IsList, __glXDispSwap_IsList},
+ /* [ 86] = 142 */ {__glXDisp_Flush, __glXDispSwap_Flush},
+ /* [ 87] = 143 */ {__glXDisp_AreTexturesResident, __glXDispSwap_AreTexturesResident},
+ /* [ 88] = 144 */ {__glXDisp_DeleteTextures, __glXDispSwap_DeleteTextures},
+ /* [ 89] = 145 */ {__glXDisp_GenTextures, __glXDispSwap_GenTextures},
+ /* [ 90] = 146 */ {__glXDisp_IsTexture, __glXDispSwap_IsTexture},
+ /* [ 91] = 147 */ {__glXDisp_GetColorTable, __glXDispSwap_GetColorTable},
+ /* [ 92] = 148 */ {__glXDisp_GetColorTableParameterfv, __glXDispSwap_GetColorTableParameterfv},
+ /* [ 93] = 149 */ {__glXDisp_GetColorTableParameteriv, __glXDispSwap_GetColorTableParameteriv},
+ /* [ 94] = 150 */ {__glXDisp_GetConvolutionFilter, __glXDispSwap_GetConvolutionFilter},
+ /* [ 95] = 151 */ {__glXDisp_GetConvolutionParameterfv, __glXDispSwap_GetConvolutionParameterfv},
+ /* [ 96] = 152 */ {__glXDisp_GetConvolutionParameteriv, __glXDispSwap_GetConvolutionParameteriv},
+ /* [ 97] = 153 */ {__glXDisp_GetSeparableFilter, __glXDispSwap_GetSeparableFilter},
+ /* [ 98] = 154 */ {__glXDisp_GetHistogram, __glXDispSwap_GetHistogram},
+ /* [ 99] = 155 */ {__glXDisp_GetHistogramParameterfv, __glXDispSwap_GetHistogramParameterfv},
+ /* [ 100] = 156 */ {__glXDisp_GetHistogramParameteriv, __glXDispSwap_GetHistogramParameteriv},
+ /* [ 101] = 157 */ {__glXDisp_GetMinmax, __glXDispSwap_GetMinmax},
+ /* [ 102] = 158 */ {__glXDisp_GetMinmaxParameterfv, __glXDispSwap_GetMinmaxParameterfv},
+ /* [ 103] = 159 */ {__glXDisp_GetMinmaxParameteriv, __glXDispSwap_GetMinmaxParameteriv},
+ /* [ 104] = 160 */ {__glXDisp_GetCompressedTexImageARB, __glXDispSwap_GetCompressedTexImageARB},
+ /* [ 105] = 161 */ {__glXDisp_DeleteQueriesARB, __glXDispSwap_DeleteQueriesARB},
+ /* [ 106] = 162 */ {__glXDisp_GenQueriesARB, __glXDispSwap_GenQueriesARB},
+ /* [ 107] = 163 */ {__glXDisp_IsQueryARB, __glXDispSwap_IsQueryARB},
+ /* [ 108] = 164 */ {__glXDisp_GetQueryivARB, __glXDispSwap_GetQueryivARB},
+ /* [ 109] = 165 */ {__glXDisp_GetQueryObjectivARB, __glXDispSwap_GetQueryObjectivARB},
+ /* [ 110] = 166 */ {__glXDisp_GetQueryObjectuivARB, __glXDispSwap_GetQueryObjectuivARB},
+ /* [ 111] = 167 */ {NULL, NULL},
+};
+
+const struct __glXDispatchInfo Single_dispatch_info = {
+ 8,
+ Single_dispatch_tree,
+ Single_function_table,
+ NULL,
+ NULL
+};
+
+/*****************************************************************/
+/* tree depth = 8 */
+static const int_fast16_t Render_dispatch_tree[95] = {
+ /* [0] -> opcode range [0, 8192], node depth 1 */
+ 2,
+ 5,
+ 31,
+ 54,
+ EMPTY_LEAF,
+
+ /* [5] -> opcode range [0, 2048], node depth 2 */
+ 1,
+ 8,
+ EMPTY_LEAF,
+
+ /* [8] -> opcode range [0, 1024], node depth 3 */
+ 1,
+ 11,
+ EMPTY_LEAF,
+
+ /* [11] -> opcode range [0, 512], node depth 4 */
+ 1,
+ 14,
+ EMPTY_LEAF,
+
+ /* [14] -> opcode range [0, 256], node depth 5 */
+ 4,
+ LEAF(0),
+ LEAF(16),
+ LEAF(32),
+ LEAF(48),
+ LEAF(64),
+ LEAF(80),
+ LEAF(96),
+ LEAF(112),
+ LEAF(128),
+ LEAF(144),
+ LEAF(160),
+ LEAF(176),
+ LEAF(192),
+ LEAF(208),
+ LEAF(224),
+ EMPTY_LEAF,
+
+ /* [31] -> opcode range [2048, 4096], node depth 2 */
+ 1,
+ 34,
+ EMPTY_LEAF,
+
+ /* [34] -> opcode range [2048, 3072], node depth 3 */
+ 1,
+ 37,
+ EMPTY_LEAF,
+
+ /* [37] -> opcode range [2048, 2560], node depth 4 */
+ 1,
+ 40,
+ EMPTY_LEAF,
+
+ /* [40] -> opcode range [2048, 2304], node depth 5 */
+ 1,
+ 43,
+ EMPTY_LEAF,
+
+ /* [43] -> opcode range [2048, 2176], node depth 6 */
+ 1,
+ 46,
+ EMPTY_LEAF,
+
+ /* [46] -> opcode range [2048, 2112], node depth 7 */
+ 1,
+ 49,
+ EMPTY_LEAF,
+
+ /* [49] -> opcode range [2048, 2080], node depth 8 */
+ 2,
+ LEAF(240),
+ LEAF(248),
+ LEAF(256),
+ EMPTY_LEAF,
+
+ /* [54] -> opcode range [4096, 6144], node depth 2 */
+ 1,
+ 57,
+ EMPTY_LEAF,
+
+ /* [57] -> opcode range [4096, 5120], node depth 3 */
+ 1,
+ 60,
+ EMPTY_LEAF,
+
+ /* [60] -> opcode range [4096, 4608], node depth 4 */
+ 1,
+ 63,
+ EMPTY_LEAF,
+
+ /* [63] -> opcode range [4096, 4352], node depth 5 */
+ 4,
+ LEAF(264),
+ LEAF(280),
+ 80,
+ EMPTY_LEAF,
+ EMPTY_LEAF,
+ LEAF(296),
+ LEAF(312),
+ LEAF(328),
+ LEAF(344),
+ EMPTY_LEAF,
+ 83,
+ 86,
+ EMPTY_LEAF,
+ 89,
+ 92,
+ EMPTY_LEAF,
+
+ /* [80] -> opcode range [4128, 4144], node depth 6 */
+ 1,
+ LEAF(360),
+ EMPTY_LEAF,
+
+ /* [83] -> opcode range [4256, 4272], node depth 6 */
+ 1,
+ EMPTY_LEAF,
+ LEAF(368),
+
+ /* [86] -> opcode range [4272, 4288], node depth 6 */
+ 1,
+ LEAF(376),
+ EMPTY_LEAF,
+
+ /* [89] -> opcode range [4304, 4320], node depth 6 */
+ 1,
+ EMPTY_LEAF,
+ LEAF(384),
+
+ /* [92] -> opcode range [4320, 4336], node depth 6 */
+ 1,
+ LEAF(392),
+ EMPTY_LEAF,
+
+};
+
+static const void *Render_function_table[400][2] = {
+ /* [ 0] = 0 */ {NULL, NULL},
+ /* [ 1] = 1 */ {__glXDisp_CallList, __glXDispSwap_CallList},
+ /* [ 2] = 2 */ {__glXDisp_CallLists, __glXDispSwap_CallLists},
+ /* [ 3] = 3 */ {__glXDisp_ListBase, __glXDispSwap_ListBase},
+ /* [ 4] = 4 */ {__glXDisp_Begin, __glXDispSwap_Begin},
+ /* [ 5] = 5 */ {__glXDisp_Bitmap, __glXDispSwap_Bitmap},
+ /* [ 6] = 6 */ {__glXDisp_Color3bv, __glXDispSwap_Color3bv},
+ /* [ 7] = 7 */ {__glXDisp_Color3dv, __glXDispSwap_Color3dv},
+ /* [ 8] = 8 */ {__glXDisp_Color3fv, __glXDispSwap_Color3fv},
+ /* [ 9] = 9 */ {__glXDisp_Color3iv, __glXDispSwap_Color3iv},
+ /* [ 10] = 10 */ {__glXDisp_Color3sv, __glXDispSwap_Color3sv},
+ /* [ 11] = 11 */ {__glXDisp_Color3ubv, __glXDispSwap_Color3ubv},
+ /* [ 12] = 12 */ {__glXDisp_Color3uiv, __glXDispSwap_Color3uiv},
+ /* [ 13] = 13 */ {__glXDisp_Color3usv, __glXDispSwap_Color3usv},
+ /* [ 14] = 14 */ {__glXDisp_Color4bv, __glXDispSwap_Color4bv},
+ /* [ 15] = 15 */ {__glXDisp_Color4dv, __glXDispSwap_Color4dv},
+ /* [ 16] = 16 */ {__glXDisp_Color4fv, __glXDispSwap_Color4fv},
+ /* [ 17] = 17 */ {__glXDisp_Color4iv, __glXDispSwap_Color4iv},
+ /* [ 18] = 18 */ {__glXDisp_Color4sv, __glXDispSwap_Color4sv},
+ /* [ 19] = 19 */ {__glXDisp_Color4ubv, __glXDispSwap_Color4ubv},
+ /* [ 20] = 20 */ {__glXDisp_Color4uiv, __glXDispSwap_Color4uiv},
+ /* [ 21] = 21 */ {__glXDisp_Color4usv, __glXDispSwap_Color4usv},
+ /* [ 22] = 22 */ {__glXDisp_EdgeFlagv, __glXDispSwap_EdgeFlagv},
+ /* [ 23] = 23 */ {__glXDisp_End, __glXDispSwap_End},
+ /* [ 24] = 24 */ {__glXDisp_Indexdv, __glXDispSwap_Indexdv},
+ /* [ 25] = 25 */ {__glXDisp_Indexfv, __glXDispSwap_Indexfv},
+ /* [ 26] = 26 */ {__glXDisp_Indexiv, __glXDispSwap_Indexiv},
+ /* [ 27] = 27 */ {__glXDisp_Indexsv, __glXDispSwap_Indexsv},
+ /* [ 28] = 28 */ {__glXDisp_Normal3bv, __glXDispSwap_Normal3bv},
+ /* [ 29] = 29 */ {__glXDisp_Normal3dv, __glXDispSwap_Normal3dv},
+ /* [ 30] = 30 */ {__glXDisp_Normal3fv, __glXDispSwap_Normal3fv},
+ /* [ 31] = 31 */ {__glXDisp_Normal3iv, __glXDispSwap_Normal3iv},
+ /* [ 32] = 32 */ {__glXDisp_Normal3sv, __glXDispSwap_Normal3sv},
+ /* [ 33] = 33 */ {__glXDisp_RasterPos2dv, __glXDispSwap_RasterPos2dv},
+ /* [ 34] = 34 */ {__glXDisp_RasterPos2fv, __glXDispSwap_RasterPos2fv},
+ /* [ 35] = 35 */ {__glXDisp_RasterPos2iv, __glXDispSwap_RasterPos2iv},
+ /* [ 36] = 36 */ {__glXDisp_RasterPos2sv, __glXDispSwap_RasterPos2sv},
+ /* [ 37] = 37 */ {__glXDisp_RasterPos3dv, __glXDispSwap_RasterPos3dv},
+ /* [ 38] = 38 */ {__glXDisp_RasterPos3fv, __glXDispSwap_RasterPos3fv},
+ /* [ 39] = 39 */ {__glXDisp_RasterPos3iv, __glXDispSwap_RasterPos3iv},
+ /* [ 40] = 40 */ {__glXDisp_RasterPos3sv, __glXDispSwap_RasterPos3sv},
+ /* [ 41] = 41 */ {__glXDisp_RasterPos4dv, __glXDispSwap_RasterPos4dv},
+ /* [ 42] = 42 */ {__glXDisp_RasterPos4fv, __glXDispSwap_RasterPos4fv},
+ /* [ 43] = 43 */ {__glXDisp_RasterPos4iv, __glXDispSwap_RasterPos4iv},
+ /* [ 44] = 44 */ {__glXDisp_RasterPos4sv, __glXDispSwap_RasterPos4sv},
+ /* [ 45] = 45 */ {__glXDisp_Rectdv, __glXDispSwap_Rectdv},
+ /* [ 46] = 46 */ {__glXDisp_Rectfv, __glXDispSwap_Rectfv},
+ /* [ 47] = 47 */ {__glXDisp_Rectiv, __glXDispSwap_Rectiv},
+ /* [ 48] = 48 */ {__glXDisp_Rectsv, __glXDispSwap_Rectsv},
+ /* [ 49] = 49 */ {__glXDisp_TexCoord1dv, __glXDispSwap_TexCoord1dv},
+ /* [ 50] = 50 */ {__glXDisp_TexCoord1fv, __glXDispSwap_TexCoord1fv},
+ /* [ 51] = 51 */ {__glXDisp_TexCoord1iv, __glXDispSwap_TexCoord1iv},
+ /* [ 52] = 52 */ {__glXDisp_TexCoord1sv, __glXDispSwap_TexCoord1sv},
+ /* [ 53] = 53 */ {__glXDisp_TexCoord2dv, __glXDispSwap_TexCoord2dv},
+ /* [ 54] = 54 */ {__glXDisp_TexCoord2fv, __glXDispSwap_TexCoord2fv},
+ /* [ 55] = 55 */ {__glXDisp_TexCoord2iv, __glXDispSwap_TexCoord2iv},
+ /* [ 56] = 56 */ {__glXDisp_TexCoord2sv, __glXDispSwap_TexCoord2sv},
+ /* [ 57] = 57 */ {__glXDisp_TexCoord3dv, __glXDispSwap_TexCoord3dv},
+ /* [ 58] = 58 */ {__glXDisp_TexCoord3fv, __glXDispSwap_TexCoord3fv},
+ /* [ 59] = 59 */ {__glXDisp_TexCoord3iv, __glXDispSwap_TexCoord3iv},
+ /* [ 60] = 60 */ {__glXDisp_TexCoord3sv, __glXDispSwap_TexCoord3sv},
+ /* [ 61] = 61 */ {__glXDisp_TexCoord4dv, __glXDispSwap_TexCoord4dv},
+ /* [ 62] = 62 */ {__glXDisp_TexCoord4fv, __glXDispSwap_TexCoord4fv},
+ /* [ 63] = 63 */ {__glXDisp_TexCoord4iv, __glXDispSwap_TexCoord4iv},
+ /* [ 64] = 64 */ {__glXDisp_TexCoord4sv, __glXDispSwap_TexCoord4sv},
+ /* [ 65] = 65 */ {__glXDisp_Vertex2dv, __glXDispSwap_Vertex2dv},
+ /* [ 66] = 66 */ {__glXDisp_Vertex2fv, __glXDispSwap_Vertex2fv},
+ /* [ 67] = 67 */ {__glXDisp_Vertex2iv, __glXDispSwap_Vertex2iv},
+ /* [ 68] = 68 */ {__glXDisp_Vertex2sv, __glXDispSwap_Vertex2sv},
+ /* [ 69] = 69 */ {__glXDisp_Vertex3dv, __glXDispSwap_Vertex3dv},
+ /* [ 70] = 70 */ {__glXDisp_Vertex3fv, __glXDispSwap_Vertex3fv},
+ /* [ 71] = 71 */ {__glXDisp_Vertex3iv, __glXDispSwap_Vertex3iv},
+ /* [ 72] = 72 */ {__glXDisp_Vertex3sv, __glXDispSwap_Vertex3sv},
+ /* [ 73] = 73 */ {__glXDisp_Vertex4dv, __glXDispSwap_Vertex4dv},
+ /* [ 74] = 74 */ {__glXDisp_Vertex4fv, __glXDispSwap_Vertex4fv},
+ /* [ 75] = 75 */ {__glXDisp_Vertex4iv, __glXDispSwap_Vertex4iv},
+ /* [ 76] = 76 */ {__glXDisp_Vertex4sv, __glXDispSwap_Vertex4sv},
+ /* [ 77] = 77 */ {__glXDisp_ClipPlane, __glXDispSwap_ClipPlane},
+ /* [ 78] = 78 */ {__glXDisp_ColorMaterial, __glXDispSwap_ColorMaterial},
+ /* [ 79] = 79 */ {__glXDisp_CullFace, __glXDispSwap_CullFace},
+ /* [ 80] = 80 */ {__glXDisp_Fogf, __glXDispSwap_Fogf},
+ /* [ 81] = 81 */ {__glXDisp_Fogfv, __glXDispSwap_Fogfv},
+ /* [ 82] = 82 */ {__glXDisp_Fogi, __glXDispSwap_Fogi},
+ /* [ 83] = 83 */ {__glXDisp_Fogiv, __glXDispSwap_Fogiv},
+ /* [ 84] = 84 */ {__glXDisp_FrontFace, __glXDispSwap_FrontFace},
+ /* [ 85] = 85 */ {__glXDisp_Hint, __glXDispSwap_Hint},
+ /* [ 86] = 86 */ {__glXDisp_Lightf, __glXDispSwap_Lightf},
+ /* [ 87] = 87 */ {__glXDisp_Lightfv, __glXDispSwap_Lightfv},
+ /* [ 88] = 88 */ {__glXDisp_Lighti, __glXDispSwap_Lighti},
+ /* [ 89] = 89 */ {__glXDisp_Lightiv, __glXDispSwap_Lightiv},
+ /* [ 90] = 90 */ {__glXDisp_LightModelf, __glXDispSwap_LightModelf},
+ /* [ 91] = 91 */ {__glXDisp_LightModelfv, __glXDispSwap_LightModelfv},
+ /* [ 92] = 92 */ {__glXDisp_LightModeli, __glXDispSwap_LightModeli},
+ /* [ 93] = 93 */ {__glXDisp_LightModeliv, __glXDispSwap_LightModeliv},
+ /* [ 94] = 94 */ {__glXDisp_LineStipple, __glXDispSwap_LineStipple},
+ /* [ 95] = 95 */ {__glXDisp_LineWidth, __glXDispSwap_LineWidth},
+ /* [ 96] = 96 */ {__glXDisp_Materialf, __glXDispSwap_Materialf},
+ /* [ 97] = 97 */ {__glXDisp_Materialfv, __glXDispSwap_Materialfv},
+ /* [ 98] = 98 */ {__glXDisp_Materiali, __glXDispSwap_Materiali},
+ /* [ 99] = 99 */ {__glXDisp_Materialiv, __glXDispSwap_Materialiv},
+ /* [ 100] = 100 */ {__glXDisp_PointSize, __glXDispSwap_PointSize},
+ /* [ 101] = 101 */ {__glXDisp_PolygonMode, __glXDispSwap_PolygonMode},
+ /* [ 102] = 102 */ {__glXDisp_PolygonStipple, __glXDispSwap_PolygonStipple},
+ /* [ 103] = 103 */ {__glXDisp_Scissor, __glXDispSwap_Scissor},
+ /* [ 104] = 104 */ {__glXDisp_ShadeModel, __glXDispSwap_ShadeModel},
+ /* [ 105] = 105 */ {__glXDisp_TexParameterf, __glXDispSwap_TexParameterf},
+ /* [ 106] = 106 */ {__glXDisp_TexParameterfv, __glXDispSwap_TexParameterfv},
+ /* [ 107] = 107 */ {__glXDisp_TexParameteri, __glXDispSwap_TexParameteri},
+ /* [ 108] = 108 */ {__glXDisp_TexParameteriv, __glXDispSwap_TexParameteriv},
+ /* [ 109] = 109 */ {__glXDisp_TexImage1D, __glXDispSwap_TexImage1D},
+ /* [ 110] = 110 */ {__glXDisp_TexImage2D, __glXDispSwap_TexImage2D},
+ /* [ 111] = 111 */ {__glXDisp_TexEnvf, __glXDispSwap_TexEnvf},
+ /* [ 112] = 112 */ {__glXDisp_TexEnvfv, __glXDispSwap_TexEnvfv},
+ /* [ 113] = 113 */ {__glXDisp_TexEnvi, __glXDispSwap_TexEnvi},
+ /* [ 114] = 114 */ {__glXDisp_TexEnviv, __glXDispSwap_TexEnviv},
+ /* [ 115] = 115 */ {__glXDisp_TexGend, __glXDispSwap_TexGend},
+ /* [ 116] = 116 */ {__glXDisp_TexGendv, __glXDispSwap_TexGendv},
+ /* [ 117] = 117 */ {__glXDisp_TexGenf, __glXDispSwap_TexGenf},
+ /* [ 118] = 118 */ {__glXDisp_TexGenfv, __glXDispSwap_TexGenfv},
+ /* [ 119] = 119 */ {__glXDisp_TexGeni, __glXDispSwap_TexGeni},
+ /* [ 120] = 120 */ {__glXDisp_TexGeniv, __glXDispSwap_TexGeniv},
+ /* [ 121] = 121 */ {__glXDisp_InitNames, __glXDispSwap_InitNames},
+ /* [ 122] = 122 */ {__glXDisp_LoadName, __glXDispSwap_LoadName},
+ /* [ 123] = 123 */ {__glXDisp_PassThrough, __glXDispSwap_PassThrough},
+ /* [ 124] = 124 */ {__glXDisp_PopName, __glXDispSwap_PopName},
+ /* [ 125] = 125 */ {__glXDisp_PushName, __glXDispSwap_PushName},
+ /* [ 126] = 126 */ {__glXDisp_DrawBuffer, __glXDispSwap_DrawBuffer},
+ /* [ 127] = 127 */ {__glXDisp_Clear, __glXDispSwap_Clear},
+ /* [ 128] = 128 */ {__glXDisp_ClearAccum, __glXDispSwap_ClearAccum},
+ /* [ 129] = 129 */ {__glXDisp_ClearIndex, __glXDispSwap_ClearIndex},
+ /* [ 130] = 130 */ {__glXDisp_ClearColor, __glXDispSwap_ClearColor},
+ /* [ 131] = 131 */ {__glXDisp_ClearStencil, __glXDispSwap_ClearStencil},
+ /* [ 132] = 132 */ {__glXDisp_ClearDepth, __glXDispSwap_ClearDepth},
+ /* [ 133] = 133 */ {__glXDisp_StencilMask, __glXDispSwap_StencilMask},
+ /* [ 134] = 134 */ {__glXDisp_ColorMask, __glXDispSwap_ColorMask},
+ /* [ 135] = 135 */ {__glXDisp_DepthMask, __glXDispSwap_DepthMask},
+ /* [ 136] = 136 */ {__glXDisp_IndexMask, __glXDispSwap_IndexMask},
+ /* [ 137] = 137 */ {__glXDisp_Accum, __glXDispSwap_Accum},
+ /* [ 138] = 138 */ {__glXDisp_Disable, __glXDispSwap_Disable},
+ /* [ 139] = 139 */ {__glXDisp_Enable, __glXDispSwap_Enable},
+ /* [ 140] = 140 */ {NULL, NULL},
+ /* [ 141] = 141 */ {__glXDisp_PopAttrib, __glXDispSwap_PopAttrib},
+ /* [ 142] = 142 */ {__glXDisp_PushAttrib, __glXDispSwap_PushAttrib},
+ /* [ 143] = 143 */ {__glXDisp_Map1d, __glXDispSwap_Map1d},
+ /* [ 144] = 144 */ {__glXDisp_Map1f, __glXDispSwap_Map1f},
+ /* [ 145] = 145 */ {__glXDisp_Map2d, __glXDispSwap_Map2d},
+ /* [ 146] = 146 */ {__glXDisp_Map2f, __glXDispSwap_Map2f},
+ /* [ 147] = 147 */ {__glXDisp_MapGrid1d, __glXDispSwap_MapGrid1d},
+ /* [ 148] = 148 */ {__glXDisp_MapGrid1f, __glXDispSwap_MapGrid1f},
+ /* [ 149] = 149 */ {__glXDisp_MapGrid2d, __glXDispSwap_MapGrid2d},
+ /* [ 150] = 150 */ {__glXDisp_MapGrid2f, __glXDispSwap_MapGrid2f},
+ /* [ 151] = 151 */ {__glXDisp_EvalCoord1dv, __glXDispSwap_EvalCoord1dv},
+ /* [ 152] = 152 */ {__glXDisp_EvalCoord1fv, __glXDispSwap_EvalCoord1fv},
+ /* [ 153] = 153 */ {__glXDisp_EvalCoord2dv, __glXDispSwap_EvalCoord2dv},
+ /* [ 154] = 154 */ {__glXDisp_EvalCoord2fv, __glXDispSwap_EvalCoord2fv},
+ /* [ 155] = 155 */ {__glXDisp_EvalMesh1, __glXDispSwap_EvalMesh1},
+ /* [ 156] = 156 */ {__glXDisp_EvalPoint1, __glXDispSwap_EvalPoint1},
+ /* [ 157] = 157 */ {__glXDisp_EvalMesh2, __glXDispSwap_EvalMesh2},
+ /* [ 158] = 158 */ {__glXDisp_EvalPoint2, __glXDispSwap_EvalPoint2},
+ /* [ 159] = 159 */ {__glXDisp_AlphaFunc, __glXDispSwap_AlphaFunc},
+ /* [ 160] = 160 */ {__glXDisp_BlendFunc, __glXDispSwap_BlendFunc},
+ /* [ 161] = 161 */ {__glXDisp_LogicOp, __glXDispSwap_LogicOp},
+ /* [ 162] = 162 */ {__glXDisp_StencilFunc, __glXDispSwap_StencilFunc},
+ /* [ 163] = 163 */ {__glXDisp_StencilOp, __glXDispSwap_StencilOp},
+ /* [ 164] = 164 */ {__glXDisp_DepthFunc, __glXDispSwap_DepthFunc},
+ /* [ 165] = 165 */ {__glXDisp_PixelZoom, __glXDispSwap_PixelZoom},
+ /* [ 166] = 166 */ {__glXDisp_PixelTransferf, __glXDispSwap_PixelTransferf},
+ /* [ 167] = 167 */ {__glXDisp_PixelTransferi, __glXDispSwap_PixelTransferi},
+ /* [ 168] = 168 */ {__glXDisp_PixelMapfv, __glXDispSwap_PixelMapfv},
+ /* [ 169] = 169 */ {__glXDisp_PixelMapuiv, __glXDispSwap_PixelMapuiv},
+ /* [ 170] = 170 */ {__glXDisp_PixelMapusv, __glXDispSwap_PixelMapusv},
+ /* [ 171] = 171 */ {__glXDisp_ReadBuffer, __glXDispSwap_ReadBuffer},
+ /* [ 172] = 172 */ {__glXDisp_CopyPixels, __glXDispSwap_CopyPixels},
+ /* [ 173] = 173 */ {__glXDisp_DrawPixels, __glXDispSwap_DrawPixels},
+ /* [ 174] = 174 */ {__glXDisp_DepthRange, __glXDispSwap_DepthRange},
+ /* [ 175] = 175 */ {__glXDisp_Frustum, __glXDispSwap_Frustum},
+ /* [ 176] = 176 */ {__glXDisp_LoadIdentity, __glXDispSwap_LoadIdentity},
+ /* [ 177] = 177 */ {__glXDisp_LoadMatrixf, __glXDispSwap_LoadMatrixf},
+ /* [ 178] = 178 */ {__glXDisp_LoadMatrixd, __glXDispSwap_LoadMatrixd},
+ /* [ 179] = 179 */ {__glXDisp_MatrixMode, __glXDispSwap_MatrixMode},
+ /* [ 180] = 180 */ {__glXDisp_MultMatrixf, __glXDispSwap_MultMatrixf},
+ /* [ 181] = 181 */ {__glXDisp_MultMatrixd, __glXDispSwap_MultMatrixd},
+ /* [ 182] = 182 */ {__glXDisp_Ortho, __glXDispSwap_Ortho},
+ /* [ 183] = 183 */ {__glXDisp_PopMatrix, __glXDispSwap_PopMatrix},
+ /* [ 184] = 184 */ {__glXDisp_PushMatrix, __glXDispSwap_PushMatrix},
+ /* [ 185] = 185 */ {__glXDisp_Rotated, __glXDispSwap_Rotated},
+ /* [ 186] = 186 */ {__glXDisp_Rotatef, __glXDispSwap_Rotatef},
+ /* [ 187] = 187 */ {__glXDisp_Scaled, __glXDispSwap_Scaled},
+ /* [ 188] = 188 */ {__glXDisp_Scalef, __glXDispSwap_Scalef},
+ /* [ 189] = 189 */ {__glXDisp_Translated, __glXDispSwap_Translated},
+ /* [ 190] = 190 */ {__glXDisp_Translatef, __glXDispSwap_Translatef},
+ /* [ 191] = 191 */ {__glXDisp_Viewport, __glXDispSwap_Viewport},
+ /* [ 192] = 192 */ {__glXDisp_PolygonOffset, __glXDispSwap_PolygonOffset},
+ /* [ 193] = 193 */ {__glXDisp_DrawArrays, __glXDispSwap_DrawArrays},
+ /* [ 194] = 194 */ {__glXDisp_Indexubv, __glXDispSwap_Indexubv},
+ /* [ 195] = 195 */ {__glXDisp_ColorSubTable, __glXDispSwap_ColorSubTable},
+ /* [ 196] = 196 */ {__glXDisp_CopyColorSubTable, __glXDispSwap_CopyColorSubTable},
+ /* [ 197] = 197 */ {__glXDisp_ActiveTextureARB, __glXDispSwap_ActiveTextureARB},
+ /* [ 198] = 198 */ {__glXDisp_MultiTexCoord1dvARB, __glXDispSwap_MultiTexCoord1dvARB},
+ /* [ 199] = 199 */ {__glXDisp_MultiTexCoord1fvARB, __glXDispSwap_MultiTexCoord1fvARB},
+ /* [ 200] = 200 */ {__glXDisp_MultiTexCoord1ivARB, __glXDispSwap_MultiTexCoord1ivARB},
+ /* [ 201] = 201 */ {__glXDisp_MultiTexCoord1svARB, __glXDispSwap_MultiTexCoord1svARB},
+ /* [ 202] = 202 */ {__glXDisp_MultiTexCoord2dvARB, __glXDispSwap_MultiTexCoord2dvARB},
+ /* [ 203] = 203 */ {__glXDisp_MultiTexCoord2fvARB, __glXDispSwap_MultiTexCoord2fvARB},
+ /* [ 204] = 204 */ {__glXDisp_MultiTexCoord2ivARB, __glXDispSwap_MultiTexCoord2ivARB},
+ /* [ 205] = 205 */ {__glXDisp_MultiTexCoord2svARB, __glXDispSwap_MultiTexCoord2svARB},
+ /* [ 206] = 206 */ {__glXDisp_MultiTexCoord3dvARB, __glXDispSwap_MultiTexCoord3dvARB},
+ /* [ 207] = 207 */ {__glXDisp_MultiTexCoord3fvARB, __glXDispSwap_MultiTexCoord3fvARB},
+ /* [ 208] = 208 */ {__glXDisp_MultiTexCoord3ivARB, __glXDispSwap_MultiTexCoord3ivARB},
+ /* [ 209] = 209 */ {__glXDisp_MultiTexCoord3svARB, __glXDispSwap_MultiTexCoord3svARB},
+ /* [ 210] = 210 */ {__glXDisp_MultiTexCoord4dvARB, __glXDispSwap_MultiTexCoord4dvARB},
+ /* [ 211] = 211 */ {__glXDisp_MultiTexCoord4fvARB, __glXDispSwap_MultiTexCoord4fvARB},
+ /* [ 212] = 212 */ {__glXDisp_MultiTexCoord4ivARB, __glXDispSwap_MultiTexCoord4ivARB},
+ /* [ 213] = 213 */ {__glXDisp_MultiTexCoord4svARB, __glXDispSwap_MultiTexCoord4svARB},
+ /* [ 214] = 214 */ {__glXDisp_CompressedTexImage1DARB, __glXDispSwap_CompressedTexImage1DARB},
+ /* [ 215] = 215 */ {__glXDisp_CompressedTexImage2DARB, __glXDispSwap_CompressedTexImage2DARB},
+ /* [ 216] = 216 */ {__glXDisp_CompressedTexImage3DARB, __glXDispSwap_CompressedTexImage3DARB},
+ /* [ 217] = 217 */ {__glXDisp_CompressedTexSubImage1DARB, __glXDispSwap_CompressedTexSubImage1DARB},
+ /* [ 218] = 218 */ {__glXDisp_CompressedTexSubImage2DARB, __glXDispSwap_CompressedTexSubImage2DARB},
+ /* [ 219] = 219 */ {__glXDisp_CompressedTexSubImage3DARB, __glXDispSwap_CompressedTexSubImage3DARB},
+ /* [ 220] = 220 */ {NULL, NULL},
+ /* [ 221] = 221 */ {NULL, NULL},
+ /* [ 222] = 222 */ {NULL, NULL},
+ /* [ 223] = 223 */ {NULL, NULL},
+ /* [ 224] = 224 */ {NULL, NULL},
+ /* [ 225] = 225 */ {NULL, NULL},
+ /* [ 226] = 226 */ {NULL, NULL},
+ /* [ 227] = 227 */ {NULL, NULL},
+ /* [ 228] = 228 */ {NULL, NULL},
+ /* [ 229] = 229 */ {__glXDisp_SampleCoverageARB, __glXDispSwap_SampleCoverageARB},
+ /* [ 230] = 230 */ {__glXDisp_WindowPos3fvMESA, __glXDispSwap_WindowPos3fvMESA},
+ /* [ 231] = 231 */ {__glXDisp_BeginQueryARB, __glXDispSwap_BeginQueryARB},
+ /* [ 232] = 232 */ {__glXDisp_EndQueryARB, __glXDispSwap_EndQueryARB},
+ /* [ 233] = 233 */ {__glXDisp_DrawBuffersARB, __glXDispSwap_DrawBuffersARB},
+ /* [ 234] = 234 */ {NULL, NULL},
+ /* [ 235] = 235 */ {NULL, NULL},
+ /* [ 236] = 236 */ {NULL, NULL},
+ /* [ 237] = 237 */ {NULL, NULL},
+ /* [ 238] = 238 */ {NULL, NULL},
+ /* [ 239] = 239 */ {NULL, NULL},
+ /* [ 240] = 2048 */ {__glXDisp_SampleMaskSGIS, __glXDispSwap_SampleMaskSGIS},
+ /* [ 241] = 2049 */ {__glXDisp_SamplePatternSGIS, __glXDispSwap_SamplePatternSGIS},
+ /* [ 242] = 2050 */ {NULL, NULL},
+ /* [ 243] = 2051 */ {NULL, NULL},
+ /* [ 244] = 2052 */ {NULL, NULL},
+ /* [ 245] = 2053 */ {__glXDisp_ColorTable, __glXDispSwap_ColorTable},
+ /* [ 246] = 2054 */ {__glXDisp_ColorTableParameterfv, __glXDispSwap_ColorTableParameterfv},
+ /* [ 247] = 2055 */ {__glXDisp_ColorTableParameteriv, __glXDispSwap_ColorTableParameteriv},
+ /* [ 248] = 2056 */ {__glXDisp_CopyColorTable, __glXDispSwap_CopyColorTable},
+ /* [ 249] = 2057 */ {NULL, NULL},
+ /* [ 250] = 2058 */ {NULL, NULL},
+ /* [ 251] = 2059 */ {NULL, NULL},
+ /* [ 252] = 2060 */ {NULL, NULL},
+ /* [ 253] = 2061 */ {NULL, NULL},
+ /* [ 254] = 2062 */ {NULL, NULL},
+ /* [ 255] = 2063 */ {NULL, NULL},
+ /* [ 256] = 2064 */ {NULL, NULL},
+ /* [ 257] = 2065 */ {__glXDisp_PointParameterfEXT, __glXDispSwap_PointParameterfEXT},
+ /* [ 258] = 2066 */ {__glXDisp_PointParameterfvEXT, __glXDispSwap_PointParameterfvEXT},
+ /* [ 259] = 2067 */ {NULL, NULL},
+ /* [ 260] = 2068 */ {NULL, NULL},
+ /* [ 261] = 2069 */ {NULL, NULL},
+ /* [ 262] = 2070 */ {NULL, NULL},
+ /* [ 263] = 2071 */ {NULL, NULL},
+ /* [ 264] = 4096 */ {__glXDisp_BlendColor, __glXDispSwap_BlendColor},
+ /* [ 265] = 4097 */ {__glXDisp_BlendEquation, __glXDispSwap_BlendEquation},
+ /* [ 266] = 4098 */ {NULL, NULL},
+ /* [ 267] = 4099 */ {__glXDisp_TexSubImage1D, __glXDispSwap_TexSubImage1D},
+ /* [ 268] = 4100 */ {__glXDisp_TexSubImage2D, __glXDispSwap_TexSubImage2D},
+ /* [ 269] = 4101 */ {__glXDisp_ConvolutionFilter1D, __glXDispSwap_ConvolutionFilter1D},
+ /* [ 270] = 4102 */ {__glXDisp_ConvolutionFilter2D, __glXDispSwap_ConvolutionFilter2D},
+ /* [ 271] = 4103 */ {__glXDisp_ConvolutionParameterf, __glXDispSwap_ConvolutionParameterf},
+ /* [ 272] = 4104 */ {__glXDisp_ConvolutionParameterfv, __glXDispSwap_ConvolutionParameterfv},
+ /* [ 273] = 4105 */ {__glXDisp_ConvolutionParameteri, __glXDispSwap_ConvolutionParameteri},
+ /* [ 274] = 4106 */ {__glXDisp_ConvolutionParameteriv, __glXDispSwap_ConvolutionParameteriv},
+ /* [ 275] = 4107 */ {__glXDisp_CopyConvolutionFilter1D, __glXDispSwap_CopyConvolutionFilter1D},
+ /* [ 276] = 4108 */ {__glXDisp_CopyConvolutionFilter2D, __glXDispSwap_CopyConvolutionFilter2D},
+ /* [ 277] = 4109 */ {__glXDisp_SeparableFilter2D, __glXDispSwap_SeparableFilter2D},
+ /* [ 278] = 4110 */ {__glXDisp_Histogram, __glXDispSwap_Histogram},
+ /* [ 279] = 4111 */ {__glXDisp_Minmax, __glXDispSwap_Minmax},
+ /* [ 280] = 4112 */ {__glXDisp_ResetHistogram, __glXDispSwap_ResetHistogram},
+ /* [ 281] = 4113 */ {__glXDisp_ResetMinmax, __glXDispSwap_ResetMinmax},
+ /* [ 282] = 4114 */ {__glXDisp_TexImage3D, __glXDispSwap_TexImage3D},
+ /* [ 283] = 4115 */ {__glXDisp_TexSubImage3D, __glXDispSwap_TexSubImage3D},
+ /* [ 284] = 4116 */ {NULL, NULL},
+ /* [ 285] = 4117 */ {__glXDisp_BindTexture, __glXDispSwap_BindTexture},
+ /* [ 286] = 4118 */ {__glXDisp_PrioritizeTextures, __glXDispSwap_PrioritizeTextures},
+ /* [ 287] = 4119 */ {__glXDisp_CopyTexImage1D, __glXDispSwap_CopyTexImage1D},
+ /* [ 288] = 4120 */ {__glXDisp_CopyTexImage2D, __glXDispSwap_CopyTexImage2D},
+ /* [ 289] = 4121 */ {__glXDisp_CopyTexSubImage1D, __glXDispSwap_CopyTexSubImage1D},
+ /* [ 290] = 4122 */ {__glXDisp_CopyTexSubImage2D, __glXDispSwap_CopyTexSubImage2D},
+ /* [ 291] = 4123 */ {__glXDisp_CopyTexSubImage3D, __glXDispSwap_CopyTexSubImage3D},
+ /* [ 292] = 4124 */ {__glXDisp_FogCoordfvEXT, __glXDispSwap_FogCoordfvEXT},
+ /* [ 293] = 4125 */ {__glXDisp_FogCoorddvEXT, __glXDispSwap_FogCoorddvEXT},
+ /* [ 294] = 4126 */ {__glXDisp_SecondaryColor3bvEXT, __glXDispSwap_SecondaryColor3bvEXT},
+ /* [ 295] = 4127 */ {__glXDisp_SecondaryColor3svEXT, __glXDispSwap_SecondaryColor3svEXT},
+ /* [ 296] = 4176 */ {NULL, NULL},
+ /* [ 297] = 4177 */ {NULL, NULL},
+ /* [ 298] = 4178 */ {NULL, NULL},
+ /* [ 299] = 4179 */ {NULL, NULL},
+ /* [ 300] = 4180 */ {__glXDisp_BindProgramNV, __glXDispSwap_BindProgramNV},
+ /* [ 301] = 4181 */ {__glXDisp_ExecuteProgramNV, __glXDispSwap_ExecuteProgramNV},
+ /* [ 302] = 4182 */ {__glXDisp_RequestResidentProgramsNV, __glXDispSwap_RequestResidentProgramsNV},
+ /* [ 303] = 4183 */ {__glXDisp_LoadProgramNV, __glXDispSwap_LoadProgramNV},
+ /* [ 304] = 4184 */ {__glXDisp_ProgramParameter4fvNV, __glXDispSwap_ProgramParameter4fvNV},
+ /* [ 305] = 4185 */ {__glXDisp_ProgramEnvParameter4dvARB, __glXDispSwap_ProgramEnvParameter4dvARB},
+ /* [ 306] = 4186 */ {__glXDisp_ProgramParameters4fvNV, __glXDispSwap_ProgramParameters4fvNV},
+ /* [ 307] = 4187 */ {__glXDisp_ProgramParameters4dvNV, __glXDispSwap_ProgramParameters4dvNV},
+ /* [ 308] = 4188 */ {__glXDisp_TrackMatrixNV, __glXDispSwap_TrackMatrixNV},
+ /* [ 309] = 4189 */ {__glXDisp_VertexAttrib1svARB, __glXDispSwap_VertexAttrib1svARB},
+ /* [ 310] = 4190 */ {__glXDisp_VertexAttrib2svARB, __glXDispSwap_VertexAttrib2svARB},
+ /* [ 311] = 4191 */ {__glXDisp_VertexAttrib3svARB, __glXDispSwap_VertexAttrib3svARB},
+ /* [ 312] = 4192 */ {__glXDisp_VertexAttrib4svARB, __glXDispSwap_VertexAttrib4svARB},
+ /* [ 313] = 4193 */ {__glXDisp_VertexAttrib1fvARB, __glXDispSwap_VertexAttrib1fvARB},
+ /* [ 314] = 4194 */ {__glXDisp_VertexAttrib2fvARB, __glXDispSwap_VertexAttrib2fvARB},
+ /* [ 315] = 4195 */ {__glXDisp_VertexAttrib3fvARB, __glXDispSwap_VertexAttrib3fvARB},
+ /* [ 316] = 4196 */ {__glXDisp_VertexAttrib4fvARB, __glXDispSwap_VertexAttrib4fvARB},
+ /* [ 317] = 4197 */ {__glXDisp_VertexAttrib1dvARB, __glXDispSwap_VertexAttrib1dvARB},
+ /* [ 318] = 4198 */ {__glXDisp_VertexAttrib2dvARB, __glXDispSwap_VertexAttrib2dvARB},
+ /* [ 319] = 4199 */ {__glXDisp_VertexAttrib3dvARB, __glXDispSwap_VertexAttrib3dvARB},
+ /* [ 320] = 4200 */ {__glXDisp_VertexAttrib4dvARB, __glXDispSwap_VertexAttrib4dvARB},
+ /* [ 321] = 4201 */ {__glXDisp_VertexAttrib4NubvARB, __glXDispSwap_VertexAttrib4NubvARB},
+ /* [ 322] = 4202 */ {__glXDisp_VertexAttribs1svNV, __glXDispSwap_VertexAttribs1svNV},
+ /* [ 323] = 4203 */ {__glXDisp_VertexAttribs2svNV, __glXDispSwap_VertexAttribs2svNV},
+ /* [ 324] = 4204 */ {__glXDisp_VertexAttribs3svNV, __glXDispSwap_VertexAttribs3svNV},
+ /* [ 325] = 4205 */ {__glXDisp_VertexAttribs4svNV, __glXDispSwap_VertexAttribs4svNV},
+ /* [ 326] = 4206 */ {__glXDisp_VertexAttribs1fvNV, __glXDispSwap_VertexAttribs1fvNV},
+ /* [ 327] = 4207 */ {__glXDisp_VertexAttribs2fvNV, __glXDispSwap_VertexAttribs2fvNV},
+ /* [ 328] = 4208 */ {__glXDisp_VertexAttribs3fvNV, __glXDispSwap_VertexAttribs3fvNV},
+ /* [ 329] = 4209 */ {__glXDisp_VertexAttribs4fvNV, __glXDispSwap_VertexAttribs4fvNV},
+ /* [ 330] = 4210 */ {__glXDisp_VertexAttribs1dvNV, __glXDispSwap_VertexAttribs1dvNV},
+ /* [ 331] = 4211 */ {__glXDisp_VertexAttribs2dvNV, __glXDispSwap_VertexAttribs2dvNV},
+ /* [ 332] = 4212 */ {__glXDisp_VertexAttribs3dvNV, __glXDispSwap_VertexAttribs3dvNV},
+ /* [ 333] = 4213 */ {__glXDisp_VertexAttribs4dvNV, __glXDispSwap_VertexAttribs4dvNV},
+ /* [ 334] = 4214 */ {__glXDisp_VertexAttribs4ubvNV, __glXDispSwap_VertexAttribs4ubvNV},
+ /* [ 335] = 4215 */ {__glXDisp_ProgramLocalParameter4fvARB, __glXDispSwap_ProgramLocalParameter4fvARB},
+ /* [ 336] = 4216 */ {__glXDisp_ProgramLocalParameter4dvARB, __glXDispSwap_ProgramLocalParameter4dvARB},
+ /* [ 337] = 4217 */ {__glXDisp_ProgramStringARB, __glXDispSwap_ProgramStringARB},
+ /* [ 338] = 4218 */ {__glXDisp_ProgramNamedParameter4fvNV, __glXDispSwap_ProgramNamedParameter4fvNV},
+ /* [ 339] = 4219 */ {__glXDisp_ProgramNamedParameter4dvNV, __glXDispSwap_ProgramNamedParameter4dvNV},
+ /* [ 340] = 4220 */ {__glXDisp_ActiveStencilFaceEXT, __glXDispSwap_ActiveStencilFaceEXT},
+ /* [ 341] = 4221 */ {__glXDisp_PointParameteriNV, __glXDispSwap_PointParameteriNV},
+ /* [ 342] = 4222 */ {__glXDisp_PointParameterivNV, __glXDispSwap_PointParameterivNV},
+ /* [ 343] = 4223 */ {NULL, NULL},
+ /* [ 344] = 4224 */ {NULL, NULL},
+ /* [ 345] = 4225 */ {NULL, NULL},
+ /* [ 346] = 4226 */ {NULL, NULL},
+ /* [ 347] = 4227 */ {NULL, NULL},
+ /* [ 348] = 4228 */ {__glXDisp_BlendEquationSeparateEXT, __glXDispSwap_BlendEquationSeparateEXT},
+ /* [ 349] = 4229 */ {NULL, NULL},
+ /* [ 350] = 4230 */ {__glXDisp_VertexAttrib4bvARB, __glXDispSwap_VertexAttrib4bvARB},
+ /* [ 351] = 4231 */ {__glXDisp_VertexAttrib4ivARB, __glXDispSwap_VertexAttrib4ivARB},
+ /* [ 352] = 4232 */ {__glXDisp_VertexAttrib4ubvARB, __glXDispSwap_VertexAttrib4ubvARB},
+ /* [ 353] = 4233 */ {__glXDisp_VertexAttrib4usvARB, __glXDispSwap_VertexAttrib4usvARB},
+ /* [ 354] = 4234 */ {__glXDisp_VertexAttrib4uivARB, __glXDispSwap_VertexAttrib4uivARB},
+ /* [ 355] = 4235 */ {__glXDisp_VertexAttrib4NbvARB, __glXDispSwap_VertexAttrib4NbvARB},
+ /* [ 356] = 4236 */ {__glXDisp_VertexAttrib4NsvARB, __glXDispSwap_VertexAttrib4NsvARB},
+ /* [ 357] = 4237 */ {__glXDisp_VertexAttrib4NivARB, __glXDispSwap_VertexAttrib4NivARB},
+ /* [ 358] = 4238 */ {__glXDisp_VertexAttrib4NusvARB, __glXDispSwap_VertexAttrib4NusvARB},
+ /* [ 359] = 4239 */ {__glXDisp_VertexAttrib4NuivARB, __glXDispSwap_VertexAttrib4NuivARB},
+ /* [ 360] = 4128 */ {__glXDisp_SecondaryColor3ivEXT, __glXDispSwap_SecondaryColor3ivEXT},
+ /* [ 361] = 4129 */ {__glXDisp_SecondaryColor3fvEXT, __glXDispSwap_SecondaryColor3fvEXT},
+ /* [ 362] = 4130 */ {__glXDisp_SecondaryColor3dvEXT, __glXDispSwap_SecondaryColor3dvEXT},
+ /* [ 363] = 4131 */ {__glXDisp_SecondaryColor3ubvEXT, __glXDispSwap_SecondaryColor3ubvEXT},
+ /* [ 364] = 4132 */ {__glXDisp_SecondaryColor3usvEXT, __glXDispSwap_SecondaryColor3usvEXT},
+ /* [ 365] = 4133 */ {__glXDisp_SecondaryColor3uivEXT, __glXDispSwap_SecondaryColor3uivEXT},
+ /* [ 366] = 4134 */ {__glXDisp_BlendFuncSeparateEXT, __glXDispSwap_BlendFuncSeparateEXT},
+ /* [ 367] = 4135 */ {NULL, NULL},
+ /* [ 368] = 4264 */ {NULL, NULL},
+ /* [ 369] = 4265 */ {__glXDisp_VertexAttrib1svNV, __glXDispSwap_VertexAttrib1svNV},
+ /* [ 370] = 4266 */ {__glXDisp_VertexAttrib2svNV, __glXDispSwap_VertexAttrib2svNV},
+ /* [ 371] = 4267 */ {__glXDisp_VertexAttrib3svNV, __glXDispSwap_VertexAttrib3svNV},
+ /* [ 372] = 4268 */ {__glXDisp_VertexAttrib4svNV, __glXDispSwap_VertexAttrib4svNV},
+ /* [ 373] = 4269 */ {__glXDisp_VertexAttrib1fvNV, __glXDispSwap_VertexAttrib1fvNV},
+ /* [ 374] = 4270 */ {__glXDisp_VertexAttrib2fvNV, __glXDispSwap_VertexAttrib2fvNV},
+ /* [ 375] = 4271 */ {__glXDisp_VertexAttrib3fvNV, __glXDispSwap_VertexAttrib3fvNV},
+ /* [ 376] = 4272 */ {__glXDisp_VertexAttrib4fvNV, __glXDispSwap_VertexAttrib4fvNV},
+ /* [ 377] = 4273 */ {__glXDisp_VertexAttrib1dvNV, __glXDispSwap_VertexAttrib1dvNV},
+ /* [ 378] = 4274 */ {__glXDisp_VertexAttrib2dvNV, __glXDispSwap_VertexAttrib2dvNV},
+ /* [ 379] = 4275 */ {__glXDisp_VertexAttrib3dvNV, __glXDispSwap_VertexAttrib3dvNV},
+ /* [ 380] = 4276 */ {__glXDisp_VertexAttrib4dvNV, __glXDispSwap_VertexAttrib4dvNV},
+ /* [ 381] = 4277 */ {__glXDisp_VertexAttrib4ubvNV, __glXDispSwap_VertexAttrib4ubvNV},
+ /* [ 382] = 4278 */ {NULL, NULL},
+ /* [ 383] = 4279 */ {NULL, NULL},
+ /* [ 384] = 4312 */ {NULL, NULL},
+ /* [ 385] = 4313 */ {NULL, NULL},
+ /* [ 386] = 4314 */ {NULL, NULL},
+ /* [ 387] = 4315 */ {NULL, NULL},
+ /* [ 388] = 4316 */ {__glXDisp_BindRenderbufferEXT, __glXDispSwap_BindRenderbufferEXT},
+ /* [ 389] = 4317 */ {__glXDisp_DeleteRenderbuffersEXT, __glXDispSwap_DeleteRenderbuffersEXT},
+ /* [ 390] = 4318 */ {__glXDisp_RenderbufferStorageEXT, __glXDispSwap_RenderbufferStorageEXT},
+ /* [ 391] = 4319 */ {__glXDisp_BindFramebufferEXT, __glXDispSwap_BindFramebufferEXT},
+ /* [ 392] = 4320 */ {__glXDisp_DeleteFramebuffersEXT, __glXDispSwap_DeleteFramebuffersEXT},
+ /* [ 393] = 4321 */ {__glXDisp_FramebufferTexture1DEXT, __glXDispSwap_FramebufferTexture1DEXT},
+ /* [ 394] = 4322 */ {__glXDisp_FramebufferTexture2DEXT, __glXDispSwap_FramebufferTexture2DEXT},
+ /* [ 395] = 4323 */ {__glXDisp_FramebufferTexture3DEXT, __glXDispSwap_FramebufferTexture3DEXT},
+ /* [ 396] = 4324 */ {__glXDisp_FramebufferRenderbufferEXT, __glXDispSwap_FramebufferRenderbufferEXT},
+ /* [ 397] = 4325 */ {__glXDisp_GenerateMipmapEXT, __glXDispSwap_GenerateMipmapEXT},
+ /* [ 398] = 4326 */ {NULL, NULL},
+ /* [ 399] = 4327 */ {NULL, NULL},
+};
+
+static const int_fast16_t Render_size_table[400][2] = {
+ /* [ 0] = 0 */ { 0, ~0},
+ /* [ 1] = 1 */ { 8, ~0},
+ /* [ 2] = 2 */ { 12, 0},
+ /* [ 3] = 3 */ { 8, ~0},
+ /* [ 4] = 4 */ { 8, ~0},
+ /* [ 5] = 5 */ { 48, 1},
+ /* [ 6] = 6 */ { 8, ~0},
+ /* [ 7] = 7 */ { 28, ~0},
+ /* [ 8] = 8 */ { 16, ~0},
+ /* [ 9] = 9 */ { 16, ~0},
+ /* [ 10] = 10 */ { 12, ~0},
+ /* [ 11] = 11 */ { 8, ~0},
+ /* [ 12] = 12 */ { 16, ~0},
+ /* [ 13] = 13 */ { 12, ~0},
+ /* [ 14] = 14 */ { 8, ~0},
+ /* [ 15] = 15 */ { 36, ~0},
+ /* [ 16] = 16 */ { 20, ~0},
+ /* [ 17] = 17 */ { 20, ~0},
+ /* [ 18] = 18 */ { 12, ~0},
+ /* [ 19] = 19 */ { 8, ~0},
+ /* [ 20] = 20 */ { 20, ~0},
+ /* [ 21] = 21 */ { 12, ~0},
+ /* [ 22] = 22 */ { 8, ~0},
+ /* [ 23] = 23 */ { 4, ~0},
+ /* [ 24] = 24 */ { 12, ~0},
+ /* [ 25] = 25 */ { 8, ~0},
+ /* [ 26] = 26 */ { 8, ~0},
+ /* [ 27] = 27 */ { 8, ~0},
+ /* [ 28] = 28 */ { 8, ~0},
+ /* [ 29] = 29 */ { 28, ~0},
+ /* [ 30] = 30 */ { 16, ~0},
+ /* [ 31] = 31 */ { 16, ~0},
+ /* [ 32] = 32 */ { 12, ~0},
+ /* [ 33] = 33 */ { 20, ~0},
+ /* [ 34] = 34 */ { 12, ~0},
+ /* [ 35] = 35 */ { 12, ~0},
+ /* [ 36] = 36 */ { 8, ~0},
+ /* [ 37] = 37 */ { 28, ~0},
+ /* [ 38] = 38 */ { 16, ~0},
+ /* [ 39] = 39 */ { 16, ~0},
+ /* [ 40] = 40 */ { 12, ~0},
+ /* [ 41] = 41 */ { 36, ~0},
+ /* [ 42] = 42 */ { 20, ~0},
+ /* [ 43] = 43 */ { 20, ~0},
+ /* [ 44] = 44 */ { 12, ~0},
+ /* [ 45] = 45 */ { 36, ~0},
+ /* [ 46] = 46 */ { 20, ~0},
+ /* [ 47] = 47 */ { 20, ~0},
+ /* [ 48] = 48 */ { 12, ~0},
+ /* [ 49] = 49 */ { 12, ~0},
+ /* [ 50] = 50 */ { 8, ~0},
+ /* [ 51] = 51 */ { 8, ~0},
+ /* [ 52] = 52 */ { 8, ~0},
+ /* [ 53] = 53 */ { 20, ~0},
+ /* [ 54] = 54 */ { 12, ~0},
+ /* [ 55] = 55 */ { 12, ~0},
+ /* [ 56] = 56 */ { 8, ~0},
+ /* [ 57] = 57 */ { 28, ~0},
+ /* [ 58] = 58 */ { 16, ~0},
+ /* [ 59] = 59 */ { 16, ~0},
+ /* [ 60] = 60 */ { 12, ~0},
+ /* [ 61] = 61 */ { 36, ~0},
+ /* [ 62] = 62 */ { 20, ~0},
+ /* [ 63] = 63 */ { 20, ~0},
+ /* [ 64] = 64 */ { 12, ~0},
+ /* [ 65] = 65 */ { 20, ~0},
+ /* [ 66] = 66 */ { 12, ~0},
+ /* [ 67] = 67 */ { 12, ~0},
+ /* [ 68] = 68 */ { 8, ~0},
+ /* [ 69] = 69 */ { 28, ~0},
+ /* [ 70] = 70 */ { 16, ~0},
+ /* [ 71] = 71 */ { 16, ~0},
+ /* [ 72] = 72 */ { 12, ~0},
+ /* [ 73] = 73 */ { 36, ~0},
+ /* [ 74] = 74 */ { 20, ~0},
+ /* [ 75] = 75 */ { 20, ~0},
+ /* [ 76] = 76 */ { 12, ~0},
+ /* [ 77] = 77 */ { 40, ~0},
+ /* [ 78] = 78 */ { 12, ~0},
+ /* [ 79] = 79 */ { 8, ~0},
+ /* [ 80] = 80 */ { 12, ~0},
+ /* [ 81] = 81 */ { 8, 2},
+ /* [ 82] = 82 */ { 12, ~0},
+ /* [ 83] = 83 */ { 8, 3},
+ /* [ 84] = 84 */ { 8, ~0},
+ /* [ 85] = 85 */ { 12, ~0},
+ /* [ 86] = 86 */ { 16, ~0},
+ /* [ 87] = 87 */ { 12, 4},
+ /* [ 88] = 88 */ { 16, ~0},
+ /* [ 89] = 89 */ { 12, 5},
+ /* [ 90] = 90 */ { 12, ~0},
+ /* [ 91] = 91 */ { 8, 6},
+ /* [ 92] = 92 */ { 12, ~0},
+ /* [ 93] = 93 */ { 8, 7},
+ /* [ 94] = 94 */ { 12, ~0},
+ /* [ 95] = 95 */ { 8, ~0},
+ /* [ 96] = 96 */ { 16, ~0},
+ /* [ 97] = 97 */ { 12, 8},
+ /* [ 98] = 98 */ { 16, ~0},
+ /* [ 99] = 99 */ { 12, 9},
+ /* [100] = 100 */ { 8, ~0},
+ /* [101] = 101 */ { 12, ~0},
+ /* [102] = 102 */ { 24, 10},
+ /* [103] = 103 */ { 20, ~0},
+ /* [104] = 104 */ { 8, ~0},
+ /* [105] = 105 */ { 16, ~0},
+ /* [106] = 106 */ { 12, 11},
+ /* [107] = 107 */ { 16, ~0},
+ /* [108] = 108 */ { 12, 12},
+ /* [109] = 109 */ { 56, 13},
+ /* [110] = 110 */ { 56, 14},
+ /* [111] = 111 */ { 16, ~0},
+ /* [112] = 112 */ { 12, 15},
+ /* [113] = 113 */ { 16, ~0},
+ /* [114] = 114 */ { 12, 16},
+ /* [115] = 115 */ { 20, ~0},
+ /* [116] = 116 */ { 12, 17},
+ /* [117] = 117 */ { 16, ~0},
+ /* [118] = 118 */ { 12, 18},
+ /* [119] = 119 */ { 16, ~0},
+ /* [120] = 120 */ { 12, 19},
+ /* [121] = 121 */ { 4, ~0},
+ /* [122] = 122 */ { 8, ~0},
+ /* [123] = 123 */ { 8, ~0},
+ /* [124] = 124 */ { 4, ~0},
+ /* [125] = 125 */ { 8, ~0},
+ /* [126] = 126 */ { 8, ~0},
+ /* [127] = 127 */ { 8, ~0},
+ /* [128] = 128 */ { 20, ~0},
+ /* [129] = 129 */ { 8, ~0},
+ /* [130] = 130 */ { 20, ~0},
+ /* [131] = 131 */ { 8, ~0},
+ /* [132] = 132 */ { 12, ~0},
+ /* [133] = 133 */ { 8, ~0},
+ /* [134] = 134 */ { 8, ~0},
+ /* [135] = 135 */ { 8, ~0},
+ /* [136] = 136 */ { 8, ~0},
+ /* [137] = 137 */ { 12, ~0},
+ /* [138] = 138 */ { 8, ~0},
+ /* [139] = 139 */ { 8, ~0},
+ /* [140] = 140 */ { 0, ~0},
+ /* [141] = 141 */ { 4, ~0},
+ /* [142] = 142 */ { 8, ~0},
+ /* [143] = 143 */ { 28, 20},
+ /* [144] = 144 */ { 20, 21},
+ /* [145] = 145 */ { 48, 22},
+ /* [146] = 146 */ { 32, 23},
+ /* [147] = 147 */ { 24, ~0},
+ /* [148] = 148 */ { 16, ~0},
+ /* [149] = 149 */ { 44, ~0},
+ /* [150] = 150 */ { 28, ~0},
+ /* [151] = 151 */ { 12, ~0},
+ /* [152] = 152 */ { 8, ~0},
+ /* [153] = 153 */ { 20, ~0},
+ /* [154] = 154 */ { 12, ~0},
+ /* [155] = 155 */ { 16, ~0},
+ /* [156] = 156 */ { 8, ~0},
+ /* [157] = 157 */ { 24, ~0},
+ /* [158] = 158 */ { 12, ~0},
+ /* [159] = 159 */ { 12, ~0},
+ /* [160] = 160 */ { 12, ~0},
+ /* [161] = 161 */ { 8, ~0},
+ /* [162] = 162 */ { 16, ~0},
+ /* [163] = 163 */ { 16, ~0},
+ /* [164] = 164 */ { 8, ~0},
+ /* [165] = 165 */ { 12, ~0},
+ /* [166] = 166 */ { 12, ~0},
+ /* [167] = 167 */ { 12, ~0},
+ /* [168] = 168 */ { 12, 24},
+ /* [169] = 169 */ { 12, 25},
+ /* [170] = 170 */ { 12, 26},
+ /* [171] = 171 */ { 8, ~0},
+ /* [172] = 172 */ { 24, ~0},
+ /* [173] = 173 */ { 40, 27},
+ /* [174] = 174 */ { 20, ~0},
+ /* [175] = 175 */ { 52, ~0},
+ /* [176] = 176 */ { 4, ~0},
+ /* [177] = 177 */ { 68, ~0},
+ /* [178] = 178 */ {132, ~0},
+ /* [179] = 179 */ { 8, ~0},
+ /* [180] = 180 */ { 68, ~0},
+ /* [181] = 181 */ {132, ~0},
+ /* [182] = 182 */ { 52, ~0},
+ /* [183] = 183 */ { 4, ~0},
+ /* [184] = 184 */ { 4, ~0},
+ /* [185] = 185 */ { 36, ~0},
+ /* [186] = 186 */ { 20, ~0},
+ /* [187] = 187 */ { 28, ~0},
+ /* [188] = 188 */ { 16, ~0},
+ /* [189] = 189 */ { 28, ~0},
+ /* [190] = 190 */ { 16, ~0},
+ /* [191] = 191 */ { 20, ~0},
+ /* [192] = 192 */ { 12, ~0},
+ /* [193] = 193 */ { 16, 28},
+ /* [194] = 194 */ { 8, ~0},
+ /* [195] = 195 */ { 44, 29},
+ /* [196] = 196 */ { 24, ~0},
+ /* [197] = 197 */ { 8, ~0},
+ /* [198] = 198 */ { 16, ~0},
+ /* [199] = 199 */ { 12, ~0},
+ /* [200] = 200 */ { 12, ~0},
+ /* [201] = 201 */ { 12, ~0},
+ /* [202] = 202 */ { 24, ~0},
+ /* [203] = 203 */ { 16, ~0},
+ /* [204] = 204 */ { 16, ~0},
+ /* [205] = 205 */ { 12, ~0},
+ /* [206] = 206 */ { 32, ~0},
+ /* [207] = 207 */ { 20, ~0},
+ /* [208] = 208 */ { 20, ~0},
+ /* [209] = 209 */ { 16, ~0},
+ /* [210] = 210 */ { 40, ~0},
+ /* [211] = 211 */ { 24, ~0},
+ /* [212] = 212 */ { 24, ~0},
+ /* [213] = 213 */ { 16, ~0},
+ /* [214] = 214 */ { 28, 30},
+ /* [215] = 215 */ { 32, 31},
+ /* [216] = 216 */ { 36, 32},
+ /* [217] = 217 */ { 28, 33},
+ /* [218] = 218 */ { 36, 34},
+ /* [219] = 219 */ { 44, 35},
+ /* [220] = 220 */ { 0, ~0},
+ /* [221] = 221 */ { 0, ~0},
+ /* [222] = 222 */ { 0, ~0},
+ /* [223] = 223 */ { 0, ~0},
+ /* [224] = 224 */ { 0, ~0},
+ /* [225] = 225 */ { 0, ~0},
+ /* [226] = 226 */ { 0, ~0},
+ /* [227] = 227 */ { 0, ~0},
+ /* [228] = 228 */ { 0, ~0},
+ /* [229] = 229 */ { 12, ~0},
+ /* [230] = 230 */ { 16, ~0},
+ /* [231] = 231 */ { 12, ~0},
+ /* [232] = 232 */ { 8, ~0},
+ /* [233] = 233 */ { 8, 36},
+ /* [234] = 234 */ { 0, ~0},
+ /* [235] = 235 */ { 0, ~0},
+ /* [236] = 236 */ { 0, ~0},
+ /* [237] = 237 */ { 0, ~0},
+ /* [238] = 238 */ { 0, ~0},
+ /* [239] = 239 */ { 0, ~0},
+ /* [240] = 2048 */ { 12, ~0},
+ /* [241] = 2049 */ { 8, ~0},
+ /* [242] = 2050 */ { 0, ~0},
+ /* [243] = 2051 */ { 0, ~0},
+ /* [244] = 2052 */ { 0, ~0},
+ /* [245] = 2053 */ { 44, 37},
+ /* [246] = 2054 */ { 12, 38},
+ /* [247] = 2055 */ { 12, 39},
+ /* [248] = 2056 */ { 24, ~0},
+ /* [249] = 2057 */ { 0, ~0},
+ /* [250] = 2058 */ { 0, ~0},
+ /* [251] = 2059 */ { 0, ~0},
+ /* [252] = 2060 */ { 0, ~0},
+ /* [253] = 2061 */ { 0, ~0},
+ /* [254] = 2062 */ { 0, ~0},
+ /* [255] = 2063 */ { 0, ~0},
+ /* [256] = 2064 */ { 0, ~0},
+ /* [257] = 2065 */ { 12, ~0},
+ /* [258] = 2066 */ { 8, 40},
+ /* [259] = 2067 */ { 0, ~0},
+ /* [260] = 2068 */ { 0, ~0},
+ /* [261] = 2069 */ { 0, ~0},
+ /* [262] = 2070 */ { 0, ~0},
+ /* [263] = 2071 */ { 0, ~0},
+ /* [264] = 4096 */ { 20, ~0},
+ /* [265] = 4097 */ { 8, ~0},
+ /* [266] = 4098 */ { 0, ~0},
+ /* [267] = 4099 */ { 60, 41},
+ /* [268] = 4100 */ { 60, 42},
+ /* [269] = 4101 */ { 48, 43},
+ /* [270] = 4102 */ { 48, 44},
+ /* [271] = 4103 */ { 16, ~0},
+ /* [272] = 4104 */ { 12, 45},
+ /* [273] = 4105 */ { 16, ~0},
+ /* [274] = 4106 */ { 12, 46},
+ /* [275] = 4107 */ { 24, ~0},
+ /* [276] = 4108 */ { 28, ~0},
+ /* [277] = 4109 */ { 32, 47},
+ /* [278] = 4110 */ { 20, ~0},
+ /* [279] = 4111 */ { 16, ~0},
+ /* [280] = 4112 */ { 8, ~0},
+ /* [281] = 4113 */ { 8, ~0},
+ /* [282] = 4114 */ { 84, 48},
+ /* [283] = 4115 */ { 92, 49},
+ /* [284] = 4116 */ { 0, ~0},
+ /* [285] = 4117 */ { 12, ~0},
+ /* [286] = 4118 */ { 8, 50},
+ /* [287] = 4119 */ { 32, ~0},
+ /* [288] = 4120 */ { 36, ~0},
+ /* [289] = 4121 */ { 28, ~0},
+ /* [290] = 4122 */ { 36, ~0},
+ /* [291] = 4123 */ { 40, ~0},
+ /* [292] = 4124 */ { 8, ~0},
+ /* [293] = 4125 */ { 12, ~0},
+ /* [294] = 4126 */ { 8, ~0},
+ /* [295] = 4127 */ { 12, ~0},
+ /* [296] = 4176 */ { 0, ~0},
+ /* [297] = 4177 */ { 0, ~0},
+ /* [298] = 4178 */ { 0, ~0},
+ /* [299] = 4179 */ { 0, ~0},
+ /* [300] = 4180 */ { 12, ~0},
+ /* [301] = 4181 */ { 28, ~0},
+ /* [302] = 4182 */ { 8, 51},
+ /* [303] = 4183 */ { 16, 52},
+ /* [304] = 4184 */ { 28, ~0},
+ /* [305] = 4185 */ { 44, ~0},
+ /* [306] = 4186 */ { 16, 53},
+ /* [307] = 4187 */ { 16, 54},
+ /* [308] = 4188 */ { 20, ~0},
+ /* [309] = 4189 */ { 12, ~0},
+ /* [310] = 4190 */ { 12, ~0},
+ /* [311] = 4191 */ { 16, ~0},
+ /* [312] = 4192 */ { 16, ~0},
+ /* [313] = 4193 */ { 12, ~0},
+ /* [314] = 4194 */ { 16, ~0},
+ /* [315] = 4195 */ { 20, ~0},
+ /* [316] = 4196 */ { 24, ~0},
+ /* [317] = 4197 */ { 16, ~0},
+ /* [318] = 4198 */ { 24, ~0},
+ /* [319] = 4199 */ { 32, ~0},
+ /* [320] = 4200 */ { 40, ~0},
+ /* [321] = 4201 */ { 12, ~0},
+ /* [322] = 4202 */ { 12, 55},
+ /* [323] = 4203 */ { 12, 56},
+ /* [324] = 4204 */ { 12, 57},
+ /* [325] = 4205 */ { 12, 58},
+ /* [326] = 4206 */ { 12, 59},
+ /* [327] = 4207 */ { 12, 60},
+ /* [328] = 4208 */ { 12, 61},
+ /* [329] = 4209 */ { 12, 62},
+ /* [330] = 4210 */ { 12, 63},
+ /* [331] = 4211 */ { 12, 64},
+ /* [332] = 4212 */ { 12, 65},
+ /* [333] = 4213 */ { 12, 66},
+ /* [334] = 4214 */ { 12, 67},
+ /* [335] = 4215 */ { 28, ~0},
+ /* [336] = 4216 */ { 44, ~0},
+ /* [337] = 4217 */ { 16, 68},
+ /* [338] = 4218 */ { 28, 69},
+ /* [339] = 4219 */ { 44, 70},
+ /* [340] = 4220 */ { 8, ~0},
+ /* [341] = 4221 */ { 12, ~0},
+ /* [342] = 4222 */ { 8, 71},
+ /* [343] = 4223 */ { 0, ~0},
+ /* [344] = 4224 */ { 0, ~0},
+ /* [345] = 4225 */ { 0, ~0},
+ /* [346] = 4226 */ { 0, ~0},
+ /* [347] = 4227 */ { 0, ~0},
+ /* [348] = 4228 */ { 12, ~0},
+ /* [349] = 4229 */ { 0, ~0},
+ /* [350] = 4230 */ { 12, ~0},
+ /* [351] = 4231 */ { 24, ~0},
+ /* [352] = 4232 */ { 12, ~0},
+ /* [353] = 4233 */ { 16, ~0},
+ /* [354] = 4234 */ { 24, ~0},
+ /* [355] = 4235 */ { 12, ~0},
+ /* [356] = 4236 */ { 16, ~0},
+ /* [357] = 4237 */ { 24, ~0},
+ /* [358] = 4238 */ { 16, ~0},
+ /* [359] = 4239 */ { 24, ~0},
+ /* [360] = 4128 */ { 16, ~0},
+ /* [361] = 4129 */ { 16, ~0},
+ /* [362] = 4130 */ { 28, ~0},
+ /* [363] = 4131 */ { 8, ~0},
+ /* [364] = 4132 */ { 12, ~0},
+ /* [365] = 4133 */ { 16, ~0},
+ /* [366] = 4134 */ { 20, ~0},
+ /* [367] = 4135 */ { 0, ~0},
+ /* [368] = 4264 */ { 0, ~0},
+ /* [369] = 4265 */ { 12, ~0},
+ /* [370] = 4266 */ { 12, ~0},
+ /* [371] = 4267 */ { 16, ~0},
+ /* [372] = 4268 */ { 16, ~0},
+ /* [373] = 4269 */ { 12, ~0},
+ /* [374] = 4270 */ { 16, ~0},
+ /* [375] = 4271 */ { 20, ~0},
+ /* [376] = 4272 */ { 24, ~0},
+ /* [377] = 4273 */ { 16, ~0},
+ /* [378] = 4274 */ { 24, ~0},
+ /* [379] = 4275 */ { 32, ~0},
+ /* [380] = 4276 */ { 40, ~0},
+ /* [381] = 4277 */ { 12, ~0},
+ /* [382] = 4278 */ { 0, ~0},
+ /* [383] = 4279 */ { 0, ~0},
+ /* [384] = 4312 */ { 0, ~0},
+ /* [385] = 4313 */ { 0, ~0},
+ /* [386] = 4314 */ { 0, ~0},
+ /* [387] = 4315 */ { 0, ~0},
+ /* [388] = 4316 */ { 12, ~0},
+ /* [389] = 4317 */ { 8, 72},
+ /* [390] = 4318 */ { 20, ~0},
+ /* [391] = 4319 */ { 12, ~0},
+ /* [392] = 4320 */ { 8, 73},
+ /* [393] = 4321 */ { 24, ~0},
+ /* [394] = 4322 */ { 24, ~0},
+ /* [395] = 4323 */ { 28, ~0},
+ /* [396] = 4324 */ { 20, ~0},
+ /* [397] = 4325 */ { 8, ~0},
+ /* [398] = 4326 */ { 0, ~0},
+ /* [399] = 4327 */ { 0, ~0},
+};
+
+static const gl_proto_size_func Render_size_func_table[74] = {
+ __glXCallListsReqSize,
+ __glXBitmapReqSize,
+ __glXFogfvReqSize,
+ __glXFogivReqSize,
+ __glXLightfvReqSize,
+ __glXLightivReqSize,
+ __glXLightModelfvReqSize,
+ __glXLightModelivReqSize,
+ __glXMaterialfvReqSize,
+ __glXMaterialivReqSize,
+ __glXPolygonStippleReqSize,
+ __glXTexParameterfvReqSize,
+ __glXTexParameterivReqSize,
+ __glXTexImage1DReqSize,
+ __glXTexImage2DReqSize,
+ __glXTexEnvfvReqSize,
+ __glXTexEnvivReqSize,
+ __glXTexGendvReqSize,
+ __glXTexGenfvReqSize,
+ __glXTexGenivReqSize,
+ __glXMap1dReqSize,
+ __glXMap1fReqSize,
+ __glXMap2dReqSize,
+ __glXMap2fReqSize,
+ __glXPixelMapfvReqSize,
+ __glXPixelMapuivReqSize,
+ __glXPixelMapusvReqSize,
+ __glXDrawPixelsReqSize,
+ __glXDrawArraysReqSize,
+ __glXColorSubTableReqSize,
+ __glXCompressedTexImage1DARBReqSize,
+ __glXCompressedTexImage2DARBReqSize,
+ __glXCompressedTexImage3DARBReqSize,
+ __glXCompressedTexSubImage1DARBReqSize,
+ __glXCompressedTexSubImage2DARBReqSize,
+ __glXCompressedTexSubImage3DARBReqSize,
+ __glXDrawBuffersARBReqSize,
+ __glXColorTableReqSize,
+ __glXColorTableParameterfvReqSize,
+ __glXColorTableParameterivReqSize,
+ __glXPointParameterfvEXTReqSize,
+ __glXTexSubImage1DReqSize,
+ __glXTexSubImage2DReqSize,
+ __glXConvolutionFilter1DReqSize,
+ __glXConvolutionFilter2DReqSize,
+ __glXConvolutionParameterfvReqSize,
+ __glXConvolutionParameterivReqSize,
+ __glXSeparableFilter2DReqSize,
+ __glXTexImage3DReqSize,
+ __glXTexSubImage3DReqSize,
+ __glXPrioritizeTexturesReqSize,
+ __glXRequestResidentProgramsNVReqSize,
+ __glXLoadProgramNVReqSize,
+ __glXProgramParameters4fvNVReqSize,
+ __glXProgramParameters4dvNVReqSize,
+ __glXVertexAttribs1svNVReqSize,
+ __glXVertexAttribs2svNVReqSize,
+ __glXVertexAttribs3svNVReqSize,
+ __glXVertexAttribs4svNVReqSize,
+ __glXVertexAttribs1fvNVReqSize,
+ __glXVertexAttribs2fvNVReqSize,
+ __glXVertexAttribs3fvNVReqSize,
+ __glXVertexAttribs4fvNVReqSize,
+ __glXVertexAttribs1dvNVReqSize,
+ __glXVertexAttribs2dvNVReqSize,
+ __glXVertexAttribs3dvNVReqSize,
+ __glXVertexAttribs4dvNVReqSize,
+ __glXVertexAttribs4ubvNVReqSize,
+ __glXProgramStringARBReqSize,
+ __glXProgramNamedParameter4fvNVReqSize,
+ __glXProgramNamedParameter4dvNVReqSize,
+ __glXPointParameterivNVReqSize,
+ __glXDeleteRenderbuffersEXTReqSize,
+ __glXDeleteFramebuffersEXTReqSize,
+};
+
+const struct __glXDispatchInfo Render_dispatch_info = {
+ 13,
+ Render_dispatch_tree,
+ Render_function_table,
+ Render_size_table,
+ Render_size_func_table
+};
+
+/*****************************************************************/
+/* tree depth = 13 */
+static const int_fast16_t VendorPriv_dispatch_tree[155] = {
+ /* [0] -> opcode range [0, 131072], node depth 1 */
+ 2,
+ 5,
+ EMPTY_LEAF,
+ 119,
+ EMPTY_LEAF,
+
+ /* [5] -> opcode range [0, 32768], node depth 2 */
+ 1,
+ 8,
+ EMPTY_LEAF,
+
+ /* [8] -> opcode range [0, 16384], node depth 3 */
+ 1,
+ 11,
+ EMPTY_LEAF,
+
+ /* [11] -> opcode range [0, 8192], node depth 4 */
+ 2,
+ 16,
+ EMPTY_LEAF,
+ 78,
+ EMPTY_LEAF,
+
+ /* [16] -> opcode range [0, 2048], node depth 5 */
+ 2,
+ 21,
+ EMPTY_LEAF,
+ 36,
+ EMPTY_LEAF,
+
+ /* [21] -> opcode range [0, 512], node depth 6 */
+ 1,
+ 24,
+ EMPTY_LEAF,
+
+ /* [24] -> opcode range [0, 256], node depth 7 */
+ 1,
+ 27,
+ EMPTY_LEAF,
+
+ /* [27] -> opcode range [0, 128], node depth 8 */
+ 1,
+ 30,
+ EMPTY_LEAF,
+
+ /* [30] -> opcode range [0, 64], node depth 9 */
+ 1,
+ 33,
+ EMPTY_LEAF,
+
+ /* [33] -> opcode range [0, 32], node depth 10 */
+ 1,
+ LEAF(0),
+ EMPTY_LEAF,
+
+ /* [36] -> opcode range [1024, 1536], node depth 6 */
+ 2,
+ 41,
+ EMPTY_LEAF,
+ 53,
+ 67,
+
+ /* [41] -> opcode range [1024, 1152], node depth 7 */
+ 1,
+ 44,
+ EMPTY_LEAF,
+
+ /* [44] -> opcode range [1024, 1088], node depth 8 */
+ 1,
+ 47,
+ EMPTY_LEAF,
+
+ /* [47] -> opcode range [1024, 1056], node depth 9 */
+ 1,
+ 50,
+ EMPTY_LEAF,
+
+ /* [50] -> opcode range [1024, 1040], node depth 10 */
+ 1,
+ LEAF(16),
+ EMPTY_LEAF,
+
+ /* [53] -> opcode range [1280, 1408], node depth 7 */
+ 1,
+ 56,
+ EMPTY_LEAF,
+
+ /* [56] -> opcode range [1280, 1344], node depth 8 */
+ 2,
+ 61,
+ LEAF(24),
+ EMPTY_LEAF,
+ 64,
+
+ /* [61] -> opcode range [1280, 1296], node depth 9 */
+ 1,
+ EMPTY_LEAF,
+ LEAF(40),
+
+ /* [64] -> opcode range [1328, 1344], node depth 9 */
+ 1,
+ LEAF(48),
+ EMPTY_LEAF,
+
+ /* [67] -> opcode range [1408, 1536], node depth 7 */
+ 1,
+ 70,
+ EMPTY_LEAF,
+
+ /* [70] -> opcode range [1408, 1472], node depth 8 */
+ 1,
+ 73,
+ EMPTY_LEAF,
+
+ /* [73] -> opcode range [1408, 1440], node depth 9 */
+ 2,
+ EMPTY_LEAF,
+ LEAF(56),
+ LEAF(64),
+ EMPTY_LEAF,
+
+ /* [78] -> opcode range [4096, 6144], node depth 5 */
+ 2,
+ 83,
+ EMPTY_LEAF,
+ 101,
+ EMPTY_LEAF,
+
+ /* [83] -> opcode range [4096, 4608], node depth 6 */
+ 1,
+ 86,
+ EMPTY_LEAF,
+
+ /* [86] -> opcode range [4096, 4352], node depth 7 */
+ 1,
+ 89,
+ EMPTY_LEAF,
+
+ /* [89] -> opcode range [4096, 4224], node depth 8 */
+ 1,
+ 92,
+ EMPTY_LEAF,
+
+ /* [92] -> opcode range [4096, 4160], node depth 9 */
+ 1,
+ 95,
+ EMPTY_LEAF,
+
+ /* [95] -> opcode range [4096, 4128], node depth 10 */
+ 1,
+ 98,
+ EMPTY_LEAF,
+
+ /* [98] -> opcode range [4096, 4112], node depth 11 */
+ 1,
+ LEAF(72),
+ EMPTY_LEAF,
+
+ /* [101] -> opcode range [5120, 5632], node depth 6 */
+ 1,
+ 104,
+ EMPTY_LEAF,
+
+ /* [104] -> opcode range [5120, 5376], node depth 7 */
+ 1,
+ 107,
+ EMPTY_LEAF,
+
+ /* [107] -> opcode range [5120, 5248], node depth 8 */
+ 1,
+ 110,
+ EMPTY_LEAF,
+
+ /* [110] -> opcode range [5120, 5184], node depth 9 */
+ 1,
+ EMPTY_LEAF,
+ 113,
+
+ /* [113] -> opcode range [5152, 5184], node depth 10 */
+ 1,
+ 116,
+ EMPTY_LEAF,
+
+ /* [116] -> opcode range [5152, 5168], node depth 11 */
+ 1,
+ LEAF(80),
+ EMPTY_LEAF,
+
+ /* [119] -> opcode range [65536, 98304], node depth 2 */
+ 1,
+ 122,
+ EMPTY_LEAF,
+
+ /* [122] -> opcode range [65536, 81920], node depth 3 */
+ 1,
+ 125,
+ EMPTY_LEAF,
+
+ /* [125] -> opcode range [65536, 73728], node depth 4 */
+ 1,
+ 128,
+ EMPTY_LEAF,
+
+ /* [128] -> opcode range [65536, 69632], node depth 5 */
+ 1,
+ 131,
+ EMPTY_LEAF,
+
+ /* [131] -> opcode range [65536, 67584], node depth 6 */
+ 1,
+ 134,
+ EMPTY_LEAF,
+
+ /* [134] -> opcode range [65536, 66560], node depth 7 */
+ 1,
+ 137,
+ EMPTY_LEAF,
+
+ /* [137] -> opcode range [65536, 66048], node depth 8 */
+ 1,
+ 140,
+ EMPTY_LEAF,
+
+ /* [140] -> opcode range [65536, 65792], node depth 9 */
+ 1,
+ 143,
+ EMPTY_LEAF,
+
+ /* [143] -> opcode range [65536, 65664], node depth 10 */
+ 1,
+ 146,
+ EMPTY_LEAF,
+
+ /* [146] -> opcode range [65536, 65600], node depth 11 */
+ 1,
+ 149,
+ EMPTY_LEAF,
+
+ /* [149] -> opcode range [65536, 65568], node depth 12 */
+ 1,
+ 152,
+ EMPTY_LEAF,
+
+ /* [152] -> opcode range [65536, 65552], node depth 13 */
+ 1,
+ LEAF(88),
+ EMPTY_LEAF,
+
+};
+
+static const void *VendorPriv_function_table[96][2] = {
+ /* [ 0] = 0 */ {NULL, NULL},
+ /* [ 1] = 1 */ {__glXDisp_GetConvolutionFilterEXT, __glXDispSwap_GetConvolutionFilterEXT},
+ /* [ 2] = 2 */ {__glXDisp_GetConvolutionParameterfvEXT, __glXDispSwap_GetConvolutionParameterfvEXT},
+ /* [ 3] = 3 */ {__glXDisp_GetConvolutionParameterivEXT, __glXDispSwap_GetConvolutionParameterivEXT},
+ /* [ 4] = 4 */ {__glXDisp_GetSeparableFilterEXT, __glXDispSwap_GetSeparableFilterEXT},
+ /* [ 5] = 5 */ {__glXDisp_GetHistogramEXT, __glXDispSwap_GetHistogramEXT},
+ /* [ 6] = 6 */ {__glXDisp_GetHistogramParameterfvEXT, __glXDispSwap_GetHistogramParameterfvEXT},
+ /* [ 7] = 7 */ {__glXDisp_GetHistogramParameterivEXT, __glXDispSwap_GetHistogramParameterivEXT},
+ /* [ 8] = 8 */ {__glXDisp_GetMinmaxEXT, __glXDispSwap_GetMinmaxEXT},
+ /* [ 9] = 9 */ {__glXDisp_GetMinmaxParameterfvEXT, __glXDispSwap_GetMinmaxParameterfvEXT},
+ /* [ 10] = 10 */ {__glXDisp_GetMinmaxParameterivEXT, __glXDispSwap_GetMinmaxParameterivEXT},
+ /* [ 11] = 11 */ {__glXDisp_AreTexturesResidentEXT, __glXDispSwap_AreTexturesResidentEXT},
+ /* [ 12] = 12 */ {__glXDisp_DeleteTexturesEXT, __glXDispSwap_DeleteTexturesEXT},
+ /* [ 13] = 13 */ {__glXDisp_GenTexturesEXT, __glXDispSwap_GenTexturesEXT},
+ /* [ 14] = 14 */ {__glXDisp_IsTextureEXT, __glXDispSwap_IsTextureEXT},
+ /* [ 15] = 15 */ {NULL, NULL},
+ /* [ 16] = 1024 */ {__glXDisp_QueryContextInfoEXT, __glXDispSwap_QueryContextInfoEXT},
+ /* [ 17] = 1025 */ {NULL, NULL},
+ /* [ 18] = 1026 */ {NULL, NULL},
+ /* [ 19] = 1027 */ {NULL, NULL},
+ /* [ 20] = 1028 */ {NULL, NULL},
+ /* [ 21] = 1029 */ {NULL, NULL},
+ /* [ 22] = 1030 */ {NULL, NULL},
+ /* [ 23] = 1031 */ {NULL, NULL},
+ /* [ 24] = 1296 */ {__glXDisp_GetProgramEnvParameterfvARB, __glXDispSwap_GetProgramEnvParameterfvARB},
+ /* [ 25] = 1297 */ {__glXDisp_GetProgramEnvParameterdvARB, __glXDispSwap_GetProgramEnvParameterdvARB},
+ /* [ 26] = 1298 */ {__glXDisp_GetProgramivNV, __glXDispSwap_GetProgramivNV},
+ /* [ 27] = 1299 */ {__glXDisp_GetProgramStringNV, __glXDispSwap_GetProgramStringNV},
+ /* [ 28] = 1300 */ {__glXDisp_GetTrackMatrixivNV, __glXDispSwap_GetTrackMatrixivNV},
+ /* [ 29] = 1301 */ {__glXDisp_GetVertexAttribdvARB, __glXDispSwap_GetVertexAttribdvARB},
+ /* [ 30] = 1302 */ {__glXDisp_GetVertexAttribfvNV, __glXDispSwap_GetVertexAttribfvNV},
+ /* [ 31] = 1303 */ {__glXDisp_GetVertexAttribivNV, __glXDispSwap_GetVertexAttribivNV},
+ /* [ 32] = 1304 */ {__glXDisp_IsProgramNV, __glXDispSwap_IsProgramNV},
+ /* [ 33] = 1305 */ {__glXDisp_GetProgramLocalParameterfvARB, __glXDispSwap_GetProgramLocalParameterfvARB},
+ /* [ 34] = 1306 */ {__glXDisp_GetProgramLocalParameterdvARB, __glXDispSwap_GetProgramLocalParameterdvARB},
+ /* [ 35] = 1307 */ {__glXDisp_GetProgramivARB, __glXDispSwap_GetProgramivARB},
+ /* [ 36] = 1308 */ {__glXDisp_GetProgramStringARB, __glXDispSwap_GetProgramStringARB},
+ /* [ 37] = 1309 */ {NULL, NULL},
+ /* [ 38] = 1310 */ {__glXDisp_GetProgramNamedParameterfvNV, __glXDispSwap_GetProgramNamedParameterfvNV},
+ /* [ 39] = 1311 */ {__glXDisp_GetProgramNamedParameterdvNV, __glXDispSwap_GetProgramNamedParameterdvNV},
+ /* [ 40] = 1288 */ {NULL, NULL},
+ /* [ 41] = 1289 */ {NULL, NULL},
+ /* [ 42] = 1290 */ {NULL, NULL},
+ /* [ 43] = 1291 */ {NULL, NULL},
+ /* [ 44] = 1292 */ {NULL, NULL},
+ /* [ 45] = 1293 */ {__glXDisp_AreProgramsResidentNV, __glXDispSwap_AreProgramsResidentNV},
+ /* [ 46] = 1294 */ {__glXDisp_DeleteProgramsNV, __glXDispSwap_DeleteProgramsNV},
+ /* [ 47] = 1295 */ {__glXDisp_GenProgramsNV, __glXDispSwap_GenProgramsNV},
+ /* [ 48] = 1328 */ {NULL, NULL},
+ /* [ 49] = 1329 */ {NULL, NULL},
+ /* [ 50] = 1330 */ {__glXDisp_BindTexImageEXT, __glXDispSwap_BindTexImageEXT},
+ /* [ 51] = 1331 */ {__glXDisp_ReleaseTexImageEXT, __glXDispSwap_ReleaseTexImageEXT},
+ /* [ 52] = 1332 */ {NULL, NULL},
+ /* [ 53] = 1333 */ {NULL, NULL},
+ /* [ 54] = 1334 */ {NULL, NULL},
+ /* [ 55] = 1335 */ {NULL, NULL},
+ /* [ 56] = 1416 */ {NULL, NULL},
+ /* [ 57] = 1417 */ {NULL, NULL},
+ /* [ 58] = 1418 */ {NULL, NULL},
+ /* [ 59] = 1419 */ {NULL, NULL},
+ /* [ 60] = 1420 */ {NULL, NULL},
+ /* [ 61] = 1421 */ {NULL, NULL},
+ /* [ 62] = 1422 */ {__glXDisp_IsRenderbufferEXT, __glXDispSwap_IsRenderbufferEXT},
+ /* [ 63] = 1423 */ {__glXDisp_GenRenderbuffersEXT, __glXDispSwap_GenRenderbuffersEXT},
+ /* [ 64] = 1424 */ {__glXDisp_GetRenderbufferParameterivEXT, __glXDispSwap_GetRenderbufferParameterivEXT},
+ /* [ 65] = 1425 */ {__glXDisp_IsFramebufferEXT, __glXDispSwap_IsFramebufferEXT},
+ /* [ 66] = 1426 */ {__glXDisp_GenFramebuffersEXT, __glXDispSwap_GenFramebuffersEXT},
+ /* [ 67] = 1427 */ {__glXDisp_CheckFramebufferStatusEXT, __glXDispSwap_CheckFramebufferStatusEXT},
+ /* [ 68] = 1428 */ {__glXDisp_GetFramebufferAttachmentParameterivEXT, __glXDispSwap_GetFramebufferAttachmentParameterivEXT},
+ /* [ 69] = 1429 */ {NULL, NULL},
+ /* [ 70] = 1430 */ {NULL, NULL},
+ /* [ 71] = 1431 */ {NULL, NULL},
+ /* [ 72] = 4096 */ {NULL, NULL},
+ /* [ 73] = 4097 */ {NULL, NULL},
+ /* [ 74] = 4098 */ {__glXDisp_GetColorTableSGI, __glXDispSwap_GetColorTableSGI},
+ /* [ 75] = 4099 */ {__glXDisp_GetColorTableParameterfvSGI, __glXDispSwap_GetColorTableParameterfvSGI},
+ /* [ 76] = 4100 */ {__glXDisp_GetColorTableParameterivSGI, __glXDispSwap_GetColorTableParameterivSGI},
+ /* [ 77] = 4101 */ {NULL, NULL},
+ /* [ 78] = 4102 */ {NULL, NULL},
+ /* [ 79] = 4103 */ {NULL, NULL},
+ /* [ 80] = 5152 */ {NULL, NULL},
+ /* [ 81] = 5153 */ {NULL, NULL},
+ /* [ 82] = 5154 */ {__glXDisp_CopySubBufferMESA, __glXDispSwap_CopySubBufferMESA},
+ /* [ 83] = 5155 */ {NULL, NULL},
+ /* [ 84] = 5156 */ {NULL, NULL},
+ /* [ 85] = 5157 */ {NULL, NULL},
+ /* [ 86] = 5158 */ {NULL, NULL},
+ /* [ 87] = 5159 */ {NULL, NULL},
+ /* [ 88] = 65536 */ {__glXDisp_SwapIntervalSGI, __glXDispSwap_SwapIntervalSGI},
+ /* [ 89] = 65537 */ {__glXDisp_MakeCurrentReadSGI, __glXDispSwap_MakeCurrentReadSGI},
+ /* [ 90] = 65538 */ {NULL, NULL},
+ /* [ 91] = 65539 */ {NULL, NULL},
+ /* [ 92] = 65540 */ {__glXDisp_GetFBConfigsSGIX, __glXDispSwap_GetFBConfigsSGIX},
+ /* [ 93] = 65541 */ {__glXDisp_CreateContextWithConfigSGIX, __glXDispSwap_CreateContextWithConfigSGIX},
+ /* [ 94] = 65542 */ {__glXDisp_CreateGLXPixmapWithConfigSGIX, __glXDispSwap_CreateGLXPixmapWithConfigSGIX},
+ /* [ 95] = 65543 */ {NULL, NULL},
+};
+
+const struct __glXDispatchInfo VendorPriv_dispatch_info = {
+ 17,
+ VendorPriv_dispatch_tree,
+ VendorPriv_function_table,
+ NULL,
+ NULL
+};
+
diff --git a/GL/glx/indirect_table.h b/GL/glx/indirect_table.h
new file mode 100644
index 000000000..4af1ccbea
--- /dev/null
+++ b/GL/glx/indirect_table.h
@@ -0,0 +1,106 @@
+/*
+ * (C) Copyright IBM Corporation 2005, 2006
+ * All Rights Reserved.
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a
+ * copy of this software and 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
+ * IBM,
+ * 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 indirect_table.h
+ *
+ * \author Ian Romanick <idr@us.ibm.com>
+ */
+
+#ifndef INDIRECT_TABLE_H
+#define INDIRECT_TABLE_H
+
+#include <inttypes.h>
+
+/**
+ */
+struct __glXDispatchInfo {
+ /**
+ * Number of significant bits in the protocol opcode. Opcodes with values
+ * larger than ((1 << bits) - 1) are invalid.
+ */
+ unsigned bits;
+
+ /**
+ */
+ const int_fast16_t * dispatch_tree;
+
+ /**
+ * Array of protocol decode and dispatch functions index by the opcode
+ * search tree (i.e., \c dispatch_tree). The first element in each pair
+ * is the non-byte-swapped version, and the second element is the
+ * byte-swapped version.
+ */
+ const void *(*dispatch_functions)[2];
+
+ /**
+ * Pointer to size validation data. This table is indexed with the same
+ * value as ::dispatch_functions.
+ *
+ * The first element in the pair is the size, in bytes, of the fixed-size
+ * portion of the protocol.
+ *
+ * For opcodes that have a variable-size portion, the second value is an
+ * index in \c size_func_table to calculate that size. If there is no
+ * variable-size portion, this index will be ~0.
+ *
+ * \note
+ * If size checking is not to be performed on this type of protocol
+ * data, this pointer will be \c NULL.
+ */
+ const int_fast16_t (*size_table)[2];
+
+ /**
+ * Array of functions used to calculate the variable-size portion of
+ * protocol messages. Indexed by the second element of the entries
+ * in \c ::size_table.
+ *
+ * \note
+ * If size checking is not to be performed on this type of protocol
+ * data, this pointer will be \c NULL.
+ */
+ const gl_proto_size_func *size_func_table;
+};
+
+/**
+ * Sentinel value for an empty leaf in the \c dispatch_tree.
+ */
+#define EMPTY_LEAF INT_FAST16_MIN
+
+/**
+ * Declare the index \c x as a leaf index.
+ */
+#define LEAF(x) -x
+
+/**
+ * Determine if an index is a leaf index.
+ */
+#define IS_LEAF_INDEX(x) ((x) <= 0)
+
+extern const struct __glXDispatchInfo Single_dispatch_info;
+extern const struct __glXDispatchInfo Render_dispatch_info;
+extern const struct __glXDispatchInfo VendorPriv_dispatch_info;
+
+#endif /* INDIRECT_TABLE_H */
diff --git a/GL/glx/indirect_texture_compression.c b/GL/glx/indirect_texture_compression.c
new file mode 100644
index 000000000..35af1d235
--- /dev/null
+++ b/GL/glx/indirect_texture_compression.c
@@ -0,0 +1,133 @@
+/*
+ * (C) Copyright IBM Corporation 2005, 2006
+ * All Rights Reserved.
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a
+ * copy of this software and 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
+ * IBM,
+ * 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.
+ */
+
+#define NEED_REPLIES
+#ifdef HAVE_DIX_CONFIG_H
+#include <dix-config.h>
+#endif
+
+#include "glxserver.h"
+#include "glxext.h"
+#include "singlesize.h"
+#include "unpack.h"
+#include "indirect_size_get.h"
+#include "indirect_dispatch.h"
+#include "glapitable.h"
+#include "glapi.h"
+#include "glthread.h"
+#include "dispatch.h"
+
+#if defined(__linux__) || defined (__GLIBC__) || defined (__GNU__)
+#include <byteswap.h>
+#elif defined(__OpenBSD__)
+#include <sys/endian.h>
+#define bswap_16 __swap16
+#define bswap_32 __swap32
+#define bswap_64 __swap64
+#else
+#include <sys/endian.h>
+#define bswap_16 bswap16
+#define bswap_32 bswap32
+#define bswap_64 bswap64
+#endif
+
+int __glXDisp_GetCompressedTexImageARB(struct __GLXclientStateRec *cl, GLbyte *pc)
+{
+ xGLXSingleReq * const req = (xGLXSingleReq *) pc;
+ int error;
+ __GLXcontext * const cx = __glXForceCurrent( cl, req->contextTag, & error );
+ ClientPtr client = cl->client;
+
+
+ pc += __GLX_SINGLE_HDR_SIZE;
+ if ( cx != NULL ) {
+ const GLenum target = *(GLenum *)(pc + 0);
+ const GLint level = *(GLint *)(pc + 4);
+ GLint compsize = 0;
+ char *answer, answerBuffer[200];
+
+ CALL_GetTexLevelParameteriv(GET_DISPATCH(), (target, level, GL_TEXTURE_COMPRESSED_IMAGE_SIZE, &compsize));
+
+ if ( compsize != 0 ) {
+ __GLX_GET_ANSWER_BUFFER(answer,cl,compsize,1);
+ __glXClearErrorOccured();
+ CALL_GetCompressedTexImageARB(GET_DISPATCH(), (target, level, answer));
+ }
+
+ if (__glXErrorOccured()) {
+ __GLX_BEGIN_REPLY(0);
+ __GLX_SEND_HEADER();
+ } else {
+ __GLX_BEGIN_REPLY(compsize);
+ ((xGLXGetTexImageReply *)&__glXReply)->width = compsize;
+ __GLX_SEND_HEADER();
+ __GLX_SEND_VOID_ARRAY(compsize);
+ }
+
+ error = Success;
+ }
+
+ return error;
+}
+
+
+int __glXDispSwap_GetCompressedTexImageARB(struct __GLXclientStateRec *cl, GLbyte *pc)
+{
+ xGLXSingleReq * const req = (xGLXSingleReq *) pc;
+ int error;
+ __GLXcontext * const cx = __glXForceCurrent( cl, bswap_32( req->contextTag ), & error );
+ ClientPtr client = cl->client;
+
+
+ pc += __GLX_SINGLE_HDR_SIZE;
+ if ( cx != NULL ) {
+ const GLenum target = (GLenum) bswap_32( *(int *)(pc + 0) );
+ const GLint level = (GLint ) bswap_32( *(int *)(pc + 4) );
+ GLint compsize = 0;
+ char *answer, answerBuffer[200];
+
+ CALL_GetTexLevelParameteriv(GET_DISPATCH(), (target, level, GL_TEXTURE_COMPRESSED_IMAGE_SIZE, &compsize));
+
+ if ( compsize != 0 ) {
+ __GLX_GET_ANSWER_BUFFER(answer,cl,compsize,1);
+ __glXClearErrorOccured();
+ CALL_GetCompressedTexImageARB(GET_DISPATCH(), (target, level, answer));
+ }
+
+ if (__glXErrorOccured()) {
+ __GLX_BEGIN_REPLY(0);
+ __GLX_SEND_HEADER();
+ } else {
+ __GLX_BEGIN_REPLY(compsize);
+ ((xGLXGetTexImageReply *)&__glXReply)->width = compsize;
+ __GLX_SEND_HEADER();
+ __GLX_SEND_VOID_ARRAY(compsize);
+ }
+
+ error = Success;
+ }
+
+ return error;
+}
diff --git a/GL/glx/indirect_util.c b/GL/glx/indirect_util.c
index c9d8600c8..09b7ab87c 100644
--- a/GL/glx/indirect_util.c
+++ b/GL/glx/indirect_util.c
@@ -28,7 +28,7 @@
#include <X11/Xmd.h>
#include <GL/gl.h>
#include <GL/glxproto.h>
-#ifdef __linux__
+#if defined(__linux__) || defined (__GLIBC__) || defined(__GNU__)
#include <byteswap.h>
#elif defined(__OpenBSD__)
#include <sys/endian.h>
@@ -52,6 +52,7 @@
#include "glthread.h"
#include "dispatch.h"
#include "glxext.h"
+#include "indirect_table.h"
#include "indirect_util.h"
@@ -185,8 +186,8 @@ __glXSendReplySwap( ClientPtr client, const void * data, size_t elements,
}
__glXReply.length = bswap_32( reply_ints );
- __glXReply.type = bswap_32( X_Reply );
- __glXReply.sequenceNumber = bswap_32( client->sequence );
+ __glXReply.type = X_Reply;
+ __glXReply.sequenceNumber = bswap_16( client->sequence );
__glXReply.size = bswap_32( elements );
__glXReply.retval = bswap_32( retval );
@@ -204,3 +205,114 @@ __glXSendReplySwap( ClientPtr client, const void * data, size_t elements,
WriteToClient( client, reply_ints * 4, (char *) data );
}
}
+
+
+static int
+get_decode_index(const struct __glXDispatchInfo *dispatch_info,
+ unsigned opcode)
+{
+ int remaining_bits;
+ int next_remain;
+ const int_fast16_t * const tree = dispatch_info->dispatch_tree;
+ int_fast16_t index;
+
+
+ remaining_bits = dispatch_info->bits;
+ if (opcode >= (1U << remaining_bits)) {
+ return -1;
+ }
+
+ index = 0;
+ for (/* empty */; remaining_bits > 0; remaining_bits = next_remain) {
+ unsigned mask;
+ unsigned child_index;
+
+
+ /* Calculate the slice of bits used by this node.
+ *
+ * If remaining_bits = 8 and tree[index] = 3, the mask of just the
+ * remaining bits is 0x00ff and the mask for the remaining bits after
+ * this node is 0x001f. By taking 0x00ff & ~0x001f, we get 0x00e0.
+ * This masks the 3 bits that we would want for this node.
+ */
+
+ next_remain = remaining_bits - tree[index];
+ mask = ((1 << remaining_bits) - 1) &
+ ~((1 << next_remain) - 1);
+
+
+ /* Using the mask, calculate the index of the opcode in the node.
+ * With that index, fetch the index of the next node.
+ */
+
+ child_index = (opcode & mask) >> next_remain;
+ index = tree[index + 1 + child_index];
+
+
+ /* If the next node is an empty leaf, the opcode is for a non-existant
+ * function. We're done.
+ *
+ * If the next node is a non-empty leaf, look up the function pointer
+ * and return it.
+ */
+
+ if (index == EMPTY_LEAF) {
+ return -1;
+ }
+ else if (IS_LEAF_INDEX(index)) {
+ unsigned func_index;
+
+
+ /* The value stored in the tree for a leaf node is the base of
+ * the function pointers for that leaf node. The offset for the
+ * function for a particular opcode is the remaining bits in the
+ * opcode.
+ */
+
+ func_index = -index;
+ func_index += opcode & ((1 << next_remain) - 1);
+ return func_index;
+ }
+ }
+
+ /* We should *never* get here!!!
+ */
+ return -1;
+}
+
+
+void *
+__glXGetProtocolDecodeFunction(const struct __glXDispatchInfo *dispatch_info,
+ int opcode, int swapped_version)
+{
+ const int func_index = get_decode_index(dispatch_info, opcode);
+
+ return (func_index < 0)
+ ? NULL
+ : (void *) dispatch_info->dispatch_functions[func_index][swapped_version];
+}
+
+
+int
+__glXGetProtocolSizeData(const struct __glXDispatchInfo *dispatch_info,
+ int opcode, __GLXrenderSizeData *data)
+{
+ if (dispatch_info->size_table != NULL) {
+ const int func_index = get_decode_index(dispatch_info, opcode);
+
+ if ((func_index >= 0)
+ && (dispatch_info->size_table[func_index][0] != 0)) {
+ const int var_offset =
+ dispatch_info->size_table[func_index][1];
+
+ data->bytes = dispatch_info->size_table[func_index][0];
+ data->varsize = (var_offset != ~0)
+ ? dispatch_info->size_func_table[var_offset]
+ : NULL;
+
+ return 0;
+ }
+ }
+
+ return -1;
+}
diff --git a/GL/glx/indirect_util.h b/GL/glx/indirect_util.h
index 3abe81f13..b00727a4d 100644
--- a/GL/glx/indirect_util.h
+++ b/GL/glx/indirect_util.h
@@ -40,4 +40,14 @@ extern void __glXSendReplySwap( ClientPtr client, const void * data,
size_t elements, size_t element_size, GLboolean always_array,
CARD32 retval );
+struct __glXDispatchInfo;
+
+extern void *__glXGetProtocolDecodeFunction(
+ const struct __glXDispatchInfo *dispatch_info, int opcode,
+ int swapped_version);
+
+extern int __glXGetProtocolSizeData(
+ const struct __glXDispatchInfo *dispatch_info, int opcode,
+ __GLXrenderSizeData *data);
+
#endif /* __GLX_INDIRECT_UTIL_H__ */
diff --git a/GL/glx/render2.c b/GL/glx/render2.c
index b126638a1..5b3d3e6d0 100644
--- a/GL/glx/render2.c
+++ b/GL/glx/render2.c
@@ -1,4 +1,3 @@
-/* $XFree86: xc/programs/Xserver/GL/glx/render2.c,v 1.8 2004/02/03 23:04:08 alanh Exp $ */
/*
** License Applicability. Except to the extent portions of this file are
** made subject to an alternative license as permitted in the SGI Free
diff --git a/GL/glx/render2swap.c b/GL/glx/render2swap.c
index 81de81ff9..23b7ebd37 100644
--- a/GL/glx/render2swap.c
+++ b/GL/glx/render2swap.c
@@ -1,4 +1,3 @@
-/* $XFree86: xc/programs/Xserver/GL/glx/render2swap.c,v 1.6 2002/01/14 22:47:08 tsi Exp $ */
/*
** License Applicability. Except to the extent portions of this file are
** made subject to an alternative license as permitted in the SGI Free
diff --git a/GL/glx/rensize.c b/GL/glx/rensize.c
index d37958207..c69619a61 100644
--- a/GL/glx/rensize.c
+++ b/GL/glx/rensize.c
@@ -1,4 +1,3 @@
-/* $XFree86: xc/programs/Xserver/GL/glx/rensize.c,v 1.6 2003/09/28 20:15:43 alanh Exp $ */
/*
** License Applicability. Except to the extent portions of this file are
** made subject to an alternative license as permitted in the SGI Free
@@ -324,7 +323,7 @@ int __glXTypeSize(GLenum enm)
}
}
-int __glXDrawArraysSize( const GLbyte *pc, Bool swap )
+int __glXDrawArraysReqSize( const GLbyte *pc, Bool swap )
{
__GLXdispatchDrawArraysHeader *hdr = (__GLXdispatchDrawArraysHeader *) pc;
__GLXdispatchDrawArraysComponentHeader *compHeader;
diff --git a/GL/glx/rensizetab.c b/GL/glx/rensizetab.c
deleted file mode 100644
index c9bd1a73b..000000000
--- a/GL/glx/rensizetab.c
+++ /dev/null
@@ -1,2553 +0,0 @@
-/* $XFree86: xc/programs/Xserver/GL/glx/rensizetab.c,v 1.5 2004/01/28 18:11:53 alanh 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_DIX_CONFIG_H
-#include <dix-config.h>
-#endif
-
-#include "glxserver.h"
-#include "indirect_reqsize.h"
-#include "g_disptab_EXT.h"
-
-__GLXrenderSizeData __glXRenderSizeTable[__GLX_MAX_RENDER_OPCODE_EXT - __GLX_MIN_RENDER_OPCODE_EXT + 1] = {
- /* no such opcode */ { 0, 0 },
- /* CallList */ { 8, 0 },
- /* CallLists */ { 12, __glXCallListsReqSize },
- /* ListBase */ { 8, 0 },
- /* Begin */ { 8, 0 },
- /* Bitmap */ { 48, __glXBitmapReqSize },
- /* Color3bv */ { 8, 0 },
- /* Color3dv */ { 28, 0 },
- /* Color3fv */ { 16, 0 },
- /* Color3iv */ { 16, 0 },
- /* Color3sv */ { 12, 0 },
- /* Color3ubv */ { 8, 0 },
- /* Color3uiv */ { 16, 0 },
- /* Color3usv */ { 12, 0 },
- /* Color4bv */ { 8, 0 },
- /* Color4dv */ { 36, 0 },
- /* Color4fv */ { 20, 0 },
- /* Color4iv */ { 20, 0 },
- /* Color4sv */ { 12, 0 },
- /* Color4ubv */ { 8, 0 },
- /* Color4uiv */ { 20, 0 },
- /* Color4usv */ { 12, 0 },
- /* EdgeFlagv */ { 8, 0 },
- /* End */ { 4, 0 },
- /* Indexdv */ { 12, 0 },
- /* Indexfv */ { 8, 0 },
- /* Indexiv */ { 8, 0 },
- /* Indexsv */ { 8, 0 },
- /* Normal3bv */ { 8, 0 },
- /* Normal3dv */ { 28, 0 },
- /* Normal3fv */ { 16, 0 },
- /* Normal3iv */ { 16, 0 },
- /* Normal3sv */ { 12, 0 },
- /* RasterPos2dv */ { 20, 0 },
- /* RasterPos2fv */ { 12, 0 },
- /* RasterPos2iv */ { 12, 0 },
- /* RasterPos2sv */ { 8, 0 },
- /* RasterPos3dv */ { 28, 0 },
- /* RasterPos3fv */ { 16, 0 },
- /* RasterPos3iv */ { 16, 0 },
- /* RasterPos3sv */ { 12, 0 },
- /* RasterPos4dv */ { 36, 0 },
- /* RasterPos4fv */ { 20, 0 },
- /* RasterPos4iv */ { 20, 0 },
- /* RasterPos4sv */ { 12, 0 },
- /* Rectdv */ { 36, 0 },
- /* Rectfv */ { 20, 0 },
- /* Rectiv */ { 20, 0 },
- /* Rectsv */ { 12, 0 },
- /* TexCoord1dv */ { 12, 0 },
- /* TexCoord1fv */ { 8, 0 },
- /* TexCoord1iv */ { 8, 0 },
- /* TexCoord1sv */ { 8, 0 },
- /* TexCoord2dv */ { 20, 0 },
- /* TexCoord2fv */ { 12, 0 },
- /* TexCoord2iv */ { 12, 0 },
- /* TexCoord2sv */ { 8, 0 },
- /* TexCoord3dv */ { 28, 0 },
- /* TexCoord3fv */ { 16, 0 },
- /* TexCoord3iv */ { 16, 0 },
- /* TexCoord3sv */ { 12, 0 },
- /* TexCoord4dv */ { 36, 0 },
- /* TexCoord4fv */ { 20, 0 },
- /* TexCoord4iv */ { 20, 0 },
- /* TexCoord4sv */ { 12, 0 },
- /* Vertex2dv */ { 20, 0 },
- /* Vertex2fv */ { 12, 0 },
- /* Vertex2iv */ { 12, 0 },
- /* Vertex2sv */ { 8, 0 },
- /* Vertex3dv */ { 28, 0 },
- /* Vertex3fv */ { 16, 0 },
- /* Vertex3iv */ { 16, 0 },
- /* Vertex3sv */ { 12, 0 },
- /* Vertex4dv */ { 36, 0 },
- /* Vertex4fv */ { 20, 0 },
- /* Vertex4iv */ { 20, 0 },
- /* Vertex4sv */ { 12, 0 },
- /* ClipPlane */ { 40, 0 },
- /* ColorMaterial */ { 12, 0 },
- /* CullFace */ { 8, 0 },
- /* Fogf */ { 12, 0 },
- /* Fogfv */ { 8, __glXFogfvReqSize },
- /* Fogi */ { 12, 0 },
- /* Fogiv */ { 8, __glXFogivReqSize },
- /* FrontFace */ { 8, 0 },
- /* Hint */ { 12, 0 },
- /* Lightf */ { 16, 0 },
- /* Lightfv */ { 12, __glXLightfvReqSize },
- /* Lighti */ { 16, 0 },
- /* Lightiv */ { 12, __glXLightivReqSize },
- /* LightModelf */ { 12, 0 },
- /* LightModelfv */ { 8, __glXLightModelfvReqSize },
- /* LightModeli */ { 12, 0 },
- /* LightModeliv */ { 8, __glXLightModelivReqSize },
- /* LineStipple */ { 12, 0 },
- /* LineWidth */ { 8, 0 },
- /* Materialf */ { 16, 0 },
- /* Materialfv */ { 12, __glXMaterialfvReqSize },
- /* Materiali */ { 16, 0 },
- /* Materialiv */ { 12, __glXMaterialivReqSize },
- /* PointSize */ { 8, 0 },
- /* PolygonMode */ { 12, 0 },
- /* PolygonStipple */ { 152, 0 },
- /* Scissor */ { 20, 0 },
- /* ShadeModel */ { 8, 0 },
- /* TexParameterf */ { 16, 0 },
- /* TexParameterfv */ { 12, __glXTexParameterfvReqSize },
- /* TexParameteri */ { 16, 0 },
- /* TexParameteriv */ { 12, __glXTexParameterivReqSize },
- /* TexImage1D */ { 56, __glXTexImage1DReqSize },
- /* TexImage2D */ { 56, __glXTexImage2DReqSize },
- /* TexEnvf */ { 16, 0 },
- /* TexEnvfv */ { 12, __glXTexEnvfvReqSize },
- /* TexEnvi */ { 16, 0 },
- /* TexEnviv */ { 12, __glXTexEnvivReqSize },
- /* TexGend */ { 20, 0 },
- /* TexGendv */ { 12, __glXTexGendvReqSize },
- /* TexGenf */ { 16, 0 },
- /* TexGenfv */ { 12, __glXTexGenfvReqSize },
- /* TexGeni */ { 16, 0 },
- /* TexGeniv */ { 12, __glXTexGenivReqSize },
- /* InitNames */ { 4, 0 },
- /* LoadName */ { 8, 0 },
- /* PassThrough */ { 8, 0 },
- /* PopName */ { 4, 0 },
- /* PushName */ { 8, 0 },
- /* DrawBuffer */ { 8, 0 },
- /* Clear */ { 8, 0 },
- /* ClearAccum */ { 20, 0 },
- /* ClearIndex */ { 8, 0 },
- /* ClearColor */ { 20, 0 },
- /* ClearStencil */ { 8, 0 },
- /* ClearDepth */ { 12, 0 },
- /* StencilMask */ { 8, 0 },
- /* ColorMask */ { 8, 0 },
- /* DepthMask */ { 8, 0 },
- /* IndexMask */ { 8, 0 },
- /* Accum */ { 12, 0 },
- /* Disable */ { 8, 0 },
- /* Enable */ { 8, 0 },
- /* no such opcode */ { 0, 0 },
- /* PopAttrib */ { 4, 0 },
- /* PushAttrib */ { 8, 0 },
- /* Map1d */ { 28, __glXMap1dReqSize },
- /* Map1f */ { 20, __glXMap1fReqSize },
- /* Map2d */ { 48, __glXMap2dReqSize },
- /* Map2f */ { 32, __glXMap2fReqSize },
- /* MapGrid1d */ { 24, 0 },
- /* MapGrid1f */ { 16, 0 },
- /* MapGrid2d */ { 44, 0 },
- /* MapGrid2f */ { 28, 0 },
- /* EvalCoord1dv */ { 12, 0 },
- /* EvalCoord1fv */ { 8, 0 },
- /* EvalCoord2dv */ { 20, 0 },
- /* EvalCoord2fv */ { 12, 0 },
- /* EvalMesh1 */ { 16, 0 },
- /* EvalPoint1 */ { 8, 0 },
- /* EvalMesh2 */ { 24, 0 },
- /* EvalPoint2 */ { 12, 0 },
- /* AlphaFunc */ { 12, 0 },
- /* BlendFunc */ { 12, 0 },
- /* LogicOp */ { 8, 0 },
- /* StencilFunc */ { 16, 0 },
- /* StencilOp */ { 16, 0 },
- /* DepthFunc */ { 8, 0 },
- /* PixelZoom */ { 12, 0 },
- /* PixelTransferf */ { 12, 0 },
- /* PixelTransferi */ { 12, 0 },
- /* PixelMapfv */ { 12, __glXPixelMapfvReqSize },
- /* PixelMapuiv */ { 12, __glXPixelMapuivReqSize },
- /* PixelMapusv */ { 12, __glXPixelMapusvReqSize },
- /* ReadBuffer */ { 8, 0 },
- /* CopyPixels */ { 24, 0 },
- /* DrawPixels */ { 40, __glXDrawPixelsReqSize },
- /* DepthRange */ { 20, 0 },
- /* Frustum */ { 52, 0 },
- /* LoadIdentity */ { 4, 0 },
- /* LoadMatrixf */ { 68, 0 },
- /* LoadMatrixd */ { 132, 0 },
- /* MatrixMode */ { 8, 0 },
- /* MultMatrixf */ { 68, 0 },
- /* MultMatrixd */ { 132, 0 },
- /* Ortho */ { 52, 0 },
- /* PopMatrix */ { 4, 0 },
- /* PushMatrix */ { 4, 0 },
- /* Rotated */ { 36, 0 },
- /* Rotatef */ { 20, 0 },
- /* Scaled */ { 28, 0 },
- /* Scalef */ { 16, 0 },
- /* Translated */ { 28, 0 },
- /* Translatef */ { 16, 0 },
- /* Viewport */ { 20, 0 },
- /* PolygonOffset */ { 12, 0 },
- /* DrawArrays */ { 16, __glXDrawArraysSize },
- /* Indexubv */ { 8, 0 },
- /* ColorSubTable */ { 44, __glXColorSubTableReqSize },
- /* CopyColorSubTable */ { 24, 0 },
- /* ActiveTextureARB */ { 8, 0 },
- /* MultiTexCoord1dvARB */ { 16, 0 },
- /* MultiTexCoord1fvARB */ { 12, 0 },
- /* MultiTexCoord1ivARB */ { 12, 0 },
- /* MultiTexCoord1svARB */ { 12, 0 },
- /* MultiTexCoord2dvARB */ { 24, 0 },
- /* MultiTexCoord2fvARB */ { 16, 0 },
- /* MultiTexCoord2ivARB */ { 16, 0 },
- /* MultiTexCoord2svARB */ { 12, 0 },
- /* MultiTexCoord3dvARB */ { 32, 0 },
- /* MultiTexCoord3fvARB */ { 20, 0 },
- /* MultiTexCoord3ivARB */ { 20, 0 },
- /* MultiTexCoord3svARB */ { 16, 0 },
- /* MultiTexCoord4dvARB */ { 40, 0 },
- /* MultiTexCoord4fvARB */ { 24, 0 },
- /* MultiTexCoord4ivARB */ { 24, 0 },
- /* MultiTexCoord4svARB 213 */ { 16, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode 220 */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* WindowPos3fvMESA 230 */ { 16, 0 },
-};
-__GLXrenderSizeData __glXRenderSizeTable_EXT[__GLX_MAX_RENDER_OPCODE_EXT - __GLX_MIN_RENDER_OPCODE_EXT + 1] = {
- /* ColorTable 2053 */ { 44, __glXColorTableReqSize },
- /* ColorTableParameterfv */ { 12, __glXColorTableParameterfvReqSize },
- /* ColorTableParameteriv */ { 12, __glXColorTableParameterivReqSize },
- /* CopyColorTable */ { 24, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* PointParameterfEXT 2065 */ { 12, 0 },
- /* PointParameterfvEXT 2066 */ { 8, __glXPointParameterfvEXTReqSize },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* BlendColor */ { 20, 0 },
- /* BlendEquation */ { 8, 0 },
- /* no such opcode */ { 0, 0 },
- /* TexSubImage1D */ { 60, __glXTexSubImage1DReqSize },
- /* TexSubImage2D */ { 60, __glXTexSubImage2DReqSize },
- /* ConvolutionFilter1D */ { 48, __glXConvolutionFilter1DReqSize },
- /* ConvolutionFilter2D */ { 48, __glXConvolutionFilter2DReqSize },
- /* ConvolutionParameterf */ { 16, 0 },
- /* ConvolutionParameterfv */ { 12, __glXConvolutionParameterfvReqSize },
- /* ConvolutionParameteri */ { 16, 0 },
- /* ConvolutionParameteriv */ { 12, __glXConvolutionParameterivReqSize },
- /* CopyConvolutionFilter1D */ { 24, },
- /* CopyConvolutionFilter2D */ { 28, },
- /* SeparableFilter2D */ { 48, __glXSeparableFilter2DReqSize },
- /* Histogram */ { 20, },
- /* Minmax */ { 16, },
- /* ResetHistogram */ { 8, },
- /* ResetMinmax */ { 8, },
- /* TexImage3D */ { 84, __glXTexImage3DReqSize },
- /* TexSubImage3D */ { 92, __glXTexSubImage3DReqSize },
- /* DrawArrays */ { 16, __glXDrawArraysSize },
- /* BindTexture */ { 12, 0 },
- /* PrioritizeTextures */ { 8, __glXPrioritizeTexturesReqSize },
- /* CopyTexImage1D */ { 32, 0 },
- /* CopyTexImage2D */ { 36, 0 },
- /* CopyTexSubImage1D */ { 28, 0 },
- /* CopyTexSubImage2D */ { 36, 0 },
- /* CopyTexSubImage3D 4123 */ { 40, 0 },
- /* FogCoordfv 4124 */ { 8, 0 },
- /* FogCoorddv 4125 */ { 12, 0 },
- /* SecondaryColor3bv 4126 */ { 8, 0 },
- /* SecondaryColor3sv 4127 */ { 12, 0 },
- /* SecondaryColor3iv 4128 */ { 16, 0 },
- /* SecondaryColor3fv 4129 */ { 16, 0 },
- /* SecondaryColor3dv 4130 */ { 28, 0 },
- /* SecondaryColor3ubv 4131 */ { 8, 0 },
- /* SecondaryColor3usv 4132 */ { 12, 0 },
- /* SecondaryColor3uiv 4133 */ { 16, 0 },
- /* BlendFuncSeparate 4134 */ { 20, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* ActiveStencilFaceEXT 4220 */ { 8, 0 },
- /* PointParameteriNV 4221 */ { 12, 0 },
- /* PointParameterivNV 4222 */ { 8, __glXPointParameterivNVReqSize },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
- /* no such opcode */ { 0, 0 },
-
- /* BindRenderbufferEXT */ { 12, 0 },
- /* DeleteRenderbuffersEXT */ { 8, __glXDeleteRenderbuffersEXTReqSize },
- /* RenderbufferStorageEXT */ { 20, 0 },
- /* BindFramebufferEXT */ { 12, 0 },
- /* DeleteFramebuffersEXT */ { 8, __glXDeleteFramebuffersEXTReqSize },
- /* FramebufferTexture1DEXT */ { 24, 0 },
- /* FramebufferTexture2DEXT */ { 24, 0 },
- /* FramebufferTexture3DEXT */ { 28, 0 },
- /* FramebufferRenderbufferTexture3DEXT */ { 20, 0 },
- /* GenerateMipmapEXT */ { 8, 0 }
-};
diff --git a/GL/glx/single2.c b/GL/glx/single2.c
index efc7220f3..3387af2a2 100644
--- a/GL/glx/single2.c
+++ b/GL/glx/single2.c
@@ -1,4 +1,3 @@
-/* $XFree86: xc/programs/Xserver/GL/glx/single2.c,v 1.8 2004/02/10 22:54:15 alanh Exp $ */
/*
** License Applicability. Except to the extent portions of this file are
** made subject to an alternative license as permitted in the SGI Free
diff --git a/GL/glx/single2swap.c b/GL/glx/single2swap.c
index d1f56c2c2..41a42bb0f 100644
--- a/GL/glx/single2swap.c
+++ b/GL/glx/single2swap.c
@@ -1,4 +1,3 @@
-/* $XFree86: xc/programs/Xserver/GL/glx/single2swap.c,v 1.7 2002/01/14 22:47:08 tsi Exp $ */
/*
** License Applicability. Except to the extent portions of this file are
** made subject to an alternative license as permitted in the SGI Free
diff --git a/GL/glx/singlepix.c b/GL/glx/singlepix.c
index ae64db4ca..98898aa3a 100644
--- a/GL/glx/singlepix.c
+++ b/GL/glx/singlepix.c
@@ -195,7 +195,7 @@ int __glXDisp_GetPolygonStipple(__GLXclientState *cl, GLbyte *pc)
return Success;
}
-int __glXDisp_GetSeparableFilter(__GLXclientState *cl, GLbyte *pc)
+static int GetSeparableFilter(__GLXclientState *cl, GLbyte *pc, GLXContextTag tag)
{
GLint compsize, compsize2;
GLenum format, type, target;
@@ -206,12 +206,11 @@ int __glXDisp_GetSeparableFilter(__GLXclientState *cl, GLbyte *pc)
char *answer, answerBuffer[200];
GLint width=0, height=0;
- cx = __glXForceCurrent(cl, __GLX_GET_SINGLE_CONTEXT_TAG(pc), &error);
+ cx = __glXForceCurrent(cl, tag, &error);
if (!cx) {
return error;
}
- pc += __GLX_SINGLE_HDR_SIZE;
format = *(GLenum *)(pc + 4);
type = *(GLenum *)(pc + 8);
target = *(GLenum *)(pc + 0);
@@ -220,8 +219,8 @@ int __glXDisp_GetSeparableFilter(__GLXclientState *cl, GLbyte *pc)
/* target must be SEPARABLE_2D, however I guess we can let the GL
barf on this one.... */
- CALL_GetConvolutionParameteriv( GET_DISPATCH(), (target, GL_CONVOLUTION_WIDTH, &width) );
- CALL_GetConvolutionParameteriv( GET_DISPATCH(), (target, GL_CONVOLUTION_HEIGHT, &height) );
+ CALL_GetConvolutionParameteriv(GET_DISPATCH(), (target, GL_CONVOLUTION_WIDTH, &width));
+ CALL_GetConvolutionParameteriv(GET_DISPATCH(), (target, GL_CONVOLUTION_HEIGHT, &height));
/*
* The two queries above might fail if we're in a state where queries
* are illegal, but then width and height would still be zero anyway.
@@ -234,7 +233,7 @@ int __glXDisp_GetSeparableFilter(__GLXclientState *cl, GLbyte *pc)
compsize = __GLX_PAD(compsize);
compsize2 = __GLX_PAD(compsize2);
- CALL_PixelStorei( GET_DISPATCH(), (GL_PACK_SWAP_BYTES, swapBytes) );
+ CALL_PixelStorei(GET_DISPATCH(), (GL_PACK_SWAP_BYTES, swapBytes));
__GLX_GET_ANSWER_BUFFER(answer,cl,compsize + compsize2,1);
__glXClearErrorOccured();
CALL_GetSeparableFilter( GET_DISPATCH(), (
@@ -260,7 +259,22 @@ int __glXDisp_GetSeparableFilter(__GLXclientState *cl, GLbyte *pc)
return Success;
}
-int __glXDisp_GetConvolutionFilter(__GLXclientState *cl, GLbyte *pc)
+int __glXDisp_GetSeparableFilter(__GLXclientState *cl, GLbyte *pc)
+{
+ const GLXContextTag tag = __GLX_GET_SINGLE_CONTEXT_TAG(pc);
+
+ return GetSeparableFilter(cl, pc + __GLX_SINGLE_HDR_SIZE, tag);
+}
+
+int __glXDisp_GetSeparableFilterEXT(__GLXclientState *cl, GLbyte *pc)
+{
+ const GLXContextTag tag = __GLX_GET_VENDPRIV_CONTEXT_TAG(pc);
+
+ return GetSeparableFilter(cl, pc + __GLX_VENDPRIV_HDR_SIZE, tag);
+}
+
+static int GetConvolutionFilter(__GLXclientState *cl, GLbyte *pc,
+ GLXContextTag tag)
{
GLint compsize;
GLenum format, type, target;
@@ -271,22 +285,23 @@ int __glXDisp_GetConvolutionFilter(__GLXclientState *cl, GLbyte *pc)
char *answer, answerBuffer[200];
GLint width=0, height=0;
- cx = __glXForceCurrent(cl, __GLX_GET_SINGLE_CONTEXT_TAG(pc), &error);
+ cx = __glXForceCurrent(cl, tag, &error);
if (!cx) {
return error;
}
- pc += __GLX_SINGLE_HDR_SIZE;
format = *(GLenum *)(pc + 4);
type = *(GLenum *)(pc + 8);
target = *(GLenum *)(pc + 0);
swapBytes = *(GLboolean *)(pc + 12);
- CALL_GetConvolutionParameteriv( GET_DISPATCH(), (target, GL_CONVOLUTION_WIDTH, &width) );
+ CALL_GetConvolutionParameteriv(GET_DISPATCH(),
+ (target, GL_CONVOLUTION_WIDTH, &width));
if (target == GL_CONVOLUTION_1D) {
height = 1;
} else {
- CALL_GetConvolutionParameteriv( GET_DISPATCH(), (target, GL_CONVOLUTION_HEIGHT, &height) );
+ CALL_GetConvolutionParameteriv(GET_DISPATCH(),
+ (target, GL_CONVOLUTION_HEIGHT, &height));
}
/*
* The two queries above might fail if we're in a state where queries
@@ -295,7 +310,7 @@ int __glXDisp_GetConvolutionFilter(__GLXclientState *cl, GLbyte *pc)
compsize = __glGetTexImage_size(target,1,format,type,width,height,1);
if (compsize < 0) compsize = 0;
- CALL_PixelStorei( GET_DISPATCH(), (GL_PACK_SWAP_BYTES, swapBytes) );
+ CALL_PixelStorei(GET_DISPATCH(), (GL_PACK_SWAP_BYTES, swapBytes));
__GLX_GET_ANSWER_BUFFER(answer,cl,compsize,1);
__glXClearErrorOccured();
CALL_GetConvolutionFilter( GET_DISPATCH(), (
@@ -319,7 +334,21 @@ int __glXDisp_GetConvolutionFilter(__GLXclientState *cl, GLbyte *pc)
return Success;
}
-int __glXDisp_GetHistogram(__GLXclientState *cl, GLbyte *pc)
+int __glXDisp_GetConvolutionFilter(__GLXclientState *cl, GLbyte *pc)
+{
+ const GLXContextTag tag = __GLX_GET_SINGLE_CONTEXT_TAG(pc);
+
+ return GetConvolutionFilter(cl, pc + __GLX_SINGLE_HDR_SIZE, tag);
+}
+
+int __glXDisp_GetConvolutionFilterEXT(__GLXclientState *cl, GLbyte *pc)
+{
+ const GLXContextTag tag = __GLX_GET_VENDPRIV_CONTEXT_TAG(pc);
+
+ return GetConvolutionFilter(cl, pc + __GLX_VENDPRIV_HDR_SIZE, tag);
+}
+
+static int GetHistogram(__GLXclientState *cl, GLbyte *pc, GLXContextTag tag)
{
GLint compsize;
GLenum format, type, target;
@@ -330,19 +359,19 @@ int __glXDisp_GetHistogram(__GLXclientState *cl, GLbyte *pc)
char *answer, answerBuffer[200];
GLint width=0;
- cx = __glXForceCurrent(cl, __GLX_GET_SINGLE_CONTEXT_TAG(pc), &error);
+ cx = __glXForceCurrent(cl, tag, &error);
if (!cx) {
return error;
}
- pc += __GLX_SINGLE_HDR_SIZE;
format = *(GLenum *)(pc + 4);
type = *(GLenum *)(pc + 8);
target = *(GLenum *)(pc + 0);
swapBytes = *(GLboolean *)(pc + 12);
reset = *(GLboolean *)(pc + 13);
- CALL_GetHistogramParameteriv( GET_DISPATCH(), (target, GL_HISTOGRAM_WIDTH, &width) );
+ CALL_GetHistogramParameteriv(GET_DISPATCH(),
+ (target, GL_HISTOGRAM_WIDTH, &width));
/*
* The one query above might fail if we're in a state where queries
* are illegal, but then width would still be zero anyway.
@@ -350,10 +379,10 @@ int __glXDisp_GetHistogram(__GLXclientState *cl, GLbyte *pc)
compsize = __glGetTexImage_size(target,1,format,type,width,1,1);
if (compsize < 0) compsize = 0;
- CALL_PixelStorei( GET_DISPATCH(), (GL_PACK_SWAP_BYTES, swapBytes) );
+ CALL_PixelStorei(GET_DISPATCH(), (GL_PACK_SWAP_BYTES, swapBytes));
__GLX_GET_ANSWER_BUFFER(answer,cl,compsize,1);
__glXClearErrorOccured();
- CALL_GetHistogram( GET_DISPATCH(), (target, reset, format, type, answer) );
+ CALL_GetHistogram(GET_DISPATCH(), (target, reset, format, type, answer));
if (__glXErrorOccured()) {
__GLX_BEGIN_REPLY(0);
@@ -368,7 +397,21 @@ int __glXDisp_GetHistogram(__GLXclientState *cl, GLbyte *pc)
return Success;
}
-int __glXDisp_GetMinmax(__GLXclientState *cl, GLbyte *pc)
+int __glXDisp_GetHistogram(__GLXclientState *cl, GLbyte *pc)
+{
+ const GLXContextTag tag = __GLX_GET_SINGLE_CONTEXT_TAG(pc);
+
+ return GetHistogram(cl, pc + __GLX_SINGLE_HDR_SIZE, tag);
+}
+
+int __glXDisp_GetHistogramEXT(__GLXclientState *cl, GLbyte *pc)
+{
+ const GLXContextTag tag = __GLX_GET_VENDPRIV_CONTEXT_TAG(pc);
+
+ return GetHistogram(cl, pc + __GLX_VENDPRIV_HDR_SIZE, tag);
+}
+
+static int GetMinmax(__GLXclientState *cl, GLbyte *pc, GLXContextTag tag)
{
GLint compsize;
GLenum format, type, target;
@@ -378,12 +421,11 @@ int __glXDisp_GetMinmax(__GLXclientState *cl, GLbyte *pc)
int error;
char *answer, answerBuffer[200];
- cx = __glXForceCurrent(cl, __GLX_GET_SINGLE_CONTEXT_TAG(pc), &error);
+ cx = __glXForceCurrent(cl, tag, &error);
if (!cx) {
return error;
}
- pc += __GLX_SINGLE_HDR_SIZE;
format = *(GLenum *)(pc + 4);
type = *(GLenum *)(pc + 8);
target = *(GLenum *)(pc + 0);
@@ -393,10 +435,10 @@ int __glXDisp_GetMinmax(__GLXclientState *cl, GLbyte *pc)
compsize = __glGetTexImage_size(target,1,format,type,2,1,1);
if (compsize < 0) compsize = 0;
- CALL_PixelStorei( GET_DISPATCH(), (GL_PACK_SWAP_BYTES, swapBytes) );
+ CALL_PixelStorei(GET_DISPATCH(), (GL_PACK_SWAP_BYTES, swapBytes));
__GLX_GET_ANSWER_BUFFER(answer,cl,compsize,1);
__glXClearErrorOccured();
- CALL_GetMinmax( GET_DISPATCH(), (target, reset, format, type, answer) );
+ CALL_GetMinmax(GET_DISPATCH(), (target, reset, format, type, answer));
if (__glXErrorOccured()) {
__GLX_BEGIN_REPLY(0);
@@ -410,7 +452,21 @@ int __glXDisp_GetMinmax(__GLXclientState *cl, GLbyte *pc)
return Success;
}
-int __glXDisp_GetColorTable(__GLXclientState *cl, GLbyte *pc)
+int __glXDisp_GetMinmax(__GLXclientState *cl, GLbyte *pc)
+{
+ const GLXContextTag tag = __GLX_GET_SINGLE_CONTEXT_TAG(pc);
+
+ return GetMinmax(cl, pc + __GLX_SINGLE_HDR_SIZE, tag);
+}
+
+int __glXDisp_GetMinmaxEXT(__GLXclientState *cl, GLbyte *pc)
+{
+ const GLXContextTag tag = __GLX_GET_VENDPRIV_CONTEXT_TAG(pc);
+
+ return GetMinmax(cl, pc + __GLX_VENDPRIV_HDR_SIZE, tag);
+}
+
+static int GetColorTable(__GLXclientState *cl, GLbyte *pc, GLXContextTag tag)
{
GLint compsize;
GLenum format, type, target;
@@ -421,18 +477,18 @@ int __glXDisp_GetColorTable(__GLXclientState *cl, GLbyte *pc)
char *answer, answerBuffer[200];
GLint width=0;
- cx = __glXForceCurrent(cl, __GLX_GET_SINGLE_CONTEXT_TAG(pc), &error);
+ cx = __glXForceCurrent(cl, tag, &error);
if (!cx) {
return error;
}
- pc += __GLX_SINGLE_HDR_SIZE;
target = *(GLenum *)(pc + 0);
format = *(GLenum *)(pc + 4);
type = *(GLenum *)(pc + 8);
swapBytes = *(GLboolean *)(pc + 12);
- CALL_GetColorTableParameteriv( GET_DISPATCH(), (target, GL_COLOR_TABLE_WIDTH, &width) );
+ CALL_GetColorTableParameteriv(GET_DISPATCH(),
+ (target, GL_COLOR_TABLE_WIDTH, &width));
/*
* The one query above might fail if we're in a state where queries
* are illegal, but then width would still be zero anyway.
@@ -440,7 +496,7 @@ int __glXDisp_GetColorTable(__GLXclientState *cl, GLbyte *pc)
compsize = __glGetTexImage_size(target,1,format,type,width,1,1);
if (compsize < 0) compsize = 0;
- CALL_PixelStorei( GET_DISPATCH(), (GL_PACK_SWAP_BYTES, swapBytes) );
+ CALL_PixelStorei(GET_DISPATCH(), (GL_PACK_SWAP_BYTES, swapBytes));
__GLX_GET_ANSWER_BUFFER(answer,cl,compsize,1);
__glXClearErrorOccured();
CALL_GetColorTable( GET_DISPATCH(), (
@@ -462,3 +518,17 @@ int __glXDisp_GetColorTable(__GLXclientState *cl, GLbyte *pc)
return Success;
}
+
+int __glXDisp_GetColorTable(__GLXclientState *cl, GLbyte *pc)
+{
+ const GLXContextTag tag = __GLX_GET_SINGLE_CONTEXT_TAG(pc);
+
+ return GetColorTable(cl, pc + __GLX_SINGLE_HDR_SIZE, tag);
+}
+
+int __glXDisp_GetColorTableSGI(__GLXclientState *cl, GLbyte *pc)
+{
+ const GLXContextTag tag = __GLX_GET_VENDPRIV_CONTEXT_TAG(pc);
+
+ return GetColorTable(cl, pc + __GLX_VENDPRIV_HDR_SIZE, tag);
+}
diff --git a/GL/glx/singlepixswap.c b/GL/glx/singlepixswap.c
index 91cebff46..032b42765 100644
--- a/GL/glx/singlepixswap.c
+++ b/GL/glx/singlepixswap.c
@@ -1,4 +1,3 @@
-/* $XFree86: xc/programs/Xserver/GL/glx/singlepixswap.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
@@ -220,7 +219,7 @@ int __glXDispSwap_GetPolygonStipple(__GLXclientState *cl, GLbyte *pc)
return Success;
}
-int __glXDispSwap_GetSeparableFilter(__GLXclientState *cl, GLbyte *pc)
+static int GetSeparableFilter(__GLXclientState *cl, GLbyte *pc, GLXContextTag tag)
{
GLint compsize, compsize2;
GLenum format, type, target;
@@ -232,12 +231,11 @@ int __glXDispSwap_GetSeparableFilter(__GLXclientState *cl, GLbyte *pc)
char *answer, answerBuffer[200];
GLint width=0, height=0;
- cx = __glXForceCurrent(cl, __GLX_GET_SINGLE_CONTEXT_TAG(pc), &error);
+ cx = __glXForceCurrent(cl, tag, &error);
if (!cx) {
return error;
}
- pc += __GLX_SINGLE_HDR_SIZE;
__GLX_SWAP_INT(pc+0);
__GLX_SWAP_INT(pc+4);
__GLX_SWAP_INT(pc+8);
@@ -292,7 +290,21 @@ int __glXDispSwap_GetSeparableFilter(__GLXclientState *cl, GLbyte *pc)
return Success;
}
-int __glXDispSwap_GetConvolutionFilter(__GLXclientState *cl, GLbyte *pc)
+int __glXDispSwap_GetSeparableFilter(__GLXclientState *cl, GLbyte *pc)
+{
+ const GLXContextTag tag = __GLX_GET_SINGLE_CONTEXT_TAG(pc);
+
+ return GetSeparableFilter(cl, pc + __GLX_SINGLE_HDR_SIZE, tag);
+}
+
+int __glXDispSwap_GetSeparableFilterEXT(__GLXclientState *cl, GLbyte *pc)
+{
+ const GLXContextTag tag = __GLX_GET_VENDPRIV_CONTEXT_TAG(pc);
+
+ return GetSeparableFilter(cl, pc + __GLX_VENDPRIV_HDR_SIZE, tag);
+}
+
+static int GetConvolutionFilter(__GLXclientState *cl, GLbyte *pc, GLXContextTag tag)
{
GLint compsize;
GLenum format, type, target;
@@ -304,12 +316,11 @@ int __glXDispSwap_GetConvolutionFilter(__GLXclientState *cl, GLbyte *pc)
char *answer, answerBuffer[200];
GLint width=0, height=0;
- cx = __glXForceCurrent(cl, __GLX_GET_SINGLE_CONTEXT_TAG(pc), &error);
+ cx = __glXForceCurrent(cl, tag, &error);
if (!cx) {
return error;
}
- pc += __GLX_SINGLE_HDR_SIZE;
__GLX_SWAP_INT(pc+0);
__GLX_SWAP_INT(pc+4);
__GLX_SWAP_INT(pc+8);
@@ -358,7 +369,21 @@ int __glXDispSwap_GetConvolutionFilter(__GLXclientState *cl, GLbyte *pc)
return Success;
}
-int __glXDispSwap_GetHistogram(__GLXclientState *cl, GLbyte *pc)
+int __glXDispSwap_GetConvolutionFilter(__GLXclientState *cl, GLbyte *pc)
+{
+ const GLXContextTag tag = __GLX_GET_SINGLE_CONTEXT_TAG(pc);
+
+ return GetConvolutionFilter(cl, pc + __GLX_SINGLE_HDR_SIZE, tag);
+}
+
+int __glXDispSwap_GetConvolutionFilterEXT(__GLXclientState *cl, GLbyte *pc)
+{
+ const GLXContextTag tag = __GLX_GET_VENDPRIV_CONTEXT_TAG(pc);
+
+ return GetConvolutionFilter(cl, pc + __GLX_VENDPRIV_HDR_SIZE, tag);
+}
+
+static int GetHistogram(__GLXclientState *cl, GLbyte *pc, GLXContextTag tag)
{
GLint compsize;
GLenum format, type, target;
@@ -370,12 +395,11 @@ int __glXDispSwap_GetHistogram(__GLXclientState *cl, GLbyte *pc)
char *answer, answerBuffer[200];
GLint width=0;
- cx = __glXForceCurrent(cl, __GLX_GET_SINGLE_CONTEXT_TAG(pc), &error);
+ cx = __glXForceCurrent(cl, tag, &error);
if (!cx) {
return error;
}
- pc += __GLX_SINGLE_HDR_SIZE;
__GLX_SWAP_INT(pc+0);
__GLX_SWAP_INT(pc+4);
__GLX_SWAP_INT(pc+8);
@@ -413,7 +437,21 @@ int __glXDispSwap_GetHistogram(__GLXclientState *cl, GLbyte *pc)
return Success;
}
-int __glXDispSwap_GetMinmax(__GLXclientState *cl, GLbyte *pc)
+int __glXDispSwap_GetHistogram(__GLXclientState *cl, GLbyte *pc)
+{
+ const GLXContextTag tag = __GLX_GET_SINGLE_CONTEXT_TAG(pc);
+
+ return GetHistogram(cl, pc + __GLX_SINGLE_HDR_SIZE, tag);
+}
+
+int __glXDispSwap_GetHistogramEXT(__GLXclientState *cl, GLbyte *pc)
+{
+ const GLXContextTag tag = __GLX_GET_VENDPRIV_CONTEXT_TAG(pc);
+
+ return GetHistogram(cl, pc + __GLX_VENDPRIV_HDR_SIZE, tag);
+}
+
+static int GetMinmax(__GLXclientState *cl, GLbyte *pc, GLXContextTag tag)
{
GLint compsize;
GLenum format, type, target;
@@ -424,12 +462,11 @@ int __glXDispSwap_GetMinmax(__GLXclientState *cl, GLbyte *pc)
__GLX_DECLARE_SWAP_VARIABLES;
char *answer, answerBuffer[200];
- cx = __glXForceCurrent(cl, __GLX_GET_SINGLE_CONTEXT_TAG(pc), &error);
+ cx = __glXForceCurrent(cl, tag, &error);
if (!cx) {
return error;
}
- pc += __GLX_SINGLE_HDR_SIZE;
__GLX_SWAP_INT(pc+0);
__GLX_SWAP_INT(pc+4);
__GLX_SWAP_INT(pc+8);
@@ -460,7 +497,21 @@ int __glXDispSwap_GetMinmax(__GLXclientState *cl, GLbyte *pc)
return Success;
}
-int __glXDispSwap_GetColorTable(__GLXclientState *cl, GLbyte *pc)
+int __glXDispSwap_GetMinmax(__GLXclientState *cl, GLbyte *pc)
+{
+ const GLXContextTag tag = __GLX_GET_SINGLE_CONTEXT_TAG(pc);
+
+ return GetMinmax(cl, pc + __GLX_SINGLE_HDR_SIZE, tag);
+}
+
+int __glXDispSwap_GetMinmaxEXT(__GLXclientState *cl, GLbyte *pc)
+{
+ const GLXContextTag tag = __GLX_GET_VENDPRIV_CONTEXT_TAG(pc);
+
+ return GetMinmax(cl, pc + __GLX_VENDPRIV_HDR_SIZE, tag);
+}
+
+static int GetColorTable(__GLXclientState *cl, GLbyte *pc, GLXContextTag tag)
{
GLint compsize;
GLenum format, type, target;
@@ -472,12 +523,11 @@ int __glXDispSwap_GetColorTable(__GLXclientState *cl, GLbyte *pc)
char *answer, answerBuffer[200];
GLint width=0;
- cx = __glXForceCurrent(cl, __GLX_GET_SINGLE_CONTEXT_TAG(pc), &error);
+ cx = __glXForceCurrent(cl, tag, &error);
if (!cx) {
return error;
}
- pc += __GLX_SINGLE_HDR_SIZE;
__GLX_SWAP_INT(pc+0);
__GLX_SWAP_INT(pc+4);
__GLX_SWAP_INT(pc+8);
@@ -518,3 +568,17 @@ int __glXDispSwap_GetColorTable(__GLXclientState *cl, GLbyte *pc)
return Success;
}
+
+int __glXDispSwap_GetColorTable(__GLXclientState *cl, GLbyte *pc)
+{
+ const GLXContextTag tag = __GLX_GET_SINGLE_CONTEXT_TAG(pc);
+
+ return GetColorTable(cl, pc + __GLX_SINGLE_HDR_SIZE, tag);
+}
+
+int __glXDispSwap_GetColorTableSGI(__GLXclientState *cl, GLbyte *pc)
+{
+ const GLXContextTag tag = __GLX_GET_VENDPRIV_CONTEXT_TAG(pc);
+
+ return GetColorTable(cl, pc + __GLX_VENDPRIV_HDR_SIZE, tag);
+}
diff --git a/GL/glx/singlesize.c b/GL/glx/singlesize.c
index 116c6dc41..b5a74f30d 100644
--- a/GL/glx/singlesize.c
+++ b/GL/glx/singlesize.c
@@ -1,4 +1,3 @@
-/* $XFree86: xc/programs/Xserver/GL/glx/singlesize.c,v 1.7tsi Exp $ */
/*
** License Applicability. Except to the extent portions of this file are
** made subject to an alternative license as permitted in the SGI Free
diff --git a/GL/glx/swap_interval.c b/GL/glx/swap_interval.c
new file mode 100644
index 000000000..c4137c1aa
--- /dev/null
+++ b/GL/glx/swap_interval.c
@@ -0,0 +1,105 @@
+/*
+ * (C) Copyright IBM Corporation 2006
+ * All Rights Reserved.
+ *
+ * Permission is hereby granted, free of charge, to 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, 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
+ * THE COPYRIGHT HOLDERS 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.
+ */
+
+#define NEED_REPLIES
+#ifdef HAVE_DIX_CONFIG_H
+#include <dix-config.h>
+#endif
+
+#include "glxserver.h"
+#include "glxutil.h"
+#include "glxext.h"
+#include "singlesize.h"
+#include "unpack.h"
+#include "indirect_size_get.h"
+#include "indirect_dispatch.h"
+#include "glapitable.h"
+#include "glapi.h"
+#include "glthread.h"
+#include "dispatch.h"
+#include "glapioffsets.h"
+
+#if defined(__linux__) || defined (__GLIBC__) || defined (__GNU__)
+#include <byteswap.h>
+#elif defined(__OpenBSD__)
+#include <sys/endian.h>
+#define bswap_16 __swap16
+#define bswap_32 __swap32
+#define bswap_64 __swap64
+#else
+#include <sys/endian.h>
+#define bswap_16 bswap16
+#define bswap_32 bswap32
+#define bswap_64 bswap64
+#endif
+
+static int DoSwapInterval(__GLXclientState *cl, GLbyte *pc, int do_swap);
+
+int DoSwapInterval(__GLXclientState *cl, GLbyte *pc, int do_swap)
+{
+ xGLXVendorPrivateReq * const req = (xGLXVendorPrivateReq *) pc;
+ ClientPtr client = cl->client;
+ const GLXContextTag tag = req->contextTag;
+ __GLXcontext *cx;
+ GLint interval;
+
+
+ cx = __glXLookupContextByTag(cl, tag);
+
+ LogMessage(X_ERROR, "%s: cx = %p, GLX screen = %p\n", __func__,
+ cx, (cx == NULL) ? NULL : cx->pGlxScreen);
+ if ((cx == NULL) || (cx->pGlxScreen == NULL)) {
+ client->errorValue = tag;
+ return __glXError(GLXBadContext);
+ }
+
+ if (cx->pGlxScreen->swapInterval == NULL) {
+ LogMessage(X_ERROR, "AIGLX: cx->pGlxScreen->swapInterval == NULL\n");
+ client->errorValue = tag;
+ return __glXError(GLXUnsupportedPrivateRequest);
+ }
+
+ if (cx->drawPriv == NULL) {
+ client->errorValue = tag;
+ return __glXError(GLXBadDrawable);
+ }
+
+ pc += __GLX_VENDPRIV_HDR_SIZE;
+ interval = (do_swap)
+ ? bswap_32(*(int *)(pc + 0))
+ : *(int *)(pc + 0);
+
+ (void) (*cx->pGlxScreen->swapInterval)(cx->drawPriv, interval);
+ return Success;
+}
+
+int __glXDisp_SwapIntervalSGI(__GLXclientState *cl, GLbyte *pc)
+{
+ return DoSwapInterval(cl, pc, 0);
+}
+
+int __glXDispSwap_SwapIntervalSGI(__GLXclientState *cl, GLbyte *pc)
+{
+ return DoSwapInterval(cl, pc, 1);
+}
diff --git a/GL/glx/unpack.h b/GL/glx/unpack.h
index 723fb85f3..70ba1a893 100644
--- a/GL/glx/unpack.h
+++ b/GL/glx/unpack.h
@@ -1,4 +1,3 @@
-/* $XFree86: xc/programs/Xserver/GL/glx/unpack.h,v 1.4 2002/01/14 22:47:08 tsi Exp $ */
#ifdef HAVE_DIX_CONFIG_H
#include <dix-config.h>
#endif
diff --git a/GL/glx/xfont.c b/GL/glx/xfont.c
index 795671534..b24c77d44 100644
--- a/GL/glx/xfont.c
+++ b/GL/glx/xfont.c
@@ -47,6 +47,7 @@
#include "glapi.h"
#include "glthread.h"
#include "dispatch.h"
+#include "indirect_dispatch.h"
#include <GL/gl.h>
#include <pixmapstr.h>
#include <windowstr.h>
@@ -156,7 +157,7 @@ MakeBitmapsFromFont(FontPtr pFont, int first, int count, int list_base)
/************************************************************************/
-int __glXUseXFont(__GLXclientState *cl, GLbyte *pc)
+int __glXDisp_UseXFont(__GLXclientState *cl, GLbyte *pc)
{
ClientPtr client = cl->client;
xGLXUseXFontReq *req;
@@ -179,7 +180,7 @@ int __glXUseXFont(__GLXclientState *cl, GLbyte *pc)
** to try to make a font during another lists construction.
*/
client->errorValue = cx->id;
- return __glXBadContextState;
+ return __glXError(GLXBadContextState);
}
/*
diff --git a/GL/include/GL/Makefile.am b/GL/include/GL/Makefile.am
deleted file mode 100644
index f2a902396..000000000
--- a/GL/include/GL/Makefile.am
+++ /dev/null
@@ -1 +0,0 @@
-EXTRA_DIST = glx_ansic.h xf86glx.h
diff --git a/GL/include/GL/glx_ansic.h b/GL/include/GL/glx_ansic.h
deleted file mode 100644
index 9085a08fe..000000000
--- a/GL/include/GL/glx_ansic.h
+++ /dev/null
@@ -1,112 +0,0 @@
-#ifdef HAVE_DIX_CONFIG_H
-#include <dix-config.h>
-#endif
-
-#ifndef _glx_ansic_h_
-#define _glx_ansic_h_
-
-/* $XFree86: xc/programs/Xserver/GL/include/GL/glx_ansic.h,v 1.5 2001/03/21 20:49:08 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.
-*/
-
-/*
-** this needs to check whether we're using XFree86 at all, and then
-** which version we're using. Use these macros if version is 3.9+, else
-** use normal commands below.
-*/
-
-/*
-** turns out this include file only exists for XFree86 3.9+
-** I notice that not having it is not an error and does not stop the build,
-** but having it will allow opengl and glx to be built for 3.9+. We no longer
-** need an explicit define in the Makefile, just point to the correct X source
-** tree and all should be taken care of.
-*/
-
-#ifdef XFree86Server
-
-#ifndef assert
-#define assert(a)
-#endif
-
-#else
-
-#if defined(Lynx) && defined(__assert_h)
-#undef __assert_h
-#endif
-#ifdef assert
-#undef assert
-#endif
-#include <assert.h>
-
-#endif
-
-
-#define GLX_STDOUT stdout
-#define GLX_STDERR stderr
-#define __glXPrintf printf
-#define __glXFprintf fprintf
-#define __glXSprintf sprintf
-#define __glXVfprintf vfprintf
-#define __glXVsprintf vsprintf
-#define __glXFopen fopen
-#define __glXFclose fclose
-#define __glXCos(x) cos(x)
-#define __glXSin(x) sin(x)
-#define __glXAtan(x) atan(x)
-#define __glXAbs(x) abs(x)
-#define __glXLog(x) log(x)
-#define __glXCeil(x) ceil(x)
-#define __glXFloor(x) floor(x)
-#define __glXSqrt(x) sqrt(x)
-#define __glXPow(x, y) pow(x, y)
-#define __glXMemmove(dest, src, n) memmove(dest, src, n)
-#define __glXMemcpy(dest, src, n) memcpy(dest, src, n)
-#define __glXMemset(s, c, n) memset(s, c, n)
-#define __glXStrdup(str) xstrdup(str)
-#define __glXStrcpy(dest, src) strcpy(dest, src)
-#define __glXStrncpy(dest, src, n) strncpy(dest, src, n)
-#define __glXStrcat(dest, src) strcat(dest, src)
-#define __glXStrncat(dest, src, n) strncat(dest, src, n)
-#define __glXStrcmp(s1, s2) strcmp(s1, s2)
-#define __glXStrncmp(s1, s2, n) strncmp(s1, s2, n)
-#define __glXStrlen(str) strlen(str)
-#define __glXAbort() abort()
-#define __glXStrtok(s, delim) strtok(s, delim)
-#define __glXStrcspn(s, reject) strcspn(s, reject)
-#define __glXGetenv(a) getenv(a)
-#define __glXAtoi(a) atoi(a)
-
-#endif /* _glx_ansic_h_ */
-
diff --git a/GL/include/GL/xf86glx.h b/GL/include/GL/xf86glx.h
deleted file mode 100644
index 5d018d72b..000000000
--- a/GL/include/GL/xf86glx.h
+++ /dev/null
@@ -1,39 +0,0 @@
-/* $XFree86: xc/programs/Xserver/GL/include/GL/xf86glx.h,v 1.3 1999/06/14 07:31:41 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:
- * Kevin E. Martin <kevin@precisioninsight.com>
- *
- */
-
-#ifdef HAVE_DIX_CONFIG_H
-#include <dix-config.h>
-#endif
-
-#include "miscstruct.h"
diff --git a/GL/include/Makefile.am b/GL/include/Makefile.am
deleted file mode 100644
index 1367fb437..000000000
--- a/GL/include/Makefile.am
+++ /dev/null
@@ -1 +0,0 @@
-SUBDIRS = GL
diff --git a/GL/mesa/.gitignore b/GL/mesa/.gitignore
new file mode 100644
index 000000000..82ab82747
--- /dev/null
+++ b/GL/mesa/.gitignore
@@ -0,0 +1,32 @@
+X/drivers
+X/glxheader.h
+X/xmesaP.h
+X/xm*.c
+array_cache/*.c
+array_cache/*.h
+mesa/drivers
+mesa/glxheader.h
+mesa/xm*.c
+glapi/*.c
+glapi/*.h
+main/*.c
+main/*.h
+math/*.c
+math/*.h
+ppc
+shader/*.c
+shader/*.h
+shader/slang/*.c
+shader/slang/*.h
+shader/slang/library
+shader/grammar/*.c
+shader/grammar/*.h
+sparc
+swrast/*.c
+swrast/*.h
+swrast_setup/*.c
+swrast_setup/*.h
+tnl/*.c
+tnl/*.h
+x86
+x86-64
diff --git a/GL/mesa/X/Makefile.am b/GL/mesa/X/Makefile.am
index 1f740ee90..2a9f4225a 100644
--- a/GL/mesa/X/Makefile.am
+++ b/GL/mesa/X/Makefile.am
@@ -20,9 +20,7 @@ INCLUDES = -I@MESA_SOURCE@/include \
# symbol means "being built in the server"
AM_CFLAGS = \
$(DIX_CFLAGS) \
- @SERVER_DEFINES@ \
- @MODULE_DEFINES@ \
- @LOADER_DEFINES@ \
+ -DXFree86Server \
@GLX_DEFINES@ \
-DXFree86Server
diff --git a/GL/mesa/X/xf86glx.c b/GL/mesa/X/xf86glx.c
index b1125a733..94959d628 100644
--- a/GL/mesa/X/xf86glx.c
+++ b/GL/mesa/X/xf86glx.c
@@ -1,4 +1,3 @@
-/* $XFree86: xc/programs/Xserver/GL/mesa/src/X/xf86glx.c,v 1.19 2003/07/16 01:38:27 dawes Exp $ */
/**************************************************************************
Copyright 1998-1999 Precision Insight, Inc., Cedar Park, Texas.
@@ -54,7 +53,6 @@ SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#include <glxutil.h>
#include "context.h"
#include "xmesaP.h"
-#include <GL/xf86glx.h>
#include "context.h"
#include "glcontextmodes.h"
@@ -140,12 +138,12 @@ __glXMesaDrawableSwapBuffers(__GLXdrawable *base)
static __GLXdrawable *
-__glXMesaContextCreateDrawable(__GLXcontext *context,
- DrawablePtr pDraw,
- XID drawId)
+__glXMesaScreenCreateDrawable(__GLXscreen *screen,
+ DrawablePtr pDraw,
+ XID drawId,
+ __GLcontextModes *modes)
{
__GLXMESAdrawable *glxPriv;
- __GLXscreen *pGlxScreen;
XMesaVisual xm_vis;
glxPriv = xalloc(sizeof *glxPriv);
@@ -154,30 +152,19 @@ __glXMesaContextCreateDrawable(__GLXcontext *context,
memset(glxPriv, 0, sizeof *glxPriv);
- if (!__glXDrawableInit(&glxPriv->base, context, pDraw, drawId)) {
+ if (!__glXDrawableInit(&glxPriv->base, screen, pDraw, drawId, modes)) {
xfree(glxPriv);
return NULL;
}
- glxPriv->base.destroy = __glXMesaDrawableDestroy;
- glxPriv->base.resize = __glXMesaDrawableResize;
- glxPriv->base.swapBuffers = __glXMesaDrawableSwapBuffers;
+ glxPriv->base.destroy = __glXMesaDrawableDestroy;
+ glxPriv->base.resize = __glXMesaDrawableResize;
+ glxPriv->base.swapBuffers = __glXMesaDrawableSwapBuffers;
- pGlxScreen = __glXActiveScreens[pDraw->pScreen->myNum];
-
- if (glxPriv->base.type == DRAWABLE_WINDOW) {
- VisualID vid = wVisual((WindowPtr)pDraw);
-
- glxPriv->base.modes = _gl_context_modes_find_visual(pGlxScreen->modes,
- vid);
- } else {
- glxPriv->base.modes = glxPriv->base.pGlxPixmap->modes;
- }
-
- xm_vis = find_mesa_visual(pGlxScreen, glxPriv->base.modes->visualID);
+ xm_vis = find_mesa_visual(screen, modes->visualID);
if (xm_vis == NULL) {
ErrorF("find_mesa_visual returned NULL for visualID = 0x%04x\n",
- glxPriv->base.modes->visualID);
+ modes->visualID);
xfree(glxPriv);
return NULL;
}
@@ -197,7 +184,7 @@ __glXMesaContextDestroy(__GLXcontext *baseContext)
__GLXMESAcontext *context = (__GLXMESAcontext *) baseContext;
XMesaDestroyContext(context->xmesa);
- __glXContextDestroy(context);
+ __glXContextDestroy(&context->base);
xfree(context);
}
@@ -268,7 +255,6 @@ __glXMesaScreenCreateContext(__GLXscreen *screen,
context->base.loseCurrent = __glXMesaContextLoseCurrent;
context->base.copy = __glXMesaContextCopy;
context->base.forceCurrent = __glXMesaContextForceCurrent;
- context->base.createDrawable = __glXMesaContextCreateDrawable;
xm_vis = find_mesa_visual(screen, modes->visualID);
if (!xm_vis) {
@@ -417,8 +403,9 @@ __glXMesaScreenProbe(ScreenPtr pScreen)
__glXScreenInit(&screen->base, pScreen);
- screen->base.destroy = __glXMesaScreenDestroy;
- screen->base.createContext = __glXMesaScreenCreateContext;
+ screen->base.destroy = __glXMesaScreenDestroy;
+ screen->base.createContext = __glXMesaScreenCreateContext;
+ screen->base.createDrawable = __glXMesaScreenCreateDrawable;
screen->base.pScreen = pScreen;
/*
diff --git a/GL/mesa/X/xf86glx_util.c b/GL/mesa/X/xf86glx_util.c
index d8afcbcb5..ffb528003 100644
--- a/GL/mesa/X/xf86glx_util.c
+++ b/GL/mesa/X/xf86glx_util.c
@@ -1,4 +1,3 @@
-/* $XFree86: xc/programs/Xserver/GL/mesa/src/X/xf86glx_util.c,v 1.5 2000/03/02 16:07:39 martin Exp $ */
/**************************************************************************
Copyright 1998-1999 Precision Insight, Inc., Cedar Park, Texas.
@@ -42,7 +41,6 @@ SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#include "pixmapstr.h"
#include "xf86glx_util.h"
#include <X11/Xmd.h>
-#include "GL/xf86glx.h"
#ifdef ROUNDUP
#undef ROUNDUP
diff --git a/GL/mesa/X/xf86glx_util.h b/GL/mesa/X/xf86glx_util.h
index 809c1550f..bb314128d 100644
--- a/GL/mesa/X/xf86glx_util.h
+++ b/GL/mesa/X/xf86glx_util.h
@@ -1,4 +1,3 @@
-/* $XFree86: xc/programs/Xserver/GL/mesa/src/X/xf86glx_util.h,v 1.5 2000/08/10 17:40:29 dawes Exp $ */
/**************************************************************************
Copyright 1998-1999 Precision Insight, Inc., Cedar Park, Texas.
diff --git a/GL/mesa/X/xf86glxint.h b/GL/mesa/X/xf86glxint.h
index 4e51215bc..8c7e91327 100644
--- a/GL/mesa/X/xf86glxint.h
+++ b/GL/mesa/X/xf86glxint.h
@@ -1,4 +1,3 @@
-/* $XFree86: xc/programs/Xserver/GL/mesa/src/X/xf86glxint.h,v 1.4 2002/02/22 21:45:08 dawes Exp $ */
/**************************************************************************
Copyright 1998-1999 Precision Insight, Inc., Cedar Park, Texas.
diff --git a/GL/mesa/array_cache/Makefile.am b/GL/mesa/array_cache/Makefile.am
index 4169f3df3..5016b73b0 100644
--- a/GL/mesa/array_cache/Makefile.am
+++ b/GL/mesa/array_cache/Makefile.am
@@ -2,9 +2,7 @@ noinst_LTLIBRARIES = libac.la
AM_CFLAGS = \
$(DIX_CFLAGS) \
- @SERVER_DEFINES@ \
- @MODULE_DEFINES@ \
- @LOADER_DEFINES@ \
+ -DXFree86Server \
@GLX_DEFINES@
INCLUDES = -I@MESA_SOURCE@/include \
diff --git a/GL/mesa/glapi/Makefile.am b/GL/mesa/glapi/Makefile.am
index 223f0c213..de457b988 100644
--- a/GL/mesa/glapi/Makefile.am
+++ b/GL/mesa/glapi/Makefile.am
@@ -2,9 +2,7 @@ noinst_LTLIBRARIES = libglapi.la
AM_CFLAGS = \
$(DIX_CFLAGS) \
- @SERVER_DEFINES@ \
- @MODULE_DEFINES@ \
- @LOADER_DEFINES@ \
+ -DXFree86Server \
@GLX_DEFINES@
INCLUDES = -I@MESA_SOURCE@/include \
diff --git a/GL/mesa/main/Makefile.am b/GL/mesa/main/Makefile.am
index 1c466a92a..64b383dc9 100644
--- a/GL/mesa/main/Makefile.am
+++ b/GL/mesa/main/Makefile.am
@@ -2,9 +2,7 @@ noinst_LTLIBRARIES = libmain.la
AM_CFLAGS = \
$(DIX_CFLAGS) \
- @SERVER_DEFINES@ \
- @MODULE_DEFINES@ \
- @LOADER_DEFINES@ \
+ -DXFree86Server \
@GLX_DEFINES@
INCLUDES = -I@MESA_SOURCE@/include \
@@ -29,6 +27,7 @@ nodist_libmain_la_SOURCES = accum.c \
api_loopback.c \
api_noop.c \
api_validate.c \
+ arrayobj.c \
attrib.c \
blend.c \
bufferobj.c \
@@ -61,6 +60,7 @@ nodist_libmain_la_SOURCES = accum.c \
light.c \
lines.c \
matrix.c \
+ mipmap.c \
mm.c \
occlude.c \
pixel.c \
diff --git a/GL/mesa/math/Makefile.am b/GL/mesa/math/Makefile.am
index 4b157c394..5e99d90c4 100644
--- a/GL/mesa/math/Makefile.am
+++ b/GL/mesa/math/Makefile.am
@@ -2,9 +2,7 @@ noinst_LTLIBRARIES = libmath.la
AM_CFLAGS = \
$(DIX_CFLAGS) \
- @SERVER_DEFINES@ \
- @MODULE_DEFINES@ \
- @LOADER_DEFINES@ \
+ -DXFree86Server \
@GLX_DEFINES@
INCLUDES = -I@MESA_SOURCE@/include \
diff --git a/GL/mesa/shader/Makefile.am b/GL/mesa/shader/Makefile.am
index dd0ed712f..4bd57363f 100644
--- a/GL/mesa/shader/Makefile.am
+++ b/GL/mesa/shader/Makefile.am
@@ -4,9 +4,7 @@ noinst_LTLIBRARIES = libshader.la
AM_CFLAGS = \
$(DIX_CFLAGS) \
- @SERVER_DEFINES@ \
- @MODULE_DEFINES@ \
- @LOADER_DEFINES@ \
+ -DXFree86Server \
@GLX_DEFINES@
INCLUDES = -I@MESA_SOURCE@/include \
diff --git a/GL/mesa/shader/grammar/Makefile.am b/GL/mesa/shader/grammar/Makefile.am
index 9f9e5f61e..0974d5b95 100644
--- a/GL/mesa/shader/grammar/Makefile.am
+++ b/GL/mesa/shader/grammar/Makefile.am
@@ -2,9 +2,7 @@ noinst_LTLIBRARIES = libgrammar.la
AM_CFLAGS = \
$(DIX_CFLAGS) \
- @SERVER_DEFINES@ \
- @MODULE_DEFINES@ \
- @LOADER_DEFINES@ \
+ -DXFree86Server \
@GLX_DEFINES@
INCLUDES = -I@MESA_SOURCE@/include \
diff --git a/GL/mesa/shader/slang/Makefile.am b/GL/mesa/shader/slang/Makefile.am
index 7088ee15c..8f2636ea4 100644
--- a/GL/mesa/shader/slang/Makefile.am
+++ b/GL/mesa/shader/slang/Makefile.am
@@ -2,9 +2,7 @@ noinst_LTLIBRARIES = libslang.la
AM_CFLAGS = \
$(DIX_CFLAGS) \
- @SERVER_DEFINES@ \
- @MODULE_DEFINES@ \
- @LOADER_DEFINES@ \
+ -DXFree86Server \
@GLX_DEFINES@
INCLUDES = -I@MESA_SOURCE@/include \
diff --git a/GL/mesa/swrast/Makefile.am b/GL/mesa/swrast/Makefile.am
index 904b772dc..d972af6eb 100644
--- a/GL/mesa/swrast/Makefile.am
+++ b/GL/mesa/swrast/Makefile.am
@@ -2,9 +2,7 @@ noinst_LTLIBRARIES = libswrast.la
AM_CFLAGS = \
$(DIX_CFLAGS) \
- @SERVER_DEFINES@ \
- @MODULE_DEFINES@ \
- @LOADER_DEFINES@ \
+ -DXFree86Server \
@GLX_DEFINES@
INCLUDES = -I@MESA_SOURCE@/include \
diff --git a/GL/mesa/swrast_setup/Makefile.am b/GL/mesa/swrast_setup/Makefile.am
index c52575d1e..8d7040880 100644
--- a/GL/mesa/swrast_setup/Makefile.am
+++ b/GL/mesa/swrast_setup/Makefile.am
@@ -2,9 +2,7 @@ noinst_LTLIBRARIES = libss.la
AM_CFLAGS = \
$(DIX_CFLAGS) \
- @SERVER_DEFINES@ \
- @MODULE_DEFINES@ \
- @LOADER_DEFINES@ \
+ -DXFree86Server \
@GLX_DEFINES@
INCLUDES = -I@MESA_SOURCE@/include \
diff --git a/GL/mesa/tnl/Makefile.am b/GL/mesa/tnl/Makefile.am
index cbf46fda3..717e6fd53 100644
--- a/GL/mesa/tnl/Makefile.am
+++ b/GL/mesa/tnl/Makefile.am
@@ -2,9 +2,7 @@ noinst_LTLIBRARIES = libtnl.la
AM_CFLAGS = \
$(DIX_CFLAGS) \
- @SERVER_DEFINES@ \
- @MODULE_DEFINES@ \
- @LOADER_DEFINES@ \
+ -DXFree86Server \
@GLX_DEFINES@
INCLUDES = -I@MESA_SOURCE@/include \
diff --git a/GL/symlink-mesa.sh b/GL/symlink-mesa.sh
index 326e4f055..9687ce85b 100755
--- a/GL/symlink-mesa.sh
+++ b/GL/symlink-mesa.sh
@@ -62,412 +62,99 @@ symlink_mesa_glapi() {
src_dir src/mesa/glapi
dst_dir mesa/glapi
- action dispatch.h
- action glapi.c
- action glapi.h
- action glapioffsets.h
- action glapitable.h
- action glapitemp.h
- action glprocs.h
- action glthread.c
- action glthread.h
+ for src in $REAL_SRC_DIR/*.c $REAL_SRC_DIR/*.h; do
+ action `basename $src`
+ done
}
symlink_mesa_main() {
src_dir src/mesa/main
dst_dir mesa/main
- action accum.c
- action accum.h
- action api_arrayelt.c
- action api_arrayelt.h
- action api_eval.h
- action api_loopback.c
- action api_loopback.h
- action api_noop.c
- action api_noop.h
- action api_validate.c
- action api_validate.h
- action attrib.c
- action attrib.h
- action bitset.h
- action blend.c
- action blend.h
- action bufferobj.c
- action bufferobj.h
- action buffers.c
- action buffers.h
- action clip.c
- action clip.h
- action colormac.h
- action colortab.c
- action colortab.h
- action config.h
- action context.c
- action context.h
- action convolve.c
- action convolve.h
- action dd.h
- action debug.c
- action debug.h
- action depth.c
- action depth.h
- action depthstencil.c
- action depthstencil.h
- action dlist.c
- action dlist.h
- action drawpix.c
- action drawpix.h
- action enable.c
- action enable.h
- action enums.c
- action enums.h
- action eval.c
- action eval.h
- action execmem.c
- action extensions.c
- action extensions.h
- action fbobject.c
- action fbobject.h
- action feedback.c
- action feedback.h
- action fog.c
- action fog.h
- action framebuffer.c
- action framebuffer.h
- action get.c
- action get.h
- action getstring.c
- action glheader.h
- action hash.c
- action hash.h
- action hint.c
- action hint.h
- action histogram.c
- action histogram.h
- action image.c
- action image.h
- action imports.c
- action imports.h
- action light.c
- action light.h
- action lines.c
- action lines.h
- action macros.h
- action matrix.c
- action matrix.h
- action mm.c
- action mm.h
- action mtypes.h
- action occlude.c
- action occlude.h
- action pixel.c
- action pixel.h
- action points.c
- action points.h
- action polygon.c
- action polygon.h
- action rastpos.c
- action rastpos.h
- action rbadaptors.c
- action rbadaptors.h
- action renderbuffer.c
- action renderbuffer.h
- action simple_list.h
- action state.c
- action state.h
- action stencil.c
- action stencil.h
- action texcompress.c
- action texcompress.h
- action texcompress_fxt1.c
- action texcompress_s3tc.c
- action texenvprogram.c
- action texenvprogram.h
- action texformat.c
- action texformat.h
- action texformat_tmp.h
- action teximage.c
- action teximage.h
- action texobj.c
- action texobj.h
- action texrender.c
- action texrender.h
- action texstate.c
- action texstate.h
- action texstore.c
- action texstore.h
- action varray.c
- action varray.h
- action version.h
- action vsnprintf.c
- action vtxfmt.c
- action vtxfmt.h
- action vtxfmt_tmp.h
+ for src in $REAL_SRC_DIR/*.c $REAL_SRC_DIR/*.h; do
+ action `basename $src`
+ done
}
symlink_mesa_math() {
src_dir src/mesa/math
dst_dir mesa/math
- action m_clip_tmp.h
- action m_copy_tmp.h
- action m_debug.h
- action m_debug_clip.c
- action m_debug_norm.c
- action m_debug_util.h
- action m_debug_xform.c
- action m_dotprod_tmp.h
- action m_eval.c
- action m_eval.h
- action m_matrix.c
- action m_matrix.h
- action m_norm_tmp.h
- action m_trans_tmp.h
- action m_translate.c
- action m_translate.h
- action m_vector.c
- action m_vector.h
- action m_xform.c
- action m_xform.h
- action m_xform_tmp.h
- action mathmod.h
+ for src in $REAL_SRC_DIR/*.c $REAL_SRC_DIR/*.h; do
+ action `basename $src`
+ done
}
symlink_mesa_ac() {
src_dir src/mesa/array_cache
dst_dir mesa/array_cache
- action ac_context.c
- action ac_context.h
- action ac_import.c
- action acache.h
+ for src in $REAL_SRC_DIR/*.c $REAL_SRC_DIR/*.h; do
+ action `basename $src`
+ done
}
symlink_mesa_swrast() {
src_dir src/mesa/swrast
dst_dir mesa/swrast
- action s_aaline.c
- action s_aaline.h
- action s_aalinetemp.h
- action s_aatriangle.c
- action s_aatriangle.h
- action s_aatritemp.h
- action s_accum.c
- action s_accum.h
- action s_alpha.c
- action s_alpha.h
- action s_arbshader.c
- action s_arbshader.h
- action s_atifragshader.c
- action s_atifragshader.h
- action s_bitmap.c
- action s_blend.c
- action s_blend.h
- action s_blit.c
- action s_buffers.c
- action s_context.c
- action s_context.h
- action s_copypix.c
- action s_depth.c
- action s_depth.h
- action s_drawpix.c
- action s_drawpix.h
- action s_feedback.c
- action s_feedback.h
- action s_fog.c
- action s_fog.h
- action s_imaging.c
- action s_lines.c
- action s_lines.h
- action s_linetemp.h
- action s_logic.c
- action s_logic.h
- action s_masking.c
- action s_masking.h
- action s_nvfragprog.c
- action s_nvfragprog.h
- action s_points.c
- action s_points.h
- action s_pointtemp.h
- action s_readpix.c
- action s_span.c
- action s_span.h
- action s_spantemp.h
- action s_stencil.c
- action s_stencil.h
- action s_texcombine.c
- action s_texcombine.h
- action s_texfilter.c
- action s_texfilter.h
- action s_texstore.c
- action s_triangle.c
- action s_triangle.h
- action s_trispan.h
- action s_tritemp.h
- action s_zoom.c
- action s_zoom.h
- action swrast.h
+ for src in $REAL_SRC_DIR/*.c $REAL_SRC_DIR/*.h; do
+ action `basename $src`
+ done
}
symlink_mesa_ss() {
src_dir src/mesa/swrast_setup
dst_dir mesa/swrast_setup
- action ss_context.c
- action ss_context.h
- action ss_triangle.c
- action ss_triangle.h
- action ss_tritmp.h
- action ss_vb.h
- action swrast_setup.h
+ for src in $REAL_SRC_DIR/*.c $REAL_SRC_DIR/*.h; do
+ action `basename $src`
+ done
}
symlink_mesa_tnl() {
src_dir src/mesa/tnl
dst_dir mesa/tnl
- action t_array_api.c
- action t_array_api.h
- action t_array_import.c
- action t_array_import.h
- action t_context.c
- action t_context.h
- action t_pipeline.c
- action t_pipeline.h
- action t_save_api.c
- action t_save_api.h
- action t_save_loopback.c
- action t_save_playback.c
- action t_vb_arbprogram.c
- action t_vb_arbprogram.h
- action t_vb_arbprogram_sse.c
- action t_vb_arbshader.c
- action t_vb_cliptmp.h
- action t_vb_cull.c
- action t_vb_fog.c
- action t_vb_light.c
- action t_vb_lighttmp.h
- action t_vb_normals.c
- action t_vb_points.c
- action t_vb_program.c
- action t_vb_render.c
- action t_vb_rendertmp.h
- action t_vb_texgen.c
- action t_vb_texmat.c
- action t_vb_vertex.c
- action t_vertex.c
- action t_vertex.h
- action t_vertex_generic.c
- action t_vertex_sse.c
- action t_vp_build.c
- action t_vp_build.h
- action t_vtx_api.c
- action t_vtx_api.h
- action t_vtx_eval.c
- action t_vtx_exec.c
- action t_vtx_generic.c
- action t_vtx_x86.c
- action tnl.h
+ for src in $REAL_SRC_DIR/*.c $REAL_SRC_DIR/*.h; do
+ action `basename $src`
+ done
}
symlink_mesa_shader() {
src_dir src/mesa/shader
dst_dir mesa/shader
- action arbprogparse.c
- action arbprogparse.h
- action arbprogram.c
- action arbprogram.h
- action arbprogram_syn.h
- action atifragshader.c
- action atifragshader.h
- action nvfragparse.c
- action nvfragparse.h
- action nvprogram.c
- action nvprogram.h
- action nvvertexec.c
- action nvvertexec.h
- action nvvertparse.c
- action nvvertparse.h
- action program.c
- action program.h
- action program_instruction.h
- action shaderobjects.c
- action shaderobjects.h
- action shaderobjects_3dlabs.c
- action shaderobjects_3dlabs.h
+ for src in $REAL_SRC_DIR/*.c $REAL_SRC_DIR/*.h; do
+ action `basename $src`
+ done
}
symlink_mesa_shader_grammar() {
src_dir src/mesa/shader/grammar
dst_dir mesa/shader/grammar
- action grammar.c
- action grammar.h
- action grammar_syn.h
- action grammar_mesa.c
- action grammar_mesa.h
+ for src in $REAL_SRC_DIR/*.c $REAL_SRC_DIR/*.h; do
+ action `basename $src`
+ done
}
symlink_mesa_shader_slang() {
src_dir src/mesa/shader/slang
dst_dir mesa/shader/slang
- action slang_analyse.c
- action slang_analyse.h
- action slang_assemble.c
- action slang_assemble.h
- action slang_assemble_assignment.c
- action slang_assemble_assignment.h
- action slang_assemble_conditional.c
- action slang_assemble_conditional.h
- action slang_assemble_constructor.c
- action slang_assemble_constructor.h
- action slang_assemble_typeinfo.c
- action slang_assemble_typeinfo.h
- action slang_compile.c
- action slang_compile.h
- action slang_compile_function.c
- action slang_compile_function.h
- action slang_compile_operation.c
- action slang_compile_operation.h
- action slang_compile_struct.c
- action slang_compile_struct.h
- action slang_compile_variable.c
- action slang_compile_variable.h
- action slang_execute.c
- action slang_execute.h
- action slang_execute_x86.c
- action slang_export.c
- action slang_export.h
- action slang_library_noise.c
- action slang_library_noise.h
- action slang_library_texsample.c
- action slang_library_texsample.h
- action slang_link.c
- action slang_link.h
- action slang_mesa.h
- action slang_preprocess.c
- action slang_preprocess.h
- action slang_storage.c
- action slang_storage.h
- action slang_utility.c
- action slang_utility.h
- action traverse_wrap.h
+ for src in $REAL_SRC_DIR/*.c $REAL_SRC_DIR/*.h; do
+ action `basename $src`
+ done
}
symlink_mesa_shader_slang_library() {
src_dir src/mesa/shader/slang/library
dst_dir mesa/shader/slang/library
- action slang_common_builtin_gc.h
- action slang_core_gc.h
- action slang_fragment_builtin_gc.h
- action slang_shader_syn.h
- action slang_version_syn.h
- action slang_vertex_builtin_gc.h
+ for src in $REAL_SRC_DIR/*.c $REAL_SRC_DIR/*.h; do
+ action `basename $src`
+ done
}
symlink_mesa_x() {
@@ -602,9 +289,9 @@ action() {
}
usage() {
- echo symlink.sh src-dir dst-dir
- echo src-dir: the xc directory of the monolithic source tree
- echo dst-dir: the modular source tree containing proto, app, lib, ...
+ echo symlink-mesa.sh src-dir dst-dir
+ echo src-dir: the Mesa source directory
+ echo dst-dir: the GL subdirectory of the Xserver modular tree
}
# Check commandline args
diff --git a/Makefile.am b/Makefile.am
index 773e7690f..f35539e49 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -26,15 +26,6 @@ if GLX
GLX_DIR=GL
endif
-if XPRINT
-XPDDX_DIR=Xprint
-XPCONFIG_DIR=XpConfig
-endif
-
-if XINPUT
-XINPUT_DIR=Xi
-endif
-
if DBE
DBE_DIR=dbe
endif
@@ -50,7 +41,7 @@ SUBDIRS = \
os \
randr \
render \
- $(XINPUT_DIR) \
+ Xi \
xkb \
$(DBE_DIR) \
$(MFB_DIR) \
@@ -64,9 +55,8 @@ SUBDIRS = \
$(COMPOSITE_DIR) \
$(GLX_DIR) \
exa \
- hw \
- $(XPDDX_DIR) \
- $(XPCONFIG_DIR)
+ config \
+ hw
aclocaldir = $(datadir)/aclocal
aclocal_DATA = xorg-server.m4
@@ -101,9 +91,8 @@ DIST_SUBDIRS = \
composite \
GL \
exa \
- hw \
- Xprint \
- XpConfig
+ config \
+ hw
# gross hack
relink: all
diff --git a/XTrap/Makefile.am b/XTrap/Makefile.am
index cdbfe111c..1eddd4f56 100644
--- a/XTrap/Makefile.am
+++ b/XTrap/Makefile.am
@@ -1,5 +1,5 @@
noinst_LTLIBRARIES = libxtrap.la
-AM_CFLAGS = $(DIX_CFLAGS) @SERVER_DEFINES@ @LOADER_DEFINES@
+AM_CFLAGS = $(DIX_CFLAGS)
libxtrap_la_SOURCES = xtrapddmi.c xtrapdi.c xtrapdiswp.c xtrapditbl.c
diff --git a/XTrap/xtrapddmi.c b/XTrap/xtrapddmi.c
index 1b598b79d..73a20c1f6 100644
--- a/XTrap/xtrapddmi.c
+++ b/XTrap/xtrapddmi.c
@@ -1,4 +1,3 @@
-/* $XFree86: xc/programs/Xserver/XTrap/xtrapddmi.c,v 1.1 2001/11/02 23:29:29 dawes Exp $ */
/*****************************************************************************
Copyright 1987, 1988, 1989, 1990, 1991 by Digital Equipment Corp., Maynard, MA
diff --git a/XTrap/xtrapdi.c b/XTrap/xtrapdi.c
index 26da8cbb4..23d3bde7f 100644
--- a/XTrap/xtrapdi.c
+++ b/XTrap/xtrapdi.c
@@ -1,5 +1,3 @@
-/* $XdotOrg: xserver/xorg/XTrap/xtrapdi.c,v 1.6 2006/02/10 22:00:19 anholt Exp $ */
-/* $XFree86: xc/programs/Xserver/XTrap/xtrapdi.c,v 1.6tsi Exp $ */
/*****************************************************************************
Copyright 1987, 1988, 1989, 1990, 1991 by Digital Equipment Corp., Maynard, MA
X11R6 Changes Copyright (c) 1994 by Robert Chesler of Absol-Puter, Hudson, NH.
@@ -170,7 +168,7 @@ static ClientList cmd_clients; /* Linked-list of clients using command key */
/*----------------------------*
* Forward Declarations
*----------------------------*/
-static void _SwapProc (int (**f1 )(), int (**f2 )());
+static void _SwapProc (int (**f1 )(void), int (**f2 )(void));
static void sXETrapEvent (xETrapDataEvent *from , xETrapDataEvent *to );
static int add_accelerator_node (ClientPtr client , ClientList *accel );
static void remove_accelerator_node (ClientPtr client , ClientList *accel );
@@ -886,14 +884,14 @@ int XETrapConfig(xXTrapConfigReq *request, ClientPtr client)
{ /* Client wants the XTrap rtn */
if (++(vectored_requests[i]) <= 1L)
{ /* first client, so do it */
- _SwapProc(&(XETrapProcVector[i]), &(ProcVector[i]));
+ _SwapProc(&(XETrapProcVector[i]), (int_function *)&(ProcVector[i]));
}
}
else
{ /* Client wants the *real* rtn */
if (--(vectored_requests[i]) <= 0L)
{ /* No more clients using, so do it */
- _SwapProc(&(XETrapProcVector[i]), &(ProcVector[i]));
+ _SwapProc(&(XETrapProcVector[i]), (int_function *)&(ProcVector[i]));
}
}
if (status == Success)
@@ -1094,8 +1092,8 @@ int XETrapRequestVector(ClientPtr client)
pdata->hdr.client = client->index; /* stuff client index in hdr */
if (BitIsTrue(penv->cur.data_config_flags_data,XETrapWinXY))
{
- window_ptr = (WindowPtr) LookupDrawable(stuff->id, client);
- if (window_ptr == 0L)
+ if (Success != dixLookupDrawable(&window_ptr, stuff->id,
+ client, 0, DixUnknownAccess))
{ /* Failed...invalidate the X and Y coordinate data. */
pdata->hdr.win_x = -1L;
pdata->hdr.win_y = -1L;
@@ -1787,9 +1785,9 @@ static void update_protocol(xXTrapGetReq *reqptr, ClientPtr client)
* lint from complaining about mixed types. It seems to work, but I would
* probably classify this as a hack.
*/
-static void _SwapProc( register int (**f1)(), register int (**f2)())
+static void _SwapProc( register int (**f1)(void), register int (**f2)(void))
{
- register int (*t1)() = *f1;
+ register int (*t1)(void) = *f1;
*f1 = *f2;
*f2 = t1;
diff --git a/XTrap/xtrapdiswp.c b/XTrap/xtrapdiswp.c
index b0fa43957..dc2a3383a 100644
--- a/XTrap/xtrapdiswp.c
+++ b/XTrap/xtrapdiswp.c
@@ -374,13 +374,13 @@ void XETSwSendEvent(register xSendEventReq *data)
{
register char n;
xEvent eventT;
- void (*proc)();
+ EventSwapPtr proc;
swapl(&(data->destination), n);
swapl(&(data->eventMask), n);
/* Swap event */
proc = EventSwapVector[data->event.u.u.type & 0177];
- if (!proc || (int (*)()) proc == (int (*)()) NotImplemented)
+ if (!proc || proc == NotImplemented)
(*proc)(&(data->event), &eventT);
data->event = eventT;
swaps(&(data->length), n);
diff --git a/Xext/EVI.c b/Xext/EVI.c
index b59180685..8fe3481d4 100644
--- a/Xext/EVI.c
+++ b/Xext/EVI.c
@@ -1,4 +1,3 @@
-/* $Xorg: EVI.c,v 1.3 2000/08/17 19:47:55 cpqbld Exp $ */
/************************************************************
Copyright (c) 1997 by Silicon Graphics Computer Systems, Inc.
Permission to use, copy, modify, and distribute this
@@ -21,7 +20,6 @@ DATA OR PROFITS, WHETHER 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/Xext/EVI.c,v 3.10tsi Exp $ */
#ifdef HAVE_DIX_CONFIG_H
#include <dix-config.h>
diff --git a/Xext/EVIstruct.h b/Xext/EVIstruct.h
index 857e7565a..e6581909f 100644
--- a/Xext/EVIstruct.h
+++ b/Xext/EVIstruct.h
@@ -1,4 +1,3 @@
-/* $Xorg: EVIstruct.h,v 1.3 2000/08/17 19:47:55 cpqbld Exp $ */
/************************************************************
Copyright (c) 1997 by Silicon Graphics Computer Systems, Inc.
Permission to use, copy, modify, and distribute this
@@ -21,7 +20,6 @@ DATA OR PROFITS, WHETHER 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/Xext/EVIstruct.h,v 3.5 2003/07/16 01:38:28 dawes Exp $ */
#ifdef HAVE_DIX_CONFIG_H
#include <dix-config.h>
diff --git a/Xext/Makefile.am b/Xext/Makefile.am
index 56c50538b..6ea3d7445 100644
--- a/Xext/Makefile.am
+++ b/Xext/Makefile.am
@@ -12,7 +12,7 @@ endif
INCLUDES = -I$(top_srcdir)/hw/xfree86/dixmods/extmod
-AM_CFLAGS = $(DIX_CFLAGS) @SERVER_DEFINES@ @LOADER_DEFINES@
+AM_CFLAGS = $(DIX_CFLAGS)
if XORG
sdk_HEADERS = xvdix.h xvmcext.h
@@ -33,6 +33,10 @@ MODULE_SRCS = \
sync.c \
xcmisc.c
+# Extra configuration files ship with some extensions
+SERVERCONFIGdir = $(libdir)/xserver
+SERVERCONFIG_DATA =
+
# Optional sources included if extension enabled by configure.ac rules
# MIT Shared Memory extension
@@ -65,16 +69,28 @@ if XINERAMA
BUILTIN_SRCS += $(XINERAMA_SRCS)
endif
+# X-ACE extension: provides hooks for building security policy extensions
+# like XC-Security, X-SELinux & XTSol
+XACE_SRCS = xace.c xace.h xacestr.h
+if XACE
+BUILTIN_SRCS += $(XACE_SRCS)
+endif
+
# Security extension: multi-level security to protect clients from each other
-XCSECURITY_SRCS = security.c
+XCSECURITY_SRCS = security.c securitysrv.h
if XCSECURITY
BUILTIN_SRCS += $(XCSECURITY_SRCS)
-SERVERCONFIGdir = $(libdir)/xserver
-SERVERCONFIG_DATA = SecurityPolicy
+SERVERCONFIG_DATA += SecurityPolicy
AM_CFLAGS += -DDEFAULTPOLICYFILE=\"$(SERVERCONFIGdir)/SecurityPolicy\"
endif
+XCALIBRATE_SRCS = xcalibrate.c
+if XCALIBRATE
+BUILTIN_SRCS += $(XCALIBRATE_SRCS)
+# XCalibrare needs tslib
+endif
+
# X EVent Interception Extension: allows accessibility helpers & composite
# managers to intercept events from input devices and transform as needed
# before the clients see them.
@@ -144,12 +160,14 @@ libXextmodule_la_SOURCES = $(MODULE_SRCS)
endif
EXTRA_DIST = \
- SecurityPolicy \
+ $(SERVERCONFIG_DATA) \
$(MITSHM_SRCS) \
$(XV_SRCS) \
$(RES_SRCS) \
$(SCREENSAVER_SRCS) \
+ $(XACE_SRCS) \
$(XCSECURITY_SRCS) \
+ $(XCALIBRATE_SRCS) \
$(XINERAMA_SRCS) \
$(XEVIE_SRCS) \
$(XPRINT_SRCS) \
diff --git a/Xext/appgroup.c b/Xext/appgroup.c
index 86bd36ecd..bb7a73ce1 100644
--- a/Xext/appgroup.c
+++ b/Xext/appgroup.c
@@ -1,4 +1,3 @@
-/* $XFree86: xc/programs/Xserver/Xext/appgroup.c,v 1.10tsi Exp $ */
/*
Copyright 1996, 1998, 2001 The Open Group
@@ -24,7 +23,6 @@ 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: appgroup.c,v 1.6 2001/02/09 02:04:32 xorgcvs Exp $ */
#define NEED_REPLIES
#define NEED_EVENTS
@@ -43,9 +41,8 @@ from The Open Group.
#include "servermd.h"
#define _XAG_SERVER_
#include <X11/extensions/Xagstr.h>
-#include <X11/extensions/Xagsrv.h>
-#define _SECURITY_SERVER
-#include <X11/extensions/security.h>
+#include "xacestr.h"
+#include "securitysrv.h"
#include <X11/Xfuncproto.h>
#define XSERV_t
@@ -77,10 +74,6 @@ static int ProcXagDispatch(ClientPtr client);
static int SProcXagDispatch(ClientPtr client);
static void XagResetProc(ExtensionEntry* extEntry);
-#if 0
-static unsigned char XagReqCode = 0;
-static int XagErrorBase;
-#endif
static int XagCallbackRefCount = 0;
static RESTYPE RT_APPGROUP;
@@ -129,62 +122,11 @@ void XagClientStateChange(
pointer nulldata,
pointer calldata)
{
- SecurityAuthorizationPtr pAuth;
NewClientInfoRec* pci = (NewClientInfoRec*) calldata;
ClientPtr pClient = pci->client;
- AppGroupPtr pAppGrp;
- XID authId = 0;
+ AppGroupPtr pAppGrp = pClient->appgroup;
int slot;
- if (!pClient->appgroup) {
- switch (pClient->clientState) {
-
- case ClientStateAuthenticating:
- case ClientStateRunning:
- case ClientStateCheckingSecurity:
- return;
-
- case ClientStateInitial:
- case ClientStateCheckedSecurity:
- /*
- * If the client is connecting via a firewall proxy (which
- * uses XC-QUERY-SECURITY-1, then the authId is available
- * during ClientStateCheckedSecurity, otherwise it's
- * available during ClientStateInitial.
- *
- * Don't get it from pClient because can't guarantee the order
- * of the callbacks and the security extension might not have
- * plugged it in yet.
- */
- authId = AuthorizationIDOfClient(pClient);
- break;
-
- case ClientStateGone:
- case ClientStateRetained:
- /*
- * Don't get if from AuthorizationIDOfClient because can't
- * guarantee the order of the callbacks and the security
- * extension may have torn down the client's private data
- */
- authId = pClient->authId;
- break;
- }
-
- if (authId == None)
- return;
-
- pAuth = (SecurityAuthorizationPtr)SecurityLookupIDByType(pClient,
- authId, SecurityAuthorizationResType, SecurityReadAccess);
-
- if (pAuth == NULL)
- return;
-
- for (pAppGrp = appGrpList; pAppGrp != NULL; pAppGrp = pAppGrp->next)
- if (pAppGrp->appgroupId == pAuth->group) break;
- } else {
- pAppGrp = pClient->appgroup;
- }
-
if (!pAppGrp)
return;
@@ -233,19 +175,6 @@ void XagClientStateChange(
void
XagExtensionInit(INITARGS)
{
-#if 0
- ExtensionEntry* extEntry;
-
- if ((extEntry = AddExtension (XAGNAME,
- 0,
- XagNumberErrors,
- ProcXagDispatch,
- SProcXagDispatch,
- XagResetProc,
- StandardMinorOpcode))) {
- XagReqCode = (unsigned char)extEntry->base;
- XagErrorBase = extEntry->errorBase;
-#else
if (AddExtension (XAGNAME,
0,
XagNumberErrors,
@@ -253,8 +182,8 @@ XagExtensionInit(INITARGS)
SProcXagDispatch,
XagResetProc,
StandardMinorOpcode)) {
-#endif
RT_APPGROUP = CreateNewResourceType (XagAppGroupFree);
+ XaceRegisterCallback(XACE_AUTH_AVAIL, XagCallClientStateChange, NULL);
}
}
@@ -426,13 +355,15 @@ int AttrValidate(
AppGroupPtr pAppGrp)
{
WindowPtr pWin;
- int idepth, ivids, found;
+ int idepth, ivids, found, rc;
ScreenPtr pScreen;
DepthPtr pDepth;
ColormapPtr pColormap;
- pWin = LookupWindow (pAppGrp->default_root, client);
- /* XXX check that pWin is not NULL */
+ rc = dixLookupWindow(&pWin, pAppGrp->default_root, client,
+ DixUnknownAccess);
+ if (rc != Success)
+ return rc;
pScreen = pWin->drawable.pScreen;
if (WindowTable[pScreen->myNum]->drawable.id != pAppGrp->default_root)
return BadWindow;
@@ -503,7 +434,7 @@ int ProcXagDestroy(
REQUEST_SIZE_MATCH (xXagDestroyReq);
pAppGrp = (AppGroupPtr)SecurityLookupIDByType (client,
- (XID)stuff->app_group, RT_APPGROUP, SecurityReadAccess);
+ (XID)stuff->app_group, RT_APPGROUP, DixReadAccess);
if (!pAppGrp) return XagBadAppGroup;
FreeResource ((XID)stuff->app_group, RT_NONE);
if (--XagCallbackRefCount == 0)
@@ -522,7 +453,7 @@ int ProcXagGetAttr(
REQUEST_SIZE_MATCH (xXagGetAttrReq);
pAppGrp = (AppGroupPtr)SecurityLookupIDByType (client,
- (XID)stuff->app_group, RT_APPGROUP, SecurityReadAccess);
+ (XID)stuff->app_group, RT_APPGROUP, DixReadAccess);
if (!pAppGrp) return XagBadAppGroup;
rep.type = X_Reply;
rep.length = 0;
@@ -554,10 +485,13 @@ int ProcXagQuery(
ClientPtr pClient;
AppGroupPtr pAppGrp;
REQUEST (xXagQueryReq);
- int n;
+ int n, rc;
REQUEST_SIZE_MATCH (xXagQueryReq);
- pClient = LookupClient (stuff->resource, client);
+ rc = dixLookupClient(&pClient, stuff->resource, client, DixUnknownAccess);
+ if (rc != Success)
+ return rc;
+
for (pAppGrp = appGrpList; pAppGrp != NULL; pAppGrp = pAppGrp->next)
for (n = 0; n < pAppGrp->nclients; n++)
if (pAppGrp->clients[n] == pClient) {
@@ -821,12 +755,33 @@ void XagGetDeltaInfo(
}
void XagCallClientStateChange(
- ClientPtr client)
+ CallbackListPtr *pcbl,
+ pointer nulldata,
+ pointer calldata)
{
- if (appGrpList) {
+ XaceAuthAvailRec* rec = (XaceAuthAvailRec*) calldata;
+ ClientPtr pClient = rec->client;
+
+ if (!pClient->appgroup) {
+ SecurityAuthorizationPtr pAuth;
+ XID authId = rec->authId;
+
+ /* can't use SecurityLookupIDByType here -- client
+ * security state hasn't been setup yet.
+ */
+ pAuth = (SecurityAuthorizationPtr)LookupIDByType(authId,
+ SecurityAuthorizationResType);
+ if (!pAuth)
+ return;
+
+ pClient->appgroup = (AppGroupPtr)LookupIDByType(pAuth->group,
+ RT_APPGROUP);
+ }
+
+ if (pClient->appgroup) {
NewClientInfoRec clientinfo;
- clientinfo.client = client;
+ clientinfo.client = pClient;
XagClientStateChange (NULL, NULL, (pointer)&clientinfo);
}
}
diff --git a/Xext/appgroup.h b/Xext/appgroup.h
index 05c9ef124..a875068fc 100644
--- a/Xext/appgroup.h
+++ b/Xext/appgroup.h
@@ -1,10 +1,89 @@
-/* $XFree86$ */
+/*
+Copyright 1996, 1998 The Open Group
-void XagClientStateChange(
+Permission to use, copy, modify, distribute, and sell this software and its
+documentation for any purpose is hereby granted without fee, 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.
+*/
+
+#ifndef _APPGROUP_SRV_H_
+#define _APPGROUP_SRV_H_
+
+#include <X11/Xfuncproto.h>
+
+_XFUNCPROTOBEGIN
+
+extern void XagConnectionInfo(
+ ClientPtr /* client */,
+ xConnSetupPrefix** /* conn_prefix */,
+ char** /* conn_info */,
+ int* /* num_screens */
+);
+
+extern VisualID XagRootVisual(
+ ClientPtr /* client */
+);
+
+extern Colormap XagDefaultColormap(
+ ClientPtr /* client */
+);
+
+extern ClientPtr XagLeader(
+ ClientPtr /* client */
+);
+
+extern void XagCallClientStateChange(
+ CallbackListPtr * /* pcbl */,
+ pointer /* nulldata */,
+ pointer /* calldata */
+);
+
+extern Bool XagIsControlledRoot (
+ ClientPtr /* client */,
+ WindowPtr /* pParent */
+);
+
+extern XID XagId (
+ ClientPtr /* client */
+);
+
+extern void XagGetDeltaInfo (
+ ClientPtr /* client */,
+ CARD32* /* buf */
+);
+
+extern void XagClientStateChange(
CallbackListPtr* pcbl,
pointer nulldata,
pointer calldata);
-int ProcXagCreate (
+
+extern int ProcXagCreate (
register ClientPtr client);
-int ProcXagDestroy(
+
+extern int ProcXagDestroy(
register ClientPtr client);
+
+_XFUNCPROTOEND
+
+#endif /* _APPGROUP_SRV_H_ */
+
+
+
diff --git a/Xext/bigreq.c b/Xext/bigreq.c
index 1af8a930b..fcd848aec 100644
--- a/Xext/bigreq.c
+++ b/Xext/bigreq.c
@@ -1,4 +1,3 @@
-/* $Xorg: bigreq.c,v 1.4 2001/02/09 02:04:32 xorgcvs Exp $ */
/*
Copyright 1992, 1998 The Open Group
@@ -26,7 +25,6 @@ other dealings in this Software without prior written authorization
from The Open Group.
*/
-/* $XFree86: xc/programs/Xserver/Xext/bigreq.c,v 3.8 2003/10/28 23:08:43 tsi Exp $ */
#define NEED_EVENTS
#ifdef HAVE_DIX_CONFIG_H
diff --git a/Xext/cup.c b/Xext/cup.c
index 879130ece..6bfa27837 100644
--- a/Xext/cup.c
+++ b/Xext/cup.c
@@ -1,4 +1,3 @@
-/* $Xorg: cup.c,v 1.4 2001/02/09 02:04:32 xorgcvs Exp $ */
/*
Copyright 1997, 1998 The Open Group
@@ -24,7 +23,6 @@ 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/Xext/cup.c,v 1.11tsi Exp $ */
#define NEED_REPLIES
#define NEED_EVENTS
@@ -229,7 +227,7 @@ int ProcStoreColors(
REQUEST_AT_LEAST_SIZE (xXcupStoreColorsReq);
pcmp = (ColormapPtr) SecurityLookupIDByType (client, stuff->cmap,
- RT_COLORMAP, SecurityWriteAccess);
+ RT_COLORMAP, DixWriteAccess);
if (pcmp) {
int ncolors, n;
diff --git a/Xext/dpms.c b/Xext/dpms.c
index ea0a1ccdf..aced40639 100644
--- a/Xext/dpms.c
+++ b/Xext/dpms.c
@@ -1,4 +1,3 @@
-/* $Xorg: dpms.c,v 1.3 2000/08/17 19:47:56 cpqbld Exp $ */
/*****************************************************************
Copyright (c) 1996 Digital Equipment Corporation, Maynard, Massachusetts.
@@ -33,7 +32,6 @@ Equipment Corporation.
* @(#)RCSfile: dpms.c,v Revision: 1.1.4.5 (DEC) Date: 1996/03/04 15:27:00
*/
-/* $XFree86: xc/programs/Xserver/Xext/dpms.c,v 3.10tsi Exp $ */
#ifdef HAVE_DIX_CONFIG_H
#include <dix-config.h>
diff --git a/Xext/dpmsproc.h b/Xext/dpmsproc.h
index ae1e6e25a..f5485ea79 100644
--- a/Xext/dpmsproc.h
+++ b/Xext/dpmsproc.h
@@ -1,4 +1,3 @@
-/* $XFree86: xc/programs/Xserver/Xext/dpmsproc.h,v 1.3 2001/10/28 03:32:50 tsi Exp $ */
/* Prototypes for functions that the DDX must provide */
diff --git a/Xext/dpmsstubs.c b/Xext/dpmsstubs.c
index 128c57bb0..9f99a2d22 100644
--- a/Xext/dpmsstubs.c
+++ b/Xext/dpmsstubs.c
@@ -1,4 +1,3 @@
-/* $Xorg: dpmsstubs.c,v 1.3 2000/08/17 19:47:56 cpqbld Exp $ */
/*****************************************************************
Copyright (c) 1996 Digital Equipment Corporation, Maynard, Massachusetts.
@@ -26,7 +25,6 @@ dealings in this Software without prior written authorization from Digital
Equipment Corporation.
******************************************************************/
-/* $XFree86: xc/programs/Xserver/Xext/dpmsstubs.c,v 3.4 2001/01/17 22:13:15 dawes Exp $ */
typedef int Bool;
diff --git a/Xext/fontcache.c b/Xext/fontcache.c
index 9ab23a122..db0348144 100644
--- a/Xext/fontcache.c
+++ b/Xext/fontcache.c
@@ -27,7 +27,6 @@
*
* Id: fontcache.c,v 1.12 1999/01/31 13:47:45 akiyama Exp $
*/
-/* $XFree86: xc/programs/Xserver/Xext/fontcache.c,v 1.7 2003/10/28 23:08:43 tsi Exp $ */
/* THIS IS NOT AN X CONSORTIUM STANDARD */
@@ -46,8 +45,8 @@
#include "inputstr.h"
#include "servermd.h"
#define _FONTCACHE_SERVER_
-#include "fontcacheP.h"
-#include "fontcachstr.h"
+#include <X11/extensions/fontcacheP.h>
+#include <X11/extensions/fontcachstr.h>
#include <X11/Xfuncproto.h>
#include "swaprep.h"
diff --git a/Xext/mbuf.c b/Xext/mbuf.c
index 9933fe0fd..ed352e21b 100644
--- a/Xext/mbuf.c
+++ b/Xext/mbuf.c
@@ -1,4 +1,3 @@
-/* $XFree86: xc/programs/Xserver/Xext/mbuf.c,v 3.15 2003/10/28 23:08:43 tsi Exp $ */
/************************************************************
Copyright 1989, 1998 The Open Group
@@ -25,7 +24,6 @@ in this Software without prior written authorization from The Open Group.
********************************************************/
-/* $Xorg: mbuf.c,v 1.4 2001/02/09 02:04:32 xorgcvs Exp $ */
#define NEED_REPLIES
#define NEED_EVENTS
#ifdef HAVE_DIX_CONFIG_H
@@ -450,16 +448,15 @@ ProcCreateImageBuffers (client)
register int n;
WindowPtr pWin;
XID *ids;
- int len, nbuf;
- int i;
- int err;
+ int len, nbuf, i, err, rc;
REQUEST_AT_LEAST_SIZE (xMbufCreateImageBuffersReq);
len = stuff->length - (sizeof(xMbufCreateImageBuffersReq) >> 2);
if (len == 0)
return BadLength;
- if (!(pWin = LookupWindow (stuff->window, client)))
- return BadWindow;
+ rc = dixLookupWindow(&pWin, stuff->window, client, DixUnknownAccess);
+ if (rc != Success)
+ return rc;
if (pWin->drawable.class == InputOnly)
return BadMatch;
switch (stuff->updateAction)
@@ -586,10 +583,12 @@ ProcDestroyImageBuffers (client)
{
REQUEST (xMbufDestroyImageBuffersReq);
WindowPtr pWin;
+ int rc;
REQUEST_SIZE_MATCH (xMbufDestroyImageBuffersReq);
- if (!(pWin = LookupWindow (stuff->window, client)))
- return BadWindow;
+ rc = dixLookupWindow(&pWin, stuff->window, client, DixUnknownAccess);
+ if (rc != Success)
+ return rc;
DestroyImageBuffers (pWin);
return Success;
}
@@ -601,16 +600,16 @@ ProcSetMBufferAttributes (client)
REQUEST (xMbufSetMBufferAttributesReq);
WindowPtr pWin;
MultibuffersPtr pMultibuffers;
- int len;
+ int len, rc;
Mask vmask;
Mask index2;
CARD32 updateHint;
XID *vlist;
REQUEST_AT_LEAST_SIZE (xMbufSetMBufferAttributesReq);
- pWin = LookupWindow (stuff->window, client);
- if (!pWin)
- return BadWindow;
+ rc = dixLookupWindow(&pWin, stuff->window, client, DixUnknownAccess);
+ if (rc != Success)
+ return rc;
pMultibuffers = (MultibuffersPtr)LookupIDByType (pWin->drawable.id, MultibuffersResType);
if (!pMultibuffers)
return BadMatch;
@@ -657,12 +656,12 @@ ProcGetMBufferAttributes (client)
MultibuffersPtr pMultibuffers;
XID *ids;
xMbufGetMBufferAttributesReply rep;
- int i, n;
+ int i, n, rc;
REQUEST_SIZE_MATCH (xMbufGetMBufferAttributesReq);
- pWin = LookupWindow (stuff->window, client);
- if (!pWin)
- return BadWindow;
+ rc = dixLookupWindow(&pWin, stuff->window, client, DixUnknownAccess);
+ if (rc != Success)
+ return rc;
pMultibuffers = (MultibuffersPtr)LookupIDByType (pWin->drawable.id, MultibuffersResType);
if (!pMultibuffers)
return BadAccess;
@@ -787,15 +786,15 @@ ProcGetBufferInfo (client)
DrawablePtr pDrawable;
xMbufGetBufferInfoReply rep;
ScreenPtr pScreen;
- int i, j, k;
- int n;
+ int i, j, k, n, rc;
xMbufBufferInfo *pInfo;
int nInfo;
DepthPtr pDepth;
- pDrawable = (DrawablePtr) LookupDrawable (stuff->drawable, client);
- if (!pDrawable)
- return BadDrawable;
+ rc = dixLookupDrawable(&pDrawable, stuff->drawable, client, 0,
+ DixUnknownAccess);
+ if (rc != Success)
+ return rc;
pScreen = pDrawable->pScreen;
nInfo = 0;
for (i = 0; i < pScreen->numDepths; i++)
diff --git a/Xext/mbufbf.c b/Xext/mbufbf.c
index 8585c52d2..04fc487d8 100644
--- a/Xext/mbufbf.c
+++ b/Xext/mbufbf.c
@@ -1,4 +1,3 @@
-/* $XFree86: xc/programs/Xserver/Xext/mbufbf.c,v 3.5tsi Exp $ */
/*
Copyright 1989, 1998 The Open Group
@@ -25,7 +24,6 @@ in this Software without prior written authorization from The Open Group.
*/
-/* $Xorg: mbufbf.c,v 1.4 2001/02/09 02:04:32 xorgcvs Exp $ */
#define NEED_REPLIES
#define NEED_EVENTS
diff --git a/Xext/mbufpx.c b/Xext/mbufpx.c
index c986217ee..16717d330 100644
--- a/Xext/mbufpx.c
+++ b/Xext/mbufpx.c
@@ -1,4 +1,3 @@
-/* $XFree86: xc/programs/Xserver/Xext/mbufpx.c,v 3.3 2001/07/23 13:15:44 dawes Exp $ */
/************************************************************
Copyright 1989, 1998 The Open Group
@@ -25,7 +24,6 @@ in this Software without prior written authorization from The Open Group.
********************************************************/
-/* $Xorg: mbufpx.c,v 1.4 2001/02/09 02:04:32 xorgcvs Exp $ */
#define NEED_REPLIES
#define NEED_EVENTS
#ifdef HAVE_DIX_CONFIG_H
diff --git a/Xext/mitmisc.c b/Xext/mitmisc.c
index f7b0ee55c..924b88063 100644
--- a/Xext/mitmisc.c
+++ b/Xext/mitmisc.c
@@ -1,4 +1,3 @@
-/* $XFree86: xc/programs/Xserver/Xext/mitmisc.c,v 3.6 2003/10/28 23:08:43 tsi Exp $ */
/************************************************************
Copyright 1989, 1998 The Open Group
@@ -27,7 +26,6 @@ in this Software without prior written authorization from The Open Group.
/* RANDOM CRUFT! THIS HAS NO OFFICIAL X CONSORTIUM OR X PROJECT TEAM BLESSING */
-/* $Xorg: mitmisc.c,v 1.4 2001/02/09 02:04:32 xorgcvs Exp $ */
#define NEED_EVENTS
#ifdef HAVE_DIX_CONFIG_H
@@ -44,8 +42,6 @@ in this Software without prior written authorization from The Open Group.
#include <X11/extensions/mitmiscstr.h>
#include "modinit.h"
-extern Bool permitOldBugs;
-
#if 0
static unsigned char MITReqCode;
#endif
@@ -92,12 +88,8 @@ ProcMITSetBugMode(client)
REQUEST(xMITSetBugModeReq);
REQUEST_SIZE_MATCH(xMITSetBugModeReq);
- if ((stuff->onOff != xTrue) && (stuff->onOff != xFalse))
- {
- client->errorValue = stuff->onOff;
- return BadValue;
- }
- permitOldBugs = stuff->onOff;
+ if (stuff->onOff != xFalse)
+ return BadRequest;
return(client->noClientException);
}
@@ -112,7 +104,7 @@ ProcMITGetBugMode(client)
rep.type = X_Reply;
rep.length = 0;
rep.sequenceNumber = client->sequence;
- rep.onOff = permitOldBugs;
+ rep.onOff = FALSE;
if (client->swapped) {
swaps(&rep.sequenceNumber, n);
swapl(&rep.length, n);
diff --git a/Xext/panoramiX.c b/Xext/panoramiX.c
index d1e726804..85f591356 100644
--- a/Xext/panoramiX.c
+++ b/Xext/panoramiX.c
@@ -1,4 +1,3 @@
-/* $Xorg: panoramiX.c,v 1.5 2000/08/17 19:47:57 cpqbld Exp $ */
/*****************************************************************
Copyright (c) 1991, 1997 Digital Equipment Corporation, Maynard, Massachusetts.
Permission is hereby granted, free of charge, to any person obtaining a copy
@@ -23,7 +22,6 @@ 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/Xext/panoramiX.c,v 3.37tsi Exp $ */
#ifdef HAVE_DIX_CONFIG_H
#include <dix-config.h>
@@ -960,12 +958,13 @@ ProcPanoramiXGetState(ClientPtr client)
REQUEST(xPanoramiXGetStateReq);
WindowPtr pWin;
xPanoramiXGetStateReply rep;
- register int n;
+ register int n, rc;
REQUEST_SIZE_MATCH(xPanoramiXGetStateReq);
- pWin = LookupWindow (stuff->window, client);
- if (!pWin)
- return BadWindow;
+ rc = dixLookupWindow(&pWin, stuff->window, client, DixUnknownAccess);
+ if (rc != Success)
+ return rc;
+
rep.type = X_Reply;
rep.length = 0;
rep.sequenceNumber = client->sequence;
@@ -986,12 +985,13 @@ ProcPanoramiXGetScreenCount(ClientPtr client)
REQUEST(xPanoramiXGetScreenCountReq);
WindowPtr pWin;
xPanoramiXGetScreenCountReply rep;
- register int n;
+ register int n, rc;
REQUEST_SIZE_MATCH(xPanoramiXGetScreenCountReq);
- pWin = LookupWindow (stuff->window, client);
- if (!pWin)
- return BadWindow;
+ rc = dixLookupWindow(&pWin, stuff->window, client, DixUnknownAccess);
+ if (rc != Success)
+ return rc;
+
rep.type = X_Reply;
rep.length = 0;
rep.sequenceNumber = client->sequence;
@@ -1011,12 +1011,13 @@ ProcPanoramiXGetScreenSize(ClientPtr client)
REQUEST(xPanoramiXGetScreenSizeReq);
WindowPtr pWin;
xPanoramiXGetScreenSizeReply rep;
- register int n;
+ register int n, rc;
REQUEST_SIZE_MATCH(xPanoramiXGetScreenSizeReq);
- pWin = LookupWindow (stuff->window, client);
- if (!pWin)
- return BadWindow;
+ rc = dixLookupWindow(&pWin, stuff->window, client, DixUnknownAccess);
+ if (rc != Success)
+ return rc;
+
rep.type = X_Reply;
rep.length = 0;
rep.sequenceNumber = client->sequence;
@@ -1049,7 +1050,6 @@ ProcXineramaIsActive(ClientPtr client)
{
/* The following hack fools clients into thinking that Xinerama
* is disabled even though it is not. */
- extern Bool PanoramiXExtensionDisabledHack;
rep.state = !noPanoramiXExtension && !PanoramiXExtensionDisabledHack;
}
#else
diff --git a/Xext/panoramiX.h b/Xext/panoramiX.h
index 6cbb94dd3..7b3339204 100644
--- a/Xext/panoramiX.h
+++ b/Xext/panoramiX.h
@@ -1,5 +1,4 @@
/* $TOG: panoramiX.h /main/4 1998/03/17 06:51:02 kaleb $ */
-/* $XdotOrg: xc/programs/Xserver/Xext/panoramiX.h,v 1.3 2005/04/20 12:25:12 daniels Exp $ */
/*****************************************************************
Copyright (c) 1991, 1997 Digital Equipment Corporation, Maynard, Massachusetts.
@@ -28,7 +27,6 @@ Equipment Corporation.
******************************************************************/
-/* $XFree86: xc/programs/Xserver/Xext/panoramiX.h,v 1.5 2001/01/03 02:54:17 keithp Exp $ */
/* THIS IS NOT AN X PROJECT TEAM SPECIFICATION */
diff --git a/Xext/panoramiXSwap.c b/Xext/panoramiXSwap.c
index e0548df7b..da445ffe1 100644
--- a/Xext/panoramiXSwap.c
+++ b/Xext/panoramiXSwap.c
@@ -1,4 +1,3 @@
-/* $Xorg: panoramiXSwap.c,v 1.4 2000/08/17 19:47:57 cpqbld Exp $ */
/*****************************************************************
Copyright (c) 1991, 1997 Digital Equipment Corporation, Maynard, Massachusetts.
Permission is hereby granted, free of charge, to any person obtaining a copy
@@ -23,7 +22,6 @@ 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/Xext/panoramiXSwap.c,v 3.9 2003/07/16 01:38:29 dawes Exp $ */
#ifdef HAVE_DIX_CONFIG_H
#include <dix-config.h>
diff --git a/Xext/panoramiXh.h b/Xext/panoramiXh.h
index 9da5876fd..6cee650ac 100644
--- a/Xext/panoramiXh.h
+++ b/Xext/panoramiXh.h
@@ -1,4 +1,3 @@
-/* $XFree86: xc/programs/Xserver/Xext/panoramiXh.h,v 1.2 2003/09/13 21:33:03 dawes Exp $ */
/*
* Server dispatcher function replacements
diff --git a/Xext/panoramiXprocs.c b/Xext/panoramiXprocs.c
index 79a5a3290..1c53a1e1a 100644
--- a/Xext/panoramiXprocs.c
+++ b/Xext/panoramiXprocs.c
@@ -1,4 +1,3 @@
-/* $Xorg: panoramiXprocs.c,v 1.5 2000/08/17 19:47:57 cpqbld Exp $ */
/*****************************************************************
Copyright (c) 1991, 1997 Digital Equipment Corporation, Maynard, Massachusetts.
Permission is hereby granted, free of charge, to any person obtaining a copy
@@ -26,7 +25,6 @@ Equipment Corporation.
/* Massively rewritten by Mark Vojkovich <markv@valinux.com> */
-/* $XFree86: xc/programs/Xserver/Xext/panoramiXprocs.c,v 3.36tsi Exp $ */
#ifdef HAVE_DIX_CONFIG_H
#include <dix-config.h>
@@ -93,7 +91,7 @@ int PanoramiXCreateWindow(ClientPtr client)
return BadLength;
if (!(parent = (PanoramiXRes *)SecurityLookupIDByType(
- client, stuff->parent, XRT_WINDOW, SecurityWriteAccess)))
+ client, stuff->parent, XRT_WINDOW, DixWriteAccess)))
return BadWindow;
if(stuff->class == CopyFromParent)
@@ -107,7 +105,7 @@ int PanoramiXCreateWindow(ClientPtr client)
tmp = *((CARD32 *) &stuff[1] + pback_offset);
if ((tmp != None) && (tmp != ParentRelative)) {
if(!(backPix = (PanoramiXRes*) SecurityLookupIDByType(
- client, tmp, XRT_PIXMAP, SecurityReadAccess)))
+ client, tmp, XRT_PIXMAP, DixReadAccess)))
return BadPixmap;
}
}
@@ -116,7 +114,7 @@ int PanoramiXCreateWindow(ClientPtr client)
tmp = *((CARD32 *) &stuff[1] + pbord_offset);
if (tmp != CopyFromParent) {
if(!(bordPix = (PanoramiXRes*) SecurityLookupIDByType(
- client, tmp, XRT_PIXMAP, SecurityReadAccess)))
+ client, tmp, XRT_PIXMAP, DixReadAccess)))
return BadPixmap;
}
}
@@ -125,7 +123,7 @@ int PanoramiXCreateWindow(ClientPtr client)
tmp = *((CARD32 *) &stuff[1] + cmap_offset);
if ((tmp != CopyFromParent) && (tmp != None)) {
if(!(cmap = (PanoramiXRes*) SecurityLookupIDByType(
- client, tmp, XRT_COLORMAP, SecurityReadAccess)))
+ client, tmp, XRT_COLORMAP, DixReadAccess)))
return BadColor;
}
}
@@ -194,7 +192,7 @@ int PanoramiXChangeWindowAttributes(ClientPtr client)
return BadLength;
if (!(win = (PanoramiXRes *)SecurityLookupIDByType(
- client, stuff->window, XRT_WINDOW, SecurityWriteAccess)))
+ client, stuff->window, XRT_WINDOW, DixWriteAccess)))
return BadWindow;
if((win->u.win.class == InputOnly) &&
@@ -206,7 +204,7 @@ int PanoramiXChangeWindowAttributes(ClientPtr client)
tmp = *((CARD32 *) &stuff[1] + pback_offset);
if ((tmp != None) && (tmp != ParentRelative)) {
if(!(backPix = (PanoramiXRes*) SecurityLookupIDByType(
- client, tmp, XRT_PIXMAP, SecurityReadAccess)))
+ client, tmp, XRT_PIXMAP, DixReadAccess)))
return BadPixmap;
}
}
@@ -215,7 +213,7 @@ int PanoramiXChangeWindowAttributes(ClientPtr client)
tmp = *((CARD32 *) &stuff[1] + pbord_offset);
if (tmp != CopyFromParent) {
if(!(bordPix = (PanoramiXRes*) SecurityLookupIDByType(
- client, tmp, XRT_PIXMAP, SecurityReadAccess)))
+ client, tmp, XRT_PIXMAP, DixReadAccess)))
return BadPixmap;
}
}
@@ -224,7 +222,7 @@ int PanoramiXChangeWindowAttributes(ClientPtr client)
tmp = *((CARD32 *) &stuff[1] + cmap_offset);
if ((tmp != CopyFromParent) && (tmp != None)) {
if(!(cmap = (PanoramiXRes*) SecurityLookupIDByType(
- client, tmp, XRT_COLORMAP, SecurityReadAccess)))
+ client, tmp, XRT_COLORMAP, DixReadAccess)))
return BadColor;
}
}
@@ -253,7 +251,7 @@ int PanoramiXDestroyWindow(ClientPtr client)
REQUEST_SIZE_MATCH(xResourceReq);
if(!(win = (PanoramiXRes *)SecurityLookupIDByType(
- client, stuff->id, XRT_WINDOW, SecurityDestroyAccess)))
+ client, stuff->id, XRT_WINDOW, DixDestroyAccess)))
return BadWindow;
FOR_NSCREENS_BACKWARD(j) {
@@ -278,7 +276,7 @@ int PanoramiXDestroySubwindows(ClientPtr client)
REQUEST_SIZE_MATCH(xResourceReq);
if(!(win = (PanoramiXRes *)SecurityLookupIDByType(
- client, stuff->id, XRT_WINDOW, SecurityDestroyAccess)))
+ client, stuff->id, XRT_WINDOW, DixDestroyAccess)))
return BadWindow;
FOR_NSCREENS_BACKWARD(j) {
@@ -303,7 +301,7 @@ int PanoramiXChangeSaveSet(ClientPtr client)
REQUEST_SIZE_MATCH(xChangeSaveSetReq);
if(!(win = (PanoramiXRes *)SecurityLookupIDByType(
- client, stuff->window, XRT_WINDOW, SecurityReadAccess)))
+ client, stuff->window, XRT_WINDOW, DixReadAccess)))
return BadWindow;
FOR_NSCREENS_BACKWARD(j) {
@@ -327,11 +325,11 @@ int PanoramiXReparentWindow(ClientPtr client)
REQUEST_SIZE_MATCH(xReparentWindowReq);
if(!(win = (PanoramiXRes *)SecurityLookupIDByType(
- client, stuff->window, XRT_WINDOW, SecurityWriteAccess)))
+ client, stuff->window, XRT_WINDOW, DixWriteAccess)))
return BadWindow;
if(!(parent = (PanoramiXRes *)SecurityLookupIDByType(
- client, stuff->parent, XRT_WINDOW, SecurityWriteAccess)))
+ client, stuff->parent, XRT_WINDOW, DixWriteAccess)))
return BadWindow;
x = stuff->x;
@@ -362,7 +360,7 @@ int PanoramiXMapWindow(ClientPtr client)
REQUEST_SIZE_MATCH(xResourceReq);
if(!(win = (PanoramiXRes *)SecurityLookupIDByType(
- client, stuff->id, XRT_WINDOW, SecurityReadAccess)))
+ client, stuff->id, XRT_WINDOW, DixReadAccess)))
return BadWindow;
FOR_NSCREENS_FORWARD(j) {
@@ -384,7 +382,7 @@ int PanoramiXMapSubwindows(ClientPtr client)
REQUEST_SIZE_MATCH(xResourceReq);
if(!(win = (PanoramiXRes *)SecurityLookupIDByType(
- client, stuff->id, XRT_WINDOW, SecurityReadAccess)))
+ client, stuff->id, XRT_WINDOW, DixReadAccess)))
return BadWindow;
FOR_NSCREENS_FORWARD(j) {
@@ -406,7 +404,7 @@ int PanoramiXUnmapWindow(ClientPtr client)
REQUEST_SIZE_MATCH(xResourceReq);
if(!(win = (PanoramiXRes *)SecurityLookupIDByType(
- client, stuff->id, XRT_WINDOW, SecurityReadAccess)))
+ client, stuff->id, XRT_WINDOW, DixReadAccess)))
return BadWindow;
FOR_NSCREENS_FORWARD(j) {
@@ -428,7 +426,7 @@ int PanoramiXUnmapSubwindows(ClientPtr client)
REQUEST_SIZE_MATCH(xResourceReq);
if(!(win = (PanoramiXRes *)SecurityLookupIDByType(
- client, stuff->id, XRT_WINDOW, SecurityReadAccess)))
+ client, stuff->id, XRT_WINDOW, DixReadAccess)))
return BadWindow;
FOR_NSCREENS_FORWARD(j) {
@@ -459,11 +457,11 @@ int PanoramiXConfigureWindow(ClientPtr client)
/* because we need the parent */
if (!(pWin = (WindowPtr)SecurityLookupIDByType(
- client, stuff->window, RT_WINDOW, SecurityWriteAccess)))
+ client, stuff->window, RT_WINDOW, DixWriteAccess)))
return BadWindow;
if (!(win = (PanoramiXRes *)SecurityLookupIDByType(
- client, stuff->window, XRT_WINDOW, SecurityWriteAccess)))
+ client, stuff->window, XRT_WINDOW, DixWriteAccess)))
return BadWindow;
if ((Mask)stuff->mask & CWSibling) {
@@ -471,7 +469,7 @@ int PanoramiXConfigureWindow(ClientPtr client)
sib_offset = Ones((Mask)stuff->mask & (CWSibling - 1));
if ((tmp = *((CARD32 *) &stuff[1] + sib_offset))) {
if(!(sib = (PanoramiXRes*) SecurityLookupIDByType(
- client, tmp, XRT_WINDOW, SecurityReadAccess)))
+ client, tmp, XRT_WINDOW, DixReadAccess)))
return BadWindow;
}
}
@@ -516,7 +514,7 @@ int PanoramiXCirculateWindow(ClientPtr client)
REQUEST_SIZE_MATCH(xCirculateWindowReq);
if(!(win = (PanoramiXRes *)SecurityLookupIDByType(
- client, stuff->window, XRT_WINDOW, SecurityWriteAccess)))
+ client, stuff->window, XRT_WINDOW, DixWriteAccess)))
return BadWindow;
FOR_NSCREENS_FORWARD(j) {
@@ -533,10 +531,14 @@ int PanoramiXGetGeometry(ClientPtr client)
{
xGetGeometryReply rep;
DrawablePtr pDraw;
+ int rc;
REQUEST(xResourceReq);
REQUEST_SIZE_MATCH(xResourceReq);
- VERIFY_GEOMETRABLE (pDraw, stuff->id, client);
+ rc = dixLookupDrawable(&pDraw, stuff->id, client, M_ANY, DixUnknownAccess);
+ if (rc != Success)
+ return rc;
+
rep.type = X_Reply;
rep.length = 0;
rep.sequenceNumber = client->sequence;
@@ -575,19 +577,17 @@ int PanoramiXTranslateCoords(ClientPtr client)
{
INT16 x, y;
REQUEST(xTranslateCoordsReq);
-
- register WindowPtr pWin, pDst;
+ int rc;
+ WindowPtr pWin, pDst;
xTranslateCoordsReply rep;
REQUEST_SIZE_MATCH(xTranslateCoordsReq);
- pWin = (WindowPtr)SecurityLookupWindow(stuff->srcWid, client,
- SecurityReadAccess);
- if (!pWin)
- return(BadWindow);
- pDst = (WindowPtr)SecurityLookupWindow(stuff->dstWid, client,
- SecurityReadAccess);
- if (!pDst)
- return(BadWindow);
+ rc = dixLookupWindow(&pWin, stuff->srcWid, client, DixReadAccess);
+ if (rc != Success)
+ return rc;
+ rc = dixLookupWindow(&pDst, stuff->dstWid, client, DixReadAccess);
+ if (rc != Success)
+ return rc;
rep.type = X_Reply;
rep.length = 0;
rep.sequenceNumber = client->sequence;
@@ -657,7 +657,7 @@ int PanoramiXCreatePixmap(ClientPtr client)
client->errorValue = stuff->pid;
if(!(refDraw = (PanoramiXRes *)SecurityLookupIDByClass(
- client, stuff->drawable, XRC_DRAWABLE, SecurityReadAccess)))
+ client, stuff->drawable, XRC_DRAWABLE, DixReadAccess)))
return BadDrawable;
if(!(newPix = (PanoramiXRes *) xalloc(sizeof(PanoramiXRes))))
@@ -696,7 +696,7 @@ int PanoramiXFreePixmap(ClientPtr client)
client->errorValue = stuff->id;
if(!(pix = (PanoramiXRes *)SecurityLookupIDByType(
- client, stuff->id, XRT_PIXMAP, SecurityDestroyAccess)))
+ client, stuff->id, XRT_PIXMAP, DixDestroyAccess)))
return BadPixmap;
FOR_NSCREENS_BACKWARD(j) {
@@ -732,14 +732,14 @@ int PanoramiXCreateGC(ClientPtr client)
return BadLength;
if (!(refDraw = (PanoramiXRes *)SecurityLookupIDByClass(
- client, stuff->drawable, XRC_DRAWABLE, SecurityReadAccess)))
+ client, stuff->drawable, XRC_DRAWABLE, DixReadAccess)))
return BadDrawable;
if ((Mask)stuff->mask & GCTile) {
tile_offset = Ones((Mask)stuff->mask & (GCTile - 1));
if ((tmp = *((CARD32 *) &stuff[1] + tile_offset))) {
if(!(tile = (PanoramiXRes*) SecurityLookupIDByType(
- client, tmp, XRT_PIXMAP, SecurityReadAccess)))
+ client, tmp, XRT_PIXMAP, DixReadAccess)))
return BadPixmap;
}
}
@@ -747,7 +747,7 @@ int PanoramiXCreateGC(ClientPtr client)
stip_offset = Ones((Mask)stuff->mask & (GCStipple - 1));
if ((tmp = *((CARD32 *) &stuff[1] + stip_offset))) {
if(!(stip = (PanoramiXRes*) SecurityLookupIDByType(
- client, tmp, XRT_PIXMAP, SecurityReadAccess)))
+ client, tmp, XRT_PIXMAP, DixReadAccess)))
return BadPixmap;
}
}
@@ -755,7 +755,7 @@ int PanoramiXCreateGC(ClientPtr client)
clip_offset = Ones((Mask)stuff->mask & (GCClipMask - 1));
if ((tmp = *((CARD32 *) &stuff[1] + clip_offset))) {
if(!(clip = (PanoramiXRes*) SecurityLookupIDByType(
- client, tmp, XRT_PIXMAP, SecurityReadAccess)))
+ client, tmp, XRT_PIXMAP, DixReadAccess)))
return BadPixmap;
}
}
@@ -807,14 +807,14 @@ int PanoramiXChangeGC(ClientPtr client)
return BadLength;
if (!(gc = (PanoramiXRes *)SecurityLookupIDByType(
- client, stuff->gc, XRT_GC, SecurityReadAccess)))
+ client, stuff->gc, XRT_GC, DixReadAccess)))
return BadGC;
if ((Mask)stuff->mask & GCTile) {
tile_offset = Ones((Mask)stuff->mask & (GCTile - 1));
if ((tmp = *((CARD32 *) &stuff[1] + tile_offset))) {
if(!(tile = (PanoramiXRes*) SecurityLookupIDByType(
- client, tmp, XRT_PIXMAP, SecurityReadAccess)))
+ client, tmp, XRT_PIXMAP, DixReadAccess)))
return BadPixmap;
}
}
@@ -822,7 +822,7 @@ int PanoramiXChangeGC(ClientPtr client)
stip_offset = Ones((Mask)stuff->mask & (GCStipple - 1));
if ((tmp = *((CARD32 *) &stuff[1] + stip_offset))) {
if(!(stip = (PanoramiXRes*) SecurityLookupIDByType(
- client, tmp, XRT_PIXMAP, SecurityReadAccess)))
+ client, tmp, XRT_PIXMAP, DixReadAccess)))
return BadPixmap;
}
}
@@ -830,7 +830,7 @@ int PanoramiXChangeGC(ClientPtr client)
clip_offset = Ones((Mask)stuff->mask & (GCClipMask - 1));
if ((tmp = *((CARD32 *) &stuff[1] + clip_offset))) {
if(!(clip = (PanoramiXRes*) SecurityLookupIDByType(
- client, tmp, XRT_PIXMAP, SecurityReadAccess)))
+ client, tmp, XRT_PIXMAP, DixReadAccess)))
return BadPixmap;
}
}
@@ -861,11 +861,11 @@ int PanoramiXCopyGC(ClientPtr client)
REQUEST_SIZE_MATCH(xCopyGCReq);
if(!(srcGC = (PanoramiXRes *)SecurityLookupIDByType(
- client, stuff->srcGC, XRT_GC, SecurityReadAccess)))
+ client, stuff->srcGC, XRT_GC, DixReadAccess)))
return BadGC;
if(!(dstGC = (PanoramiXRes *)SecurityLookupIDByType(
- client, stuff->dstGC, XRT_GC, SecurityWriteAccess)))
+ client, stuff->dstGC, XRT_GC, DixWriteAccess)))
return BadGC;
FOR_NSCREENS(j) {
@@ -888,7 +888,7 @@ int PanoramiXSetDashes(ClientPtr client)
REQUEST_FIXED_SIZE(xSetDashesReq, stuff->nDashes);
if(!(gc = (PanoramiXRes *)SecurityLookupIDByType(
- client, stuff->gc, XRT_GC, SecurityWriteAccess)))
+ client, stuff->gc, XRT_GC, DixWriteAccess)))
return BadGC;
FOR_NSCREENS_BACKWARD(j) {
@@ -910,7 +910,7 @@ int PanoramiXSetClipRectangles(ClientPtr client)
REQUEST_AT_LEAST_SIZE(xSetClipRectanglesReq);
if(!(gc = (PanoramiXRes *)SecurityLookupIDByType(
- client, stuff->gc, XRT_GC, SecurityWriteAccess)))
+ client, stuff->gc, XRT_GC, DixWriteAccess)))
return BadGC;
FOR_NSCREENS_BACKWARD(j) {
@@ -932,7 +932,7 @@ int PanoramiXFreeGC(ClientPtr client)
REQUEST_SIZE_MATCH(xResourceReq);
if(!(gc = (PanoramiXRes *)SecurityLookupIDByType(
- client, stuff->id, XRT_GC, SecurityDestroyAccess)))
+ client, stuff->id, XRT_GC, DixDestroyAccess)))
return BadGC;
FOR_NSCREENS_BACKWARD(j) {
@@ -958,7 +958,7 @@ int PanoramiXClearToBackground(ClientPtr client)
REQUEST_SIZE_MATCH(xClearAreaReq);
if(!(win = (PanoramiXRes *)SecurityLookupIDByType(
- client, stuff->window, XRT_WINDOW, SecurityWriteAccess)))
+ client, stuff->window, XRT_WINDOW, DixWriteAccess)))
return BadWindow;
x = stuff->x;
@@ -1000,13 +1000,13 @@ int PanoramiXCopyArea(ClientPtr client)
REQUEST_SIZE_MATCH(xCopyAreaReq);
if(!(src = (PanoramiXRes *)SecurityLookupIDByClass(
- client, stuff->srcDrawable, XRC_DRAWABLE, SecurityReadAccess)))
+ client, stuff->srcDrawable, XRC_DRAWABLE, DixReadAccess)))
return BadDrawable;
srcShared = IS_SHARED_PIXMAP(src);
if(!(dst = (PanoramiXRes *)SecurityLookupIDByClass(
- client, stuff->dstDrawable, XRC_DRAWABLE, SecurityWriteAccess)))
+ client, stuff->dstDrawable, XRC_DRAWABLE, DixWriteAccess)))
return BadDrawable;
dstShared = IS_SHARED_PIXMAP(dst);
@@ -1015,7 +1015,7 @@ int PanoramiXCopyArea(ClientPtr client)
return (* SavedProcVector[X_CopyArea])(client);
if(!(gc = (PanoramiXRes *)SecurityLookupIDByType(
- client, stuff->gc, XRT_GC, SecurityReadAccess)))
+ client, stuff->gc, XRT_GC, DixReadAccess)))
return BadGC;
if((dst->type == XRT_WINDOW) && dst->u.win.root)
@@ -1030,10 +1030,14 @@ int PanoramiXCopyArea(ClientPtr client)
DrawablePtr pDst;
GCPtr pGC;
char *data;
- int pitch;
+ int pitch, rc;
- FOR_NSCREENS(j)
- VERIFY_DRAWABLE(drawables[j], src->info[j].id, client);
+ FOR_NSCREENS(j) {
+ rc = dixLookupDrawable(drawables+j, src->info[j].id, client, 0,
+ DixUnknownAccess);
+ if (rc != Success)
+ return rc;
+ }
pitch = PixmapBytePad(stuff->width, drawables[0]->depth);
if(!(data = xcalloc(1, stuff->height * pitch)))
@@ -1067,6 +1071,7 @@ int PanoramiXCopyArea(ClientPtr client)
DrawablePtr pDst = NULL, pSrc = NULL;
GCPtr pGC = NULL;
RegionPtr pRgn[MAXSCREENS];
+ int rc;
FOR_NSCREENS_BACKWARD(j) {
stuff->dstDrawable = dst->info[j].id;
@@ -1083,8 +1088,11 @@ int PanoramiXCopyArea(ClientPtr client)
VALIDATE_DRAWABLE_AND_GC(stuff->dstDrawable, pDst, pGC, client);
if (stuff->dstDrawable != stuff->srcDrawable) {
- SECURITY_VERIFY_DRAWABLE(pSrc, stuff->srcDrawable, client,
- SecurityReadAccess);
+ rc = dixLookupDrawable(&pSrc, stuff->srcDrawable, client, 0,
+ DixReadAccess);
+ if (rc != Success)
+ return rc;
+
if ((pDst->pScreen != pSrc->pScreen) ||
(pDst->depth != pSrc->depth)) {
client->errorValue = stuff->dstDrawable;
@@ -1135,7 +1143,7 @@ int PanoramiXCopyArea(ClientPtr client)
int PanoramiXCopyPlane(ClientPtr client)
{
- int j, srcx, srcy, dstx, dsty;
+ int j, srcx, srcy, dstx, dsty, rc;
PanoramiXRes *gc, *src, *dst;
Bool srcIsRoot = FALSE;
Bool dstIsRoot = FALSE;
@@ -1148,13 +1156,13 @@ int PanoramiXCopyPlane(ClientPtr client)
REQUEST_SIZE_MATCH(xCopyPlaneReq);
if(!(src = (PanoramiXRes *)SecurityLookupIDByClass(
- client, stuff->srcDrawable, XRC_DRAWABLE, SecurityReadAccess)))
+ client, stuff->srcDrawable, XRC_DRAWABLE, DixReadAccess)))
return BadDrawable;
srcShared = IS_SHARED_PIXMAP(src);
if(!(dst = (PanoramiXRes *)SecurityLookupIDByClass(
- client, stuff->dstDrawable, XRC_DRAWABLE, SecurityWriteAccess)))
+ client, stuff->dstDrawable, XRC_DRAWABLE, DixWriteAccess)))
return BadDrawable;
dstShared = IS_SHARED_PIXMAP(dst);
@@ -1163,7 +1171,7 @@ int PanoramiXCopyPlane(ClientPtr client)
return (* SavedProcVector[X_CopyPlane])(client);
if(!(gc = (PanoramiXRes *)SecurityLookupIDByType(
- client, stuff->gc, XRT_GC, SecurityReadAccess)))
+ client, stuff->gc, XRT_GC, DixReadAccess)))
return BadGC;
if((dst->type == XRT_WINDOW) && dst->u.win.root)
@@ -1189,8 +1197,11 @@ int PanoramiXCopyPlane(ClientPtr client)
VALIDATE_DRAWABLE_AND_GC(stuff->dstDrawable, pdstDraw, pGC, client);
if (stuff->dstDrawable != stuff->srcDrawable) {
- SECURITY_VERIFY_DRAWABLE(psrcDraw, stuff->srcDrawable, client,
- SecurityReadAccess);
+ rc = dixLookupDrawable(&psrcDraw, stuff->srcDrawable, client, 0,
+ DixReadAccess);
+ if (rc != Success)
+ return rc;
+
if (pdstDraw->pScreen != psrcDraw->pScreen) {
client->errorValue = stuff->dstDrawable;
return (BadMatch);
@@ -1248,14 +1259,14 @@ int PanoramiXPolyPoint(ClientPtr client)
REQUEST_AT_LEAST_SIZE(xPolyPointReq);
if(!(draw = (PanoramiXRes *)SecurityLookupIDByClass(
- client, stuff->drawable, XRC_DRAWABLE, SecurityWriteAccess)))
+ client, stuff->drawable, XRC_DRAWABLE, DixWriteAccess)))
return BadDrawable;
if(IS_SHARED_PIXMAP(draw))
return (*SavedProcVector[X_PolyPoint])(client);
if(!(gc = (PanoramiXRes *)SecurityLookupIDByType(
- client, stuff->gc, XRT_GC, SecurityReadAccess)))
+ client, stuff->gc, XRT_GC, DixReadAccess)))
return BadGC;
isRoot = (draw->type == XRT_WINDOW) && draw->u.win.root;
@@ -1306,14 +1317,14 @@ int PanoramiXPolyLine(ClientPtr client)
REQUEST_AT_LEAST_SIZE(xPolyLineReq);
if(!(draw = (PanoramiXRes *)SecurityLookupIDByClass(
- client, stuff->drawable, XRC_DRAWABLE, SecurityWriteAccess)))
+ client, stuff->drawable, XRC_DRAWABLE, DixWriteAccess)))
return BadDrawable;
if(IS_SHARED_PIXMAP(draw))
return (*SavedProcVector[X_PolyLine])(client);
if(!(gc = (PanoramiXRes *)SecurityLookupIDByType(
- client, stuff->gc, XRT_GC, SecurityReadAccess)))
+ client, stuff->gc, XRT_GC, DixReadAccess)))
return BadGC;
isRoot = (draw->type == XRT_WINDOW) && draw->u.win.root;
@@ -1364,14 +1375,14 @@ int PanoramiXPolySegment(ClientPtr client)
REQUEST_AT_LEAST_SIZE(xPolySegmentReq);
if(!(draw = (PanoramiXRes *)SecurityLookupIDByClass(
- client, stuff->drawable, XRC_DRAWABLE, SecurityWriteAccess)))
+ client, stuff->drawable, XRC_DRAWABLE, DixWriteAccess)))
return BadDrawable;
if(IS_SHARED_PIXMAP(draw))
return (*SavedProcVector[X_PolySegment])(client);
if(!(gc = (PanoramiXRes *)SecurityLookupIDByType(
- client, stuff->gc, XRT_GC, SecurityReadAccess)))
+ client, stuff->gc, XRT_GC, DixReadAccess)))
return BadGC;
isRoot = (draw->type == XRT_WINDOW) && draw->u.win.root;
@@ -1426,14 +1437,14 @@ int PanoramiXPolyRectangle(ClientPtr client)
if(!(draw = (PanoramiXRes *)SecurityLookupIDByClass(
- client, stuff->drawable, XRC_DRAWABLE, SecurityWriteAccess)))
+ client, stuff->drawable, XRC_DRAWABLE, DixWriteAccess)))
return BadDrawable;
if(IS_SHARED_PIXMAP(draw))
return (*SavedProcVector[X_PolyRectangle])(client);
if(!(gc = (PanoramiXRes *)SecurityLookupIDByType(
- client, stuff->gc, XRT_GC, SecurityReadAccess)))
+ client, stuff->gc, XRT_GC, DixReadAccess)))
return BadGC;
isRoot = (draw->type == XRT_WINDOW) && draw->u.win.root;
@@ -1486,14 +1497,14 @@ int PanoramiXPolyArc(ClientPtr client)
REQUEST_AT_LEAST_SIZE(xPolyArcReq);
if(!(draw = (PanoramiXRes *)SecurityLookupIDByClass(
- client, stuff->drawable, XRC_DRAWABLE, SecurityWriteAccess)))
+ client, stuff->drawable, XRC_DRAWABLE, DixWriteAccess)))
return BadDrawable;
if(IS_SHARED_PIXMAP(draw))
return (*SavedProcVector[X_PolyArc])(client);
if(!(gc = (PanoramiXRes *)SecurityLookupIDByType(
- client, stuff->gc, XRT_GC, SecurityReadAccess)))
+ client, stuff->gc, XRT_GC, DixReadAccess)))
return BadGC;
isRoot = (draw->type == XRT_WINDOW) && draw->u.win.root;
@@ -1544,14 +1555,14 @@ int PanoramiXFillPoly(ClientPtr client)
REQUEST_AT_LEAST_SIZE(xFillPolyReq);
if(!(draw = (PanoramiXRes *)SecurityLookupIDByClass(
- client, stuff->drawable, XRC_DRAWABLE, SecurityWriteAccess)))
+ client, stuff->drawable, XRC_DRAWABLE, DixWriteAccess)))
return BadDrawable;
if(IS_SHARED_PIXMAP(draw))
return (*SavedProcVector[X_FillPoly])(client);
if(!(gc = (PanoramiXRes *)SecurityLookupIDByType(
- client, stuff->gc, XRT_GC, SecurityReadAccess)))
+ client, stuff->gc, XRT_GC, DixReadAccess)))
return BadGC;
isRoot = (draw->type == XRT_WINDOW) && draw->u.win.root;
@@ -1603,14 +1614,14 @@ int PanoramiXPolyFillRectangle(ClientPtr client)
REQUEST_AT_LEAST_SIZE(xPolyFillRectangleReq);
if(!(draw = (PanoramiXRes *)SecurityLookupIDByClass(
- client, stuff->drawable, XRC_DRAWABLE, SecurityWriteAccess)))
+ client, stuff->drawable, XRC_DRAWABLE, DixWriteAccess)))
return BadDrawable;
if(IS_SHARED_PIXMAP(draw))
return (*SavedProcVector[X_PolyFillRectangle])(client);
if(!(gc = (PanoramiXRes *)SecurityLookupIDByType(
- client, stuff->gc, XRT_GC, SecurityReadAccess)))
+ client, stuff->gc, XRT_GC, DixReadAccess)))
return BadGC;
isRoot = (draw->type == XRT_WINDOW) && draw->u.win.root;
@@ -1662,14 +1673,14 @@ int PanoramiXPolyFillArc(ClientPtr client)
REQUEST_AT_LEAST_SIZE(xPolyFillArcReq);
if(!(draw = (PanoramiXRes *)SecurityLookupIDByClass(
- client, stuff->drawable, XRC_DRAWABLE, SecurityWriteAccess)))
+ client, stuff->drawable, XRC_DRAWABLE, DixWriteAccess)))
return BadDrawable;
if(IS_SHARED_PIXMAP(draw))
return (*SavedProcVector[X_PolyFillArc])(client);
if(!(gc = (PanoramiXRes *)SecurityLookupIDByType(
- client, stuff->gc, XRT_GC, SecurityReadAccess)))
+ client, stuff->gc, XRT_GC, DixReadAccess)))
return BadGC;
isRoot = (draw->type == XRT_WINDOW) && draw->u.win.root;
@@ -1720,14 +1731,14 @@ int PanoramiXPutImage(ClientPtr client)
REQUEST_AT_LEAST_SIZE(xPutImageReq);
if(!(draw = (PanoramiXRes *)SecurityLookupIDByClass(
- client, stuff->drawable, XRC_DRAWABLE, SecurityWriteAccess)))
+ client, stuff->drawable, XRC_DRAWABLE, DixWriteAccess)))
return BadDrawable;
if(IS_SHARED_PIXMAP(draw))
return (*SavedProcVector[X_PutImage])(client);
if(!(gc = (PanoramiXRes *)SecurityLookupIDByType(
- client, stuff->gc, XRT_GC, SecurityReadAccess)))
+ client, stuff->gc, XRT_GC, DixReadAccess)))
return BadGC;
isRoot = (draw->type == XRT_WINDOW) && draw->u.win.root;
@@ -1756,7 +1767,7 @@ int PanoramiXGetImage(ClientPtr client)
xGetImageReply xgi;
Bool isRoot;
char *pBuf;
- int i, x, y, w, h, format;
+ int i, x, y, w, h, format, rc;
Mask plane = 0, planemask;
int linesDone, nlines, linesPerBuf;
long widthBytesLine, length;
@@ -1771,13 +1782,16 @@ int PanoramiXGetImage(ClientPtr client)
}
if(!(draw = (PanoramiXRes *)SecurityLookupIDByClass(
- client, stuff->drawable, XRC_DRAWABLE, SecurityWriteAccess)))
+ client, stuff->drawable, XRC_DRAWABLE, DixWriteAccess)))
return BadDrawable;
if(draw->type == XRT_PIXMAP)
return (*SavedProcVector[X_GetImage])(client);
- VERIFY_DRAWABLE(pDraw, stuff->drawable, client);
+ rc = dixLookupDrawable(&pDraw, stuff->drawable, client, 0,
+ DixUnknownAccess);
+ if (rc != Success)
+ return rc;
if(!((WindowPtr)pDraw)->realized)
return(BadMatch);
@@ -1811,8 +1825,12 @@ int PanoramiXGetImage(ClientPtr client)
}
drawables[0] = pDraw;
- for(i = 1; i < PanoramiXNumScreens; i++)
- VERIFY_DRAWABLE(drawables[i], draw->info[i].id, client);
+ for(i = 1; i < PanoramiXNumScreens; i++) {
+ rc = dixLookupDrawable(drawables+i, draw->info[i].id, client, 0,
+ DixUnknownAccess);
+ if (rc != Success)
+ return rc;
+ }
xgi.visual = wVisual (((WindowPtr) pDraw));
xgi.type = X_Reply;
@@ -1911,14 +1929,14 @@ PanoramiXPolyText8(ClientPtr client)
REQUEST_AT_LEAST_SIZE(xPolyTextReq);
if(!(draw = (PanoramiXRes *)SecurityLookupIDByClass(
- client, stuff->drawable, XRC_DRAWABLE, SecurityWriteAccess)))
+ client, stuff->drawable, XRC_DRAWABLE, DixWriteAccess)))
return BadDrawable;
if(IS_SHARED_PIXMAP(draw))
return (*SavedProcVector[X_PolyText8])(client);
if(!(gc = (PanoramiXRes *)SecurityLookupIDByType(
- client, stuff->gc, XRT_GC, SecurityReadAccess)))
+ client, stuff->gc, XRT_GC, DixReadAccess)))
return BadGC;
isRoot = (draw->type == XRT_WINDOW) && draw->u.win.root;
@@ -1950,14 +1968,14 @@ PanoramiXPolyText16(ClientPtr client)
REQUEST_AT_LEAST_SIZE(xPolyTextReq);
if(!(draw = (PanoramiXRes *)SecurityLookupIDByClass(
- client, stuff->drawable, XRC_DRAWABLE, SecurityWriteAccess)))
+ client, stuff->drawable, XRC_DRAWABLE, DixWriteAccess)))
return BadDrawable;
if(IS_SHARED_PIXMAP(draw))
return (*SavedProcVector[X_PolyText16])(client);
if(!(gc = (PanoramiXRes *)SecurityLookupIDByType(
- client, stuff->gc, XRT_GC, SecurityReadAccess)))
+ client, stuff->gc, XRT_GC, DixReadAccess)))
return BadGC;
isRoot = (draw->type == XRT_WINDOW) && draw->u.win.root;
@@ -1989,14 +2007,14 @@ int PanoramiXImageText8(ClientPtr client)
REQUEST_FIXED_SIZE(xImageTextReq, stuff->nChars);
if(!(draw = (PanoramiXRes *)SecurityLookupIDByClass(
- client, stuff->drawable, XRC_DRAWABLE, SecurityWriteAccess)))
+ client, stuff->drawable, XRC_DRAWABLE, DixWriteAccess)))
return BadDrawable;
if(IS_SHARED_PIXMAP(draw))
return (*SavedProcVector[X_ImageText8])(client);
if(!(gc = (PanoramiXRes *)SecurityLookupIDByType(
- client, stuff->gc, XRT_GC, SecurityReadAccess)))
+ client, stuff->gc, XRT_GC, DixReadAccess)))
return BadGC;
isRoot = (draw->type == XRT_WINDOW) && draw->u.win.root;
@@ -2028,14 +2046,14 @@ int PanoramiXImageText16(ClientPtr client)
REQUEST_FIXED_SIZE(xImageTextReq, stuff->nChars << 1);
if(!(draw = (PanoramiXRes *)SecurityLookupIDByClass(
- client, stuff->drawable, XRC_DRAWABLE, SecurityWriteAccess)))
+ client, stuff->drawable, XRC_DRAWABLE, DixWriteAccess)))
return BadDrawable;
if(IS_SHARED_PIXMAP(draw))
return (*SavedProcVector[X_ImageText16])(client);
if(!(gc = (PanoramiXRes *)SecurityLookupIDByType(
- client, stuff->gc, XRT_GC, SecurityReadAccess)))
+ client, stuff->gc, XRT_GC, DixReadAccess)))
return BadGC;
isRoot = (draw->type == XRT_WINDOW) && draw->u.win.root;
@@ -2066,7 +2084,7 @@ int PanoramiXCreateColormap(ClientPtr client)
REQUEST_SIZE_MATCH(xCreateColormapReq);
if(!(win = (PanoramiXRes *)SecurityLookupIDByType(
- client, stuff->window, XRT_WINDOW, SecurityReadAccess)))
+ client, stuff->window, XRT_WINDOW, DixReadAccess)))
return BadWindow;
if(!stuff->visual || (stuff->visual > 255))
@@ -2109,7 +2127,7 @@ int PanoramiXFreeColormap(ClientPtr client)
client->errorValue = stuff->id;
if(!(cmap = (PanoramiXRes *)SecurityLookupIDByType(
- client, stuff->id, XRT_COLORMAP, SecurityDestroyAccess)))
+ client, stuff->id, XRT_COLORMAP, DixDestroyAccess)))
return BadColor;
FOR_NSCREENS_BACKWARD(j) {
@@ -2138,7 +2156,7 @@ PanoramiXCopyColormapAndFree(ClientPtr client)
if(!(cmap = (PanoramiXRes *)SecurityLookupIDByType(
client, stuff->srcCmap, XRT_COLORMAP,
- SecurityReadAccess | SecurityWriteAccess)))
+ DixReadAccess | DixWriteAccess)))
return BadColor;
if(!(newCmap = (PanoramiXRes *) xalloc(sizeof(PanoramiXRes))))
@@ -2176,7 +2194,7 @@ int PanoramiXInstallColormap(ClientPtr client)
client->errorValue = stuff->id;
if(!(cmap = (PanoramiXRes *)SecurityLookupIDByType(
- client, stuff->id, XRT_COLORMAP, SecurityReadAccess)))
+ client, stuff->id, XRT_COLORMAP, DixReadAccess)))
return BadColor;
FOR_NSCREENS_BACKWARD(j){
@@ -2199,7 +2217,7 @@ int PanoramiXUninstallColormap(ClientPtr client)
client->errorValue = stuff->id;
if(!(cmap = (PanoramiXRes *)SecurityLookupIDByType(
- client, stuff->id, XRT_COLORMAP, SecurityReadAccess)))
+ client, stuff->id, XRT_COLORMAP, DixReadAccess)))
return BadColor;
FOR_NSCREENS_BACKWARD(j) {
@@ -2222,7 +2240,7 @@ int PanoramiXAllocColor(ClientPtr client)
client->errorValue = stuff->cmap;
if(!(cmap = (PanoramiXRes *)SecurityLookupIDByType(
- client, stuff->cmap, XRT_COLORMAP, SecurityWriteAccess)))
+ client, stuff->cmap, XRT_COLORMAP, DixWriteAccess)))
return BadColor;
FOR_NSCREENS_BACKWARD(j){
@@ -2245,7 +2263,7 @@ int PanoramiXAllocNamedColor(ClientPtr client)
client->errorValue = stuff->cmap;
if(!(cmap = (PanoramiXRes *)SecurityLookupIDByType(
- client, stuff->cmap, XRT_COLORMAP, SecurityWriteAccess)))
+ client, stuff->cmap, XRT_COLORMAP, DixWriteAccess)))
return BadColor;
FOR_NSCREENS_BACKWARD(j){
@@ -2268,7 +2286,7 @@ int PanoramiXAllocColorCells(ClientPtr client)
client->errorValue = stuff->cmap;
if(!(cmap = (PanoramiXRes *)SecurityLookupIDByType(
- client, stuff->cmap, XRT_COLORMAP, SecurityWriteAccess)))
+ client, stuff->cmap, XRT_COLORMAP, DixWriteAccess)))
return BadColor;
FOR_NSCREENS_BACKWARD(j){
@@ -2291,7 +2309,7 @@ int PanoramiXAllocColorPlanes(ClientPtr client)
client->errorValue = stuff->cmap;
if(!(cmap = (PanoramiXRes *)SecurityLookupIDByType(
- client, stuff->cmap, XRT_COLORMAP, SecurityWriteAccess)))
+ client, stuff->cmap, XRT_COLORMAP, DixWriteAccess)))
return BadColor;
FOR_NSCREENS_BACKWARD(j){
@@ -2315,7 +2333,7 @@ int PanoramiXFreeColors(ClientPtr client)
client->errorValue = stuff->cmap;
if(!(cmap = (PanoramiXRes *)SecurityLookupIDByType(
- client, stuff->cmap, XRT_COLORMAP, SecurityWriteAccess)))
+ client, stuff->cmap, XRT_COLORMAP, DixWriteAccess)))
return BadColor;
FOR_NSCREENS_BACKWARD(j) {
@@ -2337,7 +2355,7 @@ int PanoramiXStoreColors(ClientPtr client)
client->errorValue = stuff->cmap;
if(!(cmap = (PanoramiXRes *)SecurityLookupIDByType(
- client, stuff->cmap, XRT_COLORMAP, SecurityWriteAccess)))
+ client, stuff->cmap, XRT_COLORMAP, DixWriteAccess)))
return BadColor;
FOR_NSCREENS_BACKWARD(j){
@@ -2360,7 +2378,7 @@ int PanoramiXStoreNamedColor(ClientPtr client)
client->errorValue = stuff->cmap;
if(!(cmap = (PanoramiXRes *)SecurityLookupIDByType(
- client, stuff->cmap, XRT_COLORMAP, SecurityWriteAccess)))
+ client, stuff->cmap, XRT_COLORMAP, DixWriteAccess)))
return BadColor;
FOR_NSCREENS_BACKWARD(j){
diff --git a/Xext/panoramiXsrv.h b/Xext/panoramiXsrv.h
index dc3b3d805..bb032cfae 100644
--- a/Xext/panoramiXsrv.h
+++ b/Xext/panoramiXsrv.h
@@ -1,4 +1,3 @@
-/* $XFree86: xc/programs/Xserver/Xext/panoramiXsrv.h,v 1.8 2001/08/01 00:44:44 tsi Exp $ */
#ifdef HAVE_DIX_CONFIG_H
#include <dix-config.h>
diff --git a/Xext/sampleEVI.c b/Xext/sampleEVI.c
index 67caa5613..d9c569609 100644
--- a/Xext/sampleEVI.c
+++ b/Xext/sampleEVI.c
@@ -1,4 +1,3 @@
-/* $Xorg: sampleEVI.c,v 1.3 2000/08/17 19:47:58 cpqbld Exp $ */
/************************************************************
Copyright (c) 1997 by Silicon Graphics Computer Systems, Inc.
Permission to use, copy, modify, and distribute this
diff --git a/Xext/saver.c b/Xext/saver.c
index d873ffde6..7e3ebf408 100644
--- a/Xext/saver.c
+++ b/Xext/saver.c
@@ -1,6 +1,4 @@
-/* $XdotOrg: xserver/xorg/Xext/saver.c,v 1.12 2006/03/31 18:49:38 fredrik Exp $ */
/*
- * $XConsortium: saver.c,v 1.12 94/04/17 20:59:36 dpw Exp $
*
Copyright (c) 1992 X Consortium
@@ -28,7 +26,6 @@ in this Software without prior written authorization from the X Consortium.
* Author: Keith Packard, MIT X Consortium
*/
-/* $XFree86: xc/programs/Xserver/Xext/saver.c,v 3.7 2003/10/28 23:08:43 tsi Exp $ */
#define NEED_REPLIES
#define NEED_EVENTS
@@ -783,16 +780,17 @@ ProcScreenSaverQueryInfo (client)
{
REQUEST(xScreenSaverQueryInfoReq);
xScreenSaverQueryInfoReply rep;
- register int n;
+ register int n, rc;
ScreenSaverStuffPtr pSaver;
DrawablePtr pDraw;
CARD32 lastInput;
ScreenSaverScreenPrivatePtr pPriv;
REQUEST_SIZE_MATCH (xScreenSaverQueryInfoReq);
- pDraw = (DrawablePtr) LookupDrawable (stuff->drawable, client);
- if (!pDraw)
- return BadDrawable;
+ rc = dixLookupDrawable(&pDraw, stuff->drawable, client, 0,
+ DixUnknownAccess);
+ if (rc != Success)
+ return rc;
pSaver = &savedScreenInfo[pDraw->pScreen->myNum];
pPriv = GetScreenPrivate (pDraw->pScreen);
@@ -855,11 +853,13 @@ ProcScreenSaverSelectInput (client)
{
REQUEST(xScreenSaverSelectInputReq);
DrawablePtr pDraw;
+ int rc;
REQUEST_SIZE_MATCH (xScreenSaverSelectInputReq);
- pDraw = (DrawablePtr) LookupDrawable (stuff->drawable, client);
- if (!pDraw)
- return BadDrawable;
+ rc = dixLookupDrawable (&pDraw, stuff->drawable, client, 0,
+ DixUnknownAccess);
+ if (rc != Success)
+ return rc;
if (!setEventMask (pDraw->pScreen, client, stuff->eventMask))
return BadAlloc;
return Success;
@@ -874,9 +874,7 @@ ScreenSaverSetAttributes (ClientPtr client)
ScreenPtr pScreen;
ScreenSaverScreenPrivatePtr pPriv = 0;
ScreenSaverAttrPtr pAttr = 0;
- int ret;
- int len;
- int class, bw, depth;
+ int ret, len, class, bw, depth;
unsigned long visual;
int idepth, ivisual;
Bool fOK;
@@ -894,9 +892,10 @@ ScreenSaverSetAttributes (ClientPtr client)
ColormapPtr pCmap;
REQUEST_AT_LEAST_SIZE (xScreenSaverSetAttributesReq);
- pDraw = (DrawablePtr) LookupDrawable (stuff->drawable, client);
- if (!pDraw)
- return BadDrawable;
+ ret = dixLookupDrawable(&pDraw, stuff->drawable, client, 0,
+ DixUnknownAccess);
+ if (ret != Success)
+ return ret;
pScreen = pDraw->pScreen;
pParent = WindowTable[pScreen->myNum];
@@ -1249,11 +1248,13 @@ ScreenSaverUnsetAttributes (ClientPtr client)
REQUEST(xScreenSaverSetAttributesReq);
DrawablePtr pDraw;
ScreenSaverScreenPrivatePtr pPriv;
+ int rc;
REQUEST_SIZE_MATCH (xScreenSaverUnsetAttributesReq);
- pDraw = (DrawablePtr) LookupDrawable (stuff->drawable, client);
- if (!pDraw)
- return BadDrawable;
+ rc = dixLookupDrawable(&pDraw, stuff->drawable, client, 0,
+ DixUnknownAccess);
+ if (rc != Success)
+ return rc;
pPriv = GetScreenPrivate (pDraw->pScreen);
if (pPriv && pPriv->attr && pPriv->attr->client == client)
{
@@ -1282,7 +1283,7 @@ ProcScreenSaverSetAttributes (ClientPtr client)
REQUEST_AT_LEAST_SIZE (xScreenSaverSetAttributesReq);
if(!(draw = (PanoramiXRes *)SecurityLookupIDByClass(
- client, stuff->drawable, XRC_DRAWABLE, SecurityWriteAccess)))
+ client, stuff->drawable, XRC_DRAWABLE, DixWriteAccess)))
return BadDrawable;
len = stuff->length - (sizeof(xScreenSaverSetAttributesReq) >> 2);
@@ -1294,7 +1295,7 @@ ProcScreenSaverSetAttributes (ClientPtr client)
tmp = *((CARD32 *) &stuff[1] + pback_offset);
if ((tmp != None) && (tmp != ParentRelative)) {
if(!(backPix = (PanoramiXRes*) SecurityLookupIDByType(
- client, tmp, XRT_PIXMAP, SecurityReadAccess)))
+ client, tmp, XRT_PIXMAP, DixReadAccess)))
return BadPixmap;
}
}
@@ -1304,7 +1305,7 @@ ProcScreenSaverSetAttributes (ClientPtr client)
tmp = *((CARD32 *) &stuff[1] + pbord_offset);
if (tmp != CopyFromParent) {
if(!(bordPix = (PanoramiXRes*) SecurityLookupIDByType(
- client, tmp, XRT_PIXMAP, SecurityReadAccess)))
+ client, tmp, XRT_PIXMAP, DixReadAccess)))
return BadPixmap;
}
}
@@ -1314,7 +1315,7 @@ ProcScreenSaverSetAttributes (ClientPtr client)
tmp = *((CARD32 *) &stuff[1] + cmap_offset);
if ((tmp != CopyFromParent) && (tmp != None)) {
if(!(cmap = (PanoramiXRes*) SecurityLookupIDByType(
- client, tmp, XRT_COLORMAP, SecurityReadAccess)))
+ client, tmp, XRT_COLORMAP, DixReadAccess)))
return BadColor;
}
}
@@ -1354,7 +1355,7 @@ ProcScreenSaverUnsetAttributes (ClientPtr client)
int i;
if(!(draw = (PanoramiXRes *)SecurityLookupIDByClass(
- client, stuff->drawable, XRC_DRAWABLE, SecurityWriteAccess)))
+ client, stuff->drawable, XRC_DRAWABLE, DixWriteAccess)))
return BadDrawable;
for(i = PanoramiXNumScreens - 1; i > 0; i--) {
diff --git a/Xext/security.c b/Xext/security.c
index 48a45d0a2..4fbf6f283 100644
--- a/Xext/security.c
+++ b/Xext/security.c
@@ -1,5 +1,3 @@
-/* $XdotOrg: xserver/xorg/Xext/security.c,v 1.6 2006/03/28 01:20:59 ajax Exp $ */
-/* $Xorg: security.c,v 1.4 2001/02/09 02:04:32 xorgcvs Exp $ */
/*
Copyright 1996, 1998 The Open Group
@@ -25,7 +23,6 @@ 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/Xext/security.c,v 1.16tsi Exp $ */
#ifdef HAVE_DIX_CONFIG_H
#include <dix-config.h>
@@ -39,12 +36,13 @@ in this Software without prior written authorization from The Open Group.
#include "gcstruct.h"
#include "colormapst.h"
#include "propertyst.h"
-#define _SECURITY_SERVER
+#include "xacestr.h"
+#include "securitysrv.h"
#include <X11/extensions/securstr.h>
#include <assert.h>
#include <stdarg.h>
#ifdef XAPPGROUP
-#include <X11/extensions/Xagsrv.h>
+#include "appgroup.h"
#endif
#include <stdio.h> /* for file reading operations */
#include <X11/Xatom.h> /* for XA_STRING */
@@ -61,6 +59,23 @@ in this Software without prior written authorization from The Open Group.
static int SecurityErrorBase; /* first Security error number */
static int SecurityEventBase; /* first Security event number */
+static int securityClientPrivateIndex;
+static int securityExtnsnPrivateIndex;
+
+/* this is what we store as client security state */
+typedef struct {
+ unsigned int trustLevel;
+ XID authId;
+} SecurityClientStateRec;
+
+#define STATEVAL(extnsn) \
+ ((extnsn)->devPrivates[securityExtnsnPrivateIndex].val)
+#define STATEPTR(client) \
+ ((client)->devPrivates[securityClientPrivateIndex].ptr)
+#define TRUSTLEVEL(client) \
+ (((SecurityClientStateRec*)STATEPTR(client))->trustLevel)
+#define AUTHID(client) \
+ (((SecurityClientStateRec*)STATEPTR(client))->authId)
CallbackListPtr SecurityValidateGroupCallback = NULL; /* see security.h */
@@ -68,19 +83,8 @@ RESTYPE SecurityAuthorizationResType; /* resource type for authorizations */
static RESTYPE RTEventClient;
-/* Proc vectors for untrusted clients, swapped and unswapped versions.
- * These are the same as the normal proc vectors except that extensions
- * that haven't declared themselves secure will have ProcBadRequest plugged
- * in for their major opcode dispatcher. This prevents untrusted clients
- * from guessing extension major opcodes and using the extension even though
- * the extension can't be listed or queried.
- */
-int (*UntrustedProcVector[256])(
- ClientPtr /*client*/
-);
-int (*SwappedUntrustedProcVector[256])(
- ClientPtr /*client*/
-);
+#define CALLBACK(name) static void \
+name(CallbackListPtr *pcbl, pointer nulldata, pointer calldata)
/* SecurityAudit
*
@@ -94,7 +98,7 @@ int (*SwappedUntrustedProcVector[256])(
* Writes the message to the log file if security logging is on.
*/
-void
+static void
SecurityAudit(char *format, ...)
{
va_list args;
@@ -167,7 +171,7 @@ SecurityDeleteAuthorization(
for (i = 1; i<currentMaxClients; i++)
{
- if (clients[i] && (clients[i]->authId == pAuth->id))
+ if (clients[i] && (AUTHID(clients[i]) == pAuth->id))
CloseDownClient(clients[i]);
}
@@ -321,7 +325,7 @@ ProcSecurityQueryVersion(
/* paranoia: this "can't happen" because this extension is hidden
* from untrusted clients, but just in case...
*/
- if (client->trustLevel != XSecurityClientTrusted)
+ if (TRUSTLEVEL(client) != XSecurityClientTrusted)
return BadRequest;
REQUEST_SIZE_MATCH(xSecurityQueryVersionReq);
@@ -407,7 +411,7 @@ ProcSecurityGenerateAuthorization(
/* paranoia: this "can't happen" because this extension is hidden
* from untrusted clients, but just in case...
*/
- if (client->trustLevel != XSecurityClientTrusted)
+ if (TRUSTLEVEL(client) != XSecurityClientTrusted)
return BadRequest;
/* check request length */
@@ -590,13 +594,13 @@ ProcSecurityRevokeAuthorization(
/* paranoia: this "can't happen" because this extension is hidden
* from untrusted clients, but just in case...
*/
- if (client->trustLevel != XSecurityClientTrusted)
+ if (TRUSTLEVEL(client) != XSecurityClientTrusted)
return BadRequest;
REQUEST_SIZE_MATCH(xSecurityRevokeAuthorizationReq);
pAuth = (SecurityAuthorizationPtr)SecurityLookupIDByType(client,
- stuff->authId, SecurityAuthorizationResType, SecurityDestroyAccess);
+ stuff->authId, SecurityAuthorizationResType, DixDestroyAccess);
if (!pAuth)
return SecurityErrorBase + XSecurityBadAuthorization;
@@ -775,12 +779,12 @@ SecurityDetermineEventPropogationLimits(
* An audit message is generated if access is denied.
*/
-Bool
-SecurityCheckDeviceAccess(client, dev, fromRequest)
- ClientPtr client;
- DeviceIntPtr dev;
- Bool fromRequest;
+CALLBACK(SecurityCheckDeviceAccess)
{
+ XaceDeviceAccessRec *rec = (XaceDeviceAccessRec*)calldata;
+ ClientPtr client = rec->client;
+ DeviceIntPtr dev = rec->dev;
+ Bool fromRequest = rec->fromRequest;
WindowPtr pWin, pStopWin;
Bool untrusted_got_event;
Bool found_event_window;
@@ -788,12 +792,12 @@ SecurityCheckDeviceAccess(client, dev, fromRequest)
int reqtype = 0;
/* trusted clients always allowed to do anything */
- if (client->trustLevel == XSecurityClientTrusted)
- return TRUE;
+ if (TRUSTLEVEL(client) == XSecurityClientTrusted)
+ return;
/* device security other than keyboard is not implemented yet */
if (dev != inputInfo.keyboard)
- return TRUE;
+ return;
/* some untrusted client wants access */
@@ -808,7 +812,8 @@ SecurityCheckDeviceAccess(client, dev, fromRequest)
case X_SetModifierMapping:
SecurityAudit("client %d attempted request %d\n",
client->index, reqtype);
- return FALSE;
+ rec->rval = FALSE;
+ return;
default:
break;
}
@@ -820,7 +825,7 @@ SecurityCheckDeviceAccess(client, dev, fromRequest)
if (dev->grab)
{
untrusted_got_event =
- ((rClient(dev->grab))->trustLevel != XSecurityClientTrusted);
+ (TRUSTLEVEL(rClient(dev->grab)) != XSecurityClientTrusted);
}
else
{
@@ -835,7 +840,7 @@ SecurityCheckDeviceAccess(client, dev, fromRequest)
{
found_event_window = TRUE;
client = wClient(pWin);
- if (client->trustLevel != XSecurityClientTrusted)
+ if (TRUSTLEVEL(client) != XSecurityClientTrusted)
{
untrusted_got_event = TRUE;
}
@@ -848,7 +853,7 @@ SecurityCheckDeviceAccess(client, dev, fromRequest)
if (other->mask & eventmask)
{
client = rClient(other);
- if (client->trustLevel != XSecurityClientTrusted)
+ if (TRUSTLEVEL(client) != XSecurityClientTrusted)
{
untrusted_got_event = TRUE;
break;
@@ -876,8 +881,9 @@ SecurityCheckDeviceAccess(client, dev, fromRequest)
else
SecurityAudit("client %d attempted to access device %d (%s)\n",
client->index, dev->id, devname);
+ rec->rval = FALSE;
}
- return untrusted_got_event;
+ return;
} /* SecurityCheckDeviceAccess */
@@ -949,20 +955,22 @@ SecurityAuditResourceIDAccess(
* Disallowed resource accesses are audited.
*/
-static pointer
-SecurityCheckResourceIDAccess(
- ClientPtr client,
- XID id,
- RESTYPE rtype,
- Mask access_mode,
- pointer rval)
+CALLBACK(SecurityCheckResourceIDAccess)
{
- int cid = CLIENT_ID(id);
- int reqtype = ((xReq *)client->requestBuffer)->reqType;
-
- if (SecurityUnknownAccess == access_mode)
- return rval; /* for compatibility, we have to allow access */
-
+ XaceResourceAccessRec *rec = (XaceResourceAccessRec*)calldata;
+ ClientPtr client = rec->client;
+ XID id = rec->id;
+ RESTYPE rtype = rec->rtype;
+ Mask access_mode = rec->access_mode;
+ pointer rval = rec->res;
+ int cid, reqtype;
+
+ if (TRUSTLEVEL(client) == XSecurityClientTrusted ||
+ DixUnknownAccess == access_mode)
+ return; /* for compatibility, we have to allow access */
+
+ cid = CLIENT_ID(id);
+ reqtype = ((xReq *)client->requestBuffer)->reqType;
switch (reqtype)
{ /* these are always allowed */
case X_QueryTree:
@@ -974,7 +982,7 @@ SecurityCheckResourceIDAccess(
case X_DeleteProperty:
case X_RotateProperties:
case X_ListProperties:
- return rval;
+ return;
default:
break;
}
@@ -994,15 +1002,15 @@ SecurityCheckResourceIDAccess(
* competing alternative for grouping clients for security purposes is to
* use app groups. dpw
*/
- if (client->trustLevel == clients[cid]->trustLevel
+ if (TRUSTLEVEL(client) == TRUSTLEVEL(clients[cid])
#ifdef XAPPGROUP
|| (RT_COLORMAP == rtype &&
XagDefaultColormap (client) == (Colormap) id)
#endif
)
- return rval;
+ return;
else
- return SecurityAuditResourceIDAccess(client, id);
+ goto deny;
}
else /* server-owned resource - probably a default colormap or root window */
{
@@ -1038,7 +1046,7 @@ SecurityCheckResourceIDAccess(
)
)
{ /* not an ICCCM event */
- return SecurityAuditResourceIDAccess(client, id);
+ goto deny;
}
break;
} /* case X_SendEvent on root */
@@ -1056,28 +1064,31 @@ SecurityCheckResourceIDAccess(
~(PropertyChangeMask|StructureNotifyMask)) == 0)
break;
}
- return SecurityAuditResourceIDAccess(client, id);
+ goto deny;
} /* case X_ChangeWindowAttributes on root */
default:
{
/* others not allowed */
- return SecurityAuditResourceIDAccess(client, id);
+ goto deny;
}
}
} /* end server-owned window or drawable */
else if (SecurityAuthorizationResType == rtype)
{
SecurityAuthorizationPtr pAuth = (SecurityAuthorizationPtr)rval;
- if (pAuth->trustLevel != client->trustLevel)
- return SecurityAuditResourceIDAccess(client, id);
+ if (pAuth->trustLevel != TRUSTLEVEL(client))
+ goto deny;
}
else if (RT_COLORMAP != rtype)
{ /* don't allow anything else besides colormaps */
- return SecurityAuditResourceIDAccess(client, id);
+ goto deny;
}
}
- return rval;
+ return;
+ deny:
+ SecurityAuditResourceIDAccess(client, id);
+ rec->rval = FALSE; /* deny access */
} /* SecurityCheckResourceIDAccess */
@@ -1096,30 +1107,32 @@ SecurityCheckResourceIDAccess(
* If a new client is connecting, its authorization ID is copied to
* client->authID. If this is a generated authorization, its reference
* count is bumped, its timer is cancelled if it was running, and its
- * trustlevel is copied to client->trustLevel.
+ * trustlevel is copied to TRUSTLEVEL(client).
*
* If a client is disconnecting and the client was using a generated
* authorization, the authorization's reference count is decremented, and
* if it is now zero, the timer for this authorization is started.
*/
-static void
-SecurityClientStateCallback(
- CallbackListPtr *pcbl,
- pointer nulldata,
- pointer calldata)
+CALLBACK(SecurityClientStateCallback)
{
NewClientInfoRec *pci = (NewClientInfoRec *)calldata;
ClientPtr client = pci->client;
switch (client->clientState)
{
- case ClientStateRunning:
+ case ClientStateInitial:
+ TRUSTLEVEL(client) = XSecurityClientTrusted;
+ AUTHID(client) = None;
+ break;
+
+ case ClientStateRunning:
{
XID authId = AuthorizationIDOfClient(client);
SecurityAuthorizationPtr pAuth;
- client->authId = authId;
+ TRUSTLEVEL(client) = XSecurityClientTrusted;
+ AUTHID(client) = authId;
pAuth = (SecurityAuthorizationPtr)LookupIDByType(authId,
SecurityAuthorizationResType);
if (pAuth)
@@ -1129,23 +1142,20 @@ SecurityClientStateCallback(
{
if (pAuth->timer) TimerCancel(pAuth->timer);
}
- client->trustLevel = pAuth->trustLevel;
- if (client->trustLevel != XSecurityClientTrusted)
- {
- client->CheckAccess = SecurityCheckResourceIDAccess;
- client->requestVector = client->swapped ?
- SwappedUntrustedProcVector : UntrustedProcVector;
- }
+ TRUSTLEVEL(client) = pAuth->trustLevel;
}
break;
}
- case ClientStateGone:
- case ClientStateRetained: /* client disconnected */
+ case ClientStateGone:
+ case ClientStateRetained: /* client disconnected */
{
- XID authId = client->authId;
SecurityAuthorizationPtr pAuth;
- pAuth = (SecurityAuthorizationPtr)LookupIDByType(authId,
+ /* client may not have any state (bad authorization) */
+ if (!STATEPTR(client))
+ break;
+
+ pAuth = (SecurityAuthorizationPtr)LookupIDByType(AUTHID(client),
SecurityAuthorizationResType);
if (pAuth)
{ /* it is a generated authorization */
@@ -1157,128 +1167,72 @@ SecurityClientStateCallback(
}
break;
}
- default: break;
+ default: break;
}
} /* SecurityClientStateCallback */
-/* SecurityCensorImage
- *
- * Called after pScreen->GetImage to prevent pieces or trusted windows from
- * being returned in image data from an untrusted window.
- *
- * Arguments:
- * client is the client doing the GetImage.
- * pVisibleRegion is the visible region of the window.
- * widthBytesLine is the width in bytes of one horizontal line in pBuf.
- * pDraw is the source window.
- * x, y, w, h is the rectangle of image data from pDraw in pBuf.
- * format is the format of the image data in pBuf: ZPixmap or XYPixmap.
- * pBuf is the image data.
- *
- * Returns: nothing.
- *
- * Side Effects:
- * Any part of the rectangle (x, y, w, h) that is outside the visible
- * region of the window will be destroyed (overwritten) in pBuf.
- */
-void
-SecurityCensorImage(client, pVisibleRegion, widthBytesLine, pDraw, x, y, w, h,
- format, pBuf)
- ClientPtr client;
- RegionPtr pVisibleRegion;
- long widthBytesLine;
- DrawablePtr pDraw;
- int x, y, w, h;
- unsigned int format;
- char * pBuf;
+CALLBACK(SecurityCheckDrawableAccess)
{
- RegionRec imageRegion; /* region representing x,y,w,h */
- RegionRec censorRegion; /* region to obliterate */
- BoxRec imageBox;
- int nRects;
-
- imageBox.x1 = x;
- imageBox.y1 = y;
- imageBox.x2 = x + w;
- imageBox.y2 = y + h;
- REGION_INIT(pScreen, &imageRegion, &imageBox, 1);
- REGION_NULL(pScreen, &censorRegion);
-
- /* censorRegion = imageRegion - visibleRegion */
- REGION_SUBTRACT(pScreen, &censorRegion, &imageRegion, pVisibleRegion);
- nRects = REGION_NUM_RECTS(&censorRegion);
- if (nRects > 0)
- { /* we have something to censor */
- GCPtr pScratchGC = NULL;
- PixmapPtr pPix = NULL;
- xRectangle *pRects = NULL;
- Bool failed = FALSE;
- int depth = 1;
- int bitsPerPixel = 1;
- int i;
- BoxPtr pBox;
-
- /* convert region to list-of-rectangles for PolyFillRect */
-
- pRects = (xRectangle *)ALLOCATE_LOCAL(nRects * sizeof(xRectangle *));
- if (!pRects)
- {
- failed = TRUE;
- goto failSafe;
- }
- for (pBox = REGION_RECTS(&censorRegion), i = 0;
- i < nRects;
- i++, pBox++)
- {
- pRects[i].x = pBox->x1;
- pRects[i].y = pBox->y1 - imageBox.y1;
- pRects[i].width = pBox->x2 - pBox->x1;
- pRects[i].height = pBox->y2 - pBox->y1;
- }
+ XaceDrawableAccessRec *rec = (XaceDrawableAccessRec*)calldata;
- /* use pBuf as a fake pixmap */
+ if (TRUSTLEVEL(rec->client) != XSecurityClientTrusted)
+ rec->rval = FALSE;
+}
- if (format == ZPixmap)
- {
- depth = pDraw->depth;
- bitsPerPixel = pDraw->bitsPerPixel;
- }
+CALLBACK(SecurityCheckMapAccess)
+{
+ XaceMapAccessRec *rec = (XaceMapAccessRec*)calldata;
+ WindowPtr pWin = rec->pWin;
- pPix = GetScratchPixmapHeader(pDraw->pScreen, w, h,
- depth, bitsPerPixel,
- widthBytesLine, (pointer)pBuf);
- if (!pPix)
- {
- failed = TRUE;
- goto failSafe;
- }
+ if (STATEPTR(rec->client) &&
+ (TRUSTLEVEL(rec->client) != XSecurityClientTrusted) &&
+ (pWin->drawable.class == InputOnly) &&
+ (TRUSTLEVEL(wClient(pWin->parent)) == XSecurityClientTrusted))
- pScratchGC = GetScratchGC(depth, pPix->drawable.pScreen);
- if (!pScratchGC)
- {
- failed = TRUE;
- goto failSafe;
- }
+ rec->rval = FALSE;
+}
- ValidateGC(&pPix->drawable, pScratchGC);
- (* pScratchGC->ops->PolyFillRect)(&pPix->drawable,
- pScratchGC, nRects, pRects);
+CALLBACK(SecurityCheckBackgrndAccess)
+{
+ XaceMapAccessRec *rec = (XaceMapAccessRec*)calldata;
- failSafe:
- if (failed)
- {
- /* Censoring was not completed above. To be safe, wipe out
- * all the image data so that nothing trusted gets out.
- */
- bzero(pBuf, (int)(widthBytesLine * h));
- }
- if (pRects) DEALLOCATE_LOCAL(pRects);
- if (pScratchGC) FreeScratchGC(pScratchGC);
- if (pPix) FreeScratchPixmapHeader(pPix);
+ if (TRUSTLEVEL(rec->client) != XSecurityClientTrusted)
+ rec->rval = FALSE;
+}
+
+CALLBACK(SecurityCheckExtAccess)
+{
+ XaceExtAccessRec *rec = (XaceExtAccessRec*)calldata;
+
+ if ((TRUSTLEVEL(rec->client) != XSecurityClientTrusted) &&
+ !STATEVAL(rec->ext))
+
+ rec->rval = FALSE;
+}
+
+CALLBACK(SecurityCheckHostlistAccess)
+{
+ XaceHostlistAccessRec *rec = (XaceHostlistAccessRec*)calldata;
+
+ if (TRUSTLEVEL(rec->client) != XSecurityClientTrusted)
+ {
+ rec->rval = FALSE;
+ if (rec->access_mode == DixWriteAccess)
+ SecurityAudit("client %d attempted to change host access\n",
+ rec->client->index);
+ else
+ SecurityAudit("client %d attempted to list hosts\n",
+ rec->client->index);
}
- REGION_UNINIT(pScreen, &imageRegion);
- REGION_UNINIT(pScreen, &censorRegion);
-} /* SecurityCensorImage */
+}
+
+CALLBACK(SecurityDeclareExtSecure)
+{
+ XaceDeclareExtSecureRec *rec = (XaceDeclareExtSecureRec*)calldata;
+
+ /* security state for extensions is simply a boolean trust value */
+ STATEVAL(rec->ext) = rec->secure;
+}
/**********************************************************************/
@@ -1297,7 +1251,7 @@ typedef struct _PropertyAccessRec {
} PropertyAccessRec, *PropertyAccessPtr;
static PropertyAccessPtr PropertyAccessList = NULL;
-static char SecurityDefaultAction = SecurityErrorOperation;
+static char SecurityDefaultAction = XaceErrorOperation;
static char *SecurityPolicyFile = DEFAULTPOLICYFILE;
static ATOM SecurityMaxPropertyName = 0;
@@ -1456,9 +1410,9 @@ SecurityParsePropertyAccessRule(
{
switch (c)
{
- case 'i': action = SecurityIgnoreOperation; break;
- case 'a': action = SecurityAllowOperation; break;
- case 'e': action = SecurityErrorOperation; break;
+ case 'i': action = XaceIgnoreOperation; break;
+ case 'a': action = XaceAllowOperation; break;
+ case 'e': action = XaceErrorOperation; break;
case 'r': readAction = action; break;
case 'w': writeAction = action; break;
@@ -1737,21 +1691,21 @@ SecurityMatchString(
#endif
-char
-SecurityCheckPropertyAccess(client, pWin, propertyName, access_mode)
- ClientPtr client;
- WindowPtr pWin;
- ATOM propertyName;
- Mask access_mode;
-{
+CALLBACK(SecurityCheckPropertyAccess)
+{
+ XacePropertyAccessRec *rec = (XacePropertyAccessRec*)calldata;
+ ClientPtr client = rec->client;
+ WindowPtr pWin = rec->pWin;
+ ATOM propertyName = rec->propertyName;
+ Mask access_mode = rec->access_mode;
PropertyAccessPtr pacl;
char action = SecurityDefaultAction;
/* if client trusted or window untrusted, allow operation */
- if ( (client->trustLevel == XSecurityClientTrusted) ||
- (wClient(pWin)->trustLevel != XSecurityClientTrusted) )
- return SecurityAllowOperation;
+ if ( (TRUSTLEVEL(client) == XSecurityClientTrusted) ||
+ (TRUSTLEVEL(wClient(pWin)) != XSecurityClientTrusted) )
+ return;
#ifdef PROPDEBUG
/* For testing, it's more convenient if the property rules file gets
@@ -1843,28 +1797,30 @@ SecurityCheckPropertyAccess(client, pWin, propertyName, access_mode)
* If pacl doesn't apply, something above should have
* executed a continue, which will skip the follwing code.
*/
- action = SecurityAllowOperation;
- if (access_mode & SecurityReadAccess)
+ action = XaceAllowOperation;
+ if (access_mode & DixReadAccess)
action = max(action, pacl->readAction);
- if (access_mode & SecurityWriteAccess)
+ if (access_mode & DixWriteAccess)
action = max(action, pacl->writeAction);
- if (access_mode & SecurityDestroyAccess)
+ if (access_mode & DixDestroyAccess)
action = max(action, pacl->destroyAction);
break;
} /* end for each pacl */
} /* end if propertyName <= SecurityMaxPropertyName */
- if (SecurityAllowOperation != action)
+ if (XaceAllowOperation != action)
{ /* audit the access violation */
int cid = CLIENT_ID(pWin->drawable.id);
int reqtype = ((xReq *)client->requestBuffer)->reqType;
- char *actionstr = (SecurityIgnoreOperation == action) ?
+ char *actionstr = (XaceIgnoreOperation == action) ?
"ignored" : "error";
SecurityAudit("client %d attempted request %d with window 0x%x property %s (atom 0x%x) of client %d, %s\n",
client->index, reqtype, pWin->drawable.id,
NameForAtom(propertyName), propertyName, cid, actionstr);
}
- return action;
+ /* return codes increase with strictness */
+ if (action > rec->rval)
+ rec->rval = action;
} /* SecurityCheckPropertyAccess */
@@ -1904,6 +1860,46 @@ XSecurityOptions(argc, argv, i)
} /* XSecurityOptions */
+/* SecurityExtensionSetup
+ *
+ * Arguments: none.
+ *
+ * Returns: nothing.
+ *
+ * Side Effects:
+ * Sets up the Security extension if possible.
+ * This function contains things that need to be done
+ * before any other extension init functions get called.
+ */
+
+void
+SecurityExtensionSetup(INITARGS)
+{
+ /* Allocate the client private index */
+ securityClientPrivateIndex = AllocateClientPrivateIndex();
+ if (!AllocateClientPrivate(securityClientPrivateIndex,
+ sizeof (SecurityClientStateRec)))
+ FatalError("SecurityExtensionSetup: Can't allocate client private.\n");
+
+ /* Allocate the extension private index */
+ securityExtnsnPrivateIndex = AllocateExtensionPrivateIndex();
+ if (!AllocateExtensionPrivate(securityExtnsnPrivateIndex, 0))
+ FatalError("SecurityExtensionSetup: Can't allocate extnsn private.\n");
+
+ /* register callbacks */
+#define XaceRC XaceRegisterCallback
+ XaceRC(XACE_RESOURCE_ACCESS, SecurityCheckResourceIDAccess, NULL);
+ XaceRC(XACE_DEVICE_ACCESS, SecurityCheckDeviceAccess, NULL);
+ XaceRC(XACE_PROPERTY_ACCESS, SecurityCheckPropertyAccess, NULL);
+ XaceRC(XACE_DRAWABLE_ACCESS, SecurityCheckDrawableAccess, NULL);
+ XaceRC(XACE_MAP_ACCESS, SecurityCheckMapAccess, NULL);
+ XaceRC(XACE_BACKGRND_ACCESS, SecurityCheckBackgrndAccess, NULL);
+ XaceRC(XACE_EXT_DISPATCH, SecurityCheckExtAccess, NULL);
+ XaceRC(XACE_EXT_ACCESS, SecurityCheckExtAccess, NULL);
+ XaceRC(XACE_HOSTLIST_ACCESS, SecurityCheckHostlistAccess, NULL);
+ XaceRC(XACE_DECLARE_EXT_SECURE, SecurityDeclareExtSecure, NULL);
+} /* SecurityExtensionSetup */
+
/* SecurityExtensionInit
*
@@ -1919,7 +1915,6 @@ void
SecurityExtensionInit(INITARGS)
{
ExtensionEntry *extEntry;
- int i;
SecurityAuthorizationResType =
CreateNewResourceType(SecurityDeleteAuthorization);
@@ -1946,25 +1941,6 @@ SecurityExtensionInit(INITARGS)
EventSwapVector[SecurityEventBase + XSecurityAuthorizationRevoked] =
(EventSwapPtr)SwapSecurityAuthorizationRevokedEvent;
- /* initialize untrusted proc vectors */
-
- for (i = 0; i < 128; i++)
- {
- UntrustedProcVector[i] = ProcVector[i];
- SwappedUntrustedProcVector[i] = SwappedProcVector[i];
- }
-
- /* make sure insecure extensions are not allowed */
-
- for (i = 128; i < 256; i++)
- {
- if (!UntrustedProcVector[i])
- {
- UntrustedProcVector[i] = ProcBadRequest;
- SwappedUntrustedProcVector[i] = ProcBadRequest;
- }
- }
-
SecurityLoadPropertyAccessList();
} /* SecurityExtensionInit */
diff --git a/Xext/securitysrv.h b/Xext/securitysrv.h
new file mode 100644
index 000000000..7c6f432fe
--- /dev/null
+++ b/Xext/securitysrv.h
@@ -0,0 +1,98 @@
+/*
+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.
+*/
+
+/* Xserver internals for Security extension - moved here from
+ _SECURITY_SERVER section of <X11/extensions/security.h> */
+
+#ifndef _SECURITY_SRV_H
+#define _SECURITY_SRV_H
+
+/* Allow client side portions of <X11/extensions/security.h> to compile */
+#ifndef Status
+# define Status int
+# define NEED_UNDEF_Status
+#endif
+#ifndef Display
+# define Display void
+# define NEED_UNDEF_Display
+#endif
+
+#include <X11/extensions/security.h>
+
+#ifdef NEED_UNDEF_Status
+# undef Status
+# undef NEED_UNDEF_Status
+#endif
+#ifdef NEED_UNDEF_Display
+# undef Display
+# undef NEED_UNDEF_Display
+#endif
+
+
+#include "input.h" /* for DeviceIntPtr */
+#include "property.h" /* for PropertyPtr */
+#include "pixmap.h" /* for DrawablePtr */
+#include "resource.h" /* for RESTYPE */
+
+/* resource type to pass in LookupIDByType for authorizations */
+extern RESTYPE SecurityAuthorizationResType;
+
+/* this is what we store for an authorization */
+typedef struct {
+ XID id; /* resource ID */
+ CARD32 timeout; /* how long to live in seconds after refcnt == 0 */
+ unsigned int trustLevel; /* trusted/untrusted */
+ XID group; /* see embedding extension */
+ unsigned int refcnt; /* how many clients connected with this auth */
+ unsigned int secondsRemaining; /* overflow time amount for >49 days */
+ OsTimerPtr timer; /* timer for this auth */
+ struct _OtherClients *eventClients; /* clients wanting events */
+} SecurityAuthorizationRec, *SecurityAuthorizationPtr;
+
+/* The following callback is called when a GenerateAuthorization request
+ * is processed to sanity check the group argument. The call data will
+ * be a pointer to a SecurityValidateGroupInfoRec (below).
+ * Functions registered on this callback are expected to examine the
+ * group and set the valid field to TRUE if they recognize the group as a
+ * legitimate group. If they don't recognize it, they should not change the
+ * valid field.
+ */
+extern CallbackListPtr SecurityValidateGroupCallback;
+typedef struct {
+ XID group; /* the group that was sent in GenerateAuthorization */
+ Bool valid; /* did anyone recognize it? if so, set to TRUE */
+} SecurityValidateGroupInfoRec;
+
+extern int XSecurityOptions(int argc, char **argv, int i);
+
+/* Give this value or higher to the -audit option to get security messages */
+#define SECURITY_AUDIT_LEVEL 4
+
+#define SECURITY_POLICY_FILE_VERSION "version-1"
+
+extern char **SecurityGetSitePolicyStrings(int *n);
+
+#endif /* _SECURITY_SRV_H */
diff --git a/Xext/shape.c b/Xext/shape.c
index c5bb4e38c..928eeee31 100644
--- a/Xext/shape.c
+++ b/Xext/shape.c
@@ -1,5 +1,3 @@
-/* $XdotOrg: xserver/xorg/Xext/shape.c,v 1.9 2005/07/03 08:53:36 daniels Exp $ */
-/* $XFree86: xc/programs/Xserver/Xext/shape.c,v 3.18 2003/10/28 23:08:43 tsi Exp $ */
/************************************************************
Copyright 1989, 1998 The Open Group
@@ -26,7 +24,6 @@ in this Software without prior written authorization from The Open Group.
********************************************************/
-/* $Xorg: shape.c,v 1.4 2001/02/09 02:04:32 xorgcvs Exp $ */
#define NEED_REPLIES
#define NEED_EVENTS
#ifdef HAVE_DIX_CONFIG_H
@@ -146,7 +143,7 @@ typedef struct _ShapeEvent {
****************/
void
-ShapeExtensionInit(INITARGS)
+ShapeExtensionInit(void)
{
ExtensionEntry *extEntry;
@@ -319,16 +316,16 @@ ProcShapeRectangles (client)
ScreenPtr pScreen;
REQUEST(xShapeRectanglesReq);
xRectangle *prects;
- int nrects, ctype;
+ int nrects, ctype, rc;
RegionPtr srcRgn;
RegionPtr *destRgn;
CreateDftPtr createDefault;
REQUEST_AT_LEAST_SIZE (xShapeRectanglesReq);
UpdateCurrentTime();
- pWin = LookupWindow (stuff->dest, client);
- if (!pWin)
- return BadWindow;
+ rc = dixLookupWindow(&pWin, stuff->dest, client, DixUnknownAccess);
+ if (rc != Success)
+ return rc;
switch (stuff->destKind) {
case ShapeBounding:
createDefault = CreateBoundingShape;
@@ -393,7 +390,7 @@ ProcPanoramiXShapeRectangles(
REQUEST_AT_LEAST_SIZE (xShapeRectanglesReq);
if(!(win = (PanoramiXRes *)SecurityLookupIDByType(
- client, stuff->dest, XRT_WINDOW, SecurityWriteAccess)))
+ client, stuff->dest, XRT_WINDOW, DixWriteAccess)))
return BadWindow;
FOR_NSCREENS(j) {
@@ -422,12 +419,13 @@ ProcShapeMask (client)
RegionPtr *destRgn;
PixmapPtr pPixmap;
CreateDftPtr createDefault;
+ int rc;
REQUEST_SIZE_MATCH (xShapeMaskReq);
UpdateCurrentTime();
- pWin = SecurityLookupWindow (stuff->dest, client, SecurityWriteAccess);
- if (!pWin)
- return BadWindow;
+ rc = dixLookupWindow(&pWin, stuff->dest, client, DixWriteAccess);
+ if (rc != Success)
+ return rc;
switch (stuff->destKind) {
case ShapeBounding:
createDefault = CreateBoundingShape;
@@ -447,7 +445,7 @@ ProcShapeMask (client)
srcRgn = 0;
else {
pPixmap = (PixmapPtr) SecurityLookupIDByType(client, stuff->src,
- RT_PIXMAP, SecurityReadAccess);
+ RT_PIXMAP, DixReadAccess);
if (!pPixmap)
return BadPixmap;
if (pPixmap->drawable.pScreen != pScreen ||
@@ -491,12 +489,12 @@ ProcPanoramiXShapeMask(
REQUEST_SIZE_MATCH (xShapeMaskReq);
if(!(win = (PanoramiXRes *)SecurityLookupIDByType(
- client, stuff->dest, XRT_WINDOW, SecurityWriteAccess)))
+ client, stuff->dest, XRT_WINDOW, DixWriteAccess)))
return BadWindow;
if(stuff->src != None) {
if(!(pmap = (PanoramiXRes *)SecurityLookupIDByType(
- client, stuff->src, XRT_PIXMAP, SecurityReadAccess)))
+ client, stuff->src, XRT_PIXMAP, DixReadAccess)))
return BadPixmap;
} else
pmap = NULL;
@@ -529,12 +527,13 @@ ProcShapeCombine (client)
CreateDftPtr createDefault;
CreateDftPtr createSrc;
RegionPtr tmp;
+ int rc;
REQUEST_SIZE_MATCH (xShapeCombineReq);
UpdateCurrentTime();
- pDestWin = LookupWindow (stuff->dest, client);
- if (!pDestWin)
- return BadWindow;
+ rc = dixLookupWindow(&pDestWin, stuff->dest, client, DixUnknownAccess);
+ if (rc != Success)
+ return rc;
if (!pDestWin->optional)
MakeWindowOptional (pDestWin);
switch (stuff->destKind) {
@@ -553,9 +552,9 @@ ProcShapeCombine (client)
}
pScreen = pDestWin->drawable.pScreen;
- pSrcWin = LookupWindow (stuff->src, client);
- if (!pSrcWin)
- return BadWindow;
+ rc = dixLookupWindow(&pSrcWin, stuff->src, client, DixUnknownAccess);
+ if (rc != Success)
+ return rc;
switch (stuff->srcKind) {
case ShapeBounding:
srcRgn = wBoundingShape (pSrcWin);
@@ -619,11 +618,11 @@ ProcPanoramiXShapeCombine(
REQUEST_AT_LEAST_SIZE (xShapeCombineReq);
if(!(win = (PanoramiXRes *)SecurityLookupIDByType(
- client, stuff->dest, XRT_WINDOW, SecurityWriteAccess)))
+ client, stuff->dest, XRT_WINDOW, DixWriteAccess)))
return BadWindow;
if(!(win2 = (PanoramiXRes *)SecurityLookupIDByType(
- client, stuff->src, XRT_WINDOW, SecurityReadAccess)))
+ client, stuff->src, XRT_WINDOW, DixReadAccess)))
return BadWindow;
FOR_NSCREENS(j) {
@@ -648,12 +647,13 @@ ProcShapeOffset (client)
ScreenPtr pScreen;
REQUEST(xShapeOffsetReq);
RegionPtr srcRgn;
+ int rc;
REQUEST_SIZE_MATCH (xShapeOffsetReq);
UpdateCurrentTime();
- pWin = LookupWindow (stuff->dest, client);
- if (!pWin)
- return BadWindow;
+ rc = dixLookupWindow(&pWin, stuff->dest, client, DixUnknownAccess);
+ if (rc != Success)
+ return rc;
switch (stuff->destKind) {
case ShapeBounding:
srcRgn = wBoundingShape (pWin);
@@ -691,7 +691,7 @@ ProcPanoramiXShapeOffset(
REQUEST_AT_LEAST_SIZE (xShapeOffsetReq);
if(!(win = (PanoramiXRes *)SecurityLookupIDByType(
- client, stuff->dest, XRT_WINDOW, SecurityWriteAccess)))
+ client, stuff->dest, XRT_WINDOW, DixWriteAccess)))
return BadWindow;
FOR_NSCREENS(j) {
@@ -712,13 +712,13 @@ ProcShapeQueryExtents (client)
WindowPtr pWin;
xShapeQueryExtentsReply rep;
BoxRec extents, *pExtents;
- register int n;
+ register int n, rc;
RegionPtr region;
REQUEST_SIZE_MATCH (xShapeQueryExtentsReq);
- pWin = LookupWindow (stuff->window, client);
- if (!pWin)
- return BadWindow;
+ rc = dixLookupWindow(&pWin, stuff->window, client, DixUnknownAccess);
+ if (rc != Success)
+ return rc;
rep.type = X_Reply;
rep.length = 0;
rep.sequenceNumber = client->sequence;
@@ -823,13 +823,14 @@ ProcShapeSelectInput (client)
WindowPtr pWin;
ShapeEventPtr pShapeEvent, pNewShapeEvent, *pHead;
XID clientResource;
+ int rc;
REQUEST_SIZE_MATCH (xShapeSelectInputReq);
- pWin = SecurityLookupWindow (stuff->window, client, SecurityWriteAccess);
- if (!pWin)
- return BadWindow;
+ rc = dixLookupWindow(&pWin, stuff->window, client, DixWriteAccess);
+ if (rc != Success)
+ return rc;
pHead = (ShapeEventPtr *)SecurityLookupIDByType(client,
- pWin->drawable.id, EventType, SecurityWriteAccess);
+ pWin->drawable.id, EventType, DixWriteAccess);
switch (stuff->enable) {
case xTrue:
if (pHead) {
@@ -993,16 +994,16 @@ ProcShapeInputSelected (client)
REQUEST(xShapeInputSelectedReq);
WindowPtr pWin;
ShapeEventPtr pShapeEvent, *pHead;
- int enabled;
+ int enabled, rc;
xShapeInputSelectedReply rep;
register int n;
REQUEST_SIZE_MATCH (xShapeInputSelectedReq);
- pWin = LookupWindow (stuff->window, client);
- if (!pWin)
- return BadWindow;
+ rc = dixLookupWindow(&pWin, stuff->window, client, DixUnknownAccess);
+ if (rc != Success)
+ return rc;
pHead = (ShapeEventPtr *) SecurityLookupIDByType(client,
- pWin->drawable.id, EventType, SecurityReadAccess);
+ pWin->drawable.id, EventType, DixReadAccess);
enabled = xFalse;
if (pHead) {
for (pShapeEvent = *pHead;
@@ -1035,14 +1036,14 @@ ProcShapeGetRectangles (client)
WindowPtr pWin;
xShapeGetRectanglesReply rep;
xRectangle *rects;
- int nrects, i;
+ int nrects, i, rc;
RegionPtr region;
register int n;
REQUEST_SIZE_MATCH(xShapeGetRectanglesReq);
- pWin = LookupWindow (stuff->window, client);
- if (!pWin)
- return BadWindow;
+ rc = dixLookupWindow(&pWin, stuff->window, client, DixUnknownAccess);
+ if (rc != Success)
+ return rc;
switch (stuff->kind) {
case ShapeBounding:
region = wBoundingShape(pWin);
diff --git a/Xext/shm.c b/Xext/shm.c
index e56d45e8e..7cfaa6808 100644
--- a/Xext/shm.c
+++ b/Xext/shm.c
@@ -1,4 +1,3 @@
-/* $XFree86: xc/programs/Xserver/Xext/shm.c,v 3.41 2003/12/17 23:28:56 alanh Exp $ */
/************************************************************
Copyright 1989, 1998 The Open Group
@@ -27,7 +26,6 @@ in this Software without prior written authorization from The Open Group.
/* THIS IS NOT AN X CONSORTIUM STANDARD OR AN X PROJECT TEAM SPECIFICATION */
-/* $Xorg: shm.c,v 1.4 2001/02/09 02:04:33 xorgcvs Exp $ */
#define SHM
@@ -573,11 +571,11 @@ ProcPanoramiXShmPutImage(register ClientPtr client)
REQUEST_SIZE_MATCH(xShmPutImageReq);
if(!(draw = (PanoramiXRes *)SecurityLookupIDByClass(
- client, stuff->drawable, XRC_DRAWABLE, SecurityWriteAccess)))
+ client, stuff->drawable, XRC_DRAWABLE, DixWriteAccess)))
return BadDrawable;
if(!(gc = (PanoramiXRes *)SecurityLookupIDByType(
- client, stuff->gc, XRT_GC, SecurityReadAccess)))
+ client, stuff->gc, XRT_GC, DixReadAccess)))
return BadGC;
isRoot = (draw->type == XRT_WINDOW) && draw->u.win.root;
@@ -608,7 +606,7 @@ ProcPanoramiXShmGetImage(ClientPtr client)
DrawablePtr pDraw;
xShmGetImageReply xgi;
ShmDescPtr shmdesc;
- int i, x, y, w, h, format;
+ int i, x, y, w, h, format, rc;
Mask plane = 0, planemask;
long lenPer = 0, length, widthBytesLine;
Bool isRoot;
@@ -623,13 +621,16 @@ ProcPanoramiXShmGetImage(ClientPtr client)
}
if(!(draw = (PanoramiXRes *)SecurityLookupIDByClass(
- client, stuff->drawable, XRC_DRAWABLE, SecurityWriteAccess)))
+ client, stuff->drawable, XRC_DRAWABLE, DixWriteAccess)))
return BadDrawable;
if (draw->type == XRT_PIXMAP)
return ProcShmGetImage(client);
- VERIFY_DRAWABLE(pDraw, stuff->drawable, client);
+ rc = dixLookupDrawable(&pDraw, stuff->drawable, client, 0,
+ DixUnknownAccess);
+ if (rc != Success)
+ return rc;
VERIFY_SHMPTR(stuff->shmseg, stuff->offset, TRUE, shmdesc, client);
@@ -662,8 +663,12 @@ ProcPanoramiXShmGetImage(ClientPtr client)
}
drawables[0] = pDraw;
- for(i = 1; i < PanoramiXNumScreens; i++)
- VERIFY_DRAWABLE(drawables[i], draw->info[i].id, client);
+ for(i = 1; i < PanoramiXNumScreens; i++) {
+ rc = dixLookupDrawable(drawables+i, draw->info[i].id, client, 0,
+ DixUnknownAccess);
+ if (rc != Success)
+ return rc;
+ }
xgi.visual = wVisual(((WindowPtr)pDraw));
xgi.type = X_Reply;
@@ -722,7 +727,7 @@ ProcPanoramiXShmCreatePixmap(
PixmapPtr pMap = NULL;
DrawablePtr pDraw;
DepthPtr pDepth;
- int i, j, result;
+ int i, j, result, rc;
ShmDescPtr shmdesc;
REQUEST(xShmCreatePixmapReq);
PanoramiXRes *newPix;
@@ -732,7 +737,11 @@ ProcPanoramiXShmCreatePixmap(
if (!sharedPixmaps)
return BadImplementation;
LEGAL_NEW_RESOURCE(stuff->pid, client);
- VERIFY_GEOMETRABLE(pDraw, stuff->drawable, client);
+ rc = dixLookupDrawable(&pDraw, stuff->drawable, client, M_ANY,
+ DixUnknownAccess);
+ if (rc != Success)
+ return rc;
+
VERIFY_SHMPTR(stuff->shmseg, stuff->offset, TRUE, shmdesc, client);
if (!stuff->width || !stuff->height)
{
@@ -807,8 +816,8 @@ static int
ProcShmPutImage(client)
register ClientPtr client;
{
- register GCPtr pGC;
- register DrawablePtr pDraw;
+ GCPtr pGC;
+ DrawablePtr pDraw;
long length;
ShmDescPtr shmdesc;
REQUEST(xShmPutImageReq);
@@ -911,12 +920,12 @@ static int
ProcShmGetImage(client)
register ClientPtr client;
{
- register DrawablePtr pDraw;
+ DrawablePtr pDraw;
long lenPer = 0, length;
Mask plane = 0;
xShmGetImageReply xgi;
ShmDescPtr shmdesc;
- int n;
+ int n, rc;
REQUEST(xShmGetImageReq);
@@ -926,7 +935,10 @@ ProcShmGetImage(client)
client->errorValue = stuff->format;
return(BadValue);
}
- VERIFY_DRAWABLE(pDraw, stuff->drawable, client);
+ rc = dixLookupDrawable(&pDraw, stuff->drawable, client, 0,
+ DixUnknownAccess);
+ if (rc != Success)
+ return rc;
VERIFY_SHMPTR(stuff->shmseg, stuff->offset, TRUE, shmdesc, client);
if (pDraw->type == DRAWABLE_WINDOW)
{
@@ -1044,9 +1056,9 @@ ProcShmCreatePixmap(client)
register ClientPtr client;
{
PixmapPtr pMap;
- register DrawablePtr pDraw;
+ DrawablePtr pDraw;
DepthPtr pDepth;
- register int i;
+ register int i, rc;
ShmDescPtr shmdesc;
REQUEST(xShmCreatePixmapReq);
@@ -1055,7 +1067,11 @@ ProcShmCreatePixmap(client)
if (!sharedPixmaps)
return BadImplementation;
LEGAL_NEW_RESOURCE(stuff->pid, client);
- VERIFY_GEOMETRABLE(pDraw, stuff->drawable, client);
+ rc = dixLookupDrawable(&pDraw, stuff->drawable, client, M_ANY,
+ DixUnknownAccess);
+ if (rc != Success)
+ return rc;
+
VERIFY_SHMPTR(stuff->shmseg, stuff->offset, TRUE, shmdesc, client);
if (!stuff->width || !stuff->height)
{
diff --git a/Xext/sleepuntil.c b/Xext/sleepuntil.c
index 30be8c001..f8cedbe6e 100644
--- a/Xext/sleepuntil.c
+++ b/Xext/sleepuntil.c
@@ -1,5 +1,4 @@
/*
- * $Xorg: sleepuntil.c,v 1.4 2001/02/09 02:04:33 xorgcvs Exp $
*
Copyright 1992, 1998 The Open Group
@@ -25,7 +24,6 @@ in this Software without prior written authorization from The Open Group.
*
* Author: Keith Packard, MIT X Consortium
*/
-/* $XFree86: xc/programs/Xserver/Xext/sleepuntil.c,v 3.6 2003/07/16 01:38:30 dawes Exp $ */
/* dixsleep.c - implement millisecond timeouts for X clients */
diff --git a/Xext/sleepuntil.h b/Xext/sleepuntil.h
index 0b99148a4..a3618d99c 100644
--- a/Xext/sleepuntil.h
+++ b/Xext/sleepuntil.h
@@ -1,4 +1,3 @@
-/* $XFree86: xc/programs/Xserver/Xext/sleepuntil.h,v 1.2 2003/11/17 22:20:27 dawes Exp $ */
/*
* Copyright (C) 2001 The XFree86 Project, Inc. All Rights Reserved.
*
diff --git a/Xext/sync.c b/Xext/sync.c
index e1383cea3..531b48cc1 100644
--- a/Xext/sync.c
+++ b/Xext/sync.c
@@ -1,4 +1,3 @@
-/* $Xorg: sync.c,v 1.4 2001/02/09 02:04:33 xorgcvs Exp $ */
/*
Copyright 1991, 1993, 1998 The Open Group
@@ -50,7 +49,6 @@ OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
PERFORMANCE OF THIS SOFTWARE.
*/
-/* $XFree86: xc/programs/Xserver/Xext/sync.c,v 3.13 2003/09/02 18:19:01 tsi Exp $ */
#define NEED_REPLIES
#define NEED_EVENTS
@@ -438,7 +436,7 @@ SyncInitTrigger(client, pTrigger, counter, changes)
if (counter == None)
pCounter = NULL;
else if (!(pCounter = (SyncCounter *)SecurityLookupIDByType(
- client, counter, RTCounter, SecurityReadAccess)))
+ client, counter, RTCounter, DixReadAccess)))
{
client->errorValue = counter;
return SyncErrorBase + XSyncBadCounter;
@@ -1454,15 +1452,17 @@ ProcSyncSetPriority(client)
{
REQUEST(xSyncSetPriorityReq);
ClientPtr priorityclient;
+ int rc;
REQUEST_SIZE_MATCH(xSyncSetPriorityReq);
if (stuff->id == None)
priorityclient = client;
- else if (!(priorityclient = LookupClient(stuff->id, client)))
- {
- client->errorValue = stuff->id;
- return BadMatch;
+ else {
+ rc = dixLookupClient(&priorityclient, stuff->id, client,
+ DixUnknownAccess);
+ if (rc != Success)
+ return rc;
}
if (priorityclient->priority != stuff->priority)
@@ -1489,15 +1489,17 @@ ProcSyncGetPriority(client)
REQUEST(xSyncGetPriorityReq);
xSyncGetPriorityReply rep;
ClientPtr priorityclient;
+ int rc;
REQUEST_SIZE_MATCH(xSyncGetPriorityReq);
if (stuff->id == None)
priorityclient = client;
- else if (!(priorityclient = LookupClient(stuff->id, client)))
- {
- client->errorValue = stuff->id;
- return BadMatch;
+ else {
+ rc = dixLookupClient(&priorityclient, stuff->id, client,
+ DixUnknownAccess);
+ if (rc != Success)
+ return rc;
}
rep.type = X_Reply;
@@ -1552,7 +1554,7 @@ ProcSyncSetCounter(client)
REQUEST_SIZE_MATCH(xSyncSetCounterReq);
pCounter = (SyncCounter *)SecurityLookupIDByType(client, stuff->cid,
- RTCounter, SecurityWriteAccess);
+ RTCounter, DixWriteAccess);
if (pCounter == NULL)
{
client->errorValue = stuff->cid;
@@ -1585,7 +1587,7 @@ ProcSyncChangeCounter(client)
REQUEST_SIZE_MATCH(xSyncChangeCounterReq);
pCounter = (SyncCounter *) SecurityLookupIDByType(client, stuff->cid,
- RTCounter, SecurityWriteAccess);
+ RTCounter, DixWriteAccess);
if (pCounter == NULL)
{
client->errorValue = stuff->cid;
@@ -1623,7 +1625,7 @@ ProcSyncDestroyCounter(client)
REQUEST_SIZE_MATCH(xSyncDestroyCounterReq);
pCounter = (SyncCounter *)SecurityLookupIDByType(client, stuff->counter,
- RTCounter, SecurityDestroyAccess);
+ RTCounter, DixDestroyAccess);
if (pCounter == NULL)
{
client->errorValue = stuff->counter;
@@ -1769,7 +1771,7 @@ ProcSyncQueryCounter(client)
REQUEST_SIZE_MATCH(xSyncQueryCounterReq);
pCounter = (SyncCounter *)SecurityLookupIDByType(client, stuff->counter,
- RTCounter, SecurityReadAccess);
+ RTCounter, DixReadAccess);
if (pCounter == NULL)
{
client->errorValue = stuff->counter;
@@ -1898,7 +1900,7 @@ ProcSyncChangeAlarm(client)
REQUEST_AT_LEAST_SIZE(xSyncChangeAlarmReq);
if (!(pAlarm = (SyncAlarm *)SecurityLookupIDByType(client, stuff->alarm,
- RTAlarm, SecurityWriteAccess)))
+ RTAlarm, DixWriteAccess)))
{
client->errorValue = stuff->alarm;
return SyncErrorBase + XSyncBadAlarm;
@@ -1939,7 +1941,7 @@ ProcSyncQueryAlarm(client)
REQUEST_SIZE_MATCH(xSyncQueryAlarmReq);
pAlarm = (SyncAlarm *)SecurityLookupIDByType(client, stuff->alarm,
- RTAlarm, SecurityReadAccess);
+ RTAlarm, DixReadAccess);
if (!pAlarm)
{
client->errorValue = stuff->alarm;
@@ -1999,7 +2001,7 @@ ProcSyncDestroyAlarm(client)
REQUEST_SIZE_MATCH(xSyncDestroyAlarmReq);
if (!((SyncAlarm *)SecurityLookupIDByType(client, stuff->alarm,
- RTAlarm, SecurityDestroyAccess)))
+ RTAlarm, DixDestroyAccess)))
{
client->errorValue = stuff->alarm;
return SyncErrorBase + XSyncBadAlarm;
diff --git a/Xext/xace.c b/Xext/xace.c
new file mode 100644
index 000000000..6fc5c12ee
--- /dev/null
+++ b/Xext/xace.c
@@ -0,0 +1,498 @@
+/************************************************************
+
+Author: Eamon Walsh <ewalsh@epoch.ncsc.mil>
+
+Permission to use, copy, modify, distribute, and sell this software and its
+documentation for any purpose is hereby granted without fee, provided that
+this permission notice appear in supporting documentation. This permission
+notice shall be included in all copies or substantial portions of the
+Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHOR BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
+AN ACTION 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 <stdarg.h>
+#include "windowstr.h"
+#include "scrnintstr.h"
+#include "gcstruct.h"
+#include "xacestr.h"
+#include "modinit.h"
+
+CallbackListPtr XaceHooks[XACE_NUM_HOOKS] = {0};
+
+/* Proc vectors for untrusted clients, swapped and unswapped versions.
+ * These are the same as the normal proc vectors except that extensions
+ * that haven't declared themselves secure will have ProcBadRequest plugged
+ * in for their major opcode dispatcher. This prevents untrusted clients
+ * from guessing extension major opcodes and using the extension even though
+ * the extension can't be listed or queried.
+ */
+int (*UntrustedProcVector[256])(
+ ClientPtr /*client*/
+);
+int (*SwappedUntrustedProcVector[256])(
+ ClientPtr /*client*/
+);
+
+/* Entry point for hook functions. Called by Xserver.
+ */
+int XaceHook(int hook, ...)
+{
+ pointer calldata; /* data passed to callback */
+ int *prv = NULL; /* points to return value from callback */
+ va_list ap; /* argument list */
+ va_start(ap, hook);
+
+ /* Marshal arguments for passing to callback.
+ * Each callback has its own case, which sets up a structure to hold
+ * the arguments and integer return parameter, or in some cases just
+ * sets calldata directly to a single argument (with no return result)
+ */
+ switch (hook)
+ {
+ case XACE_CORE_DISPATCH: {
+ XaceCoreDispatchRec rec = {
+ va_arg(ap, ClientPtr),
+ TRUE /* default allow */
+ };
+ calldata = &rec;
+ prv = &rec.rval;
+ break;
+ }
+ case XACE_RESOURCE_ACCESS: {
+ XaceResourceAccessRec rec = {
+ va_arg(ap, ClientPtr),
+ va_arg(ap, XID),
+ va_arg(ap, RESTYPE),
+ va_arg(ap, Mask),
+ va_arg(ap, pointer),
+ TRUE /* default allow */
+ };
+ calldata = &rec;
+ prv = &rec.rval;
+ break;
+ }
+ case XACE_DEVICE_ACCESS: {
+ XaceDeviceAccessRec rec = {
+ va_arg(ap, ClientPtr),
+ va_arg(ap, DeviceIntPtr),
+ va_arg(ap, Bool),
+ TRUE /* default allow */
+ };
+ calldata = &rec;
+ prv = &rec.rval;
+ break;
+ }
+ case XACE_PROPERTY_ACCESS: {
+ XacePropertyAccessRec rec = {
+ va_arg(ap, ClientPtr),
+ va_arg(ap, WindowPtr),
+ va_arg(ap, Atom),
+ va_arg(ap, Mask),
+ XaceAllowOperation /* default allow */
+ };
+ calldata = &rec;
+ prv = &rec.rval;
+ break;
+ }
+ case XACE_DRAWABLE_ACCESS: {
+ XaceDrawableAccessRec rec = {
+ va_arg(ap, ClientPtr),
+ va_arg(ap, DrawablePtr),
+ TRUE /* default allow */
+ };
+ calldata = &rec;
+ prv = &rec.rval;
+ break;
+ }
+ case XACE_MAP_ACCESS:
+ case XACE_BACKGRND_ACCESS: {
+ XaceMapAccessRec rec = {
+ va_arg(ap, ClientPtr),
+ va_arg(ap, WindowPtr),
+ TRUE /* default allow */
+ };
+ calldata = &rec;
+ prv = &rec.rval;
+ break;
+ }
+ case XACE_EXT_DISPATCH:
+ case XACE_EXT_ACCESS: {
+ XaceExtAccessRec rec = {
+ va_arg(ap, ClientPtr),
+ va_arg(ap, ExtensionEntry*),
+ TRUE /* default allow */
+ };
+ calldata = &rec;
+ prv = &rec.rval;
+ break;
+ }
+ case XACE_HOSTLIST_ACCESS: {
+ XaceHostlistAccessRec rec = {
+ va_arg(ap, ClientPtr),
+ va_arg(ap, Mask),
+ TRUE /* default allow */
+ };
+ calldata = &rec;
+ prv = &rec.rval;
+ break;
+ }
+ case XACE_SITE_POLICY: {
+ XaceSitePolicyRec rec = {
+ va_arg(ap, char*),
+ va_arg(ap, int),
+ FALSE /* default unrecognized */
+ };
+ calldata = &rec;
+ prv = &rec.rval;
+ break;
+ }
+ case XACE_DECLARE_EXT_SECURE: {
+ XaceDeclareExtSecureRec rec = {
+ va_arg(ap, ExtensionEntry*),
+ va_arg(ap, Bool)
+ };
+ calldata = &rec;
+ break;
+ }
+ case XACE_AUTH_AVAIL: {
+ XaceAuthAvailRec rec = {
+ va_arg(ap, ClientPtr),
+ va_arg(ap, XID)
+ };
+ calldata = &rec;
+ break;
+ }
+ case XACE_KEY_AVAIL: {
+ XaceKeyAvailRec rec = {
+ va_arg(ap, xEventPtr),
+ va_arg(ap, DeviceIntPtr),
+ va_arg(ap, int)
+ };
+ calldata = &rec;
+ break;
+ }
+ case XACE_WINDOW_INIT: {
+ XaceWindowRec rec = {
+ va_arg(ap, ClientPtr),
+ va_arg(ap, WindowPtr)
+ };
+ calldata = &rec;
+ break;
+ }
+ case XACE_AUDIT_BEGIN: {
+ XaceAuditRec rec = {
+ va_arg(ap, ClientPtr),
+ 0
+ };
+ calldata = &rec;
+ break;
+ }
+ case XACE_AUDIT_END: {
+ XaceAuditRec rec = {
+ va_arg(ap, ClientPtr),
+ va_arg(ap, int)
+ };
+ calldata = &rec;
+ break;
+ }
+ default: {
+ va_end(ap);
+ return 0; /* unimplemented hook number */
+ }
+ }
+ va_end(ap);
+
+ /* call callbacks and return result, if any. */
+ CallCallbacks(&XaceHooks[hook], calldata);
+ return prv ? *prv : 0;
+}
+
+static int
+ProcXaceDispatch(ClientPtr client)
+{
+ REQUEST(xReq);
+
+ switch (stuff->data)
+ {
+ default:
+ return BadRequest;
+ }
+} /* ProcXaceDispatch */
+
+static int
+SProcXaceDispatch(ClientPtr client)
+{
+ REQUEST(xReq);
+
+ switch (stuff->data)
+ {
+ default:
+ return BadRequest;
+ }
+} /* SProcXaceDispatch */
+
+
+/* XaceResetProc
+ *
+ * Arguments:
+ * extEntry is the extension information for the XACE extension.
+ *
+ * Returns: nothing.
+ *
+ * Side Effects:
+ * Performs any cleanup needed by XACE at server shutdown time.
+ */
+static void
+XaceResetProc(ExtensionEntry *extEntry)
+{
+ int i;
+
+ for (i=0; i<XACE_NUM_HOOKS; i++)
+ {
+ DeleteCallbackList(&XaceHooks[i]);
+ XaceHooks[i] = NULL;
+ }
+} /* XaceResetProc */
+
+
+static int
+XaceCatchDispatchProc(ClientPtr client)
+{
+ REQUEST(xReq);
+ int major = stuff->reqType;
+
+ if (!ProcVector[major])
+ return (BadRequest);
+
+ if (!XaceHook(XACE_CORE_DISPATCH, client))
+ return (BadAccess);
+
+ return client->swapped ?
+ (* SwappedProcVector[major])(client) :
+ (* ProcVector[major])(client);
+}
+
+static int
+XaceCatchExtProc(ClientPtr client)
+{
+ REQUEST(xReq);
+ int major = stuff->reqType;
+ ExtensionEntry *ext = GetExtensionEntry(major);
+
+ if (!ext || !ProcVector[major])
+ return (BadRequest);
+
+ if (!XaceHook(XACE_EXT_DISPATCH, client, ext))
+ return (BadRequest); /* pretend extension doesn't exist */
+
+ return client->swapped ?
+ (* SwappedProcVector[major])(client) :
+ (* ProcVector[major])(client);
+}
+
+
+/* SecurityClientStateCallback
+ *
+ * Arguments:
+ * pcbl is &ClientStateCallback.
+ * nullata is NULL.
+ * calldata is a pointer to a NewClientInfoRec (include/dixstruct.h)
+ * which contains information about client state changes.
+ *
+ * Returns: nothing.
+ *
+ * Side Effects:
+ *
+ * If a new client is connecting, its authorization ID is copied to
+ * client->authID. If this is a generated authorization, its reference
+ * count is bumped, its timer is cancelled if it was running, and its
+ * trustlevel is copied to TRUSTLEVEL(client).
+ *
+ * If a client is disconnecting and the client was using a generated
+ * authorization, the authorization's reference count is decremented, and
+ * if it is now zero, the timer for this authorization is started.
+ */
+
+static void
+XaceClientStateCallback(
+ CallbackListPtr *pcbl,
+ pointer nulldata,
+ pointer calldata)
+{
+ NewClientInfoRec *pci = (NewClientInfoRec *)calldata;
+ ClientPtr client = pci->client;
+
+ switch (client->clientState)
+ {
+ case ClientStateRunning:
+ {
+ client->requestVector = client->swapped ?
+ SwappedUntrustedProcVector : UntrustedProcVector;
+ break;
+ }
+ default: break;
+ }
+} /* XaceClientStateCallback */
+
+/* XaceExtensionInit
+ *
+ * Initialize the XACE Extension
+ */
+void XaceExtensionInit(INITARGS)
+{
+ ExtensionEntry *extEntry;
+ int i;
+
+ if (!AddCallback(&ClientStateCallback, XaceClientStateCallback, NULL))
+ return;
+
+ extEntry = AddExtension(XACE_EXTENSION_NAME,
+ XaceNumberEvents, XaceNumberErrors,
+ ProcXaceDispatch, SProcXaceDispatch,
+ XaceResetProc, StandardMinorOpcode);
+
+ /* initialize dispatching intercept functions */
+ for (i = 0; i < 128; i++)
+ {
+ UntrustedProcVector[i] = XaceCatchDispatchProc;
+ SwappedUntrustedProcVector[i] = XaceCatchDispatchProc;
+ }
+ for (i = 128; i < 256; i++)
+ {
+ UntrustedProcVector[i] = XaceCatchExtProc;
+ SwappedUntrustedProcVector[i] = XaceCatchExtProc;
+ }
+}
+
+/* XaceCensorImage
+ *
+ * Called after pScreen->GetImage to prevent pieces or trusted windows from
+ * being returned in image data from an untrusted window.
+ *
+ * Arguments:
+ * client is the client doing the GetImage.
+ * pVisibleRegion is the visible region of the window.
+ * widthBytesLine is the width in bytes of one horizontal line in pBuf.
+ * pDraw is the source window.
+ * x, y, w, h is the rectangle of image data from pDraw in pBuf.
+ * format is the format of the image data in pBuf: ZPixmap or XYPixmap.
+ * pBuf is the image data.
+ *
+ * Returns: nothing.
+ *
+ * Side Effects:
+ * Any part of the rectangle (x, y, w, h) that is outside the visible
+ * region of the window will be destroyed (overwritten) in pBuf.
+ */
+void
+XaceCensorImage(client, pVisibleRegion, widthBytesLine, pDraw, x, y, w, h,
+ format, pBuf)
+ ClientPtr client;
+ RegionPtr pVisibleRegion;
+ long widthBytesLine;
+ DrawablePtr pDraw;
+ int x, y, w, h;
+ unsigned int format;
+ char * pBuf;
+{
+ ScreenPtr pScreen;
+ RegionRec imageRegion; /* region representing x,y,w,h */
+ RegionRec censorRegion; /* region to obliterate */
+ BoxRec imageBox;
+ int nRects;
+
+ pScreen = pDraw->pScreen;
+
+ imageBox.x1 = x;
+ imageBox.y1 = y;
+ imageBox.x2 = x + w;
+ imageBox.y2 = y + h;
+ REGION_INIT(pScreen, &imageRegion, &imageBox, 1);
+ REGION_NULL(pScreen, &censorRegion);
+
+ /* censorRegion = imageRegion - visibleRegion */
+ REGION_SUBTRACT(pScreen, &censorRegion, &imageRegion, pVisibleRegion);
+ nRects = REGION_NUM_RECTS(&censorRegion);
+ if (nRects > 0)
+ { /* we have something to censor */
+ GCPtr pScratchGC = NULL;
+ PixmapPtr pPix = NULL;
+ xRectangle *pRects = NULL;
+ Bool failed = FALSE;
+ int depth = 1;
+ int bitsPerPixel = 1;
+ int i;
+ BoxPtr pBox;
+
+ /* convert region to list-of-rectangles for PolyFillRect */
+
+ pRects = (xRectangle *)ALLOCATE_LOCAL(nRects * sizeof(xRectangle *));
+ if (!pRects)
+ {
+ failed = TRUE;
+ goto failSafe;
+ }
+ for (pBox = REGION_RECTS(&censorRegion), i = 0;
+ i < nRects;
+ i++, pBox++)
+ {
+ pRects[i].x = pBox->x1;
+ pRects[i].y = pBox->y1 - imageBox.y1;
+ pRects[i].width = pBox->x2 - pBox->x1;
+ pRects[i].height = pBox->y2 - pBox->y1;
+ }
+
+ /* use pBuf as a fake pixmap */
+
+ if (format == ZPixmap)
+ {
+ depth = pDraw->depth;
+ bitsPerPixel = pDraw->bitsPerPixel;
+ }
+
+ pPix = GetScratchPixmapHeader(pDraw->pScreen, w, h,
+ depth, bitsPerPixel,
+ widthBytesLine, (pointer)pBuf);
+ if (!pPix)
+ {
+ failed = TRUE;
+ goto failSafe;
+ }
+
+ pScratchGC = GetScratchGC(depth, pPix->drawable.pScreen);
+ if (!pScratchGC)
+ {
+ failed = TRUE;
+ goto failSafe;
+ }
+
+ ValidateGC(&pPix->drawable, pScratchGC);
+ (* pScratchGC->ops->PolyFillRect)(&pPix->drawable,
+ pScratchGC, nRects, pRects);
+
+ failSafe:
+ if (failed)
+ {
+ /* Censoring was not completed above. To be safe, wipe out
+ * all the image data so that nothing trusted gets out.
+ */
+ bzero(pBuf, (int)(widthBytesLine * h));
+ }
+ if (pRects) DEALLOCATE_LOCAL(pRects);
+ if (pScratchGC) FreeScratchGC(pScratchGC);
+ if (pPix) FreeScratchPixmapHeader(pPix);
+ }
+ REGION_UNINIT(pScreen, &imageRegion);
+ REGION_UNINIT(pScreen, &censorRegion);
+} /* XaceCensorImage */
diff --git a/Xext/xace.h b/Xext/xace.h
new file mode 100644
index 000000000..7231b04bc
--- /dev/null
+++ b/Xext/xace.h
@@ -0,0 +1,119 @@
+/************************************************************
+
+Author: Eamon Walsh <ewalsh@epoch.ncsc.mil>
+
+Permission to use, copy, modify, distribute, and sell this software and its
+documentation for any purpose is hereby granted without fee, provided that
+this permission notice appear in supporting documentation. This permission
+notice shall be included in all copies or substantial portions of the
+Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHOR BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
+AN ACTION 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 _XACE_H
+#define _XACE_H
+
+/* Hook return codes */
+#define XaceErrorOperation 0
+#define XaceAllowOperation 1
+#define XaceIgnoreOperation 2
+
+#ifdef XACE
+
+#define XACE_EXTENSION_NAME "XAccessControlExtension"
+#define XACE_MAJOR_VERSION 1
+#define XACE_MINOR_VERSION 0
+
+#include "pixmap.h" /* for DrawablePtr */
+#include "regionstr.h" /* for RegionPtr */
+
+#define XaceNumberEvents 0
+#define XaceNumberErrors 0
+
+/* security hooks */
+/* Constants used to identify the available security hooks
+ */
+#define XACE_CORE_DISPATCH 0
+#define XACE_EXT_DISPATCH 1
+#define XACE_RESOURCE_ACCESS 2
+#define XACE_DEVICE_ACCESS 3
+#define XACE_PROPERTY_ACCESS 4
+#define XACE_DRAWABLE_ACCESS 5
+#define XACE_MAP_ACCESS 6
+#define XACE_BACKGRND_ACCESS 7
+#define XACE_EXT_ACCESS 8
+#define XACE_HOSTLIST_ACCESS 9
+#define XACE_SITE_POLICY 10
+#define XACE_DECLARE_EXT_SECURE 11
+#define XACE_AUTH_AVAIL 12
+#define XACE_KEY_AVAIL 13
+#define XACE_WINDOW_INIT 14
+#define XACE_AUDIT_BEGIN 15
+#define XACE_AUDIT_END 16
+#define XACE_NUM_HOOKS 17
+
+extern CallbackListPtr XaceHooks[XACE_NUM_HOOKS];
+
+/* Entry point for hook functions. Called by Xserver.
+ */
+extern int XaceHook(
+ int /*hook*/,
+ ... /*appropriate args for hook*/
+ );
+
+/* Register a callback for a given hook.
+ */
+#define XaceRegisterCallback(hook,callback,data) \
+ AddCallback(XaceHooks+(hook), callback, data)
+
+/* Unregister an existing callback for a given hook.
+ */
+#define XaceDeleteCallback(hook,callback,data) \
+ DeleteCallback(XaceHooks+(hook), callback, data)
+
+
+/* From the original Security extension...
+ */
+
+/* Proc vectors for untrusted clients, swapped and unswapped versions.
+ * These are the same as the normal proc vectors except that extensions
+ * that haven't declared themselves secure will have ProcBadRequest plugged
+ * in for their major opcode dispatcher. This prevents untrusted clients
+ * from guessing extension major opcodes and using the extension even though
+ * the extension can't be listed or queried.
+ */
+extern int (*UntrustedProcVector[256])(ClientPtr client);
+extern int (*SwappedUntrustedProcVector[256])(ClientPtr client);
+
+extern void XaceCensorImage(
+ ClientPtr client,
+ RegionPtr pVisibleRegion,
+ long widthBytesLine,
+ DrawablePtr pDraw,
+ int x, int y, int w, int h,
+ unsigned int format,
+ char * pBuf
+ );
+
+#else /* XACE */
+
+/* Define calls away when XACE is not being built. */
+
+#ifdef __GNUC__
+#define XaceHook(args...) XaceAllowOperation
+#define XaceCensorImage(args...) { ; }
+#else
+#define XaceHook(...) XaceAllowOperation
+#define XaceCensorImage(...) { ; }
+#endif
+
+#endif /* XACE */
+
+#endif /* _XACE_H */
diff --git a/Xext/xacestr.h b/Xext/xacestr.h
new file mode 100644
index 000000000..7114d066b
--- /dev/null
+++ b/Xext/xacestr.h
@@ -0,0 +1,135 @@
+/************************************************************
+
+Author: Eamon Walsh <ewalsh@epoch.ncsc.mil>
+
+Permission to use, copy, modify, distribute, and sell this software and its
+documentation for any purpose is hereby granted without fee, provided that
+this permission notice appear in supporting documentation. This permission
+notice shall be included in all copies or substantial portions of the
+Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHOR BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
+AN ACTION 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 _XACESTR_H
+#define _XACESTR_H
+
+#include <X11/Xdefs.h>
+#include "dixstruct.h"
+#include "resource.h"
+#include "extnsionst.h"
+#include "gcstruct.h"
+#include "windowstr.h"
+#include "inputstr.h"
+#include "xace.h"
+
+/* XACE_CORE_DISPATCH */
+typedef struct {
+ ClientPtr client;
+ int rval;
+} XaceCoreDispatchRec;
+
+/* XACE_RESOURCE_ACCESS */
+/* XACE_RESOURCE_CREATE */
+typedef struct {
+ ClientPtr client;
+ XID id;
+ RESTYPE rtype;
+ Mask access_mode;
+ pointer res;
+ int rval;
+} XaceResourceAccessRec;
+
+/* XACE_DEVICE_ACCESS */
+typedef struct {
+ ClientPtr client;
+ DeviceIntPtr dev;
+ Bool fromRequest;
+ int rval;
+} XaceDeviceAccessRec;
+
+/* XACE_PROPERTY_ACCESS */
+typedef struct {
+ ClientPtr client;
+ WindowPtr pWin;
+ Atom propertyName;
+ Mask access_mode;
+ int rval;
+} XacePropertyAccessRec;
+
+/* XACE_DRAWABLE_ACCESS */
+typedef struct {
+ ClientPtr client;
+ DrawablePtr pDraw;
+ int rval;
+} XaceDrawableAccessRec;
+
+/* XACE_MAP_ACCESS */
+/* XACE_BACKGRND_ACCESS */
+typedef struct {
+ ClientPtr client;
+ WindowPtr pWin;
+ int rval;
+} XaceMapAccessRec;
+
+/* XACE_EXT_DISPATCH_ACCESS */
+/* XACE_EXT_ACCESS */
+typedef struct {
+ ClientPtr client;
+ ExtensionEntry *ext;
+ int rval;
+} XaceExtAccessRec;
+
+/* XACE_HOSTLIST_ACCESS */
+typedef struct {
+ ClientPtr client;
+ Mask access_mode;
+ int rval;
+} XaceHostlistAccessRec;
+
+/* XACE_SITE_POLICY */
+typedef struct {
+ char *policyString;
+ int len;
+ int rval;
+} XaceSitePolicyRec;
+
+/* XACE_DECLARE_EXT_SECURE */
+typedef struct {
+ ExtensionEntry *ext;
+ Bool secure;
+} XaceDeclareExtSecureRec;
+
+/* XACE_AUTH_AVAIL */
+typedef struct {
+ ClientPtr client;
+ XID authId;
+} XaceAuthAvailRec;
+
+/* XACE_KEY_AVAIL */
+typedef struct {
+ xEventPtr event;
+ DeviceIntPtr keybd;
+ int count;
+} XaceKeyAvailRec;
+
+/* XACE_WINDOW_INIT */
+typedef struct {
+ ClientPtr client;
+ WindowPtr pWin;
+} XaceWindowRec;
+
+/* XACE_AUDIT_BEGIN */
+/* XACE_AUDIT_END */
+typedef struct {
+ ClientPtr client;
+ int requestResult;
+} XaceAuditRec;
+
+#endif /* _XACESTR_H */
diff --git a/Xext/xcalibrate.c b/Xext/xcalibrate.c
new file mode 100644
index 000000000..e273c5313
--- /dev/null
+++ b/Xext/xcalibrate.c
@@ -0,0 +1,262 @@
+/*
+ * $Id: xcalibrate.c,v 3.1 2004/06/02 20:49:50 pb Exp $
+ *
+ * Copyright © 2003 Philip Blundell
+ *
+ * Permission to use, copy, modify, distribute, and sell this software and its
+ * documentation for any purpose is hereby granted without fee, provided that
+ * the above copyright notice appear in all copies and that both that
+ * copyright notice and this permission notice appear in supporting
+ * documentation, and that the name of Philip Blundell not be used in
+ * advertising or publicity pertaining to distribution of the software without
+ * specific, written prior permission. Philip Blundell makes no
+ * representations about the suitability of this software for any purpose. It
+ * is provided "as is" without express or implied warranty.
+ *
+ * PHILIP BLUNDELL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
+ * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
+ * EVENT SHALL PHILIP BLUNDELL BE LIABLE FOR ANY SPECIAL, INDIRECT OR
+ * CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
+ * DATA OR PROFITS, WHETHER 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_KDRIVE_CONFIG_H
+#include <kdrive-config.h>
+#endif
+
+#define NEED_EVENTS
+#define NEED_REPLIES
+
+#include <X11/X.h>
+#include <X11/Xproto.h>
+#include "misc.h"
+#include "os.h"
+#include "dixstruct.h"
+#include "extnsionst.h"
+#include "swaprep.h"
+
+#include <X11/extensions/xcalibrateproto.h>
+#include <X11/extensions/xcalibratewire.h>
+
+extern void (*tslib_raw_event_hook)(int x, int y, int pressure, void *closure);
+extern void *tslib_raw_event_closure;
+
+static CARD8 XCalibrateReqCode;
+int XCalibrateEventBase;
+int XCalibrateReqBase;
+int XCalibrateErrorBase;
+
+static ClientPtr xcalibrate_client;
+
+static void
+xcalibrate_event_hook (int x, int y, int pressure, void *closure)
+{
+ ClientPtr pClient = (ClientPtr) closure;
+ xXCalibrateRawTouchscreenEvent ev;
+
+ ev.type = XCalibrateEventBase + X_XCalibrateRawTouchscreen;
+ ev.sequenceNumber = pClient->sequence;
+ ev.x = x;
+ ev.y = y;
+ ev.pressure = pressure;
+
+ if (!pClient->clientGone)
+ WriteEventsToClient (pClient, 1, (xEvent *) &ev);
+}
+
+static int
+ProcXCalibrateQueryVersion (ClientPtr client)
+{
+ REQUEST(xXCalibrateQueryVersionReq);
+ xXCalibrateQueryVersionReply rep;
+ CARD16 client_major, client_minor; /* not used */
+
+ REQUEST_SIZE_MATCH (xXCalibrateQueryVersionReq);
+
+ client_major = stuff->majorVersion;
+ client_minor = stuff->minorVersion;
+
+ fprintf(stderr, "%s(): called\n", __func__);
+
+ rep.type = X_Reply;
+ rep.length = 0;
+ rep.sequenceNumber = client->sequence;
+ rep.majorVersion = XCALIBRATE_MAJOR_VERSION;
+ rep.minorVersion = XCALIBRATE_MINOR_VERSION;
+ if (client->swapped) {
+ int n;
+ swaps(&rep.sequenceNumber, n);
+ swapl(&rep.length, n);
+ swaps(&rep.majorVersion, n);
+ swaps(&rep.minorVersion, n);
+ }
+ WriteToClient(client, sizeof (xXCalibrateQueryVersionReply), (char *)&rep);
+ return (client->noClientException);
+}
+
+static int
+SProcXCalibrateQueryVersion (ClientPtr client)
+{
+ REQUEST(xXCalibrateQueryVersionReq);
+ int n;
+
+ REQUEST_SIZE_MATCH (xXCalibrateQueryVersionReq);
+ swaps(&stuff->majorVersion,n);
+ swaps(&stuff->minorVersion,n);
+ return ProcXCalibrateQueryVersion(client);
+}
+
+static int
+ProcXCalibrateSetRawMode (ClientPtr client)
+{
+ REQUEST(xXCalibrateRawModeReq);
+ xXCalibrateRawModeReply rep;
+
+ REQUEST_SIZE_MATCH (xXCalibrateRawModeReq);
+
+ memset (&rep, 0, sizeof (rep));
+ rep.type = X_Reply;
+ rep.sequenceNumber = client->sequence;
+
+ if (stuff->on)
+ {
+ if (xcalibrate_client == NULL)
+ {
+ /* Start calibrating. */
+ xcalibrate_client = client;
+ tslib_raw_event_hook = xcalibrate_event_hook;
+ tslib_raw_event_closure = client;
+ rep.status = GrabSuccess;
+ }
+ else
+ {
+ rep.status = AlreadyGrabbed;
+ }
+ }
+ else
+ {
+ if (xcalibrate_client == client)
+ {
+ /* Stop calibrating. */
+ xcalibrate_client = NULL;
+ tslib_raw_event_hook = NULL;
+ tslib_raw_event_closure = NULL;
+ rep.status = GrabSuccess;
+
+ /* Cycle input off and on to reload configuration. */
+ KdDisableInput ();
+ KdEnableInput ();
+ }
+ else
+ {
+ rep.status = AlreadyGrabbed;
+ }
+ }
+
+ if (client->swapped)
+ {
+ int n;
+
+ swaps (&rep.sequenceNumber, n);
+ swaps (&rep.status, n);
+ }
+ WriteToClient(client, sizeof (rep), (char *) &rep);
+ return (client->noClientException);
+}
+
+
+static int
+SProcXCalibrateSetRawMode (ClientPtr client)
+{
+ REQUEST(xXCalibrateRawModeReq);
+ int n;
+
+ REQUEST_SIZE_MATCH (xXCalibrateRawModeReq);
+
+ swaps(&stuff->on, n);
+
+ return ProcXCalibrateSetRawMode(client);
+}
+
+static void
+XCalibrateResetProc (ExtensionEntry *extEntry)
+{
+}
+
+static int
+ProcXCalibrateDispatch (ClientPtr client)
+{
+ REQUEST(xReq);
+ switch (stuff->data) {
+ case X_XCalibrateQueryVersion:
+ return ProcXCalibrateQueryVersion(client);
+ case X_XCalibrateRawMode:
+ return ProcXCalibrateSetRawMode(client);
+ default: break;
+ }
+
+ return BadRequest;
+}
+
+static int
+SProcXCalibrateDispatch (ClientPtr client)
+{
+ REQUEST(xReq);
+ int n;
+
+ swaps(&stuff->length,n);
+
+ switch (stuff->data) {
+ case X_XCalibrateQueryVersion:
+ return SProcXCalibrateQueryVersion(client);
+ case X_XCalibrateRawMode:
+ return SProcXCalibrateSetRawMode(client);
+
+ default: break;
+ }
+
+ return BadRequest;
+}
+
+static void
+XCalibrateClientCallback (CallbackListPtr *list,
+ pointer closure,
+ pointer data)
+{
+ NewClientInfoRec *clientinfo = (NewClientInfoRec *) data;
+ ClientPtr pClient = clientinfo->client;
+
+ if (clientinfo->setup == NULL
+ && xcalibrate_client != NULL
+ && xcalibrate_client == pClient)
+ {
+ /* Stop calibrating. */
+ xcalibrate_client = NULL;
+ tslib_raw_event_hook = NULL;
+ tslib_raw_event_closure = NULL;
+ }
+}
+
+void
+XCalibrateExtensionInit(void)
+{
+ ExtensionEntry *extEntry;
+
+ if (!AddCallback (&ClientStateCallback, XCalibrateClientCallback, 0))
+ return;
+
+ extEntry = AddExtension(XCALIBRATE_NAME, XCalibrateNumberEvents, XCalibrateNumberErrors,
+ ProcXCalibrateDispatch, SProcXCalibrateDispatch,
+ XCalibrateResetProc, StandardMinorOpcode);
+
+ if (!extEntry)
+ return;
+
+ XCalibrateReqCode = (unsigned char)extEntry->base;
+ XCalibrateEventBase = extEntry->eventBase;
+ XCalibrateErrorBase = extEntry->errorBase;
+
+ xcalibrate_client = 0;
+}
diff --git a/Xext/xcmisc.c b/Xext/xcmisc.c
index 45629e660..f26218e97 100644
--- a/Xext/xcmisc.c
+++ b/Xext/xcmisc.c
@@ -1,4 +1,3 @@
-/* $Xorg: xcmisc.c,v 1.4 2001/02/09 02:04:33 xorgcvs Exp $ */
/*
Copyright 1993, 1998 The Open Group
@@ -26,7 +25,6 @@ other dealings in this Software without prior written authorization
from The Open Group.
*/
-/* $XFree86: xc/programs/Xserver/Xext/xcmisc.c,v 3.7 2003/10/28 23:08:43 tsi Exp $ */
#define NEED_EVENTS
#define NEED_REPLIES
diff --git a/Xext/xevie.c b/Xext/xevie.c
index a468affcc..e979e7e4d 100644
--- a/Xext/xevie.c
+++ b/Xext/xevie.c
@@ -30,7 +30,6 @@ or other dealings in this Software without prior written authorization
of the copyright holder.
************************************************************/
-/* $XdotOrg: xserver/xorg/Xext/xevie.c,v 1.11 2005/10/06 17:55:54 alanc Exp $ */
#define NEED_REPLIES
#define NEED_EVENTS
@@ -59,7 +58,9 @@ of the copyright holder.
#define NoSuchEvent 0x80000000
+#ifdef XKB
extern Bool noXkbExtension;
+#endif
extern int xeviegrabState;
static int ProcDispatch (register ClientPtr client), SProcDispatch (register ClientPtr client);
@@ -104,7 +105,7 @@ typedef struct {
} xevieKeycQueueRec, *xevieKeycQueuePtr;
#define KEYC_QUEUE_SIZE 100
-xevieKeycQueueRec keycq[KEYC_QUEUE_SIZE] = {0, NULL};
+xevieKeycQueueRec keycq[KEYC_QUEUE_SIZE] = {{0, NULL}};
static int keycqHead = 0, keycqTail = 0;
static int ProcDispatch (ClientPtr), SProcDispatch (ClientPtr);
@@ -165,7 +166,6 @@ void ResetProc (ExtensionEntry *extEntry)
static
int ProcQueryVersion (register ClientPtr client)
{
- REQUEST (xXevieQueryVersionReq);
xXevieQueryVersionReply rep;
REQUEST_SIZE_MATCH (xXevieQueryVersionReq);
@@ -181,7 +181,6 @@ int ProcQueryVersion (register ClientPtr client)
static
int ProcStart (register ClientPtr client)
{
- REQUEST (xXevieStartReq);
xXevieStartReply rep;
REQUEST_SIZE_MATCH (xXevieStartReq);
@@ -203,12 +202,14 @@ int ProcStart (register ClientPtr client)
return BadAlloc;
} else
return BadAccess;
+#ifdef XKB
if (!noXkbExtension) {
if (!XevieStart()) {
DeleteCallback(&ClientStateCallback,XevieClientStateCallback,NULL);
return BadAlloc;
}
}
+#endif
xevieModifiersOn = FALSE;
@@ -257,19 +258,23 @@ int ProcSend (register ClientPtr client)
case KeyPress:
case KeyRelease:
xevieKBEventSent = 1;
- if(noXkbExtension)
- CoreProcessKeyboardEvent (xE, xeviekb, 1);
- else
+#ifdef XKB
+ if(!noXkbExtension)
doSendEvent(xE, inputInfo.keyboard);
+ else
+#endif
+ CoreProcessKeyboardEvent (xE, xeviekb, 1);
break;
case ButtonPress:
case ButtonRelease:
case MotionNotify:
xevieEventSent = 1;
- if(noXkbExtension)
- CoreProcessPointerEvent(xE, xeviemouse, 1);
- else
+#ifdef XKB
+ if(!noXkbExtension)
doSendEvent(xE, inputInfo.pointer);
+ else
+#endif
+ CoreProcessPointerEvent(xE, xeviemouse, 1);
break;
default:
break;
@@ -466,6 +471,7 @@ XevieKbdProcessInputProc(xEvent *xE, DeviceIntPtr dev, int count)
xE->u.keyButtonPointer.state = keyc->state | inputInfo.pointer->button->state;
/* fix bug: sequence lost in Xlib */
xE->u.u.sequenceNumber = clients[xevieClientIndex]->sequence;
+#ifdef XKB
/* fix for bug5092586 */
if(!noXkbExtension) {
switch(xE->u.u.type) {
@@ -473,6 +479,7 @@ XevieKbdProcessInputProc(xEvent *xE, DeviceIntPtr dev, int count)
case KeyRelease: *kptr &= ~bit; break;
}
}
+#endif
keycq[keycqHead].time = xE->u.keyButtonPointer.time;
memcpy(keycq[keycqHead].keyc, keyc, sizeof(KeyClassRec) - sizeof(KeyClassPtr));
memcpy(keycq[keycqHead].keyc->xkbInfo, keyc->xkbInfo, sizeof(XkbSrvInfoRec));
@@ -527,6 +534,7 @@ XevieEnd(int clientIndex)
{
if (!clientIndex || clientIndex == xevieClientIndex) {
+#ifdef XKB
if(!noXkbExtension) {
XevieRemove(inputInfo.keyboard,NULL);
@@ -542,6 +550,7 @@ XevieEnd(int clientIndex)
inputInfo.pointer->public.realInputProc = CoreProcessPointerEvent;
XkbSetExtension(inputInfo.pointer,ProcessPointerEvent);
}
+#endif
xevieFlag = 0;
xevieClientIndex = 0;
diff --git a/Xext/xf86bigfont.c b/Xext/xf86bigfont.c
index 36af17622..f50481f78 100644
--- a/Xext/xf86bigfont.c
+++ b/Xext/xf86bigfont.c
@@ -1,4 +1,3 @@
-/* $XFree86: xc/programs/Xserver/Xext/xf86bigfont.c,v 1.17 2003/10/28 23:08:43 tsi Exp $ */
/*
* BIGFONT extension for sharing font metrics between clients (if possible)
* and for transmitting font metrics to clients in a compressed form.
@@ -446,11 +445,10 @@ ProcXF86BigfontQueryFont(
#endif
client->errorValue = stuff->id; /* EITHER font or gc */
pFont = (FontPtr)SecurityLookupIDByType(client, stuff->id, RT_FONT,
- SecurityReadAccess);
+ DixReadAccess);
if (!pFont) {
- /* can't use VERIFY_GC because it might return BadGC */
GC *pGC = (GC *) SecurityLookupIDByType(client, stuff->id, RT_GC,
- SecurityReadAccess);
+ DixReadAccess);
if (!pGC) {
client->errorValue = stuff->id;
return BadFont; /* procotol spec says only error is BadFont */
diff --git a/Xext/xprint.c b/Xext/xprint.c
index 60512d372..4ac13e6d1 100644
--- a/Xext/xprint.c
+++ b/Xext/xprint.c
@@ -1,4 +1,3 @@
-/* $Xorg: xprint.c,v 1.5 2001/03/05 20:42:26 pookie Exp $ */
/*
(c) Copyright 1996 Hewlett-Packard Company
(c) Copyright 1996 International Business Machines Corp.
@@ -64,7 +63,6 @@ copyright holders.
** *********************************************************
**
********************************************************************/
-/* $XFree86: xc/programs/Xserver/Xext/xprint.c,v 1.14tsi Exp $ */
#define _XP_PRINT_SERVER_
#ifdef HAVE_DIX_CONFIG_H
@@ -85,8 +83,8 @@ copyright holders.
#include <X11/Xatom.h>
#include <X11/extensions/Print.h>
#include <X11/extensions/Printstr.h>
-#include "../Xprint/DiPrint.h"
-#include "../Xprint/attributes.h"
+#include "../hw/xprint/DiPrint.h"
+#include "../hw/xprint/attributes.h"
#include "modinit.h"
static void XpResetProc(ExtensionEntry *);
@@ -751,7 +749,7 @@ ProcXpGetPageDimensions(ClientPtr client)
if((pContext =(XpContextPtr)SecurityLookupIDByType(client,
stuff->printContext,
RTcontext,
- SecurityReadAccess))
+ DixReadAccess))
== (XpContextPtr)NULL)
{
client->errorValue = stuff->printContext;
@@ -813,7 +811,7 @@ ProcXpSetImageResolution(ClientPtr client)
if((pContext =(XpContextPtr)SecurityLookupIDByType(client,
stuff->printContext,
RTcontext,
- SecurityWriteAccess))
+ DixWriteAccess))
== (XpContextPtr)NULL)
{
client->errorValue = stuff->printContext;
@@ -861,7 +859,7 @@ ProcXpGetImageResolution(ClientPtr client)
if((pContext =(XpContextPtr)SecurityLookupIDByType(client,
stuff->printContext,
RTcontext,
- SecurityReadAccess))
+ DixReadAccess))
== (XpContextPtr)NULL)
{
client->errorValue = stuff->printContext;
@@ -1070,7 +1068,7 @@ ProcXpSetContext(ClientPtr client)
if((pContext =(XpContextPtr)SecurityLookupIDByType(client,
stuff->printContext,
RTcontext,
- SecurityWriteAccess))
+ DixWriteAccess))
== (XpContextPtr)NULL)
{
client->errorValue = stuff->printContext;
@@ -1143,7 +1141,7 @@ ProcXpDestroyContext(ClientPtr client)
if((pContext =(XpContextPtr)SecurityLookupIDByType(client,
stuff->printContext,
RTcontext,
- SecurityDestroyAccess))
+ DixDestroyAccess))
== (XpContextPtr)NULL)
{
client->errorValue = stuff->printContext;
@@ -1169,7 +1167,7 @@ ProcXpGetContextScreen(ClientPtr client)
if((pContext =(XpContextPtr)SecurityLookupIDByType(client,
stuff->printContext,
RTcontext,
- SecurityReadAccess))
+ DixReadAccess))
== (XpContextPtr)NULL)
return XpErrorBase+XPBadContext;
@@ -1854,9 +1852,10 @@ ProcXpStartPage(ClientPtr client)
if(pContext->state & PAGE_STARTED)
return XpErrorBase+XPBadSequence;
- pWin = (WindowPtr)SecurityLookupWindow(stuff->window, client,
- SecurityWriteAccess);
- if (!pWin || pWin->drawable.pScreen->myNum != pContext->screenNum)
+ result = dixLookupWindow(&pWin, stuff->window, client, DixWriteAccess);
+ if (result != Success)
+ return result;
+ if (pWin->drawable.pScreen->myNum != pContext->screenNum)
return BadWindow;
if((c = (XpStPagePtr)xalloc(sizeof(XpStPageRec))) == (XpStPagePtr)NULL)
@@ -1945,8 +1944,11 @@ ProcXpPutDocumentData(ClientPtr client)
if (stuff->drawable) {
if (pContext->state & DOC_RAW_STARTED)
return BadDrawable;
- pDraw = (DrawablePtr)LookupDrawable(stuff->drawable, client);
- if (!pDraw || pDraw->pScreen->myNum != pContext->screenNum)
+ result = dixLookupDrawable(&pDraw, stuff->drawable, client, 0,
+ DixUnknownAccess);
+ if (result != Success)
+ return result;
+ if (pDraw->pScreen->myNum != pContext->screenNum)
return BadDrawable;
} else {
if (pContext->state & DOC_COOKED_STARTED)
@@ -1996,7 +1998,7 @@ ProcXpGetDocumentData(ClientPtr client)
if((pContext = (XpContextPtr)SecurityLookupIDByType(client,
stuff->printContext,
RTcontext,
- SecurityWriteAccess))
+ DixWriteAccess))
== (XpContextPtr)NULL)
{
client->errorValue = stuff->printContext;
@@ -2079,7 +2081,7 @@ ProcXpGetAttributes(ClientPtr client)
client,
stuff->printContext,
RTcontext,
- SecurityReadAccess))
+ DixReadAccess))
== (XpContextPtr)NULL)
{
client->errorValue = stuff->printContext;
@@ -2151,7 +2153,7 @@ ProcXpSetAttributes(ClientPtr client)
client,
stuff->printContext,
RTcontext,
- SecurityWriteAccess))
+ DixWriteAccess))
== (XpContextPtr)NULL)
{
client->errorValue = stuff->printContext;
@@ -2231,7 +2233,7 @@ ProcXpGetOneAttribute(ClientPtr client)
client,
stuff->printContext,
RTcontext,
- SecurityReadAccess))
+ DixReadAccess))
== (XpContextPtr)NULL)
{
client->errorValue = stuff->printContext;
@@ -2302,7 +2304,7 @@ ProcXpSelectInput(ClientPtr client)
if((pContext=(XpContextPtr)SecurityLookupIDByType(client,
stuff->printContext,
RTcontext,
- SecurityWriteAccess))
+ DixWriteAccess))
== (XpContextPtr)NULL)
{
client->errorValue = stuff->printContext;
@@ -2338,7 +2340,7 @@ ProcXpInputSelected(ClientPtr client)
if((pContext=(XpContextPtr)SecurityLookupIDByType(client,
stuff->printContext,
RTcontext,
- SecurityReadAccess))
+ DixReadAccess))
== (XpContextPtr)NULL)
{
client->errorValue = stuff->printContext;
diff --git a/Xext/xres.c b/Xext/xres.c
index 9f3624ba5..1617337bf 100644
--- a/Xext/xres.c
+++ b/Xext/xres.c
@@ -1,8 +1,6 @@
/*
Copyright (c) 2002 XFree86 Inc
*/
-/* $XFree86: xc/programs/Xserver/Xext/xres.c,v 1.7tsi Exp $ */
-/* $XdotOrg: xserver/xorg/Xext/xres.c,v 1.8 2006/02/11 19:16:50 alanc Exp $ */
#define NEED_EVENTS
#define NEED_REPLIES
@@ -21,6 +19,8 @@
#include "swaprep.h"
#include <X11/extensions/XResproto.h>
#include "pixmapstr.h"
+#include "windowstr.h"
+#include "gcstruct.h"
#include "modinit.h"
static int
@@ -156,6 +156,7 @@ ProcXResQueryClientResources (ClientPtr client)
swapl (&rep.length, n);
swapl (&rep.num_types, n);
}
+
WriteToClient (client,sizeof(xXResQueryClientResourcesReply),(char*)&rep);
if(num_types) {
@@ -187,13 +188,54 @@ ProcXResQueryClientResources (ClientPtr client)
return (client->noClientException);
}
+static unsigned long
+ResGetApproxPixmapBytes (PixmapPtr pix)
+{
+ unsigned long nPixels;
+ int bytesPerPixel;
+
+ bytesPerPixel = pix->drawable.bitsPerPixel>>3;
+ nPixels = pix->drawable.width * pix->drawable.height;
+
+ /* Divide by refcnt as pixmap could be shared between clients,
+ * so total pixmap mem is shared between these.
+ */
+ return ( nPixels * bytesPerPixel ) / pix->refcnt;
+}
+
static void
ResFindPixmaps (pointer value, XID id, pointer cdata)
{
unsigned long *bytes = (unsigned long *)cdata;
PixmapPtr pix = (PixmapPtr)value;
- *bytes += (pix->devKind * pix->drawable.height);
+ *bytes += ResGetApproxPixmapBytes(pix);
+}
+
+static void
+ResFindWindowPixmaps (pointer value, XID id, pointer cdata)
+{
+ unsigned long *bytes = (unsigned long *)cdata;
+ WindowPtr pWin = (WindowPtr)value;
+
+ if (pWin->backgroundState == BackgroundPixmap)
+ *bytes += ResGetApproxPixmapBytes(pWin->background.pixmap);
+
+ if (pWin->border.pixmap != NULL && !pWin->borderIsPixel)
+ *bytes += ResGetApproxPixmapBytes(pWin->border.pixmap);
+}
+
+static void
+ResFindGCPixmaps (pointer value, XID id, pointer cdata)
+{
+ unsigned long *bytes = (unsigned long *)cdata;
+ GCPtr pGC = (GCPtr)value;
+
+ if (pGC->stipple != NULL)
+ *bytes += ResGetApproxPixmapBytes(pGC->stipple);
+
+ if (pGC->tile.pixmap != NULL && !pGC->tileIsPixel)
+ *bytes += ResGetApproxPixmapBytes(pGC->tile.pixmap);
}
static int
@@ -220,6 +262,24 @@ ProcXResQueryClientPixmapBytes (ClientPtr client)
FindClientResourcesByType(clients[clientID], RT_PIXMAP, ResFindPixmaps,
(pointer)(&bytes));
+ /*
+ * Make sure win background pixmaps also held to account.
+ */
+ FindClientResourcesByType(clients[clientID], RT_WINDOW,
+ ResFindWindowPixmaps,
+ (pointer)(&bytes));
+
+ /*
+ * GC Tile & Stipple pixmaps too.
+ */
+ FindClientResourcesByType(clients[clientID], RT_GC,
+ ResFindGCPixmaps,
+ (pointer)(&bytes));
+
+#ifdef COMPOSITE
+ /* FIXME: include composite pixmaps too */
+#endif
+
rep.type = X_Reply;
rep.sequenceNumber = client->sequence;
rep.length = 0;
diff --git a/Xext/xtest.c b/Xext/xtest.c
index 6737185aa..c9b511e69 100644
--- a/Xext/xtest.c
+++ b/Xext/xtest.c
@@ -1,5 +1,3 @@
-/* $XdotOrg: xserver/xorg/Xext/xtest.c,v 1.6 2005/07/03 08:53:36 daniels Exp $ */
-/* $Xorg: xtest.c,v 1.4 2001/02/09 02:04:33 xorgcvs Exp $ */
/*
Copyright 1992, 1998 The Open Group
@@ -27,7 +25,6 @@ other dealings in this Software without prior written authorization
from The Open Group.
*/
-/* $XFree86: xc/programs/Xserver/Xext/xtest.c,v 3.10 2003/10/28 23:08:44 tsi Exp $ */
#ifdef HAVE_DIX_CONFIG_H
#include <dix-config.h>
@@ -142,12 +139,12 @@ ProcXTestCompareCursor(client)
xXTestCompareCursorReply rep;
WindowPtr pWin;
CursorPtr pCursor;
- register int n;
+ register int n, rc;
REQUEST_SIZE_MATCH(xXTestCompareCursorReq);
- pWin = (WindowPtr)LookupWindow(stuff->window, client);
- if (!pWin)
- return(BadWindow);
+ rc = dixLookupWindow(&pWin, stuff->window, client, DixUnknownAccess);
+ if (rc != Success)
+ return rc;
if (stuff->cursor == None)
pCursor = NullCursor;
else if (stuff->cursor == XTestCurrentCursor)
@@ -176,12 +173,10 @@ ProcXTestFakeInput(client)
register ClientPtr client;
{
REQUEST(xXTestFakeInputReq);
- int nev;
- int n;
+ int nev, n, type, rc;
xEvent *ev;
DeviceIntPtr dev = NULL;
WindowPtr root;
- int type;
#ifdef XINPUT
Bool extension = FALSE;
deviceValuator *dv = NULL;
@@ -370,9 +365,10 @@ ProcXTestFakeInput(client)
root = GetCurrentRootWindow();
else
{
- root = LookupWindow(ev->u.keyButtonPointer.root, client);
- if (!root)
- return BadWindow;
+ rc = dixLookupWindow(&root, ev->u.keyButtonPointer.root, client,
+ DixUnknownAccess);
+ if (rc != Success)
+ return rc;
if (root->parent)
{
client->errorValue = ev->u.keyButtonPointer.root;
diff --git a/Xext/xvdisp.c b/Xext/xvdisp.c
index 7c490abca..21d00aa7f 100644
--- a/Xext/xvdisp.c
+++ b/Xext/xvdisp.c
@@ -1,4 +1,3 @@
-/* $XdotOrg: xserver/xorg/Xext/xvdisp.c,v 1.6 2005/07/03 08:53:36 daniels Exp $ */
/***********************************************************
Copyright 1991 by Digital Equipment Corporation, Maynard, Massachusetts,
and the Massachusetts Institute of Technology, Cambridge, Massachusetts.
@@ -22,7 +21,6 @@ ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
SOFTWARE.
******************************************************************/
-/* $XFree86: xc/programs/Xserver/Xext/xvdisp.c,v 1.27 2003/07/16 01:38:31 dawes Exp $ */
/*
** File:
@@ -375,10 +373,8 @@ ProcXvQueryAdaptors(ClientPtr client)
xvFormat format;
xvAdaptorInfo ainfo;
xvQueryAdaptorsReply rep;
- int totalSize;
- int na;
+ int totalSize, na, nf, rc;
XvAdaptorPtr pa;
- int nf;
XvFormatPtr pf;
WindowPtr pWin;
ScreenPtr pScreen;
@@ -387,11 +383,9 @@ ProcXvQueryAdaptors(ClientPtr client)
REQUEST(xvQueryAdaptorsReq);
REQUEST_SIZE_MATCH(xvQueryAdaptorsReq);
- if(!(pWin = (WindowPtr)LookupWindow(stuff->window, client) ))
- {
- client->errorValue = stuff->window;
- return (BadWindow);
- }
+ rc = dixLookupWindow(&pWin, stuff->window, client, DixUnknownAccess);
+ if (rc != Success)
+ return rc;
pScreen = pWin->drawable.pScreen;
pxvs = (XvScreenPtr)pScreen->devPrivates[XvScreenIndex].ptr;
@@ -533,9 +527,9 @@ ProcXvQueryEncodings(ClientPtr client)
static int
ProcXvPutVideo(ClientPtr client)
{
- register DrawablePtr pDraw;
+ DrawablePtr pDraw;
XvPortPtr pPort;
- register GCPtr pGC;
+ GCPtr pGC;
int status;
REQUEST(xvPutVideoReq);
@@ -579,9 +573,9 @@ ProcXvPutVideo(ClientPtr client)
static int
ProcXvPutStill(ClientPtr client)
{
- register DrawablePtr pDraw;
+ DrawablePtr pDraw;
XvPortPtr pPort;
- register GCPtr pGC;
+ GCPtr pGC;
int status;
REQUEST(xvPutStillReq);
@@ -626,9 +620,9 @@ ProcXvPutStill(ClientPtr client)
static int
ProcXvGetVideo(ClientPtr client)
{
- register DrawablePtr pDraw;
+ DrawablePtr pDraw;
XvPortPtr pPort;
- register GCPtr pGC;
+ GCPtr pGC;
int status;
REQUEST(xvGetVideoReq);
@@ -673,9 +667,9 @@ ProcXvGetVideo(ClientPtr client)
static int
ProcXvGetStill(ClientPtr client)
{
- register DrawablePtr pDraw;
+ DrawablePtr pDraw;
XvPortPtr pPort;
- register GCPtr pGC;
+ GCPtr pGC;
int status;
REQUEST(xvGetStillReq);
@@ -719,15 +713,14 @@ ProcXvGetStill(ClientPtr client)
static int
ProcXvSelectVideoNotify(ClientPtr client)
{
- register DrawablePtr pDraw;
+ DrawablePtr pDraw;
+ int rc;
REQUEST(xvSelectVideoNotifyReq);
REQUEST_SIZE_MATCH(xvSelectVideoNotifyReq);
- if(!(pDraw = (DrawablePtr)LOOKUP_DRAWABLE(stuff->drawable, client) ))
- {
- client->errorValue = stuff->drawable;
- return (BadWindow);
- }
+ rc = dixLookupDrawable(&pDraw, stuff->drawable, client, 0, DixUnknownAccess);
+ if (rc != Success)
+ return rc;
return XVCALL(diSelectVideoNotify)(client, pDraw, stuff->onoff);
@@ -824,8 +817,8 @@ ProcXvUngrabPort(ClientPtr client)
static int
ProcXvStopVideo(ClientPtr client)
{
- int status;
- register DrawablePtr pDraw;
+ int status, rc;
+ DrawablePtr pDraw;
XvPortPtr pPort;
REQUEST(xvStopVideoReq);
REQUEST_SIZE_MATCH(xvStopVideoReq);
@@ -842,11 +835,9 @@ ProcXvStopVideo(ClientPtr client)
return (status);
}
- if(!(pDraw = LOOKUP_DRAWABLE(stuff->drawable, client) ))
- {
- client->errorValue = stuff->drawable;
- return (BadDrawable);
- }
+ rc = dixLookupDrawable(&pDraw, stuff->drawable, client, 0, DixUnknownAccess);
+ if (rc != Success)
+ return rc;
return XVCALL(diStopVideo)(client, pPort, pDraw);
@@ -1879,11 +1870,11 @@ XineramaXvStopVideo(ClientPtr client)
REQUEST_SIZE_MATCH(xvStopVideoReq);
if(!(draw = (PanoramiXRes *)SecurityLookupIDByClass(
- client, stuff->drawable, XRC_DRAWABLE, SecurityWriteAccess)))
+ client, stuff->drawable, XRC_DRAWABLE, DixWriteAccess)))
return BadDrawable;
if(!(port = (PanoramiXRes *)SecurityLookupIDByType(
- client, stuff->port, XvXRTPort, SecurityReadAccess)))
+ client, stuff->port, XvXRTPort, DixReadAccess)))
return _XvBadPort;
FOR_NSCREENS_BACKWARD(i) {
@@ -1907,7 +1898,7 @@ XineramaXvSetPortAttribute(ClientPtr client)
REQUEST_SIZE_MATCH(xvSetPortAttributeReq);
if(!(port = (PanoramiXRes *)SecurityLookupIDByType(
- client, stuff->port, XvXRTPort, SecurityReadAccess)))
+ client, stuff->port, XvXRTPort, DixReadAccess)))
return _XvBadPort;
FOR_NSCREENS_BACKWARD(i) {
@@ -1933,15 +1924,15 @@ XineramaXvShmPutImage(ClientPtr client)
REQUEST_SIZE_MATCH(xvShmPutImageReq);
if(!(draw = (PanoramiXRes *)SecurityLookupIDByClass(
- client, stuff->drawable, XRC_DRAWABLE, SecurityWriteAccess)))
+ client, stuff->drawable, XRC_DRAWABLE, DixWriteAccess)))
return BadDrawable;
if(!(gc = (PanoramiXRes *)SecurityLookupIDByType(
- client, stuff->gc, XRT_GC, SecurityReadAccess)))
+ client, stuff->gc, XRT_GC, DixReadAccess)))
return BadGC;
if(!(port = (PanoramiXRes *)SecurityLookupIDByType(
- client, stuff->port, XvXRTPort, SecurityReadAccess)))
+ client, stuff->port, XvXRTPort, DixReadAccess)))
return _XvBadPort;
isRoot = (draw->type == XRT_WINDOW) && draw->u.win.root;
@@ -1980,15 +1971,15 @@ XineramaXvPutImage(ClientPtr client)
REQUEST_AT_LEAST_SIZE(xvPutImageReq);
if(!(draw = (PanoramiXRes *)SecurityLookupIDByClass(
- client, stuff->drawable, XRC_DRAWABLE, SecurityWriteAccess)))
+ client, stuff->drawable, XRC_DRAWABLE, DixWriteAccess)))
return BadDrawable;
if(!(gc = (PanoramiXRes *)SecurityLookupIDByType(
- client, stuff->gc, XRT_GC, SecurityReadAccess)))
+ client, stuff->gc, XRT_GC, DixReadAccess)))
return BadGC;
if(!(port = (PanoramiXRes *)SecurityLookupIDByType(
- client, stuff->port, XvXRTPort, SecurityReadAccess)))
+ client, stuff->port, XvXRTPort, DixReadAccess)))
return _XvBadPort;
isRoot = (draw->type == XRT_WINDOW) && draw->u.win.root;
@@ -2025,15 +2016,15 @@ XineramaXvPutVideo(ClientPtr client)
REQUEST_AT_LEAST_SIZE(xvPutVideoReq);
if(!(draw = (PanoramiXRes *)SecurityLookupIDByClass(
- client, stuff->drawable, XRC_DRAWABLE, SecurityWriteAccess)))
+ client, stuff->drawable, XRC_DRAWABLE, DixWriteAccess)))
return BadDrawable;
if(!(gc = (PanoramiXRes *)SecurityLookupIDByType(
- client, stuff->gc, XRT_GC, SecurityReadAccess)))
+ client, stuff->gc, XRT_GC, DixReadAccess)))
return BadGC;
if(!(port = (PanoramiXRes *)SecurityLookupIDByType(
- client, stuff->port, XvXRTPort, SecurityReadAccess)))
+ client, stuff->port, XvXRTPort, DixReadAccess)))
return _XvBadPort;
isRoot = (draw->type == XRT_WINDOW) && draw->u.win.root;
@@ -2070,15 +2061,15 @@ XineramaXvPutStill(ClientPtr client)
REQUEST_AT_LEAST_SIZE(xvPutImageReq);
if(!(draw = (PanoramiXRes *)SecurityLookupIDByClass(
- client, stuff->drawable, XRC_DRAWABLE, SecurityWriteAccess)))
+ client, stuff->drawable, XRC_DRAWABLE, DixWriteAccess)))
return BadDrawable;
if(!(gc = (PanoramiXRes *)SecurityLookupIDByType(
- client, stuff->gc, XRT_GC, SecurityReadAccess)))
+ client, stuff->gc, XRT_GC, DixReadAccess)))
return BadGC;
if(!(port = (PanoramiXRes *)SecurityLookupIDByType(
- client, stuff->port, XvXRTPort, SecurityReadAccess)))
+ client, stuff->port, XvXRTPort, DixReadAccess)))
return _XvBadPort;
isRoot = (draw->type == XRT_WINDOW) && draw->u.win.root;
diff --git a/Xext/xvdix.h b/Xext/xvdix.h
index 99d918406..9e94e05d5 100644
--- a/Xext/xvdix.h
+++ b/Xext/xvdix.h
@@ -21,7 +21,6 @@ ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
SOFTWARE.
******************************************************************/
-/* $XFree86: xc/programs/Xserver/Xext/xvdix.h,v 1.7 2001/05/07 21:37:51 tsi Exp $ */
#ifndef XVDIX_H
#define XVDIX_H
diff --git a/Xext/xvmain.c b/Xext/xvmain.c
index 422032da9..22339011c 100644
--- a/Xext/xvmain.c
+++ b/Xext/xvmain.c
@@ -1,4 +1,3 @@
-/* $XdotOrg: xserver/xorg/Xext/xvmain.c,v 1.7 2006/02/10 22:00:20 anholt Exp $ */
/***********************************************************
Copyright 1991 by Digital Equipment Corporation, Maynard, Massachusetts,
and the Massachusetts Institute of Technology, Cambridge, Massachusetts.
@@ -22,7 +21,6 @@ ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
SOFTWARE.
******************************************************************/
-/* $XFree86: xc/programs/Xserver/Xext/xvmain.c,v 1.15tsi Exp $ */
/*
** File:
diff --git a/Xext/xvmc.c b/Xext/xvmc.c
index a814f003e..737fc5dfd 100644
--- a/Xext/xvmc.c
+++ b/Xext/xvmc.c
@@ -1,4 +1,3 @@
-/* $XFree86: xc/programs/Xserver/Xext/xvmc.c,v 1.8 2003/07/16 01:38:31 dawes Exp $ */
#define NEED_REPLIES
#define NEED_EVENTS
diff --git a/Xext/xvmcext.h b/Xext/xvmcext.h
index c7eba30ad..9c019fee6 100644
--- a/Xext/xvmcext.h
+++ b/Xext/xvmcext.h
@@ -1,4 +1,3 @@
-/* $XFree86: xc/programs/Xserver/Xext/xvmcext.h,v 1.1 2001/04/07 11:04:21 alanh Exp $ */
#ifndef _XVMC_H
#define _XVMC_H
diff --git a/Xi/Makefile.am b/Xi/Makefile.am
index 8eac59bb6..fbe438543 100644
--- a/Xi/Makefile.am
+++ b/Xi/Makefile.am
@@ -1,6 +1,6 @@
noinst_LTLIBRARIES = libXi.la
-AM_CFLAGS = $(DIX_CFLAGS) @SERVER_DEFINES@ @LOADER_DEFINES@
+AM_CFLAGS = $(DIX_CFLAGS)
libXi_la_SOURCES = \
allowev.c \
diff --git a/Xi/chgdctl.c b/Xi/chgdctl.c
index d507513a9..badd93822 100644
--- a/Xi/chgdctl.c
+++ b/Xi/chgdctl.c
@@ -66,6 +66,7 @@ SOFTWARE.
#include "extnsionst.h"
#include "extinit.h" /* LookupDeviceIntRec */
#include "exglobals.h"
+#include "exevents.h"
#include "chgdctl.h"
@@ -98,12 +99,17 @@ int
ProcXChangeDeviceControl(ClientPtr client)
{
unsigned len;
- int i, status;
+ int i, status, ret = BadValue;
DeviceIntPtr dev;
xDeviceResolutionCtl *r;
xChangeDeviceControlReply rep;
AxisInfoPtr a;
CARD32 *resolution;
+ xDeviceAbsCalibCtl *calib;
+ xDeviceAbsAreaCtl *area;
+ xDeviceCoreCtl *c;
+ xDeviceEnableCtl *e;
+ devicePresenceNotify dpn;
REQUEST(xChangeDeviceControlReq);
REQUEST_AT_LEAST_SIZE(xChangeDeviceControlReq);
@@ -111,9 +117,8 @@ ProcXChangeDeviceControl(ClientPtr client)
len = stuff->length - (sizeof(xChangeDeviceControlReq) >> 2);
dev = LookupDeviceIntRec(stuff->deviceid);
if (dev == NULL) {
- SendErrorToClient(client, IReqCode, X_ChangeDeviceControl, 0,
- BadDevice);
- return Success;
+ ret = BadDevice;
+ goto out;
}
rep.repType = X_Reply;
@@ -126,25 +131,22 @@ ProcXChangeDeviceControl(ClientPtr client)
r = (xDeviceResolutionCtl *) & stuff[1];
if ((len < (sizeof(xDeviceResolutionCtl) >> 2)) ||
(len != (sizeof(xDeviceResolutionCtl) >> 2) + r->num_valuators)) {
- SendErrorToClient(client, IReqCode, X_ChangeDeviceControl,
- 0, BadLength);
- return Success;
+ ret = BadLength;
+ goto out;
}
if (!dev->valuator) {
- SendErrorToClient(client, IReqCode, X_ChangeDeviceControl, 0,
- BadMatch);
- return Success;
+ ret = BadMatch;
+ goto out;
}
if ((dev->grab) && !SameClient(dev->grab, client)) {
rep.status = AlreadyGrabbed;
- WriteReplyToClient(client, sizeof(xChangeDeviceControlReply), &rep);
- return Success;
+ ret = Success;
+ goto out;
}
resolution = (CARD32 *) (r + 1);
if (r->first_valuator + r->num_valuators > dev->valuator->numAxes) {
- SendErrorToClient(client, IReqCode, X_ChangeDeviceControl, 0,
- BadValue);
- return Success;
+ ret = BadValue;
+ goto out;
}
status = ChangeDeviceControl(client, dev, (xDeviceCtl *) r);
if (status == Success) {
@@ -158,21 +160,119 @@ ProcXChangeDeviceControl(ClientPtr client)
}
for (i = 0; i < r->num_valuators; i++)
(a++)->resolution = *resolution++;
+
+ ret = Success;
} else if (status == DeviceBusy) {
rep.status = DeviceBusy;
- WriteReplyToClient(client, sizeof(xChangeDeviceControlReply), &rep);
- return Success;
+ ret = Success;
} else {
- SendErrorToClient(client, IReqCode, X_ChangeDeviceControl, 0,
- BadMatch);
- return Success;
+ ret = BadMatch;
}
break;
+ case DEVICE_ABS_CALIB:
+ calib = (xDeviceAbsCalibCtl *)&stuff[1];
+
+ if (calib->button_threshold < 0 || calib->button_threshold > 255) {
+ ret = BadValue;
+ goto out;
+ }
+
+ status = ChangeDeviceControl(client, dev, (xDeviceCtl *) calib);
+
+ if (status == Success) {
+ dev->absolute->min_x = calib->min_x;
+ dev->absolute->max_x = calib->max_x;
+ dev->absolute->min_y = calib->min_y;
+ dev->absolute->max_y = calib->max_y;
+ dev->absolute->flip_x = calib->flip_x;
+ dev->absolute->flip_y = calib->flip_y;
+ dev->absolute->rotation = calib->rotation;
+ dev->absolute->button_threshold = calib->button_threshold;
+ ret = Success;
+ } else if (status == DeviceBusy || status == BadValue) {
+ rep.status = status;
+ ret = Success;
+ } else {
+ ret = BadMatch;
+ }
+
+ break;
+ case DEVICE_ABS_AREA:
+ area = (xDeviceAbsAreaCtl *)&stuff[1];
+
+ status = ChangeDeviceControl(client, dev, (xDeviceCtl *) area);
+
+ if (status == Success) {
+ dev->absolute->offset_x = area->offset_x;
+ dev->absolute->offset_y = area->offset_y;
+ dev->absolute->width = area->width;
+ dev->absolute->height = area->height;
+ dev->absolute->screen = area->screen;
+ dev->absolute->following = area->following;
+ ret = Success;
+ } else if (status == DeviceBusy || status == BadValue) {
+ rep.status = status;
+ ret = Success;
+ } else {
+ ret = Success;
+ }
+
+ break;
+ case DEVICE_CORE:
+ c = (xDeviceCoreCtl *)&stuff[1];
+
+ status = ChangeDeviceControl(client, dev, (xDeviceCtl *) c);
+
+ if (status == Success) {
+ dev->coreEvents = c->status;
+ ret = Success;
+ } else if (status == DeviceBusy) {
+ rep.status = DeviceBusy;
+ ret = Success;
+ } else {
+ ret = BadMatch;
+ }
+
+ break;
+ case DEVICE_ENABLE:
+ e = (xDeviceEnableCtl *)&stuff[1];
+
+ status = ChangeDeviceControl(client, dev, (xDeviceCtl *) e);
+
+ if (status == Success) {
+ if (e->enable)
+ EnableDevice(dev);
+ else
+ DisableDevice(dev);
+ ret = Success;
+ } else if (status == DeviceBusy) {
+ rep.status = DeviceBusy;
+ ret = Success;
+ } else {
+ ret = BadMatch;
+ }
+
+ break;
default:
- SendErrorToClient(client, IReqCode, X_ChangeDeviceControl, 0, BadValue);
- return Success;
+ ret = BadValue;
}
- WriteReplyToClient(client, sizeof(xChangeDeviceControlReply), &rep);
+
+out:
+ if (ret == Success) {
+ dpn.type = DevicePresenceNotify;
+ dpn.time = currentTime.milliseconds;
+ dpn.devchange = 1;
+ dpn.deviceid = dev->id;
+ dpn.control = stuff->control;
+ SendEventToAllWindows(dev, DevicePresenceNotifyMask,
+ (xEvent *) &dpn, 1);
+
+ WriteReplyToClient(client, sizeof(xChangeDeviceControlReply), &rep);
+ }
+ else {
+ SendErrorToClient(client, IReqCode, X_ChangeDeviceControl, 0, ret);
+ }
+
return Success;
}
diff --git a/Xi/chgkbd.c b/Xi/chgkbd.c
index 289bd85af..8134b4060 100644
--- a/Xi/chgkbd.c
+++ b/Xi/chgkbd.c
@@ -64,7 +64,6 @@ SOFTWARE.
#include "XIstubs.h"
#include "globals.h"
#include "extnsionst.h"
-#include "extinit.h" /* LookupDeviceIntRec */
#include "exevents.h"
#include "exglobals.h"
@@ -99,107 +98,10 @@ SProcXChangeKeyboardDevice(register ClientPtr client)
int
ProcXChangeKeyboardDevice(register ClientPtr client)
{
- int i;
- DeviceIntPtr xkbd = inputInfo.keyboard;
- DeviceIntPtr dev;
- FocusClassPtr xf = xkbd->focus;
- FocusClassPtr df;
- KeyClassPtr k;
- xChangeKeyboardDeviceReply rep;
- changeDeviceNotify ev;
-
REQUEST(xChangeKeyboardDeviceReq);
REQUEST_SIZE_MATCH(xChangeKeyboardDeviceReq);
- rep.repType = X_Reply;
- rep.RepType = X_ChangeKeyboardDevice;
- rep.length = 0;
- rep.sequenceNumber = client->sequence;
-
- dev = LookupDeviceIntRec(stuff->deviceid);
- if (dev == NULL) {
- rep.status = -1;
- SendErrorToClient(client, IReqCode, X_ChangeKeyboardDevice, 0,
- BadDevice);
- return Success;
- }
-
- k = dev->key;
- if (k == NULL) {
- rep.status = -1;
- SendErrorToClient(client, IReqCode, X_ChangeKeyboardDevice, 0,
- BadMatch);
- return Success;
- }
-
- if (((dev->grab) && !SameClient(dev->grab, client)) ||
- ((xkbd->grab) && !SameClient(xkbd->grab, client)))
- rep.status = AlreadyGrabbed;
- else if ((dev->sync.frozen &&
- dev->sync.other && !SameClient(dev->sync.other, client)) ||
- (xkbd->sync.frozen &&
- xkbd->sync.other && !SameClient(xkbd->sync.other, client)))
- rep.status = GrabFrozen;
- else {
- if (ChangeKeyboardDevice(xkbd, dev) != Success) {
- SendErrorToClient(client, IReqCode, X_ChangeKeyboardDevice, 0,
- BadDevice);
- return Success;
- }
- if (!dev->focus)
- InitFocusClassDeviceStruct(dev);
- if (!dev->kbdfeed)
- InitKbdFeedbackClassDeviceStruct(dev, (BellProcPtr) NoopDDA,
- (KbdCtrlProcPtr) NoopDDA);
- df = dev->focus;
- df->win = xf->win;
- df->revert = xf->revert;
- df->time = xf->time;
- df->traceGood = xf->traceGood;
- if (df->traceSize != xf->traceSize) {
- Must_have_memory = TRUE; /* XXX */
- df->trace = (WindowPtr *) xrealloc(df->trace,
- xf->traceSize *
- sizeof(WindowPtr));
- Must_have_memory = FALSE; /* XXX */
- }
- df->traceSize = xf->traceSize;
- for (i = 0; i < df->traceSize; i++)
- df->trace[i] = xf->trace[i];
- RegisterOtherDevice(xkbd);
- RegisterKeyboardDevice(dev);
-
- ev.type = ChangeDeviceNotify;
- ev.deviceid = stuff->deviceid;
- ev.time = currentTime.milliseconds;
- ev.request = NewKeyboard;
-
- SendEventToAllWindows(dev, ChangeDeviceNotifyMask, (xEvent *) & ev, 1);
- SendMappingNotify(MappingKeyboard, k->curKeySyms.minKeyCode,
- k->curKeySyms.maxKeyCode - k->curKeySyms.minKeyCode +
- 1, client);
-
- rep.status = 0;
- }
-
- WriteReplyToClient(client, sizeof(xChangeKeyboardDeviceReply), &rep);
+ SendErrorToClient(client, IReqCode, X_ChangeKeyboardDevice, 0,
+ BadDevice);
return Success;
}
-
-/***********************************************************************
- *
- * This procedure writes the reply for the XChangeKeyboardDevice
- * function, if the client and server have a different byte ordering.
- *
- */
-
-void
-SRepXChangeKeyboardDevice(ClientPtr client, int size,
- xChangeKeyboardDeviceReply * rep)
-{
- register char n;
-
- swaps(&rep->sequenceNumber, n);
- swapl(&rep->length, n);
- WriteToClient(client, size, (char *)rep);
-}
diff --git a/Xi/chgkbd.h b/Xi/chgkbd.h
index 7a883b7f0..5f9922336 100644
--- a/Xi/chgkbd.h
+++ b/Xi/chgkbd.h
@@ -36,9 +36,4 @@ int SProcXChangeKeyboardDevice(ClientPtr /* client */
int ProcXChangeKeyboardDevice(ClientPtr /* client */
);
-void SRepXChangeKeyboardDevice(ClientPtr /* client */ ,
- int /* size */ ,
- xChangeKeyboardDeviceReply * /* rep */
- );
-
#endif /* CHGKBD_H */
diff --git a/Xi/chgprop.c b/Xi/chgprop.c
index 52c38838d..bab4597b8 100644
--- a/Xi/chgprop.c
+++ b/Xi/chgprop.c
@@ -106,7 +106,7 @@ SProcXChangeDeviceDontPropagateList(register ClientPtr client)
int
ProcXChangeDeviceDontPropagateList(register ClientPtr client)
{
- int i;
+ int i, rc;
WindowPtr pWin;
struct tmask tmp[EMASKSIZE];
OtherInputMasks *others;
@@ -121,11 +121,10 @@ ProcXChangeDeviceDontPropagateList(register ClientPtr client)
return Success;
}
- pWin = (WindowPtr) LookupWindow(stuff->window, client);
- if (!pWin) {
- client->errorValue = stuff->window;
+ rc = dixLookupWindow(&pWin, stuff->window, client, DixUnknownAccess);
+ if (rc != Success) {
SendErrorToClient(client, IReqCode, X_ChangeDeviceDontPropagateList, 0,
- BadWindow);
+ rc);
return Success;
}
diff --git a/Xi/chgptr.c b/Xi/chgptr.c
index f6f4b8bff..22c8a5f5e 100644
--- a/Xi/chgptr.c
+++ b/Xi/chgptr.c
@@ -101,138 +101,10 @@ SProcXChangePointerDevice(register ClientPtr client)
int
ProcXChangePointerDevice(register ClientPtr client)
{
- DeviceIntPtr xptr = inputInfo.pointer;
- DeviceIntPtr dev;
- ValuatorClassPtr v;
- xChangePointerDeviceReply rep;
- changeDeviceNotify ev;
-
REQUEST(xChangePointerDeviceReq);
REQUEST_SIZE_MATCH(xChangePointerDeviceReq);
- rep.repType = X_Reply;
- rep.RepType = X_ChangePointerDevice;
- rep.length = 0;
- rep.sequenceNumber = client->sequence;
-
- dev = LookupDeviceIntRec(stuff->deviceid);
- if (dev == NULL) {
- rep.status = -1;
- SendErrorToClient(client, IReqCode, X_ChangePointerDevice, 0,
- BadDevice);
- return Success;
- }
-
- v = dev->valuator;
- if (v == NULL || v->numAxes < 2 ||
- stuff->xaxis >= v->numAxes || stuff->yaxis >= v->numAxes) {
- rep.status = -1;
- SendErrorToClient(client, IReqCode, X_ChangePointerDevice, 0, BadMatch);
- return Success;
- }
-
- if (((dev->grab) && !SameClient(dev->grab, client)) ||
- ((xptr->grab) && !SameClient(xptr->grab, client)))
- rep.status = AlreadyGrabbed;
- else if ((dev->sync.frozen &&
- dev->sync.other && !SameClient(dev->sync.other, client)) ||
- (xptr->sync.frozen &&
- xptr->sync.other && !SameClient(xptr->sync.other, client)))
- rep.status = GrabFrozen;
- else {
- if (ChangePointerDevice(xptr, dev, stuff->xaxis, stuff->yaxis) !=
- Success) {
- SendErrorToClient(client, IReqCode, X_ChangePointerDevice, 0,
- BadDevice);
- return Success;
- }
- if (dev->focus)
- DeleteFocusClassDeviceStruct(dev);
- if (!dev->button)
- InitButtonClassDeviceStruct(dev, 0, NULL);
- if (!dev->ptrfeed)
- InitPtrFeedbackClassDeviceStruct(dev, (PtrCtrlProcPtr) NoopDDA);
- RegisterOtherDevice(xptr);
- RegisterPointerDevice(dev);
-
- ev.type = ChangeDeviceNotify;
- ev.deviceid = stuff->deviceid;
- ev.time = currentTime.milliseconds;
- ev.request = NewPointer;
-
- SendEventToAllWindows(dev, ChangeDeviceNotifyMask, (xEvent *) & ev, 1);
- SendMappingNotify(MappingPointer, 0, 0, client);
-
- rep.status = 0;
- }
-
- WriteReplyToClient(client, sizeof(xChangePointerDeviceReply), &rep);
+ SendErrorToClient(client, IReqCode, X_ChangePointerDevice, 0,
+ BadDevice);
return Success;
}
-
-void
-DeleteFocusClassDeviceStruct(DeviceIntPtr dev)
-{
- xfree(dev->focus->trace);
- xfree(dev->focus);
- dev->focus = NULL;
-}
-
-/***********************************************************************
- *
- * Send an event to interested clients in all windows on all screens.
- *
- */
-
-void
-SendEventToAllWindows(DeviceIntPtr dev, Mask mask, xEvent * ev, int count)
-{
- int i;
- WindowPtr pWin, p1;
-
- for (i = 0; i < screenInfo.numScreens; i++) {
- pWin = WindowTable[i];
- (void)DeliverEventsToWindow(pWin, ev, count, mask, NullGrab, dev->id);
- p1 = pWin->firstChild;
- FindInterestedChildren(dev, p1, mask, ev, count);
- }
-}
-
-/***********************************************************************
- *
- * Walk through the window tree, finding all clients that want to know
- * about the ChangeDeviceNotify Event.
- *
- */
-
-void
-FindInterestedChildren(DeviceIntPtr dev, WindowPtr p1, Mask mask,
- xEvent * ev, int count)
-{
- WindowPtr p2;
-
- while (p1) {
- p2 = p1->firstChild;
- (void)DeliverEventsToWindow(p1, ev, count, mask, NullGrab, dev->id);
- FindInterestedChildren(dev, p2, mask, ev, count);
- p1 = p1->nextSib;
- }
-}
-
-/***********************************************************************
- *
- * This procedure writes the reply for the XChangePointerDevice
- * function, if the client and server have a different byte ordering.
- *
- */
-
-void
-SRepXChangePointerDevice(ClientPtr client, int size,
- xChangePointerDeviceReply * rep)
-{
- register char n;
-
- swaps(&rep->sequenceNumber, n);
- swapl(&rep->length, n);
- WriteToClient(client, size, (char *)rep);
-}
diff --git a/Xi/chgptr.h b/Xi/chgptr.h
index aeda822aa..fb3b5cc39 100644
--- a/Xi/chgptr.h
+++ b/Xi/chgptr.h
@@ -53,9 +53,4 @@ void FindInterestedChildren( /* FIXME: could be static? */
int /* count */
);
-void SRepXChangePointerDevice(ClientPtr /* client */ ,
- int /* size */ ,
- xChangePointerDeviceReply * /* rep */
- );
-
#endif /* CHGPTR_H */
diff --git a/Xi/exevents.c b/Xi/exevents.c
index 2932ab2d2..b7645f443 100644
--- a/Xi/exevents.c
+++ b/Xi/exevents.c
@@ -71,8 +71,7 @@ SOFTWARE.
#include "exglobals.h"
#include "dixevents.h" /* DeliverFocusedEvent */
#include "dixgrabs.h" /* CreateGrab() */
-
-#include "chgptr.h"
+#include "scrnintstr.h"
#define WID(w) ((w) ? ((w)->drawable.id) : 0)
#define AllModifiersMask ( \
@@ -302,7 +301,12 @@ _X_EXPORT void
InitValuatorAxisStruct(DeviceIntPtr dev, int axnum, int minval, int maxval,
int resolution, int min_res, int max_res)
{
- register AxisInfoPtr ax = dev->valuator->axes + axnum;
+ register AxisInfoPtr ax;
+
+ if (!dev || !dev->valuator)
+ return;
+
+ ax = dev->valuator->axes + axnum;
ax->min_value = minval;
ax->max_value = maxval;
@@ -501,6 +505,7 @@ GrabButton(ClientPtr client, DeviceIntPtr dev, BYTE this_device_mode,
WindowPtr pWin, confineTo;
CursorPtr cursor;
GrabPtr grab;
+ int rc;
if ((this_device_mode != GrabModeSync) &&
(this_device_mode != GrabModeAsync)) {
@@ -520,15 +525,15 @@ GrabButton(ClientPtr client, DeviceIntPtr dev, BYTE this_device_mode,
client->errorValue = ownerEvents;
return BadValue;
}
- pWin = LookupWindow(grabWindow, client);
- if (!pWin)
- return BadWindow;
+ rc = dixLookupWindow(&pWin, grabWindow, client, DixUnknownAccess);
+ if (rc != Success)
+ return rc;
if (rconfineTo == None)
confineTo = NullWindow;
else {
- confineTo = LookupWindow(rconfineTo, client);
- if (!confineTo)
- return BadWindow;
+ rc = dixLookupWindow(&confineTo, rconfineTo, client, DixUnknownAccess);
+ if (rc != Success)
+ return rc;
}
if (rcursor == None)
cursor = NullCursor;
@@ -558,6 +563,7 @@ GrabKey(ClientPtr client, DeviceIntPtr dev, BYTE this_device_mode,
WindowPtr pWin;
GrabPtr grab;
KeyClassPtr k = dev->key;
+ int rc;
if (k == NULL)
return BadMatch;
@@ -584,9 +590,9 @@ GrabKey(ClientPtr client, DeviceIntPtr dev, BYTE this_device_mode,
client->errorValue = ownerEvents;
return BadValue;
}
- pWin = LookupWindow(grabWindow, client);
- if (!pWin)
- return BadWindow;
+ rc = dixLookupWindow(&pWin, grabWindow, client, DixUnknownAccess);
+ if (rc != Success)
+ return rc;
grab = CreateGrab(client->index, dev, pWin,
mask, ownerEvents, this_device_mode, other_devices_mode,
@@ -806,7 +812,7 @@ SendEvent(ClientPtr client, DeviceIntPtr d, Window dest, Bool propagate,
} else
effectiveFocus = pWin = inputFocus;
} else
- pWin = LookupWindow(dest, client);
+ dixLookupWindow(&pWin, dest, client, DixUnknownAccess);
if (!pWin)
return BadWindow;
if ((propagate != xFalse) && (propagate != xTrue)) {
@@ -898,7 +904,7 @@ SetModifierMapping(ClientPtr client, DeviceIntPtr dev, int len, int rlen,
return MappingBusy;
} else {
for (i = 0; i < inputMapLen; i++) {
- if (inputMap[i] && !LegalModifier(inputMap[i], (DevicePtr) dev)) {
+ if (inputMap[i] && !LegalModifier(inputMap[i], dev)) {
return MappingFailed;
}
}
@@ -1209,3 +1215,44 @@ ShouldFreeInputMasks(WindowPtr pWin, Bool ignoreSelectedEvents)
else
return FALSE;
}
+
+/***********************************************************************
+ *
+ * Walk through the window tree, finding all clients that want to know
+ * about the Event.
+ *
+ */
+
+void
+FindInterestedChildren(DeviceIntPtr dev, WindowPtr p1, Mask mask,
+ xEvent * ev, int count)
+{
+ WindowPtr p2;
+
+ while (p1) {
+ p2 = p1->firstChild;
+ (void)DeliverEventsToWindow(p1, ev, count, mask, NullGrab, dev->id);
+ FindInterestedChildren(dev, p2, mask, ev, count);
+ p1 = p1->nextSib;
+ }
+}
+
+/***********************************************************************
+ *
+ * Send an event to interested clients in all windows on all screens.
+ *
+ */
+
+void
+SendEventToAllWindows(DeviceIntPtr dev, Mask mask, xEvent * ev, int count)
+{
+ int i;
+ WindowPtr pWin, p1;
+
+ for (i = 0; i < screenInfo.numScreens; i++) {
+ pWin = WindowTable[i];
+ (void)DeliverEventsToWindow(pWin, ev, count, mask, NullGrab, dev->id);
+ p1 = pWin->firstChild;
+ FindInterestedChildren(dev, p1, mask, ev, count);
+ }
+}
diff --git a/Xi/exglobals.h b/Xi/exglobals.h
index c64b84875..3afd1bb9e 100644
--- a/Xi/exglobals.h
+++ b/Xi/exglobals.h
@@ -51,6 +51,7 @@ extern Mask DeviceMappingNotifyMask;
extern Mask DeviceOwnerGrabButtonMask;
extern Mask DeviceButtonGrabMask;
extern Mask DeviceButtonMotionMask;
+extern Mask DevicePresenceNotifyMask;
extern Mask PropagateMask[];
extern int DeviceValuator;
@@ -68,12 +69,8 @@ extern int DeviceKeyStateNotify;
extern int DeviceButtonStateNotify;
extern int DeviceMappingNotify;
extern int ChangeDeviceNotify;
+extern int DevicePresenceNotify;
extern int RT_INPUTCLIENT;
-#if 0
-/* FIXME: in dix */
-extern InputInfo inputInfo;
-#endif
-
#endif /* EXGLOBALS_H */
diff --git a/Xi/extinit.c b/Xi/extinit.c
index f3aabe3a7..454883762 100644
--- a/Xi/extinit.c
+++ b/Xi/extinit.c
@@ -166,6 +166,7 @@ Mask DeviceMappingNotifyMask;
Mask DeviceOwnerGrabButtonMask;
Mask DeviceButtonGrabMask;
Mask DeviceButtonMotionMask;
+Mask DevicePresenceNotifyMask;
int DeviceValuator;
int DeviceKeyPress;
@@ -182,6 +183,7 @@ int DeviceKeyStateNotify;
int DeviceButtonStateNotify;
int DeviceMappingNotify;
int ChangeDeviceNotify;
+int DevicePresenceNotify;
int RT_INPUTCLIENT;
@@ -202,8 +204,8 @@ Mask PropagateMask[MAX_DEVICES];
*/
static XExtensionVersion thisversion = { XI_Present,
- XI_Add_XChangeDeviceControl_Major,
- XI_Add_XChangeDeviceControl_Minor
+ XI_Add_DevicePresenceNotify_Major,
+ XI_Add_DevicePresenceNotify_Minor
};
/**********************************************************************
@@ -463,12 +465,6 @@ SReplyIDispatch(ClientPtr client, int len, xGrabDeviceReply * rep)
else if (rep->RepType == X_GetDeviceMotionEvents)
SRepXGetDeviceMotionEvents(client, len,
(xGetDeviceMotionEventsReply *) rep);
- else if (rep->RepType == X_ChangeKeyboardDevice)
- SRepXChangeKeyboardDevice(client, len,
- (xChangeKeyboardDeviceReply *) rep);
- else if (rep->RepType == X_ChangePointerDevice)
- SRepXChangePointerDevice(client, len,
- (xChangePointerDeviceReply *) rep);
else if (rep->RepType == X_GrabDevice)
SRepXGrabDevice(client, len, (xGrabDeviceReply *) rep);
else if (rep->RepType == X_GetDeviceFocus)
@@ -648,6 +644,17 @@ SDeviceMappingNotifyEvent(deviceMappingNotify * from, deviceMappingNotify * to)
swapl(&to->time, n);
}
+void
+SDevicePresenceNotifyEvent (devicePresenceNotify *from, devicePresenceNotify *to)
+{
+ register char n;
+
+ *to = *from;
+ swaps(&to->sequenceNumber,n);
+ swapl(&to->time, n);
+ swaps(&to->control, n);
+}
+
/************************************************************************
*
* This function sets up extension event types and masks.
@@ -674,6 +681,7 @@ FixExtensionEvents(ExtensionEntry * extEntry)
ChangeDeviceNotify = DeviceMappingNotify + 1;
DeviceKeyStateNotify = ChangeDeviceNotify + 1;
DeviceButtonStateNotify = DeviceKeyStateNotify + 1;
+ DevicePresenceNotify = DeviceButtonStateNotify + 1;
event_base[KeyClass] = DeviceKeyPress;
event_base[ButtonClass] = DeviceButtonPress;
@@ -746,6 +754,9 @@ FixExtensionEvents(ExtensionEntry * extEntry)
DeviceOwnerGrabButtonMask = GetNextExtEventMask();
SetEventInfo(DeviceOwnerGrabButtonMask, _deviceOwnerGrabButton);
+
+ DevicePresenceNotifyMask = GetNextExtEventMask();
+ SetEventInfo(DevicePresenceNotifyMask, _devicePresence);
SetEventInfo(0, _noExtensionEvent);
}
@@ -786,6 +797,7 @@ RestoreExtensionEvents(void)
ChangeDeviceNotify = 12;
DeviceKeyStateNotify = 13;
DeviceButtonStateNotify = 13;
+ DevicePresenceNotify = 14;
BadDevice = 0;
BadEvent = 1;
@@ -823,6 +835,7 @@ IResetProc(ExtensionEntry * unused)
EventSwapVector[DeviceButtonStateNotify] = NotImplemented;
EventSwapVector[DeviceMappingNotify] = NotImplemented;
EventSwapVector[ChangeDeviceNotify] = NotImplemented;
+ EventSwapVector[DevicePresenceNotify] = NotImplemented;
RestoreExtensionEvents();
}
@@ -857,9 +870,7 @@ MakeDeviceTypeAtoms(void)
}
/**************************************************************************
- *
* Return a DeviceIntPtr corresponding to a specified device id.
- * This will not return the pointer or keyboard, or devices that are not on.
*
*/
@@ -869,13 +880,16 @@ LookupDeviceIntRec(CARD8 id)
DeviceIntPtr dev;
for (dev = inputInfo.devices; dev; dev = dev->next) {
- if (dev->id == id) {
- if (id == inputInfo.pointer->id || id == inputInfo.keyboard->id)
- return (NULL);
- return (dev);
- }
+ if (dev->id == id)
+ return dev;
}
- return (NULL);
+
+ for (dev = inputInfo.off_devices; dev; dev = dev->next) {
+ if (dev->id == id)
+ return dev;
+ }
+
+ return NULL;
}
/**************************************************************************
diff --git a/Xi/getdctl.c b/Xi/getdctl.c
index c2b69fd71..d738ef83b 100644
--- a/Xi/getdctl.c
+++ b/Xi/getdctl.c
@@ -124,6 +124,30 @@ ProcXGetDeviceControl(ClientPtr client)
total_length = sizeof(xDeviceResolutionState) +
(3 * sizeof(int) * dev->valuator->numAxes);
break;
+ case DEVICE_ABS_CALIB:
+ if (!dev->absolute) {
+ SendErrorToClient(client, IReqCode, X_GetDeviceControl, 0,
+ BadMatch);
+ return Success;
+ }
+
+ total_length = sizeof(xDeviceAbsCalibCtl);
+ break;
+ case DEVICE_ABS_AREA:
+ if (!dev->absolute) {
+ SendErrorToClient(client, IReqCode, X_GetDeviceControl, 0,
+ BadMatch);
+ return Success;
+ }
+
+ total_length = sizeof(xDeviceAbsAreaCtl);
+ break;
+ case DEVICE_CORE:
+ total_length = sizeof(xDeviceCoreCtl);
+ break;
+ case DEVICE_ENABLE:
+ total_length = sizeof(xDeviceEnableCtl);
+ break;
default:
SendErrorToClient(client, IReqCode, X_GetDeviceControl, 0, BadValue);
return Success;
@@ -140,6 +164,18 @@ ProcXGetDeviceControl(ClientPtr client)
case DEVICE_RESOLUTION:
CopySwapDeviceResolution(client, dev->valuator, buf, total_length);
break;
+ case DEVICE_ABS_CALIB:
+ CopySwapDeviceAbsCalib(client, dev->absolute, buf);
+ break;
+ case DEVICE_ABS_AREA:
+ CopySwapDeviceAbsArea(client, dev->absolute, buf);
+ break;
+ case DEVICE_CORE:
+ CopySwapDeviceCore(client, dev, buf);
+ break;
+ case DEVICE_ENABLE:
+ CopySwapDeviceEnable(client, dev, buf);
+ break;
default:
break;
}
@@ -189,6 +225,98 @@ CopySwapDeviceResolution(ClientPtr client, ValuatorClassPtr v, char *buf,
}
}
+void CopySwapDeviceAbsCalib (ClientPtr client, AbsoluteClassPtr dts,
+ char *buf)
+{
+ register char n;
+ xDeviceAbsCalibState *calib = (xDeviceAbsCalibState *) buf;
+
+ calib->control = DEVICE_ABS_CALIB;
+ calib->length = sizeof(calib);
+ calib->min_x = dts->min_x;
+ calib->max_x = dts->max_x;
+ calib->min_y = dts->min_y;
+ calib->max_y = dts->max_y;
+ calib->flip_x = dts->flip_x;
+ calib->flip_y = dts->flip_y;
+ calib->rotation = dts->rotation;
+ calib->button_threshold = dts->button_threshold;
+
+ if (client->swapped) {
+ swaps(&calib->control, n);
+ swaps(&calib->length, n);
+ swapl(&calib->min_x, n);
+ swapl(&calib->max_x, n);
+ swapl(&calib->min_y, n);
+ swapl(&calib->max_y, n);
+ swapl(&calib->flip_x, n);
+ swapl(&calib->flip_y, n);
+ swapl(&calib->rotation, n);
+ swapl(&calib->button_threshold, n);
+ }
+}
+
+void CopySwapDeviceAbsArea (ClientPtr client, AbsoluteClassPtr dts,
+ char *buf)
+{
+ register char n;
+ xDeviceAbsAreaState *area = (xDeviceAbsAreaState *) buf;
+
+ area->control = DEVICE_ABS_AREA;
+ area->length = sizeof(area);
+ area->offset_x = dts->offset_x;
+ area->offset_y = dts->offset_y;
+ area->width = dts->width;
+ area->height = dts->height;
+ area->screen = dts->screen;
+ area->following = dts->following;
+
+ if (client->swapped) {
+ swaps(&area->control, n);
+ swaps(&area->length, n);
+ swapl(&area->offset_x, n);
+ swapl(&area->offset_y, n);
+ swapl(&area->width, n);
+ swapl(&area->height, n);
+ swapl(&area->screen, n);
+ swapl(&area->following, n);
+ }
+}
+
+void CopySwapDeviceCore (ClientPtr client, DeviceIntPtr dev, char *buf)
+{
+ register char n;
+ xDeviceCoreState *c = (xDeviceCoreState *) buf;
+
+ c->control = DEVICE_CORE;
+ c->length = sizeof(c);
+ c->status = dev->coreEvents;
+ c->iscore = (dev == inputInfo.keyboard || dev == inputInfo.pointer);
+
+ if (client->swapped) {
+ swaps(&c->control, n);
+ swaps(&c->length, n);
+ swaps(&c->status, n);
+ }
+}
+
+void CopySwapDeviceEnable (ClientPtr client, DeviceIntPtr dev, char *buf)
+{
+ register char n;
+ xDeviceEnableState *e = (xDeviceEnableState *) buf;
+
+ e->control = DEVICE_ENABLE;
+ e->length = sizeof(e);
+ e->enable = dev->enabled;
+
+ if (client->swapped) {
+ swaps(&e->control, n);
+ swaps(&e->length, n);
+ swaps(&e->enable, n);
+ }
+}
+
+
/***********************************************************************
*
* This procedure writes the reply for the xGetDeviceControl function,
diff --git a/Xi/getdctl.h b/Xi/getdctl.h
index c7cfb19d2..36868d8be 100644
--- a/Xi/getdctl.h
+++ b/Xi/getdctl.h
@@ -42,6 +42,24 @@ void CopySwapDeviceResolution(ClientPtr /* client */ ,
int /* length */
);
+void CopySwapDeviceAbsCalib (ClientPtr client,
+ AbsoluteClassPtr dts,
+ char *buf);
+
+void CopySwapDeviceAbsArea (ClientPtr client,
+ AbsoluteClassPtr dts,
+ char *buf);
+
+void CopySwapDeviceCore(ClientPtr /* client */ ,
+ DeviceIntPtr /* dev */ ,
+ char * /* buf */
+ );
+
+void CopySwapDeviceEnable(ClientPtr /* client */ ,
+ DeviceIntPtr /* dev */ ,
+ char * /* buf */
+ );
+
void SRepXGetDeviceControl(ClientPtr /* client */ ,
int /* size */ ,
xGetDeviceControlReply * /* rep */
diff --git a/Xi/getprop.c b/Xi/getprop.c
index 530841032..058c59514 100644
--- a/Xi/getprop.c
+++ b/Xi/getprop.c
@@ -100,7 +100,7 @@ int
ProcXGetDeviceDontPropagateList(register ClientPtr client)
{
CARD16 count = 0;
- int i;
+ int i, rc;
XEventClass *buf = NULL, *tbuf;
WindowPtr pWin;
xGetDeviceDontPropagateListReply rep;
@@ -115,11 +115,10 @@ ProcXGetDeviceDontPropagateList(register ClientPtr client)
rep.length = 0;
rep.count = 0;
- pWin = (WindowPtr) LookupWindow(stuff->window, client);
- if (!pWin) {
- client->errorValue = stuff->window;
+ rc = dixLookupWindow(&pWin, stuff->window, client, DixUnknownAccess);
+ if (rc != Success) {
SendErrorToClient(client, IReqCode, X_GetDeviceDontPropagateList, 0,
- BadWindow);
+ rc);
return Success;
}
diff --git a/Xi/getselev.c b/Xi/getselev.c
index a84c33d23..533c66cd7 100644
--- a/Xi/getselev.c
+++ b/Xi/getselev.c
@@ -98,8 +98,7 @@ SProcXGetSelectedExtensionEvents(register ClientPtr client)
int
ProcXGetSelectedExtensionEvents(register ClientPtr client)
{
- int i;
- int total_length = 0;
+ int i, rc, total_length = 0;
xGetSelectedExtensionEventsReply rep;
WindowPtr pWin;
XEventClass *buf = NULL;
@@ -118,9 +117,10 @@ ProcXGetSelectedExtensionEvents(register ClientPtr client)
rep.this_client_count = 0;
rep.all_clients_count = 0;
- if (!(pWin = LookupWindow(stuff->window, client))) {
+ rc = dixLookupWindow(&pWin, stuff->window, client, DixUnknownAccess);
+ if (rc != Success) {
SendErrorToClient(client, IReqCode, X_GetSelectedExtensionEvents, 0,
- BadWindow);
+ rc);
return Success;
}
diff --git a/Xi/listdev.c b/Xi/listdev.c
index 13e5ca729..02d55ad4c 100644
--- a/Xi/listdev.c
+++ b/Xi/listdev.c
@@ -96,7 +96,7 @@ int
ProcXListInputDevices(register ClientPtr client)
{
xListInputDevicesReply rep;
- int numdevs;
+ int numdevs = 0;
int namesize = 1; /* need 1 extra byte for strcpy */
int size = 0;
int total_length;
@@ -115,12 +115,15 @@ ProcXListInputDevices(register ClientPtr client)
rep.sequenceNumber = client->sequence;
AddOtherInputDevices();
- numdevs = inputInfo.numDevices;
- for (d = inputInfo.devices; d; d = d->next)
+ for (d = inputInfo.devices; d; d = d->next) {
SizeDeviceInfo(d, &namesize, &size);
- for (d = inputInfo.off_devices; d; d = d->next)
+ numdevs++;
+ }
+ for (d = inputInfo.off_devices; d; d = d->next) {
SizeDeviceInfo(d, &namesize, &size);
+ numdevs++;
+ }
total_length = numdevs * sizeof(xDeviceInfo) + size + namesize;
devbuf = (char *)xalloc(total_length);
@@ -241,6 +244,10 @@ CopySwapDevice(register ClientPtr client, DeviceIntPtr d, int num_classes,
dev->use = IsXKeyboard;
else if (d == inputInfo.pointer)
dev->use = IsXPointer;
+ else if (d->key && d->kbdfeed)
+ dev->use = IsXExtensionKeyboard;
+ else if (d->valuator && d->button)
+ dev->use = IsXExtensionPointer;
else
dev->use = IsXExtensionDevice;
if (client->swapped) {
diff --git a/Xi/selectev.c b/Xi/selectev.c
index 3483804b1..8c893ca1e 100644
--- a/Xi/selectev.c
+++ b/Xi/selectev.c
@@ -74,6 +74,53 @@ SOFTWARE.
extern Mask ExtExclusiveMasks[];
extern Mask ExtValidMasks[];
+static int
+HandleDevicePresenceMask(ClientPtr client, WindowPtr win,
+ XEventClass *cls, CARD16 *count)
+{
+ int i, j;
+ Mask mask;
+
+ /* We use the device ID 256 to select events that aren't bound to
+ * any device. For now we only handle the device presence event,
+ * but this could be extended to other events that aren't bound to
+ * a device.
+ *
+ * In order not to break in CreateMaskFromList() we remove the
+ * entries with device ID 256 from the XEventClass array.
+ */
+
+ mask = 0;
+ for (i = 0, j = 0; i < *count; i++) {
+ if (cls[i] >> 8 != 256) {
+ cls[j] = cls[i];
+ j++;
+ continue;
+ }
+
+ switch (cls[i] & 0xff) {
+ case _devicePresence:
+ mask |= DevicePresenceNotifyMask;
+ break;
+ }
+ }
+
+ *count = j;
+
+ if (mask == 0)
+ return Success;
+
+ /* We always only use mksidx = 0 for events not bound to
+ * devices */
+
+ if (AddExtensionClient (win, client, mask, 0) != Success)
+ return BadAlloc;
+
+ RecalculateDeviceDeliverableEvents(win);
+
+ return Success;
+}
+
/***********************************************************************
*
* Handle requests from clients with a different byte order.
@@ -123,14 +170,19 @@ ProcXSelectExtensionEvent(register ClientPtr client)
return Success;
}
- pWin = (WindowPtr) LookupWindow(stuff->window, client);
- if (!pWin) {
- client->errorValue = stuff->window;
- SendErrorToClient(client, IReqCode, X_SelectExtensionEvent, 0,
- BadWindow);
+ ret = dixLookupWindow(&pWin, stuff->window, client, DixUnknownAccess);
+ if (ret != Success) {
+ SendErrorToClient(client, IReqCode, X_SelectExtensionEvent, 0, ret);
return Success;
}
+ if (HandleDevicePresenceMask(client, pWin, (XEventClass *) & stuff[1],
+ &stuff->count) != Success) {
+ SendErrorToClient(client, IReqCode, X_SelectExtensionEvent, 0,
+ BadAlloc);
+ return Success;
+ }
+
if ((ret = CreateMaskFromList(client, (XEventClass *) & stuff[1],
stuff->count, tmp, NULL,
X_SelectExtensionEvent)) != Success)
diff --git a/Xi/stubs.c b/Xi/stubs.c
index 6b9e682b9..e2ed1ceff 100644
--- a/Xi/stubs.c
+++ b/Xi/stubs.c
@@ -68,86 +68,6 @@ SOFTWARE.
/***********************************************************************
*
- * 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 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.
@@ -287,7 +207,26 @@ ChangeDeviceControl(register ClientPtr client, DeviceIntPtr dev,
switch (control->control) {
case DEVICE_RESOLUTION:
return (BadMatch);
+ case DEVICE_ABS_CALIB:
+ case DEVICE_ABS_AREA:
+ return (BadMatch);
+ case DEVICE_CORE:
+ return (BadMatch);
default:
return (BadMatch);
}
}
+
+
+/****************************************************************************
+ *
+ * Caller: configAddDevice (and others)
+ *
+ * Add a new device with the specified options.
+ *
+ */
+int
+NewInputDeviceRequest(InputOption *options)
+{
+ return BadValue;
+}
diff --git a/Xi/ungrdevb.c b/Xi/ungrdevb.c
index 64bb213f5..8db9307ce 100644
--- a/Xi/ungrdevb.c
+++ b/Xi/ungrdevb.c
@@ -105,6 +105,7 @@ ProcXUngrabDeviceButton(ClientPtr client)
DeviceIntPtr mdev;
WindowPtr pWin;
GrabRec temporaryGrab;
+ int rc;
REQUEST(xUngrabDeviceButtonReq);
REQUEST_SIZE_MATCH(xUngrabDeviceButtonReq);
@@ -134,9 +135,9 @@ ProcXUngrabDeviceButton(ClientPtr client)
} else
mdev = (DeviceIntPtr) LookupKeyboardDevice();
- pWin = LookupWindow(stuff->grabWindow, client);
- if (!pWin) {
- SendErrorToClient(client, IReqCode, X_UngrabDeviceButton, 0, BadWindow);
+ rc = dixLookupWindow(&pWin, stuff->grabWindow, client, DixUnknownAccess);
+ if (rc != Success) {
+ SendErrorToClient(client, IReqCode, X_UngrabDeviceButton, 0, rc);
return Success;
}
diff --git a/Xi/ungrdevk.c b/Xi/ungrdevk.c
index 0a6b3b619..ebb83bce7 100644
--- a/Xi/ungrdevk.c
+++ b/Xi/ungrdevk.c
@@ -105,6 +105,7 @@ ProcXUngrabDeviceKey(ClientPtr client)
DeviceIntPtr mdev;
WindowPtr pWin;
GrabRec temporaryGrab;
+ int rc;
REQUEST(xUngrabDeviceKeyReq);
REQUEST_SIZE_MATCH(xUngrabDeviceKeyReq);
@@ -133,9 +134,9 @@ ProcXUngrabDeviceKey(ClientPtr client)
} else
mdev = (DeviceIntPtr) LookupKeyboardDevice();
- pWin = LookupWindow(stuff->grabWindow, client);
- if (!pWin) {
- SendErrorToClient(client, IReqCode, X_UngrabDeviceKey, 0, BadWindow);
+ rc = dixLookupWindow(&pWin, stuff->grabWindow, client, DixUnknownAccess);
+ if (rc != Success) {
+ SendErrorToClient(client, IReqCode, X_UngrabDeviceKey, 0, rc);
return Success;
}
if (((stuff->key > dev->key->curKeySyms.maxKeyCode) ||
diff --git a/XpConfig/C/print/models/PS2PDFspooldir-GS/Makefile.am b/XpConfig/C/print/models/PS2PDFspooldir-GS/Makefile.am
deleted file mode 100644
index 37b57d7bb..000000000
--- a/XpConfig/C/print/models/PS2PDFspooldir-GS/Makefile.am
+++ /dev/null
@@ -1,3 +0,0 @@
-xpcdir = @xpconfigdir@/C/print/models/PS2PDFspooldir-GS
-
-dist_xpc_DATA = model-config ps2pdf_spooltodir.sh
diff --git a/XpConfig/C/print/models/PSspooldir/Makefile.am b/XpConfig/C/print/models/PSspooldir/Makefile.am
deleted file mode 100644
index 52313aa23..000000000
--- a/XpConfig/C/print/models/PSspooldir/Makefile.am
+++ /dev/null
@@ -1,3 +0,0 @@
-xpcdir = @xpconfigdir@/C/print/models/PSspooldir
-
-dist_xpc_DATA = model-config spooltodir.sh
diff --git a/Xprint/etc/Xsession.d/Makefile.am b/Xprint/etc/Xsession.d/Makefile.am
deleted file mode 100644
index e0277d9d4..000000000
--- a/Xprint/etc/Xsession.d/Makefile.am
+++ /dev/null
@@ -1 +0,0 @@
-EXTRA_DIST = cde_xsessiond_xprint.sh
diff --git a/Xprint/etc/init.d/Makefile.am b/Xprint/etc/init.d/Makefile.am
deleted file mode 100644
index cc03cfab4..000000000
--- a/Xprint/etc/init.d/Makefile.am
+++ /dev/null
@@ -1 +0,0 @@
-EXTRA_DIST = xprint.cpp
diff --git a/Xprint/pcl/PclPixmap.c b/Xprint/pcl/PclPixmap.c
deleted file mode 100644
index 9449dfdd6..000000000
--- a/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/Xprint/raster/Makefile.am b/Xprint/raster/Makefile.am
deleted file mode 100644
index 4a2223115..000000000
--- a/Xprint/raster/Makefile.am
+++ /dev/null
@@ -1,11 +0,0 @@
-noinst_LTLIBRARIES = libraster.la
-
-INCLUDES = -I$(top_srcdir)/Xprint
-
-AM_CFLAGS = @SERVER_DEFINES@ @DIX_CFLAGS@ @XPRINT_CFLAGS@ \
- -D_XP_PRINT_SERVER_ -DPSZ=8
-
-libraster_la_SOURCES = \
- RasterAttVal.c \
- Raster.c \
- Raster.h
diff --git a/afb/Makefile.am b/afb/Makefile.am
index e7dedfabc..d83b67417 100644
--- a/afb/Makefile.am
+++ b/afb/Makefile.am
@@ -1,6 +1,6 @@
noinst_LTLIBRARIES = libafb.la
-AM_CFLAGS = $(DIX_CFLAGS) @SERVER_DEFINES@ @MODULE_DEFINES@ @LOADER_DEFINES@
+AM_CFLAGS = $(DIX_CFLAGS)
libafb_gen_sources = afbbltC.c afbbltX.c afbbltCI.c afbbltO.c afbbltG.c afbtileC.c afbtileG.c afbseg.c
diff --git a/afb/afb.h b/afb/afb.h
index e89d3a088..c05cc5511 100644
--- a/afb/afb.h
+++ b/afb/afb.h
@@ -1,4 +1,3 @@
-/* $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 */
/***********************************************************
@@ -47,7 +46,6 @@ 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
*/
diff --git a/afb/afbbitblt.c b/afb/afbbitblt.c
index 7c4502c93..594e987a8 100644
--- a/afb/afbbitblt.c
+++ b/afb/afbbitblt.c
@@ -1,4 +1,3 @@
-/* $XFree86: xc/programs/Xserver/afb/afbbitblt.c,v 3.5tsi Exp $ */
/* Combined Purdue/PurduePlus patches, level 2.0, 1/17/89 */
/***********************************************************
@@ -47,7 +46,6 @@ 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>
diff --git a/afb/afbblt.c b/afb/afbblt.c
index 9eb0227f2..9eb4e4732 100644
--- a/afb/afbblt.c
+++ b/afb/afbblt.c
@@ -1,4 +1,3 @@
-/* $XFree86: xc/programs/Xserver/afb/afbblt.c,v 3.0 1996/08/18 01:45:24 dawes Exp $ */
/*
* afb copy area
*/
@@ -31,7 +30,6 @@ 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>
diff --git a/afb/afbbres.c b/afb/afbbres.c
index 6ee09b9e4..e8f1b3b85 100644
--- a/afb/afbbres.c
+++ b/afb/afbbres.c
@@ -47,7 +47,6 @@ 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>
diff --git a/afb/afbbresd.c b/afb/afbbresd.c
index 52cb62cab..4495c8cf8 100644
--- a/afb/afbbresd.c
+++ b/afb/afbbresd.c
@@ -46,7 +46,6 @@ 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>
diff --git a/afb/afbbstore.c b/afb/afbbstore.c
index a74a9d9b8..f7f1062e2 100644
--- a/afb/afbbstore.c
+++ b/afb/afbbstore.c
@@ -1,5 +1,4 @@
/* $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 */
/*
diff --git a/afb/afbclip.c b/afb/afbclip.c
index 89314f134..15be4051c 100644
--- a/afb/afbclip.c
+++ b/afb/afbclip.c
@@ -1,4 +1,3 @@
-/* $XFree86: xc/programs/Xserver/afb/afbclip.c,v 3.2 2001/10/28 03:32:57 tsi Exp $ */
/***********************************************************
Copyright (c) 1987 X Consortium
@@ -46,7 +45,6 @@ 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>
diff --git a/afb/afbcmap.c b/afb/afbcmap.c
index 5043d97a6..e3b95fbec 100644
--- a/afb/afbcmap.c
+++ b/afb/afbcmap.c
@@ -1,5 +1,3 @@
-/* $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.
diff --git a/afb/afbfillarc.c b/afb/afbfillarc.c
index 30e0bd3a5..fa685ba9a 100644
--- a/afb/afbfillarc.c
+++ b/afb/afbfillarc.c
@@ -1,4 +1,3 @@
-/* $XFree86: xc/programs/Xserver/afb/afbfillarc.c,v 3.1 1998/03/20 21:04:54 hohndel Exp $ */
/************************************************************
Copyright (c) 1989 X Consortium
@@ -26,7 +25,6 @@ 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>
diff --git a/afb/afbfillrct.c b/afb/afbfillrct.c
index ed2e6031e..06fb37365 100644
--- a/afb/afbfillrct.c
+++ b/afb/afbfillrct.c
@@ -1,4 +1,3 @@
-/* $XFree86: xc/programs/Xserver/afb/afbfillrct.c,v 3.2tsi Exp $ */
/* Combined Purdue/PurduePlus patches, level 2.0, 1/17/89 */
/***********************************************************
@@ -47,7 +46,6 @@ 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>
diff --git a/afb/afbfillsp.c b/afb/afbfillsp.c
index ffb633409..539c3457c 100644
--- a/afb/afbfillsp.c
+++ b/afb/afbfillsp.c
@@ -1,4 +1,3 @@
-/* $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 */
/***********************************************************
@@ -47,7 +46,6 @@ 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>
diff --git a/afb/afbfont.c b/afb/afbfont.c
index bf77825f1..940bdb09b 100644
--- a/afb/afbfont.c
+++ b/afb/afbfont.c
@@ -46,7 +46,6 @@ 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>
diff --git a/afb/afbgc.c b/afb/afbgc.c
index 6c46b3b8e..03475dda5 100644
--- a/afb/afbgc.c
+++ b/afb/afbgc.c
@@ -1,4 +1,3 @@
-/* $XFree86: xc/programs/Xserver/afb/afbgc.c,v 3.2 1999/06/20 15:02:46 dawes Exp $ */
/***********************************************************
Copyright (c) 1987 X Consortium
@@ -46,7 +45,6 @@ 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>
diff --git a/afb/afbgetsp.c b/afb/afbgetsp.c
index 3cc2e2f6e..8d1db1482 100644
--- a/afb/afbgetsp.c
+++ b/afb/afbgetsp.c
@@ -1,4 +1,3 @@
-/* $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 */
/***********************************************************
@@ -47,7 +46,6 @@ 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>
diff --git a/afb/afbhrzvert.c b/afb/afbhrzvert.c
index d7ddce1a1..8f332e6d8 100644
--- a/afb/afbhrzvert.c
+++ b/afb/afbhrzvert.c
@@ -1,4 +1,3 @@
-/* $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 */
/***********************************************************
@@ -47,7 +46,6 @@ 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>
diff --git a/afb/afbimage.c b/afb/afbimage.c
index a0b4270e8..c82bb3668 100644
--- a/afb/afbimage.c
+++ b/afb/afbimage.c
@@ -1,4 +1,3 @@
-/* $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>
diff --git a/afb/afbimggblt.c b/afb/afbimggblt.c
index 28113b448..de02aa46a 100644
--- a/afb/afbimggblt.c
+++ b/afb/afbimggblt.c
@@ -1,4 +1,3 @@
-/* $XFree86: xc/programs/Xserver/afb/afbimggblt.c,v 3.1tsi Exp $ */
/* Combined Purdue/PurduePlus patches, level 2.0, 1/17/89 */
/***********************************************************
@@ -47,7 +46,6 @@ 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>
diff --git a/afb/afbline.c b/afb/afbline.c
index d3f2def89..9e2e4b9f4 100644
--- a/afb/afbline.c
+++ b/afb/afbline.c
@@ -1,4 +1,3 @@
-/* $XFree86: xc/programs/Xserver/afb/afbline.c,v 3.1 1998/03/20 21:04:55 hohndel Exp $ */
/***********************************************************
Copyright (c) 1987 X Consortium
@@ -46,7 +45,6 @@ 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>
diff --git a/afb/afbmisc.c b/afb/afbmisc.c
index e5a4f492d..023c43f34 100644
--- a/afb/afbmisc.c
+++ b/afb/afbmisc.c
@@ -46,7 +46,6 @@ 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>
diff --git a/afb/afbpixmap.c b/afb/afbpixmap.c
index 72482ff7f..6801960c6 100644
--- a/afb/afbpixmap.c
+++ b/afb/afbpixmap.c
@@ -1,4 +1,3 @@
-/* $XFree86: xc/programs/Xserver/afb/afbpixmap.c,v 3.0 1996/08/18 01:45:45 dawes Exp $ */
/***********************************************************
Copyright (c) 1987 X Consortium
@@ -46,7 +45,6 @@ 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
diff --git a/afb/afbply1rct.c b/afb/afbply1rct.c
index b7a16e086..86ec174f4 100644
--- a/afb/afbply1rct.c
+++ b/afb/afbply1rct.c
@@ -1,6 +1,4 @@
-/* $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
diff --git a/afb/afbplygblt.c b/afb/afbplygblt.c
index 7d4f5ddd7..289d50e1b 100644
--- a/afb/afbplygblt.c
+++ b/afb/afbplygblt.c
@@ -1,4 +1,3 @@
-/* $XFree86: xc/programs/Xserver/afb/afbplygblt.c,v 3.2tsi Exp $ */
/* Combined Purdue/PurduePlus patches, level 2.0, 1/17/89 */
/***********************************************************
@@ -47,7 +46,6 @@ 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>
diff --git a/afb/afbpntarea.c b/afb/afbpntarea.c
index 648a2d19c..cc43f5237 100644
--- a/afb/afbpntarea.c
+++ b/afb/afbpntarea.c
@@ -1,4 +1,3 @@
-/* $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 */
/***********************************************************
@@ -47,7 +46,6 @@ 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>
diff --git a/afb/afbpntwin.c b/afb/afbpntwin.c
index aaa6847a9..94c96e4cf 100644
--- a/afb/afbpntwin.c
+++ b/afb/afbpntwin.c
@@ -1,5 +1,4 @@
/* $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 */
/***********************************************************
diff --git a/afb/afbpolypnt.c b/afb/afbpolypnt.c
index 4e9fa0310..a9d96edfe 100644
--- a/afb/afbpolypnt.c
+++ b/afb/afbpolypnt.c
@@ -1,4 +1,3 @@
-/* $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 */
/***********************************************************
@@ -47,7 +46,6 @@ 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>
diff --git a/afb/afbpushpxl.c b/afb/afbpushpxl.c
index c717f0e45..3dd548737 100644
--- a/afb/afbpushpxl.c
+++ b/afb/afbpushpxl.c
@@ -1,4 +1,3 @@
-/* $XFree86: xc/programs/Xserver/afb/afbpushpxl.c,v 3.1 1998/03/20 21:04:56 hohndel Exp $ */
/***********************************************************
Copyright (c) 1987 X Consortium
@@ -46,7 +45,6 @@ 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>
diff --git a/afb/afbscrinit.c b/afb/afbscrinit.c
index b9e0ba94f..2b0867fda 100644
--- a/afb/afbscrinit.c
+++ b/afb/afbscrinit.c
@@ -1,4 +1,3 @@
-/* $XFree86: xc/programs/Xserver/afb/afbscrinit.c,v 3.4 1998/07/25 08:50:27 dawes Exp $ */
/***********************************************************
Copyright (c) 1987 X Consortium
@@ -46,7 +45,6 @@ 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>
diff --git a/afb/afbsetsp.c b/afb/afbsetsp.c
index 3a078ffa9..adc726620 100644
--- a/afb/afbsetsp.c
+++ b/afb/afbsetsp.c
@@ -1,4 +1,3 @@
-/* $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 */
/***********************************************************
@@ -47,7 +46,6 @@ 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>
diff --git a/afb/afbtegblt.c b/afb/afbtegblt.c
index 16f6ca4ea..ba889cb80 100644
--- a/afb/afbtegblt.c
+++ b/afb/afbtegblt.c
@@ -1,5 +1,3 @@
-/* $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 */
/***********************************************************
diff --git a/afb/afbtile.c b/afb/afbtile.c
index 11d76abdf..8fcb9cde7 100644
--- a/afb/afbtile.c
+++ b/afb/afbtile.c
@@ -1,4 +1,3 @@
-/* $XFree86: xc/programs/Xserver/afb/afbtile.c,v 3.3tsi Exp $ */
/* Combined Purdue/PurduePlus patches, level 2.0, 1/17/89 */
/***********************************************************
@@ -47,7 +46,6 @@ 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>
diff --git a/afb/afbwindow.c b/afb/afbwindow.c
index 90a4f7dfe..a4a1602bc 100644
--- a/afb/afbwindow.c
+++ b/afb/afbwindow.c
@@ -1,5 +1,3 @@
-/* $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 */
/***********************************************************
diff --git a/afb/afbzerarc.c b/afb/afbzerarc.c
index 0fe9244ad..2cc30687f 100644
--- a/afb/afbzerarc.c
+++ b/afb/afbzerarc.c
@@ -1,4 +1,3 @@
-/* $XFree86: xc/programs/Xserver/afb/afbzerarc.c,v 3.2 2001/10/28 03:32:59 tsi Exp $ */
/************************************************************
Copyright (c) 1989 X Consortium
@@ -26,7 +25,6 @@ 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"
diff --git a/cfb/Makefile.am b/cfb/Makefile.am
index 89832fa7b..d24f027e7 100644
--- a/cfb/Makefile.am
+++ b/cfb/Makefile.am
@@ -9,7 +9,7 @@ libcfb_la_SOURCES = cfb8bit.c cfbteblt8.c cfbglrop8.c cfbpush8.c cfbrctstp8.c \
libcfb_la_LIBADD = ../mfb/libmfb.la
-AM_CFLAGS = -DPSZ=8 $(DIX_CFLAGS) $(PLATFORMDEFS) @SERVER_DEFINES@ @MODULE_DEFINES@ @LOADER_DEFINES@
+AM_CFLAGS = -DPSZ=8 $(DIX_CFLAGS) $(PLATFORMDEFS)
INCLUDES = $(CFB_INCLUDES) -I$(top_srcdir)/hw/xfree86/os-support -I$(top_srcdir)/hw/xfree86/common
diff --git a/cfb/cfb.h b/cfb/cfb.h
index 14d6617a9..8c682ae8d 100644
--- a/cfb/cfb.h
+++ b/cfb/cfb.h
@@ -1,4 +1,3 @@
-/* $Xorg: cfb.h,v 1.3 2000/08/17 19:48:12 cpqbld Exp $ */
/************************************************************
Copyright 1987 by Sun Microsystems, Inc. Mountain View, CA.
@@ -27,7 +26,6 @@ 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)
diff --git a/cfb/cfb16.h b/cfb/cfb16.h
index 3d51cd142..6b5c30209 100644
--- a/cfb/cfb16.h
+++ b/cfb/cfb16.h
@@ -1,4 +1,3 @@
-/* $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.
*
diff --git a/cfb/cfb24.h b/cfb/cfb24.h
index 3a99934b7..ea5fc848e 100644
--- a/cfb/cfb24.h
+++ b/cfb/cfb24.h
@@ -1,4 +1,3 @@
-/* $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.
*
diff --git a/cfb/cfb32.h b/cfb/cfb32.h
index 5ea4c13c8..18a5dc1c3 100644
--- a/cfb/cfb32.h
+++ b/cfb/cfb32.h
@@ -1,4 +1,3 @@
-/* $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.
*
diff --git a/cfb/cfb8bit.c b/cfb/cfb8bit.c
index 0bc5debbb..54a08c53d 100644
--- a/cfb/cfb8bit.c
+++ b/cfb/cfb8bit.c
@@ -1,4 +1,3 @@
-/* $Xorg: cfb8bit.c,v 1.4 2001/02/09 02:04:37 xorgcvs Exp $ */
/*
Copyright 1989, 1994, 1998 The Open Group
@@ -26,7 +25,6 @@ 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
diff --git a/cfb/cfb8bit.h b/cfb/cfb8bit.h
index 767549af7..5a17adf4f 100644
--- a/cfb/cfb8bit.h
+++ b/cfb/cfb8bit.h
@@ -7,7 +7,6 @@
* 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 $ */
/*
@@ -34,7 +33,6 @@ 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>
diff --git a/cfb/cfb8line.c b/cfb/cfb8line.c
index 9740c2139..8c00d9fea 100644
--- a/cfb/cfb8line.c
+++ b/cfb/cfb8line.c
@@ -1,5 +1,4 @@
/*
- * $Xorg: cfb8line.c,v 1.4 2001/02/09 02:04:37 xorgcvs Exp $
*
Copyright 1990, 1998 The Open Group
@@ -25,7 +24,6 @@ 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
*/
diff --git a/cfb/cfballpriv.c b/cfb/cfballpriv.c
index 68edb281b..e0ccdf4d0 100644
--- a/cfb/cfballpriv.c
+++ b/cfb/cfballpriv.c
@@ -1,5 +1,4 @@
/*
- * $Xorg: cfballpriv.c,v 1.4 2001/02/09 02:04:37 xorgcvs Exp $
*
Copyright 1991, 1998 The Open Group
@@ -25,7 +24,6 @@ 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>
diff --git a/cfb/cfbbitblt.c b/cfb/cfbbitblt.c
index 2e621337a..faf49b92d 100644
--- a/cfb/cfbbitblt.c
+++ b/cfb/cfbbitblt.c
@@ -2,7 +2,6 @@
* cfb copy area
*/
-/* $XFree86: xc/programs/Xserver/cfb/cfbbitblt.c,v 1.19tsi Exp $ */
/*
@@ -31,7 +30,6 @@ 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>
diff --git a/cfb/cfbblt.c b/cfb/cfbblt.c
index db32c87e5..1e577f526 100644
--- a/cfb/cfbblt.c
+++ b/cfb/cfbblt.c
@@ -1,7 +1,6 @@
/*
* cfb copy area
*/
-/* $XFree86: xc/programs/Xserver/cfb/cfbblt.c,v 3.13tsi Exp $ */
/*
@@ -30,7 +29,6 @@ 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 */
diff --git a/cfb/cfbbres.c b/cfb/cfbbres.c
index 2251fb885..fa1ee1379 100644
--- a/cfb/cfbbres.c
+++ b/cfb/cfbbres.c
@@ -1,4 +1,3 @@
-/* $XFree86: xc/programs/Xserver/cfb/cfbbres.c,v 3.4 2001/01/17 22:36:34 dawes Exp $ */
/***********************************************************
Copyright 1987, 1998 The Open Group
@@ -45,7 +44,6 @@ 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
diff --git a/cfb/cfbbresd.c b/cfb/cfbbresd.c
index cc27eb5dc..ee48a74ec 100644
--- a/cfb/cfbbresd.c
+++ b/cfb/cfbbresd.c
@@ -1,4 +1,3 @@
-/* $XFree86: xc/programs/Xserver/cfb/cfbbresd.c,v 3.5 2001/01/17 22:36:34 dawes Exp $ */
/***********************************************************
Copyright 1987, 1998 The Open Group
@@ -45,7 +44,6 @@ 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
diff --git a/cfb/cfbbstore.c b/cfb/cfbbstore.c
index 64adc4050..f09360ce9 100644
--- a/cfb/cfbbstore.c
+++ b/cfb/cfbbstore.c
@@ -1,4 +1,3 @@
-/* $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.
@@ -15,7 +14,6 @@
*
*
*/
-/* $Xorg: cfbbstore.c,v 1.3 2000/08/17 19:48:13 cpqbld Exp $ */
#ifdef HAVE_DIX_CONFIG_H
#include <dix-config.h>
diff --git a/cfb/cfbcmap.c b/cfb/cfbcmap.c
index a7777eda8..b96f67170 100644
--- a/cfb/cfbcmap.c
+++ b/cfb/cfbcmap.c
@@ -1,4 +1,3 @@
-/* $Xorg: cfbcmap.c,v 1.3 2000/08/17 19:48:13 cpqbld Exp $ */
/************************************************************
Copyright 1987 by Sun Microsystems, Inc. Mountain View, CA.
@@ -27,7 +26,6 @@ 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
diff --git a/cfb/cfbcppl.c b/cfb/cfbcppl.c
index f58682056..91b61a711 100644
--- a/cfb/cfbcppl.c
+++ b/cfb/cfbcppl.c
@@ -25,7 +25,6 @@ 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>
diff --git a/cfb/cfbfillarc.c b/cfb/cfbfillarc.c
index a02f40e14..0eb5ff469 100644
--- a/cfb/cfbfillarc.c
+++ b/cfb/cfbfillarc.c
@@ -1,4 +1,3 @@
-/* $XFree86: xc/programs/Xserver/cfb/cfbfillarc.c,v 3.6tsi Exp $ */
/************************************************************
Copyright 1989, 1998 The Open Group
@@ -25,7 +24,6 @@ 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>
diff --git a/cfb/cfbfillrct.c b/cfb/cfbfillrct.c
index 657865114..4c78c24b3 100644
--- a/cfb/cfbfillrct.c
+++ b/cfb/cfbfillrct.c
@@ -1,7 +1,6 @@
/*
* Fill rectangles.
*/
-/* $XFree86: xc/programs/Xserver/cfb/cfbfillrct.c,v 3.7 2001/01/17 22:36:35 dawes Exp $ */
/*
@@ -28,7 +27,6 @@ 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>
diff --git a/cfb/cfbfillsp.c b/cfb/cfbfillsp.c
index efb462b6c..ddd4f1421 100644
--- a/cfb/cfbfillsp.c
+++ b/cfb/cfbfillsp.c
@@ -1,4 +1,3 @@
-/* $XFree86: xc/programs/Xserver/cfb/cfbfillsp.c,v 3.7tsi Exp $ */
/************************************************************
Copyright 1987 by Sun Microsystems, Inc. Mountain View, CA.
@@ -75,7 +74,6 @@ SOFTWARE.
******************************************************************/
-/* $Xorg: cfbfillsp.c,v 1.4 2001/02/09 02:04:37 xorgcvs Exp $ */
#ifdef HAVE_DIX_CONFIG_H
#include <dix-config.h>
diff --git a/cfb/cfbgc.c b/cfb/cfbgc.c
index c20355146..a74c28c15 100644
--- a/cfb/cfbgc.c
+++ b/cfb/cfbgc.c
@@ -1,4 +1,3 @@
-/* $XFree86: xc/programs/Xserver/cfb/cfbgc.c,v 1.5 2001/01/17 22:36:35 dawes Exp $ */
/***********************************************************
Copyright 1987, 1998 The Open Group
@@ -46,7 +45,6 @@ SOFTWARE.
******************************************************************/
-/* $Xorg: cfbgc.c,v 1.4 2001/02/09 02:04:37 xorgcvs Exp $ */
#ifdef HAVE_DIX_CONFIG_H
#include <dix-config.h>
diff --git a/cfb/cfbgetsp.c b/cfb/cfbgetsp.c
index 44e31a241..672196a6c 100644
--- a/cfb/cfbgetsp.c
+++ b/cfb/cfbgetsp.c
@@ -1,4 +1,3 @@
-/* $Xorg: cfbgetsp.c,v 1.4 2001/02/09 02:04:38 xorgcvs Exp $ */
/***********************************************************
Copyright 1987, 1998 The Open Group
@@ -45,7 +44,6 @@ 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>
diff --git a/cfb/cfbglblt8.c b/cfb/cfbglblt8.c
index fda848fde..c4cba0e15 100644
--- a/cfb/cfbglblt8.c
+++ b/cfb/cfbglblt8.c
@@ -1,4 +1,3 @@
-/* $Xorg: cfbglblt8.c,v 1.4 2001/02/09 02:04:38 xorgcvs Exp $ */
/*
Copyright 1989, 1998 The Open Group
@@ -23,7 +22,6 @@ 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
diff --git a/cfb/cfbhrzvert.c b/cfb/cfbhrzvert.c
index 4df991b00..a6a793055 100644
--- a/cfb/cfbhrzvert.c
+++ b/cfb/cfbhrzvert.c
@@ -1,4 +1,3 @@
-/* $XFree86: xc/programs/Xserver/cfb/cfbhrzvert.c,v 3.6 2001/10/28 03:33:00 tsi Exp $ */
/***********************************************************
Copyright 1987,1998 The Open Group
@@ -45,7 +44,6 @@ 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
diff --git a/cfb/cfbigblt8.c b/cfb/cfbigblt8.c
index 97356e8bd..1f1ce6f37 100644
--- a/cfb/cfbigblt8.c
+++ b/cfb/cfbigblt8.c
@@ -1,5 +1,4 @@
/*
- * $Xorg: cfbigblt8.c,v 1.4 2001/02/09 02:04:38 xorgcvs Exp $
*
Copyright 1990, 1998 The Open Group
@@ -26,7 +25,6 @@ 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>
diff --git a/cfb/cfbimage.c b/cfb/cfbimage.c
index f8c298922..396e1fcb2 100644
--- a/cfb/cfbimage.c
+++ b/cfb/cfbimage.c
@@ -1,4 +1,3 @@
-/* $XFree86: xc/programs/Xserver/cfb/cfbimage.c,v 1.12 2001/10/28 03:33:01 tsi Exp $ */
/***********************************************************
Copyright 1987, 1998 The Open Group
@@ -45,7 +44,6 @@ 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>
diff --git a/cfb/cfbline.c b/cfb/cfbline.c
index c70c48a51..84c089a73 100644
--- a/cfb/cfbline.c
+++ b/cfb/cfbline.c
@@ -1,4 +1,3 @@
-/* $XFree86: xc/programs/Xserver/cfb/cfbline.c,v 3.5 2001/10/28 03:33:01 tsi Exp $ */
/***********************************************************
Copyright 1987, 1998 The Open Group
@@ -45,7 +44,6 @@ 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
diff --git a/cfb/cfbmap.h b/cfb/cfbmap.h
index 802517aac..1d6a3f850 100644
--- a/cfb/cfbmap.h
+++ b/cfb/cfbmap.h
@@ -1,5 +1,4 @@
/*
- * $Xorg: cfbmap.h,v 1.4 2001/02/09 02:04:38 xorgcvs Exp $
*
Copyright 1991, 1998 The Open Group
@@ -26,7 +25,6 @@ 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
diff --git a/cfb/cfbmskbits.c b/cfb/cfbmskbits.c
index 05954e62c..915ea35c1 100644
--- a/cfb/cfbmskbits.c
+++ b/cfb/cfbmskbits.c
@@ -1,4 +1,3 @@
-/* $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.
@@ -28,7 +27,6 @@ THE USE OR PERFORMANCE OF THIS SOFTWARE.
********************************************************/
-/* $Xorg: cfbmskbits.c,v 1.3 2000/08/17 19:48:14 cpqbld Exp $ */
/*
* ==========================================================================
diff --git a/cfb/cfbmskbits.h b/cfb/cfbmskbits.h
index f9ce33a61..7aa446cb5 100644
--- a/cfb/cfbmskbits.h
+++ b/cfb/cfbmskbits.h
@@ -1,4 +1,3 @@
-/* $XFree86: xc/programs/Xserver/cfb/cfbmskbits.h,v 3.13tsi Exp $ */
/************************************************************
Copyright 1987 by Sun Microsystems, Inc. Mountain View, CA.
@@ -28,7 +27,6 @@ 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>
diff --git a/cfb/cfbpixmap.c b/cfb/cfbpixmap.c
index e73cf5735..d51c5187c 100644
--- a/cfb/cfbpixmap.c
+++ b/cfb/cfbpixmap.c
@@ -1,4 +1,3 @@
-/* $Xorg: cfbpixmap.c,v 1.4 2001/02/09 02:04:38 xorgcvs Exp $ */
/***********************************************************
Copyright 1987, 1998 The Open Group
@@ -45,7 +44,6 @@ 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
diff --git a/cfb/cfbply1rct.c b/cfb/cfbply1rct.c
index b431f33e1..ce0bcb203 100644
--- a/cfb/cfbply1rct.c
+++ b/cfb/cfbply1rct.c
@@ -1,5 +1,4 @@
/*
- * $Xorg: cfbply1rct.c,v 1.4 2001/02/09 02:04:38 xorgcvs Exp $
*
Copyright 1990, 1998 The Open Group
@@ -25,7 +24,6 @@ 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>
diff --git a/cfb/cfbpntwin.c b/cfb/cfbpntwin.c
index 9bfdfe64f..32f011e23 100644
--- a/cfb/cfbpntwin.c
+++ b/cfb/cfbpntwin.c
@@ -1,5 +1,3 @@
-/* $XdotOrg: xc/programs/Xserver/cfb/cfbpntwin.c,v 1.3 2005/04/20 12:25:18 daniels Exp $ */
-/* $Xorg: cfbpntwin.c,v 1.4 2001/02/09 02:04:38 xorgcvs Exp $ */
/***********************************************************
Copyright 1987, 1998 The Open Group
@@ -46,7 +44,6 @@ 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>
diff --git a/cfb/cfbpolypnt.c b/cfb/cfbpolypnt.c
index 59ef0cf89..06a768e8d 100644
--- a/cfb/cfbpolypnt.c
+++ b/cfb/cfbpolypnt.c
@@ -1,4 +1,3 @@
-/* $XFree86: xc/programs/Xserver/cfb/cfbpolypnt.c,v 3.5 2001/10/28 03:33:01 tsi Exp $ */
/************************************************************
Copyright 1989, 1998 The Open Group
@@ -25,7 +24,6 @@ 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>
diff --git a/cfb/cfbpush8.c b/cfb/cfbpush8.c
index 3492c8e25..857ec94a6 100644
--- a/cfb/cfbpush8.c
+++ b/cfb/cfbpush8.c
@@ -2,7 +2,6 @@
* Push Pixels for 8 bit displays.
*/
-/* $XFree86: xc/programs/Xserver/cfb/cfbpush8.c,v 1.5 2001/01/17 22:36:36 dawes Exp $ */
/*
@@ -28,7 +27,6 @@ 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>
diff --git a/cfb/cfbrctstp8.c b/cfb/cfbrctstp8.c
index 9f753cdd7..485d40998 100644
--- a/cfb/cfbrctstp8.c
+++ b/cfb/cfbrctstp8.c
@@ -1,7 +1,6 @@
/*
* 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
@@ -30,7 +29,6 @@ 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>
diff --git a/cfb/cfbrrop.c b/cfb/cfbrrop.c
index 77487bc6a..ffd813853 100644
--- a/cfb/cfbrrop.c
+++ b/cfb/cfbrrop.c
@@ -1,5 +1,4 @@
/*
- * $Xorg: cfbrrop.c,v 1.4 2001/02/09 02:04:38 xorgcvs Exp $
*
Copyright 1989, 1998 The Open Group
@@ -25,7 +24,6 @@ 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 */
diff --git a/cfb/cfbrrop.h b/cfb/cfbrrop.h
index 9e7a44c5b..eeb373a5e 100644
--- a/cfb/cfbrrop.h
+++ b/cfb/cfbrrop.h
@@ -1,5 +1,4 @@
/*
- * $Xorg: cfbrrop.h,v 1.4 2001/02/09 02:04:38 xorgcvs Exp $
*
Copyright 1989, 1998 The Open Group
@@ -26,7 +25,6 @@ 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>
diff --git a/cfb/cfbscrinit.c b/cfb/cfbscrinit.c
index 7299bbdf8..9f411ab27 100644
--- a/cfb/cfbscrinit.c
+++ b/cfb/cfbscrinit.c
@@ -1,4 +1,3 @@
-/* $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.
@@ -27,7 +26,6 @@ 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>
diff --git a/cfb/cfbsetsp.c b/cfb/cfbsetsp.c
index 56317cb91..a000fd9e1 100644
--- a/cfb/cfbsetsp.c
+++ b/cfb/cfbsetsp.c
@@ -1,4 +1,3 @@
-/* $Xorg: cfbsetsp.c,v 1.4 2001/02/09 02:04:38 xorgcvs Exp $ */
/***********************************************************
Copyright 1987, 1998 The Open Group
@@ -45,7 +44,6 @@ 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>
diff --git a/cfb/cfbsolid.c b/cfb/cfbsolid.c
index 9f9093647..f0da05ef0 100644
--- a/cfb/cfbsolid.c
+++ b/cfb/cfbsolid.c
@@ -1,5 +1,4 @@
/*
- * $Xorg: cfbsolid.c,v 1.4 2001/02/09 02:04:38 xorgcvs Exp $
*
Copyright 1990, 1998 The Open Group
@@ -25,7 +24,6 @@ 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
diff --git a/cfb/cfbteblt8.c b/cfb/cfbteblt8.c
index f58a07dc6..9d4ce5708 100644
--- a/cfb/cfbteblt8.c
+++ b/cfb/cfbteblt8.c
@@ -3,7 +3,6 @@
* 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
@@ -29,7 +28,6 @@ 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>
@@ -303,7 +301,7 @@ typedef unsigned int *glyphPointer;
#define StorePixels(o,p) dst[o] = p
#define Loop dst += widthDst;
#else
-#define StorePixels(o,p) *dst++ = (p)
+#define StorePixels(o,p) do { *dst = (p); dst++; } while (0)
#define Loop dst += widthLeft;
#endif
diff --git a/cfb/cfbtegblt.c b/cfb/cfbtegblt.c
index e3fb06f59..f04ee3faf 100644
--- a/cfb/cfbtegblt.c
+++ b/cfb/cfbtegblt.c
@@ -1,4 +1,3 @@
-/* $Xorg: cfbtegblt.c,v 1.4 2001/02/09 02:04:39 xorgcvs Exp $ */
/***********************************************************
Copyright 1987, 1998 The Open Group
@@ -45,7 +44,6 @@ 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>
diff --git a/cfb/cfbtile32.c b/cfb/cfbtile32.c
index 96e5620b7..fb6a10613 100644
--- a/cfb/cfbtile32.c
+++ b/cfb/cfbtile32.c
@@ -2,7 +2,6 @@
* 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 $ */
/*
@@ -29,7 +28,6 @@ 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>
diff --git a/cfb/cfbtileodd.c b/cfb/cfbtileodd.c
index 6c46aa4db..86a3fa5b5 100644
--- a/cfb/cfbtileodd.c
+++ b/cfb/cfbtileodd.c
@@ -2,7 +2,6 @@
* Fill odd tiled rectangles and spans.
* no depth dependencies.
*/
-/* $XFree86: xc/programs/Xserver/cfb/cfbtileodd.c,v 3.6tsi Exp $ */
/*
@@ -29,7 +28,6 @@ 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>
diff --git a/cfb/cfbunmap.h b/cfb/cfbunmap.h
index bccdf0f0f..61c7fc942 100644
--- a/cfb/cfbunmap.h
+++ b/cfb/cfbunmap.h
@@ -1,4 +1,3 @@
-/* $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.
*
diff --git a/cfb/cfbwindow.c b/cfb/cfbwindow.c
index ebc1c4593..e04b73df2 100644
--- a/cfb/cfbwindow.c
+++ b/cfb/cfbwindow.c
@@ -1,4 +1,3 @@
-/* $Xorg: cfbwindow.c,v 1.4 2001/02/09 02:04:39 xorgcvs Exp $ */
/***********************************************************
Copyright 1987, 1998 The Open Group
@@ -45,7 +44,6 @@ 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>
diff --git a/cfb/cfbzerarc.c b/cfb/cfbzerarc.c
index 27b82e42e..5b8879ee1 100644
--- a/cfb/cfbzerarc.c
+++ b/cfb/cfbzerarc.c
@@ -1,4 +1,3 @@
-/* $XFree86: xc/programs/Xserver/cfb/cfbzerarc.c,v 3.4tsi Exp $ */
/************************************************************
Copyright 1989, 1998 The Open Group
@@ -25,7 +24,6 @@ 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"
diff --git a/cfb/stip68kgnu.h b/cfb/stip68kgnu.h
index 01bb939e8..2da27b4dd 100644
--- a/cfb/stip68kgnu.h
+++ b/cfb/stip68kgnu.h
@@ -1,5 +1,4 @@
/*
- * $Xorg: stip68kgnu.h,v 1.4 2001/02/09 02:04:39 xorgcvs Exp $
*
Copyright 1990, 1998 The Open Group
@@ -25,7 +24,6 @@ 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
diff --git a/cfb32/Makefile.am b/cfb32/Makefile.am
index a549d1839..681a09575 100644
--- a/cfb32/Makefile.am
+++ b/cfb32/Makefile.am
@@ -6,4 +6,4 @@ libcfb32_la_SOURCES = $(libcfb_common_sources) $(libcfb_gen_sources)
INCLUDES = $(CFB_INCLUDES) $(DIX_CFLAGS) -I$(top_srcdir)/hw/xfree86/os-support -I$(top_srcdir)/hw/xfree86/common
-AM_CFLAGS = -DPSZ=32 $(PLATFORMDEFS) @SERVER_DEFINES@ @MODULE_DEFINES@ @LOADER_DEFINES@
+AM_CFLAGS = -DPSZ=32 $(PLATFORMDEFS)
diff --git a/composite/Makefile.am b/composite/Makefile.am
index dbcb8c61f..21504e659 100644
--- a/composite/Makefile.am
+++ b/composite/Makefile.am
@@ -1,6 +1,6 @@
noinst_LTLIBRARIES = libcomposite.la
-AM_CFLAGS = $(DIX_CFLAGS) @SERVER_DEFINES@ @LOADER_DEFINES@
+AM_CFLAGS = $(DIX_CFLAGS)
libcomposite_la_SOURCES = \
compalloc.c \
diff --git a/composite/compext.c b/composite/compext.c
index a7ad4e2fd..13936fa18 100644
--- a/composite/compext.c
+++ b/composite/compext.c
@@ -269,7 +269,10 @@ ProcCompositeNameWindowPixmap (ClientPtr client)
client->errorValue = stuff->window;
return BadWindow;
}
-
+
+ if (!pWin->viewable)
+ return BadMatch;
+
LEGAL_NEW_RESOURCE (stuff->pixmap, client);
cw = GetCompWindow (pWin);
diff --git a/composite/compinit.c b/composite/compinit.c
index 5a1361216..1d5cc7b04 100644
--- a/composite/compinit.c
+++ b/composite/compinit.c
@@ -60,6 +60,8 @@ compCloseScreen (int index, ScreenPtr pScreen)
CompScreenPtr cs = GetCompScreen (pScreen);
Bool ret;
+ xfree (cs->alternateVisuals);
+
pScreen->CloseScreen = cs->CloseScreen;
pScreen->BlockHandler = cs->BlockHandler;
pScreen->InstallColormap = cs->InstallColormap;
@@ -100,7 +102,7 @@ compInstallColormap (ColormapPtr pColormap)
CompScreenPtr cs = GetCompScreen (pScreen);
int a;
- for (a = 0; a < NUM_COMP_ALTERNATE_VISUALS; a++)
+ for (a = 0; a < cs->numAlternateVisuals; a++)
if (pVisual->vid == cs->alternateVisuals[a])
return;
pScreen->InstallColormap = cs->InstallColormap;
@@ -170,6 +172,41 @@ compFindVisuallessDepth (ScreenPtr pScreen, int d)
return 0;
}
+/*
+ * Add a list of visual IDs to the list of visuals to implicitly redirect.
+ */
+static Bool
+compRegisterAlternateVisuals (CompScreenPtr cs, VisualID *vids, int nVisuals)
+{
+ VisualID *p;
+
+ p = xrealloc(cs->alternateVisuals,
+ sizeof(VisualID) * (cs->numAlternateVisuals + nVisuals));
+ if(p == NULL)
+ return FALSE;
+
+ memcpy(&p[cs->numAlternateVisuals], vids, sizeof(VisualID) * nVisuals);
+
+ cs->alternateVisuals = p;
+ cs->numAlternateVisuals += nVisuals;
+
+ return TRUE;
+}
+
+_X_EXPORT
+Bool CompositeRegisterAlternateVisuals (ScreenPtr pScreen, VisualID *vids,
+ int nVisuals)
+{
+ CompScreenPtr cs = GetCompScreen (pScreen);
+ return compRegisterAlternateVisuals(cs, vids, nVisuals);
+}
+
+#if COMP_INCLUDE_RGB24_VISUAL
+#define NUM_COMP_ALTERNATE_VISUALS 2
+#else
+#define NUM_COMP_ALTERNATE_VISUALS 1
+#endif
+
typedef struct _alternateVisual {
int depth;
CARD32 format;
@@ -197,8 +234,6 @@ compAddAlternateVisuals (ScreenPtr pScreen, CompScreenPtr cs)
int numAlternate = 0;
int alt;
- memset (cs->alternateVisuals, '\0', sizeof (cs->alternateVisuals));
-
for (alt = 0; alt < NUM_COMP_ALTERNATE_VISUALS; alt++)
{
DepthPtr depth;
@@ -321,7 +356,7 @@ compAddAlternateVisuals (ScreenPtr pScreen, CompScreenPtr cs)
/*
* remember the visual ID to detect auto-update windows
*/
- cs->alternateVisuals[alt] = visual->vid;
+ compRegisterAlternateVisuals(cs, &visual->vid, 1);
/*
* Fix up the depth
@@ -367,6 +402,9 @@ compScreenInit (ScreenPtr pScreen)
cs->pOverlayWin = NULL;
cs->pOverlayClients = NULL;
+ cs->numAlternateVisuals = 0;
+ cs->alternateVisuals = NULL;
+
if (!compAddAlternateVisuals (pScreen, cs))
{
xfree (cs);
diff --git a/composite/compint.h b/composite/compint.h
index 9395512b4..3958b3b31 100644
--- a/composite/compint.h
+++ b/composite/compint.h
@@ -109,12 +109,6 @@ typedef struct _CompSubwindows {
#define COMP_INCLUDE_RGB24_VISUAL 0
#endif
-#if COMP_INCLUDE_RGB24_VISUAL
-#define NUM_COMP_ALTERNATE_VISUALS 2
-#else
-#define NUM_COMP_ALTERNATE_VISUALS 1
-#endif
-
typedef struct _CompOverlayClientRec *CompOverlayClientPtr;
typedef struct _CompOverlayClientRec {
@@ -154,7 +148,8 @@ typedef struct _CompScreen {
ScreenBlockHandlerProcPtr BlockHandler;
CloseScreenProcPtr CloseScreen;
Bool damaged;
- XID alternateVisuals[NUM_COMP_ALTERNATE_VISUALS];
+ int numAlternateVisuals;
+ VisualID *alternateVisuals;
WindowPtr pOverlayWin;
CompOverlayClientPtr pOverlayClients;
@@ -225,6 +220,10 @@ CompositeExtensionInit (void);
*/
Bool
+CompositeRegisterAlternateVisuals (ScreenPtr pScreen,
+ VisualID *vids, int nVisuals);
+
+Bool
compScreenInit (ScreenPtr pScreen);
/*
diff --git a/composite/compwindow.c b/composite/compwindow.c
index 87055b70c..fed642ec6 100644
--- a/composite/compwindow.c
+++ b/composite/compwindow.c
@@ -93,10 +93,10 @@ typedef struct _compPixmapVisit {
static Bool
compRepaintBorder (ClientPtr pClient, pointer closure)
{
- WindowPtr pWindow = LookupWindow ((XID) closure, pClient);
+ WindowPtr pWindow;
+ int rc = dixLookupWindow(&pWindow, (XID)closure, pClient,DixUnknownAccess);
- if (pWindow)
- {
+ if (rc == Success) {
RegionRec exposed;
REGION_NULL(pScreen, &exposed);
@@ -301,7 +301,7 @@ compIsAlternateVisual (ScreenPtr pScreen,
CompScreenPtr cs = GetCompScreen (pScreen);
int i;
- for (i = 0; i < NUM_COMP_ALTERNATE_VISUALS; i++)
+ for (i = 0; i < cs->numAlternateVisuals; i++)
if (cs->alternateVisuals[i] == visual)
return TRUE;
return FALSE;
diff --git a/config/Makefile.am b/config/Makefile.am
new file mode 100644
index 000000000..1cc9109db
--- /dev/null
+++ b/config/Makefile.am
@@ -0,0 +1,10 @@
+AM_CFLAGS = @DIX_CFLAGS@
+
+dbusconfigdir = $(sysconfdir)/dbus-1/system.d
+dbusconfig_DATA = xorg-server.conf
+
+lib_LIBRARIES = libconfig.a
+
+libconfig_a_SOURCES = config.c
+
+EXTRA_DIST = xorg-server.conf
diff --git a/config/config.c b/config/config.c
new file mode 100644
index 000000000..523327d04
--- /dev/null
+++ b/config/config.c
@@ -0,0 +1,450 @@
+/*
+ * Copyright © 2006 Daniel Stone
+ *
+ * Permission to use, copy, modify, distribute, and sell this software and its
+ * documentation for any purpose is hereby granted without fee, provided that
+ * the above copyright 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 and/or authors
+ * not be used in advertising or publicity pertaining to distribution of the
+ * software without specific, written prior permission. The copyright holders
+ * and/or authors 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 AND/OR AUTHORS DISCLAIM ALL WARRANTIES WITH REGARD
+ * TO THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND
+ * FITNESS, IN NO EVENT SHALL THE COPYRIGHT HOLDERS AND/OR AUTHORS BE LIABLE
+ * FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER
+ * RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER 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
+
+#ifdef HAVE_DBUS
+#define DBUS_API_SUBJECT_TO_CHANGE
+#include <dbus/dbus.h>
+#include <string.h>
+
+#include <X11/X.h>
+
+#include "opaque.h" /* for 'display': there has to be a better way */
+ /* the above comment lies. there is no better way. */
+#include "input.h"
+#include "inputstr.h"
+#include "hotplug.h"
+#include "os.h"
+
+#define CONFIG_MATCH_RULE "type='method_call',interface='org.x.config.input'"
+
+#define MALFORMED_MSG "[config] malformed message, dropping"
+#define MALFORMED_MESSAGE() { DebugF(MALFORMED_MSG "\n"); \
+ ret = BadValue; \
+ goto unwind; }
+#define MALFORMED_MESSAGE_ERROR() { DebugF(MALFORMED_MSG ": %s, %s", \
+ error->name, error->message); \
+ ret = BadValue; \
+ goto unwind; }
+
+/* How often to attempt reconnecting when we get booted off the bus. */
+#define RECONNECT_DELAY 10000 /* in ms */
+
+struct config_data {
+ int fd;
+ DBusConnection *connection;
+ char busobject[32];
+ char busname[64];
+};
+
+static struct config_data *configData;
+
+static CARD32 configReconnect(OsTimerPtr timer, CARD32 time, pointer arg);
+
+static void
+configWakeupHandler(pointer blockData, int err, pointer pReadMask)
+{
+ struct config_data *data = blockData;
+
+ if (data->connection && FD_ISSET(data->fd, (fd_set *) pReadMask))
+ dbus_connection_read_write_dispatch(data->connection, 0);
+}
+
+static void
+configBlockHandler(pointer data, struct timeval **tv, pointer pReadMask)
+{
+}
+
+static void
+configTeardown(void)
+{
+ if (configData) {
+ RemoveGeneralSocket(configData->fd);
+ RemoveBlockAndWakeupHandlers(configBlockHandler, configWakeupHandler,
+ configData);
+ xfree(configData);
+ configData = NULL;
+ }
+}
+
+static int
+configAddDevice(DBusMessage *message, DBusMessageIter *iter, DBusError *error)
+{
+ DBusMessageIter subiter;
+ InputOption *tmpo = NULL, *options = NULL;
+ char *tmp = NULL;
+ int ret = BadMatch;
+
+ DebugF("[config] adding device\n");
+
+ /* signature should be [ss][ss]... */
+ options = (InputOption *) xcalloc(sizeof(InputOption), 1);
+ if (!options) {
+ ErrorF("[config] couldn't allocate option\n");
+ return BadAlloc;
+ }
+
+ options->key = xstrdup("_source");
+ options->value = xstrdup("client/dbus");
+
+ while (dbus_message_iter_get_arg_type(iter) == DBUS_TYPE_ARRAY) {
+ tmpo = (InputOption *) xcalloc(sizeof(InputOption), 1);
+ if (!tmpo) {
+ ErrorF("[config] couldn't allocate option\n");
+ ret = BadAlloc;
+ goto unwind;
+ }
+
+ dbus_message_iter_recurse(iter, &subiter);
+
+ if (dbus_message_iter_get_arg_type(&subiter) != DBUS_TYPE_STRING)
+ MALFORMED_MESSAGE();
+
+ dbus_message_iter_get_basic(&subiter, &tmp);
+ if (!tmp)
+ MALFORMED_MESSAGE();
+ if (tmp[0] == '_') {
+ ErrorF("[config] attempted subterfuge: option name %s given\n",
+ tmp);
+ MALFORMED_MESSAGE();
+ }
+ tmpo->key = xstrdup(tmp);
+ if (!tmpo->key) {
+ ErrorF("[config] couldn't duplicate key!\n");
+ ret = BadAlloc;
+ goto unwind;
+ }
+
+ if (!dbus_message_iter_has_next(&subiter))
+ MALFORMED_MESSAGE();
+ dbus_message_iter_next(&subiter);
+ if (dbus_message_iter_get_arg_type(&subiter) != DBUS_TYPE_STRING)
+ MALFORMED_MESSAGE();
+
+ dbus_message_iter_get_basic(&subiter, &tmp);
+ if (!tmp)
+ MALFORMED_MESSAGE();
+ tmpo->value = xstrdup(tmp);
+ if (!tmpo->value) {
+ ErrorF("[config] couldn't duplicate option!\n");
+ ret = BadAlloc;
+ goto unwind;
+ }
+
+ tmpo->next = options;
+ options = tmpo;
+ dbus_message_iter_next(iter);
+ }
+
+ ret = NewInputDeviceRequest(options);
+ if (ret != Success)
+ DebugF("[config] NewInputDeviceRequest failed\n");
+
+ return ret;
+
+unwind:
+ if (tmpo->key)
+ xfree(tmpo->key);
+ if (tmpo->value)
+ xfree(tmpo->value);
+ if (tmpo)
+ xfree(tmpo);
+
+ while (options) {
+ tmpo = options;
+ options = options->next;
+ if (tmpo->key)
+ xfree(tmpo->key);
+ if (tmpo->value)
+ xfree(tmpo->value);
+ xfree(tmpo);
+ }
+
+ return ret;
+}
+
+static int
+configRemoveDevice(DBusMessage *message, DBusMessageIter *iter,
+ DBusError *error)
+{
+ int deviceid = -1;
+ int ret = BadMatch;
+ DeviceIntPtr pDev = NULL;
+
+ if (!dbus_message_get_args(message, error, DBUS_TYPE_INT32,
+ &deviceid, DBUS_TYPE_INVALID)) {
+ MALFORMED_MESSAGE_ERROR();
+ }
+
+ if (deviceid < 0 || !(pDev = LookupDeviceIntRec(deviceid))) {
+ DebugF("[config] bogus device id %d given\n", deviceid);
+ ret = BadMatch;
+ goto unwind;
+ }
+
+ DebugF("[config] removing device %s (id %d)\n", pDev->name, deviceid);
+
+ /* Call PIE here so we don't try to dereference a device that's
+ * already been removed. */
+ OsBlockSignals();
+ ProcessInputEvents();
+ RemoveDevice(pDev);
+ OsReleaseSignals();
+
+ return Success;
+
+unwind:
+ return ret;
+}
+
+static DBusHandlerResult
+configMessage(DBusConnection *connection, DBusMessage *message, void *closure)
+{
+ DBusMessageIter iter;
+ DBusError error;
+ DBusMessage *reply;
+ DBusConnection *bus = closure;
+ int ret = BadDrawable; /* nonsensical value */
+
+ dbus_error_init(&error);
+
+ if (strcmp(dbus_message_get_interface(message),
+ "org.x.config.input") == 0) {
+ if (!dbus_message_iter_init(message, &iter)) {
+ ErrorF("[config] failed to init iterator\n");
+ dbus_error_free(&error);
+ return DBUS_HANDLER_RESULT_NEED_MEMORY; /* ?? */
+ }
+
+ if (strcmp(dbus_message_get_member(message), "add") == 0)
+ ret = configAddDevice(message, &iter, &error);
+ else if (strcmp(dbus_message_get_member(message), "remove") == 0)
+ ret = configRemoveDevice(message, &iter, &error);
+ if (ret != BadDrawable && ret != BadAlloc) {
+ reply = dbus_message_new_method_return(message);
+ dbus_message_iter_init_append(reply, &iter);
+
+ if (!dbus_message_iter_append_basic(&iter, DBUS_TYPE_INT32, &ret)) {
+ ErrorF("[config] couldn't append to iterator\n");
+ dbus_error_free(&error);
+ return DBUS_HANDLER_RESULT_HANDLED;
+ }
+
+ if (!dbus_connection_send(bus, reply, NULL))
+ ErrorF("[config] failed to send reply\n");
+ dbus_connection_flush(bus);
+
+ dbus_message_unref(reply);
+ }
+ }
+
+ dbus_error_free(&error);
+
+ if (ret == BadAlloc)
+ return DBUS_HANDLER_RESULT_NEED_MEMORY;
+ else if (ret == BadDrawable)
+ return DBUS_HANDLER_RESULT_NOT_YET_HANDLED;
+ else
+ return DBUS_HANDLER_RESULT_HANDLED;
+}
+
+/**
+ * This is a filter, which only handles the disconnected signal, which
+ * doesn't go to the normal message handling function. This takes
+ * precedence over the message handling function, so have have to be
+ * careful to ignore anything we don't want to deal with here.
+ *
+ * Yes, this is brutally stupid.
+ */
+static DBusHandlerResult
+configFilter(DBusConnection *connection, DBusMessage *message, void *closure)
+{
+ if (dbus_message_is_signal(message, DBUS_INTERFACE_LOCAL,
+ "Disconnected")) {
+ ErrorF("[dbus] disconnected from bus\n");
+ TimerSet(NULL, 0, RECONNECT_DELAY, configReconnect, NULL);
+ configTeardown();
+ return DBUS_HANDLER_RESULT_HANDLED;
+ }
+
+ return DBUS_HANDLER_RESULT_NOT_YET_HANDLED;
+}
+
+static Bool
+configSetup(void)
+{
+ DBusError error;
+ DBusObjectPathVTable vtable = { .message_function = configMessage };
+
+ if (!configData)
+ configData = (struct config_data *) xcalloc(sizeof(struct config_data), 1);
+ if (!configData) {
+ ErrorF("[dbus] failed to allocate data struct.\n");
+ return FALSE;
+ }
+
+ dbus_error_init(&error);
+ configData->connection = dbus_bus_get(DBUS_BUS_SYSTEM, &error);
+ if (!configData->connection || dbus_error_is_set(&error)) {
+ ErrorF("[dbus] some kind of error occurred: %s (%s)\n", error.name,
+ error.message);
+ dbus_error_free(&error);
+ xfree(configData);
+ configData = NULL;
+ return FALSE;
+ }
+
+ dbus_connection_set_exit_on_disconnect(configData->connection, FALSE);
+
+ if (!dbus_connection_get_unix_fd(configData->connection, &configData->fd)) {
+ dbus_connection_unref(configData->connection);
+ ErrorF("[dbus] couldn't get fd for bus\n");
+ dbus_error_free(&error);
+ xfree(configData);
+ configData = NULL;
+ return FALSE;
+ }
+
+ snprintf(configData->busname, sizeof(configData->busname),
+ "org.x.config.display%d", atoi(display));
+ if (!dbus_bus_request_name(configData->connection, configData->busname,
+ 0, &error) || dbus_error_is_set(&error)) {
+ ErrorF("[dbus] couldn't take over org.x.config: %s (%s)\n",
+ error.name, error.message);
+ dbus_error_free(&error);
+ dbus_connection_unref(configData->connection);
+ xfree(configData);
+ configData = NULL;
+ return FALSE;
+ }
+
+ /* blocks until we get a reply. */
+ dbus_bus_add_match(configData->connection, CONFIG_MATCH_RULE, &error);
+ if (dbus_error_is_set(&error)) {
+ ErrorF("[dbus] couldn't match X.Org rule: %s (%s)\n", error.name,
+ error.message);
+ dbus_error_free(&error);
+ dbus_bus_release_name(configData->connection, configData->busname,
+ &error);
+ dbus_connection_unref(configData->connection);
+ xfree(configData);
+ configData = NULL;
+ return FALSE;
+ }
+
+ if (!dbus_connection_add_filter(configData->connection, configFilter,
+ configData, NULL)) {
+
+ ErrorF("[dbus] couldn't add signal filter: %s (%s)\n", error.name,
+ error.message);
+ dbus_error_free(&error);
+ dbus_bus_release_name(configData->connection, configData->busname,
+ &error);
+ dbus_bus_remove_match(configData->connection, CONFIG_MATCH_RULE,
+ &error);
+ dbus_connection_unref(configData->connection);
+ xfree(configData);
+ configData = NULL;
+ return FALSE;
+ }
+
+ snprintf(configData->busobject, sizeof(configData->busobject),
+ "/org/x/config/%d", atoi(display));
+ if (!dbus_connection_register_object_path(configData->connection,
+ configData->busobject, &vtable,
+ configData->connection)) {
+ ErrorF("[dbus] couldn't register object path\n");
+ dbus_bus_release_name(configData->connection, configData->busname,
+ &error);
+ dbus_bus_remove_match(configData->connection, CONFIG_MATCH_RULE,
+ &error);
+ dbus_connection_unref(configData->connection);
+ dbus_error_free(&error);
+ xfree(configData);
+ configData = NULL;
+ return FALSE;
+ }
+
+ DebugF("[dbus] registered object path %s\n", configData->busobject);
+
+ dbus_error_free(&error);
+ AddGeneralSocket(configData->fd);
+
+ RegisterBlockAndWakeupHandlers(configBlockHandler, configWakeupHandler,
+ configData);
+
+ return TRUE;
+}
+
+static CARD32
+configReconnect(OsTimerPtr timer, CARD32 time, pointer arg)
+{
+ if (configSetup())
+ return 0;
+ else
+ return RECONNECT_DELAY;
+}
+
+void
+configInitialise()
+{
+ TimerSet(NULL, 0, 1, configReconnect, NULL);
+}
+
+void
+configFini()
+{
+ DBusError error;
+
+ if (configData) {
+ dbus_error_init(&error);
+ dbus_connection_unregister_object_path(configData->connection,
+ configData->busobject);
+ dbus_connection_remove_filter(configData->connection, configFilter,
+ configData);
+ dbus_bus_remove_match(configData->connection, CONFIG_MATCH_RULE,
+ &error);
+ dbus_bus_release_name(configData->connection, configData->busname,
+ &error);
+ dbus_connection_unref(configData->connection);
+ dbus_error_free(&error);
+ configTeardown();
+ }
+}
+
+#else /* !HAVE_DBUS */
+
+void
+configInitialise()
+{
+}
+
+void
+configFini()
+{
+}
+
+#endif /* HAVE_DBUS */
diff --git a/config/dbus-api b/config/dbus-api
new file mode 100644
index 000000000..53bb3e45d
--- /dev/null
+++ b/config/dbus-api
@@ -0,0 +1,35 @@
+D-BUS Configuration API v0.1
+----------------------------
+
+The X server will register the bus name org.x.config.displayN, and the
+object /org/x/config/N, where N is the display number.
+
+Currently only hotplugging of input devices is supported.
+
+org.x.config.input:
+ org.x.config.input.add:
+ Takes an argument of key/value option pairs in arrays, e.g.:
+ [ss][ss][ss][ss]
+ is the signature for four options. These options will be passed
+ to the input driver as with any others.
+ Option names beginning with _ are not allowed; they are reserved
+ for internal use.
+
+ Returns one int32, which is an X Status, as defined in X.h. If
+ everything is successful, Success will be returned. BadMatch will
+ be returned if the options given do not match any device. BadValue
+ is returned for a malformed message.
+
+ Notably, BadAlloc is never returned: the server internally signals
+ to D-BUS that the attempt failed for lack of memory.
+
+ The return does not notify the client of which devices were created
+ or modified as a result of this request: clients are encouraged to
+ listen for the XInput DevicePresenceNotify event to monitor changes
+ in the device list.
+
+ org.x.config.input.remove:
+ Takes one int32 argument, which is the device ID to remove, i.e.:
+ i
+ is the signature.
+ Same return values as org.x.config.input.add.
diff --git a/config/xorg-server.conf b/config/xorg-server.conf
new file mode 100644
index 000000000..47a9a7824
--- /dev/null
+++ b/config/xorg-server.conf
@@ -0,0 +1,13 @@
+<!DOCTYPE busconfig PUBLIC
+ "-//freedesktop//DTD D-BUS Bus Configuration 1.0//EN"
+ "http://www.freedesktop.org/standards/dbus/1.0/busconfig.dtd">
+<busconfig>
+ <policy context="default">
+ <allow own="org.x.config.display0"/>
+ <allow send_destination="org.x.config.display0"/>
+ <allow send_interface="org.x.config.display0"/>
+ <allow own="org.x.config.display1"/>
+ <allow send_destination="org.x.config.display1"/>
+ <allow send_interface="org.x.config.display1"/>
+ </policy>
+</busconfig>
diff --git a/configure.ac b/configure.ac
index f4503e7e3..491bdd511 100644
--- a/configure.ac
+++ b/configure.ac
@@ -25,7 +25,7 @@ dnl Process this file with autoconf to create configure.
AC_PREREQ(2.57)
dnl This is the not the Xorg version number, it's the server version number.
dnl Yes, that's weird.
-AC_INIT([xorg-server], 1.1.99.2, [https://bugs.freedesktop.org/enter_bug.cgi?product=xorg], xorg-server)
+AC_INIT([xorg-server], 1.2.99.0, [https://bugs.freedesktop.org/enter_bug.cgi?product=xorg], xorg-server)
AC_CONFIG_SRCDIR([Makefile.am])
AM_INIT_AUTOMAKE([dist-bzip2 foreign])
AM_MAINTAINER_MODE
@@ -50,7 +50,6 @@ AC_CONFIG_HEADERS(include/xwin-config.h)
dnl kdrive-config.h covers the kdrive DDX
AC_CONFIG_HEADERS(include/kdrive-config.h)
-
AC_PROG_CC
AM_PROG_AS
AC_PROG_INSTALL
@@ -62,8 +61,29 @@ AC_PROG_MAKE_SET
PKG_PROG_PKG_CONFIG
AC_PROG_LEX
AC_PROG_YACC
+AC_SYS_LARGEFILE
XORG_PROG_RAWCPP
+dnl Check for dtrace program (needed to build Xserver dtrace probes)
+AC_ARG_WITH(dtrace, AS_HELP_STRING([--with-dtrace=PATH],
+ [Enable dtrace probes (default: enabled if dtrace found)]),
+ [WDTRACE=$withval], [WDTRACE=auto])
+if test "x$WDTRACE" = "xyes" -o "x$WDTRACE" = "xauto" ; then
+ AC_PATH_PROG(DTRACE, [dtrace], [not_found], [$PATH:/usr/sbin])
+ if test "x$DTRACE" = "xnot_found" ; then
+ if test "x$WDTRACE" = "xyes" ; then
+ AC_MSG_FAILURE([dtrace requested but not found])
+ fi
+ WDTRACE="no"
+ fi
+fi
+if test "x$WDTRACE" != "xno" ; then
+ AC_DEFINE(XSERVER_DTRACE, 1,
+ [Define to 1 if the DTrace Xserver provider probes should be built in.])
+fi
+AM_CONDITIONAL(XSERVER_DTRACE, [test "x$WDTRACE" != "xno"])
+AC_DEFINE_DIR(XERRORDB_PATH, libdir/XErrorDB, [Path to XErrorDB file])
+
AC_HEADER_DIRENT
AC_HEADER_STDC
AC_CHECK_HEADERS([fcntl.h stdlib.h string.h unistd.h])
@@ -82,7 +102,8 @@ AC_TYPE_PID_T
dnl Checks for library functions.
AC_FUNC_VPRINTF
AC_CHECK_FUNCS([geteuid getuid link memmove memset mkstemp strchr strrchr \
- strtol getopt getopt_long vsnprintf walkcontext backtrace])
+ strtol getopt getopt_long vsnprintf walkcontext backtrace \
+ getisax])
AC_FUNC_ALLOCA
dnl Old HAS_* names used in os/*.c.
AC_CHECK_FUNC([getdtablesize],
@@ -153,7 +174,7 @@ AC_CACHE_CHECK([for SYSV IPC],
[AC_TRY_LINK([
#include <sys/shm.h>
],[
-int main () {
+{
int id;
id = shmget(IPC_PRIVATE, 512, SHM_W | SHM_R);
if (id < 0) return -1;
@@ -174,6 +195,7 @@ dnl glibc backtrace support check (hw/xfree86/common/xf86Events.c)
AC_CHECK_HEADER([execinfo.h],[
AC_CHECK_LIB(c, backtrace, [
AC_DEFINE(HAVE_BACKTRACE, 1, [Has backtrace support])
+ AC_DEFINE(HAVE_EXECINFO_H, 1, [Have execinfo.h])
])]
)
@@ -260,6 +282,7 @@ case $host_os in
*netbsd*)
AC_DEFINE(CSRG_BASED, 1, [System is BSD-like])
AC_DEFINE(PCCONS_SUPPORT, 1, [System has PC console])
+ AC_DEFINE(PCVT_SUPPORT, 1, [System has PCVT console])
AC_DEFINE(WSCONS_SUPPORT, 1, [System has wscons console])
DRI=yes
;;
@@ -294,9 +317,9 @@ AC_DEFINE_UNQUOTED(OSNAME, "$OSNAME",
DEFAULT_VENDOR_NAME="The X.Org Foundation"
DEFAULT_VENDOR_NAME_SHORT="X.Org"
DEFAULT_VERSION_MAJOR=7
-DEFAULT_VERSION_MINOR=0
-DEFAULT_VERSION_PATCH=0
-DEFAULT_VERSION_SNAP=0
+DEFAULT_VERSION_MINOR=1
+DEFAULT_VERSION_PATCH=99
+DEFAULT_VERSION_SNAP=2
DEFAULT_RELEASE_DATE="21 December 2005"
DEFAULT_VENDOR_WEB="http://wiki.x.org"
@@ -368,7 +391,7 @@ AC_ARG_WITH(mesa-source, AS_HELP_STRING([--with-mesa-source=MESA_SOURCE], [P
AC_ARG_WITH(fontdir, AS_HELP_STRING([--with-fontdir=FONTDIR], [Path to top level dir where fonts are installed (default: ${libdir}/X11/fonts)]),
[ FONTDIR="$withval" ],
[ FONTDIR="${libdir}/X11/fonts" ])
-DEFAULT_FONT_PATH="${FONTDIR}/misc/,${FONTDIR}/TTF/,${FONTDIR}/OTF,${FONTDIR}/Type1/,${FONTDIR}/CID/,${FONTDIR}/100dpi/,${FONTDIR}/75dpi/"
+DEFAULT_FONT_PATH="${FONTDIR}/misc/,${FONTDIR}/TTF/,${FONTDIR}/OTF,${FONTDIR}/Type1/,${FONTDIR}/100dpi/,${FONTDIR}/75dpi/"
AC_ARG_WITH(default-font-path, AS_HELP_STRING([--with-default-font-path=PATH], [Comma separated list of font dirs]),
[ FONTPATH="$withval" ],
[ FONTPATH="${DEFAULT_FONT_PATH}" ])
@@ -392,6 +415,12 @@ AC_ARG_ENABLE(install-libxf86config,
[Install libxf86config (default: disabled)]),
[INSTALL_LIBXF86CONFIG=$enableval],
[INSTALL_LIBXF86CONFIG=no])
+AC_ARG_ENABLE(builtin-fonts, AS_HELP_STRING([--enable-builtin-fonts], [Use only built-in fonts (default: use external)]),
+ [BUILTIN_FONTS=$enableval],
+ [BUILTIN_FONTS=no])
+AC_ARG_ENABLE(null-root-cursor, AS_HELP_STRING([--enable-null-root-cursor], [Use an empty root cursor (default: use core cursor)]),
+ [NULL_ROOT_CURSOR=$enableval],
+ [NULL_ROOT_CURSOR=no])
dnl Extensions.
AC_ARG_ENABLE(composite, AS_HELP_STRING([--disable-composite], [Build Composite extension (default: enabled)]), [COMPOSITE=$enableval], [COMPOSITE=yes])
@@ -401,7 +430,7 @@ AC_ARG_ENABLE(xtrap, AS_HELP_STRING([--disable-xtrap], [Build XTrap ext
AC_ARG_ENABLE(record, AS_HELP_STRING([--disable-record], [Build Record extension (default: enabled)]), [RECORD=$enableval], [RECORD=yes])
AC_ARG_ENABLE(xv, AS_HELP_STRING([--disable-xv], [Build Xv extension (default: enabled)]), [XV=$enableval], [XV=yes])
AC_ARG_ENABLE(xvmc, AS_HELP_STRING([--disable-xvmc], [Build XvMC extension (default: enabled)]), [XVMC=$enableval], [XVMC=yes])
-AC_ARG_ENABLE(dga, AS_HELP_STRING([--disable-dga], [Build DGA extension (default: enabled)]), [DGA=$enableval], [DGA=yes])
+AC_ARG_ENABLE(dga, AS_HELP_STRING([--disable-dga], [Build DGA extension (default: auto)]), [DGA=$enableval], [DGA=auto])
AC_ARG_ENABLE(screensaver, AS_HELP_STRING([--disable-screensaver], [Build ScreenSaver extension (default: enabled)]), [SCREENSAVER=$enableval], [SCREENSAVER=yes])
AC_ARG_ENABLE(xdmcp, AS_HELP_STRING([--disable-xdmcp], [Build XDMCP extension (default: auto)]), [XDMCP=$enableval], [XDMCP=auto])
AC_ARG_ENABLE(xdm-auth-1, AS_HELP_STRING([--disable-xdm-auth-1], [Build XDM-Auth-1 extension (default: auto)]), [XDMAUTH=$enableval], [XDMAUTH=auto])
@@ -410,19 +439,23 @@ AC_ARG_ENABLE(aiglx, AS_HELP_STRING([--enable-aiglx], [Build accelerate
AC_ARG_ENABLE(glx-tls, AS_HELP_STRING([--enable-glx-tls], [Build GLX with TLS support (default: disabled)]), [GLX_USE_TLS=$enableval], [GLX_USE_TLS=no])
AC_ARG_ENABLE(dri, AS_HELP_STRING([--enable-dri], [Build DRI extension (default: auto)]), [DRI=$enableval])
AC_ARG_ENABLE(xinerama, AS_HELP_STRING([--disable-xinerama], [Build Xinerama extension (default: enabled)]), [XINERAMA=$enableval], [XINERAMA=yes])
-AC_ARG_ENABLE(xf86vidmode, AS_HELP_STRING([--disable-xf86vidmode], [Build XF86VidMode extension (default: enabled)]), [XF86VIDMODE=$enableval], [XF86VIDMODE=yes])
-AC_ARG_ENABLE(xf86misc, AS_HELP_STRING([--disable-xf86misc], [Build XF86Misc extension (default: enabled)]), [XF86MISC=$enableval], [XF86MISC=yes])
-AC_ARG_ENABLE(xcsecurity, AS_HELP_STRING([--disable-xcsecurity], [Build Security extension (default: enabled)]), [XCSECURITY=$enableval], [XCSECURITY=yes])
+AC_ARG_ENABLE(xf86vidmode, AS_HELP_STRING([--disable-xf86vidmode], [Build XF86VidMode extension (default: auto)]), [XF86VIDMODE=$enableval], [XF86VIDMODE=auto])
+AC_ARG_ENABLE(xf86misc, AS_HELP_STRING([--disable-xf86misc], [Build XF86Misc extension (default: auto)]), [XF86MISC=$enableval], [XF86MISC=auto])
+AC_ARG_ENABLE(xace, AS_HELP_STRING([--disable-xace], [Build X-ACE extension (default: enabled)]), [XACE=$enableval], [XACE=yes])
+AC_ARG_ENABLE(xcsecurity, AS_HELP_STRING([--disable-xcsecurity], [Build Security extension (default: enabled)]), [XCSECURITY=$enableval], [XCSECURITY=$XACE])
+AC_ARG_ENABLE(appgroup, AS_HELP_STRING([--disable-appgroup], [Build XC-APPGROUP extension (default: enabled)]), [APPGROUP=$enableval], [APPGROUP=$XCSECURITY])
+AC_ARG_ENABLE(xcalibrate, AS_HELP_STRING([--enable-xcalibrate], [Build XCalibrate extension (default: disabled)]), [XCALIBRATE=$enableval], [XCALIBRATE=no])
+AC_ARG_ENABLE(tslib, AS_HELP_STRING([--enable-tslib], [Build kdrive tslib touchscreen support (default: disabled)]), [TSLIB=$enableval], [TSLIB=no])
AC_ARG_ENABLE(xevie, AS_HELP_STRING([--disable-xevie], [Build XEvIE extension (default: enabled)]), [XEVIE=$enableval], [XEVIE=yes])
-AC_ARG_ENABLE(appgroup, AS_HELP_STRING([--disable-appgroup], [Build XC-APPGROUP extension (default: enabled)]), [APPGROUP=$enableval], [APPGROUP=yes])
AC_ARG_ENABLE(cup, AS_HELP_STRING([--disable-cup], [Build TOG-CUP extension (default: enabled)]), [CUP=$enableval], [CUP=yes])
AC_ARG_ENABLE(evi, AS_HELP_STRING([--disable-evi], [Build Extended-Visual-Information extension (default: enabled)]), [EVI=$enableval], [EVI=yes])
AC_ARG_ENABLE(multibuffer, AS_HELP_STRING([--enable-multibuffer], [Build Multibuffer extension (default: disabled)]), [MULTIBUFFER=$enableval], [MULTIBUFFER=no])
AC_ARG_ENABLE(fontcache, AS_HELP_STRING([--enable-fontcache], [Build FontCache extension (default: disabled)]), [FONTCACHE=$enableval], [FONTCACHE=no])
AC_ARG_ENABLE(dbe, AS_HELP_STRING([--disable-dbe], [Build DBE extension (default: enabled)]), [DBE=$enableval], [DBE=yes])
AC_ARG_ENABLE(xf86bigfont, AS_HELP_STRING([--disable-xf86bigfont], [Build XF86 Big Font extension (default: enabled)]), [XF86BIGFONT=$enableval], [XF86BIGFONT=yes])
-AC_ARG_ENABLE(dpms, AS_HELP_STRING([--disable-dpms], [Build DPMS extension (default: enabled)]), [DPMS=$enableval], [DPMSExtension=yes])
-AC_ARG_ENABLE(xinput, AS_HELP_STRING([--disable-xinput], [Build XInput Extension (default: enabled)]), [XINPUT=$enableval], [XINPUT=yes])
+AC_ARG_ENABLE(dpms, AS_HELP_STRING([--disable-dpms], [Build DPMS extension (default: enabled)]), [DPMSExtension=$enableval], [DPMSExtension=yes])
+AC_ARG_ENABLE(dbus, AS_HELP_STRING([--disable-dbus], [Build D-BUS support (default: auto)]), [DBUS=$enableval], [DBUS=auto])
+AC_ARG_ENABLE(xfree86-utils, AS_HELP_STRING([--enable-xfree86-utils], [Build xfree86 DDX utilities (default: enabled)]), [XF86UTILS=$enableval], [XF86UTILS=yes])
dnl DDXes.
AC_ARG_ENABLE(xorg, AS_HELP_STRING([--enable-xorg], [Build Xorg server (default: auto)]), [XORG=$enableval], [XORG=auto])
@@ -430,7 +463,7 @@ AC_ARG_ENABLE(dmx, AS_HELP_STRING([--enable-dmx], [Build DMX server (d
AC_ARG_ENABLE(xvfb, AS_HELP_STRING([--enable-xvfb], [Build Xvfb server (default: yes)]), [XVFB=$enableval], [XVFB=yes])
AC_ARG_ENABLE(xnest, AS_HELP_STRING([--enable-xnest], [Build Xnest server (default: auto)]), [XNEST=$enableval], [XNEST=auto])
AC_ARG_ENABLE(xwin, AS_HELP_STRING([--enable-xwin], [Build XWin server (default: auto)]), [XWIN=$enableval], [XWIN=auto])
-AC_ARG_ENABLE(xprint, AS_HELP_STRING([--enable-xprint], [Build Xprint extension and server (default: auto)]), [XPRINT=$enableval], [XPRINT=auto])
+AC_ARG_ENABLE(xprint, AS_HELP_STRING([--enable-xprint], [Build Xprint extension and server (default: no)]), [XPRINT=$enableval], [XPRINT=no])
AC_ARG_ENABLE(xgl, AS_HELP_STRING([--enable-xgl], [Build Xgl server (default: no)]), [XGL=$enableval], [XGL=no])
AC_ARG_ENABLE(xglx, AS_HELP_STRING([--enable-xglx], [Build Xglx xgl module (default: no)]), [XGLX=$enableval], [XGLX=no])
AC_ARG_ENABLE(xegl, AS_HELP_STRING([--enable-xegl], [Build Xegl xgl module (default: no)]), [XEGL=$enableval], [XEGL=no])
@@ -438,6 +471,9 @@ dnl kdrive and its subsystems
AC_ARG_ENABLE(kdrive, AS_HELP_STRING([--enable-kdrive], [Build kdrive servers (default: no)]), [KDRIVE=$enableval], [KDRIVE=no])
AC_ARG_ENABLE(xephyr, AS_HELP_STRING([--enable-xephyr], [Build the kdrive Xephyr server (default: auto)]), [XEPHYR=$enableval], [XEPHYR=auto])
AC_ARG_ENABLE(xsdl, AS_HELP_STRING([--enable-xsdl], [Build the kdrive Xsdl server (default: auto)]), [XSDL=$enableval], [XSDL=auto])
+AC_ARG_ENABLE(xfake, AS_HELP_STRING([--enable-xfake], [Build the kdrive 'fake' server (default: auto)]), [XFAKE=$enableval], [XFAKE=auto])
+AC_ARG_ENABLE(xfbdev, AS_HELP_STRING([--enable-xfbdev], [Build the kdrive framebuffer device server (default: auto)]), [XFBDEV=$enableval], [XFBDEV=auto])
+AC_ARG_ENABLE(kdrive-vesa, AS_HELP_STRING([--enable-kdrive-vesa], [Build the kdrive VESA-based servers (default: auto)]), [KDRIVEVESA=$enableval], [KDRIVEVESA=auto])
dnl xprint
AC_ARG_ENABLE(freetype, AS_HELP_STRING([ --enable-freetype], [Build Xprint FreeType backend (default: yes)]), [XP_USE_FREETYPE=$enableval],[XP_USE_FREETYPE=no])
AC_ARG_WITH(freetype-config, AS_HELP_STRING([ --with-freetype-config=PROG], [Use FreeType configuration program PROG (default: auto)]), freetype_config=$withval, freetype_config=auto)
@@ -469,7 +505,7 @@ AC_MSG_RESULT([$SETUID])
AM_CONDITIONAL(INSTALL_SETUID, [test "x$SETUID" = "xyes"])
dnl Issue an error if xtrans.m4 was not found and XTRANS_CONNECTION_FLAGS macro
-dnl was not expanded, since libX11 with no transport types is rather useless.
+dnl was not expanded, since xorg-server with no transport types is rather useless.
dnl
dnl If you're seeing an error here, be sure you installed the lib/xtrans module
dnl first and if it's not in the default location, that you set the ACLOCAL
@@ -509,9 +545,21 @@ XEXT_LIB='$(top_builddir)/Xext/libXext.la'
XEXTXORG_LIB='$(top_builddir)/Xext/libXextbuiltin.la'
dnl Core modules for most extensions, et al.
-REQUIRED_MODULES="randrproto renderproto [fixesproto >= 4.0] damageproto xcmiscproto xextproto xproto xtrans xf86miscproto xf86vidmodeproto xf86bigfontproto [scrnsaverproto >= 1.1] bigreqsproto resourceproto fontsproto inputproto xf86dgaproto"
+REQUIRED_MODULES="[randrproto >= 1.2] renderproto [fixesproto >= 4.0] damageproto xcmiscproto xextproto xproto xtrans [scrnsaverproto >= 1.1] bigreqsproto resourceproto fontsproto [inputproto >= 1.4] [kbproto >= 1.0.3]"
REQUIRED_LIBS="xfont xau fontenc"
+if test "x$DBUS" = xauto; then
+ PKG_CHECK_MODULES(DBUS, dbus-1, [DBUS=yes], [DBUS=no])
+fi
+if test "x$DBUS" = xyes; then
+ PKG_CHECK_MODULES(DBUS, dbus-1)
+ AC_DEFINE(HAVE_DBUS, 1, [Have D-BUS support])
+ REQUIRED_MODULES="$REQUIRED_MODULES dbus-1"
+ REQUIRED_LIBS="$REQUIRED_LIBS dbus-1"
+fi
+CONFIG_LIB='$(top_builddir)/config/libconfig.a'
+AM_CONDITIONAL(DBUS, [test "x$DBUS" = xyes])
+
AM_CONDITIONAL(XV, [test "x$XV" = xyes])
if test "x$XV" = xyes; then
AC_DEFINE(XV, 1, [Support Xv extension])
@@ -526,10 +574,6 @@ if test "x$XVMC" = xyes; then
AC_DEFINE(XvMCExtension, 1, [Build XvMC extension])
fi
-AM_CONDITIONAL(DGA, [test "x$DGA" = xyes])
-if test "x$DGA" = xyes; then
- AC_DEFINE(DGA, 1, [Support DGA extension])
-fi
AM_CONDITIONAL(COMPOSITE, [test "x$COMPOSITE" = xyes])
if test "x$COMPOSITE" = xyes; then
@@ -572,12 +616,17 @@ fi
if test "x$GLX" = xyes && ! test "x$MESA_SOURCE" = x; then
PKG_CHECK_MODULES([XLIB], [x11])
- PKG_CHECK_MODULES([GL], [glproto >= 1.4.6])
+ PKG_CHECK_MODULES([GL], [glproto >= 1.4.7])
AC_SUBST(XLIB_CFLAGS)
AC_DEFINE(GLXEXT, 1, [Build GLX extension])
GLX_LIBS='$(top_builddir)/GL/glx/libglx.la $(top_builddir)/GL/mesa/libGLcore.la'
test -d GL || mkdir GL
- $srcdir/GL/symlink-mesa.sh $MESA_SOURCE GL/
+ case $host_os in
+ solaris*)
+ SYMLINK_MESA="/usr/bin/bash $srcdir/GL/symlink-mesa.sh" ;;
+ *) SYMLINK_MESA=$srcdir/GL/symlink-mesa.sh ;;
+ esac
+ $SYMLINK_MESA $MESA_SOURCE GL/
if test $? -ne 0; then
AC_MSG_ERROR([Failed to link Mesa source tree. Please specify a proper path to Mesa sources, or disable GLX.])
fi
@@ -604,10 +653,14 @@ AM_CONDITIONAL(DRI, test "x$DRI" = xyes)
if test "x$DRI" = xyes; then
AC_DEFINE(XF86DRI, 1, [Build DRI extension])
PKG_CHECK_MODULES([DRIPROTO], [xf86driproto])
- PKG_CHECK_MODULES([LIBDRM], [libdrm])
+ PKG_CHECK_MODULES([LIBDRM], [libdrm >= 2.3.0])
PKG_CHECK_MODULES([GL], [glproto >= 1.4.1])
+ PKG_CHECK_EXISTS(libdrm >= 2.2.0,
+ [AC_DEFINE([HAVE_LIBDRM_2_2], 1,
+ [Has version 2.2 (or newer) of the drm library])])
AC_SUBST(DRIPROTO_CFLAGS)
AC_SUBST(LIBDRM_CFLAGS)
+ AC_SUBST(LIBDRM_LIBS)
AC_SUBST(GL_CFLAGS)
fi
@@ -618,8 +671,16 @@ if test "x$XINERAMA" = xyes; then
REQUIRED_MODULES="$REQUIRED_MODULES xineramaproto"
fi
+AM_CONDITIONAL(XACE, [test "x$XACE" = xyes])
+if test "x$XACE" = xyes; then
+ AC_DEFINE(XACE, 1, [Build X-ACE extension])
+fi
+
AM_CONDITIONAL(XCSECURITY, [test "x$XCSECURITY" = xyes])
if test "x$XCSECURITY" = xyes; then
+ if test "x$XACE" != xyes; then
+ AC_MSG_ERROR([cannot build Security extension without X-ACE])
+ fi
AC_DEFINE(XCSECURITY, 1, [Build Security extension])
fi
@@ -629,12 +690,11 @@ if test "x$XEVIE" = xyes; then
REQUIRED_MODULES="$REQUIRED_MODULES evieproto"
fi
-if test "x$APPGROUP" = xyes && test "x$XCSECURITY" != xyes; then
- AC_MSG_NOTICE([Disabling APPGROUP extension])
- APPGROUP=no
-fi
AM_CONDITIONAL(APPGROUP, [test "x$APPGROUP" = xyes])
if test "x$APPGROUP" = xyes; then
+ if test "x$XACE" != xyes || test "x$XCSECURITY" != xyes; then
+ AC_MSG_ERROR([cannot build APPGROUP extension without X-ACE and XC-SECURITY])
+ fi
AC_DEFINE(XAPPGROUP, 1, [Build APPGROUP extension])
fi
@@ -678,14 +738,6 @@ if test "x$DPMSExtension" = xyes; then
AC_DEFINE(DPMSExtension, 1, [Support DPMS extension])
fi
-if test "x$XF86VIDMODE" = xyes; then
- AC_DEFINE(XF86VIDMODE, 1, [Support XFree86 Video Mode extension])
-fi
-
-if test "x$XF86MISC" = xyes; then
- AC_DEFINE(XF86MISC, 1, [Support XFree86 miscellaneous extensions])
-fi
-
if test "x$XPRINT" = xauto; then
PKG_CHECK_MODULES([XPRINTPROTO], [printproto], [XPRINT=yes], [XPRINT=no])
fi
@@ -695,6 +747,19 @@ if test "x$XPRINT" = xyes; then
REQUIRED_MODULES="$REQUIRED_MODULES printproto"
fi
+if test "x$BUILTIN_FONTS" = xyes; then
+ AC_DEFINE(BUILTIN_FONTS, 1, [Use only built-in fonts])
+ AC_DEFINE(NOFONTSERVERACCESS, 1, [Avoid using a font server])
+fi
+
+if test "x$XCALIBRATE" = xyes && test "$KDRIVE" = yes; then
+ AC_DEFINE(XCALIBRATE, 1, [Build XCalibrate extension])
+ REQUIRED_MODULES="$REQUIRED_MODULES xcalibrateproto"
+else
+ XCALIBRATE=no
+fi
+AM_CONDITIONAL(XCALIBRATE, [test "x$XCALIBRATE" = xyes])
+
AC_DEFINE(RENDER, 1, [Support RENDER extension])
RENDER_LIB='$(top_builddir)/render/librender.la'
RENDER_INC='-I$(top_srcdir)/render'
@@ -717,12 +782,11 @@ if test "$COMPOSITE" = yes; then
fi
MIEXT_DAMAGE_INC='-I$(top_srcdir)/miext/damage'
-AM_CONDITIONAL(XINPUT, [test "x$XINPUT" = xyes])
-if test "x$XINPUT" = xyes; then
- AC_DEFINE(XINPUT, 1, [Support X Input extension])
- XI_LIB='$(top_builddir)/Xi/libXi.la'
- XI_INC='-I$(top_srcdir)/Xi'
-fi
+AC_DEFINE(XINPUT, 1, [Support X Input extension])
+XI_LIB='$(top_builddir)/Xi/libXi.la'
+XI_INC='-I$(top_srcdir)/Xi'
+
+AM_CONDITIONAL(XF86UTILS, test "x$XF86UTILS" = xyes)
AC_DEFINE(SHAPE, 1, [Support SHAPE extension])
@@ -736,6 +800,10 @@ XKB_STUB_LIB='$(top_builddir)/xkb/libxkbstubs.la'
AC_CHECK_FUNC(strcasecmp, [], AC_DEFINE([NEED_STRCASECMP], 1,
[Do not have `strcasecmp'.]))
+if test "x$NULL_ROOT_CURSOR" = xyes; then
+ AC_DEFINE(NULL_ROOT_CURSOR, 1, [Use an empty root cursor])
+fi
+
PKG_CHECK_MODULES([XDMCP], [xdmcp], [have_libxdmcp="yes"], [have_libxdmcp="no"])
if test "x$have_libxdmcp" = xyes; then
AC_CHECK_LIB(Xdmcp, XdmcpWrap, [have_xdmcpwrap="yes"], [have_xdmcpwrap="no"], [$XDMCP_LIBS])
@@ -793,6 +861,7 @@ VENDOR_MAN_VERSION="Version ${VENDOR_VERSION_STRING}"
AC_DEFINE_DIR(COMPILEDDEFAULTFONTPATH, FONTPATH, [Default font path])
AC_DEFINE_DIR(RGB_DB, RGBPATH, [Default RGB path])
+AC_DEFINE_DIR(BASE_FONT_PATH, FONTDIR, [Default base font path])
AC_DEFINE_DIR(DRI_DRIVER_PATH, DRI_DRIVER_PATH, [Default DRI driver path])
AC_DEFINE_UNQUOTED(XVENDORNAME, ["$VENDOR_STRING"], [Vendor name])
AC_DEFINE_UNQUOTED(XVENDORNAMESHORT, ["$VENDOR_STRING_SHORT"], [Short vendor name])
@@ -811,11 +880,13 @@ AC_DEFINE(DDXOSINIT, 1, [Use OsVendorInit])
AC_DEFINE(SERVER_LOCK, 1, [Use a lock to prevent multiple servers on a display])
AC_DEFINE(SMART_SCHEDULE, 1, [Include time-based scheduler])
AC_DEFINE(NO_LIBCWRAPPER, 1, [Define to 1 if modules should avoid the libcwrapper])
-AM_CONDITIONAL(DEBUG, test "x$DEBUGGING" = xyes)
-if ! test "x$DEBUGGING" = xyes; then
- AC_DEFINE(NDEBUG, 1, [Disable some debugging code])
+if test "x$DEBUGGING" = xyes; then
+ AC_DEFINE(DEBUG, 1, [Enable debugging code])
+else
+ AC_DEFINE(NDEBUG, 1, [Disable some debugging code])
fi
+AM_CONDITIONAL(DEBUG, [test "x$DEBUGGING" = xyes])
AC_DEFINE(USE_RGB_TXT, 1, [Use rgb.txt directly])
AC_DEFINE(MITMISC, 1, [Support MIT Misc extension])
@@ -825,8 +896,13 @@ AC_DEFINE(XCMISC, 1, [Support XCMisc extension])
AC_DEFINE(BIGREQS, 1, [Support BigRequests extension])
AC_DEFINE(PIXPRIV, 1, [Support pixmap privates])
-DIX_LIB='$(top_builddir)/dix/libdix.la'
-OS_LIB='$(top_builddir)/os/libos.la'
+if test "x$WDTRACE" != "xno" ; then
+ DIX_LIB='$(top_builddir)/dix/dix.O'
+ OS_LIB='$(top_builddir)/os/os.O'
+else
+ DIX_LIB='$(top_builddir)/dix/libdix.la'
+ OS_LIB='$(top_builddir)/os/libos.la'
+fi
CWRAP_LIB='$(top_builddir)/os/libcwrapper.la'
MI_LIB='$(top_builddir)/mi/libmi.la'
MINIMI_LIB='$(top_builddir)/mi/libminimi.la'
@@ -843,10 +919,71 @@ PKG_CHECK_MODULES([XSERVERCFLAGS], [$REQUIRED_MODULES $REQUIRED_LIBS])
PKG_CHECK_MODULES([XSERVERLIBS], [$REQUIRED_LIBS])
XSERVER_CFLAGS="${XSERVERCFLAGS_CFLAGS}"
-XSERVER_LIBS="${XSERVERLIBS_LIBS} ${SYS_LIBS} -lm -lz"
-AC_SUBST([XSERVER_LIBS])
+XSERVER_LIBS="${XSERVERLIBS_LIBS} ${SYS_LIBS} ${LIBS}"
AC_SUBST([SYS_LIBS])
+# The Xorg binary needs to export symbols so that they can be used from modules
+# Some platforms require extra flags to do this. gcc should set these flags
+# when -rdynamic is passed to it, other compilers/linkers may need to be added
+# here.
+if test "x$GCC" = "xyes"; then
+ GCC_WARNINGS1="-Wall -Wpointer-arith -Wstrict-prototypes"
+ GCC_WARNINGS2="-Wmissing-prototypes -Wmissing-declarations"
+ GCC_WARNINGS3="-Wnested-externs -fno-strict-aliasing"
+ GCC_WARNINGS="$GCC_WARNINGS1 $GCC_WARNINGS2 $GCC_WARNINGS3"
+ if test "x$WERROR" = "xyes"; then
+ GCC_WARNINGS="${GCC_WARNINGS} -Werror"
+ fi
+ XSERVER_CFLAGS="$GCC_WARNINGS $XSERVER_CFLAGS"
+
+ LD_EXPORT_SYMBOLS_FLAG="-rdynamic"
+fi
+case $host_os in
+ openbsd*)
+ LD_EXPORT_SYMBOLS_FLAG="-Wl,--export-dynamic"
+ ;;
+esac
+AC_SUBST([LD_EXPORT_SYMBOLS_FLAG])
+
+AC_CHECK_FUNCS([clock_gettime], [have_clock_gettime=yes],
+ [AC_CHECK_LIB([rt], [clock_gettime], [have_clock_gettime=-lrt],
+ [have_clock_gettime=no])])
+
+AC_MSG_CHECKING([for a useful monotonic clock ...])
+
+if ! test "x$have_clock_gettime" = xno; then
+ if ! test "x$have_clock_gettime" = xyes; then
+ CLOCK_LIBS="$have_clock_gettime"
+ else
+ CLOCK_LIBS=""
+ fi
+
+ AC_RUN_IFELSE([
+#define _POSIX_C_SOURCE 199309L
+#include <time.h>
+
+int main(int argc, char *argv[]) {
+ struct timespec tp;
+
+ if (clock_gettime(CLOCK_MONOTONIC, &tp) == 0)
+ return 0;
+ else
+ return 1;
+}
+ ], [MONOTONIC_CLOCK=yes], [MONOTONIC_CLOCK=no],
+ [MONOTONIC_CLOCK="cross compiling"])
+else
+ MONOTONIC_CLOCK=no
+fi
+
+AC_MSG_RESULT([$MONOTONIC_CLOCK])
+
+if test "x$MONOTONIC_CLOCK" = xyes; then
+ AC_DEFINE(MONOTONIC_CLOCK, 1, [Have monotonic clock from clock_gettime()])
+ XSERVER_LIBS="$XSERVER_LIBS $CLOCK_LIBS"
+ LIBS="$LIBS $CLOCK_LIBS"
+fi
+
dnl Imake defines SVR4 on SVR4 systems, and many files check for it, so
dnl we need to replicate that here until those can all be fixed
AC_MSG_CHECKING([if SVR4 needs to be defined])
@@ -861,19 +998,16 @@ AC_MSG_RESULT([yes])], AC_MSG_RESULT([no]))
XSERVER_CFLAGS="$XSERVER_CFLAGS $CORE_INCS $XEXT_INC $COMPOSITE_INC $DAMAGE_INC $FIXES_INC $XI_INC $MI_INC $MIEXT_SHADOW_INC $MIEXT_LAYER_INC $MIEXT_DAMAGE_INC $RENDER_INC $RANDR_INC $FB_INC"
AC_DEFINE_UNQUOTED(X_BYTE_ORDER,[$ENDIAN],[Endian order])
+AC_SUBST([XSERVER_LIBS])
+
dnl ---------------------------------------------------------------------------
dnl DDX section.
dnl ---------------------------------------------------------------------------
-dnl These are used to define Xorg module, loader and general server defines
-MODULE_DEFINES=""
-LOADER_DEFINES=""
-SERVER_DEFINES=""
-
dnl DMX DDX
AC_MSG_CHECKING([whether to build Xdmx DDX])
-PKG_CHECK_MODULES([DMXMODULES], [xmuu xext x11 xrender xfont xi dmxproto xau $XDMCP_MODULES], [have_dmx=yes], [have_dmx=no])
+PKG_CHECK_MODULES([DMXMODULES], [xmuu xext x11 xrender xfixes xfont xi dmxproto xau $XDMCP_MODULES], [have_dmx=yes], [have_dmx=no])
if test "x$DMX" = xauto; then
DMX="$have_dmx"
fi
@@ -925,7 +1059,7 @@ AC_MSG_RESULT([$XVFB])
AM_CONDITIONAL(XVFB, [test "x$XVFB" = xyes])
if test "x$XVFB" = xyes; then
- XVFB_LIBS="$FB_LIB $MI_LIB $FIXES_LIB $XEXT_LIB $DBE_LIB $XTRAP_LIB $RECORD_LIB $GLX_LIBS $RENDER_LIB $RANDR_LIB $DAMAGE_LIB $MIEXT_DAMAGE_LIB $MIEXT_SHADOW_LIB $XI_LIB $XKB_LIB $XKB_STUB_LIB $COMPOSITE_LIB $XPSTUBS_LIB $CWRAP_LIB $OS_LIB"
+ XVFB_LIBS="$FB_LIB $MI_LIB $FIXES_LIB $XEXT_LIB $CONFIG_LIB $DBE_LIB $XTRAP_LIB $RECORD_LIB $GLX_LIBS $RENDER_LIB $RANDR_LIB $DAMAGE_LIB $MIEXT_DAMAGE_LIB $MIEXT_SHADOW_LIB $XI_LIB $XKB_LIB $XKB_STUB_LIB $COMPOSITE_LIB $XPSTUBS_LIB $CWRAP_LIB $OS_LIB $LIBS"
AC_SUBST([XVFB_LIBS])
fi
@@ -941,7 +1075,7 @@ AC_MSG_RESULT([$XNEST])
AM_CONDITIONAL(XNEST, [test "x$XNEST" = xyes])
if test "x$XNEST" = xyes; then
- XNEST_LIBS="$FB_LIB $MI_LIB $FIXES_LIB $XEXT_LIB $DBE_LIB $XTRAP_LIB $RECORD_LIB $GLX_LIBS $RENDER_LIB $RANDR_LIB $DAMAGE_LIB $MIEXT_DAMAGE_LIB $MIEXT_SHADOW_LIB $XI_LIB $XKB_LIB $XKB_STUB_LIB $COMPOSITE_LIB $XPSTUBS_LIB $CWRAP_LIB $OS_LIB"
+ XNEST_LIBS="$XSERVER_LIBS $FB_LIB $MI_LIB $FIXES_LIB $XEXT_LIB $CONFIG_LIB $DBE_LIB $XTRAP_LIB $RECORD_LIB $GLX_LIBS $RENDER_LIB $RANDR_LIB $DAMAGE_LIB $MIEXT_DAMAGE_LIB $MIEXT_SHADOW_LIB $XI_LIB $XKB_LIB $XKB_STUB_LIB $COMPOSITE_LIB $XPSTUBS_LIB $CWRAP_LIB $OS_LIB $LIBS"
AC_SUBST([XNEST_LIBS])
fi
@@ -1012,7 +1146,7 @@ if test "x$XGLX" = xyes; then
fi
# XORG_CORE_LIBS is needed even if you're not building the Xorg DDX
-XORG_CORE_LIBS="$DIX_LIB"
+XORG_CORE_LIBS="$DIX_LIB $CONFIG_LIB"
AC_SUBST([XORG_CORE_LIBS])
xorg_bus_linuxpci=no
@@ -1028,9 +1162,43 @@ if test "x$XORG" = xyes -o "x$XGL" = xyes; then
XORG_OSINCS='-I$(top_srcdir)/hw/xfree86/os-support -I$(top_srcdir)/hw/xfree86/os-support/bus -I$(top_srcdir)/os'
XORG_INCS="$XORG_DDXINCS $XORG_OSINCS"
XORG_CFLAGS="$XORGSERVER_CFLAGS -DHAVE_XORG_CONFIG_H"
- XORG_LIBS="$MI_LIB $FIXES_LIB $XEXTXORG_LIB $GLX_LIBS $RENDER_LIB $RANDR_LIB $DAMAGE_LIB $MIEXT_DAMAGE_LIB $MIEXT_SHADOW_LIB $XI_LIB $XKB_LIB $COMPOSITE_LIB $XPSTUBS_LIB $OS_LIB"
+ XORG_LIBS="$COMPOSITE_LIB $MI_LIB $FIXES_LIB $XEXTXORG_LIB $GLX_LIBS $RENDER_LIB $RANDR_LIB $DAMAGE_LIB $MIEXT_DAMAGE_LIB $MIEXT_SHADOW_LIB $XI_LIB $XKB_LIB $XPSTUBS_LIB $OS_LIB"
+
+ if test "x$DGA" = xauto; then
+ PKG_CHECK_MODULES(DGA, xf86dgaproto, [DGA=yes], [DGA=no])
+ fi
+ if test "x$DGA" = xyes; then
+ XORG_MODULES="$XORG_MODULES xf86dgaproto"
+ AC_DEFINE(DGA, 1, [Support DGA extension])
+ AC_DEFINE(XFreeXDGA, 1, [Build XDGA support])
+ fi
+
+ if test "x$XF86MISC" = xauto; then
+ PKG_CHECK_MODULES(XF86MISC, xf86miscproto, [XF86MISC=yes], [XF86MISC=no])
+ fi
+ if test "x$XF86MISC" = xyes; then
+ XORG_MODULES="$XORG_MODULES xf86miscproto"
+ AC_DEFINE(XF86MISC, 1, [Support XFree86 miscellaneous extensions])
+ fi
+
+ if test "x$XF86VIDMODE" = xauto; then
+ PKG_CHECK_MODULES(XF86VIDMODE, xf86vidmodeproto, [XF86VIDMODE=yes], [XF86VIDMODE=no])
+ fi
+ if test "x$XF86VIDMODE" = xyes; then
+ XORG_MODULES="$XORG_MODULES xf86vidmodeproto"
+ AC_DEFINE(XF86VIDMODE, 1, [Support XFree86 Video Mode extension])
+ fi
+
+ if test -n "$XORG_MODULES"; then
+ PKG_CHECK_MODULES(XORG_MODULES, [$XORG_MODULES])
+ XORG_CFLAGS="$XORG_CFLAGS $XORG_MODULES_CFLAGS"
+ XORG_LIBS="$XORG_LIBS $XORG_MODULES_LIBS"
+ fi
- AC_CHECK_LIB([dl], [dlopen], XORG_LIBS="$XORG_LIBS -ldl")
+dnl Check to see if dlopen is in default libraries (like Solaris, which
+dnl has it in libc), or if libdl is needed to get it.
+ AC_CHECK_FUNC([dlopen], [],
+ AC_CHECK_LIB([dl], [dlopen], XORG_LIBS="$XORG_LIBS -ldl"))
case $host_os in
linux*)
@@ -1039,7 +1207,6 @@ if test "x$XORG" = xyes -o "x$XGL" = xyes; then
fi
XORG_OS="linux"
XORG_OS_SUBDIR="linux"
- XORG_OS_KBD="Lnx"
xorg_bus_linuxpci="yes"
linux_acpi="no"
case $host_cpu in
@@ -1062,7 +1229,6 @@ if test "x$XORG" = xyes -o "x$XGL" = xyes; then
freebsd* | kfreebsd*-gnu)
XORG_OS="freebsd"
XORG_OS_SUBDIR="bsd"
- XORG_OS_KBD="BSD"
case $host_cpu in
i*86)
;;
@@ -1074,7 +1240,6 @@ if test "x$XORG" = xyes -o "x$XGL" = xyes; then
netbsd*)
XORG_OS="netbsd"
XORG_OS_SUBDIR="bsd"
- XORG_OS_KBD="BSD"
case $host_cpu in
i*86|amd64*|x86_64*|ia64*)
;;
@@ -1086,7 +1251,6 @@ if test "x$XORG" = xyes -o "x$XGL" = xyes; then
openbsd*)
XORG_OS="openbsd"
XORG_OS_SUBDIR="bsd"
- XORG_OS_KBD="BSD"
case $host_cpu in
i*86|amd64*|x86_64*|ia64*)
;;
@@ -1144,6 +1308,10 @@ if test "x$XORG" = xyes -o "x$XGL" = xyes; then
fi
AC_SUBST([SOLARIS_ASM_CFLAGS])
;;
+ gnu*)
+ XORG_OS="gnu"
+ XORG_OS_SUBDIR="hurd"
+ ;;
*)
XORG_OS="unknown"
XORG_OS_SUBDIR="unknown"
@@ -1189,7 +1357,6 @@ if test "x$XORG" = xyes -o "x$XGL" = xyes; then
AC_SUBST([XORG_INCS])
AC_SUBST([XORG_OS])
AC_SUBST([XORG_OS_SUBDIR])
- AC_SUBST([XORG_OS_KBD])
dnl only used in hw/xfree86/scanpci, TTBOMK
AC_PATH_PROG(PERL, perl, no)
@@ -1199,33 +1366,7 @@ if test "x$XORG" = xyes -o "x$XGL" = xyes; then
fi
AC_SUBST(PERL)
- # The Xorg binary needs to export symbols so that they can be used from modules
- # Some platforms require extra flags to do this. gcc should set these flags
- # when -rdynamic is passed to it, other compilers/linkers may need to be added
- # here.
- if test "x$GCC" = "xyes"; then
- GCC_WARNINGS1="-Wall -Wpointer-arith -Wstrict-prototypes"
- GCC_WARNINGS2="-Wmissing-prototypes -Wmissing-declarations"
- GCC_WARNINGS3="-Wnested-externs -fno-strict-aliasing"
- GCC_WARNINGS="$GCC_WARNINGS1 $GCC_WARNINGS2 $GCC_WARNINGS3"
- if test "x$WERROR" = "xyes"; then
- GCC_WARNINGS="${GCC_WARNINGS} -Werror"
- fi
- XSERVER_CFLAGS="$GCC_WARNINGS $XSERVER_CFLAGS"
- LD_EXPORT_SYMBOLS_FLAG="-rdynamic"
- fi
- case $host_os in
- openbsd*)
- LD_EXPORT_SYMBOLS_FLAG="-Wl,--export-dynamic"
- ;;
- esac
AC_SUBST([XORG_CFLAGS])
- AC_SUBST([LD_EXPORT_SYMBOLS_FLAG])
-
- dnl Module defines are used in the Xorg server and the drivers
- MODULE_DEFINES="$MODULE_DEFINES -DIN_MODULE -DXFree86Module"
- LOADER_DEFINES="$LOADER_DEFINES -DXFree86LOADER"
- SERVER_DEFINES="$SERVER_DEFINES -DXFree86Server"
dnl these only go in xorg-config.h
XF86CONFIGFILE="xorg.conf"
@@ -1234,6 +1375,7 @@ if test "x$XORG" = xyes -o "x$XGL" = xyes; then
AC_DEFINE(XORG_SERVER, 1, [Building Xorg server])
AC_DEFINE(XORGSERVER, 1, [Building Xorg server])
AC_DEFINE(XFree86Server, 1, [Building XFree86 server])
+ AC_DEFINE(XFree86LOADER, 1, [Building loadable XFree86 server])
AC_DEFINE_UNQUOTED(XORG_VERSION_CURRENT, [$VENDOR_RELEASE], [Current Xorg version])
AC_DEFINE(NEED_XF86_TYPES, 1, [Need XFree86 typedefs])
AC_DEFINE(NEED_XF86_PROTOTYPES, 1, [Need XFree86 helper functions])
@@ -1244,6 +1386,7 @@ if test "x$XORG" = xyes -o "x$XGL" = xyes; then
AC_DEFINE_DIR(__XCONFIGFILE__, XF86CONFIGFILE, [Name of configuration file])
AC_DEFINE_DIR(XF86CONFIGFILE, XF86CONFIGFILE, [Name of configuration file])
AC_DEFINE_DIR(DEFAULT_MODULE_PATH, moduledir, [Default module search path])
+ AC_DEFINE_DIR(DEFAULT_LIBRARY_PATH, libdir, [Default library install path])
AC_DEFINE_DIR(DEFAULT_LOGPREFIX, LOGPREFIX, [Default log location])
AC_DEFINE_UNQUOTED(__VENDORDWEBSUPPORT__, ["$VENDOR_WEB"], [Vendor web address for support])
@@ -1273,6 +1416,7 @@ AM_CONDITIONAL([SOLARIS_ASM_INLINE], [test "x$solaris_asm_inline" = xyes])
AM_CONDITIONAL(MFB, [test "x$XORG" = xyes])
AM_CONDITIONAL(CFB, [test "x$XORG" = xyes])
AM_CONDITIONAL(AFB, [test "x$XORG" = xyes])
+AM_CONDITIONAL(DGA, [test "x$DGA" = xyes])
dnl Xprint DDX
@@ -1282,7 +1426,7 @@ AC_MSG_RESULT([$XPRINT])
if test "x$XPRINT" = xyes; then
PKG_CHECK_MODULES([XPRINT], [printproto x11 xfont $XDMCP_MODULES xau])
XPRINT_EXTENSIONS="$XEXT_LIB $DBE_LIB $XTRAP_LIB $RECORD_LIB $RENDER_LIB $COMPOSITE_LIB $RANDR_LIB $XI_LIB $FIXES_LIB $DAMAGE_LIB $XI_LIB $GLX_LIBS"
- XPRINT_LIBS="$XPRINT_LIBS $DIX_LIB $XKB_LIB $XKB_STUB_LIB $XPRINT_EXTENSIONS $MI_LIB $MIEXT_DAMAGE_LIB $CWRAP_LIB $OS_LIB"
+ XPRINT_LIBS="$XPRINT_LIBS $DIX_LIB $CONFIG_LIB $XKB_LIB $XKB_STUB_LIB $XPRINT_EXTENSIONS $MI_LIB $MIEXT_DAMAGE_LIB $CWRAP_LIB $OS_LIB $LIBS"
AC_SUBST([XPRINT_CFLAGS])
AC_SUBST([XPRINT_LIBS])
@@ -1398,7 +1542,6 @@ AM_CONDITIONAL(XWIN_XV, [test "x$XWIN" = xyes && test "x$XV" = xyes])
dnl kdrive DDX
-dnl utterly incomplete yet
XEYPHR_LIBS=
XEPHYR_INCS=
@@ -1412,16 +1555,67 @@ if test "$KDRIVE" = yes; then
AC_DEFINE(KDRIVEDDXACTIONS,,[Build kdrive ddx])
AC_CHECK_HEADERS([sys/vm86.h sys/io.h])
- if test "$ac_cv_header_sys_vm86_h" = yes; then
+ if test "$ac_cv_header_sys_vm86_h" = yes && test "x$KDRIVEVESA" = xauto; then
+ KDRIVEVESA=yes
+ fi
+
+ if test "x$KDRIVEVESA" = xyes; then
+ KDRIVEFBDEVLIB=yes
AC_DEFINE(KDRIVEVESA, 1, [Build VESA-based kdrive servers])
fi
AC_CHECK_HEADERS([linux/fb.h])
- if test "$ac_cv_header_linux_fb_h" = yes; then
+ if test "$ac_cv_header_linux_fb_h" = yes && test "x$XFBDEV" = xauto; then
+ XFBDEV=yes
+ fi
+
+ if test "x$XFBDEV" = xyes; then
+ KDRIVEFBDEVLIB=yes
AC_DEFINE(KDRIVEFBDEV, 1, [Build fbdev-based kdrive server])
fi
# tslib...
+ AC_CHECK_LIB(ts, ts_open, [HAVE_TSLIB="yes"])
+ if test "x$TSLIB" = xauto && test "x$HAVE_TSLIB" = xyes; then
+ TSLIB=yes
+ fi
+
+ if test "x$TSLIB" = xyes; then
+ if ! test "x$HAVE_TSLIB" = xyes; then
+ AC_MSG_ERROR([tslib must be installed to build the tslib input driver.])
+ fi
+ TSLIB_LIBS="-lts"
+ AC_DEFINE(TSLIB, 1, [Have tslib support])
+ fi
+
+ AC_CHECK_HEADERS([SDL/SDL.h])
+ if test x"$ac_cv_header_SDL_SDL_h" = xyes && test "x$XSDL" = xauto; then
+ XSDL=yes
+ fi
+
+ if test x"$XSDL" = xyes; then
+ # PKG_CHECK_MODULES(XSDL_EXTRA, Xfont xau $XDMCP_MODULES)
+ AC_DEFINE(XSDLSERVER,1,[Build Xsdl server])
+ XSDL_LIBS="`sdl-config --libs` $XSERVER_LIBS"
+ XSDL_INCS="`sdl-config --cflags` $XSERVER_CFLAGS"
+ fi
+
+ PKG_CHECK_MODULES(XEPHYR, x11 xext xfont xau xdmcp, [xephyr="yes"], [xephyr="no"])
+ if test "x$XEPHYR" = xauto; then
+ XEPHYR=$xephyr
+ fi
+
+ # Xephyr needs nanosleep() which is in librt on Solaris
+ AC_CHECK_FUNC([nanosleep], [],
+ AC_CHECK_LIB([rt], [nanosleep], XEPHYR_LIBS="$XEPHYR_LIBS -lrt"))
+ XEPHYR_LIBS="$XEPHYR_LIBS $XSERVER_LIBS"
+ if test "x$TSLIB" = xyes; then
+ PKG_CHECK_MODULES([TSLIB], [tslib-0.0], [HAVE_TSLIB="yes"], [HAVE_TSLIB="no"])
+ if test "x$HAVE_TSLIB" = xno; then
+ AC_MSG_ERROR([tslib must be installed to build the tslib driver. See http://tslib.berlios.de/])
+ fi
+ AC_DEFINE(TSLIB, 1, [Have tslib support])
+ fi
# damage shadow extension glx (NOTYET) fb mi
KDRIVE_INC='-I$(top_srcdir)/hw/kdrive/src'
@@ -1429,54 +1623,51 @@ if test "$KDRIVE" = yes; then
KDRIVE_OS_INC='-I$(top_srcdir)/hw/kdrive/linux'
KDRIVE_INCS="$KDRIVE_PURE_INCS $KDRIVE_OS_INC"
- KDRIVE_CFLAGS="$XSERVER_CFLAGS -DHAVE_KDRIVE_CONFIG_H"
+ KDRIVE_CFLAGS="$XSERVER_CFLAGS -DHAVE_KDRIVE_CONFIG_H $TSLIB_CFLAGS"
# dix os fb mi extension glx (NOTYET) damage shadow xpstubs
#KDRIVE_PURE_LIBS="$DIX_LIB $OS_LIB $FB_LIB $XEXT_LIB $MIEXT_DAMAGE_LIB \
# $MIEXT_SHADOW_LIB $XPSTUBS_LIB"
KDRIVE_PURE_LIBS="$FB_LIB $MI_LIB $FIXES_LIB $XEXT_LIB $DBE_LIB $XTRAP_LIB $RECORD_LIB $GLX_LIBS $RENDER_LIB $RANDR_LIB $DAMAGE_LIB $MIEXT_DAMAGE_LIB $MIEXT_SHADOW_LIB $XI_LIB $XKB_LIB $XKB_STUB_LIB $COMPOSITE_LIB $XPSTUBS_LIB $OS_LIB"
KDRIVE_LIB='$(top_builddir)/hw/kdrive/src/libkdrive.a'
- KDRIVE_OS_LIB='$(top_builddir)/hw/kdrive/linux/liblinux.a'
+ case $host_os in
+ *linux*)
+ KDRIVE_OS_LIB='$(top_builddir)/hw/kdrive/linux/liblinux.a'
+ KDRIVELINUX=yes
+ ;;
+ esac
KDRIVE_STUB_LIB='$(top_builddir)/hw/kdrive/src/libkdrivestubs.a'
- KDRIVE_LIBS="$DIX_LIB $KDRIVE_LIB $KDRIVE_OS_LIB $KDRIVE_PURE_LIBS $KDRIVE_STUB_LIB"
+ KDRIVE_LIBS="$XSERVERLIBS_LIBS $DIX_LIB $CONFIG_LIB $KDRIVE_LIB $TSLIB_LIBS $KDRIVE_OS_LIB $KDRIVE_PURE_LIBS $KDRIVE_STUB_LIB"
# check if we can build Xephyr
PKG_CHECK_MODULES(XEPHYR, x11 xext xfont xau xdmcp, [xephyr="yes"], [xephyr="no"])
-
- # check for SDL SDK
- AC_CHECK_HEADERS([SDL/SDL.h])
-fi
-AC_SUBST(KDRIVE_INCS)
-AC_SUBST(KDRIVE_PURE_INCS)
-AC_SUBST(KDRIVE_CFLAGS)
-AC_SUBST(KDRIVE_PURE_LIBS)
-AC_SUBST(KDRIVE_LIBS)
-AM_CONDITIONAL(TSLIB, false)
+ XEPHYR_LIBS="$XEPHYR_LIBS $XSERVER_LIBS"
+
+ # Xephyr needs nanosleep() which is in librt on Solaris
+ AC_CHECK_FUNC([nanosleep], [],
+ AC_CHECK_LIB([rt], [nanosleep], XEPHYR_LIBS="$XEPHYR_LIBS -lrt"))
+
+ AC_SUBST([XEPHYR_LIBS])
+ AC_SUBST([XEPHYR_INCS])
+ AC_SUBST([XSDL_LIBS])
+ AC_SUBST([XSDL_INCS])
+fi
+AC_SUBST([KDRIVE_INCS])
+AC_SUBST([KDRIVE_PURE_INCS])
+AC_SUBST([KDRIVE_CFLAGS])
+AC_SUBST([KDRIVE_PURE_LIBS])
+AC_SUBST([KDRIVE_LIBS])
+AM_CONDITIONAL(KDRIVELINUX, [test "x$KDRIVELINUX" = xyes])
+AM_CONDITIONAL(TSLIB, [test "x$HAVE_TSLIB" = xyes])
AM_CONDITIONAL(H3600_TS, false)
+AM_CONDITIONAL(KDRIVEVESA, [test "x$KDRIVEVESA" = xyes])
+AM_CONDITIONAL(KDRIVEFBDEV, [test "x$XFBDEV" = xyes])
+AM_CONDITIONAL(XSDLSERVER, [test x"$XSDL" = xyes])
+AM_CONDITIONAL(XEPHYR, [test "x$KDRIVE" = xyes && test "x$XEPHYR" = xyes])
+AM_CONDITIONAL(BUILD_KDRIVEFBDEVLIB, [test "x$KDRIVE" = xyes && test "x$KDRIVEFBDEVLIB" = xyes])
+AM_CONDITIONAL(XFAKESERVER, [test "x$KDRIVE" = xyes && test "x$XFAKE" = xyes])
AM_CONDITIONAL(KDRIVEVESA, [test x"$ac_cv_header_sys_vm86_h" = xyes])
AM_CONDITIONAL(KDRIVEFBDEV, [test x"$ac_cv_header_linux_fb_h" = xyes])
-#AM_CONDITIONAL(KDRIVEVESA, false)
-#AM_CONDITIONAL(KDRIVEFBDEV, false)
-
-# Xephyr needs nanosleep() which is in librt on Solaris
-AC_CHECK_FUNC([nanosleep], [],
- AC_CHECK_LIB([rt], [nanosleep], XEPHYR_LIBS="$XEPHYR_LIBS -lrt"))
-
-AM_CONDITIONAL(XEPHYR, [test x"$xephyr" = xyes])
-XEPHYR_LIBS="$XEPHYR_LIBS $XSERVER_LIBS"
-AC_SUBST([XEPHYR_LIBS])
-AC_SUBST([XEPHYR_INCS])
-
-AM_CONDITIONAL(XSDLSERVER, [test x"$ac_cv_header_SDL_SDL_h" = xyes])
-if test x"$ac_cv_header_SDL_SDL_h" = xyes -o x"$XSDL" = xyes; then
- # PKG_CHECK_MODULES(XSDL_EXTRA, Xfont xau $XDMCP_MODULES)
- AC_DEFINE(XSDLSERVER,,[Build Xsdl server])
- XSDL_LIBS="`sdl-config --libs` $XSERVER_LIBS"
- XSDL_INCS="`sdl-config --cflags` $XSERVER_CFLAGS"
-fi
-AC_SUBST([XSDL_LIBS])
-AC_SUBST([XSDL_INCS])
-
dnl these only go in xkb-config.h (which is shared by the Xorg and Xnest servers)
AC_DEFINE(__XKBDEFRULES__, "xorg", [Default XKB rules])
@@ -1484,7 +1675,6 @@ AC_DEFINE_DIR(XKB_BASE_DIRECTORY, XKBPATH, [Path to XKB data])
AC_DEFINE_DIR(XKB_BIN_DIRECTORY, bindir, [Path to XKB bin dir])
# Make sure XKM_OUTPUT_DIR is an absolute path
-
XKBOUTPUT_FIRSTCHAR=`echo $XKBOUTPUT | cut -b 1`
if [[ x$XKBOUTPUT_FIRSTCHAR != x/ ]] ; then
@@ -1502,7 +1692,6 @@ AC_DEFINE_DIR(XKM_OUTPUT_DIR, XKBOUTPUT, [Path to XKB output dir])
AC_SUBST(XKB_COMPILED_DIR)
dnl and the rest of these are generic, so they're in config.h
-AC_DEFINE(XFreeXDGA, 1, [Build XDGA support])
AC_DEFINE(XResExtension, 1, [Build XRes extension])
dnl CYGWIN does not define fd_set if _POSIX_SOURCE is defined
@@ -1523,17 +1712,19 @@ esac
AC_DEFINE_DIR(PROJECTROOT, prefix, [Overall prefix])
dnl xorgconfig CLI configuration utility
-PKG_CHECK_MODULES([XORGCONFIG_DEP], [xkbfile x11])
-AC_SUBST(XORGCONFIG_DEP_CFLAGS)
-AC_SUBST(XORGCONFIG_DEP_LIBS)
+if test "x$XORG" = xyes; then
+ PKG_CHECK_MODULES([XORGCONFIG_DEP], [xkbfile x11])
+ AC_SUBST(XORGCONFIG_DEP_CFLAGS)
+ AC_SUBST(XORGCONFIG_DEP_LIBS)
+fi
dnl xorgcfg GUI configuration utility
AC_ARG_ENABLE(xorgcfg, AS_HELP_STRING([--enable-xorgcfg],
- [Build xorgcfg GUI configuration utility (default: yes)]),
- [XORGCFG=$enableval],[XORGCFG=yes])
+ [Build xorgcfg GUI configuration utility (default: no)]),
+ [XORGCFG=$enableval],[XORGCFG=no])
if test x$XORGCFG = xyes ; then
PKG_CHECK_MODULES([XORGCFG_DEP],
- [xkbui xkbfile xxf86misc xxf86vm xaw7 xmu xt xpm xext x11])
+ [xkbui >= 1.0.2 xkbfile xxf86misc xxf86vm xaw7 xmu xt xpm xext x11])
AC_CHECK_LIB([curses],[waddstr],
[XORGCFG_DEP_LIBS="$XORGCFG_DEP_LIBS -lcurses"; CURSES=yes],
AC_CHECK_LIB([ncurses],[waddstr],
@@ -1571,17 +1762,11 @@ AM_CONDITIONAL(BUILD_KBD_MODE, [test x$BUILD_KBD_MODE = xyes])
AM_CONDITIONAL(BSD_KBD_MODE, [test x$KBD_MODE_TYPE = xbsd])
AM_CONDITIONAL(SUN_KBD_MODE, [test x$KBD_MODE_TYPE = xsun])
-AC_SUBST([MODULE_DEFINES])
-AC_SUBST([LOADER_DEFINES])
-AC_SUBST([SERVER_DEFINES])
-
-CFLAGS="$XSERVER_CFLAGS $CFLAGS"
-AC_SUBST([CFLAGS])
-
BUILD_DATE="$(date +'%Y%m%d')"
AC_SUBST([BUILD_DATE])
-DIX_CFLAGS="-DHAVE_DIX_CONFIG_H"
+DIX_CFLAGS="-DHAVE_DIX_CONFIG_H $XSERVER_CFLAGS"
+
AC_SUBST([DIX_CFLAGS])
AC_SUBST([libdir exec_prefix prefix])
@@ -1596,8 +1781,6 @@ AC_OUTPUT([
Makefile
GL/Makefile
GL/glx/Makefile
-GL/include/Makefile
-GL/include/GL/Makefile
GL/mesa/Makefile
GL/mesa/array_cache/Makefile
GL/mesa/glapi/Makefile
@@ -1623,6 +1806,7 @@ XTrap/Makefile
mfb/Makefile
cfb/Makefile
cfb32/Makefile
+config/Makefile
mi/Makefile
miext/Makefile
miext/damage/Makefile
@@ -1652,14 +1836,13 @@ hw/xfree86/dri/Makefile
hw/xfree86/dummylib/Makefile
hw/xfree86/exa/Makefile
hw/xfree86/fbdevhw/Makefile
-hw/xfree86/getconfig/Makefile
hw/xfree86/i2c/Makefile
hw/xfree86/int10/Makefile
hw/xfree86/loader/Makefile
hw/xfree86/os-support/Makefile
hw/xfree86/os-support/bsd/Makefile
hw/xfree86/os-support/bus/Makefile
-hw/xfree86/os-support/drm/Makefile
+hw/xfree86/os-support/hurd/Makefile
hw/xfree86/os-support/misc/Makefile
hw/xfree86/os-support/linux/Makefile
hw/xfree86/os-support/lynxos/Makefile
@@ -1727,41 +1910,41 @@ hw/kdrive/smi/Makefile
hw/kdrive/src/Makefile
hw/kdrive/vesa/Makefile
hw/kdrive/via/Makefile
-Xprint/Makefile
-Xprint/doc/Makefile
-Xprint/pcl/Makefile
-Xprint/pcl-mono/Makefile
-Xprint/raster/Makefile
-Xprint/ps/Makefile
-Xprint/etc/Makefile
-Xprint/etc/Xsession.d/Makefile
-Xprint/etc/init.d/Makefile
-Xprint/etc/profile.d/Makefile
-XpConfig/Makefile
-XpConfig/C/print/attributes/Makefile
-XpConfig/C/print/ddx-config/Makefile
-XpConfig/C/print/ddx-config/raster/Makefile
-XpConfig/C/print/models/CANONBJ10E-GS/Makefile
-XpConfig/C/print/models/PSdefault/fonts/Makefile
-XpConfig/C/print/models/PSdefault/Makefile
-XpConfig/C/print/models/PSspooldir/Makefile
-XpConfig/C/print/models/SPSPARC2/Makefile
-XpConfig/C/print/models/SPSPARC2/fonts/Makefile
-XpConfig/C/print/models/GSdefault/Makefile
-XpConfig/C/print/models/HPLJ4050-PS/Makefile
-XpConfig/C/print/models/HPLJ4050-PS/fonts/Makefile
-XpConfig/C/print/models/Makefile
-XpConfig/C/print/models/PS2PDFspooldir-GS/Makefile
-XpConfig/C/print/models/CANONC3200-PS/Makefile
-XpConfig/C/print/models/CANONC3200-PS/fonts/Makefile
-XpConfig/C/print/models/HPLJ4family/fonts/Makefile
-XpConfig/C/print/models/HPLJ4family/Makefile
-XpConfig/C/print/models/HPDJ1600C/Makefile
-XpConfig/C/print/models/HPDJ1600C/fonts/Makefile
-XpConfig/C/print/Makefile
-XpConfig/C/Makefile
-XpConfig/en_US/print/attributes/Makefile
-XpConfig/en_US/print/Makefile
-XpConfig/en_US/Makefile
+hw/xprint/Makefile
+hw/xprint/doc/Makefile
+hw/xprint/pcl/Makefile
+hw/xprint/pcl-mono/Makefile
+hw/xprint/raster/Makefile
+hw/xprint/ps/Makefile
+hw/xprint/etc/Makefile
+hw/xprint/etc/Xsession.d/Makefile
+hw/xprint/etc/init.d/Makefile
+hw/xprint/etc/profile.d/Makefile
+hw/xprint/config/Makefile
+hw/xprint/config/C/print/attributes/Makefile
+hw/xprint/config/C/print/ddx-config/Makefile
+hw/xprint/config/C/print/ddx-config/raster/Makefile
+hw/xprint/config/C/print/models/CANONBJ10E-GS/Makefile
+hw/xprint/config/C/print/models/PSdefault/fonts/Makefile
+hw/xprint/config/C/print/models/PSdefault/Makefile
+hw/xprint/config/C/print/models/PSspooldir/Makefile
+hw/xprint/config/C/print/models/SPSPARC2/Makefile
+hw/xprint/config/C/print/models/SPSPARC2/fonts/Makefile
+hw/xprint/config/C/print/models/GSdefault/Makefile
+hw/xprint/config/C/print/models/HPLJ4050-PS/Makefile
+hw/xprint/config/C/print/models/HPLJ4050-PS/fonts/Makefile
+hw/xprint/config/C/print/models/Makefile
+hw/xprint/config/C/print/models/PS2PDFspooldir-GS/Makefile
+hw/xprint/config/C/print/models/CANONC3200-PS/Makefile
+hw/xprint/config/C/print/models/CANONC3200-PS/fonts/Makefile
+hw/xprint/config/C/print/models/HPLJ4family/fonts/Makefile
+hw/xprint/config/C/print/models/HPLJ4family/Makefile
+hw/xprint/config/C/print/models/HPDJ1600C/Makefile
+hw/xprint/config/C/print/models/HPDJ1600C/fonts/Makefile
+hw/xprint/config/C/print/Makefile
+hw/xprint/config/C/Makefile
+hw/xprint/config/en_US/print/attributes/Makefile
+hw/xprint/config/en_US/print/Makefile
+hw/xprint/config/en_US/Makefile
xorg-server.pc
])
diff --git a/cpprules.in b/cpprules.in
index 667b13322..4901ea890 100644
--- a/cpprules.in
+++ b/cpprules.in
@@ -34,6 +34,7 @@ MANDEFS = \
-D__miscmansuffix__=$(MISC_MAN_SUFFIX) \
-D__drivermansuffix__=$(DRIVER_MAN_SUFFIX) \
-D__adminmansuffix__=$(ADMIN_MAN_SUFFIX) \
+ -D__mandir__=$(mandir) \
-D__projectroot__=$(prefix) \
-D__xconfigfile__=$(__XCONFIGFILE__) -D__xconfigdir__=$(XCONFIGDIR) \
-D__xlogfile__=$(XLOGFILE) -D__xservername__=$(XSERVERNAME)
diff --git a/damageext/Makefile.am b/damageext/Makefile.am
index 171cd270c..35f7620fb 100644
--- a/damageext/Makefile.am
+++ b/damageext/Makefile.am
@@ -1,6 +1,6 @@
noinst_LTLIBRARIES = libdamageext.la
-AM_CFLAGS = $(DIX_CFLAGS) @SERVER_DEFINES@ @LOADER_DEFINES@
+AM_CFLAGS = $(DIX_CFLAGS)
libdamageext_la_SOURCES = \
damageext.c \
diff --git a/damageext/damageext.c b/damageext/damageext.c
index 225f9ecf0..6083693a4 100755
--- a/damageext/damageext.c
+++ b/damageext/damageext.c
@@ -173,13 +173,17 @@ ProcDamageCreate (ClientPtr client)
DamageExtPtr pDamageExt;
DamageReportLevel level;
RegionPtr pRegion;
+ int rc;
REQUEST(xDamageCreateReq);
REQUEST_SIZE_MATCH(xDamageCreateReq);
LEGAL_NEW_RESOURCE(stuff->damage, client);
- SECURITY_VERIFY_DRAWABLE (pDrawable, stuff->drawable, client,
- SecurityReadAccess);
+ rc = dixLookupDrawable(&pDrawable, stuff->drawable, client, 0,
+ DixReadAccess);
+ if (rc != Success)
+ return rc;
+
switch (stuff->level) {
case XDamageReportRawRectangles:
level = DamageReportRawRegion;
@@ -237,7 +241,7 @@ ProcDamageDestroy (ClientPtr client)
DamageExtPtr pDamageExt;
REQUEST_SIZE_MATCH(xDamageDestroyReq);
- VERIFY_DAMAGEEXT(pDamageExt, stuff->damage, client, SecurityWriteAccess);
+ VERIFY_DAMAGEEXT(pDamageExt, stuff->damage, client, DixWriteAccess);
FreeResource (stuff->damage, RT_NONE);
return (client->noClientException);
}
@@ -251,9 +255,9 @@ ProcDamageSubtract (ClientPtr client)
RegionPtr pParts;
REQUEST_SIZE_MATCH(xDamageSubtractReq);
- VERIFY_DAMAGEEXT(pDamageExt, stuff->damage, client, SecurityWriteAccess);
- VERIFY_REGION_OR_NONE(pRepair, stuff->repair, client, SecurityWriteAccess);
- VERIFY_REGION_OR_NONE(pParts, stuff->parts, client, SecurityWriteAccess);
+ VERIFY_DAMAGEEXT(pDamageExt, stuff->damage, client, DixWriteAccess);
+ VERIFY_REGION_OR_NONE(pRepair, stuff->repair, client, DixWriteAccess);
+ VERIFY_REGION_OR_NONE(pParts, stuff->parts, client, DixWriteAccess);
if (pDamageExt->level != DamageReportRawRegion)
{
diff --git a/dbe/Makefile.am b/dbe/Makefile.am
index 01de4707a..043555b8c 100644
--- a/dbe/Makefile.am
+++ b/dbe/Makefile.am
@@ -1,6 +1,6 @@
noinst_LTLIBRARIES = libdbe.la
-AM_CFLAGS = $(DIX_CFLAGS) @SERVER_DEFINES@ @LOADER_DEFINES@
+AM_CFLAGS = $(DIX_CFLAGS)
if XORG
sdk_HEADERS = dbestruct.h
diff --git a/dbe/dbe.c b/dbe/dbe.c
index 9a040578e..38375f92a 100644
--- a/dbe/dbe.c
+++ b/dbe/dbe.c
@@ -1,5 +1,3 @@
-/* $XdotOrg: xserver/xorg/dbe/dbe.c,v 1.6 2006/02/10 22:00:21 anholt Exp $ */
-/* $Xorg: dbe.c,v 1.3 2000/08/17 19:48:16 cpqbld Exp $ */
/******************************************************************************
*
* Copyright (c) 1994, 1995 Hewlett-Packard Company
@@ -31,7 +29,6 @@
* DIX DBE code
*
*****************************************************************************/
-/* $XFree86: xc/programs/Xserver/dbe/dbe.c,v 3.10 2001/08/23 14:19:24 alanh Exp $ */
/* INCLUDES */
@@ -408,11 +405,9 @@ ProcDbeAllocateBackBufferName(ClientPtr client)
REQUEST_SIZE_MATCH(xDbeAllocateBackBufferNameReq);
/* The window must be valid. */
- if (!(pWin = SecurityLookupWindow(stuff->window, client,
- SecurityWriteAccess)))
- {
- return(BadWindow);
- }
+ status = dixLookupWindow(&pWin, stuff->window, client, DixWriteAccess);
+ if (status != Success)
+ return status;
/* The window must be InputOutput. */
if (pWin->drawable.class != InputOutput)
@@ -636,9 +631,9 @@ ProcDbeDeallocateBackBufferName(ClientPtr client)
/* Buffer name must be valid */
if (!(pDbeWindowPriv = (DbeWindowPrivPtr)SecurityLookupIDByType(client,
- stuff->buffer, dbeWindowPrivResType, SecurityDestroyAccess)) ||
+ stuff->buffer, dbeWindowPrivResType, DixDestroyAccess)) ||
!(SecurityLookupIDByType(client, stuff->buffer, dbeDrawableResType,
- SecurityDestroyAccess)))
+ DixDestroyAccess)))
{
client->errorValue = stuff->buffer;
return(dbeErrorBase + DbeBadBuffer);
@@ -732,11 +727,11 @@ ProcDbeSwapBuffers(ClientPtr client)
/* Check all windows to swap. */
/* Each window must be a valid window - BadWindow. */
- if (!(pWin = SecurityLookupWindow(dbeSwapInfo[i].window, client,
- SecurityWriteAccess)))
- {
+ error = dixLookupWindow(&pWin, dbeSwapInfo[i].window, client,
+ DixWriteAccess);
+ if (error != Success) {
DEALLOCATE_LOCAL(swapInfo);
- return(BadWindow);
+ return error;
}
/* Each window must be double-buffered - BadMatch. */
@@ -870,7 +865,7 @@ ProcDbeGetVisualInfo(ClientPtr client)
xDbeGetVisualInfoReply rep;
Drawable *drawables;
DrawablePtr *pDrawables = NULL;
- register int i, j, n;
+ register int i, j, n, rc;
register int count; /* number of visual infos in reply */
register int length; /* length of reply */
ScreenPtr pScreen;
@@ -892,11 +887,11 @@ ProcDbeGetVisualInfo(ClientPtr client)
for (i = 0; i < stuff->n; i++)
{
- if (!(pDrawables[i] = (DrawablePtr)SecurityLookupDrawable(
- drawables[i], client, SecurityReadAccess)))
- {
+ rc = dixLookupDrawable(pDrawables+i, drawables[i], client, 0,
+ DixReadAccess);
+ if (rc != Success) {
DEALLOCATE_LOCAL(pDrawables);
- return(BadDrawable);
+ return rc;
}
}
}
@@ -1050,7 +1045,7 @@ ProcDbeGetBackBufferAttributes(ClientPtr client)
REQUEST_SIZE_MATCH(xDbeGetBackBufferAttributesReq);
if (!(pDbeWindowPriv = (DbeWindowPrivPtr)SecurityLookupIDByType(client,
- stuff->buffer, dbeWindowPrivResType, SecurityReadAccess)))
+ stuff->buffer, dbeWindowPrivResType, DixReadAccess)))
{
rep.attributes = None;
}
diff --git a/dbe/dbestruct.h b/dbe/dbestruct.h
index 69135a837..460cc7564 100644
--- a/dbe/dbestruct.h
+++ b/dbe/dbestruct.h
@@ -1,4 +1,3 @@
-/* $Xorg: dbestruct.h,v 1.3 2000/08/17 19:48:16 cpqbld Exp $ */
/******************************************************************************
*
* Copyright (c) 1994, 1995 Hewlett-Packard Company
diff --git a/dbe/midbe.c b/dbe/midbe.c
index cdca272d3..e687b98b7 100644
--- a/dbe/midbe.c
+++ b/dbe/midbe.c
@@ -1,4 +1,3 @@
-/* $Xorg: midbe.c,v 1.3 2000/08/17 19:48:16 cpqbld Exp $ */
/******************************************************************************
*
* Copyright (c) 1994, 1995 Hewlett-Packard Company
@@ -30,7 +29,6 @@
* Machine-independent DBE code
*
*****************************************************************************/
-/* $XFree86: xc/programs/Xserver/dbe/midbe.c,v 3.4 2001/03/06 17:31:34 dawes Exp $ */
/* INCLUDES */
diff --git a/dbe/midbe.h b/dbe/midbe.h
index 1110578cd..1780c3fc3 100644
--- a/dbe/midbe.h
+++ b/dbe/midbe.h
@@ -1,4 +1,3 @@
-/* $Xorg: midbe.h,v 1.3 2000/08/17 19:48:16 cpqbld Exp $ */
/******************************************************************************
*
* Copyright (c) 1994, 1995 Hewlett-Packard Company
diff --git a/dbe/midbestr.h b/dbe/midbestr.h
index 248b44857..1ad0104aa 100644
--- a/dbe/midbestr.h
+++ b/dbe/midbestr.h
@@ -1,4 +1,3 @@
-/* $Xorg: midbestr.h,v 1.3 2000/08/17 19:48:16 cpqbld Exp $ */
/******************************************************************************
*
* Copyright (c) 1994, 1995 Hewlett-Packard Company
diff --git a/dix/Makefile.am b/dix/Makefile.am
index c9a19f77b..a1f02c1b6 100644
--- a/dix/Makefile.am
+++ b/dix/Makefile.am
@@ -1,6 +1,6 @@
noinst_LTLIBRARIES = libdix.la libxpstubs.la
-AM_CFLAGS = $(DIX_CFLAGS) @SERVER_DEFINES@ @LOADER_DEFINES@ \
+AM_CFLAGS = $(DIX_CFLAGS) \
-DVENDOR_STRING=\""@VENDOR_STRING@"\" \
-DVENDOR_RELEASE="@VENDOR_RELEASE@"
@@ -17,6 +17,7 @@ libdix_la_SOURCES = \
extension.c \
ffs.c \
gc.c \
+ getevents.c \
globals.c \
glyphcurs.c \
grabs.c \
@@ -29,11 +30,30 @@ libdix_la_SOURCES = \
swaprep.c \
swapreq.c \
tables.c \
- window.c
+ window.c \
+ strcasecmp.c
libxpstubs_la_SOURCES = \
xpstubs.c
INCLUDES = -I$(top_srcdir)/Xprint
-EXTRA_DIST = buildatoms BuiltInAtoms CHANGES
+EXTRA_DIST = buildatoms BuiltInAtoms CHANGES Xserver.d Xserver-dtrace.h.in
+
+if XSERVER_DTRACE
+# Generate dtrace header file for C sources to include
+BUILT_SOURCES = Xserver-dtrace.h
+
+Xserver-dtrace.h: $(srcdir)/Xserver.d
+ $(DTRACE) -C -h -o $@ -s $(srcdir)/Xserver.d \
+ || cp Xserver-dtrace.h.in $@
+
+# Generate dtrace object code for probes in libdix
+dtrace-dix.o: $(top_srcdir)/dix/Xserver.d $(am_libdix_la_OBJECTS)
+ $(DTRACE) -G -C -o $@ -s $(top_srcdir)/dix/Xserver.d .libs/*.o
+
+noinst_PROGRAMS = dix.O
+
+dix.O: dtrace-dix.o $(am_libdix_la_OBJECTS)
+ ld -r -o $@ .libs/*.o
+endif
diff --git a/dix/Xserver-dtrace.h.in b/dix/Xserver-dtrace.h.in
new file mode 100644
index 000000000..26a8b4099
--- /dev/null
+++ b/dix/Xserver-dtrace.h.in
@@ -0,0 +1,100 @@
+/* Copyright 2006 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.
+ */
+
+/*
+ * Generated by dtrace(1M), and then modified for backwards compatibility
+ * with older versions of dtrace. Used if dtrace -h fails.
+ * (Since _ENABLED support was added after dtrace -h, this assumes if
+ * dtrace -h fails, _ENABLED will too.)
+ */
+
+#ifndef _XSERVER_DTRACE_H
+#define _XSERVER_DTRACE_H
+
+#include <unistd.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#if _DTRACE_VERSION
+
+#define XSERVER_CLIENT_AUTH(arg0, arg1, arg2, arg3) \
+ __dtrace_Xserver___client__auth(arg0, arg1, arg2, arg3)
+#define XSERVER_CLIENT_CONNECT(arg0, arg1) \
+ __dtrace_Xserver___client__connect(arg0, arg1)
+#define XSERVER_CLIENT_DISCONNECT(arg0) \
+ __dtrace_Xserver___client__disconnect(arg0)
+#define XSERVER_REQUEST_DONE(arg0, arg1, arg2, arg3, arg4) \
+ __dtrace_Xserver___request__done(arg0, arg1, arg2, arg3, arg4)
+#define XSERVER_REQUEST_START(arg0, arg1, arg2, arg3, arg4) \
+ __dtrace_Xserver___request__start(arg0, arg1, arg2, arg3, arg4)
+#define XSERVER_RESOURCE_ALLOC(arg0, arg1, arg2, arg3) \
+ __dtrace_Xserver___resource__alloc(arg0, arg1, arg2, arg3)
+#define XSERVER_RESOURCE_FREE(arg0, arg1, arg2, arg3) \
+ __dtrace_Xserver___resource__free(arg0, arg1, arg2, arg3)
+#define XSERVER_SEND_EVENT(arg0, arg1, arg2) \
+ __dtrace_Xserver___send__event(arg0, arg1, arg2)
+
+
+extern void __dtrace_Xserver___client__auth(int, string, pid_t, zoneid_t);
+extern void __dtrace_Xserver___client__connect(int, int);
+extern void __dtrace_Xserver___client__disconnect(int);
+extern void __dtrace_Xserver___request__done(string, uint8_t, uint32_t, int, int);
+extern void __dtrace_Xserver___request__start(string, uint8_t, uint16_t, int, void *);
+extern void __dtrace_Xserver___resource__alloc(uint32_t, uint32_t, void *, string);
+extern void __dtrace_Xserver___resource__free(uint32_t, uint32_t, void *, string);
+extern void __dtrace_Xserver___send__event(int, uint8_t, void *);
+
+#else
+
+#define XSERVER_CLIENT_AUTH(arg0, arg1, arg2, arg3)
+#define XSERVER_CLIENT_CONNECT(arg0, arg1)
+#define XSERVER_CLIENT_DISCONNECT(arg0)
+#define XSERVER_REQUEST_DONE(arg0, arg1, arg2, arg3, arg4)
+#define XSERVER_REQUEST_START(arg0, arg1, arg2, arg3, arg4)
+#define XSERVER_RESOURCE_ALLOC(arg0, arg1, arg2, arg3)
+#define XSERVER_RESOURCE_FREE(arg0, arg1, arg2, arg3)
+#define XSERVER_SEND_EVENT(arg0, arg1, arg2)
+
+#endif
+
+#define XSERVER_CLIENT_AUTH_ENABLED() (1)
+#define XSERVER_CLIENT_CONNECT_ENABLED() (1)
+#define XSERVER_CLIENT_DISCONNECT_ENABLED() (1)
+#define XSERVER_REQUEST_DONE_ENABLED() (1)
+#define XSERVER_REQUEST_START_ENABLED() (1)
+#define XSERVER_RESOURCE_ALLOC_ENABLED() (1)
+#define XSERVER_RESOURCE_FREE_ENABLED() (1)
+#define XSERVER_SEND_EVENT_ENABLED() (1)
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _XSERVER_DTRACE_H */
diff --git a/dix/Xserver.d b/dix/Xserver.d
new file mode 100644
index 000000000..e4c9b8320
--- /dev/null
+++ b/dix/Xserver.d
@@ -0,0 +1,59 @@
+/* Copyright 2005-2006 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.
+ */
+
+/*
+ * Xserver dtrace provider definition
+ */
+
+#include <sys/types.h>
+
+provider Xserver {
+ /* reqType, data, length, client id, request buffer */
+ probe request__start(string, uint8_t, uint16_t, int, void *);
+ /* reqType, data, sequence, client id, result */
+ probe request__done(string, uint8_t, uint32_t, int, int);
+ /* client id, client fd */
+ probe client__connect(int, int);
+ /* client id, client address, client pid, client zone id */
+ probe client__auth(int, string, pid_t, zoneid_t);
+ /* client id */
+ probe client__disconnect(int);
+ /* resource id, resource type, value, resource type name */
+ probe resource__alloc(uint32_t, uint32_t, void *, string);
+ /* resource id, resource type, value, resource type name */
+ probe resource__free(uint32_t, uint32_t, void *, string);
+ /* client id, event type, event* */
+ probe send__event(int, uint8_t, void *);
+};
+
+#pragma D attributes Unstable/Unstable/Common provider Xserver provider
+#pragma D attributes Private/Private/Unknown provider Xserver module
+#pragma D attributes Private/Private/Unknown provider Xserver function
+#pragma D attributes Unstable/Unstable/Common provider Xserver name
+#pragma D attributes Unstable/Unstable/Common provider Xserver args
+
diff --git a/dix/atom.c b/dix/atom.c
index 53cd5c311..d9d74f1da 100644
--- a/dix/atom.c
+++ b/dix/atom.c
@@ -1,4 +1,3 @@
-/* $XFree86: xc/programs/Xserver/dix/atom.c,v 3.3 2001/12/14 19:59:29 dawes Exp $ */
/***********************************************************
Copyright 1987, 1998 The Open Group
@@ -46,7 +45,6 @@ SOFTWARE.
******************************************************************/
-/* $Xorg: atom.c,v 1.4 2001/02/09 02:04:39 xorgcvs Exp $ */
#ifdef HAVE_DIX_CONFIG_H
#include <dix-config.h>
@@ -54,6 +52,8 @@ SOFTWARE.
#include <X11/X.h>
#include <X11/Xatom.h>
+#include <stdio.h>
+#include <string.h>
#include "misc.h"
#include "resource.h"
#include "dix.h"
diff --git a/dix/colormap.c b/dix/colormap.c
index ba52c251c..a74cb390c 100644
--- a/dix/colormap.c
+++ b/dix/colormap.c
@@ -1,5 +1,3 @@
-/* $XdotOrg: xserver/xorg/dix/colormap.c,v 1.13 2006/05/22 15:47:56 ajax Exp $ */
-/* $XFree86: xc/programs/Xserver/dix/colormap.c,v 3.11 2003/11/03 05:10:59 tsi Exp $ */
/***********************************************************
Copyright 1987, 1998 The Open Group
@@ -47,7 +45,6 @@ SOFTWARE.
******************************************************************/
-/* $Xorg: colormap.c,v 1.4 2001/02/09 02:04:39 xorgcvs Exp $ */
#ifdef HAVE_DIX_CONFIG_H
#include <dix-config.h>
@@ -56,6 +53,9 @@ SOFTWARE.
#include <X11/X.h>
#define NEED_EVENTS
#include <X11/Xproto.h>
+#include <stdio.h>
+#include <string.h>
+#include <strings.h>
#include "misc.h"
#include "dix.h"
#include "colormapst.h"
@@ -903,7 +903,7 @@ AllocColor (ColormapPtr pmap,
{
ColormapPtr prootmap = (ColormapPtr)
SecurityLookupIDByType (clients[client], pmap->pScreen->defColormap,
- RT_COLORMAP, SecurityReadAccess);
+ RT_COLORMAP, DixReadAccess);
if (pmap->class == prootmap->class)
FindColorInRootCmap (prootmap, prootmap->red, entries, &rgb,
@@ -920,7 +920,7 @@ AllocColor (ColormapPtr pmap,
{
ColormapPtr prootmap = (ColormapPtr)
SecurityLookupIDByType (clients[client], pmap->pScreen->defColormap,
- RT_COLORMAP, SecurityReadAccess);
+ RT_COLORMAP, DixReadAccess);
if (pmap->class == prootmap->class)
{
diff --git a/dix/cursor.c b/dix/cursor.c
index af9282f98..7071d8345 100644
--- a/dix/cursor.c
+++ b/dix/cursor.c
@@ -1,4 +1,3 @@
-/* $XFree86: xc/programs/Xserver/dix/cursor.c,v 3.8 2003/01/12 02:44:26 dawes Exp $ */
/***********************************************************
Copyright 1987, 1998 The Open Group
@@ -47,7 +46,6 @@ SOFTWARE.
******************************************************************/
-/* $Xorg: cursor.c,v 1.4 2001/02/09 02:04:39 xorgcvs Exp $ */
#ifdef HAVE_DIX_CONFIG_H
#include <dix-config.h>
@@ -264,9 +262,9 @@ AllocGlyphCursor(Font source, unsigned sourceChar, Font mask, unsigned maskChar,
GlyphSharePtr pShare;
sourcefont = (FontPtr) SecurityLookupIDByType(client, source, RT_FONT,
- SecurityReadAccess);
+ DixReadAccess);
maskfont = (FontPtr) SecurityLookupIDByType(client, mask, RT_FONT,
- SecurityReadAccess);
+ DixReadAccess);
if (!sourcefont)
{
diff --git a/dix/devices.c b/dix/devices.c
index ef1bdf354..9f4218414 100644
--- a/dix/devices.c
+++ b/dix/devices.c
@@ -1,4 +1,3 @@
-/* $XFree86: xc/programs/Xserver/dix/devices.c,v 3.20 2001/12/14 19:59:30 dawes Exp $ */
/************************************************************
Copyright 1987, 1998 The Open Group
@@ -47,8 +46,6 @@ SOFTWARE.
********************************************************/
-/* $Xorg: devices.c,v 1.4 2001/02/09 02:04:39 xorgcvs Exp $ */
-/* $XdotOrg: xserver/xorg/dix/devices.c,v 1.11 2006/06/01 19:22:37 daniels Exp $ */
#ifdef HAVE_DIX_CONFIG_H
#include <dix-config.h>
@@ -66,27 +63,32 @@ SOFTWARE.
#include "cursorstr.h"
#include "dixstruct.h"
#include "site.h"
+#ifndef XKB_IN_SERVER
#define XKB_IN_SERVER
+#endif
#ifdef XKB
#include <X11/extensions/XKBsrv.h>
#endif
-#ifdef XCSECURITY
-#define _SECURITY_SERVER
-#include <X11/extensions/security.h>
-#endif
+#include "xace.h"
#include "dispatch.h"
#include "swaprep.h"
#include "dixevents.h"
+#include <X11/extensions/XIproto.h>
+#include "exglobals.h"
+#include "exevents.h"
+
+int CoreDevicePrivatesIndex = 0, CoreDevicePrivatesGeneration = -1;
+
DeviceIntPtr
AddInputDevice(DeviceProc deviceProc, Bool autoStart)
{
- register DeviceIntPtr dev;
+ register DeviceIntPtr dev, *prev; /* not a typo */
if (inputInfo.numDevices >= MAX_DEVICES)
return (DeviceIntPtr)NULL;
- dev = (DeviceIntPtr) xalloc(sizeof(DeviceIntRec));
+ dev = (DeviceIntPtr) xcalloc(sizeof(DeviceIntRec), 1);
if (!dev)
return (DeviceIntPtr)NULL;
dev->name = (char *)NULL;
@@ -112,20 +114,28 @@ AddInputDevice(DeviceProc deviceProc, Bool autoStart)
dev->button = (ButtonClassPtr)NULL;
dev->focus = (FocusClassPtr)NULL;
dev->proximity = (ProximityClassPtr)NULL;
+ dev->absolute = (AbsoluteClassPtr)NULL;
dev->kbdfeed = (KbdFeedbackPtr)NULL;
dev->ptrfeed = (PtrFeedbackPtr)NULL;
dev->intfeed = (IntegerFeedbackPtr)NULL;
dev->stringfeed = (StringFeedbackPtr)NULL;
dev->bell = (BellFeedbackPtr)NULL;
dev->leds = (LedFeedbackPtr)NULL;
- dev->next = inputInfo.off_devices;
#ifdef XKB
- dev->xkb_interest= NULL;
+ dev->xkb_interest = NULL;
#endif
dev->nPrivates = 0;
dev->devPrivates = NULL;
dev->unwrapProc = NULL;
- inputInfo.off_devices = dev;
+ dev->coreEvents = TRUE;
+ dev->inited = FALSE;
+ dev->enabled = FALSE;
+
+ for (prev = &inputInfo.off_devices; *prev; prev = &(*prev)->next)
+ ;
+ *prev = dev;
+ dev->next = NULL;
+
return dev;
}
@@ -133,17 +143,25 @@ Bool
EnableDevice(register DeviceIntPtr dev)
{
register DeviceIntPtr *prev;
+ int ret;
for (prev = &inputInfo.off_devices;
*prev && (*prev != dev);
prev = &(*prev)->next)
;
if ((*prev != dev) || !dev->inited ||
- ((*dev->deviceProc)(dev, DEVICE_ON) != Success))
+ ((ret = (*dev->deviceProc)(dev, DEVICE_ON)) != Success)) {
+ ErrorF("couldn't enable device %d\n", dev->id);
return FALSE;
+ }
+ dev->enabled = TRUE;
*prev = dev->next;
- dev->next = inputInfo.devices;
- inputInfo.devices = dev;
+
+ for (prev = &inputInfo.devices; *prev; prev = &(*prev)->next)
+ ;
+ *prev = dev;
+ dev->next = NULL;
+
return TRUE;
}
@@ -159,6 +177,7 @@ DisableDevice(register DeviceIntPtr dev)
if (*prev != dev)
return FALSE;
(void)(*dev->deviceProc)(dev, DEVICE_OFF);
+ dev->enabled = FALSE;
*prev = dev->next;
dev->next = inputInfo.off_devices;
inputInfo.off_devices = dev;
@@ -166,14 +185,204 @@ DisableDevice(register DeviceIntPtr dev)
}
int
+ActivateDevice(DeviceIntPtr dev)
+{
+ int ret = Success;
+ devicePresenceNotify ev;
+ DeviceIntRec dummyDev;
+
+ if (!dev || !dev->deviceProc)
+ return BadImplementation;
+
+ ret = (*dev->deviceProc) (dev, DEVICE_INIT);
+ dev->inited = (ret == Success);
+
+ ev.type = DevicePresenceNotify;
+ ev.time = currentTime.milliseconds;
+ ev.devchange = 0;
+ ev.deviceid = 0;
+ dummyDev.id = 0;
+ SendEventToAllWindows(&dummyDev, DevicePresenceNotifyMask,
+ (xEvent *) &ev, 1);
+
+ return ret;
+}
+
+static void
+CoreKeyboardBell(int volume, DeviceIntPtr pDev, pointer arg, int something)
+{
+ KeybdCtrl *ctrl = arg;
+
+ DDXRingBell(volume, ctrl->bell_pitch, ctrl->bell_duration);
+}
+
+static void
+CoreKeyboardCtl(DeviceIntPtr pDev, KeybdCtrl *ctrl)
+{
+ return;
+}
+
+static int
+CoreKeyboardProc(DeviceIntPtr pDev, int what)
+{
+ CARD8 *modMap;
+ KeySymsRec keySyms;
+#ifdef XKB
+ XkbComponentNamesRec names;
+#endif
+
+ switch (what) {
+ case DEVICE_INIT:
+ keySyms.minKeyCode = 8;
+ keySyms.maxKeyCode = 255;
+ keySyms.mapWidth = 4;
+ keySyms.map = (KeySym *)xcalloc(sizeof(KeySym),
+ (keySyms.maxKeyCode -
+ keySyms.minKeyCode) *
+ keySyms.mapWidth);
+ if (!keySyms.map) {
+ ErrorF("Couldn't allocate core keymap\n");
+ return BadAlloc;
+ }
+
+ modMap = (CARD8 *)xalloc(MAP_LENGTH);
+ if (!modMap) {
+ ErrorF("Couldn't allocate core modifier map\n");
+ return BadAlloc;
+ }
+ bzero((char *)modMap, MAP_LENGTH);
+
+#ifdef XKB
+ if (!noXkbExtension) {
+ bzero(&names, sizeof(names));
+ XkbSetRulesDflts("base", "pc105", "us", NULL, NULL);
+ XkbInitKeyboardDeviceStruct(pDev, &names, &keySyms, modMap,
+ CoreKeyboardBell, CoreKeyboardCtl);
+ }
+ else
+#endif
+ {
+ /* FIXME Our keymap here isn't exactly useful. */
+ InitKeyboardDeviceStruct((DevicePtr)pDev, &keySyms, modMap,
+ CoreKeyboardBell, CoreKeyboardCtl);
+ }
+
+ xfree(keySyms.map);
+ xfree(modMap);
+
+ break;
+
+ case DEVICE_CLOSE:
+ pDev->devPrivates[CoreDevicePrivatesIndex].ptr = NULL;
+ break;
+
+ default:
+ break;
+ }
+ return Success;
+}
+
+static int
+CorePointerProc(DeviceIntPtr pDev, int what)
+{
+ BYTE map[33];
+ int i = 0;
+
+ switch (what) {
+ case DEVICE_INIT:
+ for (i = 1; i <= 32; i++)
+ map[i] = i;
+ InitPointerDeviceStruct((DevicePtr)pDev, map, 32,
+ GetMotionHistory, (PtrCtrlProcPtr)NoopDDA,
+ GetMotionHistorySize(), 2);
+ pDev->valuator->axisVal[0] = screenInfo.screens[0]->width / 2;
+ pDev->valuator->lastx = pDev->valuator->axisVal[0];
+ pDev->valuator->axisVal[1] = screenInfo.screens[0]->height / 2;
+ pDev->valuator->lasty = pDev->valuator->axisVal[1];
+ break;
+
+ case DEVICE_CLOSE:
+ pDev->devPrivates[CoreDevicePrivatesIndex].ptr = NULL;
+ break;
+
+ default:
+ break;
+ }
+
+ return Success;
+}
+
+void
+InitCoreDevices()
+{
+ register DeviceIntPtr dev;
+
+ if (CoreDevicePrivatesGeneration != serverGeneration) {
+ CoreDevicePrivatesIndex = AllocateDevicePrivateIndex();
+ CoreDevicePrivatesGeneration = serverGeneration;
+ }
+
+ if (!inputInfo.keyboard) {
+ dev = AddInputDevice(CoreKeyboardProc, TRUE);
+ if (!dev)
+ FatalError("Failed to allocate core keyboard");
+ dev->name = strdup("Virtual core keyboard");
+#ifdef XKB
+ dev->public.processInputProc = CoreProcessKeyboardEvent;
+ dev->public.realInputProc = CoreProcessKeyboardEvent;
+ if (!noXkbExtension)
+ XkbSetExtension(dev, ProcessKeyboardEvent);
+#else
+ dev->public.processInputProc = ProcessKeyboardEvent;
+ dev->public.realInputProc = ProcessKeyboardEvent;
+#endif
+ dev->ActivateGrab = ActivateKeyboardGrab;
+ dev->DeactivateGrab = DeactivateKeyboardGrab;
+ dev->coreEvents = FALSE;
+ if (!AllocateDevicePrivate(dev, CoreDevicePrivatesIndex))
+ FatalError("Couldn't allocate keyboard devPrivates\n");
+ dev->devPrivates[CoreDevicePrivatesIndex].ptr = NULL;
+ (void)ActivateDevice(dev);
+ inputInfo.keyboard = dev;
+ }
+
+ if (!inputInfo.pointer) {
+ dev = AddInputDevice(CorePointerProc, TRUE);
+ if (!dev)
+ FatalError("Failed to allocate core pointer");
+ dev->name = strdup("Virtual core pointer");
+#ifdef XKB
+ dev->public.processInputProc = CoreProcessPointerEvent;
+ dev->public.realInputProc = CoreProcessPointerEvent;
+ if (!noXkbExtension)
+ XkbSetExtension(dev, ProcessPointerEvent);
+#else
+ dev->public.processInputProc = ProcessPointerEvent;
+ dev->public.realInputProc = ProcessPointerEvent;
+#endif
+ dev->ActivateGrab = ActivatePointerGrab;
+ dev->DeactivateGrab = DeactivatePointerGrab;
+ dev->coreEvents = FALSE;
+ if (!AllocateDevicePrivate(dev, CoreDevicePrivatesIndex))
+ FatalError("Couldn't allocate pointer devPrivates\n");
+ dev->devPrivates[CoreDevicePrivatesIndex].ptr = NULL;
+ (void)ActivateDevice(dev);
+ inputInfo.pointer = dev;
+ }
+}
+
+int
InitAndStartDevices()
{
register DeviceIntPtr dev, next;
- for (dev = inputInfo.off_devices; dev; dev = dev->next)
- dev->inited = ((*dev->deviceProc)(dev, DEVICE_INIT) == Success);
+ for (dev = inputInfo.off_devices; dev; dev = dev->next) {
+ DebugF("(dix) initialising device %d\n", dev->id);
+ ActivateDevice(dev);
+ }
for (dev = inputInfo.off_devices; dev; dev = next)
{
+ DebugF("(dix) enabling device %d\n", dev->id);
next = dev->next;
if (dev->inited && dev->startup)
(void)EnableDevice(dev);
@@ -181,7 +390,6 @@ InitAndStartDevices()
for (dev = inputInfo.devices;
dev && (dev != inputInfo.keyboard);
dev = dev->next)
- ;
if (!dev || (dev != inputInfo.keyboard)) {
ErrorF("No core keyboard\n");
return BadImplementation;
@@ -209,9 +417,10 @@ CloseDevice(register DeviceIntPtr dev)
if (dev->inited)
(void)(*dev->deviceProc)(dev, DEVICE_CLOSE);
+
xfree(dev->name);
- if (dev->key)
- {
+
+ if (dev->key) {
#ifdef XKB
if (dev->key->xkbInfo)
XkbFreeInfo(dev->key->xkbInfo);
@@ -220,20 +429,27 @@ CloseDevice(register DeviceIntPtr dev)
xfree(dev->key->modifierKeyMap);
xfree(dev->key);
}
- xfree(dev->valuator);
+
+ if (dev->valuator)
+ xfree(dev->valuator);
+
+ if (dev->button) {
#ifdef XKB
- if ((dev->button)&&(dev->button->xkb_acts))
- xfree(dev->button->xkb_acts);
+ if (dev->button->xkb_acts)
+ xfree(dev->button->xkb_acts);
#endif
- xfree(dev->button);
- if (dev->focus)
- {
+ xfree(dev->button);
+ }
+
+ if (dev->focus) {
xfree(dev->focus->trace);
xfree(dev->focus);
}
- xfree(dev->proximity);
- for (k=dev->kbdfeed; k; k=knext)
- {
+
+ if (dev->proximity)
+ xfree(dev->proximity);
+
+ for (k = dev->kbdfeed; k; k = knext) {
knext = k->next;
#ifdef XKB
if (k->xkb_sli)
@@ -241,30 +457,30 @@ CloseDevice(register DeviceIntPtr dev)
#endif
xfree(k);
}
- for (p=dev->ptrfeed; p; p=pnext)
- {
+
+ for (p = dev->ptrfeed; p; p = pnext) {
pnext = p->next;
xfree(p);
}
- for (i=dev->intfeed; i; i=inext)
- {
+
+ for (i = dev->intfeed; i; i = inext) {
inext = i->next;
xfree(i);
}
- for (s=dev->stringfeed; s; s=snext)
- {
+
+ for (s = dev->stringfeed; s; s = snext) {
snext = s->next;
xfree(s->ctrl.symbols_supported);
xfree(s->ctrl.symbols_displayed);
xfree(s);
}
- for (b=dev->bell; b; b=bnext)
- {
+
+ for (b = dev->bell; b; b = bnext) {
bnext = b->next;
xfree(b);
}
- for (l=dev->leds; l; l=lnext)
- {
+
+ for (l = dev->leds; l; l = lnext) {
lnext = l->next;
#ifdef XKB
if (l->xkb_sli)
@@ -272,11 +488,12 @@ CloseDevice(register DeviceIntPtr dev)
#endif
xfree(l);
}
+
#ifdef XKB
- while (dev->xkb_interest) {
+ while (dev->xkb_interest)
XkbRemoveResourceClient((DevicePtr)dev,dev->xkb_interest->resource);
- }
#endif
+
xfree(dev->sync.event);
xfree(dev);
}
@@ -302,48 +519,60 @@ CloseDownDevices()
inputInfo.pointer = NULL;
}
-void
-RemoveDevice(register DeviceIntPtr dev)
+int
+RemoveDevice(DeviceIntPtr dev)
{
- register DeviceIntPtr prev,tmp,next;
+ DeviceIntPtr prev,tmp,next;
+ int ret = BadMatch;
+ devicePresenceNotify ev;
+ DeviceIntRec dummyDev;
+
+ DebugF("(dix) removing device %d\n", dev->id);
- prev= NULL;
- for (tmp= inputInfo.devices; tmp; (prev = tmp), (tmp = next)) {
+ if (!dev || dev == inputInfo.keyboard || dev == inputInfo.pointer)
+ return BadImplementation;
+
+ prev = NULL;
+ for (tmp = inputInfo.devices; tmp; (prev = tmp), (tmp = next)) {
next = tmp->next;
- if (tmp==dev) {
+ if (tmp == dev) {
CloseDevice(tmp);
+
if (prev==NULL)
inputInfo.devices = next;
else
prev->next = next;
- inputInfo.numDevices--;
- if (inputInfo.keyboard == tmp)
- inputInfo.keyboard = NULL;
- else if (inputInfo.pointer == tmp)
- inputInfo.pointer = NULL;
- return;
+
+ ret = Success;
}
}
- prev= NULL;
- for (tmp= inputInfo.off_devices; tmp; (prev = tmp), (tmp = next)) {
+ prev = NULL;
+ for (tmp = inputInfo.off_devices; tmp; (prev = tmp), (tmp = next)) {
next = tmp->next;
- if (tmp==dev) {
+ if (tmp == dev) {
CloseDevice(tmp);
- if (prev==NULL)
+
+ if (prev == NULL)
inputInfo.off_devices = next;
else
prev->next = next;
- inputInfo.numDevices--;
- if (inputInfo.keyboard == tmp)
- inputInfo.keyboard = NULL;
- else if (inputInfo.pointer == tmp)
- inputInfo.pointer = NULL;
- return;
+
+ ret = Success;
}
}
- ErrorF("Internal Error! Attempt to remove a non-existent device\n");
- return;
+
+ if (ret == Success) {
+ ev.type = DevicePresenceNotify;
+ ev.time = currentTime.milliseconds;
+ ev.devchange = 0;
+ ev.deviceid = 0;
+ dummyDev.id = 0;
+ SendEventToAllWindows(&dummyDev, DevicePresenceNotifyMask,
+ (xEvent *) &ev, 1);
+ }
+
+ return ret;
}
int
@@ -355,47 +584,13 @@ NumMotionEvents()
void
RegisterPointerDevice(DeviceIntPtr device)
{
- inputInfo.pointer = device;
-#ifdef XKB
- device->public.processInputProc = CoreProcessPointerEvent;
- device->public.realInputProc = CoreProcessPointerEvent;
- if (!noXkbExtension)
- XkbSetExtension(device,ProcessPointerEvent);
-#else
- device->public.processInputProc = ProcessPointerEvent;
- device->public.realInputProc = ProcessPointerEvent;
-#endif
- device->ActivateGrab = ActivatePointerGrab;
- device->DeactivateGrab = DeactivatePointerGrab;
- if (!device->name)
- {
- char *p = "pointer";
- device->name = (char *)xalloc(strlen(p) + 1);
- strcpy(device->name, p);
- }
+ RegisterOtherDevice(device);
}
void
RegisterKeyboardDevice(DeviceIntPtr device)
{
- inputInfo.keyboard = device;
-#ifdef XKB
- device->public.processInputProc = CoreProcessKeyboardEvent;
- device->public.realInputProc = CoreProcessKeyboardEvent;
- if (!noXkbExtension)
- XkbSetExtension(device,ProcessKeyboardEvent);
-#else
- device->public.processInputProc = ProcessKeyboardEvent;
- device->public.realInputProc = ProcessKeyboardEvent;
-#endif
- device->ActivateGrab = ActivateKeyboardGrab;
- device->DeactivateGrab = DeactivateKeyboardGrab;
- if (!device->name)
- {
- char *k = "keyboard";
- device->name = (char *)xalloc(strlen(k) + 1);
- strcpy(device->name, k);
- }
+ RegisterOtherDevice(device);
}
_X_EXPORT DevicePtr
@@ -440,8 +635,8 @@ SetKeySymsMap(register KeySymsPtr dst, register KeySymsPtr src)
{
int i, j;
int rowDif = src->minKeyCode - dst->minKeyCode;
- /* if keysym map size changes, grow map first */
+ /* if keysym map size changes, grow map first */
if (src->mapWidth < dst->mapWidth)
{
for (i = src->minKeyCode; i <= src->maxKeyCode; i++)
@@ -531,7 +726,7 @@ InitKeyClassDeviceStruct(DeviceIntPtr dev, KeySymsPtr pKeySyms, CARD8 pModifiers
{
int i;
register KeyClassPtr keyc;
-
+
keyc = (KeyClassPtr)xalloc(sizeof(KeyClassRec));
if (!keyc)
return FALSE;
@@ -596,21 +791,70 @@ InitValuatorClassDeviceStruct(DeviceIntPtr dev, int numAxes,
int i;
register ValuatorClassPtr valc;
+ if (!dev)
+ return FALSE;
+
valc = (ValuatorClassPtr)xalloc(sizeof(ValuatorClassRec) +
numAxes * sizeof(AxisInfo) +
numAxes * sizeof(unsigned int));
if (!valc)
return FALSE;
+
+ valc->motion = NULL;
+ valc->first_motion = 0;
+ valc->last_motion = 0;
valc->GetMotionProc = motionProc;
+
valc->numMotionEvents = numMotionEvents;
valc->motionHintWindow = NullWindow;
valc->numAxes = numAxes;
valc->mode = mode;
valc->axes = (AxisInfoPtr)(valc + 1);
valc->axisVal = (int *)(valc->axes + numAxes);
- for (i=0; i<numAxes; i++)
- valc->axisVal[i]=0;
+ valc->lastx = 0;
+ valc->lasty = 0;
+ valc->dxremaind = 0;
+ valc->dyremaind = 0;
dev->valuator = valc;
+
+ /* biggest hack ever. */
+ if (motionProc == GetMotionHistory)
+ AllocateMotionHistory(dev);
+
+ for (i=0; i<numAxes; i++) {
+ InitValuatorAxisStruct(dev, i, 0, -1, 0, 0, 0);
+ valc->axisVal[i]=0;
+ }
+ return TRUE;
+}
+
+_X_EXPORT Bool
+InitAbsoluteClassDeviceStruct(DeviceIntPtr dev)
+{
+ register AbsoluteClassPtr abs;
+
+ abs = (AbsoluteClassPtr)xalloc(sizeof(AbsoluteClassRec));
+ if (!abs)
+ return FALSE;
+
+ /* we don't do anything sensible with these, but should */
+ abs->min_x = -1;
+ abs->min_y = -1;
+ abs->max_x = -1;
+ abs->max_y = -1;
+ abs->flip_x = 0;
+ abs->flip_y = 0;
+ abs->rotation = 0;
+ abs->button_threshold = 0;
+
+ abs->offset_x = 0;
+ abs->offset_y = 0;
+ abs->width = -1;
+ abs->height = -1;
+ abs->following = 0;
+
+ dev->absolute = abs;
+
return TRUE;
}
@@ -669,13 +913,7 @@ InitPtrFeedbackClassDeviceStruct(DeviceIntPtr dev, PtrCtrlProcPtr controlProc)
if (!feedc)
return FALSE;
feedc->CtrlProc = controlProc;
-#ifdef sgi
- feedc->ctrl.num = 1;
- feedc->ctrl.den = 1;
- feedc->ctrl.threshold = 1;
-#else
feedc->ctrl = defaultPointerControl;
-#endif
feedc->ctrl.id = 0;
if ( (feedc->next = dev->ptrfeed) )
feedc->ctrl.id = dev->ptrfeed->ctrl.id + 1;
@@ -803,12 +1041,13 @@ InitIntegerFeedbackClassDeviceStruct (DeviceIntPtr dev, IntegerCtrlProcPtr contr
_X_EXPORT Bool
InitPointerDeviceStruct(DevicePtr device, CARD8 *map, int numButtons,
ValuatorMotionProcPtr motionProc,
- PtrCtrlProcPtr controlProc, int numMotionEvents)
+ PtrCtrlProcPtr controlProc, int numMotionEvents,
+ int numAxes)
{
DeviceIntPtr dev = (DeviceIntPtr)device;
return(InitButtonClassDeviceStruct(dev, numButtons, map) &&
- InitValuatorClassDeviceStruct(dev, 2, motionProc,
+ InitValuatorClassDeviceStruct(dev, numAxes, motionProc,
numMotionEvents, 0) &&
InitPtrFeedbackClassDeviceStruct(dev, controlProc));
}
@@ -917,112 +1156,99 @@ AllModifierKeysAreUp(dev, map1, per1, map2, per2)
return TRUE;
}
+static int
+DoSetModifierMapping(ClientPtr client, KeyCode *inputMap,
+ int numKeyPerModifier)
+{
+ DeviceIntPtr pDev = NULL;
+ int i = 0, inputMapLen = numKeyPerModifier * 8;
+
+ for (pDev = inputInfo.devices; pDev; pDev = pDev->next) {
+ if ((pDev->coreEvents || pDev == inputInfo.keyboard) && pDev->key) {
+ for (i = 0; i < inputMapLen; i++) {
+ /* Check that all the new modifiers fall within the advertised
+ * keycode range, and are okay with the DDX. */
+ if (inputMap[i] && ((inputMap[i] < pDev->key->curKeySyms.minKeyCode ||
+ inputMap[i] > pDev->key->curKeySyms.maxKeyCode) ||
+ !LegalModifier(inputMap[i], pDev))) {
+ client->errorValue = inputMap[i];
+ return BadValue;
+ }
+ }
+
+ if (!XaceHook(XACE_DEVICE_ACCESS, client, pDev, TRUE))
+ return BadAccess;
+
+ /* None of the modifiers (old or new) may be down while we change
+ * the map. */
+ if (!AllModifierKeysAreUp(pDev, pDev->key->modifierKeyMap,
+ pDev->key->maxKeysPerModifier,
+ inputMap, numKeyPerModifier) ||
+ !AllModifierKeysAreUp(pDev, inputMap, numKeyPerModifier,
+ pDev->key->modifierKeyMap,
+ pDev->key->maxKeysPerModifier)) {
+ return MappingBusy;
+ }
+ }
+ }
+
+ for (pDev = inputInfo.devices; pDev; pDev = pDev->next) {
+
+ if ((pDev->coreEvents || pDev == inputInfo.keyboard) && pDev->key) {
+ bzero(pDev->key->modifierMap, MAP_LENGTH);
+
+ /* Annoyingly, we lack a modifierKeyMap size, so we have to just free
+ * and re-alloc it every time. */
+ if (pDev->key->modifierKeyMap)
+ xfree(pDev->key->modifierKeyMap);
+
+ if (inputMapLen) {
+ pDev->key->modifierKeyMap = (KeyCode *) xalloc(inputMapLen);
+ if (!pDev->key->modifierKeyMap)
+ return BadAlloc;
+
+ memcpy(pDev->key->modifierKeyMap, inputMap, inputMapLen);
+ pDev->key->maxKeysPerModifier = numKeyPerModifier;
+
+ for (i = 0; i < inputMapLen; i++) {
+ if (inputMap[i]) {
+ pDev->key->modifierMap[inputMap[i]] |=
+ (1 << (((unsigned int)i) / numKeyPerModifier));
+ }
+ }
+ }
+ else {
+ pDev->key->modifierKeyMap = NULL;
+ }
+ }
+ }
+
+ return Success;
+}
+
int
ProcSetModifierMapping(ClientPtr client)
{
xSetModifierMappingReply rep;
REQUEST(xSetModifierMappingReq);
- KeyCode *inputMap;
- int inputMapLen;
- register int i;
- DeviceIntPtr keybd = inputInfo.keyboard;
- register KeyClassPtr keyc = keybd->key;
REQUEST_AT_LEAST_SIZE(xSetModifierMappingReq);
- if (client->req_len != ((stuff->numKeyPerModifier<<1) +
- (sizeof (xSetModifierMappingReq)>>2)))
+ if (client->req_len != ((stuff->numKeyPerModifier << 1) +
+ (sizeof (xSetModifierMappingReq) >> 2)))
return BadLength;
- inputMapLen = 8*stuff->numKeyPerModifier;
- inputMap = (KeyCode *)&stuff[1];
-
- /*
- * Now enforce the restriction that "all of the non-zero keycodes must be
- * in the range specified by min-keycode and max-keycode in the
- * connection setup (else a Value error)"
- */
- i = inputMapLen;
- while (i--)
- {
- if (inputMap[i]
- && (inputMap[i] < keyc->curKeySyms.minKeyCode
- || inputMap[i] > keyc->curKeySyms.maxKeyCode))
- {
- client->errorValue = inputMap[i];
- return BadValue;
- }
- }
-
-#ifdef XCSECURITY
- if (!SecurityCheckDeviceAccess(client, keybd, TRUE))
- return BadAccess;
-#endif
-
rep.type = X_Reply;
rep.length = 0;
rep.sequenceNumber = client->sequence;
- rep.success = MappingSuccess;
-
- /*
- * Now enforce the restriction that none of the old or new
- * modifier keys may be down while we change the mapping, and
- * that the DDX layer likes the choice.
- */
- if (!AllModifierKeysAreUp(keybd, keyc->modifierKeyMap,
- (int)keyc->maxKeysPerModifier,
- inputMap, (int)stuff->numKeyPerModifier)
- ||
- !AllModifierKeysAreUp(keybd, inputMap, (int)stuff->numKeyPerModifier,
- keyc->modifierKeyMap,
- (int)keyc->maxKeysPerModifier))
- {
- rep.success = MappingBusy;
- }
- else
- {
- for (i = 0; i < inputMapLen; i++)
- {
- if (inputMap[i] && !LegalModifier(inputMap[i], (DevicePtr)keybd))
- {
- rep.success = MappingFailed;
- break;
- }
- }
- }
-
- if (rep.success == MappingSuccess)
- {
- KeyCode *map;
- /*
- * Now build the keyboard's modifier bitmap from the
- * list of keycodes.
- */
- map = (KeyCode *)xalloc(inputMapLen);
- if (!map && inputMapLen)
- return BadAlloc;
- if (keyc->modifierKeyMap)
- xfree(keyc->modifierKeyMap);
- keyc->modifierKeyMap = map;
- memmove((char *)map, (char *)inputMap, inputMapLen);
-
- keyc->maxKeysPerModifier = stuff->numKeyPerModifier;
- for (i = 0; i < MAP_LENGTH; i++)
- keyc->modifierMap[i] = 0;
- for (i = 0; i < inputMapLen; i++)
- {
- if (inputMap[i])
- keyc->modifierMap[inputMap[i]] |=
- (1<<(((unsigned int)i)/keyc->maxKeysPerModifier));
- }
- }
- if (rep.success == MappingSuccess)
- SendMappingNotify(MappingModifier, 0, 0, client);
+ rep.success = DoSetModifierMapping(client, (KeyCode *)&stuff[1],
+ stuff->numKeyPerModifier);
+ /* FIXME: Send mapping notifies for all the extended devices as well. */
+ SendMappingNotify(MappingModifier, 0, 0, client);
WriteReplyToClient(client, sizeof(xSetModifierMappingReply), &rep);
-
- return(client->noClientException);
+ return client->noClientException;
}
int
@@ -1052,40 +1278,78 @@ ProcChangeKeyboardMapping(ClientPtr client)
REQUEST(xChangeKeyboardMappingReq);
unsigned len;
KeySymsRec keysyms;
- register KeySymsPtr curKeySyms = &inputInfo.keyboard->key->curKeySyms;
+ KeySymsPtr curKeySyms = &inputInfo.keyboard->key->curKeySyms;
+ DeviceIntPtr pDev = NULL;
REQUEST_AT_LEAST_SIZE(xChangeKeyboardMappingReq);
len = client->req_len - (sizeof(xChangeKeyboardMappingReq) >> 2);
if (len != (stuff->keyCodes * stuff->keySymsPerKeyCode))
return BadLength;
+
if ((stuff->firstKeyCode < curKeySyms->minKeyCode) ||
- (stuff->firstKeyCode > curKeySyms->maxKeyCode))
- {
+ (stuff->firstKeyCode > curKeySyms->maxKeyCode)) {
client->errorValue = stuff->firstKeyCode;
return BadValue;
+
}
- if ( ((unsigned)(stuff->firstKeyCode + stuff->keyCodes - 1) >
- curKeySyms->maxKeyCode) ||
- (stuff->keySymsPerKeyCode == 0))
- {
+ if (((unsigned)(stuff->firstKeyCode + stuff->keyCodes - 1) >
+ curKeySyms->maxKeyCode) || (stuff->keySymsPerKeyCode == 0)) {
client->errorValue = stuff->keySymsPerKeyCode;
return BadValue;
}
-#ifdef XCSECURITY
- if (!SecurityCheckDeviceAccess(client, inputInfo.keyboard,
- TRUE))
- return BadAccess;
-#endif
+
+ for (pDev = inputInfo.devices; pDev; pDev = pDev->next) {
+ if ((pDev->coreEvents || pDev == inputInfo.keyboard) && pDev->key) {
+ if (!XaceHook(XACE_DEVICE_ACCESS, client, pDev, TRUE))
+ return BadAccess;
+ }
+ }
+
keysyms.minKeyCode = stuff->firstKeyCode;
keysyms.maxKeyCode = stuff->firstKeyCode + stuff->keyCodes - 1;
keysyms.mapWidth = stuff->keySymsPerKeyCode;
keysyms.map = (KeySym *)&stuff[1];
- if (!SetKeySymsMap(curKeySyms, &keysyms))
- return BadAlloc;
+ for (pDev = inputInfo.devices; pDev; pDev = pDev->next) {
+ if ((pDev->coreEvents || pDev == inputInfo.keyboard) && pDev->key) {
+ if (!SetKeySymsMap(&pDev->key->curKeySyms, &keysyms))
+ return BadAlloc;
+ }
+ }
+
+ /* FIXME: Send mapping notifies for all the extended devices as well. */
SendMappingNotify(MappingKeyboard, stuff->firstKeyCode, stuff->keyCodes,
- client);
+ client);
return client->noClientException;
+}
+
+static int
+DoSetPointerMapping(DeviceIntPtr device, BYTE *map, int n)
+{
+ int i = 0;
+ DeviceIntPtr dev = NULL;
+
+ if (!device || !device->button)
+ return BadDevice;
+
+ for (dev = inputInfo.devices; dev; dev = dev->next) {
+ if ((dev->coreEvents || dev == inputInfo.pointer) && dev->button) {
+ for (i = 0; i < n; i++) {
+ if ((device->button->map[i + 1] != map[i]) &&
+ BitIsOn(device->button->down, i + 1)) {
+ return MappingBusy;
+ }
+ }
+ }
+ }
+
+ for (dev = inputInfo.devices; dev; dev = dev->next) {
+ if ((dev->coreEvents || dev == inputInfo.pointer) && dev->button) {
+ for (i = 0; i < n; i++)
+ dev->button->map[i + 1] = map[i];
+ }
+ }
+ return Success;
}
int
@@ -1093,9 +1357,8 @@ ProcSetPointerMapping(ClientPtr client)
{
REQUEST(xSetPointerMappingReq);
BYTE *map;
+ int ret;
xSetPointerMappingReply rep;
- register unsigned int i;
- DeviceIntPtr mouse = inputInfo.pointer;
REQUEST_AT_LEAST_SIZE(xSetPointerMappingReq);
if (client->req_len != (sizeof(xSetPointerMappingReq)+stuff->nElts+3) >> 2)
@@ -1105,23 +1368,24 @@ ProcSetPointerMapping(ClientPtr client)
rep.sequenceNumber = client->sequence;
rep.success = MappingSuccess;
map = (BYTE *)&stuff[1];
- if (stuff->nElts != mouse->button->numButtons)
- {
+
+ /* So we're bounded here by the number of core buttons. This check
+ * probably wants disabling through XFixes. */
+ if (stuff->nElts != inputInfo.pointer->button->numButtons) {
client->errorValue = stuff->nElts;
return BadValue;
}
if (BadDeviceMap(&map[0], (int)stuff->nElts, 1, 255, &client->errorValue))
return BadValue;
- for (i=0; i < stuff->nElts; i++)
- if ((mouse->button->map[i + 1] != map[i]) &&
- BitIsOn(mouse->button->down, i + 1))
- {
- rep.success = MappingBusy;
- WriteReplyToClient(client, sizeof(xSetPointerMappingReply), &rep);
- return Success;
- }
- for (i = 0; i < stuff->nElts; i++)
- mouse->button->map[i + 1] = map[i];
+
+ ret = DoSetPointerMapping(inputInfo.pointer, map, stuff->nElts);
+ if (ret != Success) {
+ rep.success = ret;
+ WriteReplyToClient(client, sizeof(xSetPointerMappingReply), &rep);
+ return Success;
+ }
+
+ /* FIXME: Send mapping notifies for all the extended devices as well. */
SendMappingNotify(MappingPointer, 0, 0, client);
WriteReplyToClient(client, sizeof(xSetPointerMappingReply), &rep);
return Success;
@@ -1137,14 +1401,12 @@ ProcGetKeyboardMapping(ClientPtr client)
REQUEST_SIZE_MATCH(xGetKeyboardMappingReq);
if ((stuff->firstKeyCode < curKeySyms->minKeyCode) ||
- (stuff->firstKeyCode > curKeySyms->maxKeyCode))
- {
+ (stuff->firstKeyCode > curKeySyms->maxKeyCode)) {
client->errorValue = stuff->firstKeyCode;
return BadValue;
}
if (stuff->firstKeyCode + stuff->count >
- (unsigned)(curKeySyms->maxKeyCode + 1))
- {
+ (unsigned)(curKeySyms->maxKeyCode + 1)) {
client->errorValue = stuff->count;
return BadValue;
}
@@ -1201,43 +1463,30 @@ Ones(unsigned long mask) /* HACKMEM 169 */
return (((y + (y >> 3)) & 030707070707) % 077);
}
-int
-ProcChangeKeyboardControl (ClientPtr client)
+static int
+DoChangeKeyboardControl (ClientPtr client, DeviceIntPtr keybd, XID *vlist,
+ BITS32 vmask)
{
#define DO_ALL (-1)
KeybdCtrl ctrl;
- DeviceIntPtr keybd = inputInfo.keyboard;
- XID *vlist;
int t;
int led = DO_ALL;
int key = DO_ALL;
- BITS32 vmask, index2;
- int mask, i;
- REQUEST(xChangeKeyboardControlReq);
+ BITS32 index2;
+ int mask = vmask, i;
- REQUEST_AT_LEAST_SIZE(xChangeKeyboardControlReq);
- vmask = stuff->mask;
- if (client->req_len != (sizeof(xChangeKeyboardControlReq)>>2)+Ones(vmask))
- return BadLength;
-#ifdef XCSECURITY
- if (!SecurityCheckDeviceAccess(client, keybd, TRUE))
- return BadAccess;
-#endif
- vlist = (XID *)&stuff[1]; /* first word of values */
ctrl = keybd->kbdfeed->ctrl;
- while (vmask)
- {
+ while (vmask) {
index2 = (BITS32) lowbit (vmask);
vmask &= ~index2;
- switch (index2)
- {
+ switch (index2) {
case KBKeyClickPercent:
t = (INT8)*vlist;
vlist++;
- if (t == -1)
+ if (t == -1) {
t = defaultKeyboardControl.click;
- else if (t < 0 || t > 100)
- {
+ }
+ else if (t < 0 || t > 100) {
client->errorValue = t;
return BadValue;
}
@@ -1246,10 +1495,10 @@ ProcChangeKeyboardControl (ClientPtr client)
case KBBellPercent:
t = (INT8)*vlist;
vlist++;
- if (t == -1)
+ if (t == -1) {
t = defaultKeyboardControl.bell;
- else if (t < 0 || t > 100)
- {
+ }
+ else if (t < 0 || t > 100) {
client->errorValue = t;
return BadValue;
}
@@ -1258,10 +1507,10 @@ ProcChangeKeyboardControl (ClientPtr client)
case KBBellPitch:
t = (INT16)*vlist;
vlist++;
- if (t == -1)
+ if (t == -1) {
t = defaultKeyboardControl.bell_pitch;
- else if (t < 0)
- {
+ }
+ else if (t < 0) {
client->errorValue = t;
return BadValue;
}
@@ -1272,8 +1521,7 @@ ProcChangeKeyboardControl (ClientPtr client)
vlist++;
if (t == -1)
t = defaultKeyboardControl.bell_duration;
- else if (t < 0)
- {
+ else if (t < 0) {
client->errorValue = t;
return BadValue;
}
@@ -1282,56 +1530,51 @@ ProcChangeKeyboardControl (ClientPtr client)
case KBLed:
led = (CARD8)*vlist;
vlist++;
- if (led < 1 || led > 32)
- {
+ if (led < 1 || led > 32) {
client->errorValue = led;
return BadValue;
}
- if (!(stuff->mask & KBLedMode))
+ if (!(mask & KBLedMode))
return BadMatch;
break;
case KBLedMode:
t = (CARD8)*vlist;
vlist++;
- if (t == LedModeOff)
- {
+ if (t == LedModeOff) {
if (led == DO_ALL)
ctrl.leds = 0x0;
else
ctrl.leds &= ~(((Leds)(1)) << (led - 1));
}
- else if (t == LedModeOn)
- {
+ else if (t == LedModeOn) {
if (led == DO_ALL)
ctrl.leds = ~0L;
else
ctrl.leds |= (((Leds)(1)) << (led - 1));
}
- else
- {
+ else {
client->errorValue = t;
return BadValue;
}
#ifdef XKB
- if (!noXkbExtension) {
- XkbEventCauseRec cause;
- XkbSetCauseCoreReq(&cause,X_ChangeKeyboardControl,client);
- XkbSetIndicators(keybd,((led == DO_ALL) ? ~0L : (1L<<(led-1))),
+ if (!noXkbExtension) {
+ XkbEventCauseRec cause;
+ XkbSetCauseCoreReq(&cause,X_ChangeKeyboardControl,client);
+ XkbSetIndicators(keybd,((led == DO_ALL) ? ~0L : (1L<<(led-1))),
ctrl.leds, &cause);
- ctrl.leds = keybd->kbdfeed->ctrl.leds;
- }
+ ctrl.leds = keybd->kbdfeed->ctrl.leds;
+ }
#endif
break;
case KBKey:
key = (KeyCode)*vlist;
vlist++;
if ((KeyCode)key < inputInfo.keyboard->key->curKeySyms.minKeyCode ||
- (KeyCode)key > inputInfo.keyboard->key->curKeySyms.maxKeyCode)
- {
+ (KeyCode)key > inputInfo.keyboard->key->curKeySyms.maxKeyCode) {
client->errorValue = key;
return BadValue;
}
- if (!(stuff->mask & KBAutoRepeatMode))
+ if (!(mask & KBAutoRepeatMode))
return BadMatch;
break;
case KBAutoRepeatMode:
@@ -1340,25 +1583,22 @@ ProcChangeKeyboardControl (ClientPtr client)
t = (CARD8)*vlist;
vlist++;
#ifdef XKB
- if (!noXkbExtension && key != DO_ALL)
- XkbDisableComputedAutoRepeats(keybd,key);
+ if (!noXkbExtension && key != DO_ALL)
+ XkbDisableComputedAutoRepeats(keybd,key);
#endif
- if (t == AutoRepeatModeOff)
- {
+ if (t == AutoRepeatModeOff) {
if (key == DO_ALL)
ctrl.autoRepeat = FALSE;
else
ctrl.autoRepeats[i] &= ~mask;
}
- else if (t == AutoRepeatModeOn)
- {
+ else if (t == AutoRepeatModeOn) {
if (key == DO_ALL)
ctrl.autoRepeat = TRUE;
else
ctrl.autoRepeats[i] |= mask;
}
- else if (t == AutoRepeatModeDefault)
- {
+ else if (t == AutoRepeatModeDefault) {
if (key == DO_ALL)
ctrl.autoRepeat = defaultKeyboardControl.autoRepeat;
else
@@ -1366,32 +1606,70 @@ ProcChangeKeyboardControl (ClientPtr client)
(ctrl.autoRepeats[i] & ~mask) |
(defaultKeyboardControl.autoRepeats[i] & mask);
}
- else
- {
+ else {
client->errorValue = t;
return BadValue;
}
break;
default:
- client->errorValue = stuff->mask;
+ client->errorValue = mask;
return BadValue;
}
}
keybd->kbdfeed->ctrl = ctrl;
+
#ifdef XKB
/* The XKB RepeatKeys control and core protocol global autorepeat */
/* value are linked */
- if (!noXkbExtension) {
- XkbSetRepeatKeys(keybd,key,keybd->kbdfeed->ctrl.autoRepeat);
- }
+ if (!noXkbExtension)
+ XkbSetRepeatKeys(keybd, key, keybd->kbdfeed->ctrl.autoRepeat);
else
#endif
- (*keybd->kbdfeed->CtrlProc)(keybd, &keybd->kbdfeed->ctrl);
+ (*keybd->kbdfeed->CtrlProc)(keybd, &keybd->kbdfeed->ctrl);
+
return Success;
+
#undef DO_ALL
}
int
+ProcChangeKeyboardControl (ClientPtr client)
+{
+ XID *vlist;
+ BITS32 vmask;
+ int ret = Success, error = Success;
+ DeviceIntPtr pDev = NULL;
+ REQUEST(xChangeKeyboardControlReq);
+
+ REQUEST_AT_LEAST_SIZE(xChangeKeyboardControlReq);
+
+ vmask = stuff->mask;
+ vlist = (XID *)&stuff[1];
+
+ if (client->req_len != (sizeof(xChangeKeyboardControlReq)>>2)+Ones(vmask))
+ return BadLength;
+
+ for (pDev = inputInfo.devices; pDev; pDev = pDev->next) {
+ if ((pDev->coreEvents || pDev == inputInfo.keyboard) &&
+ pDev->kbdfeed && pDev->kbdfeed->CtrlProc) {
+ if (!XaceHook(XACE_DEVICE_ACCESS, client, pDev, TRUE))
+ return BadAccess;
+ }
+ }
+
+ for (pDev = inputInfo.devices; pDev; pDev = pDev->next) {
+ if ((pDev->coreEvents || pDev == inputInfo.keyboard) &&
+ pDev->kbdfeed && pDev->kbdfeed->CtrlProc) {
+ ret = DoChangeKeyboardControl(client, pDev, vlist, vmask);
+ if (ret != Success)
+ error = ret;
+ }
+ }
+
+ return error;
+}
+
+int
ProcGetKeyboardControl (ClientPtr client)
{
int i;
@@ -1422,24 +1700,35 @@ ProcBell(ClientPtr client)
int newpercent;
REQUEST(xBellReq);
REQUEST_SIZE_MATCH(xBellReq);
- if (stuff->percent < -100 || stuff->percent > 100)
- {
+
+ if (!keybd->kbdfeed->BellProc)
+ return BadDevice;
+
+ if (stuff->percent < -100 || stuff->percent > 100) {
client->errorValue = stuff->percent;
return BadValue;
}
+
newpercent = (base * stuff->percent) / 100;
if (stuff->percent < 0)
newpercent = base + newpercent;
else
newpercent = base - newpercent + stuff->percent;
+
+ for (keybd = inputInfo.devices; keybd; keybd = keybd->next) {
+ if ((keybd->coreEvents || keybd == inputInfo.keyboard) &&
+ keybd->kbdfeed && keybd->kbdfeed->BellProc) {
#ifdef XKB
- if (!noXkbExtension)
- XkbHandleBell(FALSE,FALSE, keybd, newpercent, &keybd->kbdfeed->ctrl, 0,
- None, NULL, client);
- else
+ if (!noXkbExtension)
+ XkbHandleBell(FALSE, FALSE, keybd, newpercent,
+ &keybd->kbdfeed->ctrl, 0, None, NULL, client);
+ else
#endif
- (*keybd->kbdfeed->BellProc)(newpercent, keybd,
- (pointer) &keybd->kbdfeed->ctrl, 0);
+ (*keybd->kbdfeed->BellProc)(newpercent, keybd,
+ &keybd->kbdfeed->ctrl, 0);
+ }
+ }
+
return Success;
}
@@ -1451,49 +1740,64 @@ ProcChangePointerControl(ClientPtr client)
REQUEST(xChangePointerControlReq);
REQUEST_SIZE_MATCH(xChangePointerControlReq);
+
+ if (!mouse->ptrfeed->CtrlProc)
+ return BadDevice;
+
ctrl = mouse->ptrfeed->ctrl;
- if ((stuff->doAccel != xTrue) && (stuff->doAccel != xFalse))
- {
+ if ((stuff->doAccel != xTrue) && (stuff->doAccel != xFalse)) {
client->errorValue = stuff->doAccel;
return(BadValue);
}
- if ((stuff->doThresh != xTrue) && (stuff->doThresh != xFalse))
- {
+ if ((stuff->doThresh != xTrue) && (stuff->doThresh != xFalse)) {
client->errorValue = stuff->doThresh;
return(BadValue);
}
- if (stuff->doAccel)
- {
- if (stuff->accelNum == -1)
+ if (stuff->doAccel) {
+ if (stuff->accelNum == -1) {
ctrl.num = defaultPointerControl.num;
- else if (stuff->accelNum < 0)
- {
+ }
+ else if (stuff->accelNum < 0) {
client->errorValue = stuff->accelNum;
return BadValue;
}
- else ctrl.num = stuff->accelNum;
- if (stuff->accelDenum == -1)
+ else {
+ ctrl.num = stuff->accelNum;
+ }
+
+ if (stuff->accelDenum == -1) {
ctrl.den = defaultPointerControl.den;
- else if (stuff->accelDenum <= 0)
- {
+ }
+ else if (stuff->accelDenum <= 0) {
client->errorValue = stuff->accelDenum;
return BadValue;
}
- else ctrl.den = stuff->accelDenum;
+ else {
+ ctrl.den = stuff->accelDenum;
+ }
}
- if (stuff->doThresh)
- {
- if (stuff->threshold == -1)
+ if (stuff->doThresh) {
+ if (stuff->threshold == -1) {
ctrl.threshold = defaultPointerControl.threshold;
- else if (stuff->threshold < 0)
- {
+ }
+ else if (stuff->threshold < 0) {
client->errorValue = stuff->threshold;
return BadValue;
}
- else ctrl.threshold = stuff->threshold;
+ else {
+ ctrl.threshold = stuff->threshold;
+ }
+ }
+
+
+ for (mouse = inputInfo.devices; mouse; mouse = mouse->next) {
+ if ((mouse->coreEvents || mouse == inputInfo.pointer) &&
+ mouse->ptrfeed && mouse->ptrfeed->CtrlProc) {
+ mouse->ptrfeed->ctrl = ctrl;
+ (*mouse->ptrfeed->CtrlProc)(mouse, &mouse->ptrfeed->ctrl);
+ }
}
- mouse->ptrfeed->ctrl = ctrl;
- (*mouse->ptrfeed->CtrlProc)(mouse, &mouse->ptrfeed->ctrl);
+
return Success;
}
@@ -1536,16 +1840,16 @@ ProcGetMotionEvents(ClientPtr client)
WindowPtr pWin;
xTimecoord * coords = (xTimecoord *) NULL;
xGetMotionEventsReply rep;
- int i, count, xmin, xmax, ymin, ymax;
+ int i, count, xmin, xmax, ymin, ymax, rc;
unsigned long nEvents;
DeviceIntPtr mouse = inputInfo.pointer;
TimeStamp start, stop;
REQUEST(xGetMotionEventsReq);
REQUEST_SIZE_MATCH(xGetMotionEventsReq);
- pWin = SecurityLookupWindow(stuff->window, client, TRUE);
- if (!pWin)
- return BadWindow;
+ rc = dixLookupWindow(&pWin, stuff->window, client, DixUnknownAccess);
+ if (rc != Success)
+ return rc;
if (mouse->valuator->motionHintWindow)
MaybeStopHint(mouse, client);
rep.type = X_Reply;
@@ -1608,15 +1912,13 @@ ProcQueryKeymap(ClientPtr client)
rep.type = X_Reply;
rep.sequenceNumber = client->sequence;
rep.length = 2;
-#ifdef XCSECURITY
- if (!SecurityCheckDeviceAccess(client, inputInfo.keyboard, TRUE))
- {
- bzero((char *)&rep.map[0], 32);
- }
+
+ if (XaceHook(XACE_DEVICE_ACCESS, client, inputInfo.keyboard, TRUE))
+ for (i = 0; i<32; i++)
+ rep.map[i] = down[i];
else
-#endif
- for (i = 0; i<32; i++)
- rep.map[i] = down[i];
+ bzero((char *)&rep.map[0], 32);
+
WriteReplyToClient(client, sizeof(xQueryKeymapReply), &rep);
return Success;
}
diff --git a/dix/dispatch.c b/dix/dispatch.c
index c8ee8d610..51ad07da5 100644
--- a/dix/dispatch.c
+++ b/dix/dispatch.c
@@ -1,5 +1,3 @@
-/* $XdotOrg: xserver/xorg/dix/dispatch.c,v 1.14 2006/02/15 20:44:12 ajax Exp $ */
-/* $Xorg: dispatch.c,v 1.5 2001/02/09 02:04:40 xorgcvs Exp $ */
/************************************************************
Copyright 1987, 1989, 1998 The Open Group
@@ -76,7 +74,36 @@ Equipment Corporation.
******************************************************************/
-/* $XFree86: xc/programs/Xserver/dix/dispatch.c,v 3.32 2003/11/10 18:21:45 tsi Exp $ */
+/* XSERVER_DTRACE additions:
+ * Copyright 2005-2006 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_DIX_CONFIG_H
#include <dix-config.h>
@@ -107,19 +134,29 @@ int ProcInitialConnection();
#include "panoramiX.h"
#include "panoramiXsrv.h"
#endif
-#ifdef XCSECURITY
-#define _SECURITY_SERVER
-#include <X11/extensions/security.h>
-#endif
+#include "xace.h"
#ifdef XAPPGROUP
-#include <X11/extensions/Xagsrv.h>
+#include "appgroup.h"
#endif
#ifdef XKB
+#ifndef XKB_IN_SERVER
#define XKB_IN_SERVER
+#endif
#include "inputstr.h"
#include <X11/extensions/XKBsrv.h>
#endif
+#ifdef XSERVER_DTRACE
+#include <sys/types.h>
+typedef const char *string;
+#include "Xserver-dtrace.h"
+
+char *RequestNames[256];
+static void LoadRequestNames(void);
+static void FreeRequestNames(void);
+#define GetRequestName(i) (RequestNames[i])
+#endif
+
#define mskcnt ((MAXCLIENTS + 31) / 32)
#define BITMASK(i) (1U << ((i) & 31))
#define MASKIDX(i) ((i) >> 5)
@@ -374,6 +411,10 @@ Dispatch(void)
if (!clientReady)
return;
+#ifdef XSERVER_DTRACE
+ LoadRequestNames();
+#endif
+
while (!dispatchException)
{
if (*icheck[0] != *icheck[1])
@@ -450,11 +491,23 @@ Dispatch(void)
client->requestLog[client->requestLogIndex] = MAJOROP;
client->requestLogIndex++;
#endif
+#ifdef XSERVER_DTRACE
+ XSERVER_REQUEST_START(GetRequestName(MAJOROP), MAJOROP,
+ ((xReq *)client->requestBuffer)->length,
+ client->index, client->requestBuffer);
+#endif
if (result > (maxBigRequestSize << 2))
result = BadLength;
- else
+ else {
+ XaceHook(XACE_AUDIT_BEGIN, client);
result = (* client->requestVector[MAJOROP])(client);
-
+ XaceHook(XACE_AUDIT_END, client, result);
+ }
+#ifdef XSERVER_DTRACE
+ XSERVER_REQUEST_DONE(GetRequestName(MAJOROP), MAJOROP,
+ client->sequence, client->index, result);
+#endif
+
if (result != Success)
{
if (client->noClientException != Success)
@@ -485,6 +538,9 @@ Dispatch(void)
KillAllClients();
DEALLOCATE_LOCAL(clientReady);
dispatchException &= ~DE_RESET;
+#ifdef XSERVER_DTRACE
+ FreeRequestNames();
+#endif
}
#undef MAJOROP
@@ -498,17 +554,16 @@ ProcBadRequest(ClientPtr client)
int
ProcCreateWindow(ClientPtr client)
{
- register WindowPtr pParent, pWin;
+ WindowPtr pParent, pWin;
REQUEST(xCreateWindowReq);
- int result;
- int len;
+ int result, len, rc;
REQUEST_AT_LEAST_SIZE(xCreateWindowReq);
LEGAL_NEW_RESOURCE(stuff->wid, client);
- if (!(pParent = (WindowPtr)SecurityLookupWindow(stuff->parent, client,
- SecurityWriteAccess)))
- return BadWindow;
+ rc = dixLookupWindow(&pParent, stuff->parent, client, DixWriteAccess);
+ if (rc != Success)
+ return rc;
len = client->req_len - (sizeof(xCreateWindowReq) >> 2);
if (Ones(stuff->mask) != len)
return BadLength;
@@ -541,16 +596,15 @@ ProcCreateWindow(ClientPtr client)
int
ProcChangeWindowAttributes(register ClientPtr client)
{
- register WindowPtr pWin;
+ WindowPtr pWin;
REQUEST(xChangeWindowAttributesReq);
register int result;
- int len;
+ int len, rc;
REQUEST_AT_LEAST_SIZE(xChangeWindowAttributesReq);
- pWin = (WindowPtr)SecurityLookupWindow(stuff->window, client,
- SecurityWriteAccess);
- if (!pWin)
- return(BadWindow);
+ rc = dixLookupWindow(&pWin, stuff->window, client, DixWriteAccess);
+ if (rc != Success)
+ return rc;
len = client->req_len - (sizeof(xChangeWindowAttributesReq) >> 2);
if (len != Ones(stuff->valueMask))
return BadLength;
@@ -567,15 +621,15 @@ ProcChangeWindowAttributes(register ClientPtr client)
int
ProcGetWindowAttributes(register ClientPtr client)
{
- register WindowPtr pWin;
+ WindowPtr pWin;
REQUEST(xResourceReq);
xGetWindowAttributesReply wa;
+ int rc;
REQUEST_SIZE_MATCH(xResourceReq);
- pWin = (WindowPtr)SecurityLookupWindow(stuff->id, client,
- SecurityReadAccess);
- if (!pWin)
- return(BadWindow);
+ rc = dixLookupWindow(&pWin, stuff->id, client, DixReadAccess);
+ if (rc != Success)
+ return rc;
GetWindowAttributes(pWin, client, &wa);
WriteReplyToClient(client, sizeof(xGetWindowAttributesReply), &wa);
return(client->noClientException);
@@ -584,14 +638,14 @@ ProcGetWindowAttributes(register ClientPtr client)
int
ProcDestroyWindow(register ClientPtr client)
{
- register WindowPtr pWin;
+ WindowPtr pWin;
REQUEST(xResourceReq);
+ int rc;
REQUEST_SIZE_MATCH(xResourceReq);
- pWin = (WindowPtr)SecurityLookupWindow(stuff->id, client,
- SecurityDestroyAccess);
- if (!pWin)
- return(BadWindow);
+ rc = dixLookupWindow(&pWin, stuff->id, client, DixDestroyAccess);
+ if (rc != Success)
+ return rc;
if (pWin->parent)
FreeResource(stuff->id, RT_NONE);
return(client->noClientException);
@@ -600,14 +654,14 @@ ProcDestroyWindow(register ClientPtr client)
int
ProcDestroySubwindows(register ClientPtr client)
{
- register WindowPtr pWin;
+ WindowPtr pWin;
REQUEST(xResourceReq);
+ int rc;
REQUEST_SIZE_MATCH(xResourceReq);
- pWin = (WindowPtr)SecurityLookupWindow(stuff->id, client,
- SecurityDestroyAccess);
- if (!pWin)
- return(BadWindow);
+ rc = dixLookupWindow(&pWin, stuff->id, client, DixDestroyAccess);
+ if (rc != Success)
+ return rc;
DestroySubwindows(pWin, client);
return(client->noClientException);
}
@@ -615,15 +669,14 @@ ProcDestroySubwindows(register ClientPtr client)
int
ProcChangeSaveSet(register ClientPtr client)
{
- register WindowPtr pWin;
+ WindowPtr pWin;
REQUEST(xChangeSaveSetReq);
- register int result;
+ register int result, rc;
REQUEST_SIZE_MATCH(xChangeSaveSetReq);
- pWin = (WindowPtr)SecurityLookupWindow(stuff->window, client,
- SecurityReadAccess);
- if (!pWin)
- return(BadWindow);
+ rc = dixLookupWindow(&pWin, stuff->window, client, DixReadAccess);
+ if (rc != Success)
+ return rc;
if (client->clientAsMask == (CLIENT_BITS(pWin->drawable.id)))
return BadMatch;
if ((stuff->mode == SetModeInsert) || (stuff->mode == SetModeDelete))
@@ -644,19 +697,17 @@ ProcChangeSaveSet(register ClientPtr client)
int
ProcReparentWindow(register ClientPtr client)
{
- register WindowPtr pWin, pParent;
+ WindowPtr pWin, pParent;
REQUEST(xReparentWindowReq);
- register int result;
+ register int result, rc;
REQUEST_SIZE_MATCH(xReparentWindowReq);
- pWin = (WindowPtr)SecurityLookupWindow(stuff->window, client,
- SecurityWriteAccess);
- if (!pWin)
- return(BadWindow);
- pParent = (WindowPtr)SecurityLookupWindow(stuff->parent, client,
- SecurityWriteAccess);
- if (!pParent)
- return(BadWindow);
+ rc = dixLookupWindow(&pWin, stuff->window, client, DixWriteAccess);
+ if (rc != Success)
+ return rc;
+ rc = dixLookupWindow(&pParent, stuff->parent, client, DixWriteAccess);
+ if (rc != Success)
+ return rc;
if (SAME_SCREENS(pWin->drawable, pParent->drawable))
{
if ((pWin->backgroundState == ParentRelative) &&
@@ -679,14 +730,14 @@ ProcReparentWindow(register ClientPtr client)
int
ProcMapWindow(register ClientPtr client)
{
- register WindowPtr pWin;
+ WindowPtr pWin;
REQUEST(xResourceReq);
+ int rc;
REQUEST_SIZE_MATCH(xResourceReq);
- pWin = (WindowPtr)SecurityLookupWindow(stuff->id, client,
- SecurityReadAccess);
- if (!pWin)
- return(BadWindow);
+ rc = dixLookupWindow(&pWin, stuff->id, client, DixReadAccess);
+ if (rc != Success)
+ return rc;
MapWindow(pWin, client);
/* update cache to say it is mapped */
return(client->noClientException);
@@ -695,14 +746,14 @@ ProcMapWindow(register ClientPtr client)
int
ProcMapSubwindows(register ClientPtr client)
{
- register WindowPtr pWin;
+ WindowPtr pWin;
REQUEST(xResourceReq);
+ int rc;
REQUEST_SIZE_MATCH(xResourceReq);
- pWin = (WindowPtr)SecurityLookupWindow( stuff->id, client,
- SecurityReadAccess);
- if (!pWin)
- return(BadWindow);
+ rc = dixLookupWindow(&pWin, stuff->id, client, DixReadAccess);
+ if (rc != Success)
+ return rc;
MapSubwindows(pWin, client);
/* update cache to say it is mapped */
return(client->noClientException);
@@ -711,14 +762,14 @@ ProcMapSubwindows(register ClientPtr client)
int
ProcUnmapWindow(register ClientPtr client)
{
- register WindowPtr pWin;
+ WindowPtr pWin;
REQUEST(xResourceReq);
+ int rc;
REQUEST_SIZE_MATCH(xResourceReq);
- pWin = (WindowPtr)SecurityLookupWindow( stuff->id, client,
- SecurityReadAccess);
- if (!pWin)
- return(BadWindow);
+ rc = dixLookupWindow(&pWin, stuff->id, client, DixReadAccess);
+ if (rc != Success)
+ return rc;
UnmapWindow(pWin, FALSE);
/* update cache to say it is mapped */
return(client->noClientException);
@@ -727,14 +778,14 @@ ProcUnmapWindow(register ClientPtr client)
int
ProcUnmapSubwindows(register ClientPtr client)
{
- register WindowPtr pWin;
+ WindowPtr pWin;
REQUEST(xResourceReq);
+ int rc;
REQUEST_SIZE_MATCH(xResourceReq);
- pWin = (WindowPtr)SecurityLookupWindow( stuff->id, client,
- SecurityReadAccess);
- if (!pWin)
- return(BadWindow);
+ rc = dixLookupWindow(&pWin, stuff->id, client, DixReadAccess);
+ if (rc != Success)
+ return rc;
UnmapSubwindows(pWin);
return(client->noClientException);
}
@@ -742,16 +793,15 @@ ProcUnmapSubwindows(register ClientPtr client)
int
ProcConfigureWindow(register ClientPtr client)
{
- register WindowPtr pWin;
+ WindowPtr pWin;
REQUEST(xConfigureWindowReq);
register int result;
- int len;
+ int len, rc;
REQUEST_AT_LEAST_SIZE(xConfigureWindowReq);
- pWin = (WindowPtr)SecurityLookupWindow( stuff->window, client,
- SecurityWriteAccess);
- if (!pWin)
- return(BadWindow);
+ rc = dixLookupWindow(&pWin, stuff->window, client, DixWriteAccess);
+ if (rc != Success)
+ return rc;
len = client->req_len - (sizeof(xConfigureWindowReq) >> 2);
if (Ones((Mask)stuff->mask) != len)
return BadLength;
@@ -766,8 +816,9 @@ ProcConfigureWindow(register ClientPtr client)
int
ProcCirculateWindow(register ClientPtr client)
{
- register WindowPtr pWin;
+ WindowPtr pWin;
REQUEST(xCirculateWindowReq);
+ int rc;
REQUEST_SIZE_MATCH(xCirculateWindowReq);
if ((stuff->direction != RaiseLowest) &&
@@ -776,10 +827,9 @@ ProcCirculateWindow(register ClientPtr client)
client->errorValue = stuff->direction;
return BadValue;
}
- pWin = (WindowPtr)SecurityLookupWindow(stuff->window, client,
- SecurityWriteAccess);
- if (!pWin)
- return(BadWindow);
+ rc = dixLookupWindow(&pWin, stuff->window, client, DixWriteAccess);
+ if (rc != Success)
+ return rc;
CirculateWindow(pWin, (int)stuff->direction, client);
return(client->noClientException);
}
@@ -787,11 +837,15 @@ ProcCirculateWindow(register ClientPtr client)
int
GetGeometry(register ClientPtr client, xGetGeometryReply *rep)
{
- register DrawablePtr pDraw;
+ DrawablePtr pDraw;
+ int rc;
REQUEST(xResourceReq);
-
REQUEST_SIZE_MATCH(xResourceReq);
- SECURITY_VERIFY_GEOMETRABLE (pDraw, stuff->id, client, SecurityReadAccess);
+
+ rc = dixLookupDrawable(&pDraw, stuff->id, client, M_ANY, DixReadAccess);
+ if (rc != Success)
+ return rc;
+
rep->type = X_Reply;
rep->length = 0;
rep->sequenceNumber = client->sequence;
@@ -843,16 +897,15 @@ int
ProcQueryTree(register ClientPtr client)
{
xQueryTreeReply reply;
- int numChildren = 0;
- register WindowPtr pChild, pWin, pHead;
+ int rc, numChildren = 0;
+ WindowPtr pChild, pWin, pHead;
Window *childIDs = (Window *)NULL;
REQUEST(xResourceReq);
REQUEST_SIZE_MATCH(xResourceReq);
- pWin = (WindowPtr)SecurityLookupWindow(stuff->id, client,
- SecurityReadAccess);
- if (!pWin)
- return(BadWindow);
+ rc = dixLookupWindow(&pWin, stuff->id, client, DixReadAccess);
+ if (rc != Success)
+ return rc;
reply.type = X_Reply;
reply.root = WindowTable[pWin->drawable.pScreen->myNum]->drawable.id;
reply.sequenceNumber = client->sequence;
@@ -965,10 +1018,9 @@ ProcSetSelectionOwner(register ClientPtr client)
return Success;
if (stuff->window != None)
{
- pWin = (WindowPtr)SecurityLookupWindow(stuff->window, client,
- SecurityReadAccess);
- if (!pWin)
- return(BadWindow);
+ int rc = dixLookupWindow(&pWin, stuff->window, client, DixReadAccess);
+ if (rc != Success)
+ return rc;
}
else
pWin = (WindowPtr)None;
@@ -1082,12 +1134,12 @@ ProcConvertSelection(register ClientPtr client)
xEvent event;
WindowPtr pWin;
REQUEST(xConvertSelectionReq);
+ int rc;
REQUEST_SIZE_MATCH(xConvertSelectionReq);
- pWin = (WindowPtr)SecurityLookupWindow(stuff->requestor, client,
- SecurityReadAccess);
- if (!pWin)
- return(BadWindow);
+ rc = dixLookupWindow(&pWin, stuff->requestor, client, DixReadAccess);
+ if (rc != Success)
+ return rc;
paramsOkay = (ValidAtom(stuff->selection) && ValidAtom(stuff->target));
if (stuff->property != None)
@@ -1099,15 +1151,11 @@ ProcConvertSelection(register ClientPtr client)
i = 0;
while ((i < NumCurrentSelections) &&
CurrentSelections[i].selection != stuff->selection) i++;
- if ((i < NumCurrentSelections) &&
- (CurrentSelections[i].window != None)
-#ifdef XCSECURITY
- && (!client->CheckAccess ||
- (* client->CheckAccess)(client, CurrentSelections[i].window,
- RT_WINDOW, SecurityReadAccess,
- CurrentSelections[i].pWin))
-#endif
- )
+ if ((i < NumCurrentSelections) &&
+ (CurrentSelections[i].window != None) &&
+ XaceHook(XACE_RESOURCE_ACCESS, client,
+ CurrentSelections[i].window, RT_WINDOW,
+ DixReadAccess, CurrentSelections[i].pWin))
{
event.u.u.type = SelectionRequest;
event.u.selectionRequest.time = stuff->time;
@@ -1206,18 +1254,17 @@ ProcTranslateCoords(register ClientPtr client)
{
REQUEST(xTranslateCoordsReq);
- register WindowPtr pWin, pDst;
+ WindowPtr pWin, pDst;
xTranslateCoordsReply rep;
+ int rc;
REQUEST_SIZE_MATCH(xTranslateCoordsReq);
- pWin = (WindowPtr)SecurityLookupWindow(stuff->srcWid, client,
- SecurityReadAccess);
- if (!pWin)
- return(BadWindow);
- pDst = (WindowPtr)SecurityLookupWindow(stuff->dstWid, client,
- SecurityReadAccess);
- if (!pDst)
- return(BadWindow);
+ rc = dixLookupWindow(&pWin, stuff->srcWid, client, DixReadAccess);
+ if (rc != Success)
+ return rc;
+ rc = dixLookupWindow(&pDst, stuff->dstWid, client, DixReadAccess);
+ if (rc != Success)
+ return rc;
rep.type = X_Reply;
rep.length = 0;
rep.sequenceNumber = client->sequence;
@@ -1306,7 +1353,7 @@ ProcCloseFont(register ClientPtr client)
REQUEST_SIZE_MATCH(xResourceReq);
pFont = (FontPtr)SecurityLookupIDByType(client, stuff->id, RT_FONT,
- SecurityDestroyAccess);
+ DixDestroyAccess);
if ( pFont != (FontPtr)NULL) /* id was valid */
{
FreeResource(stuff->id, RT_NONE);
@@ -1330,12 +1377,11 @@ ProcQueryFont(register ClientPtr client)
REQUEST_SIZE_MATCH(xResourceReq);
client->errorValue = stuff->id; /* EITHER font or gc */
pFont = (FontPtr)SecurityLookupIDByType(client, stuff->id, RT_FONT,
- SecurityReadAccess);
+ DixReadAccess);
if (!pFont)
{
- /* can't use VERIFY_GC because it might return BadGC */
pGC = (GC *) SecurityLookupIDByType(client, stuff->id, RT_GC,
- SecurityReadAccess);
+ DixReadAccess);
if (!pGC)
{
client->errorValue = stuff->id;
@@ -1391,11 +1437,11 @@ ProcQueryTextExtents(register ClientPtr client)
REQUEST_AT_LEAST_SIZE(xQueryTextExtentsReq);
pFont = (FontPtr)SecurityLookupIDByType(client, stuff->fid, RT_FONT,
- SecurityReadAccess);
+ DixReadAccess);
if (!pFont)
{
pGC = (GC *)SecurityLookupIDByType(client, stuff->fid, RT_GC,
- SecurityReadAccess);
+ DixReadAccess);
if (!pGC)
{
client->errorValue = stuff->fid;
@@ -1465,16 +1511,20 @@ int
ProcCreatePixmap(register ClientPtr client)
{
PixmapPtr pMap;
- register DrawablePtr pDraw;
+ DrawablePtr pDraw;
REQUEST(xCreatePixmapReq);
DepthPtr pDepth;
- register int i;
+ register int i, rc;
REQUEST_SIZE_MATCH(xCreatePixmapReq);
client->errorValue = stuff->pid;
LEGAL_NEW_RESOURCE(stuff->pid, client);
- SECURITY_VERIFY_GEOMETRABLE (pDraw, stuff->drawable, client,
- SecurityReadAccess);
+
+ rc = dixLookupDrawable(&pDraw, stuff->drawable, client, M_ANY,
+ DixReadAccess);
+ if (rc != Success)
+ return rc;
+
if (!stuff->width || !stuff->height)
{
client->errorValue = 0;
@@ -1529,7 +1579,7 @@ ProcFreePixmap(register ClientPtr client)
REQUEST_SIZE_MATCH(xResourceReq);
pMap = (PixmapPtr)SecurityLookupIDByType(client, stuff->id, RT_PIXMAP,
- SecurityDestroyAccess);
+ DixDestroyAccess);
if (pMap)
{
FreeResource(stuff->id, RT_NONE);
@@ -1545,17 +1595,19 @@ ProcFreePixmap(register ClientPtr client)
int
ProcCreateGC(register ClientPtr client)
{
- int error;
+ int error, rc;
GC *pGC;
- register DrawablePtr pDraw;
+ DrawablePtr pDraw;
unsigned len;
REQUEST(xCreateGCReq);
REQUEST_AT_LEAST_SIZE(xCreateGCReq);
client->errorValue = stuff->gc;
LEGAL_NEW_RESOURCE(stuff->gc, client);
- SECURITY_VERIFY_DRAWABLE (pDraw, stuff->drawable, client,
- SecurityReadAccess);
+ rc = dixLookupDrawable(&pDraw, stuff->drawable, client, 0, DixReadAccess);
+ if (rc != Success)
+ return rc;
+
len = client->req_len - (sizeof(xCreateGCReq) >> 2);
if (len != Ones(stuff->mask))
return BadLength;
@@ -1572,12 +1624,15 @@ int
ProcChangeGC(register ClientPtr client)
{
GC *pGC;
- REQUEST(xChangeGCReq);
int result;
unsigned len;
-
+ REQUEST(xChangeGCReq);
REQUEST_AT_LEAST_SIZE(xChangeGCReq);
- SECURITY_VERIFY_GC(pGC, stuff->gc, client, SecurityWriteAccess);
+
+ result = dixLookupGC(&pGC, stuff->gc, client, DixWriteAccess);
+ if (result != Success)
+ return result;
+
len = client->req_len - (sizeof(xChangeGCReq) >> 2);
if (len != Ones(stuff->mask))
return BadLength;
@@ -1595,14 +1650,18 @@ ProcChangeGC(register ClientPtr client)
int
ProcCopyGC(register ClientPtr client)
{
- register GC *dstGC;
- register GC *pGC;
+ GC *dstGC;
+ GC *pGC;
int result;
REQUEST(xCopyGCReq);
-
REQUEST_SIZE_MATCH(xCopyGCReq);
- SECURITY_VERIFY_GC( pGC, stuff->srcGC, client, SecurityReadAccess);
- SECURITY_VERIFY_GC( dstGC, stuff->dstGC, client, SecurityWriteAccess);
+
+ result = dixLookupGC(&pGC, stuff->srcGC, client, DixReadAccess);
+ if (result != Success)
+ return result;
+ result = dixLookupGC(&dstGC, stuff->dstGC, client, DixWriteAccess);
+ if (result != Success)
+ return result;
if ((dstGC->pScreen != pGC->pScreen) || (dstGC->depth != pGC->depth))
return (BadMatch);
result = CopyGC(pGC, dstGC, stuff->mask);
@@ -1618,7 +1677,7 @@ ProcCopyGC(register ClientPtr client)
int
ProcSetDashes(register ClientPtr client)
{
- register GC *pGC;
+ GC *pGC;
int result;
REQUEST(xSetDashesReq);
@@ -1629,7 +1688,9 @@ ProcSetDashes(register ClientPtr client)
return BadValue;
}
- SECURITY_VERIFY_GC(pGC,stuff->gc, client, SecurityWriteAccess);
+ result = dixLookupGC(&pGC,stuff->gc, client, DixWriteAccess);
+ if (result != Success)
+ return result;
result = SetDashes(pGC, stuff->dashOffset, stuff->nDashes,
(unsigned char *)&stuff[1]);
@@ -1645,9 +1706,8 @@ ProcSetDashes(register ClientPtr client)
int
ProcSetClipRectangles(register ClientPtr client)
{
- int nr;
- int result;
- register GC *pGC;
+ int nr, result;
+ GC *pGC;
REQUEST(xSetClipRectanglesReq);
REQUEST_AT_LEAST_SIZE(xSetClipRectanglesReq);
@@ -1657,7 +1717,9 @@ ProcSetClipRectangles(register ClientPtr client)
client->errorValue = stuff->ordering;
return BadValue;
}
- SECURITY_VERIFY_GC(pGC,stuff->gc, client, SecurityWriteAccess);
+ result = dixLookupGC(&pGC,stuff->gc, client, DixWriteAccess);
+ if (result != Success)
+ return result;
nr = (client->req_len << 2) - sizeof(xSetClipRectanglesReq);
if (nr & 4)
@@ -1674,11 +1736,15 @@ ProcSetClipRectangles(register ClientPtr client)
int
ProcFreeGC(register ClientPtr client)
{
- register GC *pGC;
+ GC *pGC;
+ int rc;
REQUEST(xResourceReq);
-
REQUEST_SIZE_MATCH(xResourceReq);
- SECURITY_VERIFY_GC(pGC, stuff->id, client, SecurityDestroyAccess);
+
+ rc = dixLookupGC(&pGC, stuff->id, client, DixDestroyAccess);
+ if (rc != Success)
+ return rc;
+
FreeResource(stuff->id, RT_NONE);
return(client->noClientException);
}
@@ -1687,13 +1753,13 @@ int
ProcClearToBackground(register ClientPtr client)
{
REQUEST(xClearAreaReq);
- register WindowPtr pWin;
+ WindowPtr pWin;
+ int rc;
REQUEST_SIZE_MATCH(xClearAreaReq);
- pWin = (WindowPtr)SecurityLookupWindow(stuff->window, client,
- SecurityWriteAccess);
- if (!pWin)
- return(BadWindow);
+ rc = dixLookupWindow(&pWin, stuff->window, client, DixWriteAccess);
+ if (rc != Success)
+ return rc;
if (pWin->drawable.class == InputOnly)
{
client->errorValue = stuff->window;
@@ -1713,19 +1779,22 @@ ProcClearToBackground(register ClientPtr client)
int
ProcCopyArea(register ClientPtr client)
{
- register DrawablePtr pDst;
- register DrawablePtr pSrc;
- register GC *pGC;
+ DrawablePtr pDst;
+ DrawablePtr pSrc;
+ GC *pGC;
REQUEST(xCopyAreaReq);
RegionPtr pRgn;
+ int rc;
REQUEST_SIZE_MATCH(xCopyAreaReq);
VALIDATE_DRAWABLE_AND_GC(stuff->dstDrawable, pDst, pGC, client);
if (stuff->dstDrawable != stuff->srcDrawable)
{
- SECURITY_VERIFY_DRAWABLE(pSrc, stuff->srcDrawable, client,
- SecurityReadAccess);
+ rc = dixLookupDrawable(&pSrc, stuff->srcDrawable, client, 0,
+ DixReadAccess);
+ if (rc != Success)
+ return rc;
if ((pDst->pScreen != pSrc->pScreen) || (pDst->depth != pSrc->depth))
{
client->errorValue = stuff->dstDrawable;
@@ -1754,18 +1823,22 @@ ProcCopyArea(register ClientPtr client)
int
ProcCopyPlane(register ClientPtr client)
{
- register DrawablePtr psrcDraw, pdstDraw;
- register GC *pGC;
+ DrawablePtr psrcDraw, pdstDraw;
+ GC *pGC;
REQUEST(xCopyPlaneReq);
RegionPtr pRgn;
+ int rc;
REQUEST_SIZE_MATCH(xCopyPlaneReq);
VALIDATE_DRAWABLE_AND_GC(stuff->dstDrawable, pdstDraw, pGC, client);
if (stuff->dstDrawable != stuff->srcDrawable)
{
- SECURITY_VERIFY_DRAWABLE(psrcDraw, stuff->srcDrawable, client,
- SecurityReadAccess);
+ rc = dixLookupDrawable(&psrcDraw, stuff->srcDrawable, client, 0,
+ DixReadAccess);
+ if (rc != Success)
+ return rc;
+
if (pdstDraw->pScreen != psrcDraw->pScreen)
{
client->errorValue = stuff->dstDrawable;
@@ -1802,8 +1875,8 @@ int
ProcPolyPoint(register ClientPtr client)
{
int npoint;
- register GC *pGC;
- register DrawablePtr pDraw;
+ GC *pGC;
+ DrawablePtr pDraw;
REQUEST(xPolyPointReq);
REQUEST_AT_LEAST_SIZE(xPolyPointReq);
@@ -1825,8 +1898,8 @@ int
ProcPolyLine(register ClientPtr client)
{
int npoint;
- register GC *pGC;
- register DrawablePtr pDraw;
+ GC *pGC;
+ DrawablePtr pDraw;
REQUEST(xPolyLineReq);
REQUEST_AT_LEAST_SIZE(xPolyLineReq);
@@ -1848,8 +1921,8 @@ int
ProcPolySegment(register ClientPtr client)
{
int nsegs;
- register GC *pGC;
- register DrawablePtr pDraw;
+ GC *pGC;
+ DrawablePtr pDraw;
REQUEST(xPolySegmentReq);
REQUEST_AT_LEAST_SIZE(xPolySegmentReq);
@@ -1867,8 +1940,8 @@ int
ProcPolyRectangle (register ClientPtr client)
{
int nrects;
- register GC *pGC;
- register DrawablePtr pDraw;
+ GC *pGC;
+ DrawablePtr pDraw;
REQUEST(xPolyRectangleReq);
REQUEST_AT_LEAST_SIZE(xPolyRectangleReq);
@@ -1887,8 +1960,8 @@ int
ProcPolyArc(register ClientPtr client)
{
int narcs;
- register GC *pGC;
- register DrawablePtr pDraw;
+ GC *pGC;
+ DrawablePtr pDraw;
REQUEST(xPolyArcReq);
REQUEST_AT_LEAST_SIZE(xPolyArcReq);
@@ -1906,8 +1979,8 @@ int
ProcFillPoly(register ClientPtr client)
{
int things;
- register GC *pGC;
- register DrawablePtr pDraw;
+ GC *pGC;
+ DrawablePtr pDraw;
REQUEST(xFillPolyReq);
REQUEST_AT_LEAST_SIZE(xFillPolyReq);
@@ -1937,8 +2010,8 @@ int
ProcPolyFillRectangle(register ClientPtr client)
{
int things;
- register GC *pGC;
- register DrawablePtr pDraw;
+ GC *pGC;
+ DrawablePtr pDraw;
REQUEST(xPolyFillRectangleReq);
REQUEST_AT_LEAST_SIZE(xPolyFillRectangleReq);
@@ -1958,8 +2031,8 @@ int
ProcPolyFillArc(register ClientPtr client)
{
int narcs;
- register GC *pGC;
- register DrawablePtr pDraw;
+ GC *pGC;
+ DrawablePtr pDraw;
REQUEST(xPolyFillArcReq);
REQUEST_AT_LEAST_SIZE(xPolyFillArcReq);
@@ -2030,8 +2103,8 @@ ReformatImage (char *base, int nbytes, int bpp, int order)
int
ProcPutImage(register ClientPtr client)
{
- register GC *pGC;
- register DrawablePtr pDraw;
+ GC *pGC;
+ DrawablePtr pDraw;
long length; /* length of scanline server padded */
long lengthProto; /* length of scanline protocol padded */
char *tmpImage;
@@ -2090,23 +2163,24 @@ DoGetImage(register ClientPtr client, int format, Drawable drawable,
int x, int y, int width, int height,
Mask planemask, xGetImageReply **im_return)
{
- register DrawablePtr pDraw;
- int nlines, linesPerBuf;
+ DrawablePtr pDraw;
+ int nlines, linesPerBuf, rc;
register int linesDone;
long widthBytesLine, length;
Mask plane = 0;
char *pBuf;
xGetImageReply xgi;
-#ifdef XCSECURITY
RegionPtr pVisibleRegion = NULL;
-#endif
if ((format != XYPixmap) && (format != ZPixmap))
{
client->errorValue = format;
return(BadValue);
}
- SECURITY_VERIFY_DRAWABLE(pDraw, drawable, client, SecurityReadAccess);
+ rc = dixLookupDrawable(&pDraw, drawable, client, 0, DixReadAccess);
+ if (rc != Success)
+ return rc;
+
if(pDraw->type == DRAWABLE_WINDOW)
{
if( /* check for being viewable */
@@ -2203,17 +2277,16 @@ DoGetImage(register ClientPtr client, int format, Drawable drawable,
WriteReplyToClient(client, sizeof (xGetImageReply), &xgi);
}
-#ifdef XCSECURITY
- if (client->trustLevel != XSecurityClientTrusted &&
- pDraw->type == DRAWABLE_WINDOW)
+ if (pDraw->type == DRAWABLE_WINDOW &&
+ !XaceHook(XACE_DRAWABLE_ACCESS, client, pDraw))
{
pVisibleRegion = NotClippedByChildren((WindowPtr)pDraw);
if (pVisibleRegion)
{
- REGION_TRANSLATE(pDraw->pScreen, pVisibleRegion, -pDraw->x, -pDraw->y);
+ REGION_TRANSLATE(pDraw->pScreen, pVisibleRegion,
+ -pDraw->x, -pDraw->y);
}
}
-#endif
if (linesPerBuf == 0)
{
@@ -2233,12 +2306,10 @@ DoGetImage(register ClientPtr client, int format, Drawable drawable,
format,
planemask,
(pointer) pBuf);
-#ifdef XCSECURITY
if (pVisibleRegion)
- SecurityCensorImage(client, pVisibleRegion, widthBytesLine,
+ XaceCensorImage(client, pVisibleRegion, widthBytesLine,
pDraw, x, y + linesDone, width,
nlines, format, pBuf);
-#endif
/* Note that this is NOT a call to WriteSwappedDataToClient,
as we do NOT byte swap */
@@ -2274,13 +2345,11 @@ DoGetImage(register ClientPtr client, int format, Drawable drawable,
format,
plane,
(pointer)pBuf);
-#ifdef XCSECURITY
if (pVisibleRegion)
- SecurityCensorImage(client, pVisibleRegion,
+ XaceCensorImage(client, pVisibleRegion,
widthBytesLine,
pDraw, x, y + linesDone, width,
nlines, format, pBuf);
-#endif
/* Note: NOT a call to WriteSwappedDataToClient,
as we do NOT byte swap */
@@ -2302,10 +2371,8 @@ DoGetImage(register ClientPtr client, int format, Drawable drawable,
}
}
}
-#ifdef XCSECURITY
if (pVisibleRegion)
REGION_DESTROY(pDraw->pScreen, pVisibleRegion);
-#endif
if (!im_return)
DEALLOCATE_LOCAL(pBuf);
return (client->noClientException);
@@ -2357,8 +2424,8 @@ int
ProcImageText8(register ClientPtr client)
{
int err;
- register DrawablePtr pDraw;
- register GC *pGC;
+ DrawablePtr pDraw;
+ GC *pGC;
REQUEST(xImageTextReq);
@@ -2387,8 +2454,8 @@ int
ProcImageText16(register ClientPtr client)
{
int err;
- register DrawablePtr pDraw;
- register GC *pGC;
+ DrawablePtr pDraw;
+ GC *pGC;
REQUEST(xImageTextReq);
@@ -2420,7 +2487,7 @@ ProcCreateColormap(register ClientPtr client)
VisualPtr pVisual;
ColormapPtr pmap;
Colormap mid;
- register WindowPtr pWin;
+ WindowPtr pWin;
ScreenPtr pScreen;
REQUEST(xCreateColormapReq);
int i, result;
@@ -2434,10 +2501,9 @@ ProcCreateColormap(register ClientPtr client)
}
mid = stuff->mid;
LEGAL_NEW_RESOURCE(mid, client);
- pWin = (WindowPtr)SecurityLookupWindow(stuff->window, client,
- SecurityReadAccess);
- if (!pWin)
- return(BadWindow);
+ result = dixLookupWindow(&pWin, stuff->window, client, DixReadAccess);
+ if (result != Success)
+ return result;
pScreen = pWin->drawable.pScreen;
for (i = 0, pVisual = pScreen->visuals;
@@ -2454,7 +2520,7 @@ ProcCreateColormap(register ClientPtr client)
return(result);
}
client->errorValue = stuff->visual;
- return(BadValue);
+ return(BadMatch);
}
int
@@ -2465,7 +2531,7 @@ ProcFreeColormap(register ClientPtr client)
REQUEST_SIZE_MATCH(xResourceReq);
pmap = (ColormapPtr )SecurityLookupIDByType(client, stuff->id, RT_COLORMAP,
- SecurityDestroyAccess);
+ DixDestroyAccess);
if (pmap)
{
/* Freeing a default colormap is a no-op */
@@ -2493,7 +2559,7 @@ ProcCopyColormapAndFree(register ClientPtr client)
mid = stuff->mid;
LEGAL_NEW_RESOURCE(mid, client);
if( (pSrcMap = (ColormapPtr )SecurityLookupIDByType(client, stuff->srcCmap,
- RT_COLORMAP, SecurityReadAccess|SecurityWriteAccess)) )
+ RT_COLORMAP, DixReadAccess|DixWriteAccess)) )
{
result = CopyColormapAndFree(mid, pSrcMap, client->index);
if (client->noClientException != Success)
@@ -2516,7 +2582,7 @@ ProcInstallColormap(register ClientPtr client)
REQUEST_SIZE_MATCH(xResourceReq);
pcmp = (ColormapPtr)SecurityLookupIDByType(client, stuff->id,
- RT_COLORMAP, SecurityReadAccess);
+ RT_COLORMAP, DixReadAccess);
if (pcmp)
{
(*(pcmp->pScreen->InstallColormap)) (pcmp);
@@ -2537,7 +2603,7 @@ ProcUninstallColormap(register ClientPtr client)
REQUEST_SIZE_MATCH(xResourceReq);
pcmp = (ColormapPtr)SecurityLookupIDByType(client, stuff->id,
- RT_COLORMAP, SecurityReadAccess);
+ RT_COLORMAP, DixReadAccess);
if (pcmp)
{
if(pcmp->mid != pcmp->pScreen->defColormap)
@@ -2555,16 +2621,14 @@ int
ProcListInstalledColormaps(register ClientPtr client)
{
xListInstalledColormapsReply *preply;
- int nummaps;
+ int nummaps, rc;
WindowPtr pWin;
REQUEST(xResourceReq);
REQUEST_SIZE_MATCH(xResourceReq);
- pWin = (WindowPtr)SecurityLookupWindow(stuff->id, client,
- SecurityReadAccess);
-
- if (!pWin)
- return(BadWindow);
+ rc = dixLookupWindow(&pWin, stuff->id, client, DixReadAccess);
+ if (rc != Success)
+ return rc;
preply = (xListInstalledColormapsReply *)
ALLOCATE_LOCAL(sizeof(xListInstalledColormapsReply) +
@@ -2596,7 +2660,7 @@ ProcAllocColor (register ClientPtr client)
REQUEST_SIZE_MATCH(xAllocColorReq);
pmap = (ColormapPtr)SecurityLookupIDByType(client, stuff->cmap,
- RT_COLORMAP, SecurityWriteAccess);
+ RT_COLORMAP, DixWriteAccess);
if (pmap)
{
acr.type = X_Reply;
@@ -2636,7 +2700,7 @@ ProcAllocNamedColor (register ClientPtr client)
REQUEST_FIXED_SIZE(xAllocNamedColorReq, stuff->nbytes);
pcmp = (ColormapPtr)SecurityLookupIDByType(client, stuff->cmap,
- RT_COLORMAP, SecurityWriteAccess);
+ RT_COLORMAP, DixWriteAccess);
if (pcmp)
{
int retval;
@@ -2688,7 +2752,7 @@ ProcAllocColorCells (register ClientPtr client)
REQUEST_SIZE_MATCH(xAllocColorCellsReq);
pcmp = (ColormapPtr)SecurityLookupIDByType(client, stuff->cmap,
- RT_COLORMAP, SecurityWriteAccess);
+ RT_COLORMAP, DixWriteAccess);
if (pcmp)
{
xAllocColorCellsReply accr;
@@ -2754,7 +2818,7 @@ ProcAllocColorPlanes(register ClientPtr client)
REQUEST_SIZE_MATCH(xAllocColorPlanesReq);
pcmp = (ColormapPtr)SecurityLookupIDByType(client, stuff->cmap,
- RT_COLORMAP, SecurityWriteAccess);
+ RT_COLORMAP, DixWriteAccess);
if (pcmp)
{
xAllocColorPlanesReply acpr;
@@ -2818,7 +2882,7 @@ ProcFreeColors(register ClientPtr client)
REQUEST_AT_LEAST_SIZE(xFreeColorsReq);
pcmp = (ColormapPtr)SecurityLookupIDByType(client, stuff->cmap,
- RT_COLORMAP, SecurityWriteAccess);
+ RT_COLORMAP, DixWriteAccess);
if (pcmp)
{
int count;
@@ -2853,7 +2917,7 @@ ProcStoreColors (ClientPtr client)
REQUEST_AT_LEAST_SIZE(xStoreColorsReq);
pcmp = (ColormapPtr)SecurityLookupIDByType(client, stuff->cmap,
- RT_COLORMAP, SecurityWriteAccess);
+ RT_COLORMAP, DixWriteAccess);
if (pcmp)
{
int count;
@@ -2887,7 +2951,7 @@ ProcStoreNamedColor (register ClientPtr client)
REQUEST_FIXED_SIZE(xStoreNamedColorReq, stuff->nbytes);
pcmp = (ColormapPtr)SecurityLookupIDByType(client, stuff->cmap,
- RT_COLORMAP, SecurityWriteAccess);
+ RT_COLORMAP, DixWriteAccess);
if (pcmp)
{
xColorItem def;
@@ -2921,7 +2985,7 @@ ProcQueryColors(register ClientPtr client)
REQUEST_AT_LEAST_SIZE(xQueryColorsReq);
pcmp = (ColormapPtr)SecurityLookupIDByType(client, stuff->cmap,
- RT_COLORMAP, SecurityReadAccess);
+ RT_COLORMAP, DixReadAccess);
if (pcmp)
{
int count, retval;
@@ -2972,7 +3036,7 @@ ProcLookupColor(register ClientPtr client)
REQUEST_FIXED_SIZE(xLookupColorReq, stuff->nbytes);
pcmp = (ColormapPtr)SecurityLookupIDByType(client, stuff->cmap,
- RT_COLORMAP, SecurityReadAccess);
+ RT_COLORMAP, DixReadAccess);
if (pcmp)
{
xLookupColorReply lcr;
@@ -3022,9 +3086,9 @@ ProcCreateCursor (register ClientPtr client)
LEGAL_NEW_RESOURCE(stuff->cid, client);
src = (PixmapPtr)SecurityLookupIDByType(client, stuff->source,
- RT_PIXMAP, SecurityReadAccess);
+ RT_PIXMAP, DixReadAccess);
msk = (PixmapPtr)SecurityLookupIDByType(client, stuff->mask,
- RT_PIXMAP, SecurityReadAccess);
+ RT_PIXMAP, DixReadAccess);
if ( src == (PixmapPtr)NULL)
{
client->errorValue = stuff->source;
@@ -3124,7 +3188,7 @@ ProcFreeCursor (register ClientPtr client)
REQUEST_SIZE_MATCH(xResourceReq);
pCursor = (CursorPtr)SecurityLookupIDByType(client, stuff->id,
- RT_CURSOR, SecurityDestroyAccess);
+ RT_CURSOR, DixDestroyAccess);
if (pCursor)
{
FreeResource(stuff->id, RT_NONE);
@@ -3141,11 +3205,12 @@ int
ProcQueryBestSize (register ClientPtr client)
{
xQueryBestSizeReply reply;
- register DrawablePtr pDraw;
+ DrawablePtr pDraw;
ScreenPtr pScreen;
+ int rc;
REQUEST(xQueryBestSizeReq);
-
REQUEST_SIZE_MATCH(xQueryBestSizeReq);
+
if ((stuff->class != CursorShape) &&
(stuff->class != TileShape) &&
(stuff->class != StippleShape))
@@ -3153,8 +3218,11 @@ ProcQueryBestSize (register ClientPtr client)
client->errorValue = stuff->class;
return(BadValue);
}
- SECURITY_VERIFY_GEOMETRABLE (pDraw, stuff->drawable, client,
- SecurityReadAccess);
+
+ rc = dixLookupDrawable(&pDraw, stuff->drawable, client, M_ANY,
+ DixReadAccess);
+ if (rc != Success)
+ return rc;
if (stuff->class != CursorShape && pDraw->type == UNDRAWABLE_WINDOW)
return (BadMatch);
pScreen = pDraw->pScreen;
@@ -3276,14 +3344,11 @@ ProcListHosts(register ClientPtr client)
/* REQUEST(xListHostsReq); */
REQUEST_SIZE_MATCH(xListHostsReq);
-#ifdef XCSECURITY
+
/* untrusted clients can't list hosts */
- if (client->trustLevel != XSecurityClientTrusted)
- {
- SecurityAudit("client %d attempted to list hosts\n", client->index);
+ if (!XaceHook(XACE_HOSTLIST_ACCESS, client, DixReadAccess))
return BadAccess;
- }
-#endif
+
result = GetHosts(&pdata, &nHosts, &len, &reply.enabled);
if (result != Success)
return(result);
@@ -3323,7 +3388,8 @@ int
ProcKillClient(register ClientPtr client)
{
REQUEST(xResourceReq);
- ClientPtr killclient;
+ ClientPtr killclient;
+ int rc;
REQUEST_SIZE_MATCH(xResourceReq);
if (stuff->id == AllTemporary)
@@ -3332,8 +3398,8 @@ ProcKillClient(register ClientPtr client)
return (client->noClientException);
}
- if ((killclient = LookupClient(stuff->id, client)))
- {
+ rc = dixLookupClient(&killclient, stuff->id, client, DixDestroyAccess);
+ if (rc == Success) {
CloseDownClient(killclient);
/* if an LBX proxy gets killed, isItTimeToYield will be set */
if (isItTimeToYield || (client == killclient))
@@ -3347,10 +3413,7 @@ ProcKillClient(register ClientPtr client)
return (client->noClientException);
}
else
- {
- client->errorValue = stuff->id;
- return (BadValue);
- }
+ return rc;
}
int
@@ -3561,6 +3624,9 @@ CloseDownClient(register ClientPtr client)
CallCallbacks((&ClientStateCallback), (pointer)&clientinfo);
}
FreeClientResources(client);
+#ifdef XSERVER_DTRACE
+ XSERVER_CLIENT_DISCONNECT(client->index);
+#endif
if (client->index < nextFreeClientID)
nextFreeClientID = client->index;
clients[client->index] = NullClient;
@@ -3608,6 +3674,10 @@ CloseDownRetainedResources()
}
}
+extern int clientPrivateLen;
+extern unsigned *clientPrivateSizes;
+extern unsigned totalClientSize;
+
void InitClient(ClientPtr client, int i, pointer ospriv)
{
client->index = i;
@@ -3648,11 +3718,6 @@ void InitClient(ClientPtr client, int i, pointer ospriv)
}
#endif
client->replyBytesRemaining = 0;
-#ifdef XCSECURITY
- client->trustLevel = XSecurityClientTrusted;
- client->CheckAccess = NULL;
- client->authId = 0;
-#endif
#ifdef XAPPGROUP
client->appgroup = NULL;
#endif
@@ -3665,10 +3730,6 @@ void InitClient(ClientPtr client, int i, pointer ospriv)
#endif
}
-extern int clientPrivateLen;
-extern unsigned *clientPrivateSizes;
-extern unsigned totalClientSize;
-
int
InitClientPrivates(ClientPtr client)
{
@@ -3701,6 +3762,17 @@ InitClientPrivates(ClientPtr client)
else
ppriv->ptr = (pointer)NULL;
}
+
+ /* Allow registrants to initialize the serverClient devPrivates */
+ if (!client->index && ClientStateCallback)
+ {
+ NewClientInfoRec clientinfo;
+
+ clientinfo.client = client;
+ clientinfo.prefix = (xConnSetupPrefix *)NULL;
+ clientinfo.setup = (xConnSetup *) NULL;
+ CallCallbacks((&ClientStateCallback), (pointer)&clientinfo);
+ }
return 1;
}
@@ -3980,3 +4052,60 @@ MarkClientException(ClientPtr client)
{
client->noClientException = -1;
}
+
+#ifdef XSERVER_DTRACE
+#include <ctype.h>
+
+/* Load table of request names for dtrace probes */
+static void LoadRequestNames(void)
+{
+ int i;
+ FILE *xedb;
+ extern void LoadExtensionNames(char **RequestNames);
+
+ bzero(RequestNames, 256 * sizeof(char *));
+
+ xedb = fopen(XERRORDB_PATH, "r");
+ if (xedb != NULL) {
+ char buf[256];
+ while (fgets(buf, sizeof(buf), xedb)) {
+ if ((strncmp("XRequest.", buf, 9) == 0) && (isdigit(buf[9]))) {
+ char *name;
+ i = strtol(buf + 9, &name, 10);
+ if (RequestNames[i] == 0) {
+ char *end = strchr(name, '\n');
+ if (end) { *end = '\0'; }
+ RequestNames[i] = strdup(name + 1);
+ }
+ }
+ }
+ fclose(xedb);
+ }
+
+ LoadExtensionNames(RequestNames);
+
+ for (i = 0; i < 256; i++) {
+ if (RequestNames[i] == 0) {
+#define RN_SIZE 12 /* "Request#' + up to 3 digits + \0 */
+ RequestNames[i] = xalloc(RN_SIZE);
+ if (RequestNames[i]) {
+ snprintf(RequestNames[i], RN_SIZE, "Request#%d", i);
+ }
+ }
+ /* fprintf(stderr, "%d: %s\n", i, RequestNames[i]); */
+ }
+}
+
+static void FreeRequestNames(void)
+{
+ int i;
+
+ for (i = 0; i < 256; i++) {
+ if (RequestNames[i] != 0) {
+ free(RequestNames[i]);
+ RequestNames[i] = 0;
+ }
+ }
+}
+
+#endif
diff --git a/dix/dispatch.h b/dix/dispatch.h
index 89ea2dd7e..dd07096af 100644
--- a/dix/dispatch.h
+++ b/dix/dispatch.h
@@ -1,4 +1,3 @@
-/* $XFree86: xc/programs/Xserver/dix/dispatch.h,v 3.2 2001/08/01 00:44:48 tsi Exp $ */
/************************************************************
Copyright 1996 by Thomas E. Dickey <dickey@clark.net>
diff --git a/dix/dixfonts.c b/dix/dixfonts.c
index cb0df3c30..d5b42dcf6 100644
--- a/dix/dixfonts.c
+++ b/dix/dixfonts.c
@@ -1,5 +1,3 @@
-/* $XdotOrg: xserver/xorg/dix/dixfonts.c,v 1.9 2006/02/15 20:44:12 ajax Exp $ */
-/* $XFree86: xc/programs/Xserver/dix/dixfonts.c,v 3.28 2003/11/08 02:02:03 dawes Exp $ */
/************************************************************************
Copyright 1987 by Digital Equipment Corporation, Maynard, Massachusetts.
@@ -49,7 +47,6 @@ dealings in this Software without prior written authorization from Digital
Equipment Corporation.
******************************************************************/
-/* $Xorg: dixfonts.c,v 1.4 2000/08/17 19:48:18 cpqbld Exp $ */
#define NEED_REPLIES
#ifdef HAVE_DIX_CONFIG_H
@@ -158,11 +155,6 @@ QueueFontWakeup(FontPathElementPtr fpe)
for (i = 0; i < num_slept_fpes; i++) {
if (slept_fpes[i] == fpe) {
-
-#ifdef DEBUG
- fprintf(stderr, "re-queueing fpe wakeup\n");
-#endif
-
return;
}
}
@@ -1186,7 +1178,7 @@ doPolyText(ClientPtr client, register PTclosurePtr c)
if (c->slept &&
c->pDraw &&
c->pDraw != (DrawablePtr)SecurityLookupIDByClass(client, c->did,
- RC_DRAWABLE, SecurityWriteAccess))
+ RC_DRAWABLE, DixWriteAccess))
{
/* Our drawable has disappeared. Treat like client died... ask
the FPE code to clean up after client and avoid further
@@ -1216,7 +1208,7 @@ doPolyText(ClientPtr client, register PTclosurePtr c)
| ((Font)*(c->pElt+2)) << 16
| ((Font)*(c->pElt+1)) << 24;
pFont = (FontPtr)SecurityLookupIDByType(client, fid, RT_FONT,
- SecurityReadAccess);
+ DixReadAccess);
if (!pFont)
{
client->errorValue = fid;
@@ -1471,7 +1463,7 @@ doImageText(ClientPtr client, register ITclosurePtr c)
if (c->slept &&
c->pDraw &&
c->pDraw != (DrawablePtr)SecurityLookupIDByClass(client, c->did,
- RC_DRAWABLE, SecurityWriteAccess))
+ RC_DRAWABLE, DixWriteAccess))
{
/* Our drawable has disappeared. Treat like client died... ask
the FPE code to clean up after client. */
@@ -1889,7 +1881,7 @@ InitFonts ()
{
patternCache = MakeFontPatternCache();
-#ifndef KDRIVESERVER
+#ifndef BUILTIN_FONTS
if (screenInfo.numScreens > screenInfo.numVideoScreens) {
PrinterFontRegisterFpeFunctions();
FontFileCheckRegisterFpeFunctions();
@@ -1897,10 +1889,11 @@ InitFonts ()
} else
#endif
{
-#ifdef KDRIVESERVER
- BuiltinRegisterFpeFunctions();
-#endif
+#ifdef BUILTIN_FONTS
+ BuiltinRegisterFpeFunctions();
+#else
FontFileRegisterFpeFunctions();
+#endif
#ifndef NOFONTSERVERACCESS
fs_register_fpe_functions();
#endif
@@ -2023,7 +2016,7 @@ FontPtr
find_old_font(XID id)
{
return (FontPtr) SecurityLookupIDByType(NullClient, id, RT_NONE,
- SecurityUnknownAccess);
+ DixUnknownAccess);
}
Font
@@ -2062,11 +2055,6 @@ init_fs_handlers(FontPathElementPtr fpe, BlockHandlerProcPtr block_handler)
fs_handlers_installed = 0;
}
if (fs_handlers_installed == 0) {
-
-#ifdef DEBUG
- fprintf(stderr, "adding FS b & w handlers\n");
-#endif
-
if (!RegisterBlockAndWakeupHandlers(block_handler,
FontWakeup, (pointer) 0))
return AllocError;
@@ -2082,55 +2070,9 @@ remove_fs_handlers(FontPathElementPtr fpe, BlockHandlerProcPtr block_handler, Bo
if (all) {
/* remove the handlers if no one else is using them */
if (--fs_handlers_installed == 0) {
-
-#ifdef DEBUG
- fprintf(stderr, "removing FS b & w handlers\n");
-#endif
-
RemoveBlockAndWakeupHandlers(block_handler, FontWakeup,
(pointer) 0);
}
}
RemoveFontWakeup(fpe);
}
-
-#ifdef DEBUG
-#define GLWIDTHBYTESPADDED(bits,nbytes) \
- ((nbytes) == 1 ? (((bits)+7)>>3) /* pad to 1 byte */ \
- :(nbytes) == 2 ? ((((bits)+15)>>3)&~1) /* pad to 2 bytes */ \
- :(nbytes) == 4 ? ((((bits)+31)>>3)&~3) /* pad to 4 bytes */ \
- :(nbytes) == 8 ? ((((bits)+63)>>3)&~7) /* pad to 8 bytes */ \
- : 0)
-
-#define GLYPH_SIZE(ch, nbytes) \
- GLWIDTHBYTESPADDED((ch)->metrics.rightSideBearing - \
- (ch)->metrics.leftSideBearing, (nbytes))
-void
-dump_char_ascii(CharInfoPtr cip)
-{
- int r,
- l;
- int bpr;
- int byte;
- static unsigned maskTab[] = {
- (1 << 7), (1 << 6), (1 << 5), (1 << 4),
- (1 << 3), (1 << 2), (1 << 1), (1 << 0),
- };
-
- bpr = GLYPH_SIZE(cip, 4);
- for (r = 0; r < (cip->metrics.ascent + cip->metrics.descent); r++) {
- pointer row = (pointer) cip->bits + r * bpr;
-
- byte = 0;
- for (l = 0; l <= (cip->metrics.rightSideBearing -
- cip->metrics.leftSideBearing); l++) {
- if (maskTab[l & 7] & row[l >> 3])
- putchar('X');
- else
- putchar('.');
- }
- putchar('\n');
- }
-}
-
-#endif
diff --git a/dix/dixutils.c b/dix/dixutils.c
index 91796eade..084d2e4c5 100644
--- a/dix/dixutils.c
+++ b/dix/dixutils.c
@@ -1,4 +1,3 @@
-/* $XFree86: xc/programs/Xserver/dix/dixutils.c,v 3.13 2003/01/12 02:44:26 dawes Exp $ */
/***********************************************************
Copyright 1987, 1998 The Open Group
@@ -82,7 +81,6 @@ Author: Adobe Systems Incorporated
*/
-/* $Xorg: dixutils.c,v 1.4 2001/02/09 02:04:40 xorgcvs Exp $ */
#ifdef HAVE_DIX_CONFIG_H
#include <dix-config.h>
@@ -97,10 +95,7 @@ Author: Adobe Systems Incorporated
#include "scrnintstr.h"
#define XK_LATIN1
#include <X11/keysymdef.h>
-#ifdef XCSECURITY
-#define _SECURITY_SERVER
-#include <X11/extensions/security.h>
-#endif
+#include "xace.h"
/*
* CompareTimeStamps returns -1, 0, or +1 depending on if the first
@@ -199,136 +194,144 @@ CompareISOLatin1Lowered(unsigned char *s1, int s1len,
return (int) c1 - (int) c2;
}
-#ifdef XCSECURITY
-
-/* SecurityLookupWindow and SecurityLookupDrawable:
- * Look up the window/drawable taking into account the client doing
- * the lookup and the type of access desired. Return the window/drawable
- * if it exists and the client is allowed access, else return NULL.
- * Most Proc* functions should be calling these instead of
- * LookupWindow and LookupDrawable, which do no access checks.
+/*
+ * dixLookupWindow and dixLookupDrawable:
+ * Look up the window/drawable taking into account the client doing the
+ * lookup, the type of drawable desired, and the type of access desired.
+ * Return Success with *pDraw set if the window/drawable exists and the client
+ * is allowed access, else return an error code with *pDraw set to NULL. The
+ * access mask values are defined in resource.h. The type mask values are
+ * defined in pixmap.h, with zero equivalent to M_DRAWABLE.
*/
-
-_X_EXPORT WindowPtr
-SecurityLookupWindow(XID rid, ClientPtr client, Mask access_mode)
-{
- WindowPtr pWin;
-
- client->errorValue = rid;
- if(rid == INVALID)
- return NULL;
- if (client->trustLevel != XSecurityClientTrusted)
- return (WindowPtr)SecurityLookupIDByType(client, rid, RT_WINDOW, access_mode);
- if (client->lastDrawableID == rid)
- {
- if (client->lastDrawable->type == DRAWABLE_WINDOW)
- return ((WindowPtr) client->lastDrawable);
- return (WindowPtr) NULL;
- }
- pWin = (WindowPtr)SecurityLookupIDByType(client, rid, RT_WINDOW, access_mode);
- if (pWin && pWin->drawable.type == DRAWABLE_WINDOW) {
- client->lastDrawable = (DrawablePtr) pWin;
- client->lastDrawableID = rid;
+_X_EXPORT int
+dixLookupDrawable(DrawablePtr *pDraw, XID id, ClientPtr client,
+ Mask type, Mask access)
+{
+ DrawablePtr pTmp;
+ RESTYPE rtype;
+ *pDraw = NULL;
+ client->errorValue = id;
+
+ if (id == INVALID)
+ return BadDrawable;
+
+ if (id == client->lastDrawableID) {
+ pTmp = client->lastDrawable;
+
+ /* an access check is required for cached drawables */
+ rtype = (pTmp->type | M_WINDOW) ? RT_WINDOW : RT_PIXMAP;
+ if (!XaceHook(XACE_RESOURCE_ACCESS, client, id, rtype, access, pTmp))
+ return BadDrawable;
+ } else
+ pTmp = (DrawablePtr)SecurityLookupIDByClass(client, id, RC_DRAWABLE,
+ access);
+ if (!pTmp)
+ return BadDrawable;
+ if (!((1 << pTmp->type) | (type ? type : M_DRAWABLE)))
+ return BadMatch;
+
+ if (pTmp->type | M_DRAWABLE) {
+ client->lastDrawable = pTmp;
+ client->lastDrawableID = id;
client->lastGCID = INVALID;
client->lastGC = (GCPtr)NULL;
}
- return pWin;
+ *pDraw = pTmp;
+ return Success;
}
+_X_EXPORT int
+dixLookupWindow(WindowPtr *pWin, XID id, ClientPtr client, Mask access)
+{
+ int rc;
+ rc = dixLookupDrawable((DrawablePtr*)pWin, id, client, M_WINDOW, access);
+ return (rc == BadDrawable) ? BadWindow : rc;
+}
-_X_EXPORT pointer
-SecurityLookupDrawable(XID rid, ClientPtr client, Mask access_mode)
+_X_EXPORT int
+dixLookupGC(GCPtr *pGC, XID id, ClientPtr client, Mask access)
{
- register DrawablePtr pDraw;
+ GCPtr pTmp = (GCPtr)SecurityLookupIDByType(client, id, RT_GC, access);
+ if (pTmp) {
+ *pGC = pTmp;
+ return Success;
+ }
+ client->errorValue = id;
+ *pGC = NULL;
+ return BadGC;
+}
- if(rid == INVALID)
- return (pointer) NULL;
- if (client->trustLevel != XSecurityClientTrusted)
- return (DrawablePtr)SecurityLookupIDByClass(client, rid, RC_DRAWABLE,
- access_mode);
- if (client->lastDrawableID == rid)
- return ((pointer) client->lastDrawable);
- pDraw = (DrawablePtr)SecurityLookupIDByClass(client, rid, RC_DRAWABLE,
- access_mode);
- if (pDraw && (pDraw->type != UNDRAWABLE_WINDOW))
- return (pointer)pDraw;
- return (pointer)NULL;
+_X_EXPORT int
+dixLookupClient(ClientPtr *pClient, XID rid, ClientPtr client, Mask access)
+{
+ pointer pRes = (pointer)SecurityLookupIDByClass(client, rid, RC_ANY,
+ DixReadAccess);
+ int clientIndex = CLIENT_ID(rid);
+ client->errorValue = rid;
+
+ if (clientIndex && pRes && clients[clientIndex] && !(rid & SERVER_BIT)) {
+ *pClient = clients[clientIndex];
+ return Success;
+ }
+ *pClient = NULL;
+ return BadValue;
}
-/* We can't replace the LookupWindow and LookupDrawable functions with
- * macros because of compatibility with loadable servers.
+/*
+ * These are deprecated compatibility functions and will be removed soon!
+ * Please use the new dixLookup*() functions above.
*/
-
-_X_EXPORT WindowPtr
-LookupWindow(XID rid, ClientPtr client)
+_X_EXPORT _X_DEPRECATED WindowPtr
+SecurityLookupWindow(XID id, ClientPtr client, Mask access_mode)
{
- return SecurityLookupWindow(rid, client, SecurityUnknownAccess);
+ WindowPtr pWin;
+ int i = dixLookupWindow(&pWin, id, client, access_mode);
+ static int warn = 1;
+ if (warn-- > 0)
+ ErrorF("Warning: LookupWindow()/SecurityLookupWindow() "
+ "are deprecated. Please convert your driver/module "
+ "to use dixLookupWindow().\n");
+ return (i == Success) ? pWin : NULL;
}
-_X_EXPORT pointer
-LookupDrawable(XID rid, ClientPtr client)
+_X_EXPORT _X_DEPRECATED WindowPtr
+LookupWindow(XID id, ClientPtr client)
{
- return SecurityLookupDrawable(rid, client, SecurityUnknownAccess);
+ return SecurityLookupWindow(id, client, DixUnknownAccess);
}
-#else /* not XCSECURITY */
-
-WindowPtr
-LookupWindow(XID rid, ClientPtr client)
+_X_EXPORT _X_DEPRECATED pointer
+SecurityLookupDrawable(XID id, ClientPtr client, Mask access_mode)
{
- WindowPtr pWin;
-
- client->errorValue = rid;
- if(rid == INVALID)
- return NULL;
- if (client->lastDrawableID == rid)
- {
- if (client->lastDrawable->type == DRAWABLE_WINDOW)
- return ((WindowPtr) client->lastDrawable);
- return (WindowPtr) NULL;
- }
- pWin = (WindowPtr)LookupIDByType(rid, RT_WINDOW);
- if (pWin && pWin->drawable.type == DRAWABLE_WINDOW) {
- client->lastDrawable = (DrawablePtr) pWin;
- client->lastDrawableID = rid;
- client->lastGCID = INVALID;
- client->lastGC = (GCPtr)NULL;
- }
- return pWin;
+ DrawablePtr pDraw;
+ int i = dixLookupDrawable(&pDraw, id, client, M_DRAWABLE, access_mode);
+ static int warn = 1;
+ if (warn-- > 0)
+ ErrorF("Warning: LookupDrawable()/SecurityLookupDrawable() "
+ "are deprecated. Please convert your driver/module "
+ "to use dixLookupDrawable().\n");
+ return (i == Success) ? pDraw : NULL;
}
-
-pointer
-LookupDrawable(XID rid, ClientPtr client)
+_X_EXPORT _X_DEPRECATED pointer
+LookupDrawable(XID id, ClientPtr client)
{
- register DrawablePtr pDraw;
-
- if(rid == INVALID)
- return (pointer) NULL;
- if (client->lastDrawableID == rid)
- return ((pointer) client->lastDrawable);
- pDraw = (DrawablePtr)LookupIDByClass(rid, RC_DRAWABLE);
- if (pDraw && (pDraw->type != UNDRAWABLE_WINDOW))
- return (pointer)pDraw;
- return (pointer)NULL;
+ return SecurityLookupDrawable(id, client, DixUnknownAccess);
}
-#endif /* XCSECURITY */
-
-_X_EXPORT ClientPtr
-LookupClient(XID rid, ClientPtr client)
+_X_EXPORT _X_DEPRECATED ClientPtr
+LookupClient(XID id, ClientPtr client)
{
- pointer pRes = (pointer)SecurityLookupIDByClass(client, rid, RC_ANY,
- SecurityReadAccess);
- int clientIndex = CLIENT_ID(rid);
-
- if (clientIndex && pRes && clients[clientIndex] && !(rid & SERVER_BIT))
- {
- return clients[clientIndex];
- }
- return (ClientPtr)NULL;
+ ClientPtr pClient;
+ int i = dixLookupClient(&pClient, id, client, DixUnknownAccess);
+ static int warn = 1;
+ if (warn-- > 0)
+ ErrorF("Warning: LookupClient() is deprecated. Please convert your "
+ "driver/module to use dixLookupClient().\n");
+ return (i == Success) ? pClient : NULL;
}
+/* end deprecated functions */
int
AlterSaveSetForClient(ClientPtr client, WindowPtr pWin, unsigned mode,
diff --git a/dix/events.c b/dix/events.c
index b014fdbb7..0053f42d4 100644
--- a/dix/events.c
+++ b/dix/events.c
@@ -1,5 +1,3 @@
-/* $XdotOrg: xserver/xorg/dix/events.c,v 1.18 2006/02/15 20:44:12 ajax Exp $ */
-/* $XFree86: xc/programs/Xserver/dix/events.c,v 3.51 2004/01/12 17:04:52 tsi Exp $ */
/************************************************************
Copyright 1987, 1998 The Open Group
@@ -109,13 +107,13 @@ of the copyright holder.
******************************************************************/
-/* $Xorg: events.c,v 1.4 2001/02/09 02:04:40 xorgcvs Exp $ */
#ifdef HAVE_DIX_CONFIG_H
#include <dix-config.h>
#endif
#include <X11/X.h>
+#include <X11/keysym.h>
#include "misc.h"
#include "resource.h"
#define NEED_EVENTS
@@ -134,13 +132,17 @@ of the copyright holder.
#include "globals.h"
#ifdef XKB
+#include <X11/extensions/XKBproto.h>
#include <X11/extensions/XKBsrv.h>
extern Bool XkbFilterEvents(ClientPtr, int, xEvent *);
#endif
-#ifdef XCSECURITY
-#define _SECURITY_SERVER
-#include <X11/extensions/security.h>
+#include "xace.h"
+
+#ifdef XSERVER_DTRACE
+#include <sys/types.h>
+typedef const char *string;
+#include "Xserver-dtrace.h"
#endif
#ifdef XEVIE
@@ -158,7 +160,9 @@ xEvent *xeviexE;
#endif
#include <X11/extensions/XIproto.h>
+#include "exglobals.h"
#include "exevents.h"
+#include "exglobals.h"
#include "extnsionst.h"
#include "dixevents.h"
@@ -210,9 +214,6 @@ _X_EXPORT CallbackListPtr DeviceEventCallback;
Mask DontPropagateMasks[DNPMCOUNT];
static int DontPropagateRefCnts[DNPMCOUNT];
-#ifdef DEBUG
-static debug_events = 0;
-#endif
_X_EXPORT InputInfo inputInfo;
static struct {
@@ -323,11 +324,16 @@ static CARD8 criticalEvents[32] =
};
#ifdef PANORAMIX
-
static void ConfineToShape(RegionPtr shape, int *px, int *py);
-static void SyntheticMotion(int x, int y);
static void PostNewCursor(void);
+#define SyntheticMotion(x, y) \
+ PostSyntheticMotion(x, y, noPanoramiXExtension ? 0 : \
+ sprite.screen->myNum, \
+ syncEvents.playingEvents ? \
+ syncEvents.time.milliseconds : \
+ currentTime.milliseconds);
+
static Bool
XineramaSetCursorPosition(
int x,
@@ -462,13 +468,7 @@ XineramaCheckVirtualMotion(
if (qe)
{
sprite.hot.pScreen = qe->pScreen; /* should always be Screen 0 */
-#ifdef XEVIE
- xeviehot.x =
-#endif
sprite.hot.x = qe->event->u.keyButtonPointer.rootX;
-#ifdef XEVIE
- xeviehot.y =
-#endif
sprite.hot.y = qe->event->u.keyButtonPointer.rootY;
pWin = inputInfo.pointer->grab ? inputInfo.pointer->grab->confineTo :
NullWindow;
@@ -505,24 +505,12 @@ XineramaCheckVirtualMotion(
lims = *REGION_EXTENTS(sprite.screen, &sprite.Reg2);
if (sprite.hot.x < lims.x1)
-#ifdef XEVIE
- xeviehot.x =
-#endif
sprite.hot.x = lims.x1;
else if (sprite.hot.x >= lims.x2)
-#ifdef XEVIE
- xeviehot.x =
-#endif
sprite.hot.x = lims.x2 - 1;
if (sprite.hot.y < lims.y1)
-#ifdef XEVIE
- xeviehot.y =
-#endif
sprite.hot.y = lims.y1;
else if (sprite.hot.y >= lims.y2)
-#ifdef XEVIE
- xeviehot.y =
-#endif
sprite.hot.y = lims.y2 - 1;
if (REGION_NUM_RECTS(&sprite.Reg2) > 1)
@@ -535,6 +523,10 @@ XineramaCheckVirtualMotion(
qe->event->u.keyButtonPointer.rootY = sprite.hot.y;
}
}
+#ifdef XEVIE
+ xeviehot.x = sprite.hot.x;
+ xeviehot.y = sprite.hot.y;
+#endif
}
@@ -552,33 +544,15 @@ XineramaCheckMotion(xEvent *xE)
panoramiXdataPtr[0].x;
XE_KBPTR.rootY += panoramiXdataPtr[sprite.screen->myNum].y -
panoramiXdataPtr[0].y;
-#ifdef XEVIE
- xeviehot.x =
-#endif
sprite.hot.x = XE_KBPTR.rootX;
-#ifdef XEVIE
- xeviehot.y =
-#endif
sprite.hot.y = XE_KBPTR.rootY;
if (sprite.hot.x < sprite.physLimits.x1)
-#ifdef XEVIE
- xeviehot.x =
-#endif
sprite.hot.x = sprite.physLimits.x1;
else if (sprite.hot.x >= sprite.physLimits.x2)
-#ifdef XEVIE
- xeviehot.x =
-#endif
sprite.hot.x = sprite.physLimits.x2 - 1;
if (sprite.hot.y < sprite.physLimits.y1)
-#ifdef XEVIE
- xeviehot.y =
-#endif
sprite.hot.y = sprite.physLimits.y1;
else if (sprite.hot.y >= sprite.physLimits.y2)
-#ifdef XEVIE
- xeviehot.y =
-#endif
sprite.hot.y = sprite.physLimits.y2 - 1;
if (sprite.hotShape)
@@ -596,6 +570,8 @@ XineramaCheckMotion(xEvent *xE)
}
#ifdef XEVIE
+ xeviehot.x = sprite.hot.x;
+ xeviehot.y = sprite.hot.y;
xeviewin =
#endif
sprite.win = XYToWindow(sprite.hot.x, sprite.hot.y);
@@ -700,30 +676,6 @@ SetCriticalEvent(int event)
criticalEvents[event >> 3] |= 1 << (event & 7);
}
-static void
-SyntheticMotion(int x, int y)
-{
- xEvent xE;
-
-#ifdef PANORAMIX
- /* Translate back to the sprite screen since processInputProc
- will translate from sprite screen to screen 0 upon reentry
- to the DIX layer */
- if(!noPanoramiXExtension) {
- x += panoramiXdataPtr[0].x - panoramiXdataPtr[sprite.screen->myNum].x;
- y += panoramiXdataPtr[0].y - panoramiXdataPtr[sprite.screen->myNum].y;
- }
-#endif
- xE.u.keyButtonPointer.rootX = x;
- xE.u.keyButtonPointer.rootY = y;
- if (syncEvents.playingEvents)
- xE.u.keyButtonPointer.time = syncEvents.time.milliseconds;
- else
- xE.u.keyButtonPointer.time = currentTime.milliseconds;
- xE.u.u.type = MotionNotify;
- (*inputInfo.pointer->public.processInputProc)(&xE, inputInfo.pointer, 1);
-}
-
#ifdef SHAPE
static void
ConfineToShape(RegionPtr shape, int *px, int *py)
@@ -821,13 +773,7 @@ CheckVirtualMotion(
if (qe)
{
sprite.hot.pScreen = qe->pScreen;
-#ifdef XEVIE
- xeviehot.x =
-#endif
sprite.hot.x = qe->event->u.keyButtonPointer.rootX;
-#ifdef XEVIE
- xeviehot.y =
-#endif
sprite.hot.y = qe->event->u.keyButtonPointer.rootY;
pWin = inputInfo.pointer->grab ? inputInfo.pointer->grab->confineTo :
NullWindow;
@@ -839,31 +785,16 @@ CheckVirtualMotion(
if (sprite.hot.pScreen != pWin->drawable.pScreen)
{
sprite.hot.pScreen = pWin->drawable.pScreen;
-#ifdef XEVIE
- xeviehot.x = xeviehot.y = 0;
-#endif
sprite.hot.x = sprite.hot.y = 0;
}
lims = *REGION_EXTENTS(pWin->drawable.pScreen, &pWin->borderSize);
if (sprite.hot.x < lims.x1)
-#ifdef XEVIE
- xeviehot.x =
-#endif
sprite.hot.x = lims.x1;
else if (sprite.hot.x >= lims.x2)
-#ifdef XEVIE
- xeviehot.x =
-#endif
sprite.hot.x = lims.x2 - 1;
if (sprite.hot.y < lims.y1)
-#ifdef XEVIE
- xeviehot.y =
-#endif
sprite.hot.y = lims.y1;
else if (sprite.hot.y >= lims.y2)
-#ifdef XEVIE
- xeviehot.y =
-#endif
sprite.hot.y = lims.y2 - 1;
#ifdef SHAPE
if (wBoundingShape(pWin))
@@ -876,6 +807,10 @@ CheckVirtualMotion(
qe->event->u.keyButtonPointer.rootY = sprite.hot.y;
}
}
+#ifdef XEVIE
+ xeviehot.x = sprite.hot.x;
+ xeviehot.y = sprite.hot.y;
+#endif
ROOT = WindowTable[sprite.hot.pScreen->myNum];
}
@@ -1582,9 +1517,8 @@ TryClientEvents (ClientPtr client, xEvent *pEvents, int count, Mask mask,
int i;
int type;
-#ifdef DEBUG
- if (debug_events) ErrorF(
- "Event([%d, %d], mask=0x%x), client=%d",
+#ifdef DEBUG_EVENTS
+ ErrorF("Event([%d, %d], mask=0x%x), client=%d",
pEvents->u.u.type, pEvents->u.u.detail, mask, client->index);
#endif
if ((client) && (client != serverClient) && (!client->clientGone) &&
@@ -1600,9 +1534,9 @@ TryClientEvents (ClientPtr client, xEvent *pEvents, int count, Mask mask,
if (WID(inputInfo.pointer->valuator->motionHintWindow) ==
pEvents->u.keyButtonPointer.event)
{
-#ifdef DEBUG
- if (debug_events) ErrorF("\n");
- fprintf(stderr,"motionHintWindow == keyButtonPointer.event\n");
+#ifdef DEBUG_EVENTS
+ ErrorF("\n");
+ ErrorF("motionHintWindow == keyButtonPointer.event\n");
#endif
return 1; /* don't send, but pretend we did */
}
@@ -1640,15 +1574,15 @@ TryClientEvents (ClientPtr client, xEvent *pEvents, int count, Mask mask,
}
WriteEventsToClient(client, count, pEvents);
-#ifdef DEBUG
- if (debug_events) ErrorF( " delivered\n");
+#ifdef DEBUG_EVENTS
+ ErrorF( " delivered\n");
#endif
return 1;
}
else
{
-#ifdef DEBUG
- if (debug_events) ErrorF("\n");
+#ifdef DEBUG_EVENTS
+ ErrorF("\n");
#endif
return 0;
}
@@ -2057,38 +1991,24 @@ CheckMotion(xEvent *xE)
sprite.hot.pScreen = sprite.hotPhys.pScreen;
ROOT = WindowTable[sprite.hot.pScreen->myNum];
}
-#ifdef XEVIE
- xeviehot.x =
-#endif
sprite.hot.x = XE_KBPTR.rootX;
-#ifdef XEVIE
- xeviehot.y =
-#endif
sprite.hot.y = XE_KBPTR.rootY;
if (sprite.hot.x < sprite.physLimits.x1)
-#ifdef XEVIE
- xeviehot.x =
-#endif
sprite.hot.x = sprite.physLimits.x1;
else if (sprite.hot.x >= sprite.physLimits.x2)
-#ifdef XEVIE
- xeviehot.x =
-#endif
sprite.hot.x = sprite.physLimits.x2 - 1;
if (sprite.hot.y < sprite.physLimits.y1)
-#ifdef XEVIE
- xeviehot.y =
-#endif
sprite.hot.y = sprite.physLimits.y1;
else if (sprite.hot.y >= sprite.physLimits.y2)
-#ifdef XEVIE
- xeviehot.y =
-#endif
sprite.hot.y = sprite.physLimits.y2 - 1;
#ifdef SHAPE
if (sprite.hotShape)
ConfineToShape(sprite.hotShape, &sprite.hot.x, &sprite.hot.y);
#endif
+#ifdef XEVIE
+ xeviehot.x = sprite.hot.x;
+ xeviehot.y = sprite.hot.y;
+#endif
sprite.hotPhys = sprite.hot;
if ((sprite.hotPhys.x != XE_KBPTR.rootX) ||
(sprite.hotPhys.y != XE_KBPTR.rootY))
@@ -2308,16 +2228,15 @@ static int
XineramaWarpPointer(ClientPtr client)
{
WindowPtr dest = NULL;
- int x, y;
+ int x, y, rc;
REQUEST(xWarpPointerReq);
- if (stuff->dstWid != None)
- {
- dest = SecurityLookupWindow(stuff->dstWid, client, SecurityReadAccess);
- if (!dest)
- return BadWindow;
+ if (stuff->dstWid != None) {
+ rc = dixLookupWindow(&dest, stuff->dstWid, client, DixReadAccess);
+ if (rc != Success)
+ return rc;
}
x = sprite.hotPhys.x;
y = sprite.hotPhys.y;
@@ -2328,8 +2247,9 @@ XineramaWarpPointer(ClientPtr client)
XID winID = stuff->srcWid;
WindowPtr source;
- source = SecurityLookupWindow(winID, client, SecurityReadAccess);
- if (!source) return BadWindow;
+ rc = dixLookupWindow(&source, winID, client, DixReadAccess);
+ if (rc != Success)
+ return rc;
winX = source->drawable.x;
winY = source->drawable.y;
@@ -2381,7 +2301,7 @@ int
ProcWarpPointer(ClientPtr client)
{
WindowPtr dest = NULL;
- int x, y;
+ int x, y, rc;
ScreenPtr newScreen;
REQUEST(xWarpPointerReq);
@@ -2393,11 +2313,10 @@ ProcWarpPointer(ClientPtr client)
return XineramaWarpPointer(client);
#endif
- if (stuff->dstWid != None)
- {
- dest = SecurityLookupWindow(stuff->dstWid, client, SecurityReadAccess);
- if (!dest)
- return BadWindow;
+ if (stuff->dstWid != None) {
+ rc = dixLookupWindow(&dest, stuff->dstWid, client, DixReadAccess);
+ if (rc != Success)
+ return rc;
}
x = sprite.hotPhys.x;
y = sprite.hotPhys.y;
@@ -2408,8 +2327,9 @@ ProcWarpPointer(ClientPtr client)
XID winID = stuff->srcWid;
WindowPtr source;
- source = SecurityLookupWindow(winID, client, SecurityReadAccess);
- if (!source) return BadWindow;
+ rc = dixLookupWindow(&source, winID, client, DixReadAccess);
+ if (rc != Success)
+ return rc;
winX = source->drawable.x;
winY = source->drawable.y;
@@ -2541,10 +2461,8 @@ CheckPassiveGrabsOnWindow(
(grab->confineTo->realized &&
BorderSizeNotEmpty(grab->confineTo))))
{
-#ifdef XCSECURITY
- if (!SecurityCheckDeviceAccess(wClient(pWin), device, FALSE))
+ if (!XaceHook(XACE_DEVICE_ACCESS, wClient(pWin), device, FALSE))
return FALSE;
-#endif
#ifdef XKB
if (!noXkbExtension) {
XE_KBPTR.state &= 0x1f00;
@@ -2841,13 +2759,6 @@ drawable.id:0;
}
#endif
-#ifdef DEBUG
- if ((xkbDebugFlags&0x4)&&
- ((xE->u.u.type==KeyPress)||(xE->u.u.type==KeyRelease))) {
- ErrorF("CoreProcessKbdEvent: Key %d %s\n",key,
- (xE->u.u.type==KeyPress?"down":"up"));
- }
-#endif
switch (xE->u.u.type)
{
case KeyPress:
@@ -2911,6 +2822,8 @@ drawable.id:0;
DeliverFocusedEvent(keybd, xE, sprite.win, count);
if (deactivateGrab)
(*keybd->DeactivateGrab)(keybd);
+
+ XaceHook(XACE_KEY_AVAIL, xE, keybd, count);
}
#ifdef XKB
@@ -2928,13 +2841,12 @@ FixKeyState (register xEvent *xE, register DeviceIntPtr keybd)
key = xE->u.u.detail;
kptr = &keyc->down[key >> 3];
bit = 1 << (key & 7);
-#ifdef DEBUG
- if ((xkbDebugFlags&0x4)&&
- ((xE->u.u.type==KeyPress)||(xE->u.u.type==KeyRelease))) {
- ErrorF("FixKeyState: Key %d %s\n",key,
+
+ if (((xE->u.u.type==KeyPress)||(xE->u.u.type==KeyRelease))) {
+ DebugF("FixKeyState: Key %d %s\n",key,
(xE->u.u.type==KeyPress?"down":"up"));
}
-#endif
+
switch (xE->u.u.type)
{
case KeyPress:
@@ -3020,9 +2932,6 @@ ProcessPointerEvent (register xEvent *xE, register DeviceIntPtr mouse, int count
butc->buttonsDown++;
butc->motionMask = ButtonMotionMask;
*kptr |= bit;
-#if !defined(XFree86Server) || !defined(XINPUT)
- xE->u.u.detail = butc->map[key];
-#endif
if (xE->u.u.detail == 0)
return;
if (xE->u.u.detail <= 5)
@@ -3039,9 +2948,6 @@ ProcessPointerEvent (register xEvent *xE, register DeviceIntPtr mouse, int count
if (!butc->buttonsDown)
butc->motionMask = 0;
*kptr &= ~bit;
-#if !defined(XFree86Server) || !defined(XINPUT)
- xE->u.u.detail = butc->map[key];
-#endif
if (xE->u.u.detail == 0)
return;
if (xE->u.u.detail <= 5)
@@ -3168,12 +3074,7 @@ EventSelectForWindow(register WindowPtr pWin, register ClientPtr client, Mask ma
if (wClient (pWin) == client)
{
check = pWin->eventMask;
-#ifdef SGIMISC
- pWin->eventMask =
- (mask & ~SGIMiscSpecialDestroyMask) | (pWin->eventMask & SGIMiscSpecialDestroyMask);
-#else
pWin->eventMask = mask;
-#endif
}
else
{
@@ -3182,9 +3083,6 @@ EventSelectForWindow(register WindowPtr pWin, register ClientPtr client, Mask ma
if (SameClient(others, client))
{
check = others->mask;
-#ifdef SGIMISC
- mask = (mask & ~SGIMiscSpecialDestroyMask) | (others->mask & SGIMiscSpecialDestroyMask);
-#endif
if (mask == 0)
{
FreeResource(others->resource, RT_NONE);
@@ -3224,7 +3122,7 @@ EventSuppressForWindow(register WindowPtr pWin, register ClientPtr client,
{
register int i, free;
- if ((mask & ~PropagateMask) && !permitOldBugs)
+ if (mask & ~PropagateMask)
{
client->errorValue = mask;
return BadValue;
@@ -3349,17 +3247,13 @@ EnterLeaveEvent(
if ((type == EnterNotify) && (mask & KeymapStateMask))
{
xKeymapEvent ke;
-
-#ifdef XCSECURITY
ClientPtr client = grab ? rClient(grab)
: clients[CLIENT_ID(pWin->drawable.id)];
- if (!SecurityCheckDeviceAccess(client, keybd, FALSE))
- {
- bzero((char *)&ke.map[0], 31);
- }
+ if (XaceHook(XACE_DEVICE_ACCESS, client, keybd, FALSE))
+ memmove((char *)&ke.map[0], (char *)&keybd->key->down[1], 31);
else
-#endif
- memmove((char *)&ke.map[0], (char *)&keybd->key->down[1], 31);
+ bzero((char *)&ke.map[0], 31);
+
ke.type = KeymapNotify;
if (grab)
(void)TryClientEvents(rClient(grab), (xEvent *)&ke, 1, mask,
@@ -3445,15 +3339,12 @@ FocusEvent(DeviceIntPtr dev, int type, int mode, int detail, register WindowPtr
((pWin->eventMask | wOtherEventMasks(pWin)) & KeymapStateMask))
{
xKeymapEvent ke;
-#ifdef XCSECURITY
ClientPtr client = clients[CLIENT_ID(pWin->drawable.id)];
- if (!SecurityCheckDeviceAccess(client, dev, FALSE))
- {
- bzero((char *)&ke.map[0], 31);
- }
+ if (XaceHook(XACE_DEVICE_ACCESS, client, dev, FALSE))
+ memmove((char *)&ke.map[0], (char *)&dev->key->down[1], 31);
else
-#endif
- memmove((char *)&ke.map[0], (char *)&dev->key->down[1], 31);
+ bzero((char *)&ke.map[0], 31);
+
ke.type = KeymapNotify;
(void)DeliverEventsToWindow(pWin, (xEvent *)&ke, 1,
KeymapStateMask, NullGrab, 0);
@@ -3641,8 +3532,8 @@ SetInputFocus(
Bool followOK)
{
register FocusClassPtr focus;
- register WindowPtr focusWin;
- int mode;
+ WindowPtr focusWin;
+ int mode, rc;
TimeStamp time;
UpdateCurrentTime();
@@ -3659,14 +3550,12 @@ SetInputFocus(
focusWin = (WindowPtr)(long)focusID;
else if ((focusID == FollowKeyboard) && followOK)
focusWin = inputInfo.keyboard->focus->win;
- else if (!(focusWin = SecurityLookupWindow(focusID, client,
- SecurityReadAccess)))
- return BadWindow;
- else
- {
+ else {
+ rc = dixLookupWindow(&focusWin, focusID, client, DixReadAccess);
+ if (rc != Success)
+ return rc;
/* It is a match error to try to set the input focus to an
unviewable window. */
-
if(!focusWin->realized)
return(BadMatch);
}
@@ -3716,10 +3605,10 @@ ProcSetInputFocus(client)
REQUEST(xSetInputFocusReq);
REQUEST_SIZE_MATCH(xSetInputFocusReq);
-#ifdef XCSECURITY
- if (!SecurityCheckDeviceAccess(client, inputInfo.keyboard, TRUE))
+
+ if (!XaceHook(XACE_DEVICE_ACCESS, client, inputInfo.keyboard, TRUE))
return Success;
-#endif
+
return SetInputFocus(client, inputInfo.keyboard, stuff->focus,
stuff->revertTo, stuff->time, FALSE);
}
@@ -3755,6 +3644,7 @@ ProcGrabPointer(ClientPtr client)
CursorPtr cursor, oldCursor;
REQUEST(xGrabPointerReq);
TimeStamp time;
+ int rc;
REQUEST_SIZE_MATCH(xGrabPointerReq);
UpdateCurrentTime();
@@ -3775,29 +3665,29 @@ ProcGrabPointer(ClientPtr client)
client->errorValue = stuff->ownerEvents;
return BadValue;
}
- if ((stuff->eventMask & ~PointerGrabMask) && !permitOldBugs)
+ if (stuff->eventMask & ~PointerGrabMask)
{
client->errorValue = stuff->eventMask;
return BadValue;
}
- pWin = SecurityLookupWindow(stuff->grabWindow, client, SecurityReadAccess);
- if (!pWin)
- return BadWindow;
+ rc = dixLookupWindow(&pWin, stuff->grabWindow, client, DixReadAccess);
+ if (rc != Success)
+ return rc;
if (stuff->confineTo == None)
confineTo = NullWindow;
else
{
- confineTo = SecurityLookupWindow(stuff->confineTo, client,
- SecurityReadAccess);
- if (!confineTo)
- return BadWindow;
+ rc = dixLookupWindow(&confineTo, stuff->confineTo, client,
+ DixReadAccess);
+ if (rc != Success)
+ return rc;
}
if (stuff->cursor == None)
cursor = NullCursor;
else
{
cursor = (CursorPtr)SecurityLookupIDByType(client, stuff->cursor,
- RT_CURSOR, SecurityReadAccess);
+ RT_CURSOR, DixReadAccess);
if (!cursor)
{
client->errorValue = stuff->cursor;
@@ -3861,7 +3751,7 @@ ProcChangeActivePointerGrab(ClientPtr client)
TimeStamp time;
REQUEST_SIZE_MATCH(xChangeActivePointerGrabReq);
- if ((stuff->eventMask & ~PointerGrabMask) && !permitOldBugs)
+ if (stuff->eventMask & ~PointerGrabMask)
{
client->errorValue = stuff->eventMask;
return BadValue;
@@ -3871,7 +3761,7 @@ ProcChangeActivePointerGrab(ClientPtr client)
else
{
newCursor = (CursorPtr)SecurityLookupIDByType(client, stuff->cursor,
- RT_CURSOR, SecurityReadAccess);
+ RT_CURSOR, DixReadAccess);
if (!newCursor)
{
client->errorValue = stuff->cursor;
@@ -3921,9 +3811,10 @@ GrabDevice(register ClientPtr client, register DeviceIntPtr dev,
unsigned this_mode, unsigned other_mode, Window grabWindow,
unsigned ownerEvents, Time ctime, Mask mask, CARD8 *status)
{
- register WindowPtr pWin;
+ WindowPtr pWin;
register GrabPtr grab;
TimeStamp time;
+ int rc;
UpdateCurrentTime();
if ((this_mode != GrabModeSync) && (this_mode != GrabModeAsync))
@@ -3941,9 +3832,9 @@ GrabDevice(register ClientPtr client, register DeviceIntPtr dev,
client->errorValue = ownerEvents;
return BadValue;
}
- pWin = SecurityLookupWindow(grabWindow, client, SecurityReadAccess);
- if (!pWin)
- return BadWindow;
+ rc = dixLookupWindow(&pWin, grabWindow, client, DixReadAccess);
+ if (rc != Success)
+ return rc;
time = ClientTimeToServerTime(ctime);
grab = dev->grab;
if (grab && !SameClient(grab, client))
@@ -3981,18 +3872,17 @@ ProcGrabKeyboard(ClientPtr client)
int result;
REQUEST_SIZE_MATCH(xGrabKeyboardReq);
-#ifdef XCSECURITY
- if (!SecurityCheckDeviceAccess(client, inputInfo.keyboard, TRUE))
- {
+
+ if (XaceHook(XACE_DEVICE_ACCESS, client, inputInfo.keyboard, TRUE))
+ result = GrabDevice(client, inputInfo.keyboard, stuff->keyboardMode,
+ stuff->pointerMode, stuff->grabWindow,
+ stuff->ownerEvents, stuff->time,
+ KeyPressMask | KeyReleaseMask, &rep.status);
+ else {
result = Success;
rep.status = AlreadyGrabbed;
}
- else
-#endif
- result = GrabDevice(client, inputInfo.keyboard, stuff->keyboardMode,
- stuff->pointerMode, stuff->grabWindow,
- stuff->ownerEvents, stuff->time,
- KeyPressMask | KeyReleaseMask, &rep.status);
+
if (result != Success)
return result;
rep.type = X_Reply;
@@ -4028,11 +3918,12 @@ ProcQueryPointer(ClientPtr client)
WindowPtr pWin, t;
REQUEST(xResourceReq);
DeviceIntPtr mouse = inputInfo.pointer;
+ int rc;
REQUEST_SIZE_MATCH(xResourceReq);
- pWin = SecurityLookupWindow(stuff->id, client, SecurityReadAccess);
- if (!pWin)
- return BadWindow;
+ rc = dixLookupWindow(&pWin, stuff->id, client, DixReadAccess);
+ if (rc != Success)
+ return rc;
if (mouse->valuator->motionHintWindow)
MaybeStopHint(mouse, client);
rep.type = X_Reply;
@@ -4162,13 +4053,12 @@ ProcSendEvent(ClientPtr client)
if (stuff->event.u.u.type == ClientMessage &&
stuff->event.u.u.detail != 8 &&
stuff->event.u.u.detail != 16 &&
- stuff->event.u.u.detail != 32 &&
- !permitOldBugs)
+ stuff->event.u.u.detail != 32)
{
client->errorValue = stuff->event.u.u.detail;
return BadValue;
}
- if ((stuff->eventMask & ~AllEventMasks) && !permitOldBugs)
+ if (stuff->eventMask & ~AllEventMasks)
{
client->errorValue = stuff->eventMask;
return BadValue;
@@ -4197,8 +4087,8 @@ ProcSendEvent(ClientPtr client)
effectiveFocus = pWin = inputFocus;
}
else
- pWin = SecurityLookupWindow(stuff->destination, client,
- SecurityReadAccess);
+ dixLookupWindow(&pWin, stuff->destination, client, DixReadAccess);
+
if (!pWin)
return BadWindow;
if ((stuff->propagate != xFalse) && (stuff->propagate != xTrue))
@@ -4234,11 +4124,12 @@ ProcUngrabKey(ClientPtr client)
WindowPtr pWin;
GrabRec tempGrab;
DeviceIntPtr keybd = inputInfo.keyboard;
+ int rc;
REQUEST_SIZE_MATCH(xUngrabKeyReq);
- pWin = SecurityLookupWindow(stuff->grabWindow, client, SecurityReadAccess);
- if (!pWin)
- return BadWindow;
+ rc = dixLookupWindow(&pWin, stuff->grabWindow, client, DixReadAccess);
+ if (rc != Success)
+ return rc;
if (((stuff->key > keybd->key->curKeySyms.maxKeyCode) ||
(stuff->key < keybd->key->curKeySyms.minKeyCode))
@@ -4275,6 +4166,7 @@ ProcGrabKey(ClientPtr client)
REQUEST(xGrabKeyReq);
GrabPtr grab;
DeviceIntPtr keybd = inputInfo.keyboard;
+ int rc;
REQUEST_SIZE_MATCH(xGrabKeyReq);
if ((stuff->ownerEvents != xTrue) && (stuff->ownerEvents != xFalse))
@@ -4307,9 +4199,9 @@ ProcGrabKey(ClientPtr client)
client->errorValue = stuff->modifiers;
return BadValue;
}
- pWin = SecurityLookupWindow(stuff->grabWindow, client, SecurityReadAccess);
- if (!pWin)
- return BadWindow;
+ rc = dixLookupWindow(&pWin, stuff->grabWindow, client, DixReadAccess);
+ if (rc != Success)
+ return rc;
grab = CreateGrab(client->index, keybd, pWin,
(Mask)(KeyPressMask | KeyReleaseMask), (Bool)stuff->ownerEvents,
@@ -4329,6 +4221,7 @@ ProcGrabButton(ClientPtr client)
REQUEST(xGrabButtonReq);
CursorPtr cursor;
GrabPtr grab;
+ int rc;
REQUEST_SIZE_MATCH(xGrabButtonReq);
if ((stuff->pointerMode != GrabModeSync) &&
@@ -4359,23 +4252,23 @@ ProcGrabButton(ClientPtr client)
client->errorValue = stuff->eventMask;
return BadValue;
}
- pWin = SecurityLookupWindow(stuff->grabWindow, client, SecurityReadAccess);
- if (!pWin)
- return BadWindow;
+ rc = dixLookupWindow(&pWin, stuff->grabWindow, client, DixReadAccess);
+ if (rc != Success)
+ return rc;
if (stuff->confineTo == None)
confineTo = NullWindow;
else {
- confineTo = SecurityLookupWindow(stuff->confineTo, client,
- SecurityReadAccess);
- if (!confineTo)
- return BadWindow;
+ rc = dixLookupWindow(&confineTo, stuff->confineTo, client,
+ DixReadAccess);
+ if (rc != Success)
+ return rc;
}
if (stuff->cursor == None)
cursor = NullCursor;
else
{
cursor = (CursorPtr)SecurityLookupIDByType(client, stuff->cursor,
- RT_CURSOR, SecurityReadAccess);
+ RT_CURSOR, DixReadAccess);
if (!cursor)
{
client->errorValue = stuff->cursor;
@@ -4385,12 +4278,10 @@ ProcGrabButton(ClientPtr client)
grab = CreateGrab(client->index, inputInfo.pointer, pWin,
- permitOldBugs ? (Mask)(stuff->eventMask |
- ButtonPressMask | ButtonReleaseMask) :
- (Mask)stuff->eventMask,
- (Bool)stuff->ownerEvents, (Bool) stuff->keyboardMode,
- (Bool)stuff->pointerMode, inputInfo.keyboard, stuff->modifiers,
- ButtonPress, stuff->button, confineTo, cursor);
+ (Mask)stuff->eventMask, (Bool)stuff->ownerEvents,
+ (Bool) stuff->keyboardMode, (Bool)stuff->pointerMode,
+ inputInfo.keyboard, stuff->modifiers, ButtonPress,
+ stuff->button, confineTo, cursor);
if (!grab)
return BadAlloc;
return AddPassiveGrabToList(grab);
@@ -4402,6 +4293,7 @@ ProcUngrabButton(ClientPtr client)
REQUEST(xUngrabButtonReq);
WindowPtr pWin;
GrabRec tempGrab;
+ int rc;
REQUEST_SIZE_MATCH(xUngrabButtonReq);
if ((stuff->modifiers != AnyModifier) &&
@@ -4410,9 +4302,9 @@ ProcUngrabButton(ClientPtr client)
client->errorValue = stuff->modifiers;
return BadValue;
}
- pWin = SecurityLookupWindow(stuff->grabWindow, client, SecurityReadAccess);
- if (!pWin)
- return BadWindow;
+ rc = dixLookupWindow(&pWin, stuff->grabWindow, client, DixReadAccess);
+ if (rc != Success)
+ return rc;
tempGrab.resource = client->clientAsMask;
tempGrab.device = inputInfo.pointer;
tempGrab.window = pWin;
@@ -4564,7 +4456,7 @@ ProcRecolorCursor(ClientPtr client)
REQUEST_SIZE_MATCH(xRecolorCursorReq);
pCursor = (CursorPtr)SecurityLookupIDByType(client, stuff->cursor,
- RT_CURSOR, SecurityWriteAccess);
+ RT_CURSOR, DixWriteAccess);
if ( !pCursor)
{
client->errorValue = stuff->cursor;
@@ -4650,6 +4542,14 @@ WriteEventsToClient(ClientPtr pClient, int count, xEvent *events)
eventinfo.count = count;
CallCallbacks(&EventCallback, (pointer)&eventinfo);
}
+#ifdef XSERVER_DTRACE
+ if (XSERVER_SEND_EVENT_ENABLED()) {
+ for (i = 0; i < count; i++)
+ {
+ XSERVER_SEND_EVENT(pClient->index, events[i].u.u.type, &events[i]);
+ }
+ }
+#endif
if(pClient->swapped)
{
for(i = 0; i < count; i++)
diff --git a/dix/extension.c b/dix/extension.c
index f6f38fcf3..29cae8676 100644
--- a/dix/extension.c
+++ b/dix/extension.c
@@ -1,4 +1,3 @@
-/* $XFree86: xc/programs/Xserver/dix/extension.c,v 3.11 2001/12/14 19:59:31 dawes Exp $ */
/***********************************************************
Copyright 1987, 1998 The Open Group
@@ -45,7 +44,6 @@ ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
SOFTWARE.
******************************************************************/
-/* $Xorg: extension.c,v 1.4 2001/02/09 02:04:40 xorgcvs Exp $ */
#ifdef HAVE_DIX_CONFIG_H
#include <dix-config.h>
@@ -61,10 +59,7 @@ SOFTWARE.
#include "gcstruct.h"
#include "scrnintstr.h"
#include "dispatch.h"
-#ifdef XCSECURITY
-#define _SECURITY_SERVER
-#include <X11/extensions/security.h>
-#endif
+#include "xace.h"
#define EXTENSION_BASE 128
#define EXTENSION_EVENT_BASE 64
@@ -79,6 +74,39 @@ int lastEvent = EXTENSION_EVENT_BASE;
static int lastError = FirstExtensionError;
static unsigned int NumExtensions = 0;
+extern int extensionPrivateLen;
+extern unsigned *extensionPrivateSizes;
+extern unsigned totalExtensionSize;
+
+static void
+InitExtensionPrivates(ExtensionEntry *ext)
+{
+ register char *ptr;
+ DevUnion *ppriv;
+ register unsigned *sizes;
+ register unsigned size;
+ register int i;
+
+ if (totalExtensionSize == sizeof(ExtensionEntry))
+ ppriv = (DevUnion *)NULL;
+ else
+ ppriv = (DevUnion *)(ext + 1);
+
+ ext->devPrivates = ppriv;
+ sizes = extensionPrivateSizes;
+ ptr = (char *)(ppriv + extensionPrivateLen);
+ for (i = extensionPrivateLen; --i >= 0; ppriv++, sizes++)
+ {
+ if ( (size = *sizes) )
+ {
+ ppriv->ptr = (pointer)ptr;
+ ptr += size;
+ }
+ else
+ ppriv->ptr = (pointer)NULL;
+ }
+}
+
_X_EXPORT ExtensionEntry *
AddExtension(char *name, int NumEvents, int NumErrors,
int (*MainProc)(ClientPtr c1),
@@ -95,9 +123,11 @@ AddExtension(char *name, int NumEvents, int NumErrors,
(unsigned)(lastError + NumErrors > LAST_ERROR))
return((ExtensionEntry *) NULL);
- ext = (ExtensionEntry *) xalloc(sizeof(ExtensionEntry));
+ ext = (ExtensionEntry *) xalloc(totalExtensionSize);
if (!ext)
return((ExtensionEntry *) NULL);
+ bzero(ext, totalExtensionSize);
+ InitExtensionPrivates(ext);
ext->name = (char *)xalloc(strlen(name) + 1);
ext->num_aliases = 0;
ext->aliases = (char **)NULL;
@@ -147,9 +177,6 @@ AddExtension(char *name, int NumEvents, int NumErrors,
ext->errorBase = 0;
ext->errorLast = 0;
}
-#ifdef XCSECURITY
- ext->secure = FALSE;
-#endif
return(ext);
}
@@ -210,27 +237,26 @@ CheckExtension(const char *extname)
return NULL;
}
+/*
+ * Added as part of Xace.
+ */
+ExtensionEntry *
+GetExtensionEntry(int major)
+{
+ if (major < EXTENSION_BASE)
+ return NULL;
+ major -= EXTENSION_BASE;
+ if (major >= NumExtensions)
+ return NULL;
+ return extensions[major];
+}
+
_X_EXPORT void
DeclareExtensionSecurity(char *extname, Bool secure)
{
-#ifdef XCSECURITY
int i = FindExtension(extname, strlen(extname));
if (i >= 0)
- {
- int majorop = extensions[i]->base;
- extensions[i]->secure = secure;
- if (secure)
- {
- UntrustedProcVector[majorop] = ProcVector[majorop];
- SwappedUntrustedProcVector[majorop] = SwappedProcVector[majorop];
- }
- else
- {
- UntrustedProcVector[majorop] = ProcBadRequest;
- SwappedUntrustedProcVector[majorop] = ProcBadRequest;
- }
- }
-#endif
+ XaceHook(XACE_DECLARE_EXT_SECURE, extensions[i], secure);
}
_X_EXPORT unsigned short
@@ -306,13 +332,7 @@ ProcQueryExtension(ClientPtr client)
else
{
i = FindExtension((char *)&stuff[1], stuff->nbytes);
- if (i < 0
-#ifdef XCSECURITY
- /* don't show insecure extensions to untrusted clients */
- || (client->trustLevel == XSecurityClientUntrusted &&
- !extensions[i]->secure)
-#endif
- )
+ if (i < 0 || !XaceHook(XACE_EXT_ACCESS, client, extensions[i]))
reply.present = xFalse;
else
{
@@ -347,12 +367,10 @@ ProcListExtensions(ClientPtr client)
for (i=0; i<NumExtensions; i++)
{
-#ifdef XCSECURITY
- /* don't show insecure extensions to untrusted clients */
- if (client->trustLevel == XSecurityClientUntrusted &&
- !extensions[i]->secure)
+ /* call callbacks to find out whether to show extension */
+ if (!XaceHook(XACE_EXT_ACCESS, client, extensions[i]))
continue;
-#endif
+
total_length += strlen(extensions[i]->name) + 1;
reply.nExtensions += 1 + extensions[i]->num_aliases;
for (j = extensions[i]->num_aliases; --j >= 0;)
@@ -365,11 +383,9 @@ ProcListExtensions(ClientPtr client)
for (i=0; i<NumExtensions; i++)
{
int len;
-#ifdef XCSECURITY
- if (client->trustLevel == XSecurityClientUntrusted &&
- !extensions[i]->secure)
+ if (!XaceHook(XACE_EXT_ACCESS, client, extensions[i]))
continue;
-#endif
+
*bufptr++ = len = strlen(extensions[i]->name);
memmove(bufptr, extensions[i]->name, len);
bufptr += len;
@@ -455,3 +471,17 @@ RegisterScreenProc(char *name, ScreenPtr pScreen, ExtensionLookupProc proc)
}
return TRUE;
}
+
+#ifdef XSERVER_DTRACE
+void LoadExtensionNames(char **RequestNames) {
+ int i;
+
+ for (i=0; i<NumExtensions; i++) {
+ int r = extensions[i]->base;
+
+ if (RequestNames[r] == NULL) {
+ RequestNames[r] = strdup(extensions[i]->name);
+ }
+ }
+}
+#endif
diff --git a/dix/ffs.c b/dix/ffs.c
index 8d0954689..b75657d29 100644
--- a/dix/ffs.c
+++ b/dix/ffs.c
@@ -1,4 +1,3 @@
-/* $Xorg: ffs.c,v 1.4 2001/02/09 02:04:40 xorgcvs Exp $ */
/*
Copyright 1996, 1998 The Open Group
@@ -27,10 +26,18 @@ The Open Group.
*/
+#ifdef HAVE_DIX_CONFIG_H
+#include <dix-config.h>
+#endif
+
+#include "dix.h"
+
int
ffs(int i)
{
int j;
+ if (i == 0)
+ return 0;
for (j = 1; (i & 1) == 0; j++)
i >>= 1;
return j;
diff --git a/dix/gc.c b/dix/gc.c
index 19036ddf3..5106fcda2 100644
--- a/dix/gc.c
+++ b/dix/gc.c
@@ -1,4 +1,3 @@
-/* $XFree86: xc/programs/Xserver/dix/gc.c,v 3.9 2001/12/14 19:59:32 dawes Exp $ */
/***********************************************************
Copyright 1987, 1998 The Open Group
@@ -46,7 +45,6 @@ SOFTWARE.
******************************************************************/
-/* $Xorg: gc.c,v 1.4 2001/02/09 02:04:40 xorgcvs Exp $ */
#ifdef HAVE_DIX_CONFIG_H
#include <dix-config.h>
@@ -273,7 +271,7 @@ dixChangeGC(ClientPtr client, register GC *pGC, register BITS32 mask, CARD32 *pC
{
NEXTVAL(XID, newpix);
pPixmap = (PixmapPtr)SecurityLookupIDByType(client,
- newpix, RT_PIXMAP, SecurityReadAccess);
+ newpix, RT_PIXMAP, DixReadAccess);
}
if (pPixmap)
{
@@ -309,7 +307,7 @@ dixChangeGC(ClientPtr client, register GC *pGC, register BITS32 mask, CARD32 *pC
{
NEXTVAL(XID, newstipple)
pPixmap = (PixmapPtr)SecurityLookupIDByType(client,
- newstipple, RT_PIXMAP, SecurityReadAccess);
+ newstipple, RT_PIXMAP, DixReadAccess);
}
if (pPixmap)
{
@@ -351,7 +349,7 @@ dixChangeGC(ClientPtr client, register GC *pGC, register BITS32 mask, CARD32 *pC
{
NEXTVAL(XID, newfont)
pFont = (FontPtr)SecurityLookupIDByType(client, newfont,
- RT_FONT, SecurityReadAccess);
+ RT_FONT, DixReadAccess);
}
if (pFont)
{
@@ -418,7 +416,7 @@ dixChangeGC(ClientPtr client, register GC *pGC, register BITS32 mask, CARD32 *pC
}
else
pPixmap = (PixmapPtr)SecurityLookupIDByType(client,
- pid, RT_PIXMAP, SecurityReadAccess);
+ pid, RT_PIXMAP, DixReadAccess);
}
if (pPixmap)
diff --git a/dix/getevents.c b/dix/getevents.c
new file mode 100644
index 000000000..0150d6658
--- /dev/null
+++ b/dix/getevents.c
@@ -0,0 +1,785 @@
+/*
+ * Copyright © 2006 Nokia Corporation
+ * Copyright © 2006 Daniel Stone
+ *
+ * Permission to use, copy, modify, distribute, and sell this software and
+ * its documentation for any purpose is hereby granted without fee,
+ * provided that the above copyright notice appear in all copies and that
+ * both that this copyright notice and this permission notice appear in
+ * supporting electronic 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 COPYRIGHT HOLDERS OR AUTHORS BE LIABLE FOR ANY
+ * CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION 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: Daniel Stone <daniel@fooishbar.org>
+ */
+
+#ifdef HAVE_DIX_CONFIG_H
+#include <dix-config.h>
+#endif
+
+#include <X11/X.h>
+#include <X11/keysym.h>
+#define NEED_EVENTS
+#define NEED_REPLIES
+#include <X11/Xproto.h>
+
+#include "misc.h"
+#include "resource.h"
+#include "inputstr.h"
+#include "scrnintstr.h"
+#include "cursorstr.h"
+#include "dixstruct.h"
+#include "globals.h"
+#include "dixevents.h"
+#include "mipointer.h"
+
+#ifdef XKB
+#include <X11/extensions/XKBproto.h>
+#include <X11/extensions/XKBsrv.h>
+extern Bool XkbCopyKeymap(XkbDescPtr src, XkbDescPtr dst, Bool sendNotifies);
+#endif
+
+#ifdef PANORAMIX
+#include "panoramiX.h"
+#include "panoramiXsrv.h"
+#endif
+
+#include <X11/extensions/XI.h>
+#include <X11/extensions/XIproto.h>
+#include "exglobals.h"
+#include "exevents.h"
+#include "exglobals.h"
+#include "extnsionst.h"
+
+
+/* Maximum number of valuators, divided by six, rounded up, to get number
+ * of events. */
+#define MAX_VALUATOR_EVENTS 6
+
+/* Number of motion history events to store. */
+#define MOTION_HISTORY_SIZE 256
+
+
+/**
+ * Pick some arbitrary size for Xi motion history.
+ */
+_X_EXPORT int
+GetMotionHistorySize()
+{
+ return MOTION_HISTORY_SIZE;
+}
+
+
+/**
+ * Allocate the motion history buffer.
+ */
+_X_EXPORT void
+AllocateMotionHistory(DeviceIntPtr pDev)
+{
+ if (pDev->valuator->motion)
+ xfree(pDev->valuator->motion);
+
+ if (pDev->valuator->numMotionEvents < 1)
+ return;
+
+ pDev->valuator->motion = xalloc(((sizeof(INT32) * pDev->valuator->numAxes) +
+ sizeof(Time)) *
+ pDev->valuator->numMotionEvents);
+ pDev->valuator->first_motion = 0;
+ pDev->valuator->last_motion = 0;
+}
+
+
+/**
+ * Dump the motion history between start and stop into the supplied buffer.
+ * Only records the event for a given screen in theory, but in practice, we
+ * sort of ignore this.
+ */
+_X_EXPORT int
+GetMotionHistory(DeviceIntPtr pDev, xTimecoord *buff, unsigned long start,
+ unsigned long stop, ScreenPtr pScreen)
+{
+ char *ibuff = NULL, *obuff = (char *) buff;
+ int i = 0, ret = 0;
+ Time current;
+ /* The size of a single motion event. */
+ int size = (sizeof(INT32) * pDev->valuator->numAxes) + sizeof(Time);
+
+ if (!pDev->valuator || !pDev->valuator->numMotionEvents)
+ return 0;
+
+ for (i = pDev->valuator->first_motion;
+ i != pDev->valuator->last_motion;
+ i = (i + 1) % pDev->valuator->numMotionEvents) {
+ /* We index the input buffer by which element we're accessing, which
+ * is not monotonic, and the output buffer by how many events we've
+ * written so far. */
+ ibuff = (char *) pDev->valuator->motion + (i * size);
+ memcpy(&current, ibuff, sizeof(Time));
+
+ if (current > stop) {
+ return ret;
+ }
+ else if (current >= start) {
+ memcpy(obuff, ibuff, size);
+ obuff += size;
+ ret++;
+ }
+ }
+
+ return ret;
+}
+
+
+/**
+ * Update the motion history for a specific device, with the list of
+ * valuators.
+ */
+static void
+updateMotionHistory(DeviceIntPtr pDev, CARD32 ms, int first_valuator,
+ int num_valuators, int *valuators)
+{
+ char *buff = (char *) pDev->valuator->motion;
+
+ if (!pDev->valuator->numMotionEvents)
+ return;
+
+ buff += ((sizeof(INT32) * pDev->valuator->numAxes) + sizeof(CARD32)) *
+ pDev->valuator->last_motion;
+ memcpy(buff, &ms, sizeof(Time));
+
+ buff += sizeof(Time);
+ bzero(buff, sizeof(INT32) * pDev->valuator->numAxes);
+
+ buff += sizeof(INT32) * first_valuator;
+ memcpy(buff, valuators, sizeof(INT32) * num_valuators);
+
+ pDev->valuator->last_motion = (pDev->valuator->last_motion + 1) %
+ pDev->valuator->numMotionEvents;
+
+ /* If we're wrapping around, just keep the circular buffer going. */
+ if (pDev->valuator->first_motion == pDev->valuator->last_motion)
+ pDev->valuator->first_motion = (pDev->valuator->first_motion + 1) %
+ pDev->valuator->numMotionEvents;
+
+ return;
+}
+
+
+/**
+ * Returns the maximum number of events GetKeyboardEvents,
+ * GetKeyboardValuatorEvents, and GetPointerEvents will ever return.
+ *
+ * Should be used in DIX as:
+ * xEvent *events = xcalloc(sizeof(xEvent), GetMaximumEventsNum());
+ */
+_X_EXPORT int
+GetMaximumEventsNum() {
+ /* Two base events -- core and device, plus valuator events. Multiply
+ * by two if we're doing key repeats. */
+ int ret = 2 + MAX_VALUATOR_EVENTS;
+
+#ifdef XKB
+ if (noXkbExtension)
+#endif
+ ret *= 2;
+
+ return ret;
+}
+
+
+/* Originally a part of xf86PostMotionEvent; modifies valuators
+ * in-place. */
+static void
+acceleratePointer(DeviceIntPtr pDev, int first_valuator, int num_valuators,
+ int *valuators)
+{
+ float mult = 0.0;
+ int dx = 0, dy = 0;
+ int *px = NULL, *py = NULL;
+
+ if (!num_valuators || !valuators)
+ return;
+
+ if (first_valuator == 0) {
+ dx = valuators[0];
+ px = &valuators[0];
+ }
+ if (first_valuator <= 1 && num_valuators >= (2 - first_valuator)) {
+ dy = valuators[1 - first_valuator];
+ py = &valuators[1 - first_valuator];
+ }
+
+ if (!dx && !dy)
+ return;
+
+ if (pDev->ptrfeed && pDev->ptrfeed->ctrl.num) {
+ /* modeled from xf86Events.c */
+ if (pDev->ptrfeed->ctrl.threshold) {
+ if ((abs(dx) + abs(dy)) >= pDev->ptrfeed->ctrl.threshold) {
+ pDev->valuator->dxremaind = ((float)dx *
+ (float)(pDev->ptrfeed->ctrl.num)) /
+ (float)(pDev->ptrfeed->ctrl.den) +
+ pDev->valuator->dxremaind;
+ if (px) {
+ *px = (int)pDev->valuator->dxremaind;
+ pDev->valuator->dxremaind = pDev->valuator->dxremaind -
+ (float)(*px);
+ }
+
+ pDev->valuator->dyremaind = ((float)dy *
+ (float)(pDev->ptrfeed->ctrl.num)) /
+ (float)(pDev->ptrfeed->ctrl.den) +
+ pDev->valuator->dyremaind;
+ if (py) {
+ *py = (int)pDev->valuator->dyremaind;
+ pDev->valuator->dyremaind = pDev->valuator->dyremaind -
+ (float)(*py);
+ }
+ }
+ }
+ else {
+ mult = pow((float)(dx * dx + dy * dy),
+ ((float)(pDev->ptrfeed->ctrl.num) /
+ (float)(pDev->ptrfeed->ctrl.den) - 1.0) /
+ 2.0) / 2.0;
+ if (dx) {
+ pDev->valuator->dxremaind = mult * (float)dx +
+ pDev->valuator->dxremaind;
+ *px = (int)pDev->valuator->dxremaind;
+ pDev->valuator->dxremaind = pDev->valuator->dxremaind -
+ (float)(*px);
+ }
+ if (dy) {
+ pDev->valuator->dyremaind = mult * (float)dy +
+ pDev->valuator->dyremaind;
+ *py = (int)pDev->valuator->dyremaind;
+ pDev->valuator->dyremaind = pDev->valuator->dyremaind -
+ (float)(*py);
+ }
+ }
+ }
+}
+
+
+/**
+ * Clip an axis to its bounds, which are declared in the call to
+ * InitValuatorAxisClassStruct.
+ */
+static void
+clipAxis(DeviceIntPtr pDev, int axisNum, int *val)
+{
+ AxisInfoPtr axes = pDev->valuator->axes + axisNum;
+
+ if (*val < axes->min_value)
+ *val = axes->min_value;
+ if (axes->max_value >= 0 && *val > axes->max_value)
+ *val = axes->max_value;
+}
+
+/**
+ * Clip every axis in the list of valuators to its bounds.
+ */
+static void
+clipValuators(DeviceIntPtr pDev, int first_valuator, int num_valuators,
+ int *valuators)
+{
+ AxisInfoPtr axes = pDev->valuator->axes + first_valuator;
+ int i;
+
+ for (i = 0; i < num_valuators; i++, axes++)
+ clipAxis(pDev, i + first_valuator, &(valuators[i]));
+}
+
+
+/**
+ * Fills events with valuator events for pDev, as given by the other
+ * parameters.
+ *
+ * FIXME: Need to fix ValuatorClassRec to store all the valuators as
+ * last posted, not just x and y; otherwise relative non-x/y
+ * valuators, though a very narrow use case, will be broken.
+ */
+static xEvent *
+getValuatorEvents(xEvent *events, DeviceIntPtr pDev, int first_valuator,
+ int num_valuators, int *valuators) {
+ deviceValuator *xv = (deviceValuator *) events;
+ int i = 0, final_valuator = first_valuator + num_valuators;
+
+ for (i = first_valuator; i < final_valuator; i += 6, xv++, events++) {
+ xv->type = DeviceValuator;
+ xv->first_valuator = i;
+ xv->num_valuators = num_valuators;
+ xv->deviceid = pDev->id;
+ switch (final_valuator - i) {
+ case 6:
+ xv->valuator5 = valuators[i + 5];
+ case 5:
+ xv->valuator4 = valuators[i + 4];
+ case 4:
+ xv->valuator3 = valuators[i + 3];
+ case 3:
+ xv->valuator2 = valuators[i + 2];
+ case 2:
+ xv->valuator1 = valuators[i + 1];
+ case 1:
+ xv->valuator0 = valuators[i];
+ }
+
+ if (i + 6 < final_valuator)
+ xv->deviceid |= MORE_EVENTS;
+ }
+
+ return events;
+}
+
+
+/**
+ * Convenience wrapper around GetKeyboardValuatorEvents, that takes no
+ * valuators.
+ */
+_X_EXPORT int
+GetKeyboardEvents(xEvent *events, DeviceIntPtr pDev, int type, int key_code) {
+ return GetKeyboardValuatorEvents(events, pDev, type, key_code, 0, 0, NULL);
+}
+
+
+/**
+ * Returns a set of keyboard events for KeyPress/KeyRelease, optionally
+ * also with valuator events. Handles Xi and XKB.
+ *
+ * events is not NULL-terminated; the return value is the number of events.
+ * The DDX is responsible for allocating the event structure in the first
+ * place via GetMaximumEventsNum(), and for freeing it.
+ *
+ * This function does not change the core keymap to that of the device;
+ * that is done by SwitchCoreKeyboard, which is called from
+ * mieqProcessInputEvents. If replacing that function, take care to call
+ * SetCoreKeyboard before processInputProc, so keymaps are altered to suit.
+ *
+ * Note that this function recurses! If called for non-XKB, a repeating
+ * key press will trigger a matching KeyRelease, as well as the
+ * KeyPresses.
+ */
+_X_EXPORT int
+GetKeyboardValuatorEvents(xEvent *events, DeviceIntPtr pDev, int type,
+ int key_code, int first_valuator,
+ int num_valuators, int *valuators) {
+ int numEvents = 0;
+ CARD32 ms = 0;
+ KeySym *map = pDev->key->curKeySyms.map;
+ KeySym sym = map[key_code * pDev->key->curKeySyms.mapWidth];
+ deviceKeyButtonPointer *kbp = NULL;
+
+ if (!events)
+ return 0;
+
+ if (type != KeyPress && type != KeyRelease)
+ return 0;
+
+ if (!pDev->key || !pDev->focus || !pDev->kbdfeed ||
+ (pDev->coreEvents && !inputInfo.keyboard->key))
+ return 0;
+
+ if (pDev->coreEvents)
+ numEvents = 2;
+ else
+ numEvents = 1;
+
+ if (num_valuators) {
+ if ((num_valuators / 6) + 1 > MAX_VALUATOR_EVENTS)
+ num_valuators = MAX_VALUATOR_EVENTS;
+ numEvents += (num_valuators / 6) + 1;
+ }
+
+#ifdef XKB
+ if (noXkbExtension)
+#endif
+ {
+ switch (sym) {
+ case XK_Num_Lock:
+ case XK_Caps_Lock:
+ case XK_Scroll_Lock:
+ case XK_Shift_Lock:
+ if (type == KeyRelease)
+ return 0;
+ else if (type == KeyPress &&
+ (pDev->key->down[key_code >> 3] & (key_code & 7)) & 1)
+ type = KeyRelease;
+ }
+ }
+
+ /* Handle core repeating, via press/release/press/release.
+ * FIXME: In theory, if you're repeating with two keyboards in non-XKB,
+ * you could get unbalanced events here. */
+ if (type == KeyPress &&
+ (((pDev->key->down[key_code >> 3] & (key_code & 7))) & 1)) {
+ if (!pDev->kbdfeed->ctrl.autoRepeat ||
+ pDev->key->modifierMap[key_code] ||
+ !(pDev->kbdfeed->ctrl.autoRepeats[key_code >> 3]
+ & (1 << (key_code & 7))))
+ return 0;
+
+#ifdef XKB
+ if (noXkbExtension)
+#endif
+ {
+ numEvents += GetKeyboardValuatorEvents(events, pDev,
+ KeyRelease, key_code,
+ first_valuator, num_valuators,
+ valuators);
+ events += numEvents;
+ }
+ }
+
+ ms = GetTimeInMillis();
+
+ kbp = (deviceKeyButtonPointer *) events;
+ kbp->time = ms;
+ kbp->deviceid = pDev->id;
+ if (type == KeyPress)
+ kbp->type = DeviceKeyPress;
+ else if (type == KeyRelease)
+ kbp->type = DeviceKeyRelease;
+
+ events++;
+ if (num_valuators) {
+ kbp->deviceid |= MORE_EVENTS;
+ clipValuators(pDev, first_valuator, num_valuators, valuators);
+ events = getValuatorEvents(events, pDev, first_valuator,
+ num_valuators, valuators);
+ }
+
+ if (pDev->coreEvents) {
+ events->u.keyButtonPointer.time = ms;
+ events->u.u.type = type;
+ events->u.u.detail = key_code;
+ }
+
+ return numEvents;
+}
+
+
+/**
+ * Generate a series of xEvents (returned in xE) representing pointer
+ * motion, or button presses. Xi and XKB-aware.
+ *
+ * events is not NULL-terminated; the return value is the number of events.
+ * The DDX is responsible for allocating the event structure in the first
+ * place via GetMaximumEventsNum(), and for freeing it.
+ */
+_X_EXPORT int
+GetPointerEvents(xEvent *events, DeviceIntPtr pDev, int type, int buttons,
+ int flags, int first_valuator, int num_valuators,
+ int *valuators) {
+ int num_events = 0, final_valuator = 0;
+ CARD32 ms = 0;
+ deviceKeyButtonPointer *kbp = NULL;
+ /* Thanks to a broken lib, we _always_ have to chase DeviceMotionNotifies
+ * with DeviceValuators. */
+ Bool sendValuators = (type == MotionNotify || flags & POINTER_ABSOLUTE);
+ DeviceIntPtr cp = inputInfo.pointer;
+ int x = 0, y = 0;
+
+ /* Sanity checks. */
+ if (type != MotionNotify && type != ButtonPress && type != ButtonRelease)
+ return 0;
+
+ if ((type == ButtonPress || type == ButtonRelease) && !pDev->button)
+ return 0;
+
+ if (pDev->coreEvents)
+ num_events = 2;
+ else
+ num_events = 1;
+
+ if (type == MotionNotify && num_valuators <= 0) {
+ return 0;
+ }
+
+ /* Do we need to send a DeviceValuator event? */
+ if (sendValuators) {
+ if ((((num_valuators - 1) / 6) + 1) > MAX_VALUATOR_EVENTS)
+ num_valuators = MAX_VALUATOR_EVENTS * 6;
+ num_events += ((num_valuators - 1) / 6) + 1;
+ }
+
+ final_valuator = num_valuators + first_valuator;
+
+ /* You fail. */
+ if (first_valuator < 0 || final_valuator > pDev->valuator->numAxes)
+ return 0;
+
+ ms = GetTimeInMillis();
+
+ kbp = (deviceKeyButtonPointer *) events;
+ kbp->time = ms;
+ kbp->deviceid = pDev->id;
+
+ /* Set x and y based on whether this is absolute or relative, and
+ * accelerate if we need to. */
+ if (flags & POINTER_ABSOLUTE) {
+ if (num_valuators >= 1 && first_valuator == 0) {
+ x = valuators[0];
+ }
+ else {
+ if (pDev->coreEvents)
+ x = cp->valuator->lastx;
+ else
+ x = pDev->valuator->lastx;
+ }
+
+ if (first_valuator <= 1 && num_valuators >= (2 - first_valuator)) {
+ y = valuators[1 - first_valuator];
+ }
+ else {
+ if (pDev->coreEvents)
+ y = cp->valuator->lasty;
+ else
+ y = pDev->valuator->lasty;
+ }
+ }
+ else {
+ if (flags & POINTER_ACCELERATE)
+ acceleratePointer(pDev, first_valuator, num_valuators,
+ valuators);
+
+ if (pDev->coreEvents) {
+ if (first_valuator == 0 && num_valuators >= 1)
+ x = cp->valuator->lastx + valuators[0];
+ else
+ x = cp->valuator->lastx;
+
+ if (first_valuator <= 1 && num_valuators >= (2 - first_valuator))
+ y = cp->valuator->lasty + valuators[1 - first_valuator];
+ else
+ y = cp->valuator->lasty;
+ }
+ else {
+ if (first_valuator == 0 && num_valuators >= 1)
+ x = pDev->valuator->lastx + valuators[0];
+ else
+ x = pDev->valuator->lastx;
+
+ if (first_valuator <= 1 && num_valuators >= (2 - first_valuator))
+ y = pDev->valuator->lasty + valuators[1 - first_valuator];
+ else
+ y = pDev->valuator->lasty;
+ }
+ }
+
+ /* Clip both x and y to the defined limits (usually co-ord space limit). */
+ clipAxis(pDev, 0, &x);
+ clipAxis(pDev, 1, &y);
+
+ /* This takes care of crossing screens for us, as well as clipping
+ * to the current screen. Right now, we only have one history buffer,
+ * so we don't set this for both the device and core.*/
+ miPointerSetPosition(pDev, &x, &y, ms);
+
+ /* Drop x and y back into the valuators list, if they were originally
+ * present. */
+ if (first_valuator == 0 && num_valuators >= 1)
+ valuators[0] = x;
+ if (first_valuator <= 1 && num_valuators >= (2 - first_valuator))
+ valuators[1 - first_valuator] = y;
+
+ updateMotionHistory(pDev, ms, first_valuator, num_valuators, valuators);
+
+ if (pDev->coreEvents) {
+ cp->valuator->lastx = x;
+ cp->valuator->lasty = y;
+ }
+ pDev->valuator->lastx = x;
+ pDev->valuator->lasty = y;
+
+ if (type == MotionNotify) {
+ kbp->type = DeviceMotionNotify;
+ }
+ else {
+ if (type == ButtonPress)
+ kbp->type = DeviceButtonPress;
+ else if (type == ButtonRelease)
+ kbp->type = DeviceButtonRelease;
+ kbp->detail = pDev->button->map[buttons];
+ }
+
+ kbp->root_x = x;
+ kbp->root_y = y;
+
+ events++;
+ if (sendValuators) {
+ kbp->deviceid |= MORE_EVENTS;
+ clipValuators(pDev, first_valuator, num_valuators, valuators);
+ events = getValuatorEvents(events, pDev, first_valuator,
+ num_valuators, valuators);
+ }
+
+ if (pDev->coreEvents) {
+ events->u.u.type = type;
+ events->u.keyButtonPointer.time = ms;
+ events->u.keyButtonPointer.rootX = x;
+ events->u.keyButtonPointer.rootY = y;
+
+ if (type == ButtonPress || type == ButtonRelease) {
+ /* We hijack SetPointerMapping to work on all core-sending
+ * devices, so we use the device-specific map here instead of
+ * the core one. */
+ events->u.u.detail = pDev->button->map[buttons];
+ }
+ else {
+ events->u.u.detail = 0;
+ }
+ }
+
+ return num_events;
+}
+
+
+/**
+ * Post ProximityIn/ProximityOut events, accompanied by valuators.
+ *
+ * events is not NULL-terminated; the return value is the number of events.
+ * The DDX is responsible for allocating the event structure in the first
+ * place via GetMaximumEventsNum(), and for freeing it.
+ */
+_X_EXPORT int
+GetProximityEvents(xEvent *events, DeviceIntPtr pDev, int type,
+ int first_valuator, int num_valuators, int *valuators)
+{
+ int num_events = 0;
+ deviceKeyButtonPointer *kbp = (deviceKeyButtonPointer *) events;
+
+ /* Sanity checks. */
+ if (type != ProximityIn && type != ProximityOut)
+ return 0;
+
+ if (!pDev->valuator)
+ return 0;
+
+ /* Do we need to send a DeviceValuator event? */
+ if ((pDev->valuator->mode & 1) == Relative)
+ num_valuators = 0;
+
+ if (num_valuators) {
+ if ((((num_valuators - 1) / 6) + 1) > MAX_VALUATOR_EVENTS)
+ num_valuators = MAX_VALUATOR_EVENTS * 6;
+ num_events += ((num_valuators - 1) / 6) + 1;
+ }
+
+ /* You fail. */
+ if (first_valuator < 0 ||
+ (num_valuators + first_valuator) > pDev->valuator->numAxes)
+ return 0;
+
+ kbp->type = type;
+ kbp->deviceid = pDev->id;
+ kbp->detail = 0;
+ kbp->time = GetTimeInMillis();
+
+ if (num_valuators) {
+ kbp->deviceid |= MORE_EVENTS;
+ events++;
+ clipValuators(pDev, first_valuator, num_valuators, valuators);
+ events = getValuatorEvents(events, pDev, first_valuator,
+ num_valuators, valuators);
+ }
+
+ return num_events;
+}
+
+
+/**
+ * Note that pDev was the last device to send a core event. This function
+ * copies the complete keymap from the originating device to the core
+ * device, and makes sure the appropriate notifications are generated.
+ *
+ * Call this just before processInputProc.
+ */
+_X_EXPORT void
+SwitchCoreKeyboard(DeviceIntPtr pDev)
+{
+ KeyClassPtr ckeyc = inputInfo.keyboard->key;
+
+ if (inputInfo.keyboard->devPrivates[CoreDevicePrivatesIndex].ptr != pDev) {
+ memcpy(ckeyc->modifierMap, pDev->key->modifierMap, MAP_LENGTH);
+ if (ckeyc->modifierKeyMap)
+ xfree(ckeyc->modifierKeyMap);
+ ckeyc->modifierKeyMap = xalloc(8 * pDev->key->maxKeysPerModifier);
+ memcpy(ckeyc->modifierKeyMap, pDev->key->modifierKeyMap,
+ (8 * pDev->key->maxKeysPerModifier));
+
+ ckeyc->maxKeysPerModifier = pDev->key->maxKeysPerModifier;
+ ckeyc->curKeySyms.minKeyCode = pDev->key->curKeySyms.minKeyCode;
+ ckeyc->curKeySyms.maxKeyCode = pDev->key->curKeySyms.maxKeyCode;
+ SetKeySymsMap(&ckeyc->curKeySyms, &pDev->key->curKeySyms);
+
+#ifdef XKB
+ if (!noXkbExtension && pDev->key->xkbInfo && pDev->key->xkbInfo->desc) {
+ if (!XkbCopyKeymap(pDev->key->xkbInfo->desc, ckeyc->xkbInfo->desc,
+ True))
+ FatalError("Couldn't pivot keymap from device to core!\n");
+ }
+#endif
+
+ SendMappingNotify(MappingKeyboard, ckeyc->curKeySyms.minKeyCode,
+ (ckeyc->curKeySyms.maxKeyCode -
+ ckeyc->curKeySyms.minKeyCode),
+ serverClient);
+ inputInfo.keyboard->devPrivates[CoreDevicePrivatesIndex].ptr = pDev;
+ }
+}
+
+
+/**
+ * Note that pDev was the last function to send a core pointer event.
+ * Currently a no-op.
+ *
+ * Call this just before processInputProc.
+ */
+_X_EXPORT void
+SwitchCorePointer(DeviceIntPtr pDev)
+{
+ if (inputInfo.pointer->devPrivates[CoreDevicePrivatesIndex].ptr != pDev)
+ inputInfo.pointer->devPrivates[CoreDevicePrivatesIndex].ptr = pDev;
+}
+
+
+/**
+ * Synthesize a single motion event for the core pointer.
+ *
+ * Used in cursor functions, e.g. when cursor confinement changes, and we need
+ * to shift the pointer to get it inside the new bounds.
+ */
+void
+PostSyntheticMotion(int x, int y, ScreenPtr pScreen, unsigned long time)
+{
+ xEvent xE;
+
+#ifdef PANORAMIX
+ /* Translate back to the sprite screen since processInputProc
+ will translate from sprite screen to screen 0 upon reentry
+ to the DIX layer. */
+ if (!noPanoramiXExtension) {
+ x += panoramiXdataPtr[0].x - panoramiXdataPtr[pScreen->myNum].x;
+ y += panoramiXdataPtr[0].y - panoramiXdataPtr[pScreen->myNum].y;
+ }
+#endif
+
+ memset(&xE, 0, sizeof(xEvent));
+ xE.u.u.type = MotionNotify;
+ xE.u.keyButtonPointer.rootX = x;
+ xE.u.keyButtonPointer.rootY = y;
+ xE.u.keyButtonPointer.time = time;
+
+ (*inputInfo.pointer->public.processInputProc)(&xE, inputInfo.pointer, 1);
+}
diff --git a/dix/globals.c b/dix/globals.c
index d686baffa..f86c6026d 100644
--- a/dix/globals.c
+++ b/dix/globals.c
@@ -1,5 +1,3 @@
-/* $XdotOrg: xserver/xorg/dix/globals.c,v 1.8 2006/02/15 20:44:12 ajax Exp $ */
-/* $XFree86: xc/programs/Xserver/dix/globals.c,v 1.12tsi Exp $ */
/************************************************************
Copyright 1987, 1998 The Open Group
@@ -47,7 +45,6 @@ SOFTWARE.
********************************************************/
-/* $Xorg: globals.c,v 1.4 2001/02/09 02:04:40 xorgcvs Exp $ */
#ifdef HAVE_DIX_CONFIG_H
#include <dix-config.h>
@@ -108,7 +105,7 @@ int ScreenSaverAllowExposures;
# define DEFAULT_OFF_TIME DEFAULT_SCREEN_SAVER_TIME * 4
# endif
# ifndef DEFAULT_DPMS_ENABLED
-# define DEFAULT_DPMS_ENABLED FALSE
+# define DEFAULT_DPMS_ENABLED TRUE
# endif
CARD32 defaultDPMSStandbyTime = DEFAULT_STANDBY_TIME;
CARD32 defaultDPMSSuspendTime = DEFAULT_SUSPEND_TIME;
@@ -146,17 +143,12 @@ FontPtr defaultFont; /* not declared in dix.h to avoid including font.h in
Bool loadableFonts = FALSE;
CursorPtr rootCursor;
Bool blackRoot=FALSE;
+Bool whiteRoot=FALSE;
ClientPtr requestingClient; /* XXX this should be obsolete now, remove? */
_X_EXPORT TimeStamp currentTime;
_X_EXPORT TimeStamp lastDeviceEventTime;
-/*
- * turn off some error checking, to permit old broken clients (like R2/R3
- * xterms) to work
- */
-_X_EXPORT Bool permitOldBugs = FALSE;
-
_X_EXPORT int defaultColorVisualClass = -1;
_X_EXPORT int monitorResolution = 0;
diff --git a/dix/glyphcurs.c b/dix/glyphcurs.c
index 8f8adf5ce..c1c545fa9 100644
--- a/dix/glyphcurs.c
+++ b/dix/glyphcurs.c
@@ -45,7 +45,6 @@ SOFTWARE.
************************************************************************/
-/* $Xorg: glyphcurs.c,v 1.4 2001/02/09 02:04:40 xorgcvs Exp $ */
#ifdef HAVE_DIX_CONFIG_H
#include <dix-config.h>
diff --git a/dix/grabs.c b/dix/grabs.c
index 1d76f7f07..0c2b05e89 100644
--- a/dix/grabs.c
+++ b/dix/grabs.c
@@ -1,4 +1,3 @@
-/* $Xorg: grabs.c,v 1.4 2001/02/09 02:04:40 xorgcvs Exp $ */
/*
Copyright 1987, 1998 The Open Group
@@ -46,7 +45,6 @@ ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
SOFTWARE.
*/
-/* $XFree86: xc/programs/Xserver/dix/grabs.c,v 3.4 2002/02/19 11:09:22 alanh Exp $ */
#ifdef HAVE_DIX_CONFIG_H
#include <dix-config.h>
diff --git a/dix/main.c b/dix/main.c
index 9d66a4fa8..3a77533a5 100644
--- a/dix/main.c
+++ b/dix/main.c
@@ -1,5 +1,3 @@
-/* $XdotOrg: xserver/xorg/dix/main.c,v 1.15 2006/02/15 20:44:12 ajax Exp $ */
-/* $XFree86: xc/programs/Xserver/dix/main.c,v 3.43 2003/10/30 21:21:02 herrb Exp $ */
/***********************************************************
Copyright 1987, 1998 The Open Group
@@ -46,7 +44,6 @@ ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
SOFTWARE.
******************************************************************/
-/* $Xorg: main.c,v 1.4 2001/02/09 02:04:40 xorgcvs Exp $ */
/* The panoramix components contained the following notice */
/*****************************************************************
@@ -101,6 +98,7 @@ Equipment Corporation.
#include <X11/fonts/font.h>
#include "opaque.h"
#include "servermd.h"
+#include "hotplug.h"
#include "site.h"
#include "dixfont.h"
#include "extnsionst.h"
@@ -312,7 +310,8 @@ main(int argc, char *argv[], char *envp[])
#endif
InitBlockAndWakeupHandlers();
/* Perform any operating system dependent initializations you'd like */
- OsInit();
+ OsInit();
+ configInitialise();
if(serverGeneration == 1)
{
CreateWellKnownSockets();
@@ -357,6 +356,7 @@ main(int argc, char *argv[], char *envp[])
InitAtoms();
InitEvents();
InitGlyphCaching();
+ ResetExtensionPrivates();
ResetClientPrivates();
ResetScreenPrivates();
ResetWindowPrivates();
@@ -396,23 +396,43 @@ main(int argc, char *argv[], char *envp[])
if (!CreateRootWindow(pScreen))
FatalError("failed to create root window");
}
+ InitCoreDevices();
InitInput(argc, argv);
if (InitAndStartDevices() != Success)
FatalError("failed to initialize core devices");
InitFonts();
+#ifdef BUILTIN_FONTS
+ defaultFontPath = "built-ins";
+#else
if (loadableFonts) {
SetFontPath(0, 0, (unsigned char *)defaultFontPath, &error);
- } else {
+ } else
+#endif
+ {
if (SetDefaultFontPath(defaultFontPath) != Success)
ErrorF("failed to set default font path '%s'",
defaultFontPath);
}
- if (!SetDefaultFont(defaultTextFont))
+ if (!SetDefaultFont(defaultTextFont)) {
FatalError("could not open default font '%s'", defaultTextFont);
- if (!(rootCursor = CreateRootCursor(defaultCursorFont, 0)))
+ }
+#ifdef NULL_ROOT_CURSOR
+ cm.width = 0;
+ cm.height = 0;
+ cm.xhot = 0;
+ cm.yhot = 0;
+
+ if (!(rootCursor = AllocCursor(NULL, NULL, &cm, 0, 0, 0, 0, 0, 0))) {
+ FatalError("could not create empty root cursor");
+ }
+ AddResource(FakeClientID(0), RT_CURSOR, (pointer)rootCursor);
+#else
+ if (!(rootCursor = CreateRootCursor(defaultCursorFont, 0))) {
FatalError("could not open default cursor font '%s'",
defaultCursorFont);
+ }
+#endif
#ifdef DPMSExtension
/* check all screens, looking for DPMS Capabilities */
DPMSCapableFlag = DPMSSupported();
@@ -435,13 +455,15 @@ main(int argc, char *argv[], char *envp[])
#ifdef PANORAMIX
if (!noPanoramiXExtension) {
- if (!PanoramiXCreateConnectionBlock())
+ if (!PanoramiXCreateConnectionBlock()) {
FatalError("could not create connection block info");
+ }
} else
#endif
{
- if (!CreateConnectionBlock())
+ if (!CreateConnectionBlock()) {
FatalError("could not create connection block info");
+ }
}
Dispatch();
@@ -463,6 +485,7 @@ main(int argc, char *argv[], char *envp[])
FreeAllResources();
#endif
+ configFini();
CloseDownDevices();
for (i = screenInfo.numScreens - 1; i >= 0; i--)
{
@@ -683,9 +706,6 @@ AddScreen(
int i;
int scanlinepad, format, depth, bitsPerPixel, j, k;
ScreenPtr pScreen;
-#ifdef DEBUG
- void (**jNI) ();
-#endif /* DEBUG */
i = screenInfo.numScreens;
if (i == MAXSCREENS)
@@ -719,13 +739,6 @@ AddScreen(
pScreen->ClipNotify = 0; /* for R4 ddx compatibility */
pScreen->CreateScreenResources = 0;
-#ifdef DEBUG
- for (jNI = &pScreen->QueryBestSize;
- jNI < (void (**) ()) &pScreen->SendGraphicsExpose;
- jNI++)
- *jNI = NotImplemented;
-#endif /* DEBUG */
-
/*
* This loop gets run once for every Screen that gets added,
* but thats ok. If the ddx layer initializes the formats
diff --git a/dix/pixmap.c b/dix/pixmap.c
index 1c3d49fc5..a5b7b064d 100644
--- a/dix/pixmap.c
+++ b/dix/pixmap.c
@@ -1,4 +1,3 @@
-/* $Xorg: pixmap.c,v 1.4 2001/02/09 02:04:40 xorgcvs Exp $ */
/*
Copyright 1993, 1998 The Open Group
@@ -26,7 +25,6 @@ other dealings in this Software without prior written authorization
from The Open Group.
*/
-/* $XFree86: xc/programs/Xserver/dix/pixmap.c,v 3.4 2001/01/17 22:36:44 dawes Exp $ */
#ifdef HAVE_DIX_CONFIG_H
#include <dix-config.h>
diff --git a/dix/privates.c b/dix/privates.c
index 0c94ff54d..b20a1dbf0 100644
--- a/dix/privates.c
+++ b/dix/privates.c
@@ -1,5 +1,3 @@
-/* $Xorg: privates.c,v 1.4 2001/02/09 02:04:40 xorgcvs Exp $ */
-/* $XdotOrg: xserver/xorg/dix/privates.c,v 1.10 2005/09/05 07:40:50 daniels Exp $ */
/*
Copyright 1993, 1998 The Open Group
@@ -27,7 +25,6 @@ other dealings in this Software without prior written authorization
from The Open Group.
*/
-/* $XFree86: xc/programs/Xserver/dix/privates.c,v 3.7 2001/01/17 22:36:44 dawes Exp $ */
#ifdef HAVE_DIX_CONFIG_H
#include <dix-config.h>
@@ -45,6 +42,7 @@ from The Open Group.
#include "servermd.h"
#include "site.h"
#include "inputstr.h"
+#include "extnsionst.h"
/*
* See the Wrappers and devPrivates section in "Definition of the
@@ -53,6 +51,63 @@ from The Open Group.
*/
/*
+ * extension private machinery
+ */
+
+static int extensionPrivateCount;
+int extensionPrivateLen;
+unsigned *extensionPrivateSizes;
+unsigned totalExtensionSize;
+
+void
+ResetExtensionPrivates()
+{
+ extensionPrivateCount = 0;
+ extensionPrivateLen = 0;
+ xfree(extensionPrivateSizes);
+ extensionPrivateSizes = (unsigned *)NULL;
+ totalExtensionSize =
+ ((sizeof(ExtensionEntry) + sizeof(long) - 1) / sizeof(long)) * sizeof(long);
+}
+
+_X_EXPORT int
+AllocateExtensionPrivateIndex()
+{
+ return extensionPrivateCount++;
+}
+
+_X_EXPORT Bool
+AllocateExtensionPrivate(int index2, unsigned amount)
+{
+ unsigned oldamount;
+
+ /* Round up sizes for proper alignment */
+ amount = ((amount + (sizeof(long) - 1)) / sizeof(long)) * sizeof(long);
+
+ if (index2 >= extensionPrivateLen)
+ {
+ unsigned *nsizes;
+ nsizes = (unsigned *)xrealloc(extensionPrivateSizes,
+ (index2 + 1) * sizeof(unsigned));
+ if (!nsizes)
+ return FALSE;
+ while (extensionPrivateLen <= index2)
+ {
+ nsizes[extensionPrivateLen++] = 0;
+ totalExtensionSize += sizeof(DevUnion);
+ }
+ extensionPrivateSizes = nsizes;
+ }
+ oldamount = extensionPrivateSizes[index2];
+ if (amount > oldamount)
+ {
+ extensionPrivateSizes[index2] = amount;
+ totalExtensionSize += (amount - oldamount);
+ }
+ return TRUE;
+}
+
+/*
* client private machinery
*/
diff --git a/dix/property.c b/dix/property.c
index e074c68dd..d40284901 100644
--- a/dix/property.c
+++ b/dix/property.c
@@ -1,4 +1,3 @@
-/* $XFree86: xc/programs/Xserver/dix/property.c,v 3.12 2002/02/19 11:09:22 alanh Exp $ */
/***********************************************************
Copyright 1987, 1998 The Open Group
@@ -45,7 +44,6 @@ ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
SOFTWARE.
******************************************************************/
-/* $Xorg: property.c,v 1.4 2001/02/09 02:04:40 xorgcvs Exp $ */
#ifdef HAVE_DIX_CONFIG_H
#include <dix-config.h>
@@ -60,10 +58,7 @@ SOFTWARE.
#include "dixstruct.h"
#include "dispatch.h"
#include "swaprep.h"
-#ifdef XCSECURITY
-#define _SECURITY_SERVER
-#include <X11/extensions/security.h>
-#endif
+#include "xace.h"
/*****************************************************************
* Property Stuff
@@ -99,7 +94,7 @@ PrintPropertys(WindowPtr pWin)
int
ProcRotateProperties(ClientPtr client)
{
- int i, j, delta;
+ int i, j, delta, rc;
REQUEST(xRotatePropertiesReq);
WindowPtr pWin;
register Atom * atoms;
@@ -109,10 +104,9 @@ ProcRotateProperties(ClientPtr client)
REQUEST_FIXED_SIZE(xRotatePropertiesReq, stuff->nAtoms << 2);
UpdateCurrentTime();
- pWin = (WindowPtr) SecurityLookupWindow(stuff->window, client,
- SecurityWriteAccess);
- if (!pWin)
- return(BadWindow);
+ rc = dixLookupWindow(&pWin, stuff->window, client, DixWriteAccess);
+ if (rc != Success)
+ return rc;
if (!stuff->nAtoms)
return(Success);
atoms = (Atom *) & stuff[1];
@@ -121,27 +115,19 @@ ProcRotateProperties(ClientPtr client)
return(BadAlloc);
for (i = 0; i < stuff->nAtoms; i++)
{
-#ifdef XCSECURITY
- char action = SecurityCheckPropertyAccess(client, pWin, atoms[i],
- SecurityReadAccess|SecurityWriteAccess);
-#endif
- if (!ValidAtom(atoms[i])
-#ifdef XCSECURITY
- || (SecurityErrorOperation == action)
-#endif
- )
- {
+ char action = XaceHook(XACE_PROPERTY_ACCESS, client, pWin, atoms[i],
+ DixReadAccess|DixWriteAccess);
+
+ if (!ValidAtom(atoms[i]) || (XaceErrorOperation == action)) {
DEALLOCATE_LOCAL(props);
client->errorValue = atoms[i];
return BadAtom;
}
-#ifdef XCSECURITY
- if (SecurityIgnoreOperation == action)
- {
+ if (XaceIgnoreOperation == action) {
DEALLOCATE_LOCAL(props);
return Success;
}
-#endif
+
for (j = i + 1; j < stuff->nAtoms; j++)
if (atoms[j] == atoms[i])
{
@@ -194,9 +180,7 @@ ProcChangeProperty(ClientPtr client)
WindowPtr pWin;
char format, mode;
unsigned long len;
- int sizeInBytes;
- int totalSize;
- int err;
+ int sizeInBytes, totalSize, err;
REQUEST(xChangePropertyReq);
REQUEST_AT_LEAST_SIZE(xChangePropertyReq);
@@ -221,10 +205,9 @@ ProcChangeProperty(ClientPtr client)
totalSize = len * sizeInBytes;
REQUEST_FIXED_SIZE(xChangePropertyReq, totalSize);
- pWin = (WindowPtr)SecurityLookupWindow(stuff->window, client,
- SecurityWriteAccess);
- if (!pWin)
- return(BadWindow);
+ err = dixLookupWindow(&pWin, stuff->window, client, DixWriteAccess);
+ if (err != Success)
+ return err;
if (!ValidAtom(stuff->property))
{
client->errorValue = stuff->property;
@@ -236,17 +219,15 @@ ProcChangeProperty(ClientPtr client)
return(BadAtom);
}
-#ifdef XCSECURITY
- switch (SecurityCheckPropertyAccess(client, pWin, stuff->property,
- SecurityWriteAccess))
+ switch (XaceHook(XACE_PROPERTY_ACCESS, client, pWin, stuff->property,
+ DixWriteAccess))
{
- case SecurityErrorOperation:
- client->errorValue = stuff->property;
- return BadAtom;
- case SecurityIgnoreOperation:
- return Success;
+ case XaceErrorOperation:
+ client->errorValue = stuff->property;
+ return BadAtom;
+ case XaceIgnoreOperation:
+ return Success;
}
-#endif
err = ChangeWindowProperty(pWin, stuff->property, stuff->type, (int)format,
(int)mode, len, (pointer)&stuff[1], TRUE);
@@ -460,18 +441,18 @@ int
ProcGetProperty(ClientPtr client)
{
PropertyPtr pProp, prevProp;
- unsigned long n, len, ind;
+ unsigned long n, len, ind, rc;
WindowPtr pWin;
xGetPropertyReply reply;
+ Mask access_mode = DixReadAccess;
REQUEST(xGetPropertyReq);
REQUEST_SIZE_MATCH(xGetPropertyReq);
if (stuff->delete)
UpdateCurrentTime();
- pWin = (WindowPtr)SecurityLookupWindow(stuff->window, client,
- SecurityReadAccess);
- if (!pWin)
- return BadWindow;
+ rc = dixLookupWindow(&pWin, stuff->window, client, DixReadAccess);
+ if (rc != Success)
+ return rc;
if (!ValidAtom(stuff->property))
{
@@ -504,24 +485,18 @@ ProcGetProperty(ClientPtr client)
if (!pProp)
return NullPropertyReply(client, None, 0, &reply);
-#ifdef XCSECURITY
+ if (stuff->delete)
+ access_mode |= DixDestroyAccess;
+ switch (XaceHook(XACE_PROPERTY_ACCESS, client, pWin, stuff->property,
+ access_mode))
{
- Mask access_mode = SecurityReadAccess;
-
- if (stuff->delete)
- access_mode |= SecurityDestroyAccess;
- switch(SecurityCheckPropertyAccess(client, pWin, stuff->property,
- access_mode))
- {
- case SecurityErrorOperation:
- client->errorValue = stuff->property;
- return BadAtom;;
- case SecurityIgnoreOperation:
- return NullPropertyReply(client, pProp->type, pProp->format,
- &reply);
- }
+ case XaceErrorOperation:
+ client->errorValue = stuff->property;
+ return BadAtom;;
+ case XaceIgnoreOperation:
+ return NullPropertyReply(client, pProp->type, pProp->format, &reply);
}
-#endif
+
/* If the request type and actual type don't match. Return the
property information, but not the data. */
@@ -605,16 +580,15 @@ ProcListProperties(ClientPtr client)
{
Atom *pAtoms = NULL, *temppAtoms;
xListPropertiesReply xlpr;
- int numProps = 0;
+ int rc, numProps = 0;
WindowPtr pWin;
PropertyPtr pProp;
REQUEST(xResourceReq);
REQUEST_SIZE_MATCH(xResourceReq);
- pWin = (WindowPtr)SecurityLookupWindow(stuff->id, client,
- SecurityReadAccess);
- if (!pWin)
- return(BadWindow);
+ rc = dixLookupWindow(&pWin, stuff->id, client, DixReadAccess);
+ if (rc != Success)
+ return rc;
pProp = wUserProps (pWin);
while (pProp)
@@ -656,27 +630,24 @@ ProcDeleteProperty(register ClientPtr client)
REQUEST_SIZE_MATCH(xDeletePropertyReq);
UpdateCurrentTime();
- pWin = (WindowPtr)SecurityLookupWindow(stuff->window, client,
- SecurityWriteAccess);
- if (!pWin)
- return(BadWindow);
+ result = dixLookupWindow(&pWin, stuff->window, client, DixWriteAccess);
+ if (result != Success)
+ return result;
if (!ValidAtom(stuff->property))
{
client->errorValue = stuff->property;
return (BadAtom);
}
-#ifdef XCSECURITY
- switch(SecurityCheckPropertyAccess(client, pWin, stuff->property,
- SecurityDestroyAccess))
+ switch (XaceHook(XACE_PROPERTY_ACCESS, client, pWin, stuff->property,
+ DixDestroyAccess))
{
- case SecurityErrorOperation:
- client->errorValue = stuff->property;
- return BadAtom;;
- case SecurityIgnoreOperation:
- return Success;
+ case XaceErrorOperation:
+ client->errorValue = stuff->property;
+ return BadAtom;;
+ case XaceIgnoreOperation:
+ return Success;
}
-#endif
result = DeleteProperty(pWin, stuff->property);
if (client->noClientException != Success)
diff --git a/dix/resource.c b/dix/resource.c
index bb34bc9d4..4468f4575 100644
--- a/dix/resource.c
+++ b/dix/resource.c
@@ -72,9 +72,35 @@ dealings in this Software without prior written authorization from Digital
Equipment Corporation.
******************************************************************/
+/* XSERVER_DTRACE additions:
+ * Copyright 2005-2006 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.
+ */
-/* $Xorg: resource.c,v 1.5 2001/02/09 02:04:40 xorgcvs Exp $ */
-/* $XdotOrg: xserver/xorg/dix/resource.c,v 1.8 2005/07/03 08:53:38 daniels Exp $ */
/* $TOG: resource.c /main/41 1998/02/09 14:20:31 kaleb $ */
/* Routines to manage various kinds of resources:
@@ -99,7 +125,6 @@ Equipment Corporation.
* 1, and an otherwise arbitrary ID in the low 22 bits, we can create a
* resource "owned" by the client.
*/
-/* $XFree86: xc/programs/Xserver/dix/resource.c,v 3.13 2003/09/24 02:43:13 dawes Exp $ */
#define NEED_EVENTS
#ifdef HAVE_DIX_CONFIG_H
@@ -123,8 +148,17 @@ Equipment Corporation.
#include "panoramiX.h"
#include "panoramiXsrv.h"
#endif
+#include "xace.h"
#include <assert.h>
+#ifdef XSERVER_DTRACE
+#include <sys/types.h>
+typedef const char *string;
+#include "Xserver-dtrace.h"
+
+#define TypeNameString(t) NameForAtom(ResourceNames[t & TypeMask])
+#endif
+
static void RebuildTable(
int /*client*/
);
@@ -429,6 +463,9 @@ AddResource(XID id, RESTYPE type, pointer value)
register ClientResourceRec *rrec;
register ResourcePtr res, *head;
+#ifdef XSERVER_DTRACE
+ XSERVER_RESOURCE_ALLOC(id, type, value, TypeNameString(type));
+#endif
client = CLIENT_ID(id);
rrec = &clientTable[client];
if (!rrec->buckets)
@@ -528,6 +565,11 @@ FreeResource(XID id, RESTYPE skipDeleteFuncType)
if (res->id == id)
{
RESTYPE rtype = res->type;
+
+#ifdef XSERVER_DTRACE
+ XSERVER_RESOURCE_FREE(res->id, res->type,
+ res->value, TypeNameString(res->type));
+#endif
*prev = res->next;
elements = --*eltptr;
if (rtype & RC_CACHED)
@@ -569,6 +611,10 @@ FreeResourceByType(XID id, RESTYPE type, Bool skipFree)
{
if (res->id == id && res->type == type)
{
+#ifdef XSERVER_DTRACE
+ XSERVER_RESOURCE_FREE(res->id, res->type,
+ res->value, TypeNameString(res->type));
+#endif
*prev = res->next;
if (type & RC_CACHED)
FlushClientCaches(res->id);
@@ -731,6 +777,10 @@ FreeClientNeverRetainResources(ClientPtr client)
RESTYPE rtype = this->type;
if (rtype & RC_NEVERRETAIN)
{
+#ifdef XSERVER_DTRACE
+ XSERVER_RESOURCE_FREE(this->id, this->type,
+ this->value, TypeNameString(this->type));
+#endif
*prev = this->next;
if (rtype & RC_CACHED)
FlushClientCaches(this->id);
@@ -777,6 +827,10 @@ FreeClientResources(ClientPtr client)
for (this = *head; this; this = *head)
{
RESTYPE rtype = this->type;
+#ifdef XSERVER_DTRACE
+ XSERVER_RESOURCE_FREE(this->id, this->type,
+ this->value, TypeNameString(this->type));
+#endif
*head = this->next;
if (rtype & RC_CACHED)
FlushClientCaches(this->id);
@@ -821,8 +875,6 @@ LegalNewID(XID id, register ClientPtr client)
!LookupIDByClass(id, RC_ANY)));
}
-#ifdef XCSECURITY
-
/* SecurityLookupIDByType and SecurityLookupIDByClass:
* These are the heart of the resource ID security system. They take
* two additional arguments compared to the old LookupID functions:
@@ -838,10 +890,6 @@ SecurityLookupIDByType(ClientPtr client, XID id, RESTYPE rtype, Mask mode)
register ResourcePtr res;
pointer retval = NULL;
- assert(client == NullClient ||
- (client->index <= currentMaxClients && clients[client->index] == client));
- assert( (rtype & TypeMask) <= lastResourceType);
-
if (((cid = CLIENT_ID(id)) < MAXCLIENTS) &&
clientTable[cid].buckets)
{
@@ -854,8 +902,10 @@ SecurityLookupIDByType(ClientPtr client, XID id, RESTYPE rtype, Mask mode)
break;
}
}
- if (retval && client && client->CheckAccess)
- retval = (* client->CheckAccess)(client, id, rtype, mode, retval);
+ if (retval && client &&
+ !XaceHook(XACE_RESOURCE_ACCESS, client, id, rtype, mode, retval))
+ retval = NULL;
+
return retval;
}
@@ -867,10 +917,6 @@ SecurityLookupIDByClass(ClientPtr client, XID id, RESTYPE classes, Mask mode)
register ResourcePtr res = NULL;
pointer retval = NULL;
- assert(client == NullClient ||
- (client->index <= currentMaxClients && clients[client->index] == client));
- assert (classes >= lastResourceClass);
-
if (((cid = CLIENT_ID(id)) < MAXCLIENTS) &&
clientTable[cid].buckets)
{
@@ -883,8 +929,10 @@ SecurityLookupIDByClass(ClientPtr client, XID id, RESTYPE classes, Mask mode)
break;
}
}
- if (retval && client && client->CheckAccess)
- retval = (* client->CheckAccess)(client, id, res->type, mode, retval);
+ if (retval && client &&
+ !XaceHook(XACE_RESOURCE_ACCESS, client, id, res->type, mode, retval))
+ retval = NULL;
+
return retval;
}
@@ -896,59 +944,12 @@ _X_EXPORT pointer
LookupIDByType(XID id, RESTYPE rtype)
{
return SecurityLookupIDByType(NullClient, id, rtype,
- SecurityUnknownAccess);
+ DixUnknownAccess);
}
_X_EXPORT pointer
LookupIDByClass(XID id, RESTYPE classes)
{
return SecurityLookupIDByClass(NullClient, id, classes,
- SecurityUnknownAccess);
-}
-
-#else /* not XCSECURITY */
-
-/*
- * LookupIDByType returns the object with the given id and type, else NULL.
- */
-pointer
-LookupIDByType(XID id, RESTYPE rtype)
-{
- int cid;
- register ResourcePtr res;
-
- if (((cid = CLIENT_ID(id)) < MAXCLIENTS) &&
- clientTable[cid].buckets)
- {
- res = clientTable[cid].resources[Hash(cid, id)];
-
- for (; res; res = res->next)
- if ((res->id == id) && (res->type == rtype))
- return res->value;
- }
- return (pointer)NULL;
-}
-
-/*
- * LookupIDByClass returns the object with the given id and any one of the
- * given classes, else NULL.
- */
-pointer
-LookupIDByClass(XID id, RESTYPE classes)
-{
- int cid;
- register ResourcePtr res;
-
- if (((cid = CLIENT_ID(id)) < MAXCLIENTS) &&
- clientTable[cid].buckets)
- {
- res = clientTable[cid].resources[Hash(cid, id)];
-
- for (; res; res = res->next)
- if ((res->id == id) && (res->type & classes))
- return res->value;
- }
- return (pointer)NULL;
+ DixUnknownAccess);
}
-
-#endif /* XCSECURITY */
diff --git a/dix/strcasecmp.c b/dix/strcasecmp.c
new file mode 100644
index 000000000..58f0961e6
--- /dev/null
+++ b/dix/strcasecmp.c
@@ -0,0 +1,48 @@
+/************************************************************
+ Copyright (c) 1995 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.
+
+ ********************************************************/
+
+#ifdef HAVE_DIX_CONFIG_H
+#include <dix-config.h>
+#endif
+
+#include <ctype.h>
+#include "dix.h"
+
+#ifdef NEED_STRCASECMP
+int
+xstrcasecmp(char *str1,char *str2)
+{
+ const u_char *us1 = (const u_char *)str1, *us2 = (const u_char *)str2;
+
+ while (tolower(*us1) == tolower(*us2)) {
+ if (*us1++ == '\0')
+ return (0);
+ us2++;
+ }
+
+ return (tolower(*us1) - tolower(*us2));
+}
+#endif
diff --git a/dix/swaprep.c b/dix/swaprep.c
index bff404c1c..08ae6eb1a 100644
--- a/dix/swaprep.c
+++ b/dix/swaprep.c
@@ -1,4 +1,3 @@
-/* $XFree86: xc/programs/Xserver/dix/swaprep.c,v 3.7 2001/12/14 19:59:33 dawes Exp $ */
/************************************************************
Copyright 1987, 1998 The Open Group
@@ -46,7 +45,6 @@ SOFTWARE.
********************************************************/
-/* $Xorg: swaprep.c,v 1.4 2001/02/09 02:04:41 xorgcvs Exp $ */
#ifdef HAVE_DIX_CONFIG_H
#include <dix-config.h>
diff --git a/dix/swapreq.c b/dix/swapreq.c
index 2678fb6de..a6a211515 100644
--- a/dix/swapreq.c
+++ b/dix/swapreq.c
@@ -1,4 +1,3 @@
-/* $XFree86: xc/programs/Xserver/dix/swapreq.c,v 3.4 2001/12/14 19:59:33 dawes Exp $ */
/************************************************************
Copyright 1987, 1998 The Open Group
@@ -46,7 +45,6 @@ SOFTWARE.
********************************************************/
-/* $Xorg: swapreq.c,v 1.4 2001/02/09 02:04:41 xorgcvs Exp $ */
#ifdef HAVE_DIX_CONFIG_H
#include <dix-config.h>
diff --git a/dix/tables.c b/dix/tables.c
index d5854ef57..258ac0370 100644
--- a/dix/tables.c
+++ b/dix/tables.c
@@ -1,4 +1,3 @@
-/* $XFree86: xc/programs/Xserver/dix/tables.c,v 3.5 2002/02/19 11:09:22 alanh Exp $ */
/***********************************************************
Copyright 1987, 1998 The Open Group
@@ -45,7 +44,6 @@ ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
SOFTWARE.
******************************************************************/
-/* $Xorg: tables.c,v 1.4 2001/02/09 02:04:41 xorgcvs Exp $ */
#ifdef HAVE_DIX_CONFIG_H
#include <dix-config.h>
diff --git a/dix/window.c b/dix/window.c
index 9fba5f832..e33140dd4 100644
--- a/dix/window.c
+++ b/dix/window.c
@@ -1,5 +1,3 @@
-/* $XdotOrg: xserver/xorg/dix/window.c,v 1.17 2006/03/31 17:39:35 sandmann Exp $ */
-/* $Xorg: window.c,v 1.4 2001/02/09 02:04:41 xorgcvs Exp $ */
/*
Copyright (c) 2006, Red Hat, Inc.
@@ -100,7 +98,6 @@ Equipment Corporation.
******************************************************************/
-/* $XFree86: xc/programs/Xserver/dix/window.c,v 3.36 2003/11/14 23:52:50 torrey Exp $ */
#ifdef HAVE_DIX_CONFIG_H
#include <dix-config.h>
@@ -127,12 +124,9 @@ Equipment Corporation.
#include "globals.h"
#ifdef XAPPGROUP
-#include <X11/extensions/Xagsrv.h>
-#endif
-#ifdef XCSECURITY
-#define _SECURITY_SERVER
-#include <X11/extensions/security.h>
+#include "appgroup.h"
#endif
+#include "xace.h"
/******
* Window stuff for server
@@ -191,7 +185,7 @@ _X_EXPORT int deltaSaveUndersViewable = 0;
* For debugging only
******/
-int
+static void
PrintChildren(WindowPtr p1, int indent)
{
WindowPtr p2;
@@ -201,14 +195,15 @@ PrintChildren(WindowPtr p1, int indent)
{
p2 = p1->firstChild;
for (i=0; i<indent; i++) ErrorF( " ");
- ErrorF( "%x\n", p1->drawable.id);
+ ErrorF( "%lx\n", p1->drawable.id);
miPrintRegion(&p1->clipList);
PrintChildren(p2, indent+4);
p1 = p1->nextSib;
}
}
-PrintWindowTree()
+static void
+PrintWindowTree(void)
{
int i;
WindowPtr pWin, p1;
@@ -347,9 +342,6 @@ MakeRootTile(WindowPtr pWin)
for (j = len; j > 0; j--)
*to++ = *from;
- if (blackRoot)
- bzero(back, sizeof(back));
-
(*pGC->ops->PutImage)((DrawablePtr)pWin->background.pixmap, pGC, 1,
0, 0, len, 4, 0, XYBitmap, (char *)back);
@@ -510,6 +502,7 @@ void
InitRootWindow(WindowPtr pWin)
{
ScreenPtr pScreen = pWin->drawable.pScreen;
+ int backFlag = CWBorderPixel | CWCursor | CWBackingStore;
if (!(*pScreen->CreateWindow)(pWin))
return; /* XXX */
@@ -518,12 +511,25 @@ InitRootWindow(WindowPtr pWin)
pWin->cursorIsNone = FALSE;
pWin->optional->cursor = rootCursor;
rootCursor->refcnt++;
- MakeRootTile(pWin);
+
+ if (!blackRoot && !whiteRoot) {
+ MakeRootTile(pWin);
+ backFlag |= CWBackPixmap;
+ }
+ else {
+ if (blackRoot)
+ pWin->background.pixel = pScreen->blackPixel;
+ else
+ pWin->background.pixel = pScreen->whitePixel;
+ backFlag |= CWBackPixel;
+ }
+
pWin->backingStore = defaultBackingStore;
pWin->forcedBS = (defaultBackingStore != NotUseful);
/* We SHOULD check for an error value here XXX */
- (*pScreen->ChangeWindowAttributes)(pWin,
- CWBackPixmap|CWBorderPixel|CWCursor|CWBackingStore);
+ (*pScreen->ChangeWindowAttributes)(pWin, backFlag);
+
+ XaceHook(XACE_WINDOW_INIT, serverClient, pWin);
MapWindow(pWin, serverClient);
}
@@ -538,9 +544,11 @@ ClippedRegionFromBox(register WindowPtr pWin, RegionPtr Rgn,
register int x, register int y,
register int w, register int h)
{
- ScreenPtr pScreen = pWin->drawable.pScreen;
+ ScreenPtr pScreen;
BoxRec box;
+ pScreen = pWin->drawable.pScreen;
+
box = *(REGION_EXTENTS(pScreen, &pWin->winSize));
/* we do these calculations to avoid overflows */
if (x > box.x1)
@@ -726,18 +734,16 @@ CreateWindow(Window wid, register WindowPtr pParent, int x, int y, unsigned w,
}
pWin->borderWidth = bw;
-#ifdef XCSECURITY
+
/* can't let untrusted clients have background None windows;
* they make it too easy to steal window contents
*/
- if (client->trustLevel != XSecurityClientTrusted)
- {
+ if (XaceHook(XACE_BACKGRND_ACCESS, client, pWin))
+ pWin->backgroundState = None;
+ else {
pWin->backgroundState = BackgroundPixel;
pWin->background.pixel = 0;
}
- else
-#endif
- pWin->backgroundState = None;
pWin->borderIsPixel = pParent->borderIsPixel;
pWin->border = pParent->border;
@@ -757,6 +763,8 @@ CreateWindow(Window wid, register WindowPtr pParent, int x, int y, unsigned w,
REGION_NULL(pScreen, &pWin->winSize);
REGION_NULL(pScreen, &pWin->borderSize);
+ XaceHook(XACE_WINDOW_INIT, client, pWin);
+
pHead = RealChildHead(pParent);
if (pHead)
{
@@ -1020,24 +1028,18 @@ ChangeWindowAttributes(register WindowPtr pWin, Mask vmask, XID *vlist, ClientPt
borderRelative = TRUE;
if (pixID == None)
{
-#ifdef XCSECURITY
/* can't let untrusted clients have background None windows */
- if (client->trustLevel == XSecurityClientTrusted)
- {
-#endif
- if (pWin->backgroundState == BackgroundPixmap)
- (*pScreen->DestroyPixmap)(pWin->background.pixmap);
- if (!pWin->parent)
- MakeRootTile(pWin);
- else
- pWin->backgroundState = None;
-#ifdef XCSECURITY
- }
- else
- { /* didn't change the background to None, so don't tell ddx */
+ if (XaceHook(XACE_BACKGRND_ACCESS, client, pWin)) {
+ if (pWin->backgroundState == BackgroundPixmap)
+ (*pScreen->DestroyPixmap)(pWin->background.pixmap);
+ if (!pWin->parent)
+ MakeRootTile(pWin);
+ else
+ pWin->backgroundState = None;
+ } else {
+ /* didn't change the backgrnd to None, so don't tell ddx */
index2 = 0;
}
-#endif
}
else if (pixID == ParentRelative)
{
@@ -1060,7 +1062,7 @@ ChangeWindowAttributes(register WindowPtr pWin, Mask vmask, XID *vlist, ClientPt
else
{
pPixmap = (PixmapPtr)SecurityLookupIDByType(client, pixID,
- RT_PIXMAP, SecurityReadAccess);
+ RT_PIXMAP, DixReadAccess);
if (pPixmap != (PixmapPtr) NULL)
{
if ((pPixmap->drawable.depth != pWin->drawable.depth) ||
@@ -1121,7 +1123,7 @@ ChangeWindowAttributes(register WindowPtr pWin, Mask vmask, XID *vlist, ClientPt
else
{
pPixmap = (PixmapPtr)SecurityLookupIDByType(client, pixID,
- RT_PIXMAP, SecurityReadAccess);
+ RT_PIXMAP, DixReadAccess);
if (pPixmap)
{
if ((pPixmap->drawable.depth != pWin->drawable.depth) ||
@@ -1331,7 +1333,7 @@ ChangeWindowAttributes(register WindowPtr pWin, Mask vmask, XID *vlist, ClientPt
goto PatchUp;
}
pCmap = (ColormapPtr)SecurityLookupIDByType(client, cmap,
- RT_COLORMAP, SecurityReadAccess);
+ RT_COLORMAP, DixReadAccess);
if (!pCmap)
{
error = BadColor;
@@ -1407,7 +1409,7 @@ ChangeWindowAttributes(register WindowPtr pWin, Mask vmask, XID *vlist, ClientPt
else
{
pCursor = (CursorPtr)SecurityLookupIDByType(client, cursorID,
- RT_CURSOR, SecurityReadAccess);
+ RT_CURSOR, DixReadAccess);
if (!pCursor)
{
error = BadCursor;
@@ -1650,7 +1652,8 @@ CreateUnclippedWinSize (register WindowPtr pWin)
pRgn = REGION_CREATE(pWin->drawable.pScreen, &box, 1);
#ifdef SHAPE
if (wBoundingShape (pWin) || wClipShape (pWin)) {
- ScreenPtr pScreen = pWin->drawable.pScreen;
+ ScreenPtr pScreen;
+ pScreen = pWin->drawable.pScreen;
REGION_TRANSLATE(pScreen, pRgn, - pWin->drawable.x,
- pWin->drawable.y);
@@ -1686,7 +1689,8 @@ SetWinSize (register WindowPtr pWin)
(int)pWin->drawable.height);
#ifdef SHAPE
if (wBoundingShape (pWin) || wClipShape (pWin)) {
- ScreenPtr pScreen = pWin->drawable.pScreen;
+ ScreenPtr pScreen;
+ pScreen = pWin->drawable.pScreen;
REGION_TRANSLATE(pScreen, &pWin->winSize, - pWin->drawable.x,
- pWin->drawable.y);
@@ -1728,7 +1732,8 @@ SetBorderSize (register WindowPtr pWin)
(int)(pWin->drawable.height + (bw<<1)));
#ifdef SHAPE
if (wBoundingShape (pWin)) {
- ScreenPtr pScreen = pWin->drawable.pScreen;
+ ScreenPtr pScreen;
+ pScreen = pWin->drawable.pScreen;
REGION_TRANSLATE(pScreen, &pWin->borderSize, - pWin->drawable.x,
- pWin->drawable.y);
@@ -1939,7 +1944,8 @@ MakeBoundingRegion (
BoxPtr pBox)
{
RegionPtr pRgn;
- ScreenPtr pScreen = pWin->drawable.pScreen;
+ ScreenPtr pScreen;
+ pScreen = pWin->drawable.pScreen;
pRgn = REGION_CREATE(pScreen, pBox, 1);
if (wBoundingShape (pWin)) {
@@ -2097,7 +2103,7 @@ WhereDoIGoInTheStack(
else
return NullWindow;
case TopIf:
- if ((!pWin->mapped || (pSib && !pSib->mapped)) && !permitOldBugs)
+ if ((!pWin->mapped || (pSib && !pSib->mapped)))
return(pWin->nextSib);
else if (pSib)
{
@@ -2112,7 +2118,7 @@ WhereDoIGoInTheStack(
else
return(pWin->nextSib);
case BottomIf:
- if ((!pWin->mapped || (pSib && !pSib->mapped)) && !permitOldBugs)
+ if ((!pWin->mapped || (pSib && !pSib->mapped)))
return(pWin->nextSib);
else if (pSib)
{
@@ -2127,7 +2133,7 @@ WhereDoIGoInTheStack(
else
return(pWin->nextSib);
case Opposite:
- if ((!pWin->mapped || (pSib && !pSib->mapped)) && !permitOldBugs)
+ if ((!pWin->mapped || (pSib && !pSib->mapped)))
return(pWin->nextSib);
else if (pSib)
{
@@ -2293,7 +2299,7 @@ ConfigureWindow(register WindowPtr pWin, register Mask mask, XID *vlist, ClientP
sibwid = (Window ) *pVlist;
pVlist++;
pSib = (WindowPtr )SecurityLookupIDByType(client, sibwid,
- RT_WINDOW, SecurityReadAccess);
+ RT_WINDOW, DixReadAccess);
if (!pSib)
{
client->errorValue = sibwid;
@@ -2719,15 +2725,9 @@ MapWindow(register WindowPtr pWin, ClientPtr client)
if (pWin->mapped)
return(Success);
-#ifdef XCSECURITY
- /* don't let an untrusted client map a child-of-trusted-window, InputOnly
- * window; too easy to steal device input
- */
- if ( (client->trustLevel != XSecurityClientTrusted) &&
- (pWin->drawable.class == InputOnly) &&
- (wClient(pWin->parent)->trustLevel == XSecurityClientTrusted) )
+ /* general check for permission to map window */
+ if (!XaceHook(XACE_MAP_ACCESS, client, pWin))
return Success;
-#endif
pScreen = pWin->drawable.pScreen;
if ( (pParent = pWin->parent) )
diff --git a/dix/xpstubs.c b/dix/xpstubs.c
index 5135cc398..3276d9dfe 100644
--- a/dix/xpstubs.c
+++ b/dix/xpstubs.c
@@ -25,7 +25,6 @@ other dealings in this Software without prior written authorization
from The Open Group.
*/
-/* $Xorg: xpstubs.c,v 1.5 2001/03/08 17:52:08 pookie Exp $ */
#ifdef HAVE_DIX_CONFIG_H
#include <dix-config.h>
@@ -35,6 +34,9 @@ from The Open Group.
#include <X11/fonts/font.h>
#ifdef XPRINT
#include "DiPrint.h"
+#else
+extern Bool XpClientIsBitmapClient(ClientPtr client);
+extern Bool XpClientIsPrintClient(ClientPtr client, FontPathElementPtr fpe);
#endif
Bool
diff --git a/doc/.gitignore b/doc/.gitignore
new file mode 100644
index 000000000..fa5407dda
--- /dev/null
+++ b/doc/.gitignore
@@ -0,0 +1,2 @@
+Xserver.1
+Xserver.1x
diff --git a/doc/Xserver.man.pre b/doc/Xserver.man.pre
index b9597f15c..2457edf22 100644
--- a/doc/Xserver.man.pre
+++ b/doc/Xserver.man.pre
@@ -159,6 +159,14 @@ default state is platform and configuration specific.
disables DPMS (display power management services). The default state
is platform and configuration specific.
.TP 8
+.BI \-extension extensionName
+disables named extension. If an unknown extension name is specified,
+a list of accepted extension names is printed.
+.TP 8
+.BI \+extension extensionName
+enables named extension. If an unknown extension name is specified,
+a list of accepted extension names is printed.
+.TP 8
.B \-f \fIvolume\fP
sets feep (bell) volume (allowable range: 0-100).
.TP 8
@@ -181,7 +189,7 @@ prints a usage message.
causes all remaining command line arguments to be ignored.
.TP 8
.B \-maxbigreqsize \fIsize\fP
-sets the maxmium big request to
+sets the maximum big request to
.I size
MB.
.TP 8
@@ -449,7 +457,7 @@ the text after the /; it is used to distinguish between instances of
<action> ::= a | i | e
-<string> ::= <dbl quoted string> | <single quoted string> | <unqouted string>
+<string> ::= <dbl quoted string> | <single quoted string> | <unquoted string>
<dbl quoted string> ::= <space> " <not dqoute>* " <space>
diff --git a/doc/c-extensions b/doc/c-extensions
new file mode 100644
index 000000000..db2ba7d77
--- /dev/null
+++ b/doc/c-extensions
@@ -0,0 +1,32 @@
+Use of extensions throughout the X server tree
+----------------------------------------------
+
+Optional extensions:
+The server will still build if your toolchain does not support these
+extensions, although the results may not be optimal.
+
+ * _X_SENTINEL(x): member x of the passed structure must be NULL, e.g.:
+ void parseOptions(Option *options _X_SENTINEL(0));
+ parseOptions("foo", "bar", NULL); /* this is OK */
+ parseOptions("foo", "bar", "baz"); /* this is not */
+ This definition comes from Xfuncproto.h in the core
+ protocol headers.
+ * _X_ATTRIBUTE_PRINTF(x, y): This function has printf-like semantics;
+ check the format string when built with
+ -Wformat (gcc) or similar.
+ * _X_EXPORT: this function should appear in symbol tables.
+ * _X_HIDDEN: this function should not appear in the _dynamic_ symbol
+ table.
+ * _X_INTERNAL: like _X_HIDDEN, but attempt to ensure that this function
+ is never called from another module.
+ * _X_INLINE: inline this functon if possible (generally obeyed unless
+ disabling optimisations).
+ * _X_DEPRECATED: warn on use of this function.
+
+Mandatory extensions:
+The server will not build if your toolchain does not support these extensions.
+
+ * named initialisers: explicitly initialising structure members, e.g.:
+ struct foo bar = { .baz = quux, .brian = "dog" };
+ * variadic macros: macros with a variable number of arguments, e.g.:
+ #define DebugF(x, ...) /**/
diff --git a/exa/Makefile.am b/exa/Makefile.am
index 98db0271f..e2f7ed302 100644
--- a/exa/Makefile.am
+++ b/exa/Makefile.am
@@ -12,7 +12,7 @@ INCLUDES = \
$(XORG_INCS) \
-I$(srcdir)/../miext/cw
-AM_CFLAGS = $(XORG_CFLAGS) @SERVER_DEFINES@ @LOADER_DEFINES@ $(DIX_CFLAGS)
+AM_CFLAGS = $(XORG_CFLAGS) $(DIX_CFLAGS)
libexa_la_SOURCES = \
exa.c \
diff --git a/exa/exa.c b/exa/exa.c
index 3e6ac76dc..195457cd5 100644
--- a/exa/exa.c
+++ b/exa/exa.c
@@ -32,6 +32,10 @@
#include <dix-config.h>
#endif
+#ifdef MITSHM
+#include "shmint.h"
+#endif
+
#include <stdlib.h>
#include "exa_priv.h"
@@ -169,7 +173,7 @@ exaLog2(int val)
{
int bits;
- if (!val)
+ if (val <= 0)
return 0;
for (bits = 0; val != 0; bits++)
val >>= 1;
@@ -549,6 +553,9 @@ exaDriverInit (ScreenPtr pScreen,
ExaDriverPtr pScreenInfo)
{
ExaScreenPrivPtr pExaScr;
+#ifdef RENDER
+ PictureScreenPtr ps;
+#endif
if (pScreenInfo->exa_major != EXA_VERSION_MAJOR ||
pScreenInfo->exa_minor > EXA_VERSION_MINOR)
@@ -562,7 +569,7 @@ exaDriverInit (ScreenPtr pScreen,
}
#ifdef RENDER
- PictureScreenPtr ps = GetPictureScreenIfSet(pScreen);
+ ps = GetPictureScreenIfSet(pScreen);
#endif
if (exaGeneration != serverGeneration)
{
@@ -629,8 +636,17 @@ exaDriverInit (ScreenPtr pScreen,
}
#endif
+#ifdef COMPOSITE
miDisableCompositeWrapper(pScreen);
+#endif
+#ifdef MITSHM
+ /* Re-register with the MI funcs, which don't allow shared pixmaps.
+ * Shared pixmaps are almost always a performance loss for us, but this
+ * still allows for SHM PutImage.
+ */
+ ShmRegisterFuncs(pScreen, NULL);
+#endif
/*
* Hookup offscreen pixmaps
*/
@@ -649,6 +665,10 @@ exaDriverInit (ScreenPtr pScreen,
pExaScr->SavedDestroyPixmap = pScreen->DestroyPixmap;
pScreen->DestroyPixmap = exaDestroyPixmap;
+
+ LogMessage(X_INFO, "EXA(%d): Offscreen pixmap area of %d bytes\n",
+ pScreen->myNum,
+ pExaScr->info->memorySize - pExaScr->info->offScreenBase);
}
else
{
@@ -667,6 +687,22 @@ exaDriverInit (ScreenPtr pScreen,
}
}
+ LogMessage(X_INFO, "EXA(%d): Driver registered support for the following"
+ " operations:\n", pScreen->myNum);
+ assert(pScreenInfo->PrepareSolid != NULL);
+ LogMessage(X_INFO, " Solid\n");
+ assert(pScreenInfo->PrepareCopy != NULL);
+ LogMessage(X_INFO, " Copy\n");
+ if (pScreenInfo->PrepareComposite != NULL) {
+ LogMessage(X_INFO, " Composite (RENDER acceleration)\n");
+ }
+ if (pScreenInfo->UploadToScreen != NULL) {
+ LogMessage(X_INFO, " UploadToScreen\n");
+ }
+ if (pScreenInfo->DownloadFromScreen != NULL) {
+ LogMessage(X_INFO, " DownloadFromScreen\n");
+ }
+
return TRUE;
}
diff --git a/exa/exa.h b/exa/exa.h
index 2cb200854..96465a775 100644
--- a/exa/exa.h
+++ b/exa/exa.h
@@ -36,6 +36,7 @@
#include "windowstr.h"
#include "gcstruct.h"
#include "picturestr.h"
+#include "fb.h"
#define EXA_VERSION_MAJOR 2
#define EXA_VERSION_MINOR 0
@@ -715,4 +716,12 @@ exaGetPixmapSize(PixmapPtr pPix);
void
exaEnableDisableFBAccess (int index, Bool enable);
+/**
+ * Returns TRUE if the given planemask covers all the significant bits in the
+ * pixel values for pDrawable.
+ */
+#define EXA_PM_IS_SOLID(_pDrawable, _pm) \
+ (((_pm) & FbFullMask((_pDrawable)->depth)) == \
+ FbFullMask((_pDrawable)->depth))
+
#endif /* EXA_H */
diff --git a/exa/exa_accel.c b/exa/exa_accel.c
index 102973ac6..d2fe2e034 100644
--- a/exa/exa_accel.c
+++ b/exa/exa_accel.c
@@ -54,12 +54,12 @@ exaFillSpans(DrawablePtr pDrawable, GCPtr pGC, int n,
pixmaps[0].as_dst = TRUE;
pixmaps[0].as_src = FALSE;
- pixmaps[0].pPix = exaGetDrawablePixmap (pDrawable);
+ pixmaps[0].pPix = pPixmap = exaGetDrawablePixmap (pDrawable);
if (pExaScr->swappedOut ||
pGC->fillStyle != FillSolid ||
- pDrawable->width > pExaScr->info->maxX ||
- pDrawable->height > pExaScr->info->maxY)
+ pPixmap->drawable.width > pExaScr->info->maxX ||
+ pPixmap->drawable.height > pExaScr->info->maxY)
{
exaDoMigration (pixmaps, 1, FALSE);
ExaCheckFillSpans (pDrawable, pGC, n, ppt, pwidth, fSorted);
@@ -393,19 +393,19 @@ exaCopyNtoN (DrawablePtr pSrcDrawable,
pixmaps[0].as_dst = TRUE;
pixmaps[0].as_src = FALSE;
- pixmaps[0].pPix = exaGetDrawablePixmap (pDstDrawable);
+ pixmaps[0].pPix = pDstPixmap = exaGetDrawablePixmap (pDstDrawable);
pixmaps[1].as_dst = FALSE;
pixmaps[1].as_src = TRUE;
- pixmaps[1].pPix = exaGetDrawablePixmap (pSrcDrawable);
+ pixmaps[1].pPix = pSrcPixmap = exaGetDrawablePixmap (pSrcDrawable);
/* Respect maxX/maxY in a trivial way: don't set up drawing when we might
* violate the limits. The proper solution would be a temporary pixmap
* adjusted so that the drawing happened within limits.
*/
- if (pSrcDrawable->width > pExaScr->info->maxX ||
- pSrcDrawable->height > pExaScr->info->maxY ||
- pDstDrawable->width > pExaScr->info->maxX ||
- pDstDrawable->height > pExaScr->info->maxY)
+ if (pSrcPixmap->drawable.width > pExaScr->info->maxX ||
+ pSrcPixmap->drawable.height > pExaScr->info->maxY ||
+ pDstPixmap->drawable.width > pExaScr->info->maxX ||
+ pDstPixmap->drawable.height > pExaScr->info->maxY)
{
exaDoMigration (pixmaps, 2, FALSE);
goto fallback;
@@ -414,7 +414,8 @@ exaCopyNtoN (DrawablePtr pSrcDrawable,
}
/* Mixed directions must be handled specially if the card is lame */
- if (pExaScr->info->flags & EXA_TWO_BITBLT_DIRECTIONS && (dx*dy) < 0) {
+ if (pExaScr->info->flags & EXA_TWO_BITBLT_DIRECTIONS &&
+ reverse != upsidedown) {
if (!exaCopyNtoNTwoDir(pSrcDrawable, pDstDrawable, pGC, pbox, nbox,
dx, dy))
goto fallback;
@@ -424,7 +425,7 @@ exaCopyNtoN (DrawablePtr pSrcDrawable,
if ((pSrcPixmap = exaGetOffscreenPixmap (pSrcDrawable, &src_off_x, &src_off_y)) &&
(pDstPixmap = exaGetOffscreenPixmap (pDstDrawable, &dst_off_x, &dst_off_y)) &&
(*pExaScr->info->PrepareCopy) (pSrcPixmap, pDstPixmap,
- dx, dy,
+ reverse ? -1 : 1, upsidedown ? -1 : 1,
pGC ? pGC->alu : GXcopy,
pGC ? pGC->planemask : FB_ALLONES))
{
@@ -643,12 +644,12 @@ exaPolyFillRect(DrawablePtr pDrawable,
pixmaps[0].as_dst = TRUE;
pixmaps[0].as_src = FALSE;
- pixmaps[0].pPix = exaGetDrawablePixmap (pDrawable);
+ pixmaps[0].pPix = pPixmap = exaGetDrawablePixmap (pDrawable);
if (pExaScr->swappedOut ||
pGC->fillStyle != FillSolid ||
- pDrawable->width > pExaScr->info->maxX ||
- pDrawable->height > pExaScr->info->maxY)
+ pPixmap->drawable.width > pExaScr->info->maxX ||
+ pPixmap->drawable.height > pExaScr->info->maxY)
{
exaDoMigration (pixmaps, 1, FALSE);
ExaCheckPolyFillRect (pDrawable, pGC, nrect, prect);
@@ -767,14 +768,14 @@ exaSolidBoxClipped (DrawablePtr pDrawable,
pixmaps[0].as_dst = TRUE;
pixmaps[0].as_src = FALSE;
- pixmaps[0].pPix = exaGetDrawablePixmap (pDrawable);
+ pixmaps[0].pPix = pPixmap = exaGetDrawablePixmap (pDrawable);
/* We need to initialize x/yoff for tracking damage in the fallback case */
pPixmap = exaGetOffscreenPixmap (pDrawable, &xoff, &yoff);
if (pExaScr->swappedOut ||
- pDrawable->width > pExaScr->info->maxX ||
- pDrawable->height > pExaScr->info->maxY)
+ pPixmap->drawable.width > pExaScr->info->maxX ||
+ pPixmap->drawable.height > pExaScr->info->maxY)
{
exaDoMigration (pixmaps, 1, FALSE);
goto fallback;
@@ -1042,10 +1043,10 @@ exaFillRegionSolid (DrawablePtr pDrawable,
pixmaps[0].as_dst = TRUE;
pixmaps[0].as_src = FALSE;
- pixmaps[0].pPix = exaGetDrawablePixmap (pDrawable);
+ pixmaps[0].pPix = pPixmap = exaGetDrawablePixmap (pDrawable);
- if (pDrawable->width > pExaScr->info->maxX ||
- pDrawable->height > pExaScr->info->maxY)
+ if (pPixmap->drawable.width > pExaScr->info->maxX ||
+ pPixmap->drawable.height > pExaScr->info->maxY)
{
exaDoMigration (pixmaps, 1, FALSE);
goto fallback;
@@ -1117,7 +1118,7 @@ exaFillRegionTiled (DrawablePtr pDrawable,
pixmaps[0].as_dst = TRUE;
pixmaps[0].as_src = FALSE;
- pixmaps[0].pPix = exaGetDrawablePixmap (pDrawable);
+ pixmaps[0].pPix = pPixmap = exaGetDrawablePixmap (pDrawable);
pixmaps[1].as_dst = FALSE;
pixmaps[1].as_src = TRUE;
pixmaps[1].pPix = pTile;
@@ -1125,8 +1126,8 @@ exaFillRegionTiled (DrawablePtr pDrawable,
/* We need to initialize x/yoff for tracking damage in the fallback case */
pPixmap = exaGetOffscreenPixmap (pDrawable, &xoff, &yoff);
- if (pDrawable->width > pExaScr->info->maxX ||
- pDrawable->height > pExaScr->info->maxY ||
+ if (pPixmap->drawable.width > pExaScr->info->maxX ||
+ pPixmap->drawable.height > pExaScr->info->maxY ||
tileWidth > pExaScr->info->maxX ||
tileHeight > pExaScr->info->maxY)
{
diff --git a/exa/exa_offscreen.c b/exa/exa_offscreen.c
index d5864dc57..fd3599e8c 100644
--- a/exa/exa_offscreen.c
+++ b/exa/exa_offscreen.c
@@ -414,7 +414,6 @@ exaOffscreenInit (ScreenPtr pScreen)
if (!area)
return FALSE;
-
area->state = ExaOffscreenAvail;
area->base_offset = pExaScr->info->offScreenBase;
area->offset = area->base_offset;
@@ -423,10 +422,6 @@ exaOffscreenInit (ScreenPtr pScreen)
area->next = NULL;
area->score = 0;
-#if DEBUG_OFFSCREEN
- ErrorF("============ initial memory block of %d\n", area->size);
-#endif
-
/* Add it to the free areas */
pExaScr->info->offScreenAreas = area;
diff --git a/exa/exa_priv.h b/exa/exa_priv.h
index c725b4da0..80cf60903 100644
--- a/exa/exa_priv.h
+++ b/exa/exa_priv.h
@@ -138,14 +138,6 @@ extern int exaPixmapPrivateIndex;
/** Align an offset to a power-of-two alignment */
#define EXA_ALIGN2(offset, align) (((offset) + (align) - 1) & ~((align) - 1))
-/**
- * Returns TRUE if the given planemask covers all the significant bits in the
- * pixel values for pDrawable.
- */
-#define EXA_PM_IS_SOLID(_pDrawable, _pm) \
- (((_pm) & FbFullMask((_pDrawable)->depth)) == \
- FbFullMask((_pDrawable)->depth))
-
#define EXA_PIXMAP_SCORE_MOVE_IN 10
#define EXA_PIXMAP_SCORE_MAX 20
#define EXA_PIXMAP_SCORE_MOVE_OUT -10
diff --git a/exa/exa_render.c b/exa/exa_render.c
index 790a359a3..a73582000 100644
--- a/exa/exa_render.c
+++ b/exa/exa_render.c
@@ -282,8 +282,12 @@ exaTryDriverSolidFill(PicturePtr pSrc,
return -1;
}
- exaGetPixelFromRGBA(&pixel, red, green, blue, alpha,
- pDst->format);
+ if (!exaGetPixelFromRGBA(&pixel, red, green, blue, alpha,
+ pDst->format))
+ {
+ REGION_UNINIT(pDst->pDrawable->pScreen, &region);
+ return -1;
+ }
if (!(*pExaScr->info->PrepareSolid) (pDstPix, GXcopy, 0xffffffff, pixel))
{
@@ -333,16 +337,21 @@ exaTryDriverComposite(CARD8 op,
struct _Pixmap scratch;
ExaMigrationRec pixmaps[3];
+ pSrcPix = exaGetDrawablePixmap(pSrc->pDrawable);
+ pDstPix = exaGetDrawablePixmap(pDst->pDrawable);
+ if (pMask)
+ pMaskPix = exaGetDrawablePixmap(pMask->pDrawable);
+
/* Bail if we might exceed coord limits by rendering from/to these. We
* should really be making some scratch pixmaps with offsets and coords
* adjusted to deal with this, but it hasn't been done yet.
*/
- if (pSrc->pDrawable->width > pExaScr->info->maxX ||
- pSrc->pDrawable->height > pExaScr->info->maxY ||
- pDst->pDrawable->width > pExaScr->info->maxX ||
- pDst->pDrawable->height > pExaScr->info->maxY ||
- (pMask && (pMask->pDrawable->width > pExaScr->info->maxX ||
- pMask->pDrawable->height > pExaScr->info->maxY)))
+ if (pSrcPix->drawable.width > pExaScr->info->maxX ||
+ pSrcPix->drawable.height > pExaScr->info->maxY ||
+ pDstPix->drawable.width > pExaScr->info->maxX ||
+ pDstPix->drawable.height > pExaScr->info->maxY ||
+ (pMask && (pMaskPix->drawable.width > pExaScr->info->maxX ||
+ pMaskPix->drawable.height > pExaScr->info->maxY)))
{
return -1;
}
@@ -450,24 +459,72 @@ exaTryDriverComposite(CARD8 op,
return 1;
}
+/**
+ * exaTryMagicTwoPassCompositeHelper implements PictOpOver using two passes of
+ * simpler operations PictOpOutReverse and PictOpAdd. Mainly used for component
+ * alpha and limited 1-tmu cards.
+ *
+ * From http://anholt.livejournal.com/32058.html:
+ *
+ * The trouble is that component-alpha rendering requires two different sources
+ * for blending: one for the source value to the blender, which is the
+ * per-channel multiplication of source and mask, and one for the source alpha
+ * for multiplying with the destination channels, which is the multiplication
+ * of the source channels by the mask alpha. So the equation for Over is:
+ *
+ * dst.A = src.A * mask.A + (1 - (src.A * mask.A)) * dst.A
+ * dst.R = src.R * mask.R + (1 - (src.A * mask.R)) * dst.R
+ * dst.G = src.G * mask.G + (1 - (src.A * mask.G)) * dst.G
+ * dst.B = src.B * mask.B + (1 - (src.A * mask.B)) * dst.B
+ *
+ * But we can do some simpler operations, right? How about PictOpOutReverse,
+ * which has a source factor of 0 and dest factor of (1 - source alpha). We
+ * can get the source alpha value (srca.X = src.A * mask.X) out of the texture
+ * blenders pretty easily. So we can do a component-alpha OutReverse, which
+ * gets us:
+ *
+ * dst.A = 0 + (1 - (src.A * mask.A)) * dst.A
+ * dst.R = 0 + (1 - (src.A * mask.R)) * dst.R
+ * dst.G = 0 + (1 - (src.A * mask.G)) * dst.G
+ * dst.B = 0 + (1 - (src.A * mask.B)) * dst.B
+ *
+ * OK. And if an op doesn't use the source alpha value for the destination
+ * factor, then we can do the channel multiplication in the texture blenders
+ * to get the source value, and ignore the source alpha that we wouldn't use.
+ * We've supported this in the Radeon driver for a long time. An example would
+ * be PictOpAdd, which does:
+ *
+ * dst.A = src.A * mask.A + dst.A
+ * dst.R = src.R * mask.R + dst.R
+ * dst.G = src.G * mask.G + dst.G
+ * dst.B = src.B * mask.B + dst.B
+ *
+ * Hey, this looks good! If we do a PictOpOutReverse and then a PictOpAdd right
+ * after it, we get:
+ *
+ * dst.A = src.A * mask.A + ((1 - (src.A * mask.A)) * dst.A)
+ * dst.R = src.R * mask.R + ((1 - (src.A * mask.R)) * dst.R)
+ * dst.G = src.G * mask.G + ((1 - (src.A * mask.G)) * dst.G)
+ * dst.B = src.B * mask.B + ((1 - (src.A * mask.B)) * dst.B)
+ */
+
static int
-exaTryComponentAlphaHelper(CARD8 op,
- PicturePtr pSrc,
- PicturePtr pMask,
- PicturePtr pDst,
- INT16 xSrc,
- INT16 ySrc,
- INT16 xMask,
- INT16 yMask,
- INT16 xDst,
- INT16 yDst,
- CARD16 width,
- CARD16 height)
+exaTryMagicTwoPassCompositeHelper(CARD8 op,
+ PicturePtr pSrc,
+ PicturePtr pMask,
+ PicturePtr pDst,
+ INT16 xSrc,
+ INT16 ySrc,
+ INT16 xMask,
+ INT16 yMask,
+ INT16 xDst,
+ INT16 yDst,
+ CARD16 width,
+ CARD16 height)
{
ExaScreenPriv (pDst->pDrawable->pScreen);
assert(op == PictOpOver);
- assert(pMask->componentAlpha == TRUE);
if (pExaScr->info->CheckComposite &&
(!(*pExaScr->info->CheckComposite)(PictOpOutReverse, pSrc, pMask,
@@ -533,7 +590,8 @@ exaComposite(CARD8 op,
if (op == PictOpSrc)
{
if (pSrc->pDrawable->width == 1 &&
- pSrc->pDrawable->height == 1 && pSrc->repeat)
+ pSrc->pDrawable->height == 1 && pSrc->repeat &&
+ pSrc->repeatType == RepeatNormal)
{
ret = exaTryDriverSolidFill(pSrc, pDst, xSrc, ySrc, xDst, yDst,
width, height);
@@ -573,21 +631,34 @@ exaComposite(CARD8 op,
pMask->repeat = 0;
if (pExaScr->info->PrepareComposite &&
+ (!pSrc->repeat || pSrc->repeat == RepeatNormal) &&
+ (!pMask || !pMask->repeat || pMask->repeat == RepeatNormal) &&
!pSrc->alphaMap && (!pMask || !pMask->alphaMap) && !pDst->alphaMap)
{
+ Bool isSrcSolid;
+
ret = exaTryDriverComposite(op, pSrc, pMask, pDst, xSrc, ySrc, xMask,
yMask, xDst, yDst, width, height);
if (ret == 1)
goto done;
+ /* For generic masks and solid src pictures, mach64 can do Over in two
+ * passes, similar to the component-alpha case.
+ */
+ isSrcSolid = pSrc->pDrawable->width == 1 &&
+ pSrc->pDrawable->height == 1 &&
+ pSrc->repeat;
+
/* If we couldn't do the Composite in a single pass, and it was a
* component-alpha Over, see if we can do it in two passes with
* an OutReverse and then an Add.
*/
- if (ret == -1 && pMask && pMask->componentAlpha && op == PictOpOver) {
- ret = exaTryComponentAlphaHelper(op, pSrc, pMask, pDst, xSrc, ySrc,
- xMask, yMask, xDst, yDst,
- width, height);
+ if (ret == -1 && op == PictOpOver && pMask &&
+ (pMask->componentAlpha || isSrcSolid)) {
+ ret = exaTryMagicTwoPassCompositeHelper(op, pSrc, pMask, pDst,
+ xSrc, ySrc,
+ xMask, yMask, xDst, yDst,
+ width, height);
if (ret == 1)
goto done;
}
diff --git a/fb/Makefile.am b/fb/Makefile.am
index 7b024aa75..1649669c0 100644
--- a/fb/Makefile.am
+++ b/fb/Makefile.am
@@ -1,17 +1,19 @@
-noinst_LTLIBRARIES = libfb.la libfbmmx.la
+noinst_LTLIBRARIES = libfb.la libwfb.la libfbmmx.la
INCLUDES = \
-I$(top_srcdir)/hw/xfree86/os-support \
-I$(top_srcdir)/hw/xfree86/os-support/bus \
-I$(top_srcdir)/hw/xfree86/common
-AM_CFLAGS = $(DIX_CFLAGS) @SERVER_DEFINES@ @MODULE_DEFINES@ @LOADER_DEFINES@
+AM_CFLAGS = $(DIX_CFLAGS)
if XORG
-sdk_HEADERS = fb.h fbrop.h fbpseudocolor.h fboverlay.h
+sdk_HEADERS = fb.h fbrop.h fbpseudocolor.h fboverlay.h wfbrename.h
endif
+libfb_la_CFLAGS = $(AM_CFLAGS)
+
if MMX_CAPABLE
-AM_CFLAGS += -DUSE_MMX
+libfb_la_CFLAGS += -DUSE_MMX
libfbmmx_la_CFLAGS = \
$(DIX_CFLAGS) \
@@ -23,6 +25,8 @@ libfbmmx_la_CFLAGS = \
--param large-function-growth=10000
endif
+libwfb_la_CFLAGS = $(AM_CFLAGS) -DFB_ACCESS_WRAPPER
+
libfbmmx_la_SOURCES = \
fbmmx.c \
fbmmx.h
@@ -70,6 +74,8 @@ libfb_la_SOURCES = \
fbedge.c \
fbedgeimp.h
+libwfb_la_SOURCES = $(libfb_la_SOURCES)
+
libfb_la_LIBADD = libfbmmx.la
EXTRA_DIST = fbcmap.c
diff --git a/fb/fb.h b/fb/fb.h
index ae2ab33e6..e60507874 100644
--- a/fb/fb.h
+++ b/fb/fb.h
@@ -1,5 +1,4 @@
/*
- * $XFree86: xc/programs/Xserver/fb/fb.h,v 1.36tsi Exp $
*
* Copyright © 1998 Keith Packard
*
@@ -22,7 +21,6 @@
* PERFORMANCE OF THIS SOFTWARE.
*/
-/* $XdotOrg: xc/programs/Xserver/fb/fb.h,v 1.12 2005/08/24 11:18:33 daniels Exp $ */
#ifndef _FB_H_
#define _FB_H_
@@ -46,6 +44,39 @@
#include "picture.h"
#endif
+#ifdef FB_ACCESS_WRAPPER
+
+#include "wfbrename.h"
+#define FBPREFIX(x) wfb##x
+#define WRITE(ptr, val) ((*wfbWriteMemory)((ptr), (val), sizeof(*(ptr))))
+#define READ(ptr) ((*wfbReadMemory)((ptr), sizeof(*(ptr))))
+
+#define MEMCPY_WRAPPED(dst, src, size) do { \
+ size_t _i; \
+ CARD8 *_dst = (CARD8*)(dst), *_src = (CARD8*)(src); \
+ for(_i = 0; _i < size; _i++) { \
+ WRITE(_dst +_i, READ(_src + _i)); \
+ } \
+} while(0)
+
+#define MEMSET_WRAPPED(dst, val, size) do { \
+ size_t _i; \
+ CARD8 *_dst = (CARD8*)(dst); \
+ for(_i = 0; _i < size; _i++) { \
+ WRITE(_dst +_i, (val)); \
+ } \
+} while(0)
+
+#else
+
+#define FBPREFIX(x) fb##x
+#define WRITE(ptr, val) (*(ptr) = (val))
+#define READ(ptr) (*(ptr))
+#define MEMCPY_WRAPPED(dst, src, size) memcpy((dst), (src), (size))
+#define MEMSET_WRAPPED(dst, val, size) memset((dst), (val), (size))
+
+#endif
+
/*
* This single define controls the basic size of data manipulated
* by this software; it must be log2(sizeof (FbBits) * 8)
@@ -224,8 +255,8 @@ extern void fbSetBits (FbStip *bits, int stride, FbStip data);
#define FbPtrOffset(p,o,t) ((t *) ((CARD8 *) (p) + (o)))
#define FbSelectPatternPart(xor,o,t) ((xor) >> (FbPatternOffset (o,t) << 3))
-#define FbStorePart(dst,off,t,xor) (*FbPtrOffset(dst,off,t) = \
- FbSelectPart(xor,off,t))
+#define FbStorePart(dst,off,t,xor) (WRITE(FbPtrOffset(dst,off,t), \
+ FbSelectPart(xor,off,t)))
#ifndef FbSelectPart
#define FbSelectPart(x,o,t) FbSelectPatternPart(x,o,t)
#endif
@@ -405,7 +436,7 @@ extern void fbSetBits (FbStip *bits, int stride, FbStip data);
FbStorePart(dst,sizeof (FbBits) - 1,CARD8,xor); \
break; \
default: \
- *dst = FbDoMaskRRop(*dst, and, xor, l); \
+ WRITE(dst, FbDoMaskRRop(READ(dst), and, xor, l)); \
break; \
} \
}
@@ -425,7 +456,7 @@ extern void fbSetBits (FbStip *bits, int stride, FbStip data);
break; \
FbDoRightMaskByteRRop6Cases(dst,xor) \
default: \
- *dst = FbDoMaskRRop (*dst, and, xor, r); \
+ WRITE(dst, FbDoMaskRRop (READ(dst), and, xor, r)); \
} \
}
#endif
@@ -457,20 +488,20 @@ extern void fbSetBits (FbStip *bits, int stride, FbStip data);
* The term "lane" comes from the hardware term "byte-lane" which
*/
-#define FbLaneCase1(n,a,o) ((n) == 0x01 ? \
- (*(CARD8 *) ((a)+FbPatternOffset(o,CARD8)) = \
- fgxor) : 0)
-#define FbLaneCase2(n,a,o) ((n) == 0x03 ? \
- (*(CARD16 *) ((a)+FbPatternOffset(o,CARD16)) = \
+#define FbLaneCase1(n,a,o) ((n) == 0x01 ? (void) \
+ WRITE((CARD8 *) ((a)+FbPatternOffset(o,CARD8)), \
+ fgxor) : (void) 0)
+#define FbLaneCase2(n,a,o) ((n) == 0x03 ? (void) \
+ WRITE((CARD16 *) ((a)+FbPatternOffset(o,CARD16)), \
fgxor) : \
((void)FbLaneCase1((n)&1,a,o), \
FbLaneCase1((n)>>1,a,(o)+1)))
-#define FbLaneCase4(n,a,o) ((n) == 0x0f ? \
- (*(CARD32 *) ((a)+FbPatternOffset(o,CARD32)) = \
+#define FbLaneCase4(n,a,o) ((n) == 0x0f ? (void) \
+ WRITE((CARD32 *) ((a)+FbPatternOffset(o,CARD32)), \
fgxor) : \
((void)FbLaneCase2((n)&3,a,o), \
FbLaneCase2((n)>>2,a,(o)+2)))
-#define FbLaneCase8(n,a,o) ((n) == 0x0ff ? (*(FbBits *) ((a)+(o)) = fgxor) : \
+#define FbLaneCase8(n,a,o) ((n) == 0x0ff ? (void) (*(FbBits *) ((a)+(o)) = fgxor) : \
((void)FbLaneCase4((n)&15,a,o), \
FbLaneCase4((n)>>4,a,(o)+4)))
@@ -590,6 +621,32 @@ extern WindowPtr *WindowTable;
#define FB_SCREEN_PRIVATE
#endif
+/* Framebuffer access wrapper */
+typedef FbBits (*ReadMemoryProcPtr)(const void *src, int size);
+typedef void (*WriteMemoryProcPtr)(void *dst, FbBits value, int size);
+typedef void (*SetupWrapProcPtr)(ReadMemoryProcPtr *pRead,
+ WriteMemoryProcPtr *pWrite,
+ DrawablePtr pDraw);
+typedef void (*FinishWrapProcPtr)(DrawablePtr pDraw);
+
+#ifdef FB_ACCESS_WRAPPER
+
+#define fbPrepareAccess(pDraw) \
+ fbGetScreenPrivate((pDraw)->pScreen)->setupWrap( \
+ &wfbReadMemory, \
+ &wfbWriteMemory, \
+ (pDraw))
+#define fbFinishAccess(pDraw) \
+ fbGetScreenPrivate((pDraw)->pScreen)->finishWrap(pDraw)
+
+#else
+
+#define fbPrepareAccess(pPix)
+#define fbFinishAccess(pDraw)
+
+#endif
+
+
#ifdef FB_SCREEN_PRIVATE
extern int fbScreenPrivateIndex;
extern int fbGetScreenPrivateIndex(void);
@@ -598,6 +655,10 @@ extern int fbGetScreenPrivateIndex(void);
typedef struct {
unsigned char win32bpp; /* window bpp for 32-bpp images */
unsigned char pix32bpp; /* pixmap bpp for 32-bpp images */
+#ifdef FB_ACCESS_WRAPPER
+ SetupWrapProcPtr setupWrap; /* driver hook to set pixmap access wrapping */
+ FinishWrapProcPtr finishWrap; /* driver hook to clean up pixmap access wrapping */
+#endif
} FbScreenPrivRec, *FbScreenPrivPtr;
#define fbGetScreenPrivate(pScreen) ((FbScreenPrivPtr) \
@@ -676,6 +737,7 @@ typedef struct {
(xoff) = __fbPixOffXPix(_pPix); \
(yoff) = __fbPixOffYPix(_pPix); \
} \
+ fbPrepareAccess(pDrawable); \
(pointer) = (FbBits *) _pPix->devPrivate.ptr; \
(stride) = ((int) _pPix->devKind) / sizeof (FbBits); (void)(stride); \
(bpp) = _pPix->drawable.bitsPerPixel; (void)(bpp); \
@@ -692,6 +754,7 @@ typedef struct {
(xoff) = __fbPixOffXPix(_pPix); \
(yoff) = __fbPixOffYPix(_pPix); \
} \
+ fbPrepareAccess(pDrawable); \
(pointer) = (FbStip *) _pPix->devPrivate.ptr; \
(stride) = ((int) _pPix->devKind) / sizeof (FbStip); (void)(stride); \
(bpp) = _pPix->drawable.bitsPerPixel; (void)(bpp); \
@@ -1279,6 +1342,9 @@ void
fbClearVisualTypes(void);
Bool
+fbHasVisualTypes (int depth);
+
+Bool
fbSetVisualTypes (int depth, int visuals, int bitsPerRGB);
Bool
@@ -1741,6 +1807,30 @@ fbSetupScreen(ScreenPtr pScreen,
int bpp); /* bits per pixel of frame buffer */
Bool
+wfbFinishScreenInit(ScreenPtr pScreen,
+ pointer pbits,
+ int xsize,
+ int ysize,
+ int dpix,
+ int dpiy,
+ int width,
+ int bpp,
+ SetupWrapProcPtr setupWrap,
+ FinishWrapProcPtr finishWrap);
+
+Bool
+wfbScreenInit(ScreenPtr pScreen,
+ pointer pbits,
+ int xsize,
+ int ysize,
+ int dpix,
+ int dpiy,
+ int width,
+ int bpp,
+ SetupWrapProcPtr setupWrap,
+ FinishWrapProcPtr finishWrap);
+
+Bool
fbFinishScreenInit(ScreenPtr pScreen,
pointer pbits,
int xsize,
@@ -1996,6 +2086,11 @@ fbReplicatePixel (Pixel p, int bpp);
void
fbReduceRasterOp (int rop, FbBits fg, FbBits pm, FbBits *andp, FbBits *xorp);
+#ifdef FB_ACCESS_WRAPPER
+extern ReadMemoryProcPtr wfbReadMemory;
+extern WriteMemoryProcPtr wfbWriteMemory;
+#endif
+
/*
* fbwindow.c
*/
diff --git a/fb/fb24_32.c b/fb/fb24_32.c
index d18ef70ce..00b739b25 100644
--- a/fb/fb24_32.c
+++ b/fb/fb24_32.c
@@ -1,5 +1,4 @@
/*
- * $XFree86: xc/programs/Xserver/fb/fb24_32.c,v 1.4 2000/08/09 17:50:51 keithp Exp $
*
* Copyright © 2000 SuSE, Inc.
*
@@ -28,9 +27,6 @@
#endif
#include <string.h>
-#ifdef XFree86LOADER
-#include "xf86.h"
-#endif
#include "fb.h"
@@ -42,18 +38,18 @@
* by reading/writing aligned CARD32s where it's easy
*/
-#define Get8(a) ((CARD32) *(a))
+#define Get8(a) ((CARD32) READ(a))
#if BITMAP_BIT_ORDER == MSBFirst
#define Get24(a) ((Get8(a) << 16) | (Get8((a)+1) << 8) | Get8((a)+2))
-#define Put24(a,p) (((a)[0] = (CARD8) ((p) >> 16)), \
- ((a)[1] = (CARD8) ((p) >> 8)), \
- ((a)[2] = (CARD8) (p)))
+#define Put24(a,p) ((WRITE((a+0), (CARD8) ((p) >> 16))), \
+ (WRITE((a+1), (CARD8) ((p) >> 8))), \
+ (WRITE((a+2), (CARD8) (p))))
#else
#define Get24(a) (Get8(a) | (Get8((a)+1) << 8) | (Get8((a)+2)<<16))
-#define Put24(a,p) (((a)[0] = (CARD8) (p)), \
- ((a)[1] = (CARD8) ((p) >> 8)), \
- ((a)[2] = (CARD8) ((p) >> 16)))
+#define Put24(a,p) ((WRITE((a+0), (CARD8) (p))), \
+ (WRITE((a+1), (CARD8) ((p) >> 8))), \
+ (WRITE((a+2), (CARD8) ((p) >> 16))))
#endif
typedef void (*fb24_32BltFunc) (CARD8 *srcLine,
@@ -110,7 +106,7 @@ fb24_32BltDown (CARD8 *srcLine,
while (((long) dst & 3) && w)
{
w--;
- pixel = *src++;
+ pixel = READ(src++);
pixel = FbDoDestInvarientMergeRop(pixel);
Put24 (dst, pixel);
dst += 3;
@@ -119,35 +115,35 @@ fb24_32BltDown (CARD8 *srcLine,
while (w >= 4)
{
CARD32 s0, s1;
- s0 = *src++;
+ s0 = READ(src++);
s0 = FbDoDestInvarientMergeRop(s0);
- s1 = *src++;
+ s1 = READ(src++);
s1 = FbDoDestInvarientMergeRop(s1);
#if BITMAP_BIT_ORDER == LSBFirst
- *(CARD32 *)(dst) = (s0 & 0xffffff) | (s1 << 24);
+ WRITE((CARD32 *)dst, (s0 & 0xffffff) | (s1 << 24));
#else
- *(CARD32 *)(dst) = (s0 << 8) | ((s1 & 0xffffff) >> 16);
+ WRITE((CARD32 *)dst, (s0 << 8) | ((s1 & 0xffffff) >> 16));
#endif
- s0 = *src++;
+ s0 = READ(src++);
s0 = FbDoDestInvarientMergeRop(s0);
#if BITMAP_BIT_ORDER == LSBFirst
- *(CARD32 *)(dst+4) = ((s1 & 0xffffff) >> 8) | (s0 << 16);
+ WRITE((CARD32 *)(dst+4), ((s1 & 0xffffff) >> 8) | (s0 << 16));
#else
- *(CARD32 *)(dst+4) = (s1 << 16) | ((s0 & 0xffffff) >> 8);
+ WRITE((CARD32 *)(dst+4), (s1 << 16) | ((s0 & 0xffffff) >> 8));
#endif
- s1 = *src++;
+ s1 = READ(src++);
s1 = FbDoDestInvarientMergeRop(s1);
#if BITMAP_BIT_ORDER == LSBFirst
- *(CARD32 *)(dst+8) = ((s0 & 0xffffff) >> 16) | (s1 << 8);
+ WRITE((CARD32 *)(dst+8), ((s0 & 0xffffff) >> 16) | (s1 << 8));
#else
- *(CARD32 *)(dst+8) = (s0 << 24) | (s1 & 0xffffff);
+ WRITE((CARD32 *)(dst+8), (s0 << 24) | (s1 & 0xffffff));
#endif
dst += 12;
w -= 4;
}
while (w--)
{
- pixel = *src++;
+ pixel = READ(src++);
pixel = FbDoDestInvarientMergeRop(pixel);
Put24 (dst, pixel);
dst += 3;
@@ -157,7 +153,7 @@ fb24_32BltDown (CARD8 *srcLine,
{
while (w--)
{
- pixel = *src++;
+ pixel = READ(src++);
dpixel = Get24 (dst);
pixel = FbDoMergeRop(pixel, dpixel);
Put24 (dst, pixel);
@@ -209,40 +205,40 @@ fb24_32BltUp (CARD8 *srcLine,
w--;
pixel = Get24(src);
src += 3;
- *dst++ = FbDoDestInvarientMergeRop(pixel);
+ WRITE(dst++, FbDoDestInvarientMergeRop(pixel));
}
/* Do four aligned pixels at a time */
while (w >= 4)
{
CARD32 s0, s1;
- s0 = *(CARD32 *)(src);
+ s0 = READ((CARD32 *)src);
#if BITMAP_BIT_ORDER == LSBFirst
pixel = s0 & 0xffffff;
#else
pixel = s0 >> 8;
#endif
- *dst++ = FbDoDestInvarientMergeRop(pixel);
- s1 = *(CARD32 *)(src+4);
+ WRITE(dst++, FbDoDestInvarientMergeRop(pixel));
+ s1 = READ((CARD32 *)(src+4));
#if BITMAP_BIT_ORDER == LSBFirst
pixel = (s0 >> 24) | ((s1 << 8) & 0xffffff);
#else
pixel = ((s0 << 16) & 0xffffff) | (s1 >> 16);
#endif
- *dst++ = FbDoDestInvarientMergeRop(pixel);
- s0 = *(CARD32 *)(src+8);
+ WRITE(dst++, FbDoDestInvarientMergeRop(pixel));
+ s0 = READ((CARD32 *)(src+8));
#if BITMAP_BIT_ORDER == LSBFirst
pixel = (s1 >> 16) | ((s0 << 16) & 0xffffff);
#else
pixel = ((s1 << 8) & 0xffffff) | (s0 >> 24);
#endif
- *dst++ = FbDoDestInvarientMergeRop(pixel);
+ WRITE(dst++, FbDoDestInvarientMergeRop(pixel));
#if BITMAP_BIT_ORDER == LSBFirst
pixel = s0 >> 8;
#else
pixel = s0 & 0xffffff;
#endif
- *dst++ = FbDoDestInvarientMergeRop(pixel);
+ WRITE(dst++, FbDoDestInvarientMergeRop(pixel));
src += 12;
w -= 4;
}
@@ -251,7 +247,7 @@ fb24_32BltUp (CARD8 *srcLine,
w--;
pixel = Get24(src);
src += 3;
- *dst++ = FbDoDestInvarientMergeRop(pixel);
+ WRITE(dst++, FbDoDestInvarientMergeRop(pixel));
}
}
else
@@ -260,7 +256,7 @@ fb24_32BltUp (CARD8 *srcLine,
{
pixel = Get24(src);
src += 3;
- *dst = FbDoMergeRop(pixel, *dst);
+ WRITE(dst, FbDoMergeRop(pixel, READ(dst)));
dst++;
}
}
@@ -309,6 +305,8 @@ fb24_32GetSpans(DrawablePtr pDrawable,
ppt++;
pwidth++;
}
+
+ fbFinishAccess (pDrawable);
}
void
@@ -370,6 +368,8 @@ fb24_32SetSpans (DrawablePtr pDrawable,
ppt++;
pwidth++;
}
+
+ fbFinishAccess (pDrawable);
}
/*
@@ -433,6 +433,8 @@ fb24_32PutZImage (DrawablePtr pDrawable,
alu,
pm);
}
+
+ fbFinishAccess (pDrawable);
}
void
@@ -467,6 +469,8 @@ fb24_32GetImage (DrawablePtr pDrawable,
fb24_32BltUp (src + (y + srcYoff) * srcStride, srcStride, x + srcXoff,
(CARD8 *) d, dstStride, 0,
w, h, GXcopy, pm);
+
+ fbFinishAccess (pDrawable);
}
void
@@ -523,6 +527,9 @@ fb24_32CopyMtoN (DrawablePtr pSrcDrawable,
pPriv->pm);
pbox++;
}
+
+ fbFinishAccess (pSrcDrawable);
+ fbFinishAccess (pDstDrawable);
}
PixmapPtr
@@ -567,6 +574,9 @@ fb24_32ReformatTile(PixmapPtr pOldTile, int bitsPerPixel)
GXcopy,
FB_ALLONES);
+ fbFinishAccess (&pOldTile->drawable);
+ fbFinishAccess (&pNewTile->drawable);
+
return pNewTile;
}
diff --git a/fb/fballpriv.c b/fb/fballpriv.c
index 75b577049..4f807ed8d 100644
--- a/fb/fballpriv.c
+++ b/fb/fballpriv.c
@@ -21,7 +21,6 @@
* TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
* PERFORMANCE OF THIS SOFTWARE.
*/
-/* $XFree86: xc/programs/Xserver/fb/fballpriv.c,v 1.3 2000/02/23 20:29:41 dawes Exp $ */
#ifdef HAVE_DIX_CONFIG_H
#include <dix-config.h>
@@ -91,3 +90,8 @@ fbAllocatePrivates(ScreenPtr pScreen, int *pGCIndex)
#endif
return TRUE;
}
+
+#ifdef FB_ACCESS_WRAPPER
+ReadMemoryProcPtr wfbReadMemory;
+WriteMemoryProcPtr wfbWriteMemory;
+#endif
diff --git a/fb/fbarc.c b/fb/fbarc.c
index 98cf8796c..d2c1a76f1 100644
--- a/fb/fbarc.c
+++ b/fb/fbarc.c
@@ -21,7 +21,6 @@
* TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
* PERFORMANCE OF THIS SOFTWARE.
*/
-/* $XFree86: xc/programs/Xserver/fb/fbarc.c,v 1.7tsi Exp $ */
#ifdef HAVE_DIX_CONFIG_H
#include <dix-config.h>
@@ -110,6 +109,7 @@ fbPolyArc (DrawablePtr pDrawable,
miPolyArc(pDrawable, pGC, 1, parcs);
parcs++;
}
+ fbFinishAccess (pDrawable);
}
else
#endif
diff --git a/fb/fbbits.c b/fb/fbbits.c
index ab67b4cf3..cefe943b6 100644
--- a/fb/fbbits.c
+++ b/fb/fbbits.c
@@ -21,7 +21,6 @@
* TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
* PERFORMANCE OF THIS SOFTWARE.
*/
-/* $XFree86: xc/programs/Xserver/fb/fbbits.c,v 1.5 2000/02/17 14:16:22 dawes Exp $ */
#ifdef HAVE_DIX_CONFIG_H
#include <dix-config.h>
@@ -104,14 +103,14 @@
#define BITSUNIT BYTE
#define BITSMUL 3
-#define FbDoTypeStore(b,t,x,s) (*((t *) (b)) = (x) >> (s))
-#define FbDoTypeRRop(b,t,a,x,s) (*((t *) (b)) = FbDoRRop(*((t *) (b)),\
- (a) >> (s), \
- (x) >> (s)))
-#define FbDoTypeMaskRRop(b,t,a,x,m,s) (*((t *) (b)) = FbDoMaskRRop(*((t *) (b)),\
- (a) >> (s), \
- (x) >> (s), \
- (m) >> (s))
+#define FbDoTypeStore(b,t,x,s) WRITE(((t *) (b)), (x) >> (s))
+#define FbDoTypeRRop(b,t,a,x,s) WRITE((t *) (b), FbDoRRop(READ((t *) (b)),\
+ (a) >> (s), \
+ (x) >> (s)))
+#define FbDoTypeMaskRRop(b,t,a,x,m,s) WRITE((t *) (b), FbDoMaskRRop(READ((t *) (b)),\
+ (a) >> (s), \
+ (x) >> (s), \
+ (m) >> (s)))
#if BITMAP_BIT_ORDER == LSBFirst
#define BITSSTORE(b,x) ((unsigned long) (b) & 1 ? \
(FbDoTypeStore (b, CARD8, x, 0), \
diff --git a/fb/fbbits.h b/fb/fbbits.h
index e5c006dbb..603c02929 100644
--- a/fb/fbbits.h
+++ b/fb/fbbits.h
@@ -42,13 +42,13 @@
#ifdef BITSSTORE
#define STORE(b,x) BITSSTORE(b,x)
#else
-#define STORE(b,x) (*(b) = (x))
+#define STORE(b,x) WRITE((b), (x))
#endif
#ifdef BITSRROP
#define RROP(b,a,x) BITSRROP(b,a,x)
#else
-#define RROP(b,a,x) (*(b) = FbDoRRop (*(b), (a), (x)))
+#define RROP(b,a,x) WRITE((b), FbDoRRop (READ(b), (a), (x)))
#endif
#ifdef BITSUNIT
@@ -119,6 +119,8 @@ BRESSOLID (DrawablePtr pDrawable,
e += e3;
}
}
+
+ fbFinishAccess (pDrawable);
}
#endif
@@ -263,6 +265,8 @@ onOffOdd:
dashlen = len;
}
}
+
+ fbFinishAccess (pDrawable);
}
#endif
@@ -541,18 +545,18 @@ ARC (FbBits *dst,
# define WRITE_ADDR4(n) ((n))
#endif
-#define WRITE1(d,n,fg) ((d)[WRITE_ADDR1(n)] = (BITS) (fg))
+#define WRITE1(d,n,fg) WRITE(d + WRITE_ADDR1(n), (BITS) (fg))
#ifdef BITS2
-# define WRITE2(d,n,fg) (*((BITS2 *) &((d)[WRITE_ADDR2(n)])) = (BITS2) (fg))
+# define WRITE2(d,n,fg) WRITE((BITS2 *) &((d)[WRITE_ADDR2(n)]), (BITS2) (fg))
#else
-# define WRITE2(d,n,fg) WRITE1(d,(n)+1,WRITE1(d,n,fg))
+# define WRITE2(d,n,fg) (WRITE1(d,n,fg), WRITE1(d,(n)+1,fg))
#endif
#ifdef BITS4
-# define WRITE4(d,n,fg) (*((BITS4 *) &((d)[WRITE_ADDR4(n)])) = (BITS4) (fg))
+# define WRITE4(d,n,fg) WRITE((BITS4 *) &((d)[WRITE_ADDR4(n)]), (BITS4) (fg))
#else
-# define WRITE4(d,n,fg) WRITE2(d,(n)+2,WRITE2(d,n,fg))
+# define WRITE4(d,n,fg) (WRITE2(d,n,fg), WRITE2(d,(n)+2,fg))
#endif
void
@@ -710,8 +714,10 @@ POLYLINE (DrawablePtr pDrawable,
intToX(pt2) + xoff, intToY(pt2) + yoff,
npt == 0 && pGC->capStyle != CapNotLast,
&dashoffset);
- if (!npt)
+ if (!npt) {
+ fbFinishAccess (pDrawable);
return;
+ }
pt1 = pt2;
pt2 = *pts++;
npt--;
@@ -776,6 +782,7 @@ POLYLINE (DrawablePtr pDrawable,
{
RROP(bits,and,xor);
}
+ fbFinishAccess (pDrawable);
return;
}
pt1 = pt2;
@@ -786,6 +793,8 @@ POLYLINE (DrawablePtr pDrawable,
}
}
}
+
+ fbFinishAccess (pDrawable);
}
#endif
@@ -883,20 +892,20 @@ POLYSEGMENT (DrawablePtr pDrawable,
FbMaskBits (dstX, width, startmask, nmiddle, endmask);
if (startmask)
{
- *dstLine = FbDoMaskRRop (*dstLine, andBits, xorBits, startmask);
+ WRITE(dstLine, FbDoMaskRRop (READ(dstLine), andBits, xorBits, startmask));
dstLine++;
}
if (!andBits)
while (nmiddle--)
- *dstLine++ = xorBits;
+ WRITE(dstLine++, xorBits);
else
while (nmiddle--)
{
- *dstLine = FbDoRRop (*dstLine, andBits, xorBits);
+ WRITE(dstLine, FbDoRRop (READ(dstLine), andBits, xorBits));
dstLine++;
}
if (endmask)
- *dstLine = FbDoMaskRRop (*dstLine, andBits, xorBits, endmask);
+ WRITE(dstLine, FbDoMaskRRop (READ(dstLine), andBits, xorBits, endmask));
}
else
{
@@ -950,6 +959,8 @@ POLYSEGMENT (DrawablePtr pDrawable,
}
}
}
+
+ fbFinishAccess (pDrawable);
}
#endif
diff --git a/fb/fbblt.c b/fb/fbblt.c
index de08660e3..e18981a83 100644
--- a/fb/fbblt.c
+++ b/fb/fbblt.c
@@ -21,7 +21,6 @@
* 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.7 2000/09/22 05:58:01 keithp Exp $ */
#ifdef HAVE_DIX_CONFIG_H
#include <dix-config.h>
@@ -93,10 +92,10 @@ fbBlt (FbBits *srcLine,
if (!upsidedown)
for (i = 0; i < height; i++)
- memcpy(dst + i * dstStride, src + i * srcStride, width);
+ MEMCPY_WRAPPED(dst + i * dstStride, src + i * srcStride, width);
else
for (i = height - 1; i >= 0; i--)
- memcpy(dst + i * dstStride, src + i * srcStride, width);
+ MEMCPY_WRAPPED(dst + i * dstStride, src + i * srcStride, width);
return;
}
@@ -138,7 +137,7 @@ fbBlt (FbBits *srcLine,
{
if (endmask)
{
- bits = *--src;
+ bits = READ(--src);
--dst;
FbDoRightMaskByteMergeRop(dst, bits, endbyte, endmask);
}
@@ -146,20 +145,20 @@ fbBlt (FbBits *srcLine,
if (destInvarient)
{
while (n--)
- *--dst = FbDoDestInvarientMergeRop(*--src);
+ WRITE(--dst, FbDoDestInvarientMergeRop(READ(--src)));
}
else
{
while (n--)
{
- bits = *--src;
+ bits = READ(--src);
--dst;
- *dst = FbDoMergeRop (bits, *dst);
+ WRITE(dst, FbDoMergeRop (bits, READ(dst)));
}
}
if (startmask)
{
- bits = *--src;
+ bits = READ(--src);
--dst;
FbDoLeftMaskByteMergeRop(dst, bits, startbyte, startmask);
}
@@ -168,7 +167,7 @@ fbBlt (FbBits *srcLine,
{
if (startmask)
{
- bits = *src++;
+ bits = READ(src++);
FbDoLeftMaskByteMergeRop(dst, bits, startbyte, startmask);
dst++;
}
@@ -199,20 +198,20 @@ fbBlt (FbBits *srcLine,
}
#endif
while (n--)
- *dst++ = FbDoDestInvarientMergeRop(*src++);
+ WRITE(dst++, FbDoDestInvarientMergeRop(READ(src++)));
}
else
{
while (n--)
{
- bits = *src++;
- *dst = FbDoMergeRop (bits, *dst);
+ bits = READ(src++);
+ WRITE(dst, FbDoMergeRop (bits, READ(dst)));
dst++;
}
}
if (endmask)
{
- bits = *src;
+ bits = READ(src);
FbDoRightMaskByteMergeRop(dst, bits, endbyte, endmask);
}
}
@@ -241,13 +240,13 @@ fbBlt (FbBits *srcLine,
if (reverse)
{
if (srcX < dstX)
- bits1 = *--src;
+ bits1 = READ(--src);
if (endmask)
{
bits = FbScrRight(bits1, rightShift);
if (FbScrRight(endmask, leftShift))
{
- bits1 = *--src;
+ bits1 = READ(--src);
bits |= FbScrLeft(bits1, leftShift);
}
--dst;
@@ -259,10 +258,10 @@ fbBlt (FbBits *srcLine,
while (n--)
{
bits = FbScrRight(bits1, rightShift);
- bits1 = *--src;
+ bits1 = READ(--src);
bits |= FbScrLeft(bits1, leftShift);
--dst;
- *dst = FbDoDestInvarientMergeRop(bits);
+ WRITE(dst, FbDoDestInvarientMergeRop(bits));
}
}
else
@@ -270,10 +269,10 @@ fbBlt (FbBits *srcLine,
while (n--)
{
bits = FbScrRight(bits1, rightShift);
- bits1 = *--src;
+ bits1 = READ(--src);
bits |= FbScrLeft(bits1, leftShift);
--dst;
- *dst = FbDoMergeRop(bits, *dst);
+ WRITE(dst, FbDoMergeRop(bits, READ(dst)));
}
}
if (startmask)
@@ -281,7 +280,7 @@ fbBlt (FbBits *srcLine,
bits = FbScrRight(bits1, rightShift);
if (FbScrRight(startmask, leftShift))
{
- bits1 = *--src;
+ bits1 = READ(--src);
bits |= FbScrLeft(bits1, leftShift);
}
--dst;
@@ -291,13 +290,13 @@ fbBlt (FbBits *srcLine,
else
{
if (srcX > dstX)
- bits1 = *src++;
+ bits1 = READ(src++);
if (startmask)
{
bits = FbScrLeft(bits1, leftShift);
if (FbScrLeft(startmask, rightShift))
{
- bits1 = *src++;
+ bits1 = READ(src++);
bits |= FbScrRight(bits1, rightShift);
}
FbDoLeftMaskByteMergeRop (dst, bits, startbyte, startmask);
@@ -309,9 +308,9 @@ fbBlt (FbBits *srcLine,
while (n--)
{
bits = FbScrLeft(bits1, leftShift);
- bits1 = *src++;
+ bits1 = READ(src++);
bits |= FbScrRight(bits1, rightShift);
- *dst = FbDoDestInvarientMergeRop(bits);
+ WRITE(dst, FbDoDestInvarientMergeRop(bits));
dst++;
}
}
@@ -320,9 +319,9 @@ fbBlt (FbBits *srcLine,
while (n--)
{
bits = FbScrLeft(bits1, leftShift);
- bits1 = *src++;
+ bits1 = READ(src++);
bits |= FbScrRight(bits1, rightShift);
- *dst = FbDoMergeRop(bits, *dst);
+ WRITE(dst, FbDoMergeRop(bits, READ(dst)));
dst++;
}
}
@@ -331,7 +330,7 @@ fbBlt (FbBits *srcLine,
bits = FbScrLeft(bits1, leftShift);
if (FbScrLeft(endmask, rightShift))
{
- bits1 = *src;
+ bits1 = READ(src);
bits |= FbScrRight(bits1, rightShift);
}
FbDoRightMaskByteMergeRop (dst, bits, endbyte, endmask);
@@ -426,45 +425,45 @@ fbBlt24Line (FbBits *src,
{
if (endmask)
{
- bits = *--src;
+ bits = READ(--src);
--dst;
- *dst = FbDoMaskMergeRop (bits, *dst, mask & endmask);
+ WRITE(dst, FbDoMaskMergeRop (bits, READ(dst), mask & endmask));
mask = FbPrev24Pix (mask);
}
while (n--)
{
- bits = *--src;
+ bits = READ(--src);
--dst;
- *dst = FbDoMaskMergeRop (bits, *dst, mask);
+ WRITE(dst, FbDoMaskMergeRop (bits, READ(dst), mask));
mask = FbPrev24Pix (mask);
}
if (startmask)
{
- bits = *--src;
+ bits = READ(--src);
--dst;
- *dst = FbDoMaskMergeRop(bits, *dst, mask & startmask);
+ WRITE(dst, FbDoMaskMergeRop(bits, READ(dst), mask & startmask));
}
}
else
{
if (startmask)
{
- bits = *src++;
- *dst = FbDoMaskMergeRop (bits, *dst, mask & startmask);
+ bits = READ(src++);
+ WRITE(dst, FbDoMaskMergeRop (bits, READ(dst), mask & startmask));
dst++;
mask = FbNext24Pix(mask);
}
while (n--)
{
- bits = *src++;
- *dst = FbDoMaskMergeRop (bits, *dst, mask);
+ bits = READ(src++);
+ WRITE(dst, FbDoMaskMergeRop (bits, READ(dst), mask));
dst++;
mask = FbNext24Pix(mask);
}
if (endmask)
{
- bits = *src;
- *dst = FbDoMaskMergeRop(bits, *dst, mask & endmask);
+ bits = READ(src);
+ WRITE(dst, FbDoMaskMergeRop(bits, READ(dst), mask & endmask));
}
}
}
@@ -485,26 +484,26 @@ fbBlt24Line (FbBits *src,
if (reverse)
{
if (srcX < dstX)
- bits1 = *--src;
+ bits1 = READ(--src);
if (endmask)
{
bits = FbScrRight(bits1, rightShift);
if (FbScrRight(endmask, leftShift))
{
- bits1 = *--src;
+ bits1 = READ(--src);
bits |= FbScrLeft(bits1, leftShift);
}
--dst;
- *dst = FbDoMaskMergeRop (bits, *dst, mask & endmask);
+ WRITE(dst, FbDoMaskMergeRop (bits, READ(dst), mask & endmask));
mask = FbPrev24Pix(mask);
}
while (n--)
{
bits = FbScrRight(bits1, rightShift);
- bits1 = *--src;
+ bits1 = READ(--src);
bits |= FbScrLeft(bits1, leftShift);
--dst;
- *dst = FbDoMaskMergeRop(bits, *dst, mask);
+ WRITE(dst, FbDoMaskMergeRop(bits, READ(dst), mask));
mask = FbPrev24Pix(mask);
}
if (startmask)
@@ -512,32 +511,32 @@ fbBlt24Line (FbBits *src,
bits = FbScrRight(bits1, rightShift);
if (FbScrRight(startmask, leftShift))
{
- bits1 = *--src;
+ bits1 = READ(--src);
bits |= FbScrLeft(bits1, leftShift);
}
--dst;
- *dst = FbDoMaskMergeRop (bits, *dst, mask & startmask);
+ WRITE(dst, FbDoMaskMergeRop (bits, READ(dst), mask & startmask));
}
}
else
{
if (srcX > dstX)
- bits1 = *src++;
+ bits1 = READ(src++);
if (startmask)
{
bits = FbScrLeft(bits1, leftShift);
- bits1 = *src++;
+ bits1 = READ(src++);
bits |= FbScrRight(bits1, rightShift);
- *dst = FbDoMaskMergeRop (bits, *dst, mask & startmask);
+ WRITE(dst, FbDoMaskMergeRop (bits, READ(dst), mask & startmask));
dst++;
mask = FbNext24Pix(mask);
}
while (n--)
{
bits = FbScrLeft(bits1, leftShift);
- bits1 = *src++;
+ bits1 = READ(src++);
bits |= FbScrRight(bits1, rightShift);
- *dst = FbDoMaskMergeRop(bits, *dst, mask);
+ WRITE(dst, FbDoMaskMergeRop(bits, READ(dst), mask));
dst++;
mask = FbNext24Pix(mask);
}
@@ -546,10 +545,10 @@ fbBlt24Line (FbBits *src,
bits = FbScrLeft(bits1, leftShift);
if (FbScrLeft(endmask, rightShift))
{
- bits1 = *src;
+ bits1 = READ(src);
bits |= FbScrRight(bits1, rightShift);
}
- *dst = FbDoMaskMergeRop (bits, *dst, mask & endmask);
+ WRITE(dst, FbDoMaskMergeRop (bits, READ(dst), mask & endmask));
}
}
}
@@ -708,8 +707,8 @@ fbBltOdd (FbBits *srcLine,
{
if (startmask)
{
- bits = *src++;
- *dst = FbDoMaskMergeRop (bits, *dst, startmask);
+ bits = READ(src++);
+ WRITE(dst, FbDoMaskMergeRop (bits, READ(dst), startmask));
dst++;
}
n = nmiddle;
@@ -717,8 +716,8 @@ fbBltOdd (FbBits *srcLine,
{
while (n--)
{
- bits = *src++;
- *dst = FbDoDestInvarientMergeRop(bits);
+ bits = READ(src++);
+ WRITE(dst, FbDoDestInvarientMergeRop(bits));
dst++;
}
}
@@ -726,28 +725,28 @@ fbBltOdd (FbBits *srcLine,
{
while (n--)
{
- bits = *src++;
- *dst = FbDoMergeRop (bits, *dst);
+ bits = READ(src++);
+ WRITE(dst, FbDoMergeRop (bits, READ(dst)));
dst++;
}
}
if (endmask)
{
- bits = *src;
- *dst = FbDoMaskMergeRop(bits, *dst, endmask);
+ bits = READ(src);
+ WRITE(dst, FbDoMaskMergeRop(bits, READ(dst), endmask));
}
}
else
{
bits = 0;
if (srcX > dstX)
- bits = *src++;
+ bits = READ(src++);
if (startmask)
{
bits1 = FbScrLeft(bits, leftShift);
- bits = *src++;
+ bits = READ(src++);
bits1 |= FbScrRight(bits, rightShift);
- *dst = FbDoMaskMergeRop (bits1, *dst, startmask);
+ WRITE(dst, FbDoMaskMergeRop (bits1, READ(dst), startmask));
dst++;
}
n = nmiddle;
@@ -756,9 +755,9 @@ fbBltOdd (FbBits *srcLine,
while (n--)
{
bits1 = FbScrLeft(bits, leftShift);
- bits = *src++;
+ bits = READ(src++);
bits1 |= FbScrRight(bits, rightShift);
- *dst = FbDoDestInvarientMergeRop(bits1);
+ WRITE(dst, FbDoDestInvarientMergeRop(bits1));
dst++;
}
}
@@ -767,9 +766,9 @@ fbBltOdd (FbBits *srcLine,
while (n--)
{
bits1 = FbScrLeft(bits, leftShift);
- bits = *src++;
+ bits = READ(src++);
bits1 |= FbScrRight(bits, rightShift);
- *dst = FbDoMergeRop(bits1, *dst);
+ WRITE(dst, FbDoMergeRop(bits1, READ(dst)));
dst++;
}
}
@@ -778,10 +777,10 @@ fbBltOdd (FbBits *srcLine,
bits1 = FbScrLeft(bits, leftShift);
if (FbScrLeft(endmask, rightShift))
{
- bits = *src;
+ bits = READ(src);
bits1 |= FbScrRight(bits, rightShift);
}
- *dst = FbDoMaskMergeRop (bits1, *dst, endmask);
+ WRITE(dst, FbDoMaskMergeRop (bits1, READ(dst), endmask));
}
}
}
diff --git a/fb/fbbltone.c b/fb/fbbltone.c
index b271318d1..d2c180fef 100644
--- a/fb/fbbltone.c
+++ b/fb/fbbltone.c
@@ -21,7 +21,6 @@
* TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
* PERFORMANCE OF THIS SOFTWARE.
*/
-/* $XFree86: xc/programs/Xserver/fb/fbbltone.c,v 1.11 2001/09/07 15:15:31 keithp Exp $ */
#ifdef HAVE_DIX_CONFIG_H
#include <dix-config.h>
@@ -52,12 +51,12 @@
#define LoadBits {\
if (leftShift) { \
- bitsRight = (src < srcEnd ? *src++ : 0); \
+ bitsRight = (src < srcEnd ? READ(src++) : 0); \
bits = (FbStipLeft (bitsLeft, leftShift) | \
FbStipRight(bitsRight, rightShift)); \
bitsLeft = bitsRight; \
} else \
- bits = (src < srcEnd ? *src++ : 0); \
+ bits = (src < srcEnd ? READ(src++) : 0); \
}
#ifndef FBNOPIXADDR
@@ -286,7 +285,7 @@ fbBltOne (FbStip *src,
bitsLeft = 0;
if (srcX > dstS)
- bitsLeft = *src++;
+ bitsLeft = READ(src++);
if (n)
{
/*
@@ -339,7 +338,7 @@ fbBltOne (FbStip *src,
else
#endif
mask = fbBits[FbLeftStipBits(bits,pixelsPerDst)];
- *dst = FbOpaqueStipple (mask, fgxor, bgxor);
+ WRITE(dst, FbOpaqueStipple (mask, fgxor, bgxor));
dst++;
bits = FbStipLeft(bits, pixelsPerDst);
}
@@ -369,8 +368,8 @@ fbBltOne (FbStip *src,
if (left || !transparent)
{
mask = fbBits[left];
- *dst = FbStippleRRop (*dst, mask,
- fgand, fgxor, bgand, bgxor);
+ WRITE(dst, FbStippleRRop (READ(dst), mask,
+ fgand, fgxor, bgand, bgxor));
}
dst++;
bits = FbStipLeft(bits, pixelsPerDst);
@@ -538,7 +537,7 @@ const FbBits fbStipple24Bits[3][1 << FbStip24Len] = {
stip = FbLeftStipBits(bits, len); \
} else { \
stip = FbLeftStipBits(bits, remain); \
- bits = (src < srcEnd ? *src++ : 0); \
+ bits = (src < srcEnd ? READ(src++) : 0); \
__len = (len) - remain; \
stip = FbMergePartStip24Bits(stip, FbLeftStipBits(bits, __len), \
remain, __len); \
@@ -549,7 +548,7 @@ const FbBits fbStipple24Bits[3][1 << FbStip24Len] = {
}
#define fbInitStipBits(offset,len,stip) {\
- bits = FbStipLeft (*src++,offset); \
+ bits = FbStipLeft (READ(src++),offset); \
remain = FB_STIP_UNIT - offset; \
fbFirstStipBits(len,stip); \
stip = FbMergeStip24Bits (0, stip, len); \
@@ -632,10 +631,11 @@ fbBltOne24 (FbStip *srcLine,
if (leftMask)
{
mask = fbStipple24Bits[rot >> 3][stip];
- *dst = (*dst & ~leftMask) | (FbOpaqueStipple (mask,
- FbRot24(fgxor, rot),
- FbRot24(bgxor, rot))
- & leftMask);
+ WRITE(dst, (READ(dst) & ~leftMask) |
+ (FbOpaqueStipple (mask,
+ FbRot24(fgxor, rot),
+ FbRot24(bgxor, rot))
+ & leftMask));
dst++;
fbNextStipBits(rot,stip);
}
@@ -643,19 +643,20 @@ fbBltOne24 (FbStip *srcLine,
while (nl--)
{
mask = fbStipple24Bits[rot>>3][stip];
- *dst = FbOpaqueStipple (mask,
- FbRot24(fgxor, rot),
- FbRot24(bgxor, rot));
+ WRITE(dst, FbOpaqueStipple (mask,
+ FbRot24(fgxor, rot),
+ FbRot24(bgxor, rot)));
dst++;
fbNextStipBits(rot,stip);
}
if (rightMask)
{
mask = fbStipple24Bits[rot >> 3][stip];
- *dst = (*dst & ~rightMask) | (FbOpaqueStipple (mask,
- FbRot24(fgxor, rot),
- FbRot24(bgxor, rot))
- & rightMask);
+ WRITE(dst, (READ(dst) & ~rightMask) |
+ (FbOpaqueStipple (mask,
+ FbRot24(fgxor, rot),
+ FbRot24(bgxor, rot))
+ & rightMask));
}
dst += dstStride;
src += srcStride;
@@ -675,7 +676,7 @@ fbBltOne24 (FbStip *srcLine,
if (stip)
{
mask = fbStipple24Bits[rot >> 3][stip] & leftMask;
- *dst = (*dst & ~mask) | (FbRot24(fgxor, rot) & mask);
+ WRITE(dst, (READ(dst) & ~mask) | (FbRot24(fgxor, rot) & mask));
}
dst++;
fbNextStipBits (rot, stip);
@@ -686,7 +687,7 @@ fbBltOne24 (FbStip *srcLine,
if (stip)
{
mask = fbStipple24Bits[rot>>3][stip];
- *dst = (*dst & ~mask) | (FbRot24(fgxor,rot) & mask);
+ WRITE(dst, (READ(dst) & ~mask) | (FbRot24(fgxor,rot) & mask));
}
dst++;
fbNextStipBits (rot, stip);
@@ -696,7 +697,7 @@ fbBltOne24 (FbStip *srcLine,
if (stip)
{
mask = fbStipple24Bits[rot >> 3][stip] & rightMask;
- *dst = (*dst & ~mask) | (FbRot24(fgxor, rot) & mask);
+ WRITE(dst, (READ(dst) & ~mask) | (FbRot24(fgxor, rot) & mask));
}
}
dst += dstStride;
@@ -713,12 +714,12 @@ fbBltOne24 (FbStip *srcLine,
if (leftMask)
{
mask = fbStipple24Bits[rot >> 3][stip];
- *dst = FbStippleRRopMask (*dst, mask,
- FbRot24(fgand, rot),
- FbRot24(fgxor, rot),
- FbRot24(bgand, rot),
- FbRot24(bgxor, rot),
- leftMask);
+ WRITE(dst, FbStippleRRopMask (READ(dst), mask,
+ FbRot24(fgand, rot),
+ FbRot24(fgxor, rot),
+ FbRot24(bgand, rot),
+ FbRot24(bgxor, rot),
+ leftMask));
dst++;
fbNextStipBits(rot,stip);
}
@@ -726,23 +727,23 @@ fbBltOne24 (FbStip *srcLine,
while (nl--)
{
mask = fbStipple24Bits[rot >> 3][stip];
- *dst = FbStippleRRop (*dst, mask,
- FbRot24(fgand, rot),
- FbRot24(fgxor, rot),
- FbRot24(bgand, rot),
- FbRot24(bgxor, rot));
+ WRITE(dst, FbStippleRRop (READ(dst), mask,
+ FbRot24(fgand, rot),
+ FbRot24(fgxor, rot),
+ FbRot24(bgand, rot),
+ FbRot24(bgxor, rot)));
dst++;
fbNextStipBits(rot,stip);
}
if (rightMask)
{
mask = fbStipple24Bits[rot >> 3][stip];
- *dst = FbStippleRRopMask (*dst, mask,
- FbRot24(fgand, rot),
- FbRot24(fgxor, rot),
- FbRot24(bgand, rot),
- FbRot24(bgxor, rot),
- rightMask);
+ WRITE(dst, FbStippleRRopMask (READ(dst), mask,
+ FbRot24(fgand, rot),
+ FbRot24(fgxor, rot),
+ FbRot24(bgand, rot),
+ FbRot24(bgxor, rot),
+ rightMask));
}
dst += dstStride;
}
@@ -833,7 +834,7 @@ fbBltPlane (FbBits *src,
if (srcBpp == 24)
srcMask0 = FbRot24(pm,rot0) & FbBitsMask(0, srcBpp);
#endif
- srcBits = *s++;
+ srcBits = READ(s++);
dstMask = dstMaskFirst;
dstUnion = 0;
@@ -845,7 +846,7 @@ fbBltPlane (FbBits *src,
{
if (!srcMask)
{
- srcBits = *s++;
+ srcBits = READ(s++);
#ifdef FB_24BIT
if (srcBpp == 24)
srcMask0 = FbNext24Pix(srcMask0) & FbBitsMask(0,24);
@@ -854,9 +855,9 @@ fbBltPlane (FbBits *src,
}
if (!dstMask)
{
- *d = FbStippleRRopMask(*d, dstBits,
- fgand, fgxor, bgand, bgxor,
- dstUnion);
+ WRITE(d, FbStippleRRopMask(READ(d), dstBits,
+ fgand, fgxor, bgand, bgxor,
+ dstUnion));
d++;
dstMask = FbStipMask(0,1);
dstUnion = 0;
@@ -872,9 +873,9 @@ fbBltPlane (FbBits *src,
dstMask = FbStipRight(dstMask,1);
}
if (dstUnion)
- *d = FbStippleRRopMask(*d,dstBits,
- fgand, fgxor, bgand, bgxor,
- dstUnion);
+ WRITE(d, FbStippleRRopMask(READ(d),dstBits,
+ fgand, fgxor, bgand, bgxor,
+ dstUnion));
}
}
diff --git a/fb/fbbstore.c b/fb/fbbstore.c
index 01ec9b7e0..78174b6fc 100644
--- a/fb/fbbstore.c
+++ b/fb/fbbstore.c
@@ -21,7 +21,6 @@
* TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
* PERFORMANCE OF THIS SOFTWARE.
*/
-/* $XFree86: xc/programs/Xserver/fb/fbbstore.c,v 1.1 1999/11/19 13:53:42 hohndel Exp $ */
#ifdef HAVE_DIX_CONFIG_H
#include <dix-config.h>
diff --git a/fb/fbcmap.c b/fb/fbcmap.c
index 762c51c9d..9cf5bcbf5 100644
--- a/fb/fbcmap.c
+++ b/fb/fbcmap.c
@@ -1,5 +1,3 @@
-/* $XConsortium: fbcmap.c,v 4.19 94/04/17 20:28:46 dpw Exp $ */
-/* $XFree86: xc/programs/Xserver/fb/fbcmap.c,v 1.5 2000/09/20 00:09:13 keithp Exp $ */
/************************************************************
Copyright 1987 by Sun Microsystems, Inc. Mountain View, CA.
diff --git a/fb/fbcompose.c b/fb/fbcompose.c
index c4f979d26..6ea948307 100644
--- a/fb/fbcompose.c
+++ b/fb/fbcompose.c
@@ -1,6 +1,4 @@
/*
- * $XdotOrg: xserver/xorg/fb/fbcompose.c,v 1.28 2006/04/19 21:56:13 keithp Exp $
- * $XFree86: xc/programs/Xserver/fb/fbcompose.c,v 1.17tsi Exp $
*
* Copyright © 2000 Keith Packard, member of The XFree86 Project, Inc.
* 2005 Lars Knoll & Zack Rusin, Trolltech
@@ -55,7 +53,7 @@ typedef FASTCALL void (*fetchProc)(const FbBits *bits, int x, int width, CARD32
static FASTCALL void
fbFetch_a8r8g8b8 (const FbBits *bits, int x, int width, CARD32 *buffer, miIndexedPtr indexed)
{
- memcpy(buffer, (const CARD32 *)bits + x, width*sizeof(CARD32));
+ MEMCPY_WRAPPED(buffer, (const CARD32 *)bits + x, width*sizeof(CARD32));
}
static FASTCALL void
@@ -64,7 +62,7 @@ fbFetch_x8r8g8b8 (const FbBits *bits, int x, int width, CARD32 *buffer, miIndexe
const CARD32 *pixel = (const CARD32 *)bits + x;
const CARD32 *end = pixel + width;
while (pixel < end) {
- *buffer++ = *pixel++ | 0xff000000;
+ WRITE(buffer++, READ(pixel++) | 0xff000000);
}
}
@@ -74,9 +72,9 @@ fbFetch_a8b8g8r8 (const FbBits *bits, int x, int width, CARD32 *buffer, miIndexe
const CARD32 *pixel = (CARD32 *)bits + x;
const CARD32 *end = pixel + width;
while (pixel < end) {
- *buffer++ = ((*pixel & 0xff00ff00) |
- ((*pixel >> 16) & 0xff) |
- ((*pixel & 0xff) << 16));
+ WRITE(buffer++, ((READ(pixel) & 0xff00ff00) |
+ ((READ(pixel) >> 16) & 0xff) |
+ ((READ(pixel) & 0xff) << 16)));
++pixel;
}
}
@@ -87,10 +85,10 @@ fbFetch_x8b8g8r8 (const FbBits *bits, int x, int width, CARD32 *buffer, miIndexe
const CARD32 *pixel = (CARD32 *)bits + x;
const CARD32 *end = pixel + width;
while (pixel < end) {
- *buffer++ = 0xff000000 |
- ((*pixel & 0x0000ff00) |
- ((*pixel >> 16) & 0xff) |
- ((*pixel & 0xff) << 16));
+ WRITE(buffer++, 0xff000000 |
+ ((READ(pixel) & 0x0000ff00) |
+ ((READ(pixel) >> 16) & 0xff) |
+ ((READ(pixel) & 0xff) << 16)));
++pixel;
}
}
@@ -103,7 +101,7 @@ fbFetch_r8g8b8 (const FbBits *bits, int x, int width, CARD32 *buffer, miIndexedP
while (pixel < end) {
CARD32 b = Fetch24(pixel) | 0xff000000;
pixel += 3;
- *buffer++ = b;
+ WRITE(buffer++, b);
}
}
@@ -115,13 +113,13 @@ fbFetch_b8g8r8 (const FbBits *bits, int x, int width, CARD32 *buffer, miIndexedP
while (pixel < end) {
CARD32 b = 0xff000000;
#if IMAGE_BYTE_ORDER == MSBFirst
- b |= (*pixel++);
- b |= (*pixel++ << 8);
- b |= (*pixel++ << 16);
+ b |= (READ(pixel++));
+ b |= (READ(pixel++) << 8);
+ b |= (READ(pixel++) << 16);
#else
- b |= (*pixel++ << 16);
- b |= (*pixel++ << 8);
- b |= (*pixel++);
+ b |= (READ(pixel++) << 16);
+ b |= (READ(pixel++) << 8);
+ b |= (READ(pixel++));
#endif
}
}
@@ -132,13 +130,13 @@ fbFetch_r5g6b5 (const FbBits *bits, int x, int width, CARD32 *buffer, miIndexedP
const CARD16 *pixel = (const CARD16 *)bits + x;
const CARD16 *end = pixel + width;
while (pixel < end) {
- CARD32 p = *pixel++;
+ CARD32 p = READ(pixel++);
CARD32 r = (((p) << 3) & 0xf8) |
(((p) << 5) & 0xfc00) |
(((p) << 8) & 0xf80000);
r |= (r >> 5) & 0x70007;
r |= (r >> 6) & 0x300;
- *buffer++ = 0xff000000 | r;
+ WRITE(buffer++, 0xff000000 | r);
}
}
@@ -148,13 +146,13 @@ fbFetch_b5g6r5 (const FbBits *bits, int x, int width, CARD32 *buffer, miIndexedP
const CARD16 *pixel = (const CARD16 *)bits + x;
const CARD16 *end = pixel + width;
while (pixel < end) {
- CARD32 p = *pixel++;
+ CARD32 p = READ(pixel++);
CARD32 r,g,b;
b = ((p & 0xf800) | ((p & 0xe000) >> 5)) >> 8;
g = ((p & 0x07e0) | ((p & 0x0600) >> 6)) << 5;
r = ((p & 0x001c) | ((p & 0x001f) << 5)) << 14;
- *buffer++ = (0xff000000 | r | g | b);
+ WRITE(buffer++, (0xff000000 | r | g | b));
}
}
@@ -164,14 +162,14 @@ fbFetch_a1r5g5b5 (const FbBits *bits, int x, int width, CARD32 *buffer, miIndexe
const CARD16 *pixel = (const CARD16 *)bits + x;
const CARD16 *end = pixel + width;
while (pixel < end) {
- CARD32 p = *pixel++;
+ CARD32 p = READ(pixel++);
CARD32 r,g,b, a;
a = (CARD32) ((CARD8) (0 - ((p & 0x8000) >> 15))) << 24;
r = ((p & 0x7c00) | ((p & 0x7000) >> 5)) << 9;
g = ((p & 0x03e0) | ((p & 0x0380) >> 5)) << 6;
b = ((p & 0x001c) | ((p & 0x001f) << 5)) >> 2;
- *buffer++ = (a | r | g | b);
+ WRITE(buffer++, (a | r | g | b));
}
}
@@ -181,13 +179,13 @@ fbFetch_x1r5g5b5 (const FbBits *bits, int x, int width, CARD32 *buffer, miIndexe
const CARD16 *pixel = (const CARD16 *)bits + x;
const CARD16 *end = pixel + width;
while (pixel < end) {
- CARD32 p = *pixel++;
+ CARD32 p = READ(pixel++);
CARD32 r,g,b;
r = ((p & 0x7c00) | ((p & 0x7000) >> 5)) << 9;
g = ((p & 0x03e0) | ((p & 0x0380) >> 5)) << 6;
b = ((p & 0x001c) | ((p & 0x001f) << 5)) >> 2;
- *buffer++ = (0xff000000 | r | g | b);
+ WRITE(buffer++, (0xff000000 | r | g | b));
}
}
@@ -197,14 +195,14 @@ fbFetch_a1b5g5r5 (const FbBits *bits, int x, int width, CARD32 *buffer, miIndexe
const CARD16 *pixel = (const CARD16 *)bits + x;
const CARD16 *end = pixel + width;
while (pixel < end) {
- CARD32 p = *pixel++;
+ CARD32 p = READ(pixel++);
CARD32 r,g,b, a;
a = (CARD32) ((CARD8) (0 - ((p & 0x8000) >> 15))) << 24;
b = ((p & 0x7c00) | ((p & 0x7000) >> 5)) >> 7;
g = ((p & 0x03e0) | ((p & 0x0380) >> 5)) << 6;
r = ((p & 0x001c) | ((p & 0x001f) << 5)) << 14;
- *buffer++ = (a | r | g | b);
+ WRITE(buffer++, (a | r | g | b));
}
}
@@ -214,13 +212,13 @@ fbFetch_x1b5g5r5 (const FbBits *bits, int x, int width, CARD32 *buffer, miIndexe
const CARD16 *pixel = (const CARD16 *)bits + x;
const CARD16 *end = pixel + width;
while (pixel < end) {
- CARD32 p = *pixel++;
+ CARD32 p = READ(pixel++);
CARD32 r,g,b;
b = ((p & 0x7c00) | ((p & 0x7000) >> 5)) >> 7;
g = ((p & 0x03e0) | ((p & 0x0380) >> 5)) << 6;
r = ((p & 0x001c) | ((p & 0x001f) << 5)) << 14;
- *buffer++ = (0xff000000 | r | g | b);
+ WRITE(buffer++, (0xff000000 | r | g | b));
}
}
@@ -230,14 +228,14 @@ fbFetch_a4r4g4b4 (const FbBits *bits, int x, int width, CARD32 *buffer, miIndexe
const CARD16 *pixel = (const CARD16 *)bits + x;
const CARD16 *end = pixel + width;
while (pixel < end) {
- CARD32 p = *pixel++;
+ CARD32 p = READ(pixel++);
CARD32 r,g,b, a;
a = ((p & 0xf000) | ((p & 0xf000) >> 4)) << 16;
r = ((p & 0x0f00) | ((p & 0x0f00) >> 4)) << 12;
g = ((p & 0x00f0) | ((p & 0x00f0) >> 4)) << 8;
b = ((p & 0x000f) | ((p & 0x000f) << 4));
- *buffer++ = (a | r | g | b);
+ WRITE(buffer++, (a | r | g | b));
}
}
@@ -247,13 +245,13 @@ fbFetch_x4r4g4b4 (const FbBits *bits, int x, int width, CARD32 *buffer, miIndexe
const CARD16 *pixel = (const CARD16 *)bits + x;
const CARD16 *end = pixel + width;
while (pixel < end) {
- CARD32 p = *pixel++;
+ CARD32 p = READ(pixel++);
CARD32 r,g,b;
r = ((p & 0x0f00) | ((p & 0x0f00) >> 4)) << 12;
g = ((p & 0x00f0) | ((p & 0x00f0) >> 4)) << 8;
b = ((p & 0x000f) | ((p & 0x000f) << 4));
- *buffer++ = (0xff000000 | r | g | b);
+ WRITE(buffer++, (0xff000000 | r | g | b));
}
}
@@ -263,15 +261,15 @@ fbFetch_a4b4g4r4 (const FbBits *bits, int x, int width, CARD32 *buffer, miIndexe
const CARD16 *pixel = (const CARD16 *)bits + x;
const CARD16 *end = pixel + width;
while (pixel < end) {
- CARD32 p = *pixel++;
+ CARD32 p = READ(pixel++);
CARD32 r,g,b, a;
a = ((p & 0xf000) | ((p & 0xf000) >> 4)) << 16;
- b = ((p & 0x0f00) | ((p & 0x0f00) >> 4)) << 12;
+ b = ((p & 0x0f00) | ((p & 0x0f00) >> 4)) >> 4;
g = ((p & 0x00f0) | ((p & 0x00f0) >> 4)) << 8;
- r = ((p & 0x000f) | ((p & 0x000f) << 4));
- *buffer++ = (a | r | g | b);
- }
+ r = ((p & 0x000f) | ((p & 0x000f) << 4)) << 16;
+ WRITE(buffer++, (a | r | g | b));
+ }
}
static FASTCALL void
@@ -280,14 +278,14 @@ fbFetch_x4b4g4r4 (const FbBits *bits, int x, int width, CARD32 *buffer, miIndexe
const CARD16 *pixel = (const CARD16 *)bits + x;
const CARD16 *end = pixel + width;
while (pixel < end) {
- CARD32 p = *pixel++;
+ CARD32 p = READ(pixel++);
CARD32 r,g,b;
- b = ((p & 0x0f00) | ((p & 0x0f00) >> 4)) << 12;
+ b = ((p & 0x0f00) | ((p & 0x0f00) >> 4)) >> 4;
g = ((p & 0x00f0) | ((p & 0x00f0) >> 4)) << 8;
- r = ((p & 0x000f) | ((p & 0x000f) << 4));
- *buffer++ = (0xff000000 | r | g | b);
- }
+ r = ((p & 0x000f) | ((p & 0x000f) << 4)) << 16;
+ WRITE(buffer++, (0xff000000 | r | g | b));
+ }
}
static FASTCALL void
@@ -296,7 +294,7 @@ fbFetch_a8 (const FbBits *bits, int x, int width, CARD32 *buffer, miIndexedPtr i
const CARD8 *pixel = (const CARD8 *)bits + x;
const CARD8 *end = pixel + width;
while (pixel < end) {
- *buffer++ = (*pixel++) << 24;
+ WRITE(buffer++, READ(pixel++) << 24);
}
}
@@ -306,7 +304,7 @@ fbFetch_r3g3b2 (const FbBits *bits, int x, int width, CARD32 *buffer, miIndexedP
const CARD8 *pixel = (const CARD8 *)bits + x;
const CARD8 *end = pixel + width;
while (pixel < end) {
- CARD32 p = *pixel++;
+ CARD32 p = READ(pixel++);
CARD32 r,g,b;
r = ((p & 0xe0) | ((p & 0xe0) >> 3) | ((p & 0xc0) >> 6)) << 16;
@@ -315,7 +313,7 @@ fbFetch_r3g3b2 (const FbBits *bits, int x, int width, CARD32 *buffer, miIndexedP
((p & 0x03) << 2) |
((p & 0x03) << 4) |
((p & 0x03) << 6));
- *buffer++ = (0xff000000 | r | g | b);
+ WRITE(buffer++, (0xff000000 | r | g | b));
}
}
@@ -325,7 +323,7 @@ fbFetch_b2g3r3 (const FbBits *bits, int x, int width, CARD32 *buffer, miIndexedP
const CARD8 *pixel = (const CARD8 *)bits + x;
const CARD8 *end = pixel + width;
while (pixel < end) {
- CARD32 p = *pixel++;
+ CARD32 p = READ(pixel++);
CARD32 r,g,b;
b = (((p & 0xc0) ) |
@@ -336,7 +334,7 @@ fbFetch_b2g3r3 (const FbBits *bits, int x, int width, CARD32 *buffer, miIndexedP
r = (((p & 0x07) ) |
((p & 0x07) << 3) |
((p & 0x06) << 6)) << 16;
- *buffer++ = (0xff000000 | r | g | b);
+ WRITE(buffer++, (0xff000000 | r | g | b));
}
}
@@ -346,14 +344,14 @@ fbFetch_a2r2g2b2 (const FbBits *bits, int x, int width, CARD32 *buffer, miIndexe
const CARD8 *pixel = (const CARD8 *)bits + x;
const CARD8 *end = pixel + width;
while (pixel < end) {
- CARD32 p = *pixel++;
+ CARD32 p = READ(pixel++);
CARD32 a,r,g,b;
a = ((p & 0xc0) * 0x55) << 18;
r = ((p & 0x30) * 0x55) << 12;
g = ((p & 0x0c) * 0x55) << 6;
b = ((p & 0x03) * 0x55);
- *buffer++ = a|r|g|b;
+ WRITE(buffer++, a|r|g|b);
}
}
@@ -363,14 +361,14 @@ fbFetch_a2b2g2r2 (const FbBits *bits, int x, int width, CARD32 *buffer, miIndexe
const CARD8 *pixel = (const CARD8 *)bits + x;
const CARD8 *end = pixel + width;
while (pixel < end) {
- CARD32 p = *pixel++;
+ CARD32 p = READ(pixel++);
CARD32 a,r,g,b;
a = ((p & 0xc0) * 0x55) << 18;
b = ((p & 0x30) * 0x55) >> 6;
g = ((p & 0x0c) * 0x55) << 6;
r = ((p & 0x03) * 0x55) << 16;
- *buffer++ = a|r|g|b;
+ WRITE(buffer++, a|r|g|b);
}
}
@@ -380,8 +378,8 @@ fbFetch_c8 (const FbBits *bits, int x, int width, CARD32 *buffer, miIndexedPtr i
const CARD8 *pixel = (const CARD8 *)bits + x;
const CARD8 *end = pixel + width;
while (pixel < end) {
- CARD32 p = *pixel++;
- *buffer++ = indexed->rgba[p];
+ CARD32 p = READ(pixel++);
+ WRITE(buffer++, indexed->rgba[p]);
}
}
@@ -391,8 +389,8 @@ fbFetch_x4a4 (const FbBits *bits, int x, int width, CARD32 *buffer, miIndexedPtr
const CARD8 *pixel = (const CARD8 *)bits + x;
const CARD8 *end = pixel + width;
while (pixel < end) {
- CARD8 p = (*pixel++) & 0xf;
- *buffer++ = (p | (p << 4)) << 24;
+ CARD8 p = READ(pixel++) & 0xf;
+ WRITE(buffer++, (p | (p << 4)) << 24);
}
}
@@ -411,7 +409,7 @@ fbFetch_a4 (const FbBits *bits, int x, int width, CARD32 *buffer, miIndexedPtr i
CARD32 p = Fetch4(bits, i + x);
p |= p << 4;
- *buffer++ = p << 24;
+ WRITE(buffer++, p << 24);
}
}
@@ -426,7 +424,7 @@ fbFetch_r1g2b1 (const FbBits *bits, int x, int width, CARD32 *buffer, miIndexedP
r = ((p & 0x8) * 0xff) << 13;
g = ((p & 0x6) * 0x55) << 7;
b = ((p & 0x1) * 0xff);
- *buffer++ = 0xff000000|r|g|b;
+ WRITE(buffer++, 0xff000000|r|g|b);
}
}
@@ -441,7 +439,7 @@ fbFetch_b1g2r1 (const FbBits *bits, int x, int width, CARD32 *buffer, miIndexedP
b = ((p & 0x8) * 0xff) >> 3;
g = ((p & 0x6) * 0x55) << 7;
r = ((p & 0x1) * 0xff) << 16;
- *buffer++ = 0xff000000|r|g|b;
+ WRITE(buffer++, 0xff000000|r|g|b);
}
}
@@ -457,7 +455,7 @@ fbFetch_a1r1g1b1 (const FbBits *bits, int x, int width, CARD32 *buffer, miIndexe
r = ((p & 0x4) * 0xff) << 14;
g = ((p & 0x2) * 0xff) << 7;
b = ((p & 0x1) * 0xff);
- *buffer++ = a|r|g|b;
+ WRITE(buffer++, a|r|g|b);
}
}
@@ -473,7 +471,7 @@ fbFetch_a1b1g1r1 (const FbBits *bits, int x, int width, CARD32 *buffer, miIndexe
r = ((p & 0x4) * 0xff) >> 3;
g = ((p & 0x2) * 0xff) << 7;
b = ((p & 0x1) * 0xff) << 16;
- *buffer++ = a|r|g|b;
+ WRITE(buffer++, a|r|g|b);
}
}
@@ -484,7 +482,7 @@ fbFetch_c4 (const FbBits *bits, int x, int width, CARD32 *buffer, miIndexedPtr i
for (i = 0; i < width; ++i) {
CARD32 p = Fetch4(bits, i + x);
- *buffer++ = indexed->rgba[p];
+ WRITE(buffer++, indexed->rgba[p]);
}
}
@@ -505,7 +503,7 @@ fbFetch_a1 (const FbBits *bits, int x, int width, CARD32 *buffer, miIndexedPtr i
a |= a << 1;
a |= a << 2;
a |= a << 4;
- *buffer++ = a << 24;
+ WRITE(buffer++, a << 24);
}
}
@@ -522,7 +520,7 @@ fbFetch_g1 (const FbBits *bits, int x, int width, CARD32 *buffer, miIndexedPtr i
a = p >> ((i+x) & 0x1f);
#endif
a = a & 1;
- *buffer++ = indexed->rgba[a];
+ WRITE(buffer++, indexed->rgba[a]);
}
}
@@ -573,9 +571,9 @@ static fetchProc fetchProcForPicture (PicturePtr pict)
/* 1bpp formats */
case PICT_a1: return fbFetch_a1;
case PICT_g1: return fbFetch_g1;
- default:
- return NULL;
}
+
+ return NULL;
}
/*
@@ -587,19 +585,19 @@ typedef FASTCALL CARD32 (*fetchPixelProc)(const FbBits *bits, int offset, miInde
static FASTCALL CARD32
fbFetchPixel_a8r8g8b8 (const FbBits *bits, int offset, miIndexedPtr indexed)
{
- return ((CARD32 *)bits)[offset];
+ return READ((CARD32 *)bits + offset);
}
static FASTCALL CARD32
fbFetchPixel_x8r8g8b8 (const FbBits *bits, int offset, miIndexedPtr indexed)
{
- return ((CARD32 *)bits)[offset] | 0xff000000;
+ return READ((CARD32 *)bits + offset) | 0xff000000;
}
static FASTCALL CARD32
fbFetchPixel_a8b8g8r8 (const FbBits *bits, int offset, miIndexedPtr indexed)
{
- CARD32 pixel = ((CARD32 *)bits)[offset];
+ CARD32 pixel = READ((CARD32 *)bits + offset);
return ((pixel & 0xff000000) |
((pixel >> 16) & 0xff) |
@@ -610,7 +608,7 @@ fbFetchPixel_a8b8g8r8 (const FbBits *bits, int offset, miIndexedPtr indexed)
static FASTCALL CARD32
fbFetchPixel_x8b8g8r8 (const FbBits *bits, int offset, miIndexedPtr indexed)
{
- CARD32 pixel = ((CARD32 *)bits)[offset];
+ CARD32 pixel = READ((CARD32 *)bits + offset);
return ((0xff000000) |
((pixel >> 16) & 0xff) |
@@ -624,14 +622,14 @@ fbFetchPixel_r8g8b8 (const FbBits *bits, int offset, miIndexedPtr indexed)
CARD8 *pixel = ((CARD8 *) bits) + (offset*3);
#if IMAGE_BYTE_ORDER == MSBFirst
return (0xff000000 |
- (pixel[0] << 16) |
- (pixel[1] << 8) |
- (pixel[2]));
+ (READ(pixel + 0) << 16) |
+ (READ(pixel + 1) << 8) |
+ (READ(pixel + 2)));
#else
return (0xff000000 |
- (pixel[2] << 16) |
- (pixel[1] << 8) |
- (pixel[0]));
+ (READ(pixel + 2) << 16) |
+ (READ(pixel + 1) << 8) |
+ (READ(pixel + 0)));
#endif
}
@@ -641,21 +639,21 @@ fbFetchPixel_b8g8r8 (const FbBits *bits, int offset, miIndexedPtr indexed)
CARD8 *pixel = ((CARD8 *) bits) + (offset*3);
#if IMAGE_BYTE_ORDER == MSBFirst
return (0xff000000 |
- (pixel[2] << 16) |
- (pixel[1] << 8) |
- (pixel[0]));
+ (READ(pixel + 2) << 16) |
+ (READ(pixel + 1) << 8) |
+ (READ(pixel + 0)));
#else
return (0xff000000 |
- (pixel[0] << 16) |
- (pixel[1] << 8) |
- (pixel[2]));
+ (READ(pixel + 0) << 16) |
+ (READ(pixel + 1) << 8) |
+ (READ(pixel + 2)));
#endif
}
static FASTCALL CARD32
fbFetchPixel_r5g6b5 (const FbBits *bits, int offset, miIndexedPtr indexed)
{
- CARD32 pixel = ((CARD16 *) bits)[offset];
+ CARD32 pixel = READ((CARD16 *) bits + offset);
CARD32 r,g,b;
r = ((pixel & 0xf800) | ((pixel & 0xe000) >> 5)) << 8;
@@ -667,7 +665,7 @@ fbFetchPixel_r5g6b5 (const FbBits *bits, int offset, miIndexedPtr indexed)
static FASTCALL CARD32
fbFetchPixel_b5g6r5 (const FbBits *bits, int offset, miIndexedPtr indexed)
{
- CARD32 pixel = ((CARD16 *) bits)[offset];
+ CARD32 pixel = READ((CARD16 *) bits + offset);
CARD32 r,g,b;
b = ((pixel & 0xf800) | ((pixel & 0xe000) >> 5)) >> 8;
@@ -679,7 +677,7 @@ fbFetchPixel_b5g6r5 (const FbBits *bits, int offset, miIndexedPtr indexed)
static FASTCALL CARD32
fbFetchPixel_a1r5g5b5 (const FbBits *bits, int offset, miIndexedPtr indexed)
{
- CARD32 pixel = ((CARD16 *) bits)[offset];
+ CARD32 pixel = READ((CARD16 *) bits + offset);
CARD32 a,r,g,b;
a = (CARD32) ((CARD8) (0 - ((pixel & 0x8000) >> 15))) << 24;
@@ -692,7 +690,7 @@ fbFetchPixel_a1r5g5b5 (const FbBits *bits, int offset, miIndexedPtr indexed)
static FASTCALL CARD32
fbFetchPixel_x1r5g5b5 (const FbBits *bits, int offset, miIndexedPtr indexed)
{
- CARD32 pixel = ((CARD16 *) bits)[offset];
+ CARD32 pixel = READ((CARD16 *) bits + offset);
CARD32 r,g,b;
r = ((pixel & 0x7c00) | ((pixel & 0x7000) >> 5)) << 9;
@@ -704,7 +702,7 @@ fbFetchPixel_x1r5g5b5 (const FbBits *bits, int offset, miIndexedPtr indexed)
static FASTCALL CARD32
fbFetchPixel_a1b5g5r5 (const FbBits *bits, int offset, miIndexedPtr indexed)
{
- CARD32 pixel = ((CARD16 *) bits)[offset];
+ CARD32 pixel = READ((CARD16 *) bits + offset);
CARD32 a,r,g,b;
a = (CARD32) ((CARD8) (0 - ((pixel & 0x8000) >> 15))) << 24;
@@ -717,7 +715,7 @@ fbFetchPixel_a1b5g5r5 (const FbBits *bits, int offset, miIndexedPtr indexed)
static FASTCALL CARD32
fbFetchPixel_x1b5g5r5 (const FbBits *bits, int offset, miIndexedPtr indexed)
{
- CARD32 pixel = ((CARD16 *) bits)[offset];
+ CARD32 pixel = READ((CARD16 *) bits + offset);
CARD32 r,g,b;
b = ((pixel & 0x7c00) | ((pixel & 0x7000) >> 5)) >> 7;
@@ -729,7 +727,7 @@ fbFetchPixel_x1b5g5r5 (const FbBits *bits, int offset, miIndexedPtr indexed)
static FASTCALL CARD32
fbFetchPixel_a4r4g4b4 (const FbBits *bits, int offset, miIndexedPtr indexed)
{
- CARD32 pixel = ((CARD16 *) bits)[offset];
+ CARD32 pixel = READ((CARD16 *) bits + offset);
CARD32 a,r,g,b;
a = ((pixel & 0xf000) | ((pixel & 0xf000) >> 4)) << 16;
@@ -742,7 +740,7 @@ fbFetchPixel_a4r4g4b4 (const FbBits *bits, int offset, miIndexedPtr indexed)
static FASTCALL CARD32
fbFetchPixel_x4r4g4b4 (const FbBits *bits, int offset, miIndexedPtr indexed)
{
- CARD32 pixel = ((CARD16 *) bits)[offset];
+ CARD32 pixel = READ((CARD16 *) bits + offset);
CARD32 r,g,b;
r = ((pixel & 0x0f00) | ((pixel & 0x0f00) >> 4)) << 12;
@@ -754,32 +752,32 @@ fbFetchPixel_x4r4g4b4 (const FbBits *bits, int offset, miIndexedPtr indexed)
static FASTCALL CARD32
fbFetchPixel_a4b4g4r4 (const FbBits *bits, int offset, miIndexedPtr indexed)
{
- CARD32 pixel = ((CARD16 *) bits)[offset];
+ CARD32 pixel = READ((CARD16 *) bits + offset);
CARD32 a,r,g,b;
a = ((pixel & 0xf000) | ((pixel & 0xf000) >> 4)) << 16;
- b = ((pixel & 0x0f00) | ((pixel & 0x0f00) >> 4)) << 12;
+ b = ((pixel & 0x0f00) | ((pixel & 0x0f00) >> 4)) >> 4;
g = ((pixel & 0x00f0) | ((pixel & 0x00f0) >> 4)) << 8;
- r = ((pixel & 0x000f) | ((pixel & 0x000f) << 4));
+ r = ((pixel & 0x000f) | ((pixel & 0x000f) << 4)) << 16;
return (a | r | g | b);
}
static FASTCALL CARD32
fbFetchPixel_x4b4g4r4 (const FbBits *bits, int offset, miIndexedPtr indexed)
{
- CARD32 pixel = ((CARD16 *) bits)[offset];
+ CARD32 pixel = READ((CARD16 *) bits + offset);
CARD32 r,g,b;
- b = ((pixel & 0x0f00) | ((pixel & 0x0f00) >> 4)) << 12;
+ b = ((pixel & 0x0f00) | ((pixel & 0x0f00) >> 4)) >> 4;
g = ((pixel & 0x00f0) | ((pixel & 0x00f0) >> 4)) << 8;
- r = ((pixel & 0x000f) | ((pixel & 0x000f) << 4));
+ r = ((pixel & 0x000f) | ((pixel & 0x000f) << 4)) << 16;
return (0xff000000 | r | g | b);
}
static FASTCALL CARD32
fbFetchPixel_a8 (const FbBits *bits, int offset, miIndexedPtr indexed)
{
- CARD32 pixel = ((CARD8 *) bits)[offset];
+ CARD32 pixel = READ((CARD8 *) bits + offset);
return pixel << 24;
}
@@ -787,7 +785,7 @@ fbFetchPixel_a8 (const FbBits *bits, int offset, miIndexedPtr indexed)
static FASTCALL CARD32
fbFetchPixel_r3g3b2 (const FbBits *bits, int offset, miIndexedPtr indexed)
{
- CARD32 pixel = ((CARD8 *) bits)[offset];
+ CARD32 pixel = READ((CARD8 *) bits + offset);
CARD32 r,g,b;
r = ((pixel & 0xe0) | ((pixel & 0xe0) >> 3) | ((pixel & 0xc0) >> 6)) << 16;
@@ -802,7 +800,7 @@ fbFetchPixel_r3g3b2 (const FbBits *bits, int offset, miIndexedPtr indexed)
static FASTCALL CARD32
fbFetchPixel_b2g3r3 (const FbBits *bits, int offset, miIndexedPtr indexed)
{
- CARD32 pixel = ((CARD8 *) bits)[offset];
+ CARD32 pixel = READ((CARD8 *) bits + offset);
CARD32 r,g,b;
b = (((pixel & 0xc0) ) |
@@ -819,7 +817,7 @@ fbFetchPixel_b2g3r3 (const FbBits *bits, int offset, miIndexedPtr indexed)
static FASTCALL CARD32
fbFetchPixel_a2r2g2b2 (const FbBits *bits, int offset, miIndexedPtr indexed)
{
- CARD32 pixel = ((CARD8 *) bits)[offset];
+ CARD32 pixel = READ((CARD8 *) bits + offset);
CARD32 a,r,g,b;
a = ((pixel & 0xc0) * 0x55) << 18;
@@ -832,7 +830,7 @@ fbFetchPixel_a2r2g2b2 (const FbBits *bits, int offset, miIndexedPtr indexed)
static FASTCALL CARD32
fbFetchPixel_a2b2g2r2 (const FbBits *bits, int offset, miIndexedPtr indexed)
{
- CARD32 pixel = ((CARD8 *) bits)[offset];
+ CARD32 pixel = READ((CARD8 *) bits + offset);
CARD32 a,r,g,b;
a = ((pixel & 0xc0) * 0x55) << 18;
@@ -845,10 +843,18 @@ fbFetchPixel_a2b2g2r2 (const FbBits *bits, int offset, miIndexedPtr indexed)
static FASTCALL CARD32
fbFetchPixel_c8 (const FbBits *bits, int offset, miIndexedPtr indexed)
{
- CARD32 pixel = ((CARD8 *) bits)[offset];
+ CARD32 pixel = READ((CARD8 *) bits + offset);
return indexed->rgba[pixel];
}
+static FASTCALL CARD32
+fbFetchPixel_x4a4 (const FbBits *bits, int offset, miIndexedPtr indexed)
+{
+ CARD32 pixel = READ((CARD8 *) bits + offset);
+
+ return ((pixel & 0xf) | ((pixel & 0xf) << 4)) << 24;
+}
+
#define Fetch8(l,o) (((CARD8 *) (l))[(o) >> 2])
#if IMAGE_BYTE_ORDER == MSBFirst
#define Fetch4(l,o) ((o) & 2 ? Fetch8(l,o) & 0xf : Fetch8(l,o) >> 4)
@@ -988,6 +994,7 @@ static fetchPixelProc fetchPixelProcForPicture (PicturePtr pict)
case PICT_a2b2g2r2: return fbFetchPixel_a2b2g2r2;
case PICT_c8: return fbFetchPixel_c8;
case PICT_g8: return fbFetchPixel_c8;
+ case PICT_x4a4: return fbFetchPixel_x4a4;
/* 4bpp formats */
case PICT_a4: return fbFetchPixel_a4;
@@ -1001,9 +1008,9 @@ static fetchPixelProc fetchPixelProcForPicture (PicturePtr pict)
/* 1bpp formats */
case PICT_a1: return fbFetchPixel_a1;
case PICT_g1: return fbFetchPixel_g1;
- default:
- return NULL;
}
+
+ return NULL;
}
@@ -1020,7 +1027,7 @@ typedef FASTCALL void (*storeProc) (FbBits *bits, const CARD32 *values, int x, i
static FASTCALL void
fbStore_a8r8g8b8 (FbBits *bits, const CARD32 *values, int x, int width, miIndexedPtr indexed)
{
- memcpy(((CARD32 *)bits) + x, values, width*sizeof(CARD32));
+ MEMCPY_WRAPPED(((CARD32 *)bits) + x, values, width*sizeof(CARD32));
}
static FASTCALL void
@@ -1029,7 +1036,7 @@ fbStore_x8r8g8b8 (FbBits *bits, const CARD32 *values, int x, int width, miIndexe
int i;
CARD32 *pixel = (CARD32 *)bits + x;
for (i = 0; i < width; ++i)
- *pixel++ = values[i] & 0xffffff;
+ WRITE(pixel++, READ(values + i) & 0xffffff);
}
static FASTCALL void
@@ -1038,7 +1045,7 @@ fbStore_a8b8g8r8 (FbBits *bits, const CARD32 *values, int x, int width, miIndexe
int i;
CARD32 *pixel = (CARD32 *)bits + x;
for (i = 0; i < width; ++i)
- *pixel++ = (values[i] & 0xff00ff00) | ((values[i] >> 16) & 0xff) | ((values[i] & 0xff) << 16);
+ WRITE(pixel++, (READ(values + i) & 0xff00ff00) | ((READ(values + i) >> 16) & 0xff) | ((READ(values + i) & 0xff) << 16));
}
static FASTCALL void
@@ -1047,7 +1054,7 @@ fbStore_x8b8g8r8 (FbBits *bits, const CARD32 *values, int x, int width, miIndexe
int i;
CARD32 *pixel = (CARD32 *)bits + x;
for (i = 0; i < width; ++i)
- *pixel++ = (values[i] & 0x0000ff00) | ((values[i] >> 16) & 0xff) | ((values[i] & 0xff) << 16);
+ WRITE(pixel++, (READ(values + i) & 0x0000ff00) | ((READ(values + i) >> 16) & 0xff) | ((READ(values + i) & 0xff) << 16));
}
static FASTCALL void
@@ -1056,7 +1063,7 @@ fbStore_r8g8b8 (FbBits *bits, const CARD32 *values, int x, int width, miIndexedP
int i;
CARD8 *pixel = ((CARD8 *) bits) + 3*x;
for (i = 0; i < width; ++i) {
- Store24(pixel, values[i]);
+ Store24(pixel, READ(values + i));
pixel += 3;
}
}
@@ -1067,14 +1074,15 @@ fbStore_b8g8r8 (FbBits *bits, const CARD32 *values, int x, int width, miIndexedP
int i;
CARD8 *pixel = ((CARD8 *) bits) + 3*x;
for (i = 0; i < width; ++i) {
+ CARD32 val = READ(values + i);
#if IMAGE_BYTE_ORDER == MSBFirst
- *pixel++ = Blue(values[i]);
- *pixel++ = Green(values[i]);
- *pixel++ = Red(values[i]);
+ WRITE(pixel++, Blue(val));
+ WRITE(pixel++, Green(val));
+ WRITE(pixel++, Red(val));
#else
- *pixel++ = Red(values[i]);
- *pixel++ = Green(values[i]);
- *pixel++ = Blue(values[i]);
+ WRITE(pixel++, Red(val));
+ WRITE(pixel++, Green(val));
+ WRITE(pixel++, Blue(val));
#endif
}
}
@@ -1085,10 +1093,10 @@ fbStore_r5g6b5 (FbBits *bits, const CARD32 *values, int x, int width, miIndexedP
int i;
CARD16 *pixel = ((CARD16 *) bits) + x;
for (i = 0; i < width; ++i) {
- CARD32 s = values[i];
- *pixel++ = ((s >> 3) & 0x001f) |
- ((s >> 5) & 0x07e0) |
- ((s >> 8) & 0xf800);
+ CARD32 s = READ(values + i);
+ WRITE(pixel++, ((s >> 3) & 0x001f) |
+ ((s >> 5) & 0x07e0) |
+ ((s >> 8) & 0xf800));
}
}
@@ -1098,10 +1106,10 @@ fbStore_b5g6r5 (FbBits *bits, const CARD32 *values, int x, int width, miIndexedP
int i;
CARD16 *pixel = ((CARD16 *) bits) + x;
for (i = 0; i < width; ++i) {
- Split(values[i]);
- *pixel++ = (((b << 8) & 0xf800) |
- ((g << 3) & 0x07e0) |
- ((r >> 3) ));
+ Split(READ(values + i));
+ WRITE(pixel++, ((b << 8) & 0xf800) |
+ ((g << 3) & 0x07e0) |
+ ((r >> 3) ));
}
}
@@ -1111,11 +1119,11 @@ fbStore_a1r5g5b5 (FbBits *bits, const CARD32 *values, int x, int width, miIndexe
int i;
CARD16 *pixel = ((CARD16 *) bits) + x;
for (i = 0; i < width; ++i) {
- Splita(values[i]);
- *pixel++ = (((a << 8) & 0x8000) |
- ((r << 7) & 0x7c00) |
- ((g << 2) & 0x03e0) |
- ((b >> 3) ));
+ Splita(READ(values + i));
+ WRITE(pixel++, ((a << 8) & 0x8000) |
+ ((r << 7) & 0x7c00) |
+ ((g << 2) & 0x03e0) |
+ ((b >> 3) ));
}
}
@@ -1125,10 +1133,10 @@ fbStore_x1r5g5b5 (FbBits *bits, const CARD32 *values, int x, int width, miIndexe
int i;
CARD16 *pixel = ((CARD16 *) bits) + x;
for (i = 0; i < width; ++i) {
- Split(values[i]);
- *pixel++ = (((r << 7) & 0x7c00) |
- ((g << 2) & 0x03e0) |
- ((b >> 3) ));
+ Split(READ(values + i));
+ WRITE(pixel++, ((r << 7) & 0x7c00) |
+ ((g << 2) & 0x03e0) |
+ ((b >> 3) ));
}
}
@@ -1138,11 +1146,11 @@ fbStore_a1b5g5r5 (FbBits *bits, const CARD32 *values, int x, int width, miIndexe
int i;
CARD16 *pixel = ((CARD16 *) bits) + x;
for (i = 0; i < width; ++i) {
- Splita(values[i]);
- *pixel++ = (((a << 8) & 0x8000) |
- ((b << 7) & 0x7c00) |
- ((g << 2) & 0x03e0) |
- ((r >> 3) ));
+ Splita(READ(values + i));
+ WRITE(pixel++, ((a << 8) & 0x8000) |
+ ((b << 7) & 0x7c00) |
+ ((g << 2) & 0x03e0) |
+ ((r >> 3) ));
}
}
@@ -1152,10 +1160,10 @@ fbStore_x1b5g5r5 (FbBits *bits, const CARD32 *values, int x, int width, miIndexe
int i;
CARD16 *pixel = ((CARD16 *) bits) + x;
for (i = 0; i < width; ++i) {
- Split(values[i]);
- *pixel++ = (((b << 7) & 0x7c00) |
- ((g << 2) & 0x03e0) |
- ((r >> 3) ));
+ Split(READ(values + i));
+ WRITE(pixel++, ((b << 7) & 0x7c00) |
+ ((g << 2) & 0x03e0) |
+ ((r >> 3) ));
}
}
@@ -1165,11 +1173,11 @@ fbStore_a4r4g4b4 (FbBits *bits, const CARD32 *values, int x, int width, miIndexe
int i;
CARD16 *pixel = ((CARD16 *) bits) + x;
for (i = 0; i < width; ++i) {
- Splita(values[i]);
- *pixel++ = (((a << 8) & 0xf000) |
- ((r << 4) & 0x0f00) |
- ((g ) & 0x00f0) |
- ((b >> 4) ));
+ Splita(READ(values + i));
+ WRITE(pixel++, ((a << 8) & 0xf000) |
+ ((r << 4) & 0x0f00) |
+ ((g ) & 0x00f0) |
+ ((b >> 4) ));
}
}
@@ -1179,10 +1187,10 @@ fbStore_x4r4g4b4 (FbBits *bits, const CARD32 *values, int x, int width, miIndexe
int i;
CARD16 *pixel = ((CARD16 *) bits) + x;
for (i = 0; i < width; ++i) {
- Split(values[i]);
- *pixel++ = (((r << 4) & 0x0f00) |
- ((g ) & 0x00f0) |
- ((b >> 4) ));
+ Split(READ(values + i));
+ WRITE(pixel++, ((r << 4) & 0x0f00) |
+ ((g ) & 0x00f0) |
+ ((b >> 4) ));
}
}
@@ -1192,11 +1200,11 @@ fbStore_a4b4g4r4 (FbBits *bits, const CARD32 *values, int x, int width, miIndexe
int i;
CARD16 *pixel = ((CARD16 *) bits) + x;
for (i = 0; i < width; ++i) {
- Splita(values[i]);
- *pixel++ = (((a << 8) & 0xf000) |
- ((b << 4) & 0x0f00) |
- ((g ) & 0x00f0) |
- ((r >> 4) ));
+ Splita(READ(values + i));
+ WRITE(pixel++, ((a << 8) & 0xf000) |
+ ((b << 4) & 0x0f00) |
+ ((g ) & 0x00f0) |
+ ((r >> 4) ));
}
}
@@ -1206,10 +1214,10 @@ fbStore_x4b4g4r4 (FbBits *bits, const CARD32 *values, int x, int width, miIndexe
int i;
CARD16 *pixel = ((CARD16 *) bits) + x;
for (i = 0; i < width; ++i) {
- Split(values[i]);
- *pixel++ = (((b << 4) & 0x0f00) |
- ((g ) & 0x00f0) |
- ((r >> 4) ));
+ Split(READ(values + i));
+ WRITE(pixel++, ((b << 4) & 0x0f00) |
+ ((g ) & 0x00f0) |
+ ((r >> 4) ));
}
}
@@ -1219,7 +1227,7 @@ fbStore_a8 (FbBits *bits, const CARD32 *values, int x, int width, miIndexedPtr i
int i;
CARD8 *pixel = ((CARD8 *) bits) + x;
for (i = 0; i < width; ++i) {
- *pixel++ = values[i] >> 24;
+ WRITE(pixel++, READ(values + i) >> 24);
}
}
@@ -1229,10 +1237,10 @@ fbStore_r3g3b2 (FbBits *bits, const CARD32 *values, int x, int width, miIndexedP
int i;
CARD8 *pixel = ((CARD8 *) bits) + x;
for (i = 0; i < width; ++i) {
- Split(values[i]);
- *pixel++ = (((r ) & 0xe0) |
- ((g >> 3) & 0x1c) |
- ((b >> 6) ));
+ Split(READ(values + i));
+ WRITE(pixel++, ((r ) & 0xe0) |
+ ((g >> 3) & 0x1c) |
+ ((b >> 6) ));
}
}
@@ -1242,10 +1250,10 @@ fbStore_b2g3r3 (FbBits *bits, const CARD32 *values, int x, int width, miIndexedP
int i;
CARD8 *pixel = ((CARD8 *) bits) + x;
for (i = 0; i < width; ++i) {
- Split(values[i]);
- *pixel++ = (((b ) & 0xe0) |
- ((g >> 3) & 0x1c) |
- ((r >> 6) ));
+ Split(READ(values + i));
+ WRITE(pixel++, ((b ) & 0xe0) |
+ ((g >> 3) & 0x1c) |
+ ((r >> 6) ));
}
}
@@ -1255,11 +1263,11 @@ fbStore_a2r2g2b2 (FbBits *bits, const CARD32 *values, int x, int width, miIndexe
int i;
CARD8 *pixel = ((CARD8 *) bits) + x;
for (i = 0; i < width; ++i) {
- Splita(values[i]);
- *pixel++ = (((a ) & 0xc0) |
- ((r >> 2) & 0x30) |
- ((g >> 4) & 0x0c) |
- ((b >> 6) ));
+ Splita(READ(values + i));
+ WRITE(pixel++, ((a ) & 0xc0) |
+ ((r >> 2) & 0x30) |
+ ((g >> 4) & 0x0c) |
+ ((b >> 6) ));
}
}
@@ -1269,7 +1277,7 @@ fbStore_c8 (FbBits *bits, const CARD32 *values, int x, int width, miIndexedPtr i
int i;
CARD8 *pixel = ((CARD8 *) bits) + x;
for (i = 0; i < width; ++i) {
- *pixel++ = miIndexToEnt24(indexed,values[i]);
+ WRITE(pixel++, miIndexToEnt24(indexed,READ(values + i)));
}
}
@@ -1279,7 +1287,7 @@ fbStore_x4a4 (FbBits *bits, const CARD32 *values, int x, int width, miIndexedPtr
int i;
CARD8 *pixel = ((CARD8 *) bits) + x;
for (i = 0; i < width; ++i) {
- *pixel++ = values[i] >> 28;
+ WRITE(pixel++, READ(values + i) >> 28);
}
}
@@ -1299,7 +1307,7 @@ fbStore_a4 (FbBits *bits, const CARD32 *values, int x, int width, miIndexedPtr i
{
int i;
for (i = 0; i < width; ++i) {
- Store4(bits, i + x, values[i]>>28);
+ Store4(bits, i + x, READ(values + i)>>28);
}
}
@@ -1310,7 +1318,7 @@ fbStore_r1g2b1 (FbBits *bits, const CARD32 *values, int x, int width, miIndexedP
for (i = 0; i < width; ++i) {
CARD32 pixel;
- Split(values[i]);
+ Split(READ(values + i));
pixel = (((r >> 4) & 0x8) |
((g >> 5) & 0x6) |
((b >> 7) ));
@@ -1325,7 +1333,7 @@ fbStore_b1g2r1 (FbBits *bits, const CARD32 *values, int x, int width, miIndexedP
for (i = 0; i < width; ++i) {
CARD32 pixel;
- Split(values[i]);
+ Split(READ(values + i));
pixel = (((b >> 4) & 0x8) |
((g >> 5) & 0x6) |
((r >> 7) ));
@@ -1339,7 +1347,7 @@ fbStore_a1r1g1b1 (FbBits *bits, const CARD32 *values, int x, int width, miIndexe
int i;
for (i = 0; i < width; ++i) {
CARD32 pixel;
- Splita(values[i]);
+ Splita(READ(values + i));
pixel = (((a >> 4) & 0x8) |
((r >> 5) & 0x4) |
((g >> 6) & 0x2) |
@@ -1354,7 +1362,7 @@ fbStore_a1b1g1r1 (FbBits *bits, const CARD32 *values, int x, int width, miIndexe
int i;
for (i = 0; i < width; ++i) {
CARD32 pixel;
- Splita(values[i]);
+ Splita(READ(values + i));
pixel = (((a >> 4) & 0x8) |
((b >> 5) & 0x4) |
((g >> 6) & 0x2) |
@@ -1370,7 +1378,7 @@ fbStore_c4 (FbBits *bits, const CARD32 *values, int x, int width, miIndexedPtr i
for (i = 0; i < width; ++i) {
CARD32 pixel;
- pixel = miIndexToEnt24(indexed, values[i]);
+ pixel = miIndexToEnt24(indexed, READ(values + i));
Store4(bits, i + x, pixel);
}
}
@@ -1383,8 +1391,8 @@ fbStore_a1 (FbBits *bits, const CARD32 *values, int x, int width, miIndexedPtr i
CARD32 *pixel = ((CARD32 *) bits) + ((i+x) >> 5);
CARD32 mask = FbStipMask((i+x) & 0x1f, 1);
- CARD32 v = values[i] & 0x80000000 ? mask : 0;
- *pixel = (*pixel & ~mask) | v;
+ CARD32 v = READ(values + i) & 0x80000000 ? mask : 0;
+ WRITE(pixel, (READ(pixel) & ~mask) | v);
}
}
@@ -1396,8 +1404,8 @@ fbStore_g1 (FbBits *bits, const CARD32 *values, int x, int width, miIndexedPtr i
CARD32 *pixel = ((CARD32 *) bits) + ((i+x) >> 5);
CARD32 mask = FbStipMask((i+x) & 0x1f, 1);
- CARD32 v = miIndexToEntY24(indexed,values[i]) ? mask : 0;
- *pixel = (*pixel & ~mask) | v;
+ CARD32 v = miIndexToEntY24(indexed,READ(values + i)) ? mask : 0;
+ WRITE(pixel, (READ(pixel) & ~mask) | v);
}
}
@@ -1462,10 +1470,10 @@ fbCombineMaskU (CARD32 *src, const CARD32 *mask, int width)
{
int i;
for (i = 0; i < width; ++i) {
- CARD32 a = mask[i] >> 24;
- CARD32 s = src[i];
+ CARD32 a = READ(mask + i) >> 24;
+ CARD32 s = READ(src + i);
FbByteMul(s, a);
- src[i] = s;
+ WRITE(src + i, s);
}
}
@@ -1476,13 +1484,13 @@ fbCombineMaskU (CARD32 *src, const CARD32 *mask, int width)
static FASTCALL void
fbCombineClear (CARD32 *dest, const CARD32 *src, int width)
{
- memset(dest, 0, width*sizeof(CARD32));
+ MEMSET_WRAPPED(dest, 0, width*sizeof(CARD32));
}
static FASTCALL void
fbCombineSrcU (CARD32 *dest, const CARD32 *src, int width)
{
- memcpy(dest, src, width*sizeof(CARD32));
+ MEMCPY_WRAPPED(dest, src, width*sizeof(CARD32));
}
@@ -1491,12 +1499,12 @@ fbCombineOverU (CARD32 *dest, const CARD32 *src, int width)
{
int i;
for (i = 0; i < width; ++i) {
- CARD32 s = src[i];
- CARD32 d = dest[i];
+ CARD32 s = READ(src + i);
+ CARD32 d = READ(dest + i);
CARD32 ia = Alpha(~s);
FbByteMulAdd(d, ia, s);
- dest[i] = d;
+ WRITE(dest + i, d);
}
}
@@ -1505,11 +1513,11 @@ fbCombineOverReverseU (CARD32 *dest, const CARD32 *src, int width)
{
int i;
for (i = 0; i < width; ++i) {
- CARD32 s = src[i];
- CARD32 d = dest[i];
- CARD32 ia = Alpha(~dest[i]);
+ CARD32 s = READ(src + i);
+ CARD32 d = READ(dest + i);
+ CARD32 ia = Alpha(~READ(dest + i));
FbByteMulAdd(s, ia, d);
- dest[i] = s;
+ WRITE(dest + i, s);
}
}
@@ -1518,10 +1526,10 @@ fbCombineInU (CARD32 *dest, const CARD32 *src, int width)
{
int i;
for (i = 0; i < width; ++i) {
- CARD32 s = src[i];
- CARD32 a = Alpha(dest[i]);
+ CARD32 s = READ(src + i);
+ CARD32 a = Alpha(READ(dest + i));
FbByteMul(s, a);
- dest[i] = s;
+ WRITE(dest + i, s);
}
}
@@ -1530,10 +1538,10 @@ fbCombineInReverseU (CARD32 *dest, const CARD32 *src, int width)
{
int i;
for (i = 0; i < width; ++i) {
- CARD32 d = dest[i];
- CARD32 a = Alpha(src[i]);
+ CARD32 d = READ(dest + i);
+ CARD32 a = Alpha(READ(src + i));
FbByteMul(d, a);
- dest[i] = d;
+ WRITE(dest + i, d);
}
}
@@ -1542,10 +1550,10 @@ fbCombineOutU (CARD32 *dest, const CARD32 *src, int width)
{
int i;
for (i = 0; i < width; ++i) {
- CARD32 s = src[i];
- CARD32 a = Alpha(~dest[i]);
+ CARD32 s = READ(src + i);
+ CARD32 a = Alpha(~READ(dest + i));
FbByteMul(s, a);
- dest[i] = s;
+ WRITE(dest + i, s);
}
}
@@ -1554,10 +1562,10 @@ fbCombineOutReverseU (CARD32 *dest, const CARD32 *src, int width)
{
int i;
for (i = 0; i < width; ++i) {
- CARD32 d = dest[i];
- CARD32 a = Alpha(~src[i]);
+ CARD32 d = READ(dest + i);
+ CARD32 a = Alpha(~READ(src + i));
FbByteMul(d, a);
- dest[i] = d;
+ WRITE(dest + i, d);
}
}
@@ -1566,13 +1574,13 @@ fbCombineAtopU (CARD32 *dest, const CARD32 *src, int width)
{
int i;
for (i = 0; i < width; ++i) {
- CARD32 s = src[i];
- CARD32 d = dest[i];
+ CARD32 s = READ(src + i);
+ CARD32 d = READ(dest + i);
CARD32 dest_a = Alpha(d);
CARD32 src_ia = Alpha(~s);
FbByteAddMul(s, dest_a, d, src_ia);
- dest[i] = s;
+ WRITE(dest + i, s);
}
}
@@ -1581,13 +1589,13 @@ fbCombineAtopReverseU (CARD32 *dest, const CARD32 *src, int width)
{
int i;
for (i = 0; i < width; ++i) {
- CARD32 s = src[i];
- CARD32 d = dest[i];
+ CARD32 s = READ(src + i);
+ CARD32 d = READ(dest + i);
CARD32 src_a = Alpha(s);
CARD32 dest_ia = Alpha(~d);
FbByteAddMul(s, dest_ia, d, src_a);
- dest[i] = s;
+ WRITE(dest + i, s);
}
}
@@ -1596,13 +1604,13 @@ fbCombineXorU (CARD32 *dest, const CARD32 *src, int width)
{
int i;
for (i = 0; i < width; ++i) {
- CARD32 s = src[i];
- CARD32 d = dest[i];
+ CARD32 s = READ(src + i);
+ CARD32 d = READ(dest + i);
CARD32 src_ia = Alpha(~s);
CARD32 dest_ia = Alpha(~d);
FbByteAddMul(s, dest_ia, d, src_ia);
- dest[i] = s;
+ WRITE(dest + i, s);
}
}
@@ -1611,10 +1619,10 @@ fbCombineAddU (CARD32 *dest, const CARD32 *src, int width)
{
int i;
for (i = 0; i < width; ++i) {
- CARD32 s = src[i];
- CARD32 d = dest[i];
+ CARD32 s = READ(src + i);
+ CARD32 d = READ(dest + i);
FbByteAdd(d, s);
- dest[i] = d;
+ WRITE(dest + i, d);
}
}
@@ -1623,8 +1631,8 @@ fbCombineSaturateU (CARD32 *dest, const CARD32 *src, int width)
{
int i;
for (i = 0; i < width; ++i) {
- CARD32 s = src[i];
- CARD32 d = dest[i];
+ CARD32 s = READ(src + i);
+ CARD32 d = READ(dest + i);
CARD16 sa, da;
sa = s >> 24;
@@ -1635,7 +1643,7 @@ fbCombineSaturateU (CARD32 *dest, const CARD32 *src, int width)
FbByteMul(s, sa);
}
FbByteAdd(d, s);
- dest[i] = d;
+ WRITE(dest + i, d);
}
}
@@ -1709,8 +1717,8 @@ fbCombineDisjointGeneralU (CARD32 *dest, const CARD32 *src, int width, CARD8 com
{
int i;
for (i = 0; i < width; ++i) {
- CARD32 s = src[i];
- CARD32 d = dest[i];
+ CARD32 s = READ(src + i);
+ CARD32 d = READ(dest + i);
CARD32 m,n,o,p;
CARD16 Fa, Fb, t, u, v;
CARD8 sa = s >> 24;
@@ -1750,7 +1758,7 @@ fbCombineDisjointGeneralU (CARD32 *dest, const CARD32 *src, int width, CARD8 com
o = FbGen (s,d,16,Fa,Fb,t, u, v);
p = FbGen (s,d,24,Fa,Fb,t, u, v);
s = m|n|o|p;
- dest[i] = s;
+ WRITE(dest + i, s);
}
}
@@ -1759,19 +1767,19 @@ fbCombineDisjointOverU (CARD32 *dest, const CARD32 *src, int width)
{
int i;
for (i = 0; i < width; ++i) {
- CARD32 s = src[i];
+ CARD32 s = READ(src + i);
CARD16 a = s >> 24;
if (a != 0x00)
{
if (a != 0xff)
{
- CARD32 d = dest[i];
+ CARD32 d = READ(dest + i);
a = fbCombineDisjointOutPart (d >> 24, a);
FbByteMulAdd(d, a, s);
s = d;
}
- dest[i] = s;
+ WRITE(dest + i, s);
}
}
}
@@ -1848,8 +1856,8 @@ fbCombineConjointGeneralU (CARD32 *dest, const CARD32 *src, int width, CARD8 com
{
int i;
for (i = 0; i < width; ++i) {
- CARD32 s = src[i];
- CARD32 d = dest[i];
+ CARD32 s = READ(src + i);
+ CARD32 d = READ(dest + i);
CARD32 m,n,o,p;
CARD16 Fa, Fb, t, u, v;
CARD8 sa = s >> 24;
@@ -1889,7 +1897,7 @@ fbCombineConjointGeneralU (CARD32 *dest, const CARD32 *src, int width, CARD8 com
o = FbGen (s,d,16,Fa,Fb,t, u, v);
p = FbGen (s,d,24,Fa,Fb,t, u, v);
s = m|n|o|p;
- dest[i] = s;
+ WRITE(dest + i, s);
}
}
@@ -2002,32 +2010,32 @@ fbCombineMaskC (CARD32 *src, CARD32 *mask, int width)
{
int i;
for (i = 0; i < width; ++i) {
- CARD32 a = mask[i];
+ CARD32 a = READ(mask + i);
CARD32 x;
CARD16 xa;
if (!a)
{
- src[i] = 0;
+ WRITE(src + i, 0);
continue;
}
- x = src[i];
+ x = READ(src + i);
if (a == 0xffffffff)
{
x = x >> 24;
x |= x << 8;
x |= x << 16;
- mask[i] = x;
+ WRITE(mask + i, x);
continue;
}
xa = x >> 24;
FbByteMulC(x, a);
- src[i] = x;
+ WRITE(src + i, x);
FbByteMul(a, xa);
- mask[i] = a;
+ WRITE(mask + i, a);
}
}
@@ -2036,21 +2044,21 @@ fbCombineMaskValueC (CARD32 *src, const CARD32 *mask, int width)
{
int i;
for (i = 0; i < width; ++i) {
- CARD32 a = mask[i];
+ CARD32 a = READ(mask + i);
CARD32 x;
if (!a)
{
- src[i] = 0;
+ WRITE(src + i, 0);
continue;
}
if (a == 0xffffffff)
continue;
- x = src[i];
+ x = READ(src + i);
FbByteMulC(x, a);
- src[i] = x;
+ WRITE(src + i, x);
}
}
@@ -2060,13 +2068,13 @@ fbCombineMaskAlphaC (const CARD32 *src, CARD32 *mask, int width)
{
int i;
for (i = 0; i < width; ++i) {
- CARD32 a = mask[i];
+ CARD32 a = READ(mask + i);
CARD32 x;
if (!a)
continue;
- x = src[i] >> 24;
+ x = READ(src + i) >> 24;
if (x == 0xff)
continue;
if (a == 0xffffffff)
@@ -2074,12 +2082,12 @@ fbCombineMaskAlphaC (const CARD32 *src, CARD32 *mask, int width)
x = x >> 24;
x |= x << 8;
x |= x << 16;
- mask[i] = x;
+ WRITE(mask + i, x);
continue;
}
FbByteMul(a, x);
- mask[i] = a;
+ WRITE(mask + i, a);
}
}
@@ -2093,7 +2101,7 @@ static FASTCALL void
fbCombineSrcC (CARD32 *dest, CARD32 *src, CARD32 *mask, int width)
{
fbCombineMaskValueC(src, mask, width);
- memcpy(dest, src, width*sizeof(CARD32));
+ MEMCPY_WRAPPED(dest, src, width*sizeof(CARD32));
}
static FASTCALL void
@@ -2102,18 +2110,18 @@ fbCombineOverC (CARD32 *dest, CARD32 *src, CARD32 *mask, int width)
int i;
fbCombineMaskC(src, mask, width);
for (i = 0; i < width; ++i) {
- CARD32 s = src[i];
- CARD32 a = ~mask[i];
+ CARD32 s = READ(src + i);
+ CARD32 a = ~READ(mask + i);
if (a != 0xffffffff)
{
if (a)
{
- CARD32 d = dest[i];
+ CARD32 d = READ(dest + i);
FbByteMulAddC(d, a, s);
s = d;
}
- dest[i] = s;
+ WRITE(dest + i, s);
}
}
}
@@ -2124,17 +2132,17 @@ fbCombineOverReverseC (CARD32 *dest, CARD32 *src, CARD32 *mask, int width)
int i;
fbCombineMaskValueC(src, mask, width);
for (i = 0; i < width; ++i) {
- CARD32 d = dest[i];
+ CARD32 d = READ(dest + i);
CARD32 a = ~d >> 24;
if (a)
{
- CARD32 s = src[i];
+ CARD32 s = READ(src + i);
if (a != 0xff)
{
FbByteMulAdd(s, a, d);
}
- dest[i] = s;
+ WRITE(dest + i, s);
}
}
}
@@ -2145,18 +2153,18 @@ fbCombineInC (CARD32 *dest, CARD32 *src, CARD32 *mask, int width)
int i;
fbCombineMaskValueC(src, mask, width);
for (i = 0; i < width; ++i) {
- CARD32 d = dest[i];
+ CARD32 d = READ(dest + i);
CARD16 a = d >> 24;
CARD32 s = 0;
if (a)
{
- s = src[i];
+ s = READ(src + i);
if (a != 0xff)
{
FbByteMul(s, a);
}
}
- dest[i] = s;
+ WRITE(dest + i, s);
}
}
@@ -2166,17 +2174,17 @@ fbCombineInReverseC (CARD32 *dest, CARD32 *src, CARD32 *mask, int width)
int i;
fbCombineMaskAlphaC(src, mask, width);
for (i = 0; i < width; ++i) {
- CARD32 a = mask[i];
+ CARD32 a = READ(mask + i);
if (a != 0xffffffff)
{
CARD32 d = 0;
if (a)
{
- d = dest[i];
+ d = READ(dest + i);
FbByteMulC(d, a);
}
- dest[i] = d;
+ WRITE(dest + i, d);
}
}
}
@@ -2187,18 +2195,18 @@ fbCombineOutC (CARD32 *dest, CARD32 *src, CARD32 *mask, int width)
int i;
fbCombineMaskValueC(src, mask, width);
for (i = 0; i < width; ++i) {
- CARD32 d = dest[i];
+ CARD32 d = READ(dest + i);
CARD16 a = ~d >> 24;
CARD32 s = 0;
if (a)
{
- s = src[i];
+ s = READ(src + i);
if (a != 0xff)
{
FbByteMul(s, a);
}
}
- dest[i] = s;
+ WRITE(dest + i, s);
}
}
@@ -2208,17 +2216,17 @@ fbCombineOutReverseC (CARD32 *dest, CARD32 *src, CARD32 *mask, int width)
int i;
fbCombineMaskAlphaC(src, mask, width);
for (i = 0; i < width; ++i) {
- CARD32 a = ~mask[i];
+ CARD32 a = ~READ(mask + i);
if (a != 0xffffffff)
{
CARD32 d = 0;
if (a)
{
- d = dest[i];
+ d = READ(dest + i);
FbByteMulC(d, a);
}
- dest[i] = d;
+ WRITE(dest + i, d);
}
}
}
@@ -2229,12 +2237,12 @@ fbCombineAtopC (CARD32 *dest, CARD32 *src, CARD32 *mask, int width)
int i;
fbCombineMaskC(src, mask, width);
for (i = 0; i < width; ++i) {
- CARD32 d = dest[i];
- CARD32 s = src[i];
- CARD32 ad = ~mask[i];
+ CARD32 d = READ(dest + i);
+ CARD32 s = READ(src + i);
+ CARD32 ad = ~READ(mask + i);
CARD16 as = d >> 24;
FbByteAddMulC(d, ad, s, as);
- dest[i] = d;
+ WRITE(dest + i, d);
}
}
@@ -2245,12 +2253,12 @@ fbCombineAtopReverseC (CARD32 *dest, CARD32 *src, CARD32 *mask, int width)
fbCombineMaskC(src, mask, width);
for (i = 0; i < width; ++i) {
- CARD32 d = dest[i];
- CARD32 s = src[i];
- CARD32 ad = mask[i];
+ CARD32 d = READ(dest + i);
+ CARD32 s = READ(src + i);
+ CARD32 ad = READ(mask + i);
CARD16 as = ~d >> 24;
FbByteAddMulC(d, ad, s, as);
- dest[i] = d;
+ WRITE(dest + i, d);
}
}
@@ -2260,12 +2268,12 @@ fbCombineXorC (CARD32 *dest, CARD32 *src, CARD32 *mask, int width)
int i;
fbCombineMaskC(src, mask, width);
for (i = 0; i < width; ++i) {
- CARD32 d = dest[i];
- CARD32 s = src[i];
- CARD32 ad = ~mask[i];
+ CARD32 d = READ(dest + i);
+ CARD32 s = READ(src + i);
+ CARD32 ad = ~READ(mask + i);
CARD16 as = ~d >> 24;
FbByteAddMulC(d, ad, s, as);
- dest[i] = d;
+ WRITE(dest + i, d);
}
}
@@ -2275,10 +2283,10 @@ fbCombineAddC (CARD32 *dest, CARD32 *src, CARD32 *mask, int width)
int i;
fbCombineMaskValueC(src, mask, width);
for (i = 0; i < width; ++i) {
- CARD32 s = src[i];
- CARD32 d = dest[i];
+ CARD32 s = READ(src + i);
+ CARD32 d = READ(dest + i);
FbByteAdd(d, s);
- dest[i] = d;
+ WRITE(dest + i, d);
}
}
@@ -2293,12 +2301,12 @@ fbCombineSaturateC (CARD32 *dest, CARD32 *src, CARD32 *mask, int width)
CARD16 t, u, v;
CARD32 m,n,o,p;
- d = dest[i];
- s = src[i];
- sa = (mask[i] >> 24);
- sr = (mask[i] >> 16) & 0xff;
- sg = (mask[i] >> 8) & 0xff;
- sb = (mask[i] ) & 0xff;
+ d = READ(dest + i);
+ s = READ(src + i);
+ sa = (READ(mask + i) >> 24);
+ sr = (READ(mask + i) >> 16) & 0xff;
+ sg = (READ(mask + i) >> 8) & 0xff;
+ sb = (READ(mask + i) ) & 0xff;
da = ~d >> 24;
if (sb <= da)
@@ -2321,7 +2329,7 @@ fbCombineSaturateC (CARD32 *dest, CARD32 *src, CARD32 *mask, int width)
else
p = FbGen (s, d, 24, (da << 8) / sa, 0xff, t, u, v);
- dest[i] = m|n|o|p;
+ WRITE(dest + i, m|n|o|p);
}
}
@@ -2338,9 +2346,9 @@ fbCombineDisjointGeneralC (CARD32 *dest, CARD32 *src, CARD32 *mask, int width, C
CARD32 sa;
CARD8 da;
- s = src[i];
- sa = mask[i];
- d = dest[i];
+ s = READ(src + i);
+ sa = READ(mask + i);
+ d = READ(dest + i);
da = d >> 24;
switch (combine & CombineA) {
@@ -2393,7 +2401,7 @@ fbCombineDisjointGeneralC (CARD32 *dest, CARD32 *src, CARD32 *mask, int width, C
o = FbGen (s,d,16,FbGet8(Fa,16),FbGet8(Fb,16),t, u, v);
p = FbGen (s,d,24,FbGet8(Fa,24),FbGet8(Fb,24),t, u, v);
s = m|n|o|p;
- dest[i] = s;
+ WRITE(dest + i, s);
}
}
@@ -2458,9 +2466,9 @@ fbCombineConjointGeneralC (CARD32 *dest, CARD32 *src, CARD32 *mask, int width, C
CARD32 sa;
CARD8 da;
- s = src[i];
- sa = mask[i];
- d = dest[i];
+ s = READ(src + i);
+ sa = READ(mask + i);
+ d = READ(dest + i);
da = d >> 24;
switch (combine & CombineA) {
@@ -2513,7 +2521,7 @@ fbCombineConjointGeneralC (CARD32 *dest, CARD32 *src, CARD32 *mask, int width, C
o = FbGen (s,d,16,FbGet8(Fa,16),FbGet8(Fb,16),t, u, v);
p = FbGen (s,d,24,FbGet8(Fa,24),FbGet8(Fb,24),t, u, v);
s = m|n|o|p;
- dest[i] = s;
+ WRITE(dest + i, s);
}
}
@@ -2644,7 +2652,8 @@ static void fbFetchSolid(PicturePtr pict, int x, int y, int width, CARD32 *buffe
end = buffer + width;
while (buffer < end)
- *buffer++ = color;
+ WRITE(buffer++, color);
+ fbFinishAccess (pict->pDrawable);
}
static void fbFetch(PicturePtr pict, int x, int y, int width, CARD32 *buffer)
@@ -2663,6 +2672,7 @@ static void fbFetch(PicturePtr pict, int x, int y, int width, CARD32 *buffer)
bits += y*stride;
fetch(bits, x, width, buffer, indexed);
+ fbFinishAccess (pict->pDrawable);
}
#define MOD(a,b) ((a) < 0 ? ((b) - ((-(a) - 1) % (b))) - 1 : (a) % (b))
@@ -2710,15 +2720,16 @@ static void fbFetchSourcePict(PicturePtr pict, int x, int y, int width, CARD32 *
if (pGradient->type == SourcePictTypeSolidFill) {
register CARD32 color = pGradient->solidFill.color;
while (buffer < end) {
- *buffer++ = color;
+ WRITE(buffer++, color);
}
} else if (pGradient->type == SourcePictTypeLinear) {
PictVector v, unit;
xFixed_32_32 l;
xFixed_48_16 dx, dy, a, b, off;
- v.vector[0] = IntToxFixed(x);
- v.vector[1] = IntToxFixed(y);
+ /* reference point is the center of the pixel */
+ v.vector[0] = IntToxFixed(x) + xFixed1/2;
+ v.vector[1] = IntToxFixed(y) + xFixed1/2;
v.vector[2] = xFixed1;
if (pict->transform) {
if (!PictureTransformPoint3d (pict->transform, &v))
@@ -2751,7 +2762,7 @@ static void fbFetchSourcePict(PicturePtr pict, int x, int y, int width, CARD32 *
inc = (a * unit.vector[0] + b * unit.vector[1]) >> 16;
}
while (buffer < end) {
- *buffer++ = gradientPixel(pGradient, t, pict->repeatType);
+ WRITE(buffer++, gradientPixel(pGradient, t, pict->repeatType));
t += inc;
}
} else {
@@ -2766,7 +2777,7 @@ static void fbFetchSourcePict(PicturePtr pict, int x, int y, int width, CARD32 *
y = ((xFixed_48_16)v.vector[1] << 16) / v.vector[2];
t = ((a*x + b*y) >> 16) + off;
}
- *buffer++ = gradientPixel(pGradient, t, pict->repeatType);
+ WRITE(buffer++, gradientPixel(pGradient, t, pict->repeatType));
v.vector[0] += unit.vector[0];
v.vector[1] += unit.vector[1];
v.vector[2] += unit.vector[2];
@@ -2784,8 +2795,9 @@ static void fbFetchSourcePict(PicturePtr pict, int x, int y, int width, CARD32 *
if (pict->transform) {
PictVector v;
- v.vector[0] = IntToxFixed(x);
- v.vector[1] = IntToxFixed(y);
+ /* reference point is the center of the pixel */
+ v.vector[0] = IntToxFixed(x) + xFixed1/2;
+ v.vector[1] = IntToxFixed(y) + xFixed1/2;
v.vector[2] = xFixed1;
if (!PictureTransformPoint3d (pict->transform, &v))
return;
@@ -2809,9 +2821,9 @@ static void fbFetchSourcePict(PicturePtr pict, int x, int y, int width, CARD32 *
double c = -(rx*rx + ry*ry);
double det = (b * b) - (4 * pGradient->radial.a * c);
double s = (-b + sqrt(det))/(2. * pGradient->radial.a);
- *buffer = gradientPixel(pGradient,
- (xFixed_48_16)((s*pGradient->radial.m + pGradient->radial.b)*65536),
- pict->repeatType);
+ WRITE(buffer, gradientPixel(pGradient,
+ (xFixed_48_16)((s*pGradient->radial.m + pGradient->radial.b)*65536),
+ pict->repeatType));
++buffer;
rx += cx;
ry += cy;
@@ -2832,9 +2844,9 @@ static void fbFetchSourcePict(PicturePtr pict, int x, int y, int width, CARD32 *
c = -(x*x + y*y);
det = (b * b) - (4 * pGradient->radial.a * c);
s = (-b + sqrt(det))/(2. * pGradient->radial.a);
- *buffer = gradientPixel(pGradient,
- (xFixed_48_16)((s*pGradient->radial.m + pGradient->radial.b)*65536),
- pict->repeatType);
+ WRITE(buffer, gradientPixel(pGradient,
+ (xFixed_48_16)((s*pGradient->radial.m + pGradient->radial.b)*65536),
+ pict->repeatType));
++buffer;
rx += cx;
ry += cy;
@@ -2849,8 +2861,8 @@ static void fbFetchSourcePict(PicturePtr pict, int x, int y, int width, CARD32 *
while (buffer < end) {
double angle = atan2(ry, rx) + a;
- *buffer = gradientPixel(pGradient, (xFixed_48_16) (angle * (65536. / (2*M_PI))),
- pict->repeatType);
+ WRITE(buffer, gradientPixel(pGradient, (xFixed_48_16) (angle * (65536. / (2*M_PI))),
+ pict->repeatType));
++buffer;
rx += cx;
ry += cy;
@@ -2868,8 +2880,8 @@ static void fbFetchSourcePict(PicturePtr pict, int x, int y, int width, CARD32 *
x -= pGradient->conical.center.x/65536.;
y -= pGradient->conical.center.y/65536.;
angle = atan2(y, x) + a;
- *buffer = gradientPixel(pGradient, (xFixed_48_16) (angle * (65536. / (2*M_PI))),
- pict->repeatType);
+ WRITE(buffer, gradientPixel(pGradient, (xFixed_48_16) (angle * (65536. / (2*M_PI))),
+ pict->repeatType));
++buffer;
rx += cx;
ry += cy;
@@ -2905,14 +2917,17 @@ static void fbFetchTransformed(PicturePtr pict, int x, int y, int width, CARD32
dx = pict->pDrawable->x;
dy = pict->pDrawable->y;
- v.vector[0] = IntToxFixed(x - dx);
- v.vector[1] = IntToxFixed(y - dy);
+ /* reference point is the center of the pixel */
+ v.vector[0] = IntToxFixed(x - dx) + xFixed1 / 2;
+ v.vector[1] = IntToxFixed(y - dy) + xFixed1 / 2;
v.vector[2] = xFixed1;
/* when using convolution filters one might get here without a transform */
if (pict->transform) {
- if (!PictureTransformPoint3d (pict->transform, &v))
+ if (!PictureTransformPoint3d (pict->transform, &v)) {
+ fbFinishAccess (pict->pDrawable);
return;
+ }
unit.vector[0] = pict->transform->matrix[0][0];
unit.vector[1] = pict->transform->matrix[1][0];
unit.vector[2] = pict->transform->matrix[2][0];
@@ -2929,7 +2944,7 @@ static void fbFetchTransformed(PicturePtr pict, int x, int y, int width, CARD32
if (REGION_NUM_RECTS(pict->pCompositeClip) == 1) {
for (i = 0; i < width; ++i) {
if (!v.vector[2]) {
- buffer[i] = 0;
+ WRITE(buffer + i, 0);
} else {
if (!affine) {
y = MOD(DIV(v.vector[1],v.vector[2]), pict->pDrawable->height);
@@ -2938,7 +2953,7 @@ static void fbFetchTransformed(PicturePtr pict, int x, int y, int width, CARD32
y = MOD(v.vector[1]>>16, pict->pDrawable->height);
x = MOD(v.vector[0]>>16, pict->pDrawable->width);
}
- buffer[i] = fetch(bits + (y + dy)*stride, x + dx, indexed);
+ WRITE(buffer + i, fetch(bits + (y + dy)*stride, x + dx, indexed));
}
v.vector[0] += unit.vector[0];
v.vector[1] += unit.vector[1];
@@ -2947,7 +2962,7 @@ static void fbFetchTransformed(PicturePtr pict, int x, int y, int width, CARD32
} else {
for (i = 0; i < width; ++i) {
if (!v.vector[2]) {
- buffer[i] = 0;
+ WRITE(buffer + i, 0);
} else {
if (!affine) {
y = MOD(DIV(v.vector[1],v.vector[2]), pict->pDrawable->height);
@@ -2957,9 +2972,9 @@ static void fbFetchTransformed(PicturePtr pict, int x, int y, int width, CARD32
x = MOD(v.vector[0]>>16, pict->pDrawable->width);
}
if (POINT_IN_REGION (0, pict->pCompositeClip, x + dx, y + dy, &box))
- buffer[i] = fetch(bits + (y + dy)*stride, x + dx, indexed);
+ WRITE(buffer + i, fetch(bits + (y + dy)*stride, x + dx, indexed));
else
- buffer[i] = 0;
+ WRITE(buffer + i, 0);
}
v.vector[0] += unit.vector[0];
v.vector[1] += unit.vector[1];
@@ -2971,7 +2986,7 @@ static void fbFetchTransformed(PicturePtr pict, int x, int y, int width, CARD32
box = pict->pCompositeClip->extents;
for (i = 0; i < width; ++i) {
if (!v.vector[2]) {
- buffer[i] = 0;
+ WRITE(buffer + i, 0);
} else {
if (!affine) {
y = DIV(v.vector[1],v.vector[2]);
@@ -2980,8 +2995,8 @@ static void fbFetchTransformed(PicturePtr pict, int x, int y, int width, CARD32
y = v.vector[1]>>16;
x = v.vector[0]>>16;
}
- buffer[i] = ((x < box.x1-dx) | (x >= box.x2-dx) | (y < box.y1-dy) | (y >= box.y2-dy)) ?
- 0 : fetch(bits + (y + dy)*stride, x + dx, indexed);
+ WRITE(buffer + i, ((x < box.x1-dx) | (x >= box.x2-dx) | (y < box.y1-dy) | (y >= box.y2-dy)) ?
+ 0 : fetch(bits + (y + dy)*stride, x + dx, indexed));
}
v.vector[0] += unit.vector[0];
v.vector[1] += unit.vector[1];
@@ -2990,7 +3005,7 @@ static void fbFetchTransformed(PicturePtr pict, int x, int y, int width, CARD32
} else {
for (i = 0; i < width; ++i) {
if (!v.vector[2]) {
- buffer[i] = 0;
+ WRITE(buffer + i, 0);
} else {
if (!affine) {
y = DIV(v.vector[1],v.vector[2]);
@@ -3000,9 +3015,9 @@ static void fbFetchTransformed(PicturePtr pict, int x, int y, int width, CARD32
x = v.vector[0]>>16;
}
if (POINT_IN_REGION (0, pict->pCompositeClip, x + dx, y + dy, &box))
- buffer[i] = fetch(bits + (y + dy)*stride, x + dx, indexed);
+ WRITE(buffer + i, fetch(bits + (y + dy)*stride, x + dx, indexed));
else
- buffer[i] = 0;
+ WRITE(buffer + i, 0);
}
v.vector[0] += unit.vector[0];
v.vector[1] += unit.vector[1];
@@ -3011,11 +3026,17 @@ static void fbFetchTransformed(PicturePtr pict, int x, int y, int width, CARD32
}
}
} else if (pict->filter == PictFilterBilinear) {
+ /* adjust vector for maximum contribution at 0.5, 0.5 of each texel. */
+ v.vector[0] -= v.vector[2] / 2;
+ v.vector[1] -= v.vector[2] / 2;
+ unit.vector[0] -= unit.vector[2] / 2;
+ unit.vector[1] -= unit.vector[2] / 2;
+
if (pict->repeatType == RepeatNormal) {
if (REGION_NUM_RECTS(pict->pCompositeClip) == 1) {
for (i = 0; i < width; ++i) {
if (!v.vector[2]) {
- buffer[i] = 0;
+ WRITE(buffer + i, 0);
} else {
int x1, x2, y1, y2, distx, idistx, disty, idisty;
FbBits *b;
@@ -3067,7 +3088,7 @@ static void fbFetchTransformed(PicturePtr pict, int x, int y, int width, CARD32
ft = FbGet8(tl,24) * idistx + FbGet8(tr,24) * distx;
fb = FbGet8(bl,24) * idistx + FbGet8(br,24) * distx;
r |= (((ft * idisty + fb * disty) << 8) & 0xff000000);
- buffer[i] = r;
+ WRITE(buffer + i, r);
}
v.vector[0] += unit.vector[0];
v.vector[1] += unit.vector[1];
@@ -3076,7 +3097,7 @@ static void fbFetchTransformed(PicturePtr pict, int x, int y, int width, CARD32
} else {
for (i = 0; i < width; ++i) {
if (!v.vector[2]) {
- buffer[i] = 0;
+ WRITE(buffer + i, 0);
} else {
int x1, x2, y1, y2, distx, idistx, disty, idisty;
FbBits *b;
@@ -3132,7 +3153,7 @@ static void fbFetchTransformed(PicturePtr pict, int x, int y, int width, CARD32
ft = FbGet8(tl,24) * idistx + FbGet8(tr,24) * distx;
fb = FbGet8(bl,24) * idistx + FbGet8(br,24) * distx;
r |= (((ft * idisty + fb * disty) << 8) & 0xff000000);
- buffer[i] = r;
+ WRITE(buffer + i, r);
}
v.vector[0] += unit.vector[0];
v.vector[1] += unit.vector[1];
@@ -3144,7 +3165,7 @@ static void fbFetchTransformed(PicturePtr pict, int x, int y, int width, CARD32
box = pict->pCompositeClip->extents;
for (i = 0; i < width; ++i) {
if (!v.vector[2]) {
- buffer[i] = 0;
+ WRITE(buffer + i, 0);
} else {
int x1, x2, y1, y2, distx, idistx, disty, idisty, x_off;
FbBits *b;
@@ -3198,7 +3219,7 @@ static void fbFetchTransformed(PicturePtr pict, int x, int y, int width, CARD32
ft = FbGet8(tl,24) * idistx + FbGet8(tr,24) * distx;
fb = FbGet8(bl,24) * idistx + FbGet8(br,24) * distx;
r |= (((ft * idisty + fb * disty) << 8) & 0xff000000);
- buffer[i] = r;
+ WRITE(buffer + i, r);
}
v.vector[0] += unit.vector[0];
v.vector[1] += unit.vector[1];
@@ -3207,7 +3228,7 @@ static void fbFetchTransformed(PicturePtr pict, int x, int y, int width, CARD32
} else {
for (i = 0; i < width; ++i) {
if (!v.vector[2]) {
- buffer[i] = 0;
+ WRITE(buffer + i, 0);
} else {
int x1, x2, y1, y2, distx, idistx, disty, idisty, x_off;
FbBits *b;
@@ -3259,7 +3280,7 @@ static void fbFetchTransformed(PicturePtr pict, int x, int y, int width, CARD32
ft = FbGet8(tl,24) * idistx + FbGet8(tr,24) * distx;
fb = FbGet8(bl,24) * idistx + FbGet8(br,24) * distx;
r |= (((ft * idisty + fb * disty) << 8) & 0xff000000);
- buffer[i] = r;
+ WRITE(buffer + i, r);
}
v.vector[0] += unit.vector[0];
v.vector[1] += unit.vector[1];
@@ -3271,12 +3292,12 @@ static void fbFetchTransformed(PicturePtr pict, int x, int y, int width, CARD32
xFixed *params = pict->filter_params;
INT32 cwidth = xFixedToInt(params[0]);
INT32 cheight = xFixedToInt(params[1]);
- int xoff = params[0] >> 1;
- int yoff = params[1] >> 1;
+ int xoff = (params[0] - xFixed1) >> 1;
+ int yoff = (params[1] - xFixed1) >> 1;
params += 2;
for (i = 0; i < width; ++i) {
if (!v.vector[2]) {
- buffer[i] = 0;
+ WRITE(buffer + i, 0);
} else {
int x1, x2, y1, y2, x, y;
INT32 srtot, sgtot, sbtot, satot;
@@ -3316,21 +3337,28 @@ static void fbFetchTransformed(PicturePtr pict, int x, int y, int width, CARD32
}
}
+ satot >>= 16;
+ srtot >>= 16;
+ sgtot >>= 16;
+ sbtot >>= 16;
+
if (satot < 0) satot = 0; else if (satot > 0xff) satot = 0xff;
if (srtot < 0) srtot = 0; else if (srtot > 0xff) srtot = 0xff;
if (sgtot < 0) sgtot = 0; else if (sgtot > 0xff) sgtot = 0xff;
if (sbtot < 0) sbtot = 0; else if (sbtot > 0xff) sbtot = 0xff;
- buffer[i] = ((satot << 24) |
- (srtot << 16) |
- (sgtot << 8) |
- (sbtot ));
+ WRITE(buffer + i, ((satot << 24) |
+ (srtot << 16) |
+ (sgtot << 8) |
+ (sbtot )));
}
v.vector[0] += unit.vector[0];
v.vector[1] += unit.vector[1];
v.vector[2] += unit.vector[2];
}
}
+
+ fbFinishAccess (pict->pDrawable);
}
@@ -3351,10 +3379,10 @@ static void fbFetchExternalAlpha(PicturePtr pict, int x, int y, int width, CARD3
fbFetchTransformed(pict->alphaMap, x - pict->alphaOrigin.x, y - pict->alphaOrigin.y, width, alpha_buffer);
for (i = 0; i < width; ++i) {
int a = alpha_buffer[i]>>24;
- buffer[i] = (a << 24)
- | (div_255(Red(buffer[i]) * a) << 16)
- | (div_255(Green(buffer[i]) * a) << 8)
- | (div_255(Blue(buffer[i]) * a));
+ WRITE(buffer + i, (a << 24)
+ | (div_255(Red(READ(buffer + i)) * a) << 16)
+ | (div_255(Green(READ(buffer + i)) * a) << 8)
+ | (div_255(Blue(READ(buffer + i)) * a)));
}
if (alpha_buffer != _alpha_buffer)
@@ -3376,6 +3404,7 @@ static void fbStore(PicturePtr pict, int x, int y, int width, CARD32 *buffer)
bits += y*stride;
store(bits, buffer, x, width, indexed);
+ fbFinishAccess (pict->pDrawable);
}
static void fbStoreExternalAlpha(PicturePtr pict, int x, int y, int width, CARD32 *buffer)
@@ -3415,6 +3444,9 @@ static void fbStoreExternalAlpha(PicturePtr pict, int x, int y, int width, CARD3
store(bits, buffer, x, width, indexed);
astore(alpha_bits, buffer, ax - pict->alphaOrigin.x, width, aindexed);
+
+ fbFinishAccess (pict->alphaMap->pDrawable);
+ fbFinishAccess (pict->pDrawable);
}
typedef void (*scanStoreProc)(PicturePtr , int , int , int , CARD32 *);
diff --git a/fb/fbcopy.c b/fb/fbcopy.c
index 73224da8f..164cd3d67 100644
--- a/fb/fbcopy.c
+++ b/fb/fbcopy.c
@@ -21,7 +21,6 @@
* 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.13 2003/11/10 18:21:47 tsi Exp $ */
#ifdef HAVE_DIX_CONFIG_H
#include <dix-config.h>
@@ -104,6 +103,8 @@ fbCopyNtoN (DrawablePtr pSrcDrawable,
#endif
pbox++;
}
+ fbFinishAccess (pDstDrawable);
+ fbFinishAccess (pSrcDrawable);
}
void
@@ -174,6 +175,9 @@ fbCopy1toN (DrawablePtr pSrcDrawable,
}
pbox++;
}
+
+ fbFinishAccess (pDstDrawable);
+ fbFinishAccess (pSrcDrawable);
}
void
@@ -222,6 +226,8 @@ fbCopyNto1 (DrawablePtr pSrcDrawable,
(FbStip) pPriv->and, (FbStip) pPriv->xor,
(FbStip) pPriv->bgand, (FbStip) pPriv->bgxor,
bitplane);
+ fbFinishAccess (pDstDrawable);
+ fbFinishAccess (pSrcDrawable);
}
else
{
@@ -282,6 +288,9 @@ fbCopyNto1 (DrawablePtr pSrcDrawable,
pPriv->and, pPriv->xor,
pPriv->bgand, pPriv->bgxor);
xfree (tmp);
+
+ fbFinishAccess (pDstDrawable);
+ fbFinishAccess (pSrcDrawable);
}
pbox++;
}
diff --git a/fb/fbedge.c b/fb/fbedge.c
index b6ca829a4..70fc423bd 100644
--- a/fb/fbedge.c
+++ b/fb/fbedge.c
@@ -60,9 +60,9 @@
#define StepAlpha ((__ap += __ao), (__ao ^= 1))
#define AddAlpha(a) { \
- CARD8 __o = *__ap; \
+ CARD8 __o = READ(__ap); \
CARD8 __a = (a) + Get4(__o, __ao); \
- *__ap = Put4 (__o, __ao, __a | (0 - ((__a) >> 4))); \
+ WRITE(__ap, Put4 (__o, __ao, __a | (0 - ((__a) >> 4)))); \
}
#include "fbedgeimp.h"
@@ -102,7 +102,7 @@ add_saturate_8 (CARD8 *buf, int value, int length)
{
while (length--)
{
- *buf = clip255 (*buf + value);
+ WRITE(buf, clip255 (READ(buf) + value));
buf++;
}
}
@@ -164,11 +164,11 @@ fbRasterizeEdges8 (FbBits *buf,
/* Add coverage across row */
if (lxi == rxi)
{
- ap[lxi] = clip255 (ap[lxi] + rxs - lxs);
+ WRITE(ap +lxi, clip255 (READ(ap + lxi) + rxs - lxs));
}
else
{
- ap[lxi] = clip255 (ap[lxi] + N_X_FRAC(8) - lxs);
+ WRITE(ap + lxi, clip255 (READ(ap + lxi) + N_X_FRAC(8) - lxs));
/* Move forward so that lxi/rxi is the pixel span */
lxi++;
@@ -238,7 +238,7 @@ fbRasterizeEdges8 (FbBits *buf,
* necessary to avoid a buffer overrun, (when rx
* is exactly on a pixel boundary). */
if (rxs)
- ap[rxi] = clip255 (ap[rxi] + rxs);
+ WRITE(ap + rxi, clip255 (READ(ap + rxi) + rxs));
}
}
@@ -247,7 +247,7 @@ fbRasterizeEdges8 (FbBits *buf,
if (fill_start != fill_end) {
if (fill_size == N_Y_FRAC(8))
{
- memset (ap + fill_start, 0xff, fill_end - fill_start);
+ MEMSET_WRAPPED (ap + fill_start, 0xff, fill_end - fill_start);
}
else
{
@@ -273,7 +273,7 @@ fbRasterizeEdges8 (FbBits *buf,
{
if (fill_size == N_Y_FRAC(8))
{
- memset (ap + fill_start, 0xff, fill_end - fill_start);
+ MEMSET_WRAPPED (ap + fill_start, 0xff, fill_end - fill_start);
}
else
{
diff --git a/fb/fbedgeimp.h b/fb/fbedgeimp.h
index 877393516..57da31a39 100644
--- a/fb/fbedgeimp.h
+++ b/fb/fbedgeimp.h
@@ -76,12 +76,14 @@ rasterizeEdges (FbBits *buf,
x &= FB_MASK;
FbMaskBits (x, width, startmask, nmiddle, endmask);
- if (startmask)
- *a++ |= startmask;
+ if (startmask) {
+ WRITE(a, READ(a) | startmask);
+ a++;
+ }
while (nmiddle--)
- *a++ = FB_ALLONES;
+ WRITE(a++, FB_ALLONES);
if (endmask)
- *a |= endmask;
+ WRITE(a, READ(a) | endmask);
}
#else
{
diff --git a/fb/fbfill.c b/fb/fbfill.c
index 678c7f927..7ef3a70f9 100644
--- a/fb/fbfill.c
+++ b/fb/fbfill.c
@@ -21,7 +21,6 @@
* 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.5 2003/01/29 00:43:33 torrey Exp $ */
#ifdef HAVE_DIX_CONFIG_H
#include <dix-config.h>
@@ -50,8 +49,10 @@ fbFill (DrawablePtr pDrawable,
case FillSolid:
#ifdef USE_MMX
if (!pPriv->and && fbHaveMMX())
- if (fbSolidFillmmx (pDrawable, x, y, width, height, pPriv->xor))
+ if (fbSolidFillmmx (pDrawable, x, y, width, height, pPriv->xor)) {
+ fbFinishAccess (pDrawable);
return;
+ }
#endif
fbSolid (dst + (y + dstYoff) * dstStride,
dstStride,
@@ -93,6 +94,7 @@ fbFill (DrawablePtr pDrawable,
(pGC->patOrg.x + pDrawable->x + dstXoff),
pGC->patOrg.y + pDrawable->y - y);
+ fbFinishAccess (&pStip->drawable);
}
else
{
@@ -130,6 +132,7 @@ fbFill (DrawablePtr pDrawable,
bgand, bgxor,
pGC->patOrg.x + pDrawable->x + dstXoff,
pGC->patOrg.y + pDrawable->y - y);
+ fbFinishAccess (&pStip->drawable);
}
break;
}
@@ -158,10 +161,12 @@ fbFill (DrawablePtr pDrawable,
dstBpp,
(pGC->patOrg.x + pDrawable->x + dstXoff) * dstBpp,
pGC->patOrg.y + pDrawable->y - y);
+ fbFinishAccess (&pTile->drawable);
break;
}
}
fbValidateDrawable (pDrawable);
+ fbFinishAccess (pDrawable);
}
void
@@ -216,8 +221,10 @@ fbSolidBoxClipped (DrawablePtr pDrawable,
if (fbSolidFillmmx (pDrawable,
partX1, partY1,
(partX2 - partX1), (partY2 - partY1),
- xor))
+ xor)) {
+ fbFinishAccess (pDrawable);
return;
+ }
}
#endif
fbSolid (dst + (partY1 + dstYoff) * dstStride,
@@ -229,4 +236,5 @@ fbSolidBoxClipped (DrawablePtr pDrawable,
(partY2 - partY1),
and, xor);
}
+ fbFinishAccess (pDrawable);
}
diff --git a/fb/fbfillrect.c b/fb/fbfillrect.c
index 2a60da165..f404044c5 100644
--- a/fb/fbfillrect.c
+++ b/fb/fbfillrect.c
@@ -21,7 +21,6 @@
* 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.1 1999/11/19 13:53:43 hohndel Exp $ */
#ifdef HAVE_DIX_CONFIG_H
#include <dix-config.h>
diff --git a/fb/fbfillsp.c b/fb/fbfillsp.c
index e2bb71e3a..77e4772a6 100644
--- a/fb/fbfillsp.c
+++ b/fb/fbfillsp.c
@@ -21,7 +21,6 @@
* 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.1 1999/11/19 13:53:43 hohndel Exp $ */
#ifdef HAVE_DIX_CONFIG_H
#include <dix-config.h>
diff --git a/fb/fbgc.c b/fb/fbgc.c
index 21383d9a9..3f8bf25e7 100644
--- a/fb/fbgc.c
+++ b/fb/fbgc.c
@@ -21,8 +21,6 @@
* TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
* PERFORMANCE OF THIS SOFTWARE.
*/
-/* $XdotOrg: xserver/xorg/fb/fbgc.c,v 1.7 2006/02/10 22:00:21 anholt Exp $ */
-/* $XFree86: xc/programs/Xserver/fb/fbgc.c,v 1.14 2003/12/18 15:22:32 alanh Exp $ */
#ifdef HAVE_DIX_CONFIG_H
#include <dix-config.h>
@@ -108,16 +106,18 @@ fbPadPixmap (PixmapPtr pPixmap)
mask = FbBitsMask (0, width);
while (height--)
{
- b = *bits & mask;
+ b = READ(bits) & mask;
w = width;
while (w < FB_UNIT)
{
b = b | FbScrRight(b, w);
w <<= 1;
}
- *bits = b;
+ WRITE(bits, b);
bits += stride;
}
+
+ fbFinishAccess (&pPixmap->drawable);
}
/*
@@ -155,7 +155,7 @@ fbLineRepeat (FbBits *bits, int len, int width)
width = (width + FB_UNIT-1) >> FB_SHIFT;
bits++;
while (--width)
- if (*bits != first)
+ if (READ(bits) != first)
return FALSE;
return TRUE;
}
@@ -185,10 +185,13 @@ fbCanEvenStipple (PixmapPtr pStipple, int bpp)
/* check to see that the stipple repeats horizontally */
while (h--)
{
- if (!fbLineRepeat (bits, len, pStipple->drawable.width))
+ if (!fbLineRepeat (bits, len, pStipple->drawable.width)) {
+ fbFinishAccess (&pStipple->drawable);
return FALSE;
+ }
bits += stride;
}
+ fbFinishAccess (&pStipple->drawable);
return TRUE;
}
diff --git a/fb/fbgetsp.c b/fb/fbgetsp.c
index 7c58dcb82..ffd8a1d7d 100644
--- a/fb/fbgetsp.c
+++ b/fb/fbgetsp.c
@@ -21,7 +21,6 @@
* TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
* PERFORMANCE OF THIS SOFTWARE.
*/
-/* $XFree86: xc/programs/Xserver/fb/fbgetsp.c,v 1.5 2000/05/06 21:09:33 keithp Exp $ */
#ifdef HAVE_DIX_CONFIG_H
#include <dix-config.h>
@@ -85,4 +84,6 @@ fbGetSpans(DrawablePtr pDrawable,
ppt++;
pwidth++;
}
+
+ fbFinishAccess (pDrawable);
}
diff --git a/fb/fbglyph.c b/fb/fbglyph.c
index b97f0c0b3..2c19b742f 100644
--- a/fb/fbglyph.c
+++ b/fb/fbglyph.c
@@ -1,6 +1,4 @@
/*
- * $XdotOrg: xc/programs/Xserver/fb/fbglyph.c,v 1.3 2004/12/04 00:42:50 kuhn Exp $
- * $XFree86: xc/programs/Xserver/fb/fbglyph.c,v 1.12tsi Exp $
*
* Copyright © 1998 Keith Packard
*
@@ -64,11 +62,11 @@ fbGlyphIn (RegionPtr pRegion,
#ifdef FB_24BIT
#ifndef FBNOPIXADDR
-#define WRITE1(d,n,fg) ((d)[n] = (CARD8) fg)
-#define WRITE2(d,n,fg) (*(CARD16 *) &(d[n]) = (CARD16) fg)
-#define WRITE4(d,n,fg) (*(CARD32 *) &(d[n]) = (CARD32) fg)
+#define WRITE1(d,n,fg) WRITE((d) + (n), (CARD8) fg)
+#define WRITE2(d,n,fg) WRITE((CARD16 *) &(d[n]), (CARD16) fg)
+#define WRITE4(d,n,fg) WRITE((CARD32 *) &(d[n]), (CARD32) fg)
#if FB_UNIT == 6 && IMAGE_BYTE_ORDER == LSBFirst
-#define WRITE8(d) (*(FbBits *) &(d[0]) = fg)
+#define WRITE8(d) WRITE((FbBits *) &(d[0]), fg)
#else
#define WRITE8(d) WRITE4(d,0,_ABCA), WRITE4(d,4,_BCAB)
#endif
@@ -159,7 +157,7 @@ fbGlyph24 (FbBits *dstBits,
lshift = 4 - shift;
while (height--)
{
- bits = *stipple++;
+ bits = READ(stipple++);
n = lshift;
dst = dstLine;
while (bits)
@@ -286,7 +284,7 @@ fbPolyGlyphBlt (DrawablePtr pDrawable,
glyph = 0;
if (pGC->fillStyle == FillSolid && pPriv->and == 0)
{
- fbGetDrawable (pDrawable, dst, dstStride, dstBpp, dstXoff, dstYoff);
+ dstBpp = pDrawable->bitsPerPixel;
switch (dstBpp) {
case 8: glyph = fbGlyph8; break;
case 16: glyph = fbGlyph16; break;
@@ -314,6 +312,7 @@ fbPolyGlyphBlt (DrawablePtr pDrawable,
if (glyph && gWidth <= sizeof (FbStip) * 8 &&
fbGlyphIn (fbGetCompositeClip(pGC), gx, gy, gWidth, gHeight))
{
+ fbGetDrawable (pDrawable, dst, dstStride, dstBpp, dstXoff, dstYoff);
(*glyph) (dst + (gy + dstYoff) * dstStride,
dstStride,
dstBpp,
@@ -321,6 +320,7 @@ fbPolyGlyphBlt (DrawablePtr pDrawable,
pPriv->xor,
gx + dstXoff,
gHeight);
+ fbFinishAccess (pDrawable);
}
else
#endif
@@ -377,7 +377,7 @@ fbImageGlyphBlt (DrawablePtr pDrawable,
glyph = 0;
if (pPriv->and == 0)
{
- fbGetDrawable (pDrawable, dst, dstStride, dstBpp, dstXoff, dstYoff);
+ dstBpp = pDrawable->bitsPerPixel;
switch (dstBpp) {
case 8: glyph = fbGlyph8; break;
case 16: glyph = fbGlyph16; break;
@@ -445,6 +445,7 @@ fbImageGlyphBlt (DrawablePtr pDrawable,
if (glyph && gWidth <= sizeof (FbStip) * 8 &&
fbGlyphIn (fbGetCompositeClip(pGC), gx, gy, gWidth, gHeight))
{
+ fbGetDrawable (pDrawable, dst, dstStride, dstBpp, dstXoff, dstYoff);
(*glyph) (dst + (gy + dstYoff) * dstStride,
dstStride,
dstBpp,
@@ -452,6 +453,7 @@ fbImageGlyphBlt (DrawablePtr pDrawable,
pPriv->fg,
gx + dstXoff,
gHeight);
+ fbFinishAccess (pDrawable);
}
else
#endif
diff --git a/fb/fbimage.c b/fb/fbimage.c
index 174c78bd0..06a3c84fe 100644
--- a/fb/fbimage.c
+++ b/fb/fbimage.c
@@ -21,7 +21,6 @@
* TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
* PERFORMANCE OF THIS SOFTWARE.
*/
-/* $XFree86: xc/programs/Xserver/fb/fbimage.c,v 1.7 2001/05/29 04:54:09 keithp Exp $ */
#ifdef HAVE_DIX_CONFIG_H
#include <dix-config.h>
@@ -69,7 +68,7 @@ fbPutImage (DrawablePtr pDrawable,
break;
case XYPixmap:
srcStride = BitmapBytePad(w + leftPad) / sizeof (FbStip);
- for (i = 1 << (pDrawable->depth - 1); i; i >>= 1)
+ for (i = (unsigned long)1 << (pDrawable->depth - 1); i; i >>= 1)
{
if (i & pGC->planemask)
{
@@ -171,6 +170,8 @@ fbPutZImage (DrawablePtr pDrawable,
pm,
dstBpp);
}
+
+ fbFinishAccess (pDrawable);
}
void
@@ -278,6 +279,8 @@ fbPutXYImage (DrawablePtr pDrawable,
fgand, fgxor, bgand, bgxor);
}
}
+
+ fbFinishAccess (pDrawable);
}
void
@@ -362,4 +365,6 @@ fbGetImage (DrawablePtr pDrawable,
fbXorStip(GXcopy,0,FB_STIP_ALLONES),
planeMask);
}
+
+ fbFinishAccess (pDrawable);
}
diff --git a/fb/fbmmx.c b/fb/fbmmx.c
index d058ffae4..f74930a39 100644
--- a/fb/fbmmx.c
+++ b/fb/fbmmx.c
@@ -591,7 +591,7 @@ mmxCombineSaturateU (CARD32 *dest, const CARD32 *src, int width)
if (sa > da) {
__m64 msa = load8888(FbIntDiv(da, sa));
- msa = expand_alpha(msa);
+ msa = expand_alpha_rev(msa);
ms = pix_multiply(ms, msa);
}
md = pix_add(md, ms);
diff --git a/fb/fboverlay.c b/fb/fboverlay.c
index e9fb9b24f..1e3d756ed 100644
--- a/fb/fboverlay.c
+++ b/fb/fboverlay.c
@@ -1,5 +1,4 @@
/*
- * $XFree86: xc/programs/Xserver/fb/fboverlay.c,v 1.7 2003/11/10 18:21:47 tsi Exp $
*
* Copyright © 2000 SuSE, Inc.
*
@@ -23,7 +22,6 @@
* Author: Keith Packard, SuSE, Inc.
*/
-/* $XdotOrg: xserver/xorg/fb/fboverlay.c,v 1.7 2005/07/03 07:01:23 daniels Exp $ */
#ifdef HAVE_DIX_CONFIG_H
#include <dix-config.h>
diff --git a/fb/fboverlay.h b/fb/fboverlay.h
index e6a4e033f..af0acb889 100644
--- a/fb/fboverlay.h
+++ b/fb/fboverlay.h
@@ -1,5 +1,4 @@
/*
- * $XFree86: xc/programs/Xserver/fb/fboverlay.h,v 1.4tsi Exp $
*
* Copyright © 2000 SuSE, Inc.
*
diff --git a/fb/fbpict.c b/fb/fbpict.c
index f248fdb84..28503c0cf 100644
--- a/fb/fbpict.c
+++ b/fb/fbpict.c
@@ -1,5 +1,4 @@
/*
- * $XFree86: xc/programs/Xserver/fb/fbpict.c,v 1.15 2002/09/26 02:56:48 keithp Exp $
*
* Copyright © 2000 SuSE, Inc.
*
@@ -138,22 +137,25 @@ fbCompositeSolidMask_nx8x8888 (CARD8 op,
while (w--)
{
- m = *mask++;
+ m = READ(mask++);
if (m == 0xff)
{
if (srca == 0xff)
- *dst = src & dstMask;
+ WRITE(dst, src & dstMask);
else
- *dst = fbOver (src, *dst) & dstMask;
+ WRITE(dst, fbOver (src, READ(dst)) & dstMask);
}
else if (m)
{
d = fbIn (src, m);
- *dst = fbOver (d, *dst) & dstMask;
+ WRITE(dst, fbOver (d, READ(dst)) & dstMask);
}
dst++;
}
}
+
+ fbFinishAccess (pMask->pDrawable);
+ fbFinishAccess (pDst->pDrawable);
}
void
@@ -197,17 +199,17 @@ fbCompositeSolidMask_nx8888x8888C (CARD8 op,
while (w--)
{
- ma = *mask++;
+ ma = READ(mask++);
if (ma == 0xffffffff)
{
if (srca == 0xff)
- *dst = src & dstMask;
+ WRITE(dst, src & dstMask);
else
- *dst = fbOver (src, *dst) & dstMask;
+ WRITE(dst, fbOver (src, READ(dst)) & dstMask);
}
else if (ma)
{
- d = *dst;
+ d = READ(dst);
#define FbInOverC(src,srca,msk,dst,i,result) { \
CARD16 __a = FbGet8(msk,i); \
CARD32 __t, __ta; \
@@ -222,11 +224,14 @@ fbCompositeSolidMask_nx8888x8888C (CARD8 op,
FbInOverC (src, srca, ma, d, 8, n);
FbInOverC (src, srca, ma, d, 16, o);
FbInOverC (src, srca, ma, d, 24, p);
- *dst = m|n|o|p;
+ WRITE(dst, m|n|o|p);
}
dst++;
}
}
+
+ fbFinishAccess (pMask->pDrawable);
+ fbFinishAccess (pDst->pDrawable);
}
void
@@ -269,7 +274,7 @@ fbCompositeSolidMask_nx8x0888 (CARD8 op,
while (w--)
{
- m = *mask++;
+ m = READ(mask++);
if (m == 0xff)
{
if (srca == 0xff)
@@ -289,6 +294,9 @@ fbCompositeSolidMask_nx8x0888 (CARD8 op,
dst += 3;
}
}
+
+ fbFinishAccess (pMask->pDrawable);
+ fbFinishAccess (pDst->pDrawable);
}
void
@@ -331,27 +339,30 @@ fbCompositeSolidMask_nx8x0565 (CARD8 op,
while (w--)
{
- m = *mask++;
+ m = READ(mask++);
if (m == 0xff)
{
if (srca == 0xff)
d = src;
else
{
- d = *dst;
+ d = READ(dst);
d = fbOver24 (src, cvt0565to8888(d));
}
- *dst = cvt8888to0565(d);
+ WRITE(dst, cvt8888to0565(d));
}
else if (m)
{
- d = *dst;
+ d = READ(dst);
d = fbOver24 (fbIn(src,m), cvt0565to8888(d));
- *dst = cvt8888to0565(d);
+ WRITE(dst, cvt8888to0565(d));
}
dst++;
}
}
+
+ fbFinishAccess (pMask->pDrawable);
+ fbFinishAccess (pDst->pDrawable);
}
void
@@ -398,33 +409,36 @@ fbCompositeSolidMask_nx8888x0565C (CARD8 op,
while (w--)
{
- ma = *mask++;
+ ma = READ(mask++);
if (ma == 0xffffffff)
{
if (srca == 0xff)
{
- *dst = src16;
+ WRITE(dst, src16);
}
else
{
- d = *dst;
+ d = READ(dst);
d = fbOver24 (src, cvt0565to8888(d));
- *dst = cvt8888to0565(d);
+ WRITE(dst, cvt8888to0565(d));
}
}
else if (ma)
{
- d = *dst;
+ d = READ(dst);
d = cvt0565to8888(d);
FbInOverC (src, srca, ma, d, 0, m);
FbInOverC (src, srca, ma, d, 8, n);
FbInOverC (src, srca, ma, d, 16, o);
d = m|n|o;
- *dst = cvt8888to0565(d);
+ WRITE(dst, cvt8888to0565(d));
}
dst++;
}
}
+
+ fbFinishAccess (pMask->pDrawable);
+ fbFinishAccess (pDst->pDrawable);
}
void
@@ -462,15 +476,18 @@ fbCompositeSrc_8888x8888 (CARD8 op,
while (w--)
{
- s = *src++;
+ s = READ(src++);
a = s >> 24;
if (a == 0xff)
- *dst = s & dstMask;
+ WRITE(dst, s & dstMask);
else if (a)
- *dst = fbOver (s, *dst) & dstMask;
+ WRITE(dst, fbOver (s, READ(dst)) & dstMask);
dst++;
}
}
+
+ fbFinishAccess (pSrc->pDrawable);
+ fbFinishAccess (pDst->pDrawable);
}
void
@@ -507,7 +524,7 @@ fbCompositeSrc_8888x0888 (CARD8 op,
while (w--)
{
- s = *src++;
+ s = READ(src++);
a = s >> 24;
if (a)
{
@@ -520,6 +537,9 @@ fbCompositeSrc_8888x0888 (CARD8 op,
dst += 3;
}
}
+
+ fbFinishAccess (pSrc->pDrawable);
+ fbFinishAccess (pDst->pDrawable);
}
void
@@ -556,7 +576,7 @@ fbCompositeSrc_8888x0565 (CARD8 op,
while (w--)
{
- s = *src++;
+ s = READ(src++);
a = s >> 24;
if (a)
{
@@ -564,14 +584,17 @@ fbCompositeSrc_8888x0565 (CARD8 op,
d = s;
else
{
- d = *dst;
+ d = READ(dst);
d = fbOver24 (s, cvt0565to8888(d));
}
- *dst = cvt8888to0565(d);
+ WRITE(dst, cvt8888to0565(d));
}
dst++;
}
}
+
+ fbFinishAccess (pDst->pDrawable);
+ fbFinishAccess (pSrc->pDrawable);
}
void
@@ -606,8 +629,11 @@ fbCompositeSrc_0565x0565 (CARD8 op,
w = width;
while (w--)
- *dst++ = *src++;
+ WRITE(dst, READ(src++));
}
+
+ fbFinishAccess (pDst->pDrawable);
+ fbFinishAccess (pSrc->pDrawable);
}
void
@@ -644,20 +670,23 @@ fbCompositeSrcAdd_8000x8000 (CARD8 op,
while (w--)
{
- s = *src++;
+ s = READ(src++);
if (s)
{
if (s != 0xff)
{
- d = *dst;
+ d = READ(dst);
t = d + s;
s = t | (0 - (t >> 8));
}
- *dst = s;
+ WRITE(dst, s);
}
dst++;
}
}
+
+ fbFinishAccess (pDst->pDrawable);
+ fbFinishAccess (pSrc->pDrawable);
}
void
@@ -695,12 +724,12 @@ fbCompositeSrcAdd_8888x8888 (CARD8 op,
while (w--)
{
- s = *src++;
+ s = READ(src++);
if (s)
{
if (s != 0xffffffff)
{
- d = *dst;
+ d = READ(dst);
if (d)
{
m = FbAdd(s,d,0,t);
@@ -710,11 +739,14 @@ fbCompositeSrcAdd_8888x8888 (CARD8 op,
s = m|n|o|p;
}
}
- *dst = s;
+ WRITE(dst, s);
}
dst++;
}
}
+
+ fbFinishAccess (pDst->pDrawable);
+ fbFinishAccess (pSrc->pDrawable);
}
void
@@ -758,6 +790,9 @@ fbCompositeSrcAdd_1000x1000 (CARD8 op,
FALSE,
FALSE);
+
+ fbFinishAccess(pDst->pDrawable);
+ fbFinishAccess(pSrc->pDrawable);
}
void
@@ -822,6 +857,9 @@ fbCompositeSolidMask_nx1xn (CARD8 op,
src,
FB_ALLONES,
0x0);
+
+ fbFinishAccess (pDst->pDrawable);
+ fbFinishAccess (pMask->pDrawable);
}
# define mod(a,b) ((b) == 1 ? 0 : (a) >= 0 ? (a) % (b) : (b) - (-a) % (b))
@@ -892,9 +930,8 @@ fbComposite (CARD8 op,
case PictOpOver:
if (pMask)
{
- if (srcRepeat &&
- pSrc->pDrawable->width == 1 &&
- pSrc->pDrawable->height == 1)
+ if (fbCanGetSolid(pSrc) &&
+ !maskRepeat)
{
srcRepeat = FALSE;
if (PICT_FORMAT_COLOR(pSrc->format)) {
@@ -925,6 +962,8 @@ fbComposite (CARD8 op,
#endif
func = fbCompositeSolidMask_nx8x8888;
break;
+ default:
+ break;
}
break;
case PICT_a8r8g8b8:
@@ -947,6 +986,8 @@ fbComposite (CARD8 op,
#endif
func = fbCompositeSolidMask_nx8888x0565C;
break;
+ default:
+ break;
}
}
break;
@@ -970,6 +1011,8 @@ fbComposite (CARD8 op,
#endif
func = fbCompositeSolidMask_nx8888x0565C;
break;
+ default:
+ break;
}
}
break;
@@ -985,16 +1028,22 @@ fbComposite (CARD8 op,
case PICT_x8b8g8r8:
func = fbCompositeSolidMask_nx1xn;
break;
+ default:
+ break;
}
break;
+ default:
+ break;
}
+ default:
+ break;
}
}
else if (! srcRepeat) /* has mask and non-repeating source */
{
if (pSrc->pDrawable == pMask->pDrawable &&
xSrc == xMask && ySrc == yMask &&
- !pMask->componentAlpha)
+ !pMask->componentAlpha && !maskRepeat)
{
/* source == mask: non-premultiplied data */
switch (pSrc->format) {
@@ -1016,8 +1065,12 @@ fbComposite (CARD8 op,
func = fbCompositeSrc_8888RevNPx0565mmx;
#endif
break;
+ default:
+ break;
}
break;
+ default:
+ break;
}
break;
case PICT_x8r8g8b8:
@@ -1038,19 +1091,23 @@ fbComposite (CARD8 op,
func = fbCompositeSrc_8888RevNPx0565mmx;
#endif
break;
+ default:
+ break;
}
break;
+ default:
+ break;
}
break;
+ default:
+ break;
}
break;
}
else
{
/* non-repeating source, repeating mask => translucent window */
- if (maskRepeat &&
- pMask->pDrawable->width == 1 &&
- pMask->pDrawable->height == 1)
+ if (fbCanGetSolid(pMask))
{
if (pSrc->format == PICT_x8r8g8b8 &&
pDst->format == PICT_x8r8g8b8 &&
@@ -1067,9 +1124,7 @@ fbComposite (CARD8 op,
}
else /* no mask */
{
- if (srcRepeat &&
- pSrc->pDrawable->width == 1 &&
- pSrc->pDrawable->height == 1)
+ if (fbCanGetSolid(pSrc))
{
/* no mask and repeating source */
switch (pSrc->format) {
@@ -1094,8 +1149,12 @@ fbComposite (CARD8 op,
}
#endif
break;
+ default:
+ break;
}
break;
+ default:
+ break;
}
}
else if (! srcRepeat)
@@ -1118,6 +1177,8 @@ fbComposite (CARD8 op,
case PICT_r5g6b5:
func = fbCompositeSrc_8888x0565;
break;
+ default:
+ break;
}
break;
case PICT_x8r8g8b8:
@@ -1129,6 +1190,8 @@ fbComposite (CARD8 op,
func = fbCompositeCopyAreammx;
#endif
break;
+ default:
+ break;
}
case PICT_x8b8g8r8:
switch (pDst->format) {
@@ -1139,6 +1202,8 @@ fbComposite (CARD8 op,
func = fbCompositeCopyAreammx;
#endif
break;
+ default:
+ break;
}
break;
case PICT_a8b8g8r8:
@@ -1158,6 +1223,8 @@ fbComposite (CARD8 op,
case PICT_b5g6r5:
func = fbCompositeSrc_8888x0565;
break;
+ default:
+ break;
}
break;
case PICT_r5g6b5:
@@ -1165,6 +1232,8 @@ fbComposite (CARD8 op,
case PICT_r5g6b5:
func = fbCompositeSrc_0565x0565;
break;
+ default:
+ break;
}
break;
case PICT_b5g6r5:
@@ -1172,8 +1241,12 @@ fbComposite (CARD8 op,
case PICT_b5g6r5:
func = fbCompositeSrc_0565x0565;
break;
+ default:
+ break;
}
break;
+ default:
+ break;
}
}
}
@@ -1192,6 +1265,8 @@ fbComposite (CARD8 op,
#endif
func = fbCompositeSrcAdd_8888x8888;
break;
+ default:
+ break;
}
break;
case PICT_a8b8g8r8:
@@ -1204,6 +1279,8 @@ fbComposite (CARD8 op,
#endif
func = fbCompositeSrcAdd_8888x8888;
break;
+ default:
+ break;
}
break;
case PICT_a8:
@@ -1216,6 +1293,8 @@ fbComposite (CARD8 op,
#endif
func = fbCompositeSrcAdd_8000x8000;
break;
+ default:
+ break;
}
break;
case PICT_a1:
@@ -1223,8 +1302,12 @@ fbComposite (CARD8 op,
case PICT_a1:
func = fbCompositeSrcAdd_1000x1000;
break;
+ default:
+ break;
}
break;
+ default:
+ break;
}
}
break;
@@ -1347,6 +1430,10 @@ fbPictureInit (ScreenPtr pScreen, PictFormatPtr formats, int nformats)
*/
#if !defined(__amd64__) && !defined(__x86_64__)
+#ifdef HAVE_GETISAX
+#include <sys/auxv.h>
+#endif
+
enum CPUFeatures {
NoFeatures = 0,
MMX = 0x1,
@@ -1357,7 +1444,23 @@ enum CPUFeatures {
};
static unsigned int detectCPUFeatures(void) {
+ unsigned int features = 0;
unsigned int result;
+
+#ifdef HAVE_GETISAX
+ if (getisax(&result, 1)) {
+ if (result & AV_386_CMOV)
+ features |= CMOV;
+ if (result & AV_386_MMX)
+ features |= MMX;
+ if (result & AV_386_AMD_MMX)
+ features |= MMX_Extensions;
+ if (result & AV_386_SSE)
+ features |= SSE;
+ if (result & AV_386_SSE2)
+ features |= SSE2;
+ }
+#else
char vendor[13];
vendor[0] = 0;
vendor[12] = 0;
@@ -1366,7 +1469,8 @@ static unsigned int detectCPUFeatures(void) {
* %esp here. We can't declare either one as clobbered
* since they are special registers (%ebx is the "PIC
* register" holding an offset to global data, %esp the
- * stack pointer), so we need to make sure they have their+ * original values when we access the output operands.
+ * stack pointer), so we need to make sure they have their
+ * original values when we access the output operands.
*/
__asm__ ("pushf\n"
"pop %%eax\n"
@@ -1402,7 +1506,6 @@ static unsigned int detectCPUFeatures(void) {
: "%eax", "%ecx", "%edx"
);
- unsigned int features = 0;
if (result) {
/* result now contains the standard feature bits */
if (result & (1 << 15))
@@ -1436,6 +1539,7 @@ static unsigned int detectCPUFeatures(void) {
features |= MMX_Extensions;
}
}
+#endif /* HAVE_GETISAX */
return features;
}
diff --git a/fb/fbpict.h b/fb/fbpict.h
index 9546b134f..5cdde9ef5 100644
--- a/fb/fbpict.h
+++ b/fb/fbpict.h
@@ -1,5 +1,4 @@
/*
- * $XFree86: xc/programs/Xserver/fb/fbpict.h,v 1.7 2001/07/18 10:15:02 keithp Exp $
*
* Copyright © 2000 Keith Packard, member of The XFree86 Project, Inc.
*
@@ -31,6 +30,13 @@
#include "renderedge.h"
+
+#if defined(__GNUC__)
+#define INLINE __inline__
+#else
+#define INLINE
+#endif
+
#define FbIntMult(a,b,t) ( (t) = (a) * (b) + 0x80, ( ( ( (t)>>8 ) + (t) )>>8 ) )
#define FbIntDiv(a,b) (((CARD16) (a) * 255) / (b))
@@ -68,6 +74,40 @@
#define Green(x) (((x) >> 8) & 0xff)
#define Blue(x) ((x) & 0xff)
+/**
+ * Returns TRUE if the fbComposeGetSolid can be used to get a single solid
+ * color representing every source sampling location of the picture.
+ */
+static INLINE Bool
+fbCanGetSolid(PicturePtr pict)
+{
+ if (pict->pDrawable == NULL ||
+ pict->pDrawable->width != 1 ||
+ pict->pDrawable->height != 1)
+ {
+ return FALSE;
+ }
+ if (pict->repeat != RepeatNormal)
+ return FALSE;
+
+ switch (pict->format) {
+ case PICT_a8r8g8b8:
+ case PICT_x8r8g8b8:
+ case PICT_a8b8g8r8:
+ case PICT_x8b8g8r8:
+ case PICT_r8g8b8:
+ case PICT_b8g8r8:
+ case PICT_r5g6b5:
+ case PICT_b5g6r5:
+ return TRUE;
+ default:
+ return FALSE;
+ }
+}
+
+#define fbCanGetSolid(pict) \
+(pict->pDrawable != NULL && pict->pDrawable->width == 1 && pict->pDrawable->height == 1)
+
#define fbComposeGetSolid(pict, bits, fmt) { \
FbBits *__bits__; \
FbStride __stride__; \
@@ -77,13 +117,13 @@
fbGetDrawable((pict)->pDrawable,__bits__,__stride__,__bpp__,__xoff__,__yoff__); \
switch (__bpp__) { \
case 32: \
- (bits) = *(CARD32 *) __bits__; \
+ (bits) = READ((CARD32 *) __bits__); \
break; \
case 24: \
(bits) = Fetch24 ((CARD8 *) __bits__); \
break; \
case 16: \
- (bits) = *(CARD16 *) __bits__; \
+ (bits) = READ((CARD16 *) __bits__); \
(bits) = cvt0565to8888(bits); \
break; \
default: \
@@ -100,6 +140,7 @@
/* manage missing src alpha */ \
if ((pict)->pFormat->direct.alphaMask == 0) \
(bits) |= 0xff000000; \
+ fbFinishAccess ((pict)->pDrawable); \
}
#define fbComposeGetStart(pict,x,y,type,stride,line,mul) {\
@@ -121,22 +162,22 @@
#if IMAGE_BYTE_ORDER == MSBFirst
#define Fetch24(a) ((unsigned long) (a) & 1 ? \
- ((*(a) << 16) | *((CARD16 *) ((a)+1))) : \
- ((*((CARD16 *) (a)) << 8) | *((a)+2)))
+ ((READ(a) << 16) | READ((CARD16 *) ((a)+1))) : \
+ ((READ((CARD16 *) (a)) << 8) | READ((a)+2)))
#define Store24(a,v) ((unsigned long) (a) & 1 ? \
- ((*(a) = (CARD8) ((v) >> 16)), \
- (*((CARD16 *) ((a)+1)) = (CARD16) (v))) : \
- ((*((CARD16 *) (a)) = (CARD16) ((v) >> 8)), \
- (*((a)+2) = (CARD8) (v))))
+ (WRITE(a, (CARD8) ((v) >> 16)), \
+ WRITE((CARD16 *) ((a)+1), (CARD16) (v))) : \
+ (WRITE((CARD16 *) (a), (CARD16) ((v) >> 8)), \
+ WRITE((a)+2, (CARD8) (v))))
#else
#define Fetch24(a) ((unsigned long) (a) & 1 ? \
- ((*(a)) | (*((CARD16 *) ((a)+1)) << 8)) : \
- ((*((CARD16 *) (a))) | (*((a)+2) << 16)))
+ (READ(a) | (READ((CARD16 *) ((a)+1)) << 8)) : \
+ (READ((CARD16 *) (a)) | (READ((a)+2) << 16)))
#define Store24(a,v) ((unsigned long) (a) & 1 ? \
- ((*(a) = (CARD8) (v)), \
- (*((CARD16 *) ((a)+1)) = (CARD16) ((v) >> 8))) : \
- ((*((CARD16 *) (a)) = (CARD16) (v)),\
- (*((a)+2) = (CARD8) ((v) >> 16))))
+ (WRITE(a, (CARD8) (v)), \
+ WRITE((CARD16 *) ((a)+1), (CARD16) ((v) >> 8))) : \
+ (WRITE((CARD16 *) (a), (CARD16) (v)),\
+ WRITE((a)+2, (CARD8) ((v) >> 16))))
#endif
/*
@@ -322,12 +363,6 @@
#define FASTCALL
#endif
-#if defined(__GNUC__)
-#define INLINE __inline__
-#else
-#define INLINE
-#endif
-
typedef struct _FbComposeData {
CARD8 op;
PicturePtr src;
diff --git a/fb/fbpixmap.c b/fb/fbpixmap.c
index 1e12d8818..c2ddcb0e9 100644
--- a/fb/fbpixmap.c
+++ b/fb/fbpixmap.c
@@ -21,7 +21,6 @@
* TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
* PERFORMANCE OF THIS SOFTWARE.
*/
-/* $XFree86: xc/programs/Xserver/fb/fbpixmap.c,v 1.9 2001/05/29 04:54:09 keithp Exp $ */
#ifdef HAVE_DIX_CONFIG_H
#include <dix-config.h>
@@ -161,6 +160,8 @@ fbPixmapToRegion(PixmapPtr pPix)
FirstRect = REGION_BOXPTR(pReg);
rects = FirstRect;
+ fbPrepareAccess(&pPix->drawable);
+
pwLine = (FbBits *) pPix->devPrivate.ptr;
nWidth = pPix->devKind >> (FB_SHIFT-3);
@@ -175,7 +176,7 @@ fbPixmapToRegion(PixmapPtr pPix)
irectLineStart = rects - FirstRect;
/* If the Screen left most bit of the word is set, we're starting in
* a box */
- if(*pw & mask0)
+ if(READ(pw) & mask0)
{
fInBox = TRUE;
rx1 = 0;
@@ -186,7 +187,7 @@ fbPixmapToRegion(PixmapPtr pPix)
pwLineEnd = pw + (width >> FB_SHIFT);
for (base = 0; pw < pwLineEnd; base += FB_UNIT)
{
- w = *pw++;
+ w = READ(pw++);
if (fInBox)
{
if (!~w)
@@ -227,7 +228,7 @@ fbPixmapToRegion(PixmapPtr pPix)
if(width & FB_MASK)
{
/* Process final partial word on line */
- w = *pw++;
+ w = READ(pw++);
for(ib = 0; ib < (width & FB_MASK); ib++)
{
/* If the Screen left most bit of the word is set, we're
@@ -312,6 +313,8 @@ fbPixmapToRegion(PixmapPtr pPix)
pReg->data = (RegDataPtr)NULL;
}
}
+
+ fbFinishAccess(&pPix->drawable);
#ifdef DEBUG
if (!miValidRegion(pReg))
FatalError("Assertion failed file %s, line %d: expr\n", __FILE__, __LINE__);
@@ -363,6 +366,7 @@ fbValidateDrawable (DrawablePtr pDrawable)
if (!fbValidateBits (first, stride, FB_HEAD_BITS) ||
!fbValidateBits (last, stride, FB_TAIL_BITS))
fbInitializeDrawable(pDrawable);
+ fbFinishAccess (pDrawable);
}
void
@@ -384,5 +388,6 @@ fbInitializeDrawable (DrawablePtr pDrawable)
last = bits + stride * pDrawable->height;
fbSetBits (first, stride, FB_HEAD_BITS);
fbSetBits (last, stride, FB_TAIL_BITS);
+ fbFinishAccess (pDrawable);
}
#endif /* FB_DEBUG */
diff --git a/fb/fbpoint.c b/fb/fbpoint.c
index 5229d6970..c03ea18cc 100644
--- a/fb/fbpoint.c
+++ b/fb/fbpoint.c
@@ -21,7 +21,6 @@
* TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
* PERFORMANCE OF THIS SOFTWARE.
*/
-/* $XFree86: xc/programs/Xserver/fb/fbpoint.c,v 1.7 2000/09/22 05:58:01 keithp Exp $ */
#ifdef HAVE_DIX_CONFIG_H
#include <dix-config.h>
@@ -91,20 +90,20 @@ fbDots (FbBits *dstOrig,
FbMaskStip (x, 24, leftMask, n, rightMask);
if (leftMask)
{
- *d = FbDoMaskRRop (*d, andT, xorT, leftMask);
+ WRITE(d, FbDoMaskRRop (READ(d), andT, xorT, leftMask));
andT = FbNext24Stip(andT);
xorT = FbNext24Stip(xorT);
d++;
}
if (rightMask)
- *d = FbDoMaskRRop(*d, andT, xorT, rightMask);
+ WRITE(d, FbDoMaskRRop(READ(d), andT, xorT, rightMask));
}
else
#endif
{
FbStip mask;
mask = FbStipMask(x, dstBpp);
- *d = FbDoMaskRRop (*d, and, xor, mask);
+ WRITE(d, FbDoMaskRRop (READ(d), and, xor, mask));
}
}
}
@@ -161,4 +160,5 @@ fbPolyPoint (DrawablePtr pDrawable,
nBox--; pBox++)
(*dots) (dst, dstStride, dstBpp, pBox, pptInit, nptInit,
pDrawable->x, pDrawable->y, dstXoff, dstYoff, and, xor);
+ fbFinishAccess (pDrawable);
}
diff --git a/fb/fbpseudocolor.c b/fb/fbpseudocolor.c
index 2233f95dc..271e98145 100644
--- a/fb/fbpseudocolor.c
+++ b/fb/fbpseudocolor.c
@@ -875,6 +875,8 @@ xxCopyPseudocolorRegion(ScreenPtr pScreen, RegionPtr pReg,
register CARD16 *d;
int w;
+ fbPrepareAccess((DrawablePtr)pScreen->devPrivate);
+
dst_base = (CARD16*) ((PixmapPtr)pScreen->devPrivate)->devPrivate.ptr;
dst_stride = (int)((PixmapPtr)pScreen->devPrivate)->devKind
/ sizeof (CARD16);
@@ -899,6 +901,8 @@ xxCopyPseudocolorRegion(ScreenPtr pScreen, RegionPtr pReg,
}
pbox++;
}
+
+ fbFinishAccess(&((PixmapPtr)pScreen->devPrivate)->drawable);
}
static void
@@ -1200,7 +1204,7 @@ GCFuncs xxGCFuncs = {
xxChangeClip, xxDestroyClip, xxCopyClip
};
-GCOps xxGCOps = {
+static GCOps xxGCOps = {
xxFillSpans, xxSetSpans,
xxPutImage, xxCopyArea,
xxCopyPlane, xxPolyPoint,
diff --git a/fb/fbpush.c b/fb/fbpush.c
index 8f1336963..bb7bcefef 100644
--- a/fb/fbpush.c
+++ b/fb/fbpush.c
@@ -21,7 +21,6 @@
* TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
* PERFORMANCE OF THIS SOFTWARE.
*/
-/* $XFree86: xc/programs/Xserver/fb/fbpush.c,v 1.3 2000/02/14 19:20:30 dawes Exp $ */
#ifdef HAVE_DIX_CONFIG_H
#include <dix-config.h>
@@ -59,7 +58,7 @@ fbPushPattern (DrawablePtr pDrawable,
w = width;
s = src;
src += srcStride;
- bits = *s++;
+ bits = READ(s++);
xspan = x;
while (w)
{
@@ -74,7 +73,7 @@ fbPushPattern (DrawablePtr pDrawable,
bitsMask = FbStipRight (bitsMask, 1);
if (!bitsMask)
{
- bits = *s++;
+ bits = READ(s++);
bitsMask = FbBitsMask(0,1);
}
} while (bits & bitsMask);
@@ -93,7 +92,7 @@ fbPushPattern (DrawablePtr pDrawable,
bitsMask = FbStipRight (bitsMask, 1);
if (!bitsMask)
{
- bits = *s++;
+ bits = READ(s++);
bitsMask = FbBitsMask(0,1);
}
} while (!(bits & bitsMask));
@@ -166,6 +165,7 @@ fbPushFill (DrawablePtr pDrawable,
fbAnd(GXnoop,(FbBits) 0,FB_ALLONES),
fbXor(GXnoop,(FbBits) 0,FB_ALLONES));
}
+ fbFinishAccess (pDrawable);
}
else
{
diff --git a/fb/fbrop.h b/fb/fbrop.h
index 65f62c393..f3768a265 100644
--- a/fb/fbrop.h
+++ b/fb/fbrop.h
@@ -21,7 +21,6 @@
* TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
* PERFORMANCE OF THIS SOFTWARE.
*/
-/* $XFree86: xc/programs/Xserver/fb/fbrop.h,v 1.3 2000/02/14 19:20:30 dawes Exp $ */
#ifndef _FBROP_H_
#define _FBROP_H_
diff --git a/fb/fbscreen.c b/fb/fbscreen.c
index 804503e12..045ca8fd2 100644
--- a/fb/fbscreen.c
+++ b/fb/fbscreen.c
@@ -1,6 +1,4 @@
-/* $XdotOrg: xc/programs/Xserver/fb/fbscreen.c,v 1.4 2004/12/04 00:42:50 kuhn Exp $
- * Id: fbscreen.c,v 1.1 1999/11/02 03:54:45 keithp Exp $
- *
+/*
* Copyright © 1998 Keith Packard
*
* Permission to use, copy, modify, distribute, and sell this software and its
@@ -21,7 +19,6 @@
* TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
* PERFORMANCE OF THIS SOFTWARE.
*/
-/* $XFree86: xc/programs/Xserver/fb/fbscreen.c,v 1.13 2001/05/29 04:54:09 keithp Exp $ */
#ifdef HAVE_DIX_CONFIG_H
#include <dix-config.h>
@@ -158,6 +155,19 @@ fbSetupScreen(ScreenPtr pScreen,
return TRUE;
}
+#ifdef FB_ACCESS_WRAPPER
+Bool
+wfbFinishScreenInit(ScreenPtr pScreen,
+ pointer pbits,
+ int xsize,
+ int ysize,
+ int dpix,
+ int dpiy,
+ int width,
+ int bpp,
+ SetupWrapProcPtr setupWrap,
+ FinishWrapProcPtr finishWrap)
+#else
Bool
fbFinishScreenInit(ScreenPtr pScreen,
pointer pbits,
@@ -167,6 +177,7 @@ fbFinishScreenInit(ScreenPtr pScreen,
int dpiy,
int width,
int bpp)
+#endif
{
VisualPtr visuals;
DepthPtr depths;
@@ -225,6 +236,10 @@ fbFinishScreenInit(ScreenPtr pScreen,
fbGetScreenPrivate(pScreen)->win32bpp = 32;
fbGetScreenPrivate(pScreen)->pix32bpp = 32;
}
+#ifdef FB_ACCESS_WRAPPER
+ fbGetScreenPrivate(pScreen)->setupWrap = setupWrap;
+ fbGetScreenPrivate(pScreen)->finishWrap = finishWrap;
+#endif
#endif
rootdepth = 0;
if (!fbInitVisuals (&visuals, &depths, &nvisuals, &ndepths, &rootdepth,
@@ -259,6 +274,27 @@ fbFinishScreenInit(ScreenPtr pScreen,
}
/* dts * (inch/dot) * (25.4 mm / inch) = mm */
+#ifdef FB_ACCESS_WRAPPER
+Bool
+wfbScreenInit(ScreenPtr pScreen,
+ pointer pbits,
+ int xsize,
+ int ysize,
+ int dpix,
+ int dpiy,
+ int width,
+ int bpp,
+ SetupWrapProcPtr setupWrap,
+ FinishWrapProcPtr finishWrap)
+{
+ if (!fbSetupScreen(pScreen, pbits, xsize, ysize, dpix, dpiy, width, bpp))
+ return FALSE;
+ if (!wfbFinishScreenInit(pScreen, pbits, xsize, ysize, dpix, dpiy,
+ width, bpp, setupWrap, finishWrap))
+ return FALSE;
+ return TRUE;
+}
+#else
Bool
fbScreenInit(ScreenPtr pScreen,
pointer pbits,
@@ -276,6 +312,7 @@ fbScreenInit(ScreenPtr pScreen,
return FALSE;
return TRUE;
}
+#endif
#ifdef FB_OLD_SCREEN
diff --git a/fb/fbseg.c b/fb/fbseg.c
index 777ff7055..31076379b 100644
--- a/fb/fbseg.c
+++ b/fb/fbseg.c
@@ -21,7 +21,6 @@
* TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
* PERFORMANCE OF THIS SOFTWARE.
*/
-/* $XFree86: xc/programs/Xserver/fb/fbseg.c,v 1.7 2001/01/17 07:40:02 keithp Exp $ */
#ifdef HAVE_DIX_CONFIG_H
#include <dix-config.h>
@@ -80,7 +79,7 @@ fbBresSolid (DrawablePtr pDrawable,
mask = fbBresShiftMask(mask,signdx,dstBpp);
if (!mask)
{
- *dst = FbDoMaskRRop (*dst, and, xor, bits);
+ WRITE(dst, FbDoMaskRRop (READ(dst), and, xor, bits));
bits = 0;
dst += signdx;
mask = mask0;
@@ -88,20 +87,20 @@ fbBresSolid (DrawablePtr pDrawable,
e += e1;
if (e >= 0)
{
- *dst = FbDoMaskRRop (*dst, and, xor, bits);
+ WRITE(dst, FbDoMaskRRop (READ(dst), and, xor, bits));
bits = 0;
dst += dstStride;
e += e3;
}
}
if (bits)
- *dst = FbDoMaskRRop (*dst, and, xor, bits);
+ WRITE(dst, FbDoMaskRRop (READ(dst), and, xor, bits));
}
else
{
while (len--)
{
- *dst = FbDoMaskRRop (*dst, and, xor, mask);
+ WRITE(dst, FbDoMaskRRop (READ(dst), and, xor, mask));
dst += dstStride;
e += e1;
if (e >= 0)
@@ -116,6 +115,8 @@ fbBresSolid (DrawablePtr pDrawable,
}
}
}
+
+ fbFinishAccess (pDrawable);
}
void
@@ -165,9 +166,9 @@ fbBresDash (DrawablePtr pDrawable,
while (len--)
{
if (even)
- *dst = FbDoMaskRRop (*dst, and, xor, mask);
+ WRITE(dst, FbDoMaskRRop (READ(dst), and, xor, mask));
else if (doOdd)
- *dst = FbDoMaskRRop (*dst, bgand, bgxor, mask);
+ WRITE(dst, FbDoMaskRRop (READ(dst), bgand, bgxor, mask));
if (axis == X_AXIS)
{
mask = fbBresShiftMask(mask,signdx,dstBpp);
@@ -200,6 +201,8 @@ fbBresDash (DrawablePtr pDrawable,
}
FbDashStep (dashlen, even);
}
+
+ fbFinishAccess (pDrawable);
}
void
@@ -372,13 +375,13 @@ fbBresSolid24RRop (DrawablePtr pDrawable,
FbMaskStip (x, 24, leftMask, nl, rightMask);
if (leftMask)
{
- *d = FbDoMaskRRop (*d, andT, xorT, leftMask);
+ WRITE(d, FbDoMaskRRop (READ(d), andT, xorT, leftMask));
d++;
andT = FbNext24Stip (andT);
xorT = FbNext24Stip (xorT);
}
if (rightMask)
- *d = FbDoMaskRRop (*d, andT, xorT, rightMask);
+ WRITE(d, FbDoMaskRRop (READ(d), andT, xorT, rightMask));
if (axis == X_AXIS)
{
x1 += signdx;
@@ -400,6 +403,8 @@ fbBresSolid24RRop (DrawablePtr pDrawable,
}
}
}
+
+ fbFinishAccess (pDrawable);
}
static void
@@ -469,13 +474,13 @@ fbBresDash24RRop (DrawablePtr pDrawable,
FbMaskStip (x, 24, leftMask, nl, rightMask);
if (leftMask)
{
- *d = FbDoMaskRRop (*d, andT, xorT, leftMask);
+ WRITE(d, FbDoMaskRRop (READ(d), andT, xorT, leftMask));
d++;
andT = FbNext24Stip (andT);
xorT = FbNext24Stip (xorT);
}
if (rightMask)
- *d = FbDoMaskRRop (*d, andT, xorT, rightMask);
+ WRITE(d, FbDoMaskRRop (READ(d), andT, xorT, rightMask));
}
if (axis == X_AXIS)
{
@@ -499,6 +504,8 @@ fbBresDash24RRop (DrawablePtr pDrawable,
}
FbDashStep (dashlen, even);
}
+
+ fbFinishAccess (pDrawable);
}
#endif
diff --git a/fb/fbsetsp.c b/fb/fbsetsp.c
index eefc2da82..06332568b 100644
--- a/fb/fbsetsp.c
+++ b/fb/fbsetsp.c
@@ -21,7 +21,6 @@
* TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
* PERFORMANCE OF THIS SOFTWARE.
*/
-/* $XFree86: xc/programs/Xserver/fb/fbsetsp.c,v 1.4 2000/05/06 21:09:34 keithp Exp $ */
#ifdef HAVE_DIX_CONFIG_H
#include <dix-config.h>
@@ -100,5 +99,6 @@ fbSetSpans (DrawablePtr pDrawable,
pwidth++;
}
fbValidateDrawable (pDrawable);
+ fbFinishAccess (pDrawable);
}
diff --git a/fb/fbsolid.c b/fb/fbsolid.c
index 89effe63b..6b5ed0fa1 100644
--- a/fb/fbsolid.c
+++ b/fb/fbsolid.c
@@ -70,12 +70,12 @@ fbSolid (FbBits *dst,
n = nmiddle;
if (!and)
while (n--)
- *dst++ = xor;
+ WRITE(dst++, xor);
else
while (n--)
{
- *dst = FbDoRRop (*dst, and, xor);
- dst++;
+ WRITE(dst, FbDoRRop (READ(dst), and, xor));
+ dst++;
}
if (endmask)
FbDoRightMaskByteRRop(dst,endbyte,endmask,and,xor);
@@ -160,26 +160,26 @@ fbSolid24 (FbBits *dst,
{
if (startmask)
{
- *dst = FbDoMaskRRop(*dst, andS, xorS, startmask);
- dst++;
+ WRITE(dst, FbDoMaskRRop(READ(dst), andS, xorS, startmask));
+ dst++;
}
n = nmiddle;
if (!and0)
{
while (n >= 3)
{
- *dst++ = xor0;
- *dst++ = xor1;
- *dst++ = xor2;
+ WRITE(dst++, xor0);
+ WRITE(dst++, xor1);
+ WRITE(dst++, xor2);
n -= 3;
}
if (n)
{
- *dst++ = xor0;
+ WRITE(dst++, xor0);
n--;
if (n)
{
- *dst++ = xor1;
+ WRITE(dst++, xor1);
}
}
}
@@ -187,28 +187,28 @@ fbSolid24 (FbBits *dst,
{
while (n >= 3)
{
- *dst = FbDoRRop (*dst, and0, xor0);
- dst++;
- *dst = FbDoRRop (*dst, and1, xor1);
- dst++;
- *dst = FbDoRRop (*dst, and2, xor2);
- dst++;
+ WRITE(dst, FbDoRRop (READ(dst), and0, xor0));
+ dst++;
+ WRITE(dst, FbDoRRop (READ(dst), and1, xor1));
+ dst++;
+ WRITE(dst, FbDoRRop (READ(dst), and2, xor2));
+ dst++;
n -= 3;
}
if (n)
{
- *dst = FbDoRRop (*dst, and0, xor0);
- dst++;
+ WRITE(dst, FbDoRRop (READ(dst), and0, xor0));
+ dst++;
n--;
if (n)
{
- *dst = FbDoRRop (*dst, and1, xor1);
- dst++;
+ WRITE(dst, FbDoRRop (READ(dst), and1, xor1));
+ dst++;
}
}
}
if (endmask)
- *dst = FbDoMaskRRop (*dst, andE, xorE, endmask);
+ WRITE(dst, FbDoMaskRRop (READ(dst), andE, xorE, endmask));
dst += dstStride;
}
}
diff --git a/fb/fbstipple.c b/fb/fbstipple.c
index 175413092..de8d1f814 100644
--- a/fb/fbstipple.c
+++ b/fb/fbstipple.c
@@ -21,7 +21,6 @@
* TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
* PERFORMANCE OF THIS SOFTWARE.
*/
-/* $XFree86: xc/programs/Xserver/fb/fbstipple.c,v 1.6 2000/02/23 20:29:47 dawes Exp $ */
#ifdef HAVE_DIX_CONFIG_H
#include <dix-config.h>
@@ -156,7 +155,7 @@ fbEvenStipple (FbBits *dst,
/*
* Extract stipple bits for this scanline;
*/
- bits = *s;
+ bits = READ(s);
s += stipStride;
if (s == stipEnd)
s = stip;
@@ -200,12 +199,12 @@ fbEvenStipple (FbBits *dst,
n = nmiddle;
if (!and)
while (n--)
- *dst++ = xor;
+ WRITE(dst++, xor);
else
{
while (n--)
{
- *dst = FbDoRRop (*dst, and, xor);
+ WRITE(dst, FbDoRRop (READ(dst), and, xor));
dst++;
}
}
diff --git a/fb/fbtile.c b/fb/fbtile.c
index ef3242241..e7df1af5a 100644
--- a/fb/fbtile.c
+++ b/fb/fbtile.c
@@ -21,7 +21,6 @@
* TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
* PERFORMANCE OF THIS SOFTWARE.
*/
-/* $XFree86: xc/programs/Xserver/fb/fbtile.c,v 1.3 2000/02/12 03:39:43 dawes Exp $ */
#ifdef HAVE_DIX_CONFIG_H
#include <dix-config.h>
@@ -81,7 +80,7 @@ fbEvenTile (FbBits *dst,
/*
* Pick up bits for this scanline
*/
- bits = *t++;
+ bits = READ(t++);
if (t == tileEnd) t = tile;
bits = FbRotLeft(bits,rot);
and = fbAnd(alu,bits,pm);
@@ -95,11 +94,11 @@ fbEvenTile (FbBits *dst,
n = nmiddle;
if (!and)
while (n--)
- *dst++ = xor;
+ WRITE(dst++, xor);
else
while (n--)
{
- *dst = FbDoRRop (*dst, and, xor);
+ WRITE(dst, FbDoRRop (READ(dst), and, xor));
dst++;
}
if (endmask)
diff --git a/fb/fbtrap.c b/fb/fbtrap.c
index 863969527..4c67bcdfb 100644
--- a/fb/fbtrap.c
+++ b/fb/fbtrap.c
@@ -95,6 +95,8 @@ fbAddTraps (PicturePtr pPicture,
}
traps++;
}
+
+ fbFinishAccess (pPicture->pDrawable);
}
void
@@ -142,6 +144,8 @@ fbRasterizeTrapezoid (PicturePtr pPicture,
fbRasterizeEdges (buf, bpp, width, stride, &l, &r, t, b);
}
+
+ fbFinishAccess (pPicture->pDrawable);
}
static int
diff --git a/fb/fbutil.c b/fb/fbutil.c
index 8153ab364..4be0f233c 100644
--- a/fb/fbutil.c
+++ b/fb/fbutil.c
@@ -21,7 +21,6 @@
* TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
* PERFORMANCE OF THIS SOFTWARE.
*/
-/* $XFree86: xc/programs/Xserver/fb/fbutil.c,v 1.4 2000/02/23 20:29:48 dawes Exp $ */
#ifdef HAVE_DIX_CONFIG_H
#include <dix-config.h>
diff --git a/fb/fbwindow.c b/fb/fbwindow.c
index 8f5355d06..cac662cc7 100644
--- a/fb/fbwindow.c
+++ b/fb/fbwindow.c
@@ -1,4 +1,3 @@
-/* $XdotOrg: xserver/xorg/fb/fbwindow.c,v 1.11 2006/04/03 21:16:30 ajax Exp $ */
/*
* Id: fbwindow.c,v 1.1 1999/11/02 03:54:45 keithp Exp $
*
@@ -22,7 +21,6 @@
* TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
* PERFORMANCE OF THIS SOFTWARE.
*/
-/* $XFree86: xc/programs/Xserver/fb/fbwindow.c,v 1.10tsi Exp $ */
#ifdef HAVE_DIX_CONFIG_H
#include <dix-config.h>
@@ -120,6 +118,9 @@ fbCopyWindowProc (DrawablePtr pSrcDrawable,
upsidedown);
pbox++;
}
+
+ fbFinishAccess (pDstDrawable);
+ fbFinishAccess (pSrcDrawable);
}
void
@@ -251,6 +252,8 @@ fbFillRegionSolid (DrawablePtr pDrawable,
fbValidateDrawable (pDrawable);
pbox++;
}
+
+ fbFinishAccess (pDrawable);
}
#ifdef PANORAMIX
@@ -313,6 +316,9 @@ fbFillRegionTiled (DrawablePtr pDrawable,
yRot - (pbox->y1 + dstYoff));
pbox++;
}
+
+ fbFinishAccess (&pTile->drawable);
+ fbFinishAccess (pDrawable);
}
void
diff --git a/fb/wfbrename.h b/fb/wfbrename.h
new file mode 100644
index 000000000..8f875c88b
--- /dev/null
+++ b/fb/wfbrename.h
@@ -0,0 +1,198 @@
+#define fb16Lane wfb16Lane
+#define fb24_32CopyMtoN wfb24_32CopyMtoN
+#define fb24_32CreateScreenResources wfb24_32CreateScreenResources
+#define fb24_32GetImage wfb24_32GetImage
+#define fb24_32GetSpans wfb24_32GetSpans
+#define fb24_32ModifyPixmapHeader wfb24_32ModifyPixmapHeader
+#define fb24_32PutZImage wfb24_32PutZImage
+#define fb24_32ReformatTile wfb24_32ReformatTile
+#define fb24_32SetSpans wfb24_32SetSpans
+#define fb32Lane wfb32Lane
+#define fb8Lane wfb8Lane
+#define fbAddTraps wfbAddTraps
+#define fbAddTriangles wfbAddTriangles
+#define fbAllocatePrivates wfbAllocatePrivates
+#define fbArc16 wfbArc16
+#define fbArc24 wfbArc24
+#define fbArc32 wfbArc32
+#define fbArc8 wfbArc8
+#define fbBlt wfbBlt
+#define fbBlt24 wfbBlt24
+#define fbBltOne wfbBltOne
+#define fbBltOne24 wfbBltOne24
+#define fbBltPlane wfbBltPlane
+#define fbBltStip wfbBltStip
+#define fbBres wfbBres
+#define fbBresDash wfbBresDash
+#define fbBresDash16 wfbBresDash16
+#define fbBresDash24 wfbBresDash24
+#define fbBresDash32 wfbBresDash32
+#define fbBresDash8 wfbBresDash8
+#define fbBresFill wfbBresFill
+#define fbBresFillDash wfbBresFillDash
+#define fbBresSolid wfbBresSolid
+#define fbBresSolid16 wfbBresSolid16
+#define fbBresSolid24 wfbBresSolid24
+#define fbBresSolid32 wfbBresSolid32
+#define fbBresSolid8 wfbBresSolid8
+#define fbChangeWindowAttributes wfbChangeWindowAttributes
+#define fbClearVisualTypes wfbClearVisualTypes
+#define fbCloseScreen wfbCloseScreen
+#define fbComposite wfbComposite
+#define fbCompositeGeneral wfbCompositeGeneral
+#define fbCompositeSolidMask_nx1xn wfbCompositeSolidMask_nx1xn
+#define fbCompositeSolidMask_nx8888x0565C wfbCompositeSolidMask_nx8888x0565C
+#define fbCompositeSolidMask_nx8888x8888C wfbCompositeSolidMask_nx8888x8888C
+#define fbCompositeSolidMask_nx8x0565 wfbCompositeSolidMask_nx8x0565
+#define fbCompositeSolidMask_nx8x0888 wfbCompositeSolidMask_nx8x0888
+#define fbCompositeSolidMask_nx8x8888 wfbCompositeSolidMask_nx8x8888
+#define fbCompositeSrc_0565x0565 wfbCompositeSrc_0565x0565
+#define fbCompositeSrc_8888x0565 wfbCompositeSrc_8888x0565
+#define fbCompositeSrc_8888x0888 wfbCompositeSrc_8888x0888
+#define fbCompositeSrc_8888x8888 wfbCompositeSrc_8888x8888
+#define fbCompositeSrcAdd_1000x1000 wfbCompositeSrcAdd_1000x1000
+#define fbCompositeSrcAdd_8000x8000 wfbCompositeSrcAdd_8000x8000
+#define fbCompositeSrcAdd_8888x8888 wfbCompositeSrcAdd_8888x8888
+#define fbCopy1toN wfbCopy1toN
+#define fbCopyArea wfbCopyArea
+#define fbCopyNto1 wfbCopyNto1
+#define fbCopyNtoN wfbCopyNtoN
+#define fbCopyPlane wfbCopyPlane
+#define fbCopyRegion wfbCopyRegion
+#define fbCopyWindow wfbCopyWindow
+#define fbCopyWindowProc wfbCopyWindowProc
+#define fbCreateDefColormap wfbCreateDefColormap
+#define fbCreateGC wfbCreateGC
+#define fbCreatePixmap wfbCreatePixmap
+#define fbCreatePixmapBpp wfbCreatePixmapBpp
+#define fbCreateWindow wfbCreateWindow
+#define fbDestroyPixmap wfbDestroyPixmap
+#define fbDestroyWindow wfbDestroyWindow
+#define fbDoCopy wfbDoCopy
+#define fbDots wfbDots
+#define fbDots16 wfbDots16
+#define fbDots24 wfbDots24
+#define fbDots32 wfbDots32
+#define fbDots8 wfbDots8
+#define fbEvenStipple wfbEvenStipple
+#define fbEvenTile wfbEvenTile
+#define fbExpandDirectColors wfbExpandDirectColors
+#define fbFill wfbFill
+#define fbFillRegionSolid wfbFillRegionSolid
+#define fbFillRegionTiled wfbFillRegionTiled
+#define fbFillSpans wfbFillSpans
+#define fbFixCoordModePrevious wfbFixCoordModePrevious
+#define fbGCFuncs wfbGCFuncs
+#define fbGCOps wfbGCOps
+#define fbGCPrivateIndex wfbGCPrivateIndex
+#define fbGeneration wfbGeneration
+#define fbGetGCPrivateIndex wfbGetGCPrivateIndex
+#define fbGetImage wfbGetImage
+#define fbGetScreenPrivateIndex wfbGetScreenPrivateIndex
+#define fbGetSpans wfbGetSpans
+#define _fbGetWindowPixmap _wfbGetWindowPixmap
+#define fbGetWinPrivateIndex wfbGetWinPrivateIndex
+#define fbGlyph16 wfbGlyph16
+#define fbGlyph24 wfbGlyph24
+#define fbGlyph32 wfbGlyph32
+#define fbGlyph8 wfbGlyph8
+#define fbGlyphIn wfbGlyphIn
+#define fbHasVisualTypes wfbHasVisualTypes
+#define fbImageGlyphBlt wfbImageGlyphBlt
+#define fbIn wfbIn
+#define fbInitializeColormap wfbInitializeColormap
+#define fbInitVisuals wfbInitVisuals
+#define fbInstallColormap wfbInstallColormap
+#define fbLaneTable wfbLaneTable
+#define fbListInstalledColormaps wfbListInstalledColormaps
+#define fbMapWindow wfbMapWindow
+#define FbMergeRopBits wFbMergeRopBits
+#define fbOddStipple wfbOddStipple
+#define fbOddTile wfbOddTile
+#define fbOver wfbOver
+#define fbOver24 wfbOver24
+#define fbOverlayCloseScreen wfbOverlayCloseScreen
+#define fbOverlayCopyWindow wfbOverlayCopyWindow
+#define fbOverlayCreateScreenResources wfbOverlayCreateScreenResources
+#define fbOverlayCreateWindow wfbOverlayCreateWindow
+#define fbOverlayFinishScreenInit wfbOverlayFinishScreenInit
+#define fbOverlayGeneration wfbOverlayGeneration
+#define fbOverlayGetScreenPrivateIndex wfbOverlayGetScreenPrivateIndex
+#define fbOverlayPaintKey wfbOverlayPaintKey
+#define fbOverlayPaintWindow wfbOverlayPaintWindow
+#define fbOverlayScreenPrivateIndex wfbOverlayScreenPrivateIndex
+#define fbOverlaySetupScreen wfbOverlaySetupScreen
+#define fbOverlayUpdateLayerRegion wfbOverlayUpdateLayerRegion
+#define fbOverlayWindowExposures wfbOverlayWindowExposures
+#define fbOverlayWindowLayer wfbOverlayWindowLayer
+#define fbPadPixmap wfbPadPixmap
+#define fbPaintWindow wfbPaintWindow
+#define fbPictureInit wfbPictureInit
+#define fbPixmapToRegion wfbPixmapToRegion
+#define fbPolyArc wfbPolyArc
+#define fbPolyFillRect wfbPolyFillRect
+#define fbPolyGlyphBlt wfbPolyGlyphBlt
+#define fbPolyLine wfbPolyLine
+#define fbPolyline16 wfbPolyline16
+#define fbPolyline24 wfbPolyline24
+#define fbPolyline32 wfbPolyline32
+#define fbPolyline8 wfbPolyline8
+#define fbPolyPoint wfbPolyPoint
+#define fbPolySegment wfbPolySegment
+#define fbPolySegment16 wfbPolySegment16
+#define fbPolySegment24 wfbPolySegment24
+#define fbPolySegment32 wfbPolySegment32
+#define fbPolySegment8 wfbPolySegment8
+#define fbPositionWindow wfbPositionWindow
+#define fbPushFill wfbPushFill
+#define fbPushImage wfbPushImage
+#define fbPushPattern wfbPushPattern
+#define fbPushPixels wfbPushPixels
+#define fbPutImage wfbPutImage
+#define fbPutXYImage wfbPutXYImage
+#define fbPutZImage wfbPutZImage
+#define fbQueryBestSize wfbQueryBestSize
+#define fbRasterizeEdges wfbRasterizeEdges
+#define fbRasterizeTrapezoid wfbRasterizeTrapezoid
+#define fbRealizeFont wfbRealizeFont
+#define fbReduceRasterOp wfbReduceRasterOp
+#define fbReplicatePixel wfbReplicatePixel
+#define fbResolveColor wfbResolveColor
+#define fbRestoreAreas wfbRestoreAreas
+#define fbSaveAreas wfbSaveAreas
+#define fbScreenPrivateIndex wfbScreenPrivateIndex
+#define fbSegment wfbSegment
+#define fbSelectBres wfbSelectBres
+#define fbSetSpans wfbSetSpans
+#define fbSetupScreen wfbSetupScreen
+#define fbSetVisualTypes wfbSetVisualTypes
+#define fbSetVisualTypesAndMasks wfbSetVisualTypesAndMasks
+#define _fbSetWindowPixmap _wfbSetWindowPixmap
+#define fbSolid wfbSolid
+#define fbSolid24 wfbSolid24
+#define fbSolidBoxClipped wfbSolidBoxClipped
+#define fbStipple wfbStipple
+#define fbStipple1Bits wfbStipple1Bits
+#define fbStipple24Bits wfbStipple24Bits
+#define fbStipple2Bits wfbStipple2Bits
+#define fbStipple4Bits wfbStipple4Bits
+#define fbStipple8Bits wfbStipple8Bits
+#define fbStippleTable wfbStippleTable
+#define fbTile wfbTile
+#define fbTransparentSpan wfbTransparentSpan
+#define fbUninstallColormap wfbUninstallColormap
+#define fbUnmapWindow wfbUnmapWindow
+#define fbUnrealizeFont wfbUnrealizeFont
+#define fbValidateGC wfbValidateGC
+#define fbWinPrivateIndex wfbWinPrivateIndex
+#define fbZeroLine wfbZeroLine
+#define fbZeroSegment wfbZeroSegment
+#define xxScrPrivateIndex wfbxxScrPrivateIndex
+#define xxGCPrivateIndex wfbxxGCPrivateIndex
+#define xxColormapPrivateIndex wfbxxColormapPrivateIndex
+#define xxGeneration wfbxxGeneration
+#define xxPrintVisuals wfbxxPrintVisuals
+#define xxGCFuncs wfbxxGCFuncs
+#define xxGCOps wfbxxGCOps
+#define xxSetup wfbxxSetup
+#define composeFunctions wfbComposeFunctions
diff --git a/hw/Makefile.am b/hw/Makefile.am
index 4c35a5817..d00d6fb3f 100644
--- a/hw/Makefile.am
+++ b/hw/Makefile.am
@@ -26,6 +26,10 @@ if KDRIVE
KDRIVE_SUBDIRS = kdrive
endif
+if XPRINT
+XPRINT_SUBDIRS = xprint
+endif
+
# need to add darwin support here
SUBDIRS = \
@@ -35,9 +39,10 @@ SUBDIRS = \
$(XVFB_SUBDIRS) \
$(XNEST_SUBDIRS) \
$(DMX_SUBDIRS) \
- $(KDRIVE_SUBDIRS)
+ $(KDRIVE_SUBDIRS) \
+ $(XPRINT_SUBDIRS)
-DIST_SUBDIRS = dmx xfree86 vfb xnest xwin darwin kdrive xgl
+DIST_SUBDIRS = dmx xfree86 vfb xnest xwin darwin kdrive xgl xprint
relink:
for i in $(SUBDIRS) ; do $(MAKE) -C $$i relink ; done
diff --git a/hw/darwin/Makefile.am b/hw/darwin/Makefile.am
index 8a5e981fe..542bfdb24 100644
--- a/hw/darwin/Makefile.am
+++ b/hw/darwin/Makefile.am
@@ -54,7 +54,6 @@ EXTRA_DIST = \
darwinKeyboard.c \
darwinKeyboard.h \
darwinXinput.c \
- iokit/.cvsignore \
iokit/xfIOKit.c \
iokit/xfIOKitCursor.c \
iokit/xfIOKit.h \
@@ -66,11 +65,8 @@ EXTRA_DIST = \
quartz/cr/crFrame.m \
quartz/cr/cr.h \
quartz/cr/crScreen.m \
- quartz/cr/.cvsignore \
quartz/cr/XView.h \
quartz/cr/XView.m \
- quartz/.cvsignore \
- quartz/fullscreen/.cvsignore \
quartz/fullscreen/fullscreen.c \
quartz/fullscreen/quartzCursor.c \
quartz/fullscreen/quartzCursor.h \
@@ -98,7 +94,6 @@ EXTRA_DIST = \
quartz/XDarwinStartup.c \
quartz/XDarwinStartup.man \
quartz/xpr/appledri.c \
- quartz/xpr/.cvsignore \
quartz/xpr/dri.c \
quartz/xpr/dri.h \
quartz/xpr/dristruct.h \
diff --git a/hw/darwin/darwin.c b/hw/darwin/darwin.c
index 10afbaf78..bd9998976 100644
--- a/hw/darwin/darwin.c
+++ b/hw/darwin/darwin.c
@@ -29,8 +29,6 @@
* 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: xserver/xorg/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>
diff --git a/hw/darwin/darwin.h b/hw/darwin/darwin.h
index 4f4e9b91f..cd572258c 100644
--- a/hw/darwin/darwin.h
+++ b/hw/darwin/darwin.h
@@ -23,7 +23,6 @@
* 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
diff --git a/hw/darwin/darwinClut8.h b/hw/darwin/darwinClut8.h
index 06e7b71c5..8e914f3fd 100644
--- a/hw/darwin/darwinClut8.h
+++ b/hw/darwin/darwinClut8.h
@@ -1,7 +1,6 @@
/*
* 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_
diff --git a/hw/darwin/darwinEvents.c b/hw/darwin/darwinEvents.c
index 61100d9b3..6b902df05 100644
--- a/hw/darwin/darwinEvents.c
+++ b/hw/darwin/darwinEvents.c
@@ -29,7 +29,6 @@ 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>
diff --git a/hw/darwin/darwinKeyboard.c b/hw/darwin/darwinKeyboard.c
index dbc449dc3..1cc49fe8e 100644
--- a/hw/darwin/darwinKeyboard.c
+++ b/hw/darwin/darwinKeyboard.c
@@ -38,7 +38,6 @@
//
//=============================================================================
-/* $XFree86: xc/programs/Xserver/hw/darwin/darwinKeyboard.c,v 1.21 2004/04/01 00:05:22 torrey Exp $ */
/*
===========================================================================
@@ -1021,7 +1020,7 @@ int DarwinModifierStringToNXKey(const char *str)
* This allows the ddx layer to prevent some keys from being remapped
* as modifier keys.
*/
-Bool LegalModifier(unsigned int key, DevicePtr pDev)
+Bool LegalModifier(unsigned int key, DeviceIntPtr pDev)
{
return 1;
}
diff --git a/hw/darwin/darwinKeyboard.h b/hw/darwin/darwinKeyboard.h
index 0ea9c1d60..f4a861186 100644
--- a/hw/darwin/darwinKeyboard.h
+++ b/hw/darwin/darwinKeyboard.h
@@ -23,7 +23,6 @@
* 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
diff --git a/hw/darwin/darwinXinput.c b/hw/darwin/darwinXinput.c
index d3716a1d4..260d72af7 100644
--- a/hw/darwin/darwinXinput.c
+++ b/hw/darwin/darwinXinput.c
@@ -1,4 +1,3 @@
-/* $Xorg: stubs.c,v 1.4 2001/02/09 02:04:35 xorgcvs Exp $ */
/*
* X server support of the XINPUT extension for Darwin
@@ -52,7 +51,6 @@ 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>
diff --git a/hw/darwin/iokit/xfIOKit.c b/hw/darwin/iokit/xfIOKit.c
index 7d69382af..95a7fb32c 100644
--- a/hw/darwin/iokit/xfIOKit.c
+++ b/hw/darwin/iokit/xfIOKit.c
@@ -33,8 +33,6 @@
* 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.4 2005/04/20 12:25:19 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>
diff --git a/hw/darwin/iokit/xfIOKit.h b/hw/darwin/iokit/xfIOKit.h
index 288063da1..27d27bc70 100644
--- a/hw/darwin/iokit/xfIOKit.h
+++ b/hw/darwin/iokit/xfIOKit.h
@@ -28,7 +28,6 @@
* 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
diff --git a/hw/darwin/iokit/xfIOKitCursor.c b/hw/darwin/iokit/xfIOKitCursor.c
index 69eb41d2f..ef3e254d7 100644
--- a/hw/darwin/iokit/xfIOKitCursor.c
+++ b/hw/darwin/iokit/xfIOKitCursor.c
@@ -57,7 +57,6 @@
* 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"
diff --git a/hw/darwin/iokit/xfIOKitStartup.c b/hw/darwin/iokit/xfIOKitStartup.c
index 09c5daa1c..512793aa5 100644
--- a/hw/darwin/iokit/xfIOKitStartup.c
+++ b/hw/darwin/iokit/xfIOKitStartup.c
@@ -28,7 +28,6 @@
* 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"
diff --git a/hw/darwin/quartz/Preferences.h b/hw/darwin/quartz/Preferences.h
index d8c3c2ea2..cf43758e7 100644
--- a/hw/darwin/quartz/Preferences.h
+++ b/hw/darwin/quartz/Preferences.h
@@ -25,7 +25,6 @@
* 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>
diff --git a/hw/darwin/quartz/XDarwinStartup.c b/hw/darwin/quartz/XDarwinStartup.c
index 0adb4c212..8697776bf 100644
--- a/hw/darwin/quartz/XDarwinStartup.c
+++ b/hw/darwin/quartz/XDarwinStartup.c
@@ -38,7 +38,6 @@
* 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>
diff --git a/hw/darwin/quartz/XServer.h b/hw/darwin/quartz/XServer.h
index 828fce17f..030ccb51f 100644
--- a/hw/darwin/quartz/XServer.h
+++ b/hw/darwin/quartz/XServer.h
@@ -29,8 +29,6 @@
* sale, use or other dealings in this Software without prior written
* authorization.
*/
-/* $XdotOrg: xc/programs/Xserver/hw/darwin/quartz/XServer.h,v 1.4 2005/04/20 12:25:19 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>
diff --git a/hw/darwin/quartz/applewm.c b/hw/darwin/quartz/applewm.c
index d79df4cee..224d6c5e0 100644
--- a/hw/darwin/quartz/applewm.c
+++ b/hw/darwin/quartz/applewm.c
@@ -1,4 +1,3 @@
-/* $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.
@@ -269,7 +268,7 @@ ProcAppleWMSelectInput (client)
REQUEST_SIZE_MATCH (xAppleWMSelectInputReq);
pHead = (WMEventPtr *)SecurityLookupIDByType(client,
- eventResource, EventType, SecurityWriteAccess);
+ eventResource, EventType, DixWriteAccess);
if (stuff->mask != 0) {
if (pHead) {
/* check for existing entry. */
@@ -491,11 +490,9 @@ ProcAppleWMSetWindowLevel(
REQUEST_SIZE_MATCH(xAppleWMSetWindowLevelReq);
- if (!(pWin = SecurityLookupWindow((Drawable)stuff->window,
- client, SecurityReadAccess)))
- {
+ if (Success != dixLookupWindow(&pWin, stuff->window, client,
+ DixReadAccess))
return BadValue;
- }
if (stuff->level < 0 || stuff->level >= AppleWMNumWindowLevels) {
return BadValue;
@@ -603,11 +600,9 @@ ProcAppleWMFrameDraw(
REQUEST_AT_LEAST_SIZE(xAppleWMFrameDrawReq);
- if (!(pWin = SecurityLookupWindow((Drawable)stuff->window,
- client, SecurityReadAccess)))
- {
+ if (Success != dixLookupWindow(&pWin, stuff->window, client,
+ DixReadAccess))
return BadValue;
- }
ir = make_box (stuff->ix, stuff->iy, stuff->iw, stuff->ih);
or = make_box (stuff->ox, stuff->oy, stuff->ow, stuff->oh);
diff --git a/hw/darwin/quartz/applewmExt.h b/hw/darwin/quartz/applewmExt.h
index b27083ac7..60d49ef59 100644
--- a/hw/darwin/quartz/applewmExt.h
+++ b/hw/darwin/quartz/applewmExt.h
@@ -27,7 +27,6 @@ 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_
diff --git a/hw/darwin/quartz/cr/XView.h b/hw/darwin/quartz/cr/XView.h
index 01f5b04b4..26f789da2 100644
--- a/hw/darwin/quartz/cr/XView.h
+++ b/hw/darwin/quartz/cr/XView.h
@@ -25,7 +25,6 @@
* 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>
diff --git a/hw/darwin/quartz/fullscreen/fullscreen.c b/hw/darwin/quartz/fullscreen/fullscreen.c
index 05542eafe..a4881f9d9 100644
--- a/hw/darwin/quartz/fullscreen/fullscreen.c
+++ b/hw/darwin/quartz/fullscreen/fullscreen.c
@@ -25,8 +25,6 @@
* 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.3 2004/07/30 19:12:18 torrey 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"
diff --git a/hw/darwin/quartz/fullscreen/quartzCursor.c b/hw/darwin/quartz/fullscreen/quartzCursor.c
index 8abce2318..e2333e2ea 100644
--- a/hw/darwin/quartz/fullscreen/quartzCursor.c
+++ b/hw/darwin/quartz/fullscreen/quartzCursor.c
@@ -29,7 +29,6 @@
* 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"
diff --git a/hw/darwin/quartz/fullscreen/quartzCursor.h b/hw/darwin/quartz/fullscreen/quartzCursor.h
index efcc4435e..57fac68a5 100644
--- a/hw/darwin/quartz/fullscreen/quartzCursor.h
+++ b/hw/darwin/quartz/fullscreen/quartzCursor.h
@@ -29,7 +29,6 @@
* 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
diff --git a/hw/darwin/quartz/pseudoramiX.c b/hw/darwin/quartz/pseudoramiX.c
index 71093f5fb..a003daf43 100644
--- a/hw/darwin/quartz/pseudoramiX.c
+++ b/hw/darwin/quartz/pseudoramiX.c
@@ -32,7 +32,6 @@ 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"
@@ -171,12 +170,13 @@ static int ProcPseudoramiXGetState(ClientPtr client)
REQUEST(xPanoramiXGetStateReq);
WindowPtr pWin;
xPanoramiXGetStateReply rep;
- register int n;
+ register int n, rc;
REQUEST_SIZE_MATCH(xPanoramiXGetStateReq);
- pWin = LookupWindow (stuff->window, client);
- if (!pWin)
- return BadWindow;
+ rc = dixLookupWindow(&pWin, stuff->window, client, DixUnknownAccess);
+ if (rc != Success)
+ return rc;
+
rep.type = X_Reply;
rep.length = 0;
rep.sequenceNumber = client->sequence;
@@ -197,12 +197,13 @@ static int ProcPseudoramiXGetScreenCount(ClientPtr client)
REQUEST(xPanoramiXGetScreenCountReq);
WindowPtr pWin;
xPanoramiXGetScreenCountReply rep;
- register int n;
+ register int n, rc;
REQUEST_SIZE_MATCH(xPanoramiXGetScreenCountReq);
- pWin = LookupWindow (stuff->window, client);
- if (!pWin)
- return BadWindow;
+ rc = dixLookupWindow(&pWin, stuff->window, client, DixUnknownAccess);
+ if (rc != Success)
+ return rc;
+
rep.type = X_Reply;
rep.length = 0;
rep.sequenceNumber = client->sequence;
@@ -223,12 +224,13 @@ static int ProcPseudoramiXGetScreenSize(ClientPtr client)
REQUEST(xPanoramiXGetScreenSizeReq);
WindowPtr pWin;
xPanoramiXGetScreenSizeReply rep;
- register int n;
+ register int n, rc;
REQUEST_SIZE_MATCH(xPanoramiXGetScreenSizeReq);
- pWin = LookupWindow (stuff->window, client);
- if (!pWin)
- return BadWindow;
+ rc = dixLookupWindow(&pWin, stuff->window, client, DixUnknownAccess);
+ if (rc != Success)
+ return rc;
+
rep.type = X_Reply;
rep.length = 0;
rep.sequenceNumber = client->sequence;
diff --git a/hw/darwin/quartz/pseudoramiX.h b/hw/darwin/quartz/pseudoramiX.h
index c2943369d..df5010d1d 100644
--- a/hw/darwin/quartz/pseudoramiX.h
+++ b/hw/darwin/quartz/pseudoramiX.h
@@ -1,7 +1,6 @@
/*
* 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;
diff --git a/hw/darwin/quartz/quartz.c b/hw/darwin/quartz/quartz.c
index 22151198a..36a8bea08 100644
--- a/hw/darwin/quartz/quartz.c
+++ b/hw/darwin/quartz/quartz.c
@@ -1,4 +1,3 @@
-/* $XdotOrg: xc/programs/Xserver/hw/darwin/quartz/quartz.c,v 1.3 2004/07/30 19:12:17 torrey Exp $ */
/**************************************************************
*
* Quartz-specific support for the Darwin X Server
@@ -30,7 +29,6 @@
* 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"
diff --git a/hw/darwin/quartz/quartz.h b/hw/darwin/quartz/quartz.h
index cee43325d..f1b36b6b1 100644
--- a/hw/darwin/quartz/quartz.h
+++ b/hw/darwin/quartz/quartz.h
@@ -30,8 +30,6 @@
* 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.3 2004/07/30 19:12:17 torrey 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
diff --git a/hw/darwin/quartz/quartzAudio.c b/hw/darwin/quartz/quartzAudio.c
index 2106dfad4..b477b037b 100644
--- a/hw/darwin/quartz/quartzAudio.c
+++ b/hw/darwin/quartz/quartzAudio.c
@@ -35,7 +35,6 @@
* 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"
diff --git a/hw/darwin/quartz/quartzAudio.h b/hw/darwin/quartz/quartzAudio.h
index e20c21ad2..c406bbc2a 100644
--- a/hw/darwin/quartz/quartzAudio.h
+++ b/hw/darwin/quartz/quartzAudio.h
@@ -28,7 +28,6 @@
* 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
diff --git a/hw/darwin/quartz/quartzCommon.h b/hw/darwin/quartz/quartzCommon.h
index 949f724c1..f5dff662c 100644
--- a/hw/darwin/quartz/quartzCommon.h
+++ b/hw/darwin/quartz/quartzCommon.h
@@ -1,4 +1,3 @@
-/* $XdotOrg: xc/programs/Xserver/hw/darwin/quartz/quartzCommon.h,v 1.3 2004/07/30 19:12:17 torrey Exp $ */
/*
* quartzCommon.h
*
@@ -32,7 +31,6 @@
* 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
diff --git a/hw/darwin/quartz/quartzCursor.c b/hw/darwin/quartz/quartzCursor.c
index 711ce64f0..e2333e2ea 100644
--- a/hw/darwin/quartz/quartzCursor.c
+++ b/hw/darwin/quartz/quartzCursor.c
@@ -29,7 +29,6 @@
* 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"
diff --git a/hw/darwin/quartz/quartzCursor.h b/hw/darwin/quartz/quartzCursor.h
index 4db5531fa..56cc94d49 100644
--- a/hw/darwin/quartz/quartzCursor.h
+++ b/hw/darwin/quartz/quartzCursor.h
@@ -29,7 +29,6 @@
* 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
diff --git a/hw/darwin/quartz/quartzKeyboard.c b/hw/darwin/quartz/quartzKeyboard.c
index d2fe922d3..fc12522be 100644
--- a/hw/darwin/quartz/quartzKeyboard.c
+++ b/hw/darwin/quartz/quartzKeyboard.c
@@ -32,7 +32,6 @@
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"
diff --git a/hw/darwin/quartz/quartzPasteboard.c b/hw/darwin/quartz/quartzPasteboard.c
index 536dcc336..e92fe5c79 100644
--- a/hw/darwin/quartz/quartzPasteboard.c
+++ b/hw/darwin/quartz/quartzPasteboard.c
@@ -29,7 +29,6 @@
* 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"
diff --git a/hw/darwin/quartz/quartzPasteboard.h b/hw/darwin/quartz/quartzPasteboard.h
index 296c52c17..afcb6e587 100644
--- a/hw/darwin/quartz/quartzPasteboard.h
+++ b/hw/darwin/quartz/quartzPasteboard.h
@@ -29,7 +29,6 @@
* 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
@@ -42,4 +41,4 @@ char * QuartzReadCocoaPasteboard(void); // caller must free string
void QuartzWritePasteboard();
void QuartzWriteCocoaPasteboard(char *text);
-#endif /* _QUARTZPASTEBOARD_H */ \ No newline at end of file
+#endif /* _QUARTZPASTEBOARD_H */
diff --git a/hw/darwin/quartz/quartzStartup.c b/hw/darwin/quartz/quartzStartup.c
index cd58701b1..277e5935f 100644
--- a/hw/darwin/quartz/quartzStartup.c
+++ b/hw/darwin/quartz/quartzStartup.c
@@ -28,7 +28,6 @@
* 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>
@@ -288,4 +287,4 @@ int DarwinModeProcessArgument( int argc, char *argv[], int i )
}
return 0;
-} \ No newline at end of file
+}
diff --git a/hw/darwin/quartz/xpr/Xplugin.h b/hw/darwin/quartz/xpr/Xplugin.h
index e2e97b4c8..fb6842c87 100644
--- a/hw/darwin/quartz/xpr/Xplugin.h
+++ b/hw/darwin/quartz/xpr/Xplugin.h
@@ -30,7 +30,6 @@
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
diff --git a/hw/darwin/quartz/xpr/appledri.c b/hw/darwin/quartz/xpr/appledri.c
index d4cd27b8f..dd688cae3 100644
--- a/hw/darwin/quartz/xpr/appledri.c
+++ b/hw/darwin/quartz/xpr/appledri.c
@@ -1,4 +1,3 @@
-/* $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.
@@ -214,6 +213,7 @@ ProcAppleDRICreateSurface(
DrawablePtr pDrawable;
xp_surface_id sid;
unsigned int key[2];
+ int rc;
REQUEST(xAppleDRICreateSurfaceReq);
REQUEST_SIZE_MATCH(xAppleDRICreateSurfaceReq);
@@ -221,12 +221,10 @@ ProcAppleDRICreateSurface(
rep.length = 0;
rep.sequenceNumber = client->sequence;
- if (!(pDrawable = (DrawablePtr)SecurityLookupDrawable(
- (Drawable)stuff->drawable,
- client,
- SecurityReadAccess))) {
- return BadValue;
- }
+ rc = dixLookupDrawable(&pDrawable, stuff->drawable, client, 0,
+ DixReadAccess);
+ if (rc != Success)
+ return rc;
rep.key_0 = rep.key_1 = rep.uid = 0;
@@ -253,13 +251,12 @@ ProcAppleDRIDestroySurface(
REQUEST(xAppleDRIDestroySurfaceReq);
DrawablePtr pDrawable;
REQUEST_SIZE_MATCH(xAppleDRIDestroySurfaceReq);
+ int rc;
- if (!(pDrawable = (DrawablePtr)SecurityLookupDrawable(
- (Drawable)stuff->drawable,
- client,
- SecurityReadAccess))) {
- return BadValue;
- }
+ rc = dixLookupDrawable(&pDrawable, stuff->drawable, client, 0,
+ DixReadAccess);
+ if (rc != Success)
+ return rc;
if (!DRIDestroySurface( screenInfo.screens[stuff->screen],
(Drawable)stuff->drawable,
diff --git a/hw/darwin/quartz/xpr/dri.c b/hw/darwin/quartz/xpr/dri.c
index e8e49f965..9aeaaa588 100644
--- a/hw/darwin/quartz/xpr/dri.c
+++ b/hw/darwin/quartz/xpr/dri.c
@@ -1,4 +1,3 @@
-/* $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.
@@ -35,13 +34,8 @@ SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
*
*/
-#ifdef XFree86LOADER
-#include "xf86.h"
-#include "xf86_ansic.h"
-#else
#include <sys/time.h>
#include <unistd.h>
-#endif
#define NEED_REPLIES
#define NEED_EVENTS
diff --git a/hw/darwin/quartz/xpr/dri.h b/hw/darwin/quartz/xpr/dri.h
index f826167f6..cf2638a9f 100644
--- a/hw/darwin/quartz/xpr/dri.h
+++ b/hw/darwin/quartz/xpr/dri.h
@@ -1,4 +1,3 @@
-/* $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.
diff --git a/hw/darwin/quartz/xpr/dristruct.h b/hw/darwin/quartz/xpr/dristruct.h
index 0df8f1890..9a3d01c9b 100644
--- a/hw/darwin/quartz/xpr/dristruct.h
+++ b/hw/darwin/quartz/xpr/dristruct.h
@@ -1,4 +1,3 @@
-/* $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.
diff --git a/hw/darwin/quartz/xpr/x-hash.c b/hw/darwin/quartz/xpr/x-hash.c
index feffb1b9e..a7024b2da 100644
--- a/hw/darwin/quartz/xpr/x-hash.c
+++ b/hw/darwin/quartz/xpr/x-hash.c
@@ -27,7 +27,6 @@
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"
diff --git a/hw/darwin/quartz/xpr/x-hash.h b/hw/darwin/quartz/xpr/x-hash.h
index 97d4cc40c..5d4f7f93a 100644
--- a/hw/darwin/quartz/xpr/x-hash.h
+++ b/hw/darwin/quartz/xpr/x-hash.h
@@ -27,7 +27,6 @@
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
diff --git a/hw/darwin/quartz/xpr/x-list.c b/hw/darwin/quartz/xpr/x-list.c
index c2f1db161..b9f23928b 100644
--- a/hw/darwin/quartz/xpr/x-list.c
+++ b/hw/darwin/quartz/xpr/x-list.c
@@ -27,7 +27,6 @@
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>
diff --git a/hw/darwin/quartz/xpr/x-list.h b/hw/darwin/quartz/xpr/x-list.h
index 3faed5330..bd55a53d0 100644
--- a/hw/darwin/quartz/xpr/x-list.h
+++ b/hw/darwin/quartz/xpr/x-list.h
@@ -27,7 +27,6 @@
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
diff --git a/hw/darwin/quartz/xpr/xpr.h b/hw/darwin/quartz/xpr/xpr.h
index 5b881c725..73a88c03d 100644
--- a/hw/darwin/quartz/xpr/xpr.h
+++ b/hw/darwin/quartz/xpr/xpr.h
@@ -26,8 +26,6 @@
* 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.2 2004/04/23 19:16:52 eich 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
diff --git a/hw/darwin/quartz/xpr/xprAppleWM.c b/hw/darwin/quartz/xpr/xprAppleWM.c
index 2db6a2432..21746f6e9 100644
--- a/hw/darwin/quartz/xpr/xprAppleWM.c
+++ b/hw/darwin/quartz/xpr/xprAppleWM.c
@@ -27,7 +27,6 @@
* 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"
diff --git a/hw/darwin/quartz/xpr/xprCursor.c b/hw/darwin/quartz/xpr/xprCursor.c
index ee06043df..cb949dadc 100644
--- a/hw/darwin/quartz/xpr/xprCursor.c
+++ b/hw/darwin/quartz/xpr/xprCursor.c
@@ -30,7 +30,6 @@
* 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"
diff --git a/hw/darwin/quartz/xpr/xprFrame.c b/hw/darwin/quartz/xpr/xprFrame.c
index 0dff7c56d..ed02d4b62 100644
--- a/hw/darwin/quartz/xpr/xprFrame.c
+++ b/hw/darwin/quartz/xpr/xprFrame.c
@@ -27,8 +27,6 @@
* 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.4 2005/04/20 12:25:20 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"
diff --git a/hw/darwin/quartz/xpr/xprScreen.c b/hw/darwin/quartz/xpr/xprScreen.c
index eaad13f7b..1755ca6f7 100644
--- a/hw/darwin/quartz/xpr/xprScreen.c
+++ b/hw/darwin/quartz/xpr/xprScreen.c
@@ -1,4 +1,3 @@
-/* $XdotOrg: xc/programs/Xserver/hw/darwin/quartz/xpr/xprScreen.c,v 1.5 2004/09/18 00:38:30 torrey Exp $ */
/*
* Xplugin rootless implementation screen functions
*/
@@ -28,7 +27,6 @@
* 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"
diff --git a/hw/darwin/utils/dumpkeymap.c b/hw/darwin/utils/dumpkeymap.c
index 8f3340b15..d2eeca5c2 100644
--- a/hw/darwin/utils/dumpkeymap.c
+++ b/hw/darwin/utils/dumpkeymap.c
@@ -1,4 +1,3 @@
-// $XFree86: dumpkeymap.c,v 1.3 2000/12/05 21:18:34 dawes Exp $
//=============================================================================
//
// Copyright (C) 1999,2000 by Eric Sunshine <sunshine@sunshineco.com>
diff --git a/hw/dmx/Makefile.am b/hw/dmx/Makefile.am
index 93abd7a0e..89136b904 100644
--- a/hw/dmx/Makefile.am
+++ b/hw/dmx/Makefile.am
@@ -16,6 +16,9 @@ GLX_INCS = -I$(top_srcdir)/hw/xfree86/dixmods/extmod \
GLX_DEFS = @GL_CFLAGS@
endif
+# It's essential that fbcmap.c be compiled with this flag for DMX to work!!
+DMX_CFLAGS = -DXFree86Server=1
+
if BUILDDOCS
SUBDIRS += doc
endif
@@ -81,10 +84,12 @@ Xdmx_LDADD = $(XORG_CORE_LIBS) \
config/libdmxconfig.a \
@DMXMODULES_LIBS@
-Xdmx_CFLAGS = @SERVER_DEFINES@ \
+Xdmx_CFLAGS = \
-DHAVE_DMX_CONFIG_H \
+ $(DIX_CFLAGS) \
$(GLX_INCS) \
$(GLX_DEFS) \
+ $(DMX_CFLAGS) \
@DMXMODULES_CFLAGS@
# Man page
diff --git a/hw/dmx/config/Makefile.am b/hw/dmx/config/Makefile.am
index 7376ec23a..c31e04942 100644
--- a/hw/dmx/config/Makefile.am
+++ b/hw/dmx/config/Makefile.am
@@ -27,7 +27,7 @@ endif
AM_YFLAGS = -d
AM_CFLAGS = \
- @SERVER_DEFINES@ \
+ $(DIX_CFLAGS) \
-I$(top_srcdir)/hw/dmx \
$(GLX_INCS) \
-DHAVE_DMX_CONFIG_H \
diff --git a/hw/dmx/dmx-config.h b/hw/dmx/dmx-config.h
index 11e8fb8e5..9647448dc 100644
--- a/hw/dmx/dmx-config.h
+++ b/hw/dmx/dmx-config.h
@@ -93,6 +93,5 @@
#undef DAMAGE
#undef COMPOSITE
#undef FONTCACHE
-#undef XFree86LOADER
#endif /* DMX_CONFIG_H */
diff --git a/hw/dmx/dmx.c b/hw/dmx/dmx.c
index 75623e696..b7c81ee57 100644
--- a/hw/dmx/dmx.c
+++ b/hw/dmx/dmx.c
@@ -282,12 +282,12 @@ static int ProcDMXForceWindowCreation(ClientPtr client)
int i;
if (!(win = SecurityLookupIDByType(client, stuff->window, XRT_WINDOW,
- SecurityReadAccess)))
+ DixReadAccess)))
return -1; /* BadWindow */
FOR_NSCREENS(i) {
- if (!(pWin = SecurityLookupWindow(win->info[i].id, client,
- SecurityReadAccess)))
+ if (Success != dixLookupWindow(&pWin, win->info[i].id, client,
+ DixReadAccess))
return -1; /* BadWindow */
dmxForceWindowCreation(pWin);
@@ -296,8 +296,8 @@ static int ProcDMXForceWindowCreation(ClientPtr client)
}
#endif
- if (!(pWin = SecurityLookupWindow(stuff->window, client,
- SecurityReadAccess)))
+ if (Success != dixLookupWindow(&pWin, stuff->window, client,
+ DixReadAccess))
return -1; /* BadWindow */
dmxForceWindowCreation(pWin);
@@ -556,12 +556,12 @@ static int dmxPopulatePanoramiX(ClientPtr client, Window window,
DMXWindowAttributesRec attr;
if (!(win = SecurityLookupIDByType(client, window, XRT_WINDOW,
- SecurityReadAccess)))
+ DixReadAccess)))
return -1; /* BadWindow */
FOR_NSCREENS(i) {
- if (!(pWin = SecurityLookupWindow(win->info[i].id, client,
- SecurityReadAccess)))
+ if (Success != dixLookupWindow(&pWin, win->info[i].id, client,
+ DixReadAccess))
return -1; /* BadWindow */
if (dmxGetWindowAttributes(pWin, &attr)) {
screens[count] = attr.screen;
@@ -587,7 +587,7 @@ static int dmxPopulate(ClientPtr client, Window window, CARD32 *screens,
pos, vis);
#endif
- if (!(pWin = SecurityLookupWindow(window, client, SecurityReadAccess)))
+ if (Success != dixLookupWindow(&pWin, window, client, DixReadAccess))
return -1; /* BadWindow */
dmxGetWindowAttributes(pWin, &attr);
diff --git a/hw/dmx/dmx.h b/hw/dmx/dmx.h
index 18e75de90..becb2da38 100644
--- a/hw/dmx/dmx.h
+++ b/hw/dmx/dmx.h
@@ -51,6 +51,10 @@
#ifndef DMX_H
#define DMX_H
+#if HAVE_DMX_CONFIG_H
+#include <dmx-config.h>
+#endif
+
#include "gcstruct.h"
/* Handle client-side include files in one place. */
diff --git a/hw/dmx/dmxcmap.c b/hw/dmx/dmxcmap.c
index f46dc5411..9a9781f53 100644
--- a/hw/dmx/dmxcmap.c
+++ b/hw/dmx/dmxcmap.c
@@ -40,13 +40,14 @@
#endif
#include "dmx.h"
+#include "dmxlog.h"
#include "dmxsync.h"
#include "dmxcmap.h"
#include "dmxvisual.h"
#include "micmap.h"
-static int dmxInitColormapPrivateFunc(ColormapPtr pColormap)
+static int dmxInitColormapPrivateFunc(ColormapPtr pColormap, int index)
{
return TRUE;
}
@@ -83,12 +84,18 @@ Bool dmxBECreateColormap(ColormapPtr 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);
+ if (visual) {
+ pCmapPriv->cmap = XCreateColormap(dmxScreen->beDisplay,
+ dmxScreen->scrnWin,
+ visual,
+ (pVisual->class & DynamicClass ?
+ AllocAll : AllocNone));
+ return (pCmapPriv->cmap != 0);
+ }
+ else {
+ dmxLog(dmxWarning, "dmxBECreateColormap: No visual found\n");
+ return 0;
+ }
}
/** Create colormap on back-end server associated with \a pColormap's
diff --git a/hw/dmx/dmxcursor.c b/hw/dmx/dmxcursor.c
index a49fc9f43..e74a05215 100644
--- a/hw/dmx/dmxcursor.c
+++ b/hw/dmx/dmxcursor.c
@@ -664,8 +664,8 @@ static Bool _dmxUnrealizeCursor(ScreenPtr pScreen, CursorPtr pCursor)
{
DMXScreenInfo *dmxScreen = &dmxScreens[pScreen->myNum];
- DMXDBG3("_dmxUnrealizeCursor(%d,%p) %p\n",
- pScreen->myNum, pCursor, pCursorPriv);
+ DMXDBG2("_dmxUnrealizeCursor(%d,%p)\n",
+ pScreen->myNum, pCursor);
if (dmxScreen->beDisplay) {
if (dmxBEFreeCursor(pScreen, pCursor))
diff --git a/hw/dmx/dmxextension.c b/hw/dmx/dmxextension.c
index 24f796954..c12973bd5 100644
--- a/hw/dmx/dmxextension.c
+++ b/hw/dmx/dmxextension.c
@@ -374,9 +374,6 @@ void dmxUpdateScreenResources(ScreenPtr pScreen, int x, int y, int w, int h)
#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,
@@ -1059,6 +1056,116 @@ static Bool dmxCompareScreens(DMXScreenInfo *new, DMXScreenInfo *old)
return TRUE;
}
+#ifdef RENDER
+/** Restore Render's picture */
+static void dmxBERestoreRenderPict(pointer value, XID id, pointer n)
+{
+ PicturePtr pPicture = value; /* The picture */
+ DrawablePtr pDraw = pPicture->pDrawable; /* The picture's drawable */
+ int scrnNum = (int)n;
+
+ if (pDraw->pScreen->myNum != scrnNum) {
+ /* Picture not on the screen we are restoring*/
+ return;
+ }
+
+ if (pDraw->type == DRAWABLE_PIXMAP) {
+ PixmapPtr pPixmap = (PixmapPtr)pDraw;
+
+ /* Create and restore the pixmap drawable */
+ dmxBECreatePixmap(pPixmap);
+ dmxBERestorePixmap(pPixmap);
+ }
+
+ dmxBECreatePicture(pPicture);
+}
+
+/** Restore Render's glyphs */
+static void dmxBERestoreRenderGlyph(pointer value, XID id, pointer n)
+{
+ GlyphSetPtr glyphSet = value;
+ int scrnNum = (int)n;
+ dmxGlyphPrivPtr glyphPriv = DMX_GET_GLYPH_PRIV(glyphSet);
+ DMXScreenInfo *dmxScreen = &dmxScreens[scrnNum];
+ GlyphRefPtr table;
+ char *images;
+ Glyph *gids;
+ XGlyphInfo *glyphs;
+ char *pos;
+ int beret;
+ int len_images = 0;
+ int i;
+ int ctr;
+
+ if (glyphPriv->glyphSets[scrnNum]) {
+ /* Only restore glyphs on the screen we are attaching */
+ return;
+ }
+
+ /* First we must create the glyph set on the backend. */
+ if ((beret = dmxBECreateGlyphSet(scrnNum, glyphSet)) != Success) {
+ dmxLog(dmxWarning,
+ "\tdmxBERestoreRenderGlyph failed to create glyphset!\n");
+ return;
+ }
+
+ /* Now for the complex part, restore the glyph data */
+ table = glyphSet->hash.table;
+
+ /* We need to know how much memory to allocate for this part */
+ for (i = 0; i < glyphSet->hash.hashSet->size; i++) {
+ GlyphRefPtr gr = &table[i];
+ GlyphPtr gl = gr->glyph;
+
+ if (!gl || gl == DeletedGlyph) continue;
+ len_images += gl->size - sizeof(gl->info);
+ }
+
+ /* Now allocate the memory we need */
+ images = ALLOCATE_LOCAL(len_images*sizeof(char));
+ gids = ALLOCATE_LOCAL(glyphSet->hash.tableEntries*sizeof(Glyph));
+ glyphs = ALLOCATE_LOCAL(glyphSet->hash.tableEntries*sizeof(XGlyphInfo));
+
+ memset(images, 0, len_images * sizeof(char));
+ pos = images;
+ ctr = 0;
+
+ /* Fill the allocated memory with the proper data */
+ for (i = 0; i < glyphSet->hash.hashSet->size; i++) {
+ GlyphRefPtr gr = &table[i];
+ GlyphPtr gl = gr->glyph;
+
+ if (!gl || gl == DeletedGlyph) continue;
+
+ /* First lets put the data into gids */
+ gids[ctr] = gr->signature;
+
+ /* Next do the glyphs data structures */
+ glyphs[ctr].width = gl->info.width;
+ glyphs[ctr].height = gl->info.height;
+ glyphs[ctr].x = gl->info.x;
+ glyphs[ctr].y = gl->info.y;
+ glyphs[ctr].xOff = gl->info.xOff;
+ glyphs[ctr].yOff = gl->info.yOff;
+
+ /* Copy the images from the DIX's data into the buffer */
+ memcpy(pos, gl+1, gl->size - sizeof(gl->info));
+ pos += gl->size - sizeof(gl->info);
+ ctr++;
+ }
+
+ /* Now restore the glyph data */
+ XRenderAddGlyphs(dmxScreen->beDisplay, glyphPriv->glyphSets[scrnNum],
+ gids,glyphs, glyphSet->hash.tableEntries, images,
+ len_images);
+
+ /* Clean up */
+ DEALLOCATE_LOCAL(len_images);
+ DEALLOCATE_LOCAL(gids);
+ DEALLOCATE_LOCAL(glyphs);
+}
+#endif
+
/** Reattach previously detached back-end screen. */
int dmxAttachScreen(int idx, DMXScreenAttributesPtr attr)
{
@@ -1177,6 +1284,20 @@ int dmxAttachScreen(int idx, DMXScreenAttributesPtr attr)
/* Create window hierarchy (top down) */
dmxBECreateWindowTree(idx);
+#ifdef RENDER
+ /* Restore the picture state for RENDER */
+ for (i = currentMaxClients; --i >= 0; )
+ if (clients[i])
+ FindClientResourcesByType(clients[i],PictureType,
+ dmxBERestoreRenderPict,(pointer)idx);
+
+ /* Restore the glyph state for RENDER */
+ for (i = currentMaxClients; --i >= 0; )
+ if (clients[i])
+ FindClientResourcesByType(clients[i],GlyphSetType,
+ dmxBERestoreRenderGlyph,(pointer)idx);
+#endif
+
/* Refresh screen by generating exposure events for all windows */
dmxForceExposures(idx);
@@ -1365,8 +1486,15 @@ static void dmxBEDestroyResources(pointer value, XID id, RESTYPE type,
#ifdef RENDER
} else if ((type & TypeMask) == (PictureType & TypeMask)) {
PicturePtr pPict = value;
- if (pPict->pDrawable->pScreen->myNum == scrnNum)
+ if (pPict->pDrawable->pScreen->myNum == scrnNum) {
+ /* Free the pixmaps on the backend if needed */
+ if (pPict->pDrawable->type == DRAWABLE_PIXMAP) {
+ PixmapPtr pPixmap = (PixmapPtr)(pPict->pDrawable);
+ dmxBESavePixmap(pPixmap);
+ dmxBEFreePixmap(pPixmap);
+ }
dmxBEFreePicture((PicturePtr)value);
+ }
} else if ((type & TypeMask) == (GlyphSetType & TypeMask)) {
dmxBEFreeGlyphSet(pScreen, (GlyphSetPtr)value);
#endif
diff --git a/hw/dmx/dmxinit.c b/hw/dmx/dmxinit.c
index ddc4d2b04..1d3689c40 100644
--- a/hw/dmx/dmxinit.c
+++ b/hw/dmx/dmxinit.c
@@ -78,9 +78,6 @@ extern void GlxSetVisualConfigs(
);
#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;
@@ -627,7 +624,7 @@ void InitOutput(ScreenInfo *pScreenInfo, int argc, char *argv[])
}
/* Make sure that the command-line arguments are sane. */
- if (dmxAddRemoveScreens && (!noRenderExtension || dmxGLXProxy)) {
+ if (dmxAddRemoveScreens && 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. */
@@ -1049,14 +1046,3 @@ void ddxUseMsg(void)
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/hw/dmx/dmxinput.c b/hw/dmx/dmxinput.c
index 7c376dee4..37f458356 100644
--- a/hw/dmx/dmxinput.c
+++ b/hw/dmx/dmxinput.c
@@ -53,7 +53,7 @@
/** 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)
+Bool LegalModifier(unsigned int key, DeviceIntPtr pDev)
{
return TRUE;
}
diff --git a/hw/dmx/dmxpict.c b/hw/dmx/dmxpict.c
index 9a76a6696..0f1782e51 100644
--- a/hw/dmx/dmxpict.c
+++ b/hw/dmx/dmxpict.c
@@ -223,6 +223,36 @@ Bool dmxBEFreeGlyphSet(ScreenPtr pScreen, GlyphSetPtr glyphSet)
return FALSE;
}
+/** Create \a glyphSet on the backend screen number \a idx. */
+int dmxBECreateGlyphSet(int idx, GlyphSetPtr glyphSet)
+{
+ XRenderPictFormat *pFormat;
+ DMXScreenInfo *dmxScreen = &dmxScreens[idx];
+ dmxGlyphPrivPtr glyphPriv = DMX_GET_GLYPH_PRIV(glyphSet);
+ PictFormatPtr pFmt = glyphSet->format;
+ int (*oldErrorHandler)(Display *, XErrorEvent *);
+
+ pFormat = dmxFindFormat(dmxScreen, pFmt);
+ if (!pFormat) {
+ return BadMatch;
+ }
+
+ dmxGlyphLastError = 0;
+ oldErrorHandler = XSetErrorHandler(dmxGlyphErrorHandler);
+
+ /* Catch when this fails */
+ glyphPriv->glyphSets[idx]
+ = XRenderCreateGlyphSet(dmxScreen->beDisplay, pFormat);
+
+ XSetErrorHandler(oldErrorHandler);
+
+ if (dmxGlyphLastError) {
+ return dmxGlyphLastError;
+ }
+
+ return Success;
+}
+
/** 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
@@ -235,58 +265,32 @@ static int dmxProcRenderCreateGlyphSet(ClientPtr client)
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);
+ DixDestroyAccess);
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];
+ int beret;
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) {
+ if ((beret = dmxBECreateGlyphSet(i, glyphSet)) != Success) {
int j;
/* Free the glyph sets we've allocated thus far */
@@ -296,12 +300,9 @@ static int dmxProcRenderCreateGlyphSet(ClientPtr client)
/* Free the resource created by render */
FreeResource(stuff->gsid, RT_NONE);
- ret = dmxGlyphLastError;
- break;
+ return beret;
}
}
-
- XSetErrorHandler(oldErrorHandler);
}
return ret;
@@ -315,7 +316,7 @@ static int dmxProcRenderFreeGlyphSet(ClientPtr client)
REQUEST_SIZE_MATCH(xRenderFreeGlyphSetReq);
glyphSet = SecurityLookupIDByType(client, stuff->glyphset, GlyphSetType,
- SecurityDestroyAccess);
+ DixDestroyAccess);
if (glyphSet && glyphSet->refcnt == 1) {
dmxGlyphPrivPtr glyphPriv = DMX_GET_GLYPH_PRIV(glyphSet);
@@ -358,7 +359,7 @@ static int dmxProcRenderAddGlyphs(ClientPtr client)
int nbytes;
glyphSet = SecurityLookupIDByType(client, stuff->glyphset,
- GlyphSetType, SecurityReadAccess);
+ GlyphSetType, DixReadAccess);
glyphPriv = DMX_GET_GLYPH_PRIV(glyphSet);
nglyphs = stuff->nglyphs;
@@ -401,7 +402,7 @@ static int dmxProcRenderFreeGlyphs(ClientPtr client)
REQUEST_AT_LEAST_SIZE(xRenderFreeGlyphsReq);
glyphSet = SecurityLookupIDByType(client, stuff->glyphset, GlyphSetType,
- SecurityWriteAccess);
+ DixWriteAccess);
if (glyphSet) {
dmxGlyphPrivPtr glyphPriv = DMX_GET_GLYPH_PRIV(glyphSet);
@@ -473,13 +474,13 @@ static int dmxProcRenderCompositeGlyphs(ClientPtr client)
dmxGlyphPrivPtr glyphPriv;
pSrc = SecurityLookupIDByType(client, stuff->src, PictureType,
- SecurityReadAccess);
+ DixReadAccess);
pSrcPriv = DMX_GET_PICT_PRIV(pSrc);
if (!pSrcPriv->pict)
return ret;
pDst = SecurityLookupIDByType(client, stuff->dst, PictureType,
- SecurityWriteAccess);
+ DixWriteAccess);
pDstPriv = DMX_GET_PICT_PRIV(pDst);
if (!pDstPriv->pict)
return ret;
@@ -496,7 +497,7 @@ static int dmxProcRenderCompositeGlyphs(ClientPtr client)
if (stuff->maskFormat)
pFmt = SecurityLookupIDByType(client, stuff->maskFormat,
- PictFormatType, SecurityReadAccess);
+ PictFormatType, DixReadAccess);
else
pFmt = NULL;
@@ -547,7 +548,7 @@ static int dmxProcRenderCompositeGlyphs(ClientPtr client)
curElt = elts;
glyphSet = SecurityLookupIDByType(client, stuff->glyphset,
- GlyphSetType, SecurityReadAccess);
+ GlyphSetType, DixReadAccess);
glyphPriv = DMX_GET_GLYPH_PRIV(glyphSet);
while (buffer + sizeof(xGlyphElt) < end) {
@@ -558,7 +559,7 @@ static int dmxProcRenderCompositeGlyphs(ClientPtr client)
glyphSet = SecurityLookupIDByType(client,
*((CARD32 *)buffer),
GlyphSetType,
- SecurityReadAccess);
+ DixReadAccess);
glyphPriv = DMX_GET_GLYPH_PRIV(glyphSet);
buffer += 4;
} else {
@@ -622,7 +623,7 @@ static int dmxProcRenderSetPictureTransform(ClientPtr client)
REQUEST(xRenderSetPictureTransformReq);
REQUEST_SIZE_MATCH(xRenderSetPictureTransformReq);
- VERIFY_PICTURE(pPicture, stuff->picture, client, SecurityWriteAccess,
+ VERIFY_PICTURE(pPicture, stuff->picture, client, DixWriteAccess,
RenderErrBase + BadPicture);
/* For the following to work with PanoramiX, it assumes that Render
@@ -662,8 +663,8 @@ static int dmxProcRenderSetPictureFilter(ClientPtr client)
int nparams;
REQUEST(xRenderSetPictureFilterReq);
- REQUEST_SIZE_MATCH(xRenderSetPictureFilterReq);
- VERIFY_PICTURE(pPicture, stuff->picture, client, SecurityWriteAccess,
+ REQUEST_AT_LEAST_SIZE(xRenderSetPictureFilterReq);
+ VERIFY_PICTURE(pPicture, stuff->picture, client, DixWriteAccess,
RenderErrBase + BadPicture);
/* For the following to work with PanoramiX, it assumes that Render
@@ -753,6 +754,20 @@ void dmxCreatePictureList(WindowPtr pWindow)
}
}
+/** Create \a pPicture on the backend. */
+int dmxBECreatePicture(PicturePtr pPicture)
+{
+ dmxPictPrivPtr pPictPriv = DMX_GET_PICT_PRIV(pPicture);
+
+ /* Create picutre on BE */
+ pPictPriv->pict = dmxDoCreatePicture(pPicture);
+
+ /* Flush changes to the backend server */
+ dmxValidatePicture(pPicture, (1 << (CPLastBit+1)) - 1);
+
+ return Success;
+}
+
/** Create a picture. This function handles the CreatePicture
* unwrapping/wrapping and calls dmxDoCreatePicture to actually create
* the picture on the appropriate screen. */
@@ -853,7 +868,11 @@ int dmxChangePictureClip(PicturePtr pPicture, int clipType,
/* The clip has already been changed into a region by the mi
* routine called above.
*/
- if (pPicture->clientClip) {
+ if (clipType == CT_NONE) {
+ /* Disable clipping, show all */
+ XFixesSetPictureClipRegion(dmxScreen->beDisplay,
+ pPictPriv->pict, 0, 0, None);
+ } else if (pPicture->clientClip) {
RegionPtr pClip = pPicture->clientClip;
BoxPtr pBox = REGION_RECTS(pClip);
int nBox = REGION_NUM_RECTS(pClip);
diff --git a/hw/dmx/dmxpict.h b/hw/dmx/dmxpict.h
index 2ca04ed87..fe2a65959 100644
--- a/hw/dmx/dmxpict.h
+++ b/hw/dmx/dmxpict.h
@@ -112,7 +112,9 @@ extern void dmxTriFan(CARD8 op,
INT16 xSrc, INT16 ySrc,
int npoint, xPointFixed *points);
+extern int dmxBECreateGlyphSet(int idx, GlyphSetPtr glyphSet);
extern Bool dmxBEFreeGlyphSet(ScreenPtr pScreen, GlyphSetPtr glyphSet);
+extern int dmxBECreatePicture(PicturePtr pPicture);
extern Bool dmxBEFreePicture(PicturePtr pPicture);
extern int dmxPictPrivateIndex; /**< Index for picture private data */
diff --git a/hw/dmx/glxProxy/Makefile.am b/hw/dmx/glxProxy/Makefile.am
index a798647cc..1fbc8d764 100644
--- a/hw/dmx/glxProxy/Makefile.am
+++ b/hw/dmx/glxProxy/Makefile.am
@@ -31,8 +31,8 @@ libglxproxy_a_SOURCES = compsize.c \
renderpixswap.c \
unpack.h
-AM_CFLAGS = @SERVER_DEFINES@ \
- @MODULE_DEFINES@ \
+AM_CFLAGS = \
+ $(DIX_CFLAGS) \
-I$(top_srcdir)/hw/dmx \
-I$(top_srcdir)/include \
-I$(top_srcdir)/GL/include \
diff --git a/hw/dmx/glxProxy/compsize.c b/hw/dmx/glxProxy/compsize.c
index cffa1af8d..29669e318 100644
--- a/hw/dmx/glxProxy/compsize.c
+++ b/hw/dmx/glxProxy/compsize.c
@@ -1,4 +1,3 @@
-/* $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
diff --git a/hw/dmx/glxProxy/g_disptab.c b/hw/dmx/glxProxy/g_disptab.c
index f507a874f..124a65511 100644
--- a/hw/dmx/glxProxy/g_disptab.c
+++ b/hw/dmx/glxProxy/g_disptab.c
@@ -1,4 +1,3 @@
-/* $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
diff --git a/hw/dmx/glxProxy/g_disptab.h b/hw/dmx/glxProxy/g_disptab.h
index 0b6d47be7..f02e4f59c 100644
--- a/hw/dmx/glxProxy/g_disptab.h
+++ b/hw/dmx/glxProxy/g_disptab.h
@@ -1,4 +1,3 @@
-/* $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_
diff --git a/hw/dmx/glxProxy/global.c b/hw/dmx/glxProxy/global.c
index 960021a2b..0e6efeff7 100644
--- a/hw/dmx/glxProxy/global.c
+++ b/hw/dmx/glxProxy/global.c
@@ -1,4 +1,3 @@
-/* $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
diff --git a/hw/dmx/glxProxy/glxcmds.c b/hw/dmx/glxProxy/glxcmds.c
index d7ea70728..6771cf1de 100644
--- a/hw/dmx/glxProxy/glxcmds.c
+++ b/hw/dmx/glxProxy/glxcmds.c
@@ -1,4 +1,3 @@
-/* $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
@@ -59,7 +58,6 @@
#include "glxutil.h"
#include "glxext.h"
#include "unpack.h"
-#include "GL/glx_ansic.h"
#include "GL/glxproto.h"
#include "glxvendor.h"
@@ -158,7 +156,7 @@ static int CreateContext(__GLXclientState *cl,
if (!glxc) {
return BadAlloc;
}
- __glXMemset(glxc, 0, sizeof(__GLXcontext));
+ memset(glxc, 0, sizeof(__GLXcontext));
pScreen = screenInfo.screens[screen];
pGlxScreen = &__glXActiveScreens[screen];
@@ -432,9 +430,10 @@ int __glXBindSwapBarrierSGIX(__GLXclientState *cl, GLbyte *pc)
DrawablePtr pDraw;
__GLXpixmap *pGlxPixmap = NULL;
__glXWindow *pGlxWindow = NULL;
+ int rc;
- pDraw = (DrawablePtr) LookupDrawable(req->drawable, client);
- if (!pDraw) {
+ rc = dixLookupDrawable(&pDraw, req->drawable, client, 0, DixUnknownAccess);
+ if (rc != Success) {
pGlxPixmap = (__GLXpixmap *) LookupIDByType(req->drawable,
__glXPixmapRes);
if (pGlxPixmap) pDraw = pGlxPixmap->pDraw;
@@ -461,9 +460,10 @@ int __glXJoinSwapGroupSGIX(__GLXclientState *cl, GLbyte *pc)
DrawablePtr pDraw, pMember = NULL;
__GLXpixmap *pGlxPixmap = NULL;
__glXWindow *pGlxWindow = NULL;
+ int rc;
- pDraw = (DrawablePtr) LookupDrawable(req->drawable, client);
- if (!pDraw) {
+ rc = dixLookupDrawable(&pDraw, req->drawable, client, 0, DixUnknownAccess);
+ if (rc != Success) {
pGlxPixmap = (__GLXpixmap *) LookupIDByType(req->drawable,
__glXPixmapRes);
if (pGlxPixmap) pDraw = pGlxPixmap->pDraw;
@@ -481,8 +481,9 @@ int __glXJoinSwapGroupSGIX(__GLXclientState *cl, GLbyte *pc)
}
if (req->member != None) {
- pMember = (DrawablePtr) LookupDrawable(req->member, client);
- if (!pMember) {
+ rc = dixLookupDrawable(&pMember, req->member, client, 0,
+ DixUnknownAccess);
+ if (rc != Success) {
pGlxPixmap = (__GLXpixmap *) LookupIDByType(req->member,
__glXPixmapRes);
if (pGlxPixmap) pMember = pGlxPixmap->pDraw;
@@ -610,7 +611,7 @@ static int AddCurrentContext(__GLXclientState *cl, __GLXcontext *glxc, DrawableP
cl->currentContexts = table;
cl->numCurrentContexts++;
- __glXMemset(cl->be_currentCTag + num*screenInfo.numScreens, 0,
+ memset(cl->be_currentCTag + num*screenInfo.numScreens, 0,
screenInfo.numScreens * sizeof(GLXContextTag));
return num+1;
@@ -736,7 +737,7 @@ static int MakeCurrent(__GLXclientState *cl,
#endif
int from_screen = 0;
int to_screen = 0;
- int s;
+ int s, rc;
/*
** If one is None and the other isn't, it's a bad match.
@@ -780,8 +781,8 @@ static int MakeCurrent(__GLXclientState *cl,
}
if (drawId != None) {
- pDraw = (DrawablePtr) LookupDrawable(drawId, client);
- if (pDraw) {
+ rc = dixLookupDrawable(&pDraw, drawId, client, 0, DixUnknownAccess);
+ if (rc == Success) {
if (pDraw->type == DRAWABLE_WINDOW) {
/*
** Drawable is an X Window.
@@ -887,8 +888,8 @@ static int MakeCurrent(__GLXclientState *cl,
}
if (readId != None && readId != drawId ) {
- pReadDraw = (DrawablePtr) LookupDrawable(readId, client);
- if (pReadDraw) {
+ rc = dixLookupDrawable(&pReadDraw, readId, client, 0,DixUnknownAccess);
+ if (rc == Success) {
if (pReadDraw->type == DRAWABLE_WINDOW) {
/*
** Drawable is an X Window.
@@ -1107,13 +1108,13 @@ static int MakeCurrent(__GLXclientState *cl,
if (pDraw && new_reply.writeType != GLX_PBUFFER_TYPE) {
pXinDraw = (PanoramiXRes *)
- SecurityLookupIDByClass(client, pDraw->id, XRC_DRAWABLE, SecurityReadAccess);
+ SecurityLookupIDByClass(client, pDraw->id, XRC_DRAWABLE, DixReadAccess);
}
if (pReadDraw && pReadDraw != pDraw &&
new_reply.readType != GLX_PBUFFER_TYPE) {
pXinReadDraw = (PanoramiXRes *)
- SecurityLookupIDByClass(client, pReadDraw->id, XRC_DRAWABLE, SecurityReadAccess);
+ SecurityLookupIDByClass(client, pReadDraw->id, XRC_DRAWABLE, DixReadAccess);
}
else {
pXinReadDraw = pXinDraw;
@@ -1139,9 +1140,7 @@ static int MakeCurrent(__GLXclientState *cl,
}
#ifdef PANORAMIX
else if (pXinDraw) {
- pWin = (WindowPtr)SecurityLookupWindow(pXinDraw->info[s].id,
- client,
- SecurityReadAccess);
+ dixLookupWindow(&pWin, pXinDraw->info[s].id, client, DixReadAccess);
}
#endif
else if (pGlxWindow) {
@@ -1197,9 +1196,8 @@ static int MakeCurrent(__GLXclientState *cl,
}
#ifdef PANORAMIX
else if (pXinReadDraw) {
- pReadWin = (WindowPtr)SecurityLookupWindow(pXinReadDraw->info[s].id,
- client,
- SecurityReadAccess);
+ dixLookupWindow(&pReadWin, pXinReadDraw->info[s].id, client,
+ DixReadAccess);
}
#endif
else if (pGlxReadWindow) {
@@ -1641,18 +1639,16 @@ static int CreateGLXPixmap(__GLXclientState *cl,
__GLXscreenInfo *pGlxScreen;
__GLXvisualConfig *pGlxVisual;
__GLXFBConfig *pFBConfig;
- int i;
- int s;
+ int i, s, rc;
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;
- }
+ rc = dixLookupDrawable(&pDraw, pixmapId, client, M_DRAWABLE_PIXMAP,
+ DixUnknownAccess);
+ if (rc != Success)
+ return rc;
/*
** Check if screen of visual matches screen of pixmap.
@@ -1770,7 +1766,7 @@ static int CreateGLXPixmap(__GLXclientState *cl,
to_screen = screenInfo.numScreens - 1;
pXinDraw = (PanoramiXRes *)
- SecurityLookupIDByClass(client, pDraw->id, XRC_DRAWABLE, SecurityReadAccess);
+ SecurityLookupIDByClass(client, pDraw->id, XRC_DRAWABLE, DixReadAccess);
}
#endif
@@ -1783,7 +1779,8 @@ static int CreateGLXPixmap(__GLXclientState *cl,
#ifdef PANORAMIX
if (pXinDraw) {
- pRealDraw = (DrawablePtr) LookupDrawable(pXinDraw->info[s].id,client);
+ dixLookupDrawable(&pRealDraw, pXinDraw->info[s].id, client, 0,
+ DixUnknownAccess);
}
#endif
@@ -1949,14 +1946,13 @@ int __glXDoSwapBuffers(__GLXclientState *cl, XID drawId, GLXContextTag tag)
__glXWindow *pGlxWindow = NULL;
int from_screen = 0;
int to_screen = 0;
- int s;
+ int s, rc;
/*
** Check that the GLX drawable is valid.
*/
- pDraw = (DrawablePtr) LookupDrawable(drawId, client);
- if (pDraw) {
-
+ rc = dixLookupDrawable(&pDraw, drawId, client, 0, DixUnknownAccess);
+ if (rc == Success) {
from_screen = to_screen = pDraw->pScreen->myNum;
if (pDraw->type == DRAWABLE_WINDOW) {
@@ -2016,7 +2012,7 @@ int __glXDoSwapBuffers(__GLXclientState *cl, XID drawId, GLXContextTag tag)
from_screen = 0;
to_screen = screenInfo.numScreens - 1;
pXinDraw = (PanoramiXRes *)
- SecurityLookupIDByClass(client, pDraw->id, XRC_DRAWABLE, SecurityReadAccess);
+ SecurityLookupIDByClass(client, pDraw->id, XRC_DRAWABLE, DixReadAccess);
}
#endif
@@ -2060,9 +2056,7 @@ int __glXDoSwapBuffers(__GLXclientState *cl, XID drawId, GLXContextTag tag)
}
#ifdef PANORAMIX
else if (pXinDraw) {
- pWin = (WindowPtr)SecurityLookupWindow(pXinDraw->info[s].id,
- client,
- SecurityReadAccess);
+ dixLookupWindow(&pWin, pXinDraw->info[s].id, client, DixReadAccess);
}
#endif
else if (pGlxWindow) {
@@ -2106,12 +2100,13 @@ int __glXSwapBuffers(__GLXclientState *cl, GLbyte *pc)
__GLXpixmap *pGlxPixmap = NULL;
__GLXcontext *glxc = NULL;
__glXWindow *pGlxWindow = NULL;
+ int rc;
/*
** Check that the GLX drawable is valid.
*/
- pDraw = (DrawablePtr) LookupDrawable(drawId, client);
- if (pDraw) {
+ rc = dixLookupDrawable(&pDraw, drawId, client, 0, DixUnknownAccess);
+ if (rc == Success) {
if (pDraw->type != DRAWABLE_WINDOW) {
/*
** Drawable is an X pixmap, which is not allowed.
@@ -2589,7 +2584,7 @@ int __glXClientInfo(__GLXclientState *cl, GLbyte *pc)
cl->GLClientminorVersion = req->minor;
if (cl->GLClientextensions) __glXFree(cl->GLClientextensions);
buf = (const char *)(req+1);
- cl->GLClientextensions = __glXStrdup(buf);
+ cl->GLClientextensions = strdup(buf);
to_screen = screenInfo.numScreens - 1;
@@ -2899,16 +2894,15 @@ int __glXCreateWindow(__GLXclientState *cl, GLbyte *pc)
__GLXFBConfig *pGlxFBConfig = NULL;
VisualPtr pVisual;
VisualID visId;
- int i;
+ int i, rc;
/*
** Check if windowId is valid
*/
- pDraw = (DrawablePtr) LookupDrawable(windowId, client);
- if (!pDraw || pDraw->type != DRAWABLE_WINDOW) {
- client->errorValue = windowId;
- return BadWindow;
- }
+ rc = dixLookupDrawable(&pDraw, windowId, client, M_DRAWABLE_WINDOW,
+ DixUnknownAccess);
+ if (rc != Success)
+ return rc;
/*
** Check if screen of window matches screen of fbconfig.
@@ -3071,7 +3065,7 @@ int __glXQueryContextInfoEXT(__GLXclientState *cl, GLbyte *pc)
int nReplyBytes;
req = (xGLXQueryContextInfoEXTReq *)pc;
- ctx = (__GLXcontext *) SecurityLookupIDByType(client, req->context, __glXContextRes, SecurityReadAccess);
+ ctx = (__GLXcontext *) SecurityLookupIDByType(client, req->context, __glXContextRes, DixReadAccess);
if (!ctx) {
client->errorValue = req->context;
return __glXBadContext;
@@ -3281,7 +3275,7 @@ int __glXGetDrawableAttributes(__GLXclientState *cl, GLbyte *pc)
GLXDrawable be_drawable = 0;
DrawablePtr pDraw = NULL;
Display *dpy;
- int screen;
+ int screen, rc;
DMXScreenInfo *dmxScreen;
CARD32 *attribs = NULL;
int attribs_size;
@@ -3290,8 +3284,8 @@ int __glXGetDrawableAttributes(__GLXclientState *cl, GLbyte *pc)
#endif
if (drawId != None) {
- pDraw = (DrawablePtr) LookupDrawable(drawId, client);
- if (pDraw) {
+ rc = dixLookupDrawable(&pDraw, drawId, client, 0, DixUnknownAccess);
+ if (rc == Success) {
if (pDraw->type == DRAWABLE_WINDOW) {
WindowPtr pWin = (WindowPtr)pDraw;
be_drawable = 0;
@@ -3355,15 +3349,14 @@ int __glXGetDrawableAttributes(__GLXclientState *cl, GLbyte *pc)
#ifdef PANORAMIX
if (!noPanoramiXExtension) {
pXinDraw = (PanoramiXRes *)
- SecurityLookupIDByClass(client, pDraw->id, XRC_DRAWABLE, SecurityReadAccess);
+ SecurityLookupIDByClass(client, pDraw->id, XRC_DRAWABLE, DixReadAccess);
if (!pXinDraw) {
client->errorValue = drawId;
return __glXBadDrawable;
}
- pWin = (WindowPtr)SecurityLookupWindow(pXinDraw->info[screen].id,
- client,
- SecurityReadAccess);
+ dixLookupWindow(&pWin, pXinDraw->info[screen].id, client,
+ DixReadAccess);
}
#endif
@@ -3443,7 +3436,7 @@ int __glXChangeDrawableAttributes(__GLXclientState *cl, GLbyte *pc)
GLXDrawable be_drawable = 0;
DrawablePtr pDraw = NULL;
Display *dpy;
- int screen;
+ int screen, rc;
DMXScreenInfo *dmxScreen;
char *attrbuf;
#ifdef PANORAMIX
@@ -3452,8 +3445,8 @@ int __glXChangeDrawableAttributes(__GLXclientState *cl, GLbyte *pc)
#endif
if (drawId != None) {
- pDraw = (DrawablePtr) LookupDrawable(drawId, client);
- if (pDraw) {
+ rc = dixLookupDrawable(&pDraw, drawId, client, 0, DixUnknownAccess);
+ if (rc == Success) {
if (pDraw->type == DRAWABLE_WINDOW) {
WindowPtr pWin = (WindowPtr)pDraw;
be_drawable = 0;
@@ -3517,15 +3510,14 @@ int __glXChangeDrawableAttributes(__GLXclientState *cl, GLbyte *pc)
#ifdef PANORAMIX
if (!noPanoramiXExtension) {
pXinDraw = (PanoramiXRes *)
- SecurityLookupIDByClass(client, pDraw->id, XRC_DRAWABLE, SecurityReadAccess);
+ SecurityLookupIDByClass(client, pDraw->id, XRC_DRAWABLE, DixReadAccess);
if (!pXinDraw) {
client->errorValue = drawId;
return __glXBadDrawable;
}
- pWin = (WindowPtr)SecurityLookupWindow(pXinDraw->info[screen].id,
- client,
- SecurityReadAccess);
+ dixLookupWindow(&pWin, pXinDraw->info[screen].id, client,
+ DixReadAccess);
}
#endif
diff --git a/hw/dmx/glxProxy/glxcmdsswap.c b/hw/dmx/glxProxy/glxcmdsswap.c
index 565793e22..3404d557a 100644
--- a/hw/dmx/glxProxy/glxcmdsswap.c
+++ b/hw/dmx/glxProxy/glxcmdsswap.c
@@ -1,4 +1,3 @@
-/* $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
@@ -44,7 +43,6 @@
#include <windowstr.h>
#include "unpack.h"
#include "glxext.h"
-#include "GL/glx_ansic.h"
#include "glxvendor.h"
extern int glxIsExtensionSupported( char *ext );
@@ -714,7 +712,7 @@ int __glXSwapRenderLarge(__GLXclientState *cl, GLbyte *pc)
}
cl->largeCmdBufSize = hdr->length;
}
- __glXMemcpy(cl->largeCmdBuf, pc, req->dataBytes);
+ memcpy(cl->largeCmdBuf, pc, req->dataBytes);
cl->largeCmdBytesSoFar = req->dataBytes;
cl->largeCmdBytesTotal = hdr->length;
@@ -737,7 +735,7 @@ int __glXSwapRenderLarge(__GLXclientState *cl, GLbyte *pc)
return __glXBadLargeRequest;
}
- __glXMemcpy(cl->largeCmdBuf + cl->largeCmdBytesSoFar,
+ memcpy(cl->largeCmdBuf + cl->largeCmdBytesSoFar,
pc, req->dataBytes);
cl->largeCmdBytesSoFar += req->dataBytes;
@@ -759,7 +757,7 @@ int __glXSwapRenderLarge(__GLXclientState *cl, GLbyte *pc)
return __glXBadLargeRequest;
}
- __glXMemcpy(cl->largeCmdBuf + cl->largeCmdBytesSoFar,
+ memcpy(cl->largeCmdBuf + cl->largeCmdBytesSoFar,
pc, req->dataBytes);
cl->largeCmdBytesSoFar += req->dataBytes;
diff --git a/hw/dmx/glxProxy/glxcontext.h b/hw/dmx/glxProxy/glxcontext.h
index 465101a97..d59df3f0c 100644
--- a/hw/dmx/glxProxy/glxcontext.h
+++ b/hw/dmx/glxProxy/glxcontext.h
@@ -1,4 +1,3 @@
-/* $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_
diff --git a/hw/dmx/glxProxy/glxdrawable.h b/hw/dmx/glxProxy/glxdrawable.h
index 6e00ad62f..59fffa747 100644
--- a/hw/dmx/glxProxy/glxdrawable.h
+++ b/hw/dmx/glxProxy/glxdrawable.h
@@ -1,4 +1,3 @@
-/* $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_
diff --git a/hw/dmx/glxProxy/glxerror.h b/hw/dmx/glxProxy/glxerror.h
index d75cc2b2e..f69cadbde 100644
--- a/hw/dmx/glxProxy/glxerror.h
+++ b/hw/dmx/glxProxy/glxerror.h
@@ -1,4 +1,3 @@
-/* $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_
diff --git a/hw/dmx/glxProxy/glxext.c b/hw/dmx/glxProxy/glxext.c
index 5ddfbe608..de8bef8fb 100644
--- a/hw/dmx/glxProxy/glxext.c
+++ b/hw/dmx/glxProxy/glxext.c
@@ -1,4 +1,4 @@
-/* $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.,
@@ -79,7 +79,7 @@ static void ResetClientState(int clientIndex)
}
keep_be_displays = cl->be_displays;
- __glXMemset(cl, 0, sizeof(__GLXclientState));
+ memset(cl, 0, sizeof(__GLXclientState));
cl->be_displays = keep_be_displays;
/*
@@ -90,7 +90,7 @@ static void ResetClientState(int clientIndex)
cl->GLClientminorVersion = 0;
if (cl->GLClientextensions) __glXFree(cl->GLClientextensions);
- __glXMemset(cl->be_displays, 0, screenInfo.numScreens * sizeof(Display *));
+ memset(cl->be_displays, 0, screenInfo.numScreens * sizeof(Display *));
}
@@ -414,14 +414,14 @@ static int __glXDispatch(ClientPtr client)
if (!cl) {
return BadAlloc;
}
- __glXMemset(cl, 0, sizeof(__GLXclientState));
+ memset(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 *));
+ memset(cl->be_displays, 0, screenInfo.numScreens * sizeof(Display *));
}
if (!cl->inUse) {
@@ -468,7 +468,7 @@ static int __glXSwapDispatch(ClientPtr client)
if (!cl) {
return BadAlloc;
}
- __glXMemset(cl, 0, sizeof(__GLXclientState));
+ memset(cl, 0, sizeof(__GLXclientState));
cl->be_displays = (Display **) __glXMalloc( screenInfo.numScreens * sizeof(Display *) );
if (!cl->be_displays) {
@@ -476,7 +476,7 @@ static int __glXSwapDispatch(ClientPtr client)
return BadAlloc;
}
- __glXMemset(cl->be_displays, 0, screenInfo.numScreens * sizeof(Display *));
+ memset(cl->be_displays, 0, screenInfo.numScreens * sizeof(Display *));
}
if (!cl->inUse) {
diff --git a/hw/dmx/glxProxy/glxext.h b/hw/dmx/glxProxy/glxext.h
index 7e6756f86..8572aa43a 100644
--- a/hw/dmx/glxProxy/glxext.h
+++ b/hw/dmx/glxProxy/glxext.h
@@ -1,4 +1,3 @@
-/* $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_
diff --git a/hw/dmx/glxProxy/glxscreens.c b/hw/dmx/glxProxy/glxscreens.c
index a7d4ce13d..0f9012d39 100644
--- a/hw/dmx/glxProxy/glxscreens.c
+++ b/hw/dmx/glxProxy/glxscreens.c
@@ -1,4 +1,3 @@
-/* $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
@@ -48,13 +47,6 @@
#include "glxserver.h"
-#ifdef IN_MODULE
-#include <xf86_ansic.h>
-#else
-#include <string.h>
-#include <signal.h>
-#endif
-
#include <windowstr.h>
#include "glxfbconfig.h"
diff --git a/hw/dmx/glxProxy/glxscreens.h b/hw/dmx/glxProxy/glxscreens.h
index 22d397171..5f93e497b 100644
--- a/hw/dmx/glxProxy/glxscreens.h
+++ b/hw/dmx/glxProxy/glxscreens.h
@@ -1,7 +1,6 @@
#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
diff --git a/hw/dmx/glxProxy/glxserver.h b/hw/dmx/glxProxy/glxserver.h
index 7db7efef0..db5be4365 100644
--- a/hw/dmx/glxProxy/glxserver.h
+++ b/hw/dmx/glxProxy/glxserver.h
@@ -1,4 +1,3 @@
-/* $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_
@@ -46,7 +45,6 @@
#include <extnsionst.h>
#include <resource.h>
#include <scrnintstr.h>
-#include "GL/glx_ansic.h"
/*
diff --git a/hw/dmx/glxProxy/glxsingle.c b/hw/dmx/glxProxy/glxsingle.c
index e353263a7..27a27c335 100644
--- a/hw/dmx/glxProxy/glxsingle.c
+++ b/hw/dmx/glxProxy/glxsingle.c
@@ -1,4 +1,3 @@
-/* $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
diff --git a/hw/dmx/glxProxy/glxutil.c b/hw/dmx/glxProxy/glxutil.c
index 822ef25a0..f30b05fb1 100644
--- a/hw/dmx/glxProxy/glxutil.c
+++ b/hw/dmx/glxProxy/glxutil.c
@@ -1,4 +1,3 @@
-/* $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
@@ -41,7 +40,6 @@
#include <pixmapstr.h>
#include <windowstr.h>
#include "glxutil.h"
-#include "GL/glx_ansic.h"
/************************************************************************/
@@ -82,7 +80,7 @@ __glXCalloc(size_t numElements, size_t elementSize)
/* XXX: handle out of memory error */
return NULL;
}
- __glXMemset(addr, 0, size);
+ memset(addr, 0, size);
return addr;
}
diff --git a/hw/dmx/glxProxy/glxutil.h b/hw/dmx/glxProxy/glxutil.h
index 176444ee9..94ca7da95 100644
--- a/hw/dmx/glxProxy/glxutil.h
+++ b/hw/dmx/glxProxy/glxutil.h
@@ -1,4 +1,3 @@
-/* $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_
diff --git a/hw/dmx/glxProxy/glxvendor.c b/hw/dmx/glxProxy/glxvendor.c
index 4259974f9..e55f80252 100644
--- a/hw/dmx/glxProxy/glxvendor.c
+++ b/hw/dmx/glxProxy/glxvendor.c
@@ -1,4 +1,3 @@
-/* $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
diff --git a/hw/dmx/glxProxy/glxvisuals.c b/hw/dmx/glxProxy/glxvisuals.c
index c20e9551e..77bb137cf 100644
--- a/hw/dmx/glxProxy/glxvisuals.c
+++ b/hw/dmx/glxProxy/glxvisuals.c
@@ -37,6 +37,7 @@
#include <dmx-config.h>
#endif
+#include <assert.h>
#include "dmx.h"
#include "glxserver.h"
#include "glxutil.h"
diff --git a/hw/dmx/glxProxy/render2swap.c b/hw/dmx/glxProxy/render2swap.c
index 3fb894325..e7cbff21f 100644
--- a/hw/dmx/glxProxy/render2swap.c
+++ b/hw/dmx/glxProxy/render2swap.c
@@ -1,4 +1,3 @@
-/* $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
diff --git a/hw/dmx/glxProxy/renderpixswap.c b/hw/dmx/glxProxy/renderpixswap.c
index bedefe781..881967ccf 100644
--- a/hw/dmx/glxProxy/renderpixswap.c
+++ b/hw/dmx/glxProxy/renderpixswap.c
@@ -1,4 +1,3 @@
-/* $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
diff --git a/hw/dmx/glxProxy/unpack.h b/hw/dmx/glxProxy/unpack.h
index abad7b147..713e3aaa2 100644
--- a/hw/dmx/glxProxy/unpack.h
+++ b/hw/dmx/glxProxy/unpack.h
@@ -1,4 +1,3 @@
-/* $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__
diff --git a/hw/dmx/input/Makefile.am b/hw/dmx/input/Makefile.am
index d37c2a9ce..da8de0546 100644
--- a/hw/dmx/input/Makefile.am
+++ b/hw/dmx/input/Makefile.am
@@ -60,7 +60,7 @@ GLX_DEFS = @GL_CFLAGS@
GLX_INCS = -I@MESA_SOURCE@/include
endif
-AM_CFLAGS = @SERVER_DEFINES@ \
+AM_CFLAGS = $(DIX_CFLAGS) \
-I$(top_srcdir)/hw/dmx \
-I$(top_srcdir)/hw/xfree86/common \
$(GLX_INCS) \
diff --git a/hw/dmx/input/dmxeq.c b/hw/dmx/input/dmxeq.c
index 7a6bb11fc..a2fb07f1e 100644
--- a/hw/dmx/input/dmxeq.c
+++ b/hw/dmx/input/dmxeq.c
@@ -1,6 +1,5 @@
/* $XFree86$ */
/*
- * $Xorg: mieq.c,v 1.4 2001/02/09 02:05:20 xorgcvs Exp $
*
* Copyright 1990, 1998 The Open Group
*
diff --git a/hw/kdrive/Makefile.am b/hw/kdrive/Makefile.am
index c8832ebac..e07804948 100644
--- a/hw/kdrive/Makefile.am
+++ b/hw/kdrive/Makefile.am
@@ -3,10 +3,14 @@ VESA_SUBDIRS = vesa ati chips epson i810 mach64 mga neomagic nvidia pm2 r128 \
smi via
endif
-if KDRIVEFBDEV
+if BUILD_KDRIVEFBDEVLIB
FBDEV_SUBDIRS = fbdev
endif
+if XFAKESERVER
+XFAKE_SUBDIRS = fake
+endif
+
if XSDLSERVER
XSDL_SUBDIRS = sdl
endif
@@ -15,14 +19,18 @@ if XEPHYR
XEPHYR_SUBDIRS = ephyr
endif
+if KDRIVELINUX
+LINUX_SUBDIRS = linux
+endif
+
SUBDIRS = \
src \
- linux \
+ $(LINUX_SUBDIRS) \
$(XSDL_SUBDIRS) \
$(FBDEV_SUBDIRS) \
$(VESA_SUBDIRS) \
$(XEPHYR_SUBDIRS) \
- fake
+ $(XFAKE_SUBDIRS)
DIST_SUBDIRS = vesa ati chips epson i810 mach64 mga neomagic nvidia pm2 r128 \
smi via fbdev sdl ephyr src linux fake sis300
diff --git a/hw/kdrive/ati/Makefile.am b/hw/kdrive/ati/Makefile.am
index b23418129..76635fb52 100644
--- a/hw/kdrive/ati/Makefile.am
+++ b/hw/kdrive/ati/Makefile.am
@@ -31,10 +31,6 @@ INCLUDES = \
bin_PROGRAMS = Xati
-if TSLIB
-TSLIB_FLAG = -lts
-endif
-
noinst_LIBRARIES = libati.a
libati_a_SOURCES = \
@@ -65,8 +61,4 @@ ATI_LIBS = \
Xati_LDADD = \
$(ATI_LIBS) \
@KDRIVE_LIBS@ \
- @XSERVER_LIBS@ \
- $(TSLIB_FLAG)
-
-
-Xati_DEPENDENCIES = $(ATI_LIBS)
+ @XSERVER_LIBS@
diff --git a/hw/kdrive/ati/ati_dripriv.h b/hw/kdrive/ati/ati_dripriv.h
index 1343f07f5..f0e139383 100644
--- a/hw/kdrive/ati/ati_dripriv.h
+++ b/hw/kdrive/ati/ati_dripriv.h
@@ -1,4 +1,3 @@
-/* $XFree86: xc/programs/Xserver/hw/xfree86/drivers/ati/r128_dripriv.h,v 1.3 2000/11/18 19:37:11 tsi Exp $ */
/*
* Copyright 1999, 2000 ATI Technologies Inc., Markham, Ontario,
* Precision Insight, Inc., Cedar Park, Texas, and
diff --git a/hw/kdrive/ati/ati_stub.c b/hw/kdrive/ati/ati_stub.c
index 01ebc3139..d0bc4ca6b 100644
--- a/hw/kdrive/ati/ati_stub.c
+++ b/hw/kdrive/ati/ati_stub.c
@@ -53,7 +53,15 @@ InitOutput(ScreenInfo *pScreenInfo, int argc, char **argv)
void
InitInput(int argc, char **argv)
{
- KdInitInput(&LinuxMouseFuncs, &LinuxKeyboardFuncs);
+ KdKeyboardInfo *ki = NULL;
+
+ KdAddPointerDriver(&LinuxMouseDriver);
+ ki = KdNewKeyboard();
+ if (ki) {
+ ki->driver = &LinuxKeyboardDriver;
+ KdAddKeyboard(ki);
+ }
+ KdInitInput();
}
void
diff --git a/hw/kdrive/ati/r128_common.h b/hw/kdrive/ati/r128_common.h
index 506f97c68..862fea599 100644
--- a/hw/kdrive/ati/r128_common.h
+++ b/hw/kdrive/ati/r128_common.h
@@ -31,7 +31,6 @@
* Converted to common header format:
* Jens Owen <jens@tungstengraphics.com>
*
- * $XFree86: xc/programs/Xserver/hw/xfree86/drivers/ati/r128_common.h,v 1.2 2002/12/16 16:19:10 dawes Exp $
*
*/
diff --git a/hw/kdrive/ati/r128_sarea.h b/hw/kdrive/ati/r128_sarea.h
index b73797ae6..6fbd05ecb 100644
--- a/hw/kdrive/ati/r128_sarea.h
+++ b/hw/kdrive/ati/r128_sarea.h
@@ -1,4 +1,3 @@
-/* $XFree86: xc/programs/Xserver/hw/xfree86/drivers/ati/r128_sarea.h,v 1.7 2002/02/16 21:26:35 herrb Exp $ */
/*
* Copyright 1999, 2000 ATI Technologies Inc., Markham, Ontario,
* Precision Insight, Inc., Cedar Park, Texas, and
diff --git a/hw/kdrive/ati/radeon_common.h b/hw/kdrive/ati/radeon_common.h
index 2539ba68f..6c416c6b1 100644
--- a/hw/kdrive/ati/radeon_common.h
+++ b/hw/kdrive/ati/radeon_common.h
@@ -31,7 +31,6 @@
* Converted to common header format:
* Jens Owen <jens@tungstengraphics.com>
*
- * $XFree86: xc/programs/Xserver/hw/xfree86/drivers/ati/radeon_common.h,v 1.2 2003/04/07 01:22:09 martin Exp $
*
*/
diff --git a/hw/kdrive/ati/radeon_sarea.h b/hw/kdrive/ati/radeon_sarea.h
index 82a72ed19..1d39bca52 100644
--- a/hw/kdrive/ati/radeon_sarea.h
+++ b/hw/kdrive/ati/radeon_sarea.h
@@ -1,4 +1,3 @@
-/* $XFree86: xc/programs/Xserver/hw/xfree86/drivers/ati/radeon_sarea.h,v 1.5 2002/10/30 12:52:14 alanh Exp $ */
/*
* Copyright 2000 ATI Technologies Inc., Markham, Ontario,
* VA Linux Systems Inc., Fremont, California.
diff --git a/hw/kdrive/chips/Makefile.am b/hw/kdrive/chips/Makefile.am
index e3080774b..2f8a88da0 100644
--- a/hw/kdrive/chips/Makefile.am
+++ b/hw/kdrive/chips/Makefile.am
@@ -5,10 +5,6 @@ INCLUDES = \
bin_PROGRAMS = Xchips
-if TSLIB
-TSLIB_FLAG = -lts
-endif
-
noinst_LIBRARIES = libchips.a
libchips_a_SOURCES = \
@@ -19,15 +15,12 @@ libchips_a_SOURCES = \
Xchips_SOURCES = \
chipsstub.c
-CHIPS_LIBS = \
- libchips.a \
+CHIPS_LIBS = \
+ libchips.a \
$(top_builddir)/hw/kdrive/vesa/libvesa.a \
@KDRIVE_LIBS@
Xchips_LDADD = \
$(CHIPS_LIBS) \
- @KDRIVE_LIBS@ \
- @XSERVER_LIBS@ \
- $(TSLIB_FLAG)
-
-Xchips_DEPENDENCIES = $(CHIPS_LIBS) @KDRIVE_LIBS@
+ @KDRIVE_LIBS@ \
+ @XSERVER_LIBS@
diff --git a/hw/kdrive/chips/chipsstub.c b/hw/kdrive/chips/chipsstub.c
index 3499a4874..7fec1c77d 100644
--- a/hw/kdrive/chips/chipsstub.c
+++ b/hw/kdrive/chips/chipsstub.c
@@ -48,7 +48,8 @@ InitOutput (ScreenInfo *pScreenInfo, int argc, char **argv)
void
InitInput (int argc, char **argv)
{
- KdInitInput (&LinuxMouseFuncs, &LinuxKeyboardFuncs);
+ KdOsAddInputDrivers ();
+ KdInitInput ();
}
void
diff --git a/hw/kdrive/ephyr/Makefile.am b/hw/kdrive/ephyr/Makefile.am
index f423bfe40..c201fe9d6 100644
--- a/hw/kdrive/ephyr/Makefile.am
+++ b/hw/kdrive/ephyr/Makefile.am
@@ -5,11 +5,6 @@ INCLUDES = \
noinst_LIBRARIES = libxephyr.a libxephyr-hostx.a
-if TSLIB
-TSLIB_LIBS = -lts
-endif
-
-
bin_PROGRAMS = Xephyr
libxephyr_a_SOURCES = \
@@ -33,12 +28,4 @@ Xephyr_LDADD = \
libxephyr-hostx.a \
../../../exa/libexa.la \
@KDRIVE_LIBS@ \
- @KDRIVE_LIBS@ \
- $(TSLIB_LIBS) \
@XEPHYR_LIBS@
-
-Xephyr_DEPENDENCIES = \
- libxephyr.a \
- libxephyr-hostx.a \
- @KDRIVE_LIBS@ \
- ../../../exa/libexa.la
diff --git a/hw/kdrive/ephyr/ephyr.c b/hw/kdrive/ephyr/ephyr.c
index a9ea0eb0c..7db8675d8 100644
--- a/hw/kdrive/ephyr/ephyr.c
+++ b/hw/kdrive/ephyr/ephyr.c
@@ -36,10 +36,18 @@
#include "inputstr.h"
extern int KdTsPhyScreen;
-extern DeviceIntPtr pKdKeyboard;
+KdKeyboardInfo *ephyrKbd;
+KdPointerInfo *ephyrMouse;
+EphyrKeySyms ephyrKeySyms;
static int mouseState = 0;
+typedef struct _EphyrInputPrivate {
+ Bool enabled;
+} EphyrKbdPrivate, EphyrPointerPrivate;
+
+Bool EphyrWantGrayScale = 0;
+
Bool
ephyrInitialize (KdCardInfo *card, EphyrPriv *priv)
{
@@ -80,7 +88,10 @@ ephyrScreenInitialize (KdScreenInfo *screen, EphyrScrPriv *scrpriv)
screen->width = width;
screen->height = height;
}
-
+
+ if (EphyrWantGrayScale)
+ screen->fb[0].depth = 8;
+
if (screen->fb[0].depth && screen->fb[0].depth != hostx_get_depth())
{
if (screen->fb[0].depth < hostx_get_depth()
@@ -98,12 +109,15 @@ ephyrScreenInitialize (KdScreenInfo *screen, EphyrScrPriv *scrpriv)
if (screen->fb[0].depth <= 8)
{
- screen->fb[0].visuals = ((1 << StaticGray) |
- (1 << GrayScale) |
- (1 << StaticColor) |
- (1 << PseudoColor) |
- (1 << TrueColor) |
- (1 << DirectColor));
+ if (EphyrWantGrayScale)
+ screen->fb[0].visuals = ((1 << StaticGray) | (1 << GrayScale));
+ else
+ screen->fb[0].visuals = ((1 << StaticGray) |
+ (1 << GrayScale) |
+ (1 << StaticColor) |
+ (1 << PseudoColor) |
+ (1 << TrueColor) |
+ (1 << DirectColor));
screen->fb[0].redMask = 0x00;
screen->fb[0].greenMask = 0x00;
@@ -198,15 +212,14 @@ ephyrMapFramebuffer (KdScreenInfo *screen)
{
EphyrScrPriv *scrpriv = screen->driver;
EphyrPriv *priv = screen->card->driver;
- KdMouseMatrix m;
+ KdPointerMatrix m;
int buffer_height;
EPHYR_DBG(" screen->width: %d, screen->height: %d",
screen->width, screen->height);
- KdComputeMouseMatrix (&m, scrpriv->randr, screen->width, screen->height);
-
- KdSetMouseMatrix (&m);
+ KdComputePointerMatrix (&m, scrpriv->randr, screen->width, screen->height);
+ KdSetPointerMatrix (&m);
priv->bytes_per_line = ((screen->width * screen->fb[0].bitsPerPixel + 31) >> 5) << 2;
@@ -711,8 +724,9 @@ ephyrUpdateModifierState(unsigned int state)
kptr = &keyc->down[key >> 3];
bit = 1 << (key & 7);
- if (*kptr & bit)
- KdEnqueueKeyboardEvent(key, TRUE); /* release */
+ if (*kptr & bit && ephyrKbd &&
+ ((EphyrKbdPrivate *)ephyrKbd->driverPrivate)->enabled)
+ KdEnqueueKeyboardEvent(ephyrKbd, key, TRUE); /* release */
if (--count == 0)
break;
@@ -724,7 +738,9 @@ ephyrUpdateModifierState(unsigned int state)
for (key = 0; key < MAP_LENGTH; key++)
if (keyc->modifierMap[key] & mask)
{
- KdEnqueueKeyboardEvent(key, FALSE); /* press */
+ if (keyc->modifierMap[key] & mask && ephyrKbd &&
+ ((EphyrKbdPrivate *)ephyrKbd->driverPrivate)->enabled)
+ KdEnqueueKeyboardEvent(ephyrKbd, key, FALSE); /* press */
break;
}
}
@@ -740,31 +756,47 @@ ephyrPoll(void)
switch (ev.type)
{
case EPHYR_EV_MOUSE_MOTION:
- KdEnqueueMouseEvent(kdMouseInfo, mouseState,
- ev.data.mouse_motion.x,
- ev.data.mouse_motion.y);
+ if (!ephyrMouse ||
+ !((EphyrPointerPrivate *)ephyrMouse->driverPrivate)->enabled)
+ continue;
+ KdEnqueuePointerEvent(ephyrMouse, mouseState,
+ ev.data.mouse_motion.x,
+ ev.data.mouse_motion.y,
+ 0);
break;
case EPHYR_EV_MOUSE_PRESS:
+ if (!ephyrMouse ||
+ !((EphyrPointerPrivate *)ephyrMouse->driverPrivate)->enabled)
+ continue;
ephyrUpdateModifierState(ev.key_state);
mouseState |= ev.data.mouse_down.button_num;
- KdEnqueueMouseEvent(kdMouseInfo, mouseState|KD_MOUSE_DELTA, 0, 0);
+ KdEnqueuePointerEvent(ephyrMouse, mouseState|KD_MOUSE_DELTA, 0, 0, 0);
break;
case EPHYR_EV_MOUSE_RELEASE:
+ if (!ephyrMouse ||
+ !((EphyrPointerPrivate *)ephyrMouse->driverPrivate)->enabled)
+ continue;
ephyrUpdateModifierState(ev.key_state);
mouseState &= ~ev.data.mouse_up.button_num;
- KdEnqueueMouseEvent(kdMouseInfo, mouseState|KD_MOUSE_DELTA, 0, 0);
+ KdEnqueuePointerEvent(ephyrMouse, mouseState|KD_MOUSE_DELTA, 0, 0, 0);
break;
case EPHYR_EV_KEY_PRESS:
+ if (!ephyrKbd ||
+ !((EphyrKbdPrivate *)ephyrKbd->driverPrivate)->enabled)
+ continue;
ephyrUpdateModifierState(ev.key_state);
- KdEnqueueKeyboardEvent (ev.data.key_down.scancode, FALSE);
+ KdEnqueueKeyboardEvent (ephyrKbd, ev.data.key_down.scancode, FALSE);
break;
case EPHYR_EV_KEY_RELEASE:
+ if (!ephyrKbd ||
+ !((EphyrKbdPrivate *)ephyrKbd->driverPrivate)->enabled)
+ continue;
ephyrUpdateModifierState(ev.key_state);
- KdEnqueueKeyboardEvent (ev.data.key_up.scancode, TRUE);
+ KdEnqueueKeyboardEvent (ephyrKbd, ev.data.key_up.scancode, TRUE);
break;
default:
@@ -825,59 +857,112 @@ ephyrPutColors (ScreenPtr pScreen, int fb, int n, xColorItem *pdefs)
/* Mouse calls */
-static Bool
-MouseInit (void)
+static Status
+MouseInit (KdPointerInfo *pi)
{
- return TRUE;
+ pi->driverPrivate = (EphyrPointerPrivate *)
+ xcalloc(sizeof(EphyrPointerPrivate), 1);
+ ((EphyrPointerPrivate *)pi->driverPrivate)->enabled = FALSE;
+ pi->nAxes = 3;
+ pi->nButtons = 32;
+ pi->name = KdSaveString("Xephyr virtual mouse");
+ ephyrMouse = pi;
+ return Success;
+}
+
+static Status
+MouseEnable (KdPointerInfo *pi)
+{
+ ((EphyrPointerPrivate *)pi->driverPrivate)->enabled = TRUE;
+ return Success;
}
static void
-MouseFini (void)
+MouseDisable (KdPointerInfo *pi)
{
- ;
+ ((EphyrPointerPrivate *)pi->driverPrivate)->enabled = FALSE;
+ return;
}
-KdMouseFuncs EphyrMouseFuncs = {
+static void
+MouseFini (KdPointerInfo *pi)
+{
+ ephyrMouse = NULL;
+ return;
+}
+
+KdPointerDriver EphyrMouseDriver = {
+ "ephyr",
MouseInit,
+ MouseEnable,
+ MouseDisable,
MouseFini,
+ NULL,
};
/* Keyboard */
-static void
-EphyrKeyboardLoad (void)
+static Status
+EphyrKeyboardInit (KdKeyboardInfo *ki)
{
- EPHYR_DBG("mark");
-
+ ki->driverPrivate = (EphyrKbdPrivate *)
+ xcalloc(sizeof(EphyrKbdPrivate), 1);
hostx_load_keymap();
+ if (!ephyrKeySyms.map) {
+ ErrorF("Couldn't load keymap from host\n");
+ return BadAlloc;
+ }
+ ki->keySyms.minKeyCode = ephyrKeySyms.minKeyCode;
+ ki->keySyms.maxKeyCode = ephyrKeySyms.maxKeyCode;
+ ki->minScanCode = ki->keySyms.minKeyCode;
+ ki->maxScanCode = ki->keySyms.maxKeyCode;
+ ki->keySyms.mapWidth = ephyrKeySyms.mapWidth;
+ ki->keySyms.map = ephyrKeySyms.map;
+ ki->name = KdSaveString("Xephyr virtual keyboard");
+ ephyrKbd = ki;
+ return Success;
}
-static int
-EphyrKeyboardInit (void)
+static Status
+EphyrKeyboardEnable (KdKeyboardInfo *ki)
{
- return 0;
+ ((EphyrKbdPrivate *)ki->driverPrivate)->enabled = TRUE;
+
+ return Success;
+}
+
+static void
+EphyrKeyboardDisable (KdKeyboardInfo *ki)
+{
+ ((EphyrKbdPrivate *)ki->driverPrivate)->enabled = FALSE;
}
static void
-EphyrKeyboardFini (void)
+EphyrKeyboardFini (KdKeyboardInfo *ki)
{
+ /* not xfree: we call malloc from hostx.c. */
+ free(ki->keySyms.map);
+ ephyrKbd = NULL;
+ return;
}
static void
-EphyrKeyboardLeds (int leds)
+EphyrKeyboardLeds (KdKeyboardInfo *ki, int leds)
{
}
static void
-EphyrKeyboardBell (int volume, int frequency, int duration)
+EphyrKeyboardBell (KdKeyboardInfo *ki, int volume, int frequency, int duration)
{
}
-KdKeyboardFuncs EphyrKeyboardFuncs = {
- EphyrKeyboardLoad,
+KdKeyboardDriver EphyrKeyboardDriver = {
+ "ephyr",
EphyrKeyboardInit,
+ EphyrKeyboardEnable,
EphyrKeyboardLeds,
EphyrKeyboardBell,
+ EphyrKeyboardDisable,
EphyrKeyboardFini,
- 0,
+ NULL,
};
diff --git a/hw/kdrive/ephyr/ephyr.h b/hw/kdrive/ephyr/ephyr.h
index 707cb0168..f49d920d1 100644
--- a/hw/kdrive/ephyr/ephyr.h
+++ b/hw/kdrive/ephyr/ephyr.h
@@ -31,7 +31,6 @@
#include "os.h" /* for OsSignal() */
#include "kdrive.h"
-#include "kkeymap.h"
#include "hostx.h"
#include "exa.h"
@@ -68,7 +67,9 @@ typedef struct _ephyrScrPriv {
EphyrFakexaPriv *fakexa;
} EphyrScrPriv;
-extern KdCardFuncs ephyrFuncs;
+extern KdCardFuncs ephyrFuncs;
+extern KdKeyboardInfo *ephyrKbd;
+extern KdPointerInfo *ephyrMouse;
Bool
ephyrInitialize (KdCardInfo *card, EphyrPriv *priv);
@@ -167,9 +168,9 @@ ephyrShadowUpdate (ScreenPtr pScreen, shadowBufPtr pBuf);
void
ephyrUpdateModifierState(unsigned int state);
-extern KdMouseFuncs EphyrMouseFuncs;
+extern KdPointerDriver EphyrMouseDriver;
-extern KdKeyboardFuncs EphyrKeyboardFuncs;
+extern KdKeyboardDriver EphyrKeyboardDriver;
extern KdOsFuncs EphyrOsFuncs;
diff --git a/hw/kdrive/ephyr/ephyrinit.c b/hw/kdrive/ephyr/ephyrinit.c
index 58478e690..a77b87e5e 100644
--- a/hw/kdrive/ephyr/ephyrinit.c
+++ b/hw/kdrive/ephyr/ephyrinit.c
@@ -29,6 +29,7 @@
#include "ephyr.h"
extern Window EphyrPreExistingHostWin;
+extern Bool EphyrWantGrayScale;
void
InitCard (char *name)
@@ -50,7 +51,24 @@ InitOutput (ScreenInfo *pScreenInfo, int argc, char **argv)
void
InitInput (int argc, char **argv)
{
- KdInitInput (&EphyrMouseFuncs, &EphyrKeyboardFuncs);
+ KdKeyboardInfo *ki;
+ KdPointerInfo *pi;
+
+ ki = KdNewKeyboard();
+ if (!ki)
+ FatalError("Couldn't create Xephyr keyboard\n");
+ ki->driver = &EphyrKeyboardDriver;
+ KdAddKeyboardDriver(&EphyrKeyboardDriver);
+ KdAddKeyboard(ki);
+
+ pi = KdNewPointer();
+ if (!pi)
+ FatalError("Couldn't create Xephyr pointer\n");
+ pi->driver = &EphyrMouseDriver;
+ KdAddPointerDriver(&EphyrMouseDriver);
+ KdAddPointer(pi);
+
+ KdInitInput();
}
void
@@ -62,6 +80,7 @@ ddxUseMsg (void)
ErrorF("-parent XID Use existing window as Xephyr root win\n");
ErrorF("-host-cursor Re-use exisiting X host server cursor\n");
ErrorF("-fullscreen Attempt to run Xephyr fullscreen\n");
+ ErrorF("-grayscale Simulate 8bit grayscale\n");
ErrorF("-fakexa Simulate acceleration using software rendering\n");
ErrorF("\n");
@@ -94,6 +113,11 @@ ddxProcessArgument (int argc, char **argv, int i)
hostx_use_fullscreen();
return 1;
}
+ else if (!strcmp (argv[i], "-grayscale"))
+ {
+ EphyrWantGrayScale = 1;
+ return 1;
+ }
else if (!strcmp (argv[i], "-fakexa"))
{
ephyrFuncs.initAccel = ephyrDrawInit;
diff --git a/hw/kdrive/ephyr/hostx.c b/hw/kdrive/ephyr/hostx.c
index ae776a7eb..573f77489 100644
--- a/hw/kdrive/ephyr/hostx.c
+++ b/hw/kdrive/ephyr/hostx.c
@@ -77,14 +77,8 @@ static EphyrHostXVars HostX = { "?", 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0};
static int HostXWantDamageDebug = 0;
-extern KeySym EphyrKeymap[];
-
-extern KeySym kdKeymap[];
-extern int kdMinScanCode;
-extern int kdMaxScanCode;
-extern int kdMinKeyCode;
-extern int kdMaxKeyCode;
-extern int kdKeymapWidth;
+extern EphyrKeySyms ephyrKeySyms;
+
extern int monitorResolution;
static void
@@ -403,9 +397,9 @@ hostx_get_bpp(void)
}
void
-hostx_get_visual_masks (unsigned long *rmsk,
- unsigned long *gmsk,
- unsigned long *bmsk)
+hostx_get_visual_masks (CARD32 *rmsk,
+ CARD32 *gmsk,
+ CARD32 *bmsk)
{
if (host_depth_matches_server())
{
@@ -533,15 +527,9 @@ hostx_screen_init (int width, int height, int buffer_height)
/* Ask the WM to keep our size static */
size_hints = XAllocSizeHints();
-#if 0
size_hints->max_width = size_hints->min_width = width;
size_hints->max_height = size_hints->min_height = height;
size_hints->flags = PMinSize|PMaxSize;
-#else
- size_hints->min_width = 100;
- size_hints->min_height = 100;
- size_hints->flags = PMinSize;
-#endif
XSetWMNormalHints(HostX.dpy, HostX.win, size_hints);
XFree(size_hints);
@@ -669,7 +657,7 @@ void
hostx_load_keymap(void)
{
KeySym *keymap;
- int mapWidth, min_keycode, max_keycode;
+ int host_width, min_keycode, max_keycode, width;
int i,j;
XDisplayKeycodes(HostX.dpy, &min_keycode, &max_keycode);
@@ -679,33 +667,31 @@ hostx_load_keymap(void)
keymap = XGetKeyboardMapping(HostX.dpy,
min_keycode,
max_keycode - min_keycode + 1,
- &mapWidth);
+ &host_width);
/* Try and copy the hosts keymap into our keymap to avoid loads
* of messing around.
*
* kdrive cannot can have more than 4 keysyms per keycode
- * so we only copy the first 4 ( xorg has 6 per keycode )
+ * so we only copy at most the first 4 ( xorg has 6 per keycode, XVNC 2 )
*/
+ width = (host_width > 4) ? 4 : host_width;
- for (i=0; i<(max_keycode - min_keycode+1); i++)
- for (j=0; j<4; j++)
- kdKeymap[ (i*4)+j ] = keymap[ (i*mapWidth) + j ];
+ ephyrKeySyms.map = (KeySym *)calloc(sizeof(KeySym),
+ (max_keycode - min_keycode + 1) *
+ width);
+ if (!ephyrKeySyms.map)
+ return;
- /* old way
- memcpy (kdKeymap, keymap,
- (max_keycode - min_keycode + 1)*mapWidth*sizeof(KeySym));
- */
+ for (i=0; i<(max_keycode - min_keycode+1); i++)
+ for (j=0; j<width; j++)
+ ephyrKeySyms.map[(i*width)+j] = keymap[(i*host_width) + j];
- EPHYR_DBG("keymap width: %d", mapWidth);
+ EPHYR_DBG("keymap width, host:%d kdrive:%d", host_width, width);
- /* all kdrive vars - see kkeymap.c */
-
- kdMinScanCode = min_keycode;
- kdMaxScanCode = max_keycode;
- kdMinKeyCode = min_keycode;
- kdMaxKeyCode = max_keycode;
- kdKeymapWidth = (mapWidth > 4) ? 4 : mapWidth;
+ ephyrKeySyms.minKeyCode = min_keycode;
+ ephyrKeySyms.maxKeyCode = max_keycode;
+ ephyrKeySyms.mapWidth = width;
XFree(keymap);
}
diff --git a/hw/kdrive/ephyr/hostx.h b/hw/kdrive/ephyr/hostx.h
index d3f6da3d3..4e3c6af33 100644
--- a/hw/kdrive/ephyr/hostx.h
+++ b/hw/kdrive/ephyr/hostx.h
@@ -26,6 +26,9 @@
#ifndef _XLIBS_STUFF_H_
#define _XLIBS_STUFF_H_
+#include <X11/X.h>
+#include <X11/Xmd.h>
+
#define EPHYR_WANT_DEBUG 0
#if (EPHYR_WANT_DEBUG)
@@ -48,6 +51,14 @@ typedef enum EphyrHostXEventType
}
EphyrHostXEventType;
+/* I can't believe it's not a KeySymsRec. */
+typedef struct {
+ int minKeyCode;
+ int maxKeyCode;
+ int mapWidth;
+ KeySym *map;
+} EphyrKeySyms;
+
struct EphyrHostXEvent
{
EphyrHostXEventType type;
@@ -126,9 +137,9 @@ int
hostx_get_bpp(void);
void
-hostx_get_visual_masks (unsigned long *rmsk,
- unsigned long *gmsk,
- unsigned long *bmsk);
+hostx_get_visual_masks (CARD32 *rmsk,
+ CARD32 *gmsk,
+ CARD32 *bmsk);
void
hostx_set_cmap_entry(unsigned char idx,
unsigned char r,
diff --git a/hw/kdrive/ephyr/os.c b/hw/kdrive/ephyr/os.c
index ead15868b..1a42495f3 100644
--- a/hw/kdrive/ephyr/os.c
+++ b/hw/kdrive/ephyr/os.c
@@ -34,34 +34,8 @@ EphyrInit (void)
return hostx_init();
}
-static void
-EphyrEnable (void)
-{
- EPHYR_DBG("mark");
-}
-
-static Bool
-EphyrSpecialKey (KeySym sym)
-{
- return FALSE;
-}
-
-static void
-EphyrDisable (void)
-{
-}
-
-static void
-EphyrFini (void)
-{
-}
-
KdOsFuncs EphyrOsFuncs = {
- EphyrInit,
- EphyrEnable,
- EphyrSpecialKey,
- EphyrDisable,
- EphyrFini,
- ephyrPoll
+ .Init = EphyrInit,
+ .pollEvents = ephyrPoll,
};
diff --git a/hw/kdrive/epson/Makefile.am b/hw/kdrive/epson/Makefile.am
index 0538f4c39..a5bc70b02 100644
--- a/hw/kdrive/epson/Makefile.am
+++ b/hw/kdrive/epson/Makefile.am
@@ -4,10 +4,6 @@ INCLUDES = \
bin_PROGRAMS = Xepson
-if TSLIB
-TSLIB_FLAG = -lts
-endif
-
noinst_LIBRARIES = libepson.a
libepson_a_SOURCES = \
@@ -25,9 +21,6 @@ EPSON_LIBS = \
@KDRIVE_LIBS@
Xepson_LDADD = \
- $(EPSON_LIBS) \
+ $(EPSON_LIBS) \
@KDRIVE_LIBS@ \
- @XSERVER_LIBS@ \
- $(TSLIB_FLAG)
-
-Xepson_DEPENDENCIES = $(EPSON_LIBS) @KDRIVE_LIBS@
+ @XSERVER_LIBS@
diff --git a/hw/kdrive/epson/epson13806stub.c b/hw/kdrive/epson/epson13806stub.c
index 125d90289..7981782ed 100644
--- a/hw/kdrive/epson/epson13806stub.c
+++ b/hw/kdrive/epson/epson13806stub.c
@@ -53,10 +53,8 @@ InitOutput (ScreenInfo *pScreenInfo, int argc, char **argv)
void
InitInput (int argc, char **argv)
{
- KdInitInput (&LinuxMouseFuncs, &LinuxKeyboardFuncs);
-#ifdef TOUCHSCREEN
- KdAddMouseDriver (&TsFuncs);
-#endif
+ KdOsAddInputDrivers ();
+ KdInitInput ();
}
int
diff --git a/hw/kdrive/fake/Makefile.am b/hw/kdrive/fake/Makefile.am
index f3a6a3453..d7ebfc243 100644
--- a/hw/kdrive/fake/Makefile.am
+++ b/hw/kdrive/fake/Makefile.am
@@ -6,10 +6,6 @@ noinst_LIBRARIES = libfake.a
bin_PROGRAMS = Xfake
-if TSLIB
-TSLIB_FLAG = -lts
-endif
-
libfake_a_SOURCES = \
fake.c \
kbd.c \
@@ -23,11 +19,4 @@ Xfake_SOURCES = \
Xfake_LDADD = \
libfake.a \
@KDRIVE_LIBS@ \
- @KDRIVE_LIBS@ \
- $(TSLIB_FLAG) \
@XSERVER_LIBS@
-
-Xfake_DEPENDENCIES = \
- libfake.a \
- @KDRIVE_LIBS@
-
diff --git a/hw/kdrive/fake/fake.c b/hw/kdrive/fake/fake.c
index d56512b3f..ca515f9b6 100644
--- a/hw/kdrive/fake/fake.c
+++ b/hw/kdrive/fake/fake.c
@@ -158,7 +158,7 @@ Bool
fakeMapFramebuffer (KdScreenInfo *screen)
{
FakeScrPriv *scrpriv = screen->driver;
- KdMouseMatrix m;
+ KdPointerMatrix m;
FakePriv *priv = screen->card->driver;
if (scrpriv->randr != RR_Rotate_0)
@@ -166,9 +166,9 @@ fakeMapFramebuffer (KdScreenInfo *screen)
else
scrpriv->shadow = FALSE;
- KdComputeMouseMatrix (&m, scrpriv->randr, screen->width, screen->height);
+ KdComputePointerMatrix (&m, scrpriv->randr, screen->width, screen->height);
- KdSetMouseMatrix (&m);
+ KdSetPointerMatrix (&m);
priv->bytes_per_line = ((screen->width * screen->fb[0].bitsPerPixel + 31) >> 5) << 2;
if (priv->base)
diff --git a/hw/kdrive/fake/fake.h b/hw/kdrive/fake/fake.h
index 4d90d3169..f7c8c3431 100644
--- a/hw/kdrive/fake/fake.h
+++ b/hw/kdrive/fake/fake.h
@@ -130,9 +130,9 @@ fakeRandRInit (ScreenPtr pScreen);
#endif
-extern KdMouseFuncs FakeMouseFuncs;
+extern KdPointerDriver FakePointerDriver;
-extern KdKeyboardFuncs FakeKeyboardFuncs;
+extern KdKeyboardDriver FakeKeyboardDriver;
extern KdOsFuncs FakeOsFuncs;
diff --git a/hw/kdrive/fake/fakeinit.c b/hw/kdrive/fake/fakeinit.c
index c5ee4bc3f..dd88bc5a7 100644
--- a/hw/kdrive/fake/fakeinit.c
+++ b/hw/kdrive/fake/fakeinit.c
@@ -44,7 +44,22 @@ InitOutput (ScreenInfo *pScreenInfo, int argc, char **argv)
void
InitInput (int argc, char **argv)
{
- KdInitInput (&FakeMouseFuncs, &FakeKeyboardFuncs);
+ KdPointerInfo *pi;
+ KdKeyboardInfo *ki;
+
+ pi = KdNewPointer ();
+ if (!pi)
+ return;
+ pi->driver = &FakePointerDriver;
+ KdAddPointer(pi);
+
+ ki = KdNewKeyboard ();
+ if (!ki)
+ return;
+ ki->driver = &FakeKeyboardDriver;
+ KdAddKeyboard(ki);
+
+ KdInitInput ();
}
void
diff --git a/hw/kdrive/fake/kbd.c b/hw/kdrive/fake/kbd.c
index 9cf4de060..db224c995 100644
--- a/hw/kdrive/fake/kbd.c
+++ b/hw/kdrive/fake/kbd.c
@@ -27,7 +27,6 @@
#include <kdrive-config.h>
#endif
#include "fake.h"
-#include "kkeymap.h"
#include <X11/keysym.h>
#define FAKE_WIDTH 2
@@ -155,41 +154,58 @@ KeySym FakeKeymap[] = {
/* 116 123 */ NoSymbol, NoSymbol, /* tiny button */
};
-static void
-FakeKeyboardLoad (void)
+static Status
+FakeKeyboardInit (KdKeyboardInfo *ki)
+{
+ ki->keySyms.minKeyCode = 1;
+ ki->keySyms.maxKeyCode = (sizeof (FakeKeymap) / sizeof (FakeKeymap[0])) / FAKE_WIDTH;
+ ki->keySyms.mapWidth = FAKE_WIDTH;
+ if (ki->keySyms.map)
+ xfree(ki->keySyms.map);
+ ki->keySyms.map = (KeySym *)xalloc(sizeof(FakeKeymap));
+ if (!ki->keySyms.map)
+ return BadAlloc;
+ memcpy (ki->keySyms.map, FakeKeymap, sizeof (FakeKeymap));
+
+ return Success;
+}
+
+static Status
+FakeKeyboardEnable (KdKeyboardInfo *ki)
{
- kdMinScanCode = 1;
- kdKeymapWidth = FAKE_WIDTH;
- kdMaxScanCode = (sizeof (FakeKeymap) / sizeof (FakeKeymap[0])) / FAKE_WIDTH;
- memcpy (kdKeymap, FakeKeymap, sizeof (FakeKeymap));
+ return Success;
}
-static int
-FakeKeyboardInit (void)
+static void
+FakeKeyboardDisable (KdKeyboardInfo *ki)
{
- return 0;
+ return;
}
static void
-FakeKeyboardFini (void)
+FakeKeyboardFini (KdKeyboardInfo *ki)
{
+ xfree(ki->keySyms.map);
+ ki->keySyms.map = NULL;
}
static void
-FakeKeyboardLeds (int leds)
+FakeKeyboardLeds (KdKeyboardInfo *ki, int leds)
{
}
static void
-FakeKeyboardBell (int volume, int frequency, int duration)
+FakeKeyboardBell (KdKeyboardInfo *ki, int volume, int frequency, int duration)
{
}
-KdKeyboardFuncs FakeKeyboardFuncs = {
- FakeKeyboardLoad,
+KdKeyboardDriver FakeKeyboardDriver = {
+ "fake",
FakeKeyboardInit,
+ FakeKeyboardEnable,
FakeKeyboardLeds,
FakeKeyboardBell,
+ FakeKeyboardDisable,
FakeKeyboardFini,
- 0,
+ NULL,
};
diff --git a/hw/kdrive/fake/mouse.c b/hw/kdrive/fake/mouse.c
index 714a45123..beb6ff524 100644
--- a/hw/kdrive/fake/mouse.c
+++ b/hw/kdrive/fake/mouse.c
@@ -35,19 +35,35 @@
#include "scrnintstr.h"
#include "kdrive.h"
-static Bool
-MouseInit (void)
+static Status
+MouseInit (KdPointerInfo *pi)
{
- return TRUE;
+ return Success;
+}
+
+static Status
+MouseEnable (KdPointerInfo *pi)
+{
+ return Success;
+}
+
+static void
+MouseDisable (KdPointerInfo *pi)
+{
+ return;
}
static void
-MouseFini (void)
+MouseFini (KdPointerInfo *pi)
{
+ return;
}
-KdMouseFuncs FakeMouseFuncs = {
+KdPointerDriver FakePointerDriver = {
+ "fake",
MouseInit,
+ MouseEnable,
+ MouseDisable,
MouseFini,
};
diff --git a/hw/kdrive/fbdev/Makefile.am b/hw/kdrive/fbdev/Makefile.am
index fce6df9f4..cb7180184 100644
--- a/hw/kdrive/fbdev/Makefile.am
+++ b/hw/kdrive/fbdev/Makefile.am
@@ -4,26 +4,18 @@ INCLUDES = \
noinst_LIBRARIES = libfbdev.a
-bin_PROGRAMS = Xfbdev
-
-if TSLIB
-TSLIB_FLAG = -lts
-endif
-
libfbdev_a_SOURCES = \
fbdev.c \
fbdev.h
+if KDRIVEFBDEV
+bin_PROGRAMS = Xfbdev
+
Xfbdev_SOURCES = \
fbinit.c
Xfbdev_LDADD = \
libfbdev.a \
@KDRIVE_LIBS@ \
- @XSERVER_LIBS@ \
- $(TSLIB_FLAG)
-
-Xfbdev_DEPENDENCIES = \
- libfbdev.a \
- @KDRIVE_LIBS@
-
+ @XSERVER_LIBS@
+endif
diff --git a/hw/kdrive/fbdev/fbdev.c b/hw/kdrive/fbdev/fbdev.c
index 86384f0a4..598d0ceaf 100644
--- a/hw/kdrive/fbdev/fbdev.c
+++ b/hw/kdrive/fbdev/fbdev.c
@@ -33,16 +33,24 @@
extern int KdTsPhyScreen;
+char *fbdevDevicePath = NULL;
+
Bool
fbdevInitialize (KdCardInfo *card, FbdevPriv *priv)
{
int k;
unsigned long off;
- if ((priv->fd = open("/dev/fb0", O_RDWR)) < 0 && \
- (priv->fd = open("/dev/fb/0", O_RDWR)) < 0) {
- perror("Error opening /dev/fb0");
- return FALSE;
- }
+
+ if (fbdevDevicePath == NULL)
+ fbdevDevicePath = "/dev/fb0";
+
+ if ((priv->fd = open(fbdevDevicePath, O_RDWR)) < 0)
+ {
+ ErrorF("Error opening framebuffer %s: %s\n",
+ fbdevDevicePath, strerror(errno));
+ return FALSE;
+ }
+
/* quiet valgrind */
memset (&priv->fix, '\0', sizeof (priv->fix));
if ((k=ioctl(priv->fd, FBIOGET_FSCREENINFO, &priv->fix)) < 0) {
@@ -323,7 +331,7 @@ Bool
fbdevMapFramebuffer (KdScreenInfo *screen)
{
FbdevScrPriv *scrpriv = screen->driver;
- KdMouseMatrix m;
+ KdPointerMatrix m;
FbdevPriv *priv = screen->card->driver;
if (scrpriv->randr != RR_Rotate_0)
@@ -331,9 +339,9 @@ fbdevMapFramebuffer (KdScreenInfo *screen)
else
scrpriv->shadow = FALSE;
- KdComputeMouseMatrix (&m, scrpriv->randr, screen->width, screen->height);
+ KdComputePointerMatrix (&m, scrpriv->randr, screen->width, screen->height);
- KdSetMouseMatrix (&m);
+ KdSetPointerMatrix (&m);
screen->width = priv->var.xres;
screen->height = priv->var.yres;
diff --git a/hw/kdrive/fbdev/fbdev.h b/hw/kdrive/fbdev/fbdev.h
index d37b99597..b7951db72 100644
--- a/hw/kdrive/fbdev/fbdev.h
+++ b/hw/kdrive/fbdev/fbdev.h
@@ -53,6 +53,7 @@ typedef struct _fbdevScrPriv {
} FbdevScrPriv;
extern KdCardFuncs fbdevFuncs;
+extern char* fbdevDevicePath;
Bool
fbdevInitialize (KdCardInfo *card, FbdevPriv *priv);
diff --git a/hw/kdrive/fbdev/fbinit.c b/hw/kdrive/fbdev/fbinit.c
index ba9d1c695..3b78c9735 100644
--- a/hw/kdrive/fbdev/fbinit.c
+++ b/hw/kdrive/fbdev/fbinit.c
@@ -45,24 +45,45 @@ InitOutput (ScreenInfo *pScreenInfo, int argc, char **argv)
void
InitInput (int argc, char **argv)
{
- KdInitInput (&LinuxMouseFuncs, &LinuxKeyboardFuncs);
-#ifdef TOUCHSCREEN
- KdAddMouseDriver (&TsFuncs);
+ KdKeyboardInfo *ki;
+
+ KdAddKeyboardDriver (&LinuxKeyboardDriver);
+ KdAddPointerDriver (&LinuxMouseDriver);
+#ifdef TSLIB
+ KdAddPointerDriver (&TsDriver);
#endif
+
+ ki = KdParseKeyboard ("keybd");
+ KdAddKeyboard(ki);
+
+ KdInitInput ();
}
void
ddxUseMsg (void)
{
- KdUseMsg();
+ KdUseMsg();
+ ErrorF("\nXfbdev Device Usage:\n");
+ ErrorF("-fb path Framebuffer device to use. Defaults to /dev/fb0\n");
+ ErrorF("\n");
}
int
ddxProcessArgument (int argc, char **argv, int i)
{
- return KdProcessArgument (argc, argv, i);
-}
+ if (!strcmp (argv[i], "-fb"))
+ {
+ if (i+1 < argc)
+ {
+ fbdevDevicePath = argv[i+1];
+ return 2;
+ }
+ UseMsg();
+ exit(1);
+ }
+ return KdProcessArgument (argc, argv, i);
+}
KdCardFuncs fbdevFuncs = {
diff --git a/hw/kdrive/i810/Makefile.am b/hw/kdrive/i810/Makefile.am
index d676a6902..503958571 100644
--- a/hw/kdrive/i810/Makefile.am
+++ b/hw/kdrive/i810/Makefile.am
@@ -6,9 +6,6 @@ bin_PROGRAMS = Xi810
noinst_LIBRARIES = libi810.a
-if TSLIB
-TSLIB_FLAG = -lts
-endif
libi810_a_SOURCES = \
i810_cursor.c \
@@ -29,7 +26,4 @@ I810_LIBS = \
Xi810_LDADD = \
$(I810_LIBS) \
@KDRIVE_LIBS@ \
- @XSERVER_LIBS@ \
- $(TSLIB_FLAG)
-
-Xi810_DEPENDENCIES = $(I810_LIBS) @KDRIVE_LIBS@
+ @XSERVER_LIBS@
diff --git a/hw/kdrive/i810/i810stub.c b/hw/kdrive/i810/i810stub.c
index c195947c9..364d16bfe 100644
--- a/hw/kdrive/i810/i810stub.c
+++ b/hw/kdrive/i810/i810stub.c
@@ -73,7 +73,8 @@ InitOutput (ScreenInfo *pScreenInfo, int argc, char **argv)
void
InitInput (int argc, char **argv)
{
- KdInitInput (&LinuxMouseFuncs, &LinuxKeyboardFuncs);
+ KdOsAddInputDrivers ();
+ KdInitInput ();
}
void
diff --git a/hw/kdrive/igs/igsstub.c b/hw/kdrive/igs/igsstub.c
index b0ce151f0..39c6fd4ed 100644
--- a/hw/kdrive/igs/igsstub.c
+++ b/hw/kdrive/igs/igsstub.c
@@ -56,7 +56,8 @@ InitOutput (ScreenInfo *pScreenInfo, int argc, char **argv)
void
InitInput (int argc, char **argv)
{
- KdInitInput (&LinuxMouseFuncs, &LinuxKeyboardFuncs);
+ KdOsAddInputDrivers ();
+ KdInitInput ();
}
void
diff --git a/hw/kdrive/itsy/kbd.c b/hw/kdrive/itsy/kbd.c
index 76062c5a8..beb4685d4 100644
--- a/hw/kdrive/itsy/kbd.c
+++ b/hw/kdrive/itsy/kbd.c
@@ -27,7 +27,6 @@
#include <kdrive-config.h>
#endif
#include "itsy.h"
-#include "kkeymap.h"
#include <X11/keysym.h>
#include <linux/itsy_buttons.h>
@@ -167,28 +166,44 @@ ItsyKeyboardLoad (void)
{
KeySym *k;
- itsyButtonState = 0;
- kdMinScanCode = 1;
- kdKeymapWidth = ITSY_WIDTH;
- kdMaxScanCode = (sizeof (ItsyKeymap) / sizeof (ItsyKeymap[0])) / ITSY_WIDTH;
- memcpy (kdKeymap, ItsyKeymap, sizeof (ItsyKeymap));
}
-int
-ItsyKeyboardInit (void)
+static Status
+ItsyKeyboardInit (KdKeyboardInfo *ki)
{
- int butPort;
+ if (!ki)
+ return BadImplementation;
+
+ ki->driverPrivate = open ("/dev/buttons", 0);
- butPort = open ("/dev/buttons", 0);
- fprintf (stderr, "butPort %d\n", butPort);
- return butPort;
+ itsyButtonState = 0;
+ ki->keySyms.minKeyCode = 1;
+ ki->keySyms.maxKeyCode = (sizeof (ItsyKeymap) / sizeof (ItsyKeymap[0])) / ITSY_WIDTH;
+ ki->minScanCode = ki->keySyms.minKeyCode;
+ ki->maxScanCode = ki->keySyms.maxKeyCode;
+ ki->keySyms.mapWidth = ITSY_WIDTH;
+
+ if (ki->keySyms.map)
+ xfree(ki->keySyms.map);
+ ki->keySyms.map = xalloc(sizeof(ItsyKeymap));
+ if (!ki->keySyms.map)
+ return BadAlloc;
+ memcpy (kdKeymap, ItsyKeymap, sizeof (ItsyKeymap));
+
+ return Success;
}
-void
-ItsyKeyboardFini (int fd)
+static void
+ItsyKeyboardDisable (KdKeybdInfo *ki)
{
if (fd >= 0)
- close (fd);
+ close ((int)ki->driverPrivate);
+}
+
+static void
+ItsyKeyboardFini (KdKeybdInfo *ki)
+{
+ return;
}
void
@@ -227,11 +242,13 @@ ItsyKeyboardBell (int volume, int frequency, int duration)
}
KdKeyboardFuncs itsyKeyboardFuncs = {
- ItsyKeyboardLoad,
+ "itsy",
ItsyKeyboardInit,
+ ItsyKeyboardEnable,
ItsyKeyboardRead,
ItsyKeyboardLeds,
ItsyKeyboardBell,
+ ItsyKeyboardDisable
ItsyKeyboardFini,
- 0,
+ NULL,
};
diff --git a/hw/kdrive/itsy/ts.c b/hw/kdrive/itsy/ts.c
index c773c0e4f..180d1fd12 100644
--- a/hw/kdrive/itsy/ts.c
+++ b/hw/kdrive/itsy/ts.c
@@ -63,7 +63,7 @@ itsyTsReadBytes (int fd, char *buf, int len, int min)
}
void
-itsyTsRead (int tsPort)
+itsyTsRead (KdPointerInfo *pi, int tsPort)
{
ts_event event;
long buf[3];
@@ -89,7 +89,7 @@ itsyTsRead (int tsPort)
x = 0;
y = 0;
}
- KdEnqueueMouseEvent (flags, x, y);
+ KdEnqueuePointerEvent (pi, flags, x, y, 0);
}
}
@@ -204,7 +204,8 @@ itsyTsFini (int tsPort)
close (tsPort);
}
-KdMouseFuncs itsyTsMouseFuncs = {
+KdPointerDriver itsyTsMouseDriver = {
+ "itsyts",
itsyTsInit,
itsyTsRead,
itsyTsFini
diff --git a/hw/kdrive/linux/Makefile.am b/hw/kdrive/linux/Makefile.am
index 29959df00..e13d08312 100644
--- a/hw/kdrive/linux/Makefile.am
+++ b/hw/kdrive/linux/Makefile.am
@@ -32,16 +32,3 @@ liblinux_a_SOURCES = \
$(KDRIVE_HW_SOURCES) \
$(TSLIB_C) \
$(TS_C)
-
-liblinux_a_DEPENDENCIES = \
- agp.c \
- bus.c \
- keyboard.c \
- linux.c \
- mouse.c \
- evdev.c \
- ms.c \
- ps2.c \
- $(TSLIB_C) \
- $(TS_C)
-
diff --git a/hw/kdrive/linux/bus.c b/hw/kdrive/linux/bus.c
index be61f891a..8cf5f901f 100644
--- a/hw/kdrive/linux/bus.c
+++ b/hw/kdrive/linux/bus.c
@@ -55,7 +55,7 @@ BusRead (int adbPort, void *closure)
flags |= KD_BUTTON_2;
if ((buf[0] & 1) == 0)
flags |= KD_BUTTON_3;
- KdEnqueueMouseEvent (kdMouseInfo, flags, dx, dy);
+ KdEnqueuePointerEvent (closure, flags, dx, dy, 0);
}
}
@@ -66,36 +66,71 @@ char *BusNames[] = {
#define NUM_BUS_NAMES (sizeof (BusNames) / sizeof (BusNames[0]))
-int BusInputType;
+static int
+BusInit (KdPointerInfo *pi)
+{
+ int i, fd = 0;
+
+ if (!pi->path || (strcmp(pi->path, "auto") == 0))
+ {
+ for (i = 0; i < NUM_BUS_NAMES; i++)
+ {
+ if ((fd = open (BusNames[i], 0)) > 0)
+ {
+ close(fd);
+ if (pi->path)
+ xfree(pi->path);
+ pi->path = KdSaveString(BusNames[i]);
+ return Success;
+ }
+ }
+ }
+ else
+ {
+ if ((fd = open(pi->path, 0)) > 0)
+ {
+ close(fd);
+ return Success;
+ }
+ }
+
+ return !Success;
+}
static int
-BusInit (void)
+BusEnable (KdPointerInfo *pi)
{
- int i;
- int busPort;
- int n = 0;
+ int fd = open(pi->path, 0);
- if (!BusInputType)
- BusInputType = KdAllocInputType ();
-
- for (i = 0; i < NUM_BUS_NAMES; i++)
+ if (fd > 0)
+ {
+ KdRegisterFd(fd, BusRead, pi);
+ pi->driverPrivate = (void *)fd;
+ return Success;
+ }
+ else
{
- busPort = open (BusNames[i], 0);
- {
- KdRegisterFd (BusInputType, busPort, BusRead, 0);
- n++;
- }
+ return !Success;
}
- return n;
}
static void
-BusFini (void)
+BusDisable (KdPointerInfo *pi)
+{
+ KdUnregisterFd(pi, (int)pi->driverPrivate, TRUE);
+}
+
+static void
+BusFini (KdPointerInfo *pi)
{
- KdUnregisterFds (BusInputType, TRUE);
+ return;
}
-KdMouseFuncs BusMouseFuncs = {
+KdPointerDriver BusMouseDriver = {
+ "bus",
BusInit,
- BusFini
+ BusEnable,
+ BusDisable,
+ BusFini,
+ NULL
};
diff --git a/hw/kdrive/linux/evdev.c b/hw/kdrive/linux/evdev.c
index d83b13a6e..6c08cfa62 100644
--- a/hw/kdrive/linux/evdev.c
+++ b/hw/kdrive/linux/evdev.c
@@ -43,98 +43,100 @@
#define ISBITSET(x,y) ((x)[LONG(y)] & BIT(y))
#define OFF(x) ((x)%BITS_PER_LONG)
#define LONG(x) ((x)/BITS_PER_LONG)
-#define BIT(x) (1 << OFF(x))
+#define BIT(x) (1 << OFF(x))
#define SETBIT(x,y) ((x)[LONG(y)] |= BIT(y))
#define CLRBIT(x,y) ((x)[LONG(y)] &= ~BIT(y))
#define ASSIGNBIT(x,y,z) ((x)[LONG(y)] = ((x)[LONG(y)] & ~BIT(y)) | (z << OFF(y)))
typedef struct _kevdevMouse {
/* current device state */
- int rel[REL_MAX + 1];
- int abs[ABS_MAX + 1];
- int prevabs[ABS_MAX + 1];
- long key[NBITS(KEY_MAX + 1)];
+ int rel[REL_MAX + 1];
+ int abs[ABS_MAX + 1];
+ int prevabs[ABS_MAX + 1];
+ long key[NBITS(KEY_MAX + 1)];
/* supported device info */
- long relbits[NBITS(REL_MAX + 1)];
- long absbits[NBITS(ABS_MAX + 1)];
- long keybits[NBITS(KEY_MAX + 1)];
+ long relbits[NBITS(REL_MAX + 1)];
+ long absbits[NBITS(ABS_MAX + 1)];
+ long keybits[NBITS(KEY_MAX + 1)];
struct input_absinfo absinfo[ABS_MAX + 1];
- int max_rel;
- int max_abs;
+ int max_rel;
+ int max_abs;
+
+ int fd;
} Kevdev;
static void
-EvdevMotion (KdMouseInfo *mi)
+EvdevMotion (KdPointerInfo *pi)
{
- Kevdev *ke = mi->driver;
- int i;
+ Kevdev *ke = pi->driverPrivate;
+ int i;
for (i = 0; i <= ke->max_rel; i++)
- if (ke->rel[i])
- {
- int a;
- ErrorF ("rel");
- for (a = 0; a <= ke->max_rel; a++)
- {
- if (ISBITSET (ke->relbits, a))
- ErrorF (" %d=%d", a, ke->rel[a]);
- ke->rel[a] = 0;
- }
- ErrorF ("\n");
- break;
- }
+ if (ke->rel[i])
+ {
+ int a;
+ ErrorF ("rel");
+ for (a = 0; a <= ke->max_rel; a++)
+ {
+ if (ISBITSET (ke->relbits, a))
+ ErrorF (" %d=%d", a, ke->rel[a]);
+ ke->rel[a] = 0;
+ }
+ ErrorF ("\n");
+ break;
+ }
for (i = 0; i < ke->max_abs; i++)
- if (ke->abs[i] != ke->prevabs[i])
- {
- int a;
- ErrorF ("abs");
- for (a = 0; a <= ke->max_abs; a++)
- {
- if (ISBITSET (ke->absbits, a))
- ErrorF (" %d=%d", a, ke->abs[a]);
- ke->prevabs[a] = ke->abs[a];
- }
- ErrorF ("\n");
- break;
- }
+ if (ke->abs[i] != ke->prevabs[i])
+ {
+ int a;
+ ErrorF ("abs");
+ for (a = 0; a <= ke->max_abs; a++)
+ {
+ if (ISBITSET (ke->absbits, a))
+ ErrorF (" %d=%d", a, ke->abs[a]);
+ ke->prevabs[a] = ke->abs[a];
+ }
+ ErrorF ("\n");
+ break;
+ }
}
static void
EvdevRead (int evdevPort, void *closure)
{
- KdMouseInfo *mi = closure;
- Kevdev *ke = mi->driver;
- int i;
- struct input_event events[NUM_EVENTS];
- int n;
+ KdPointerInfo *pi = closure;
+ Kevdev *ke = pi->driverPrivate;
+ int i;
+ struct input_event events[NUM_EVENTS];
+ int n;
n = read (evdevPort, &events, NUM_EVENTS * sizeof (struct input_event));
if (n <= 0)
- return;
+ return;
n /= sizeof (struct input_event);
for (i = 0; i < n; i++)
{
- switch (events[i].type) {
- case EV_SYN:
- break;
- case EV_KEY:
- EvdevMotion (mi);
- ASSIGNBIT(ke->key,events[i].code, events[i].value);
- if (events[i].code < 0x100)
- ErrorF ("key %d %d\n", events[i].code, events[i].value);
- else
- ErrorF ("key 0x%x %d\n", events[i].code, events[i].value);
- break;
- case EV_REL:
- ke->rel[events[i].code] += events[i].value;
- break;
- case EV_ABS:
- ke->abs[events[i].code] = events[i].value;
- break;
- }
+ switch (events[i].type) {
+ case EV_SYN:
+ break;
+ case EV_KEY:
+ EvdevMotion (pi);
+ ASSIGNBIT(ke->key,events[i].code, events[i].value);
+ if (events[i].code < 0x100)
+ ErrorF ("key %d %d\n", events[i].code, events[i].value);
+ else
+ ErrorF ("key 0x%x %d\n", events[i].code, events[i].value);
+ break;
+ case EV_REL:
+ ke->rel[events[i].code] += events[i].value;
+ break;
+ case EV_ABS:
+ ke->abs[events[i].code] = events[i].value;
+ break;
+ }
}
- EvdevMotion (mi);
+ EvdevMotion (pi);
}
int EvdevInputType;
@@ -148,143 +150,153 @@ char *kdefaultEvdev[] = {
#define NUM_DEFAULT_EVDEV (sizeof (kdefaultEvdev) / sizeof (kdefaultEvdev[0]))
-static Bool
-EvdevInit (void)
+static Status
+EvdevInit (KdPointerInfo *pi)
{
- int i;
- int fd;
- KdMouseInfo *mi, *next;
- int n = 0;
- char *prot;
+ int i;
+ int fd;
+ int n = 0;
+ char *prot;
+
+ if (!pi->path) {
+ for (i = 0; i < NUM_DEFAULT_EVDEV; i++) {
+ fd = open (kdefaultEvdev[i], 2);
+ if (fd >= 0) {
+ pi->path = KdSaveString (kdefaultEvdev[i]);
+ break;
+ }
+ }
+ }
+ else {
+ fd = open (pi->path, 2);
+ if (fd < 0) {
+ ErrorF("Failed to open evdev device %s\n", pi->path);
+ return BadMatch;
+ }
+ }
+
+ return Success;
+}
- if (!EvdevInputType)
- EvdevInputType = KdAllocInputType ();
+static Status
+EvdevEnable (KdPointerInfo *pi)
+{
+ int fd;
- for (mi = kdMouseInfo; mi; mi = next)
+ if (!pi || !pi->path)
+ return BadImplementation;
+
+ fd = open(pi->path, 2);
+ if (fd < 0)
+ return BadMatch;
+
+ unsigned long ev[NBITS(EV_MAX)];
+ Kevdev *ke;
+
+ if (ioctl (fd, EVIOCGBIT(0 /*EV*/, sizeof (ev)), ev) < 0)
+ {
+ perror ("EVIOCGBIT 0");
+ close (fd);
+ return BadMatch;
+ }
+ ke = xalloc (sizeof (Kevdev));
+ if (!ke)
+ {
+ close (fd);
+ return BadAlloc;
+ }
+ memset (ke, '\0', sizeof (Kevdev));
+ if (ISBITSET (ev, EV_KEY))
{
- next = mi->next;
- prot = mi->prot;
- if (mi->inputType)
- continue;
- if (!mi->name)
- {
- for (i = 0; i < NUM_DEFAULT_EVDEV; i++)
- {
- fd = open (kdefaultEvdev[i], 2);
- if (fd >= 0)
- {
- mi->name = KdSaveString (kdefaultEvdev[i]);
- break;
- }
- }
- }
- else
- fd = open (mi->name, 2);
-
- if (fd >= 0)
- {
- unsigned long ev[NBITS(EV_MAX)];
- Kevdev *ke;
-
- if (ioctl (fd, EVIOCGBIT(0 /*EV*/, sizeof (ev)), ev) < 0)
- {
- perror ("EVIOCGBIT 0");
- close (fd);
- continue;
- }
- ke = xalloc (sizeof (Kevdev));
- if (!ke)
- {
- close (fd);
- continue;
- }
- memset (ke, '\0', sizeof (Kevdev));
- if (ISBITSET (ev, EV_KEY))
- {
- if (ioctl (fd, EVIOCGBIT (EV_KEY, sizeof (ke->keybits)),
- ke->keybits) < 0)
- {
- perror ("EVIOCGBIT EV_KEY");
- xfree (ke);
- close (fd);
- continue;
- }
- }
- if (ISBITSET (ev, EV_REL))
- {
- if (ioctl (fd, EVIOCGBIT (EV_REL, sizeof (ke->relbits)),
- ke->relbits) < 0)
- {
- perror ("EVIOCGBIT EV_REL");
- xfree (ke);
- close (fd);
- continue;
- }
- for (ke->max_rel = REL_MAX; ke->max_rel >= 0; ke->max_rel--)
- if (ISBITSET(ke->relbits, ke->max_rel))
- break;
- }
- if (ISBITSET (ev, EV_ABS))
- {
- int i;
+ if (ioctl (fd, EVIOCGBIT (EV_KEY, sizeof (ke->keybits)),
+ ke->keybits) < 0)
+ {
+ perror ("EVIOCGBIT EV_KEY");
+ xfree (ke);
+ close (fd);
+ return BadMatch;
+ }
+ }
+ if (ISBITSET (ev, EV_REL))
+ {
+ if (ioctl (fd, EVIOCGBIT (EV_REL, sizeof (ke->relbits)),
+ ke->relbits) < 0)
+ {
+ perror ("EVIOCGBIT EV_REL");
+ xfree (ke);
+ close (fd);
+ return BadMatch;
+ }
+ for (ke->max_rel = REL_MAX; ke->max_rel >= 0; ke->max_rel--)
+ if (ISBITSET(ke->relbits, ke->max_rel))
+ break;
+ }
+ if (ISBITSET (ev, EV_ABS))
+ {
+ int i;
- if (ioctl (fd, EVIOCGBIT (EV_ABS, sizeof (ke->absbits)),
- ke->absbits) < 0)
- {
- perror ("EVIOCGBIT EV_ABS");
- xfree (ke);
- close (fd);
- continue;
- }
- for (ke->max_abs = ABS_MAX; ke->max_abs >= 0; ke->max_abs--)
- if (ISBITSET(ke->absbits, ke->max_abs))
- break;
- for (i = 0; i <= ke->max_abs; i++)
- {
- if (ISBITSET (ke->absbits, i))
- if (ioctl (fd, EVIOCGABS(i), &ke->absinfo[i]) < 0)
- {
- perror ("EVIOCGABS");
- break;
- }
- ke->prevabs[i] = ABS_UNSET;
- }
- if (i <= ke->max_abs)
- {
- xfree (ke);
- close (fd);
- continue;
- }
- }
- mi->driver = ke;
- mi->inputType = EvdevInputType;
- if (KdRegisterFd (EvdevInputType, fd, EvdevRead, (void *) mi))
- n++;
- }
+ if (ioctl (fd, EVIOCGBIT (EV_ABS, sizeof (ke->absbits)),
+ ke->absbits) < 0)
+ {
+ perror ("EVIOCGBIT EV_ABS");
+ xfree (ke);
+ close (fd);
+ return BadMatch;
+ }
+ for (ke->max_abs = ABS_MAX; ke->max_abs >= 0; ke->max_abs--)
+ if (ISBITSET(ke->absbits, ke->max_abs))
+ break;
+ for (i = 0; i <= ke->max_abs; i++)
+ {
+ if (ISBITSET (ke->absbits, i))
+ if (ioctl (fd, EVIOCGABS(i), &ke->absinfo[i]) < 0)
+ {
+ perror ("EVIOCGABS");
+ break;
+ }
+ ke->prevabs[i] = ABS_UNSET;
+ }
+ if (i <= ke->max_abs)
+ {
+ xfree (ke);
+ close (fd);
+ return BadValue;
+ }
+ }
+ if (!KdRegisterFd (fd, EvdevRead, pi)) {
+ xfree (ke);
+ close (fd);
+ return BadAlloc;
}
- return TRUE;
+ pi->driverPrivate = ke;
+ return Success;
}
static void
-EvdevFini (void)
+EvdevDisable (KdPointerInfo *pi)
{
- KdMouseInfo *mi;
+ Kevdev *ke;
- KdUnregisterFds (EvdevInputType, TRUE);
- for (mi = kdMouseInfo; mi; mi = mi->next)
- {
- if (mi->inputType == EvdevInputType)
- {
- xfree (mi->driver);
- mi->driver = 0;
- mi->inputType = 0;
- }
- }
+ if (!pi || !pi->driverPrivate)
+ return;
+
+ KdUnregisterFd (pi, ke->fd, TRUE);
+ xfree (ke);
+ pi->driverPrivate = 0;
+}
+
+static void
+EvdevFini (KdPointerInfo *pi)
+{
}
-KdMouseFuncs LinuxEvdevMouseFuncs = {
+KdPointerDriver LinuxEvdevMouseDriver = {
+ "evdev",
EvdevInit,
+ EvdevEnable,
+ EvdevDisable,
EvdevFini,
+ NULL,
};
#if 0
diff --git a/hw/kdrive/linux/keyboard.c b/hw/kdrive/linux/keyboard.c
index cfafbb38f..ad9907a59 100644
--- a/hw/kdrive/linux/keyboard.c
+++ b/hw/kdrive/linux/keyboard.c
@@ -2,31 +2,40 @@
* $RCSId: xc/programs/Xserver/hw/kdrive/linux/keyboard.c,v 1.10 2001/11/08 10:26:24 keithp Exp $
*
* Copyright © 1999 Keith Packard
+ * XKB integration © 2006 Nokia Corporation, author: Tomas Frydrych <tf@o-hand.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 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.
+ * LinuxKeyboardRead() XKB code based on xf86KbdLnx.c:
+ * Copyright © 1990,91 by Thomas Roell, Dinkelscherben, Germany.
+ * Copyright © 1994-2001 by The XFree86 Project, Inc.
*
- * 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.
+ * Permission is hereby granted, free of charge, to any person obtaining a
+ * copy of this software and associated documentation files (the "Software"),
+ * to deal in the Software without restriction, including without limitation
+ * the rights to use, copy, modify, merge, publish, distribute, sublicense,
+ * and/or sell copies of the Software, and to permit persons to whom the
+ * Software is furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in
+ * all copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, 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_CONFIG_H
#include <kdrive-config.h>
#endif
#include "kdrive.h"
-#include "kkeymap.h"
#include <linux/keyboard.h>
#include <linux/kd.h>
#define XK_PUBLISHING
@@ -34,7 +43,7 @@
#include <termios.h>
#include <sys/ioctl.h>
-extern int LinuxConsoleFd;
+extern int LinuxConsoleFd;
static const KeySym linux_to_x[256] = {
NoSymbol, NoSymbol, NoSymbol, NoSymbol,
@@ -103,7 +112,108 @@ static const KeySym linux_to_x[256] = {
XK_udiaeresis, XK_yacute, XK_thorn, XK_ydiaeresis
};
-static unsigned char tbl[KD_MAX_WIDTH] =
+#ifdef XKB
+/*
+ * Getting a keycode from scancode
+ *
+ * With XKB
+ * --------
+ *
+ * We have to enqueue keyboard events using standard X keycodes which correspond
+ * to AT scancode + 8; this means that we need to translate the Linux scancode
+ * provided by the kernel to an AT scancode -- this translation is not linear
+ * and requires that we use a LUT.
+ *
+ *
+ * Without XKB
+ * -----------
+ *
+ * We can use custom keycodes, which makes things simpler; we define our custom
+ * keycodes as Linux scancodes + KD_KEY_OFFSET
+*/
+
+/*
+ This LUT translates AT scancodes into Linux ones -- the keymap we create
+ for the core X keyboard protocol has to be AT-scancode based so that it
+ corresponds to the Xkb keymap.
+*/
+static unsigned char at2lnx[] =
+{
+ 0x0, /* no valid scancode */
+ 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_AT_KEYS (sizeof(at2lnx)/sizeof(at2lnx[0]))
+#define LNX_KEY_INDEX(n) n < NUM_AT_KEYS ? at2lnx[n] : 0
+
+#else /* not XKB */
+#define LNX_KEY_INDEX(n) n
+#endif
+
+static unsigned char tbl[KD_MAX_WIDTH] =
{
0,
1 << KG_SHIFT,
@@ -112,24 +222,31 @@ static unsigned char tbl[KD_MAX_WIDTH] =
};
static void
-readKernelMapping(void)
+readKernelMapping(KdKeyboardInfo *ki)
{
KeySym *k;
int i, j;
struct kbentry kbe;
int minKeyCode, maxKeyCode;
int row;
+ int fd;
+
+ if (!ki)
+ return;
+ fd = LinuxConsoleFd;
+
minKeyCode = NR_KEYS;
maxKeyCode = 0;
row = 0;
+ ki->keySyms.mapWidth = KD_MAX_WIDTH;
for (i = 0; i < NR_KEYS && row < KD_MAX_LENGTH; ++i)
{
- kbe.kb_index = i;
+ kbe.kb_index = LNX_KEY_INDEX(i);
- k = kdKeymap + row * KD_MAX_WIDTH;
+ k = ki->keySyms.map + row * ki->keySyms.mapWidth;
- for (j = 0; j < KD_MAX_WIDTH; ++j)
+ for (j = 0; j < ki->keySyms.mapWidth; ++j)
{
unsigned short kval;
@@ -137,7 +254,7 @@ readKernelMapping(void)
kbe.kb_table = tbl[j];
kbe.kb_value = 0;
- if (ioctl(LinuxConsoleFd, KDGKBENT, &kbe))
+ if (ioctl(fd, KDGKBENT, &kbe))
continue;
kval = KVAL(kbe.kb_value);
@@ -362,7 +479,7 @@ readKernelMapping(void)
if (minKeyCode == NR_KEYS)
continue;
-
+
if (k[3] == k[2]) k[3] = NoSymbol;
if (k[2] == k[1]) k[2] = NoSymbol;
if (k[1] == k[0]) k[1] = NoSymbol;
@@ -370,28 +487,223 @@ readKernelMapping(void)
if (k[3] == k[0] && k[2] == k[1] && k[2] == NoSymbol) k[3] =NoSymbol;
row++;
}
- kdMinScanCode = minKeyCode;
- kdMaxScanCode = maxKeyCode;
+ ki->minScanCode = minKeyCode;
+ ki->maxScanCode = maxKeyCode;
}
-static void
-LinuxKeyboardLoad (void)
-{
- readKernelMapping ();
-}
+#ifdef XKB
+
+/*
+ * We need these to handle extended scancodes correctly (I could just use the
+ * numbers below, but this makes the code more readable
+ */
+
+/* The prefix codes */
+#define KEY_Prefix0 /* special 0x60 */ 96
+#define KEY_Prefix1 /* special 0x61 */ 97
+
+/* The raw scancodes */
+#define KEY_Enter /* Enter 0x1c */ 28
+#define KEY_LCtrl /* Ctrl(left) 0x1d */ 29
+#define KEY_Slash /* / (Slash) ? 0x35 */ 53
+#define KEY_KP_Multiply /* * 0x37 */ 55
+#define KEY_Alt /* Alt(left) 0x38 */ 56
+#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_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_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
+
+#endif /* XKB */
+
static void
LinuxKeyboardRead (int fd, void *closure)
{
unsigned char buf[256], *b;
int n;
+ unsigned char prefix = 0, scancode = 0;
- while ((n = read (fd, buf, sizeof (buf))) > 0)
- {
+ while ((n = read (fd, buf, sizeof (buf))) > 0) {
b = buf;
- while (n--)
- {
- KdEnqueueKeyboardEvent (b[0] & 0x7f, b[0] & 0x80);
+ while (n--) {
+#ifdef XKB
+ if (!noXkbExtension) {
+ /*
+ * With xkb we use RAW mode for reading the console, which allows us
+ * process extended scancodes.
+ *
+ * See if this is a prefix extending the following keycode
+ */
+ if (!prefix && ((b[0] & 0x7f) == KEY_Prefix0))
+ {
+ prefix = KEY_Prefix0;
+#ifdef DEBUG
+ ErrorF("Prefix0");
+#endif
+ /* swallow this up */
+ b++;
+ continue;
+ }
+ else if (!prefix && ((b[0] & 0x7f) == KEY_Prefix1))
+ {
+ prefix = KEY_Prefix1;
+ ErrorF("Prefix1");
+ /* swallow this up */
+ b++;
+ continue;
+ }
+ scancode = b[0] & 0x7f;
+
+ switch (prefix) {
+ /* from xf86Events.c */
+ case KEY_Prefix0:
+ {
+#ifdef DEBUG
+ ErrorF("Prefix0 scancode: 0x%02x\n", scancode);
+#endif
+ 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:
+ b++;
+ prefix = 0;
+ continue;
+ default:
+#ifdef DEBUG
+ ErrorF("Unreported Prefix0 scancode: 0x%02x\n",
+ scancode);
+#endif
+ /*
+ * "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;
+ }
+ break;
+ }
+
+ case KEY_Prefix1:
+ {
+ /* we do no handle these */
+#ifdef DEBUG
+ ErrorF("Prefix1 scancode: 0x%02x\n", scancode);
+#endif
+ b++;
+ prefix = 0;
+ continue;
+ }
+
+ default: /* should not happen*/
+ case 0: /* do nothing */
+#ifdef DEBUG
+ ErrorF("Plain scancode: 0x%02x\n", scancode);
+#endif
+ ;
+ }
+
+ prefix = 0;
+ }
+ /* without xkb we use mediumraw mode -- enqueue the scancode as is */
+ else
+#endif
+ scancode = b[0] & 0x7f;
+ KdEnqueueKeyboardEvent (closure, scancode, b[0] & 0x80);
b++;
}
}
@@ -399,19 +711,30 @@ LinuxKeyboardRead (int fd, void *closure)
static int LinuxKbdTrans;
static struct termios LinuxTermios;
-static int LinuxKbdType;
-static int
-LinuxKeyboardEnable (int fd, void *closure)
+static Status
+LinuxKeyboardEnable (KdKeyboardInfo *ki)
{
struct termios nTty;
unsigned char buf[256];
int n;
+ int fd;
+
+ if (!ki)
+ return !Success;
+
+ fd = LinuxConsoleFd;
+ ki->driverPrivate = (void *) fd;
ioctl (fd, KDGKBMODE, &LinuxKbdTrans);
tcgetattr (fd, &LinuxTermios);
-
- ioctl(fd, KDSKBMODE, K_MEDIUMRAW);
+#ifdef XKB
+ if (!noXkbExtension)
+ ioctl(fd, KDSKBMODE, K_RAW);
+ else
+#else
+ ioctl(fd, KDSKBMODE, K_MEDIUMRAW);
+#endif
nTty = LinuxTermios;
nTty.c_iflag = (IGNPAR | IGNBRK) & (~PARMRK) & (~ISTRIP);
nTty.c_oflag = 0;
@@ -427,61 +750,56 @@ LinuxKeyboardEnable (int fd, void *closure)
*/
while ((n = read (fd, buf, sizeof (buf))) > 0)
;
- return fd;
+ KdRegisterFd (fd, LinuxKeyboardRead, ki);
+ return Success;
}
static void
-LinuxKeyboardDisable (int fd, void *closure)
+LinuxKeyboardDisable (KdKeyboardInfo *ki)
{
- ioctl(LinuxConsoleFd, KDSKBMODE, LinuxKbdTrans);
- tcsetattr(LinuxConsoleFd, TCSANOW, &LinuxTermios);
-}
+ int fd;
+
+ if (!ki)
+ return;
-static int
-LinuxKeyboardInit (void)
-{
- if (!LinuxKbdType)
- LinuxKbdType = KdAllocInputType ();
-
- KdRegisterFd (LinuxKbdType, LinuxConsoleFd, LinuxKeyboardRead, 0);
- LinuxKeyboardEnable (LinuxConsoleFd, 0);
- KdRegisterFdEnableDisable (LinuxConsoleFd,
- LinuxKeyboardEnable,
- LinuxKeyboardDisable);
- return 1;
-}
+ fd = (int) ki->driverPrivate;
-static void
-LinuxKeyboardFini (void)
-{
- LinuxKeyboardDisable (LinuxConsoleFd, 0);
- KdUnregisterFds (LinuxKbdType, FALSE);
+ KdUnregisterFd(ki, fd, FALSE);
+ ioctl(fd, KDSKBMODE, LinuxKbdTrans);
+ tcsetattr(fd, TCSANOW, &LinuxTermios);
}
-static void
-LinuxKeyboardLeds (int leds)
+static Status
+LinuxKeyboardInit (KdKeyboardInfo *ki)
{
- ioctl (LinuxConsoleFd, KDSETLED, leds & 7);
+ if (!ki)
+ return !Success;
+
+ if (ki->path)
+ xfree(ki->path);
+ ki->path = KdSaveString("console");
+ if (ki->name)
+ xfree(ki->name);
+ ki->name = KdSaveString("Linux console keyboard");
+
+ readKernelMapping (ki);
+
+ return Success;
}
static void
-LinuxKeyboardBell (int volume, int pitch, int duration)
+LinuxKeyboardLeds (KdKeyboardInfo *ki, int leds)
{
- if (volume && pitch)
- {
- ioctl(LinuxConsoleFd, KDMKTONE,
- ((1193190 / pitch) & 0xffff) |
- (((unsigned long)duration *
- volume / 50) << 16));
+ if (!ki)
+ return;
- }
+ ioctl ((int)ki->driverPrivate, KDSETLED, leds & 7);
}
-KdKeyboardFuncs LinuxKeyboardFuncs = {
- LinuxKeyboardLoad,
- LinuxKeyboardInit,
- LinuxKeyboardLeds,
- LinuxKeyboardBell,
- LinuxKeyboardFini,
- 3,
+KdKeyboardDriver LinuxKeyboardDriver = {
+ "keyboard",
+ .Init = LinuxKeyboardInit,
+ .Enable = LinuxKeyboardEnable,
+ .Leds = LinuxKeyboardLeds,
+ .Disable = LinuxKeyboardDisable,
};
diff --git a/hw/kdrive/linux/linux.c b/hw/kdrive/linux/linux.c
index be11ec539..c1fe185bd 100644
--- a/hw/kdrive/linux/linux.c
+++ b/hw/kdrive/linux/linux.c
@@ -373,26 +373,6 @@ LinuxEnable (void)
enabled = TRUE;
}
-static Bool
-LinuxSpecialKey (KeySym sym)
-{
- struct vt_stat vts;
- int con;
-
- if (XK_F1 <= sym && sym <= XK_F12)
- {
- con = sym - XK_F1 + 1;
- memset (&vts, '\0', sizeof (vts)); /* valgrind */
- ioctl (LinuxConsoleFd, VT_GETSTATE, &vts);
- if (con != vts.v_active && (vts.v_state & (1 << con)))
- {
- ioctl (LinuxConsoleFd, VT_ACTIVATE, con);
- return TRUE;
- }
- }
- return FALSE;
-}
-
static void
LinuxDisable (void)
{
@@ -456,6 +436,7 @@ LinuxFini (void)
}
}
close(LinuxConsoleFd); /* make the vt-manager happy */
+ LinuxConsoleFd = -1;
fd = open ("/dev/tty0", O_RDWR|O_NDELAY, 0);
if (fd >= 0)
{
@@ -468,13 +449,32 @@ LinuxFini (void)
return;
}
+void
+KdOsAddInputDrivers ()
+{
+ KdAddPointerDriver(&LinuxMouseDriver);
+ KdAddPointerDriver(&MsMouseDriver);
+ KdAddPointerDriver(&Ps2MouseDriver);
+#ifdef TSLIB
+ KdAddPointerDriver(&TsDriver);
+#endif
+ KdAddKeyboardDriver(&LinuxKeyboardDriver);
+}
+
+static void
+LinuxBell(int volume, int pitch, int duration)
+{
+ if (volume && pitch)
+ ioctl(LinuxConsoleFd, KDMKTONE, ((1193190 / pitch) & 0xffff) |
+ (((unsigned long)duration * volume / 50) << 16));
+}
+
KdOsFuncs LinuxFuncs = {
- LinuxInit,
- LinuxEnable,
- LinuxSpecialKey,
- LinuxDisable,
- LinuxFini,
- 0
+ .Init = LinuxInit,
+ .Enable = LinuxEnable,
+ .Disable = LinuxDisable,
+ .Fini = LinuxFini,
+ .Bell = LinuxBell,
};
void
diff --git a/hw/kdrive/linux/mouse.c b/hw/kdrive/linux/mouse.c
index 5fe997864..77ec3b37b 100644
--- a/hw/kdrive/linux/mouse.c
+++ b/hw/kdrive/linux/mouse.c
@@ -206,10 +206,10 @@ MouseWriteBytes (int fd, unsigned char *c, int n, int timeout)
typedef struct _kmouseProt {
char *name;
- Bool (*Complete) (KdMouseInfo *mi, unsigned char *ev, int ne);
- int (*Valid) (KdMouseInfo *mi, unsigned char *ev, int ne);
- Bool (*Parse) (KdMouseInfo *mi, unsigned char *ev, int ne);
- Bool (*Init) (KdMouseInfo *mi);
+ Bool (*Complete) (KdPointerInfo *pi, unsigned char *ev, int ne);
+ int (*Valid) (KdPointerInfo *pi, unsigned char *ev, int ne);
+ Bool (*Parse) (KdPointerInfo *pi, unsigned char *ev, int ne);
+ Bool (*Init) (KdPointerInfo *pi);
unsigned char headerMask, headerValid;
unsigned char dataMask, dataValid;
Bool tty;
@@ -238,9 +238,9 @@ typedef struct _kmouse {
unsigned long state; /* private per protocol, init to prot->state */
} Kmouse;
-static int mouseValid (KdMouseInfo *mi, unsigned char *ev, int ne)
+static int mouseValid (KdPointerInfo *pi, unsigned char *ev, int ne)
{
- Kmouse *km = mi->driver;
+ Kmouse *km = pi->driverPrivate;
const KmouseProt *prot = km->prot;
int i;
@@ -255,24 +255,24 @@ static int mouseValid (KdMouseInfo *mi, unsigned char *ev, int ne)
return 0;
}
-static Bool threeComplete (KdMouseInfo *mi, unsigned char *ev, int ne)
+static Bool threeComplete (KdPointerInfo *pi, unsigned char *ev, int ne)
{
return ne == 3;
}
-static Bool fourComplete (KdMouseInfo *mi, unsigned char *ev, int ne)
+static Bool fourComplete (KdPointerInfo *pi, unsigned char *ev, int ne)
{
return ne == 4;
}
-static Bool fiveComplete (KdMouseInfo *mi, unsigned char *ev, int ne)
+static Bool fiveComplete (KdPointerInfo *pi, unsigned char *ev, int ne)
{
return ne == 5;
}
-static Bool MouseReasonable (KdMouseInfo *mi, unsigned long flags, int dx, int dy)
+static Bool MouseReasonable (KdPointerInfo *pi, unsigned long flags, int dx, int dy)
{
- Kmouse *km = mi->driver;
+ Kmouse *km = pi->driverPrivate;
if (km->stage == MouseWorking)
return TRUE;
@@ -296,9 +296,9 @@ static Bool MouseReasonable (KdMouseInfo *mi, unsigned long flags, int dx, int d
/*
* Standard PS/2 mouse protocol
*/
-static Bool ps2Parse (KdMouseInfo *mi, unsigned char *ev, int ne)
+static Bool ps2Parse (KdPointerInfo *pi, unsigned char *ev, int ne)
{
- Kmouse *km = mi->driver;
+ Kmouse *km = pi->driverPrivate;
int dx, dy, dz;
unsigned long flags;
unsigned long flagsrelease = 0;
@@ -333,21 +333,21 @@ static Bool ps2Parse (KdMouseInfo *mi, unsigned char *ev, int ne)
if (ev[0] & 0x20)
dy -= 256;
dy = -dy;
- if (!MouseReasonable (mi, flags, dx, dy))
+ if (!MouseReasonable (pi, flags, dx, dy))
return FALSE;
if (km->stage == MouseWorking)
{
- KdEnqueueMouseEvent (mi, flags, dx, dy);
+ KdEnqueuePointerEvent (pi, flags, dx, dy, 0);
if (flagsrelease)
{
flags &= ~flagsrelease;
- KdEnqueueMouseEvent (mi, flags, dx, dy);
+ KdEnqueuePointerEvent (pi, flags, dx, dy, 0);
}
}
return TRUE;
}
-static Bool ps2Init (KdMouseInfo *mi);
+static Bool ps2Init (KdPointerInfo *pi);
static const KmouseProt ps2Prot = {
"ps/2",
@@ -450,9 +450,9 @@ static unsigned char intelli_init[] = {
#define NINIT_INTELLI 3
static int
-ps2SkipInit (KdMouseInfo *mi, int ninit, Bool ret_next)
+ps2SkipInit (KdPointerInfo *pi, int ninit, Bool ret_next)
{
- Kmouse *km = mi->driver;
+ Kmouse *km = pi->driverPrivate;
int c = -1;
int skipping;
Bool waiting;
@@ -481,9 +481,9 @@ ps2SkipInit (KdMouseInfo *mi, int ninit, Bool ret_next)
}
static Bool
-ps2Init (KdMouseInfo *mi)
+ps2Init (KdPointerInfo *pi)
{
- Kmouse *km = mi->driver;
+ Kmouse *km = pi->driverPrivate;
int skipping;
Bool waiting;
int id;
@@ -499,7 +499,7 @@ ps2Init (KdMouseInfo *mi)
return FALSE;
skipping = 0;
waiting = FALSE;
- id = ps2SkipInit (mi, 0, TRUE);
+ id = ps2SkipInit (pi, 0, TRUE);
switch (id) {
case 3:
init = wheel_3button_init;
@@ -524,13 +524,13 @@ ps2Init (KdMouseInfo *mi)
* initialization string. Make sure any partial event is
* skipped
*/
- (void) ps2SkipInit (mi, ninit, FALSE);
+ (void) ps2SkipInit (pi, ninit, FALSE);
return TRUE;
}
-static Bool busParse (KdMouseInfo *mi, unsigned char *ev, int ne)
+static Bool busParse (KdPointerInfo *pi, unsigned char *ev, int ne)
{
- Kmouse *km = mi->driver;
+ Kmouse *km = pi->driverPrivate;
int dx, dy;
unsigned long flags;
@@ -543,10 +543,10 @@ static Bool busParse (KdMouseInfo *mi, unsigned char *ev, int ne)
flags |= KD_BUTTON_2;
if ((ev[0] & 1) == 0)
flags |= KD_BUTTON_3;
- if (!MouseReasonable (mi, flags, dx, dy))
+ if (!MouseReasonable (pi, flags, dx, dy))
return FALSE;
if (km->stage == MouseWorking)
- KdEnqueueMouseEvent (mi, flags, dx, dy);
+ KdEnqueuePointerEvent (pi, flags, dx, dy, 0);
return TRUE;
}
@@ -561,9 +561,9 @@ static const KmouseProt busProt = {
* Standard MS serial protocol, three bytes
*/
-static Bool msParse (KdMouseInfo *mi, unsigned char *ev, int ne)
+static Bool msParse (KdPointerInfo *pi, unsigned char *ev, int ne)
{
- Kmouse *km = mi->driver;
+ Kmouse *km = pi->driverPrivate;
int dx, dy;
unsigned long flags;
@@ -576,10 +576,10 @@ static Bool msParse (KdMouseInfo *mi, unsigned char *ev, int ne)
dx = (signed char)(((ev[0] & 0x03) << 6) | (ev[1] & 0x3F));
dy = (signed char)(((ev[0] & 0x0C) << 4) | (ev[2] & 0x3F));
- if (!MouseReasonable (mi, flags, dx, dy))
+ if (!MouseReasonable (pi, flags, dx, dy))
return FALSE;
if (km->stage == MouseWorking)
- KdEnqueueMouseEvent (mi, flags, dx, dy);
+ KdEnqueuePointerEvent (pi, flags, dx, dy, 0);
return TRUE;
}
@@ -600,9 +600,9 @@ static const KmouseProt msProt = {
* first byte of a synchronized protocol stream and see if it's got
* any bits turned on that can't occur in that fourth byte
*/
-static Bool logiComplete (KdMouseInfo *mi, unsigned char *ev, int ne)
+static Bool logiComplete (KdPointerInfo *pi, unsigned char *ev, int ne)
{
- Kmouse *km = mi->driver;
+ Kmouse *km = pi->driverPrivate;
if ((ev[0] & 0x40) == 0x40)
return ne == 3;
@@ -611,9 +611,9 @@ static Bool logiComplete (KdMouseInfo *mi, unsigned char *ev, int ne)
return FALSE;
}
-static int logiValid (KdMouseInfo *mi, unsigned char *ev, int ne)
+static int logiValid (KdPointerInfo *pi, unsigned char *ev, int ne)
{
- Kmouse *km = mi->driver;
+ Kmouse *km = pi->driverPrivate;
const KmouseProt *prot = km->prot;
int i;
@@ -632,9 +632,9 @@ static int logiValid (KdMouseInfo *mi, unsigned char *ev, int ne)
return 0;
}
-static Bool logiParse (KdMouseInfo *mi, unsigned char *ev, int ne)
+static Bool logiParse (KdPointerInfo *pi, unsigned char *ev, int ne)
{
- Kmouse *km = mi->driver;
+ Kmouse *km = pi->driverPrivate;
int dx, dy;
unsigned long flags;
@@ -660,10 +660,10 @@ static Bool logiParse (KdMouseInfo *mi, unsigned char *ev, int ne)
flags |= km->state & (KD_BUTTON_1|KD_BUTTON_3);
}
- if (!MouseReasonable (mi, flags, dx, dy))
+ if (!MouseReasonable (pi, flags, dx, dy))
return FALSE;
if (km->stage == MouseWorking)
- KdEnqueueMouseEvent (mi, flags, dx, dy);
+ KdEnqueuePointerEvent (pi, flags, dx, dy, 0);
return TRUE;
}
@@ -682,9 +682,9 @@ static const KmouseProt logiProt = {
/*
* Mouse systems protocol, 5 bytes
*/
-static Bool mscParse (KdMouseInfo *mi, unsigned char *ev, int ne)
+static Bool mscParse (KdPointerInfo *pi, unsigned char *ev, int ne)
{
- Kmouse *km = mi->driver;
+ Kmouse *km = pi->driverPrivate;
int dx, dy;
unsigned long flags;
@@ -699,10 +699,10 @@ static Bool mscParse (KdMouseInfo *mi, unsigned char *ev, int ne)
dx = (signed char)(ev[1]) + (signed char)(ev[3]);
dy = - ((signed char)(ev[2]) + (signed char)(ev[4]));
- if (!MouseReasonable (mi, flags, dx, dy))
+ if (!MouseReasonable (pi, flags, dx, dy))
return FALSE;
if (km->stage == MouseWorking)
- KdEnqueueMouseEvent (mi, flags, dx, dy);
+ KdEnqueuePointerEvent (pi, flags, dx, dy, 0);
return TRUE;
}
@@ -810,8 +810,8 @@ MouseNextProtocol (Kmouse *km)
static void
MouseRead (int mousePort, void *closure)
{
- KdMouseInfo *mi = closure;
- Kmouse *km = mi->driver;
+ KdPointerInfo *pi = closure;
+ Kmouse *km = pi->driverPrivate;
unsigned char event[MAX_MOUSE];
int ne;
int c;
@@ -835,7 +835,7 @@ MouseRead (int mousePort, void *closure)
break;
}
event[ne++] = c;
- i = (*km->prot->Valid) (mi, event, ne);
+ i = (*km->prot->Valid) (pi, event, ne);
if (i != 0)
{
#ifdef DEBUG
@@ -867,9 +867,9 @@ MouseRead (int mousePort, void *closure)
}
else
{
- if ((*km->prot->Complete) (mi, event, ne))
+ if ((*km->prot->Complete) (pi, event, ne))
{
- if ((*km->prot->Parse) (mi, event, ne))
+ if ((*km->prot->Parse) (pi, event, ne))
{
switch (km->stage)
{
@@ -896,7 +896,7 @@ MouseRead (int mousePort, void *closure)
km->invalid = 0;
km->tested = 0;
km->valid = 0;
- if (km->prot->Init && !(*km->prot->Init) (mi))
+ if (km->prot->Init && !(*km->prot->Init) (pi))
km->stage = MouseBroken;
}
break;
@@ -923,9 +923,9 @@ MouseRead (int mousePort, void *closure)
int MouseInputType;
char *kdefaultMouse[] = {
+ "/dev/input/mice",
"/dev/mouse",
"/dev/psaux",
- "/dev/input/mice",
"/dev/adbmouse",
"/dev/ttyS0",
"/dev/ttyS1",
@@ -933,81 +933,97 @@ char *kdefaultMouse[] = {
#define NUM_DEFAULT_MOUSE (sizeof (kdefaultMouse) / sizeof (kdefaultMouse[0]))
-static Bool
-MouseInit (void)
+static Status
+MouseInit (KdPointerInfo *pi)
{
int i;
int fd;
Kmouse *km;
- KdMouseInfo *mi, *next;
- int n = 0;
- char *prot;
- if (!MouseInputType)
- MouseInputType = KdAllocInputType ();
-
- for (mi = kdMouseInfo; mi; mi = next)
- {
- next = mi->next;
- prot = mi->prot;
- if (mi->inputType)
- continue;
- if (!mi->name)
- {
- for (i = 0; i < NUM_DEFAULT_MOUSE; i++)
- {
- fd = open (kdefaultMouse[i], 2);
- if (fd >= 0)
- {
- mi->name = KdSaveString (kdefaultMouse[i]);
- break;
- }
- }
- }
- else
- fd = open (mi->name, 2);
+ if (!pi)
+ return BadImplementation;
+
+ if (!pi->path || strcmp(pi->path, "auto") == 0) {
+ for (i = 0; i < NUM_DEFAULT_MOUSE; i++) {
+ fd = open (kdefaultMouse[i], 2);
+ if (fd >= 0) {
+ pi->path = KdSaveString (kdefaultMouse[i]);
+ break;
+ }
+ }
+ }
+ else {
+ fd = open (pi->path, 2);
+ }
- if (fd >= 0)
- {
- km = (Kmouse *) xalloc (sizeof (Kmouse));
- if (km)
- {
- km->iob.fd = fd;
- km->iob.avail = km->iob.used = 0;
- km->prot = 0;
- km->i_prot = 0;
- km->tty = isatty (fd);
- mi->driver = km;
- mi->inputType = MouseInputType;
- MouseFirstProtocol (km, mi->prot);
- if (KdRegisterFd (MouseInputType, fd, MouseRead, (void *) mi))
- n++;
- }
- else
- close (fd);
- }
+ if (fd < 0)
+ return BadMatch;
+
+ close(fd);
+
+ km = (Kmouse *) xalloc (sizeof (Kmouse));
+ if (km) {
+ km->iob.avail = km->iob.used = 0;
+ MouseFirstProtocol(km, "exps/2");
+ km->i_prot = 0;
+ km->tty = isatty (fd);
+ km->iob.fd = -1;
+ pi->driverPrivate = km;
}
- return TRUE;
+ else {
+ close (fd);
+ return BadAlloc;
+ }
+
+ return Success;
}
-static void
-MouseFini (void)
+static Status
+MouseEnable (KdPointerInfo *pi)
{
- KdMouseInfo *mi;
+ Kmouse *km;
+
+ if (!pi || !pi->driverPrivate || !pi->path)
+ return BadImplementation;
- KdUnregisterFds (MouseInputType, TRUE);
- for (mi = kdMouseInfo; mi; mi = mi->next)
+ km = pi->driverPrivate;
+
+ km->iob.fd = open(pi->path, 2);
+ if (km->iob.fd < 0)
+ return BadMatch;
+
+ if (!KdRegisterFd (km->iob.fd, MouseRead, pi))
{
- if (mi->inputType == MouseInputType)
- {
- xfree (mi->driver);
- mi->driver = 0;
- mi->inputType = 0;
- }
+ close(km->iob.fd);
+ return BadAlloc;
}
+
+ return Success;
+}
+
+static void
+MouseDisable (KdPointerInfo *pi)
+{
+ Kmouse *km;
+ if (!pi || !pi->driverPrivate)
+ return;
+
+ km = pi->driverPrivate;
+ KdUnregisterFd (pi, km->iob.fd, TRUE);
+}
+
+static void
+MouseFini (KdPointerInfo *pi)
+{
+ xfree (pi->driverPrivate);
+ pi->driverPrivate = NULL;
}
-KdMouseFuncs LinuxMouseFuncs = {
+KdPointerDriver LinuxMouseDriver = {
+ "mouse",
MouseInit,
+ MouseEnable,
+ MouseDisable,
MouseFini,
+ NULL,
};
diff --git a/hw/kdrive/linux/ms.c b/hw/kdrive/linux/ms.c
index 7f046bdc3..e62cebc39 100644
--- a/hw/kdrive/linux/ms.c
+++ b/hw/kdrive/linux/ms.c
@@ -90,41 +90,50 @@ MsRead (int port, void *closure)
dy = (char)(((b[0] & 0x0C) << 4) | (b[2] & 0x3F));
n -= 3;
b += 3;
- KdEnqueueMouseEvent (kdMouseInfo, flags, dx, dy);
+ KdEnqueuePointerEvent (closure, flags, dx, dy, 0);
}
}
}
-int MsInputType;
+static Status
+MsInit (KdPointerInfo *pi)
+{
+ if (!pi)
+ return BadImplementation;
+
+ if (!pi->path || strcmp(pi->path, "auto"))
+ pi->path = KdSaveString("/dev/mouse");
+ if (!pi->name)
+ pi->name = KdSaveString("Microsoft protocol mouse");
+
+ return Success;
+}
-static int
-MsInit (void)
+static Status
+MsEnable (KdPointerInfo *pi)
{
int port;
- char *device = "/dev/mouse";
struct termios t;
int ret;
- if (!MsInputType)
- MsInputType = KdAllocInputType ();
- port = open (device, O_RDWR | O_NONBLOCK);
+ port = open (pi->path, O_RDWR | O_NONBLOCK);
if(port < 0) {
- ErrorF("Couldn't open %s (%d)\n", device, (int)errno);
+ ErrorF("Couldn't open %s (%d)\n", pi->path, (int)errno);
return 0;
} else if (port == 0) {
ErrorF("Opening %s returned 0! Please complain to Keith.\n",
- device);
+ pi->path);
goto bail;
}
if(!isatty(port)) {
- ErrorF("%s is not a tty\n", device);
+ ErrorF("%s is not a tty\n", pi->path);
goto bail;
}
ret = tcgetattr(port, &t);
if(ret < 0) {
- ErrorF("Couldn't tcgetattr(%s): %d\n", device, errno);
+ ErrorF("Couldn't tcgetattr(%s): %d\n", pi->path, errno);
goto bail;
}
t.c_iflag &= ~ (IGNBRK | BRKINT | PARMRK | ISTRIP | INLCR |
@@ -140,24 +149,36 @@ MsInit (void)
t.c_cc[VTIME] = 0;
ret = tcsetattr(port, TCSANOW, &t);
if(ret < 0) {
- ErrorF("Couldn't tcsetattr(%s): %d\n", device, errno);
+ ErrorF("Couldn't tcsetattr(%s): %d\n", pi->path, errno);
goto bail;
}
- if (KdRegisterFd (MsInputType, port, MsRead, (void *) 0))
- return 1;
+ if (KdRegisterFd (port, MsRead, pi))
+ return TRUE;
+ pi->driverPrivate = (void *)port;
+
+ return Success;
bail:
close(port);
- return 0;
+ return BadMatch;
+}
+
+static void
+MsDisable (KdPointerInfo *pi)
+{
+ KdUnregisterFd (pi, (int)pi->driverPrivate, TRUE);
}
static void
-MsFini (void)
+MsFini (KdPointerInfo *pi)
{
- KdUnregisterFds (MsInputType, TRUE);
}
-KdMouseFuncs MsMouseFuncs = {
+KdPointerDriver MsMouseDriver = {
+ "ms",
MsInit,
- MsFini
+ MsEnable,
+ MsDisable,
+ MsFini,
+ NULL,
};
diff --git a/hw/kdrive/linux/ps2.c b/hw/kdrive/linux/ps2.c
index b59dbfac7..5d523a210 100644
--- a/hw/kdrive/linux/ps2.c
+++ b/hw/kdrive/linux/ps2.c
@@ -112,42 +112,78 @@ Ps2Read (int ps2Port, void *closure)
dy = -dy;
n -= 3;
b += 3;
- KdEnqueueMouseEvent (kdMouseInfo, flags, dx, dy);
+ KdEnqueuePointerEvent (closure, flags, dx, dy, 0);
}
}
}
-int Ps2InputType;
-
-static int
-Ps2Init (void)
+static Status
+Ps2Init (KdPointerInfo *pi)
{
- int i;
- int ps2Port;
- int n;
-
- if (!Ps2InputType)
- Ps2InputType = KdAllocInputType ();
- n = 0;
- for (i = 0; i < NUM_PS2_NAMES; i++)
- {
- ps2Port = open (Ps2Names[i], 0);
- if (ps2Port >= 0)
- {
- if (KdRegisterFd (Ps2InputType, ps2Port, Ps2Read, (void *) i))
- n++;
+ int ps2Port, i;
+
+ if (!pi->path) {
+ for (i = 0; i < NUM_PS2_NAMES; i++) {
+ ps2Port = open (Ps2Names[i], 0);
+ if (ps2Port >= 0) {
+ pi->path = KdSaveString (Ps2Names[i]);
+ break;
+ }
}
}
- return n;
+ else {
+ ps2Port = open (pi->path, 0);
+ }
+
+ if (ps2Port < 0)
+ return BadMatch;
+
+ close(ps2Port);
+ if (!pi->name)
+ pi->name = KdSaveString ("PS/2 Mouse");
+
+ return Success;
+}
+
+static Status
+Ps2Enable (KdPointerInfo *pi)
+{
+ int fd;
+
+ if (!pi)
+ return BadImplementation;
+
+ fd = open (pi->path, 0);
+ if (fd < 0)
+ return BadMatch;
+
+ if (!KdRegisterFd (fd, Ps2Read, pi)) {
+ close(fd);
+ return BadAlloc;
+ }
+
+ pi->driverPrivate = (void *)fd;
+
+ return Success;
+}
+
+
+static void
+Ps2Disable (KdPointerInfo *pi)
+{
+ KdUnregisterFd (pi, (int)pi->driverPrivate, TRUE);
}
static void
-Ps2Fini (void)
+Ps2Fini (KdPointerInfo *pi)
{
- KdUnregisterFds (Ps2InputType, TRUE);
}
-KdMouseFuncs Ps2MouseFuncs = {
+KdPointerDriver Ps2MouseDriver = {
+ "ps2",
Ps2Init,
- Ps2Fini
+ Ps2Enable,
+ Ps2Disable,
+ Ps2Fini,
+ NULL,
};
diff --git a/hw/kdrive/linux/ts.c b/hw/kdrive/linux/ts.c
index 70c736117..701fdc891 100644
--- a/hw/kdrive/linux/ts.c
+++ b/hw/kdrive/linux/ts.c
@@ -75,7 +75,7 @@ TsReadBytes (int fd, char *buf, int len, int min)
static void
TsRead (int tsPort, void *closure)
{
- KdMouseInfo *mi = closure;
+ KdPointerInfo *pi = closure;
TS_EVENT event;
int n;
long x, y;
@@ -117,7 +117,7 @@ TsRead (int tsPort, void *closure)
lastx = 0;
lasty = 0;
}
- KdEnqueueMouseEvent (mi, flags, x, y);
+ KdEnqueuePointerEvent (pi, flags, x, y, 0);
}
}
@@ -129,95 +129,83 @@ char *TsNames[] = {
#define NUM_TS_NAMES (sizeof (TsNames) / sizeof (TsNames[0]))
-int TsInputType;
-
-static int
-TsEnable (int fd, void *closure)
-{
- KdMouseInfo *mi = (KdMouseInfo *)closure;
-
- return open (mi->name, 0);
-}
-
-static void
-TsDisable (int fd, void *closure)
-{
- close (fd);
-}
-
-static int
-TsInit (void)
+static Status
+TsInit (KdPointerInfo *pi)
{
int i;
int fd;
- KdMouseInfo *mi, *next;
int n = 0;
- if (!TsInputType)
- TsInputType = KdAllocInputType ();
-
- for (mi = kdMouseInfo; mi; mi = next)
- {
- next = mi->next;
- if (mi->inputType)
- continue;
- if (!mi->name)
- {
- for (i = 0; i < NUM_TS_NAMES; i++)
- {
- fd = open (TsNames[i], 0);
- if (fd >= 0)
- {
- mi->name = KdSaveString (TsNames[i]);
- break;
- }
- }
- }
- else
- fd = open (mi->name, 0);
- if (fd >= 0)
- {
- struct h3600_ts_calibration cal;
- /*
- * Check to see if this is a touch screen
- */
- if (ioctl (fd, TS_GET_CAL, &cal) != -1)
- {
- mi->driver = (void *) fd;
- mi->inputType = TsInputType;
- if (KdRegisterFd (TsInputType, fd, TsRead, (void *) mi))
- {
- /* Set callbacks for vt switches etc */
- KdRegisterFdEnableDisable (fd, TsEnable, TsDisable);
-
- n++;
- }
- }
- else
- close (fd);
+ if (!pi->path || strcmp(pi->path, "auto") == 0) {
+ for (i = 0; i < NUM_TS_NAMES; i++) {
+ fd = open (TsNames[i], 0);
+ if (fd >= 0) {
+ pi->path = KdSaveString (TsNames[i]);
+ break;
+ }
}
}
+ else {
+ fd = open (pi->path, 0);
+ }
+
+ if (fd < 0) {
+ ErrorF("TsInit: Couldn't open %s\n", pi->path);
+ return BadMatch;
+ }
+ close(fd);
+
+ pi->name = KdSaveString("H3600 Touchscreen");
- return 0;
+ return Success;
}
-static void
-TsFini (void)
+static Status
+TsEnable (KdPointerInfo *pi)
{
- KdMouseInfo *mi;
+ int fd;
- KdUnregisterFds (TsInputType, TRUE);
- for (mi = kdMouseInfo; mi; mi = mi->next)
- {
- if (mi->inputType == TsInputType)
- {
- mi->driver = 0;
- mi->inputType = 0;
+ if (!pi || !pi->path)
+ return BadImplementation;
+
+ fd = open(pi->path, 0);
+
+ if (fd < 0) {
+ ErrorF("TsInit: Couldn't open %s\n", pi->path);
+ return BadMatch;
+ }
+
+ struct h3600_ts_calibration cal;
+ /*
+ * Check to see if this is a touch screen
+ */
+ if (ioctl (fd, TS_GET_CAL, &cal) != -1) {
+ mi->driverPrivate = (void *) fd;
+ if (!KdRegisterFd (fd, TsRead, (void *) mi)) {
+ close(fd);
+ return BadAlloc;
}
}
+ else {
+ ErrorF("TsEnable: %s is not a touchscreen\n", pi->path);
+ close (fd);
+ return BadMatch;
+ }
+
+ return Success;
+}
+
+static void
+TsFini (KdPointerInfo *pi)
+{
+ KdUnregisterFds (pi, (int)pi->driverPrivate, TRUE);
+ mi->driverPrivate = NULL;
}
-KdMouseFuncs TsFuncs = {
+KdPointerDriver TsDriver = {
TsInit,
- TsFini
+ TsEnable,
+ TsDisable,
+ TsFini,
+ NULL,
};
diff --git a/hw/kdrive/linux/tslib.c b/hw/kdrive/linux/tslib.c
index c4caff922..41b74fabd 100644
--- a/hw/kdrive/linux/tslib.c
+++ b/hw/kdrive/linux/tslib.c
@@ -1,6 +1,6 @@
/*
- * $RCSId: xc/programs/Xserver/hw/kdrive/linux/tslib.c,v 1.1 2002/11/01 22:27:49 keithp Exp $
- * TSLIB based touchscreen driver for TinyX
+ * TSLIB based touchscreen driver for KDrive
+ * Porting to new input API and event queueing by Daniel Stone.
* Derived from ts.c by Keith Packard
* Derived from ps2.c by Jim Gettys
*
@@ -8,66 +8,33 @@
* Copyright © 2000 Compaq Computer Corporation
* Copyright © 2002 MontaVista Software Inc.
* Copyright © 2005 OpenedHand Ltd.
+ * Copyright © 2006 Nokia 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 Keith Packard or Compaq not be used in
- * advertising or publicity pertaining to distribution of the software without
- * specific, written prior permission. Keith Packard and Compaq makes no
- * representations about the suitability of this software for any purpose. It
- * is provided "as is" without express or implied warranty.
+ * documentation, and that the name of the authors and/or copyright holders
+ * not be used in advertising or publicity pertaining to distribution of the
+ * software without specific, written prior permission. The authors and/or
+ * copyright holders make no representations about the suitability of this
+ * software for any purpose. It is provided "as is" without express or
+ * implied warranty.
*
- * KEITH PACKARD AND COMPAQ DISCLAIM 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.
- *
- * Permission to use, copy, modify, distribute, and sell this software and its
- * documentation for any purpose is hereby granted without fee, provided that
- * the above copyright notice appear in all copies and that both that
- * copyright notice and this permission notice appear in supporting
- * documentation, and that the name of Michael Taht or MontaVista not be used in
- * advertising or publicity pertaining to distribution of the software without
- * specific, written prior permission. Michael Taht and Montavista make no
- * representations about the suitability of this software for any purpose. It
- * is provided "as is" without express or implied warranty.
- *
- * MICHAEL TAHT AND MONTAVISTA DISCLAIM ALL WARRANTIES WITH REGARD TO THIS
- * SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS,
- * IN NO EVENT SHALL EITHER BE LIABLE FOR ANY SPECIAL, INDIRECT OR
- * CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
- * DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
- * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
- * PERFORMANCE OF THIS SOFTWARE.
- *
- * Permission to use, copy, modify, distribute, and sell this software and its
- * documentation for any purpose is hereby granted without fee, provided that
- * the above copyright notice appear in all copies and that both that
- * copyright notice and this permission notice appear in supporting
- * documentation, and that the name of Matthew Allum or OpenedHand not be used in
- * advertising or publicity pertaining to distribution of the software without
- * specific, written prior permission. Matthew Allum and OpenedHand make no
- * representations about the suitability of this software for any purpose. It
- * is provided "as is" without express or implied warranty.
- *
- * MATTHEW ALLUM AND OPENEDHAND DISCLAIM ALL WARRANTIES WITH REGARD TO THIS
- * SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS,
- * IN NO EVENT SHALL EITHER BE LIABLE FOR ANY SPECIAL, INDIRECT OR
- * CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
- * DATA OR PROFITS, WHETHER 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 AUTHORS AND/OR COPYRIGHT HOLDERS DISCLAIM ALL WARRANTIES WITH REGARD
+ * TO THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
+ * AND FITNESS, IN NO EVENT SHALL THE AUTHORS AND/OR 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_CONFIG_H
+#ifdef HAVE_KDRIVE_CONFIG_H
#include <kdrive-config.h>
#endif
+
#define NEED_EVENTS
#include <X11/X.h>
#include <X11/Xproto.h>
@@ -77,186 +44,150 @@
#include "kdrive.h"
#include <sys/ioctl.h>
#include <tslib.h>
-
-static struct tsdev *tsDev = NULL;
-
-static char *TsNames[] = {
- NULL, /* set via TSLIB_TSDEVICE */
- "/dev/ts",
- "/dev/touchscreen/0",
+#include <dirent.h>
+#include <linux/input.h>
+
+struct TslibPrivate {
+ int fd;
+ int lastx, lasty;
+ struct tsdev *tsDev;
+ void (*raw_event_hook)(int x, int y, int pressure, void *closure);
+ void *raw_event_closure;
+ int phys_screen;
};
-#define NUM_TS_NAMES (sizeof (TsNames) / sizeof (TsNames[0]))
-
-/* For XCalibrate extension */
-void (*tslib_raw_event_hook)(int x, int y, int pressure, void *closure);
-void *tslib_raw_event_closure;
-
-int TsInputType = 0;
-int KdTsPhyScreen = 0; /* XXX Togo .. */
static void
-TsRead (int tsPort, void *closure)
+TsRead (int fd, void *closure)
{
- KdMouseInfo *mi = closure;
- struct ts_sample event;
- long x, y;
- unsigned long flags;
-
- if (tslib_raw_event_hook)
- {
- /* XCalibrate Ext */
- if (ts_read_raw(tsDev, &event, 1) == 1)
- {
- tslib_raw_event_hook (event.x,
- event.y,
- event.pressure,
- tslib_raw_event_closure);
- }
- return;
- }
+ KdPointerInfo *pi = closure;
+ struct TslibPrivate *private = pi->driverPrivate;
+ struct ts_sample event;
+ long x = 0, y = 0;
+ unsigned long flags;
+
+ if (private->raw_event_hook) {
+ while (ts_read_raw(private->tsDev, &event, 1) == 1)
+ private->raw_event_hook (event.x, event.y, event.pressure,
+ private->raw_event_closure);
+ return;
+ }
- while (ts_read(tsDev, &event, 1) == 1)
- {
- flags = (event.pressure) ? KD_BUTTON_1 : 0;
- x = event.x;
- y = event.y;
-
- KdEnqueueMouseEvent (mi, flags, x, y);
- }
+ while (ts_read(private->tsDev, &event, 1) == 1) {
+ if (event.pressure) {
+ flags = KD_BUTTON_1;
+
+ /*
+ * Here we test for the touch screen driver actually being on the
+ * touch screen, if it is we send absolute coordinates. If not,
+ * then we send delta's so that we can track the entire vga screen.
+ */
+ if (KdCurScreen == private->phys_screen) {
+ x = event.x;
+ y = event.y;
+ } else {
+ flags |= KD_MOUSE_DELTA;
+ if ((private->lastx == 0) || (private->lasty == 0)) {
+ x = event.x;
+ y = event.y;
+ } else {
+ x = event.x - private->lastx;
+ y = event.y - private->lasty;
+ }
+ }
+ private->lastx = x;
+ private->lasty = y;
+ } else {
+ flags = 0;
+ x = private->lastx;
+ y = private->lasty;
+ }
+
+ KdEnqueuePointerEvent (pi, flags, x, y, event.pressure);
+ }
}
-static int
-TsLibOpen(char *dev)
+static Status
+TslibEnable (KdPointerInfo *pi)
{
- if(!(tsDev = ts_open(dev, 0)))
- return -1;
-
- if (ts_config(tsDev))
- return -1;
+ struct TslibPrivate *private = pi->driverPrivate;
+
+ private->raw_event_hook = NULL;
+ private->raw_event_closure = NULL;
+ private->tsDev = ts_open(pi->path, 0);
+ private->fd = ts_fd(private->tsDev);
+ if (!private->tsDev || ts_config(private->tsDev) || private->fd < 0) {
+ ErrorF("[tslib/TslibEnable] failed to open %s\n", pi->path);
+ if (private->fd > 0);
+ close(private->fd);
+ return BadAlloc;
+ }
- return ts_fd(tsDev);
+ KdRegisterFd(private->fd, TsRead, pi);
+
+ return Success;
}
-static int
-TslibEnable (int not_needed_fd, void *closure)
+
+static void
+TslibDisable (KdPointerInfo *pi)
{
- KdMouseInfo *mi = closure;
- int fd = 0;
+ struct TslibPrivate *private = pi->driverPrivate;
- if ((fd = TsLibOpen(mi->name)) == -1)
- ErrorF ("Unable to re-enable TSLib ( on %s )", mi->name);
+ if (private->fd)
+ KdUnregisterFd(pi, private->fd, TRUE);
- return fd;
-}
+ if (private->tsDev)
+ ts_close(private->tsDev);
-static void
-TslibDisable (int fd, void *closure)
-{
- if (tsDev)
- ts_close(tsDev);
- tsDev = NULL;
+ private->fd = 0;
+ private->tsDev = NULL;
}
-static int
-TslibInit (void)
-{
- int i, j = 0;
- KdMouseInfo *mi, *next;
- int fd = 0;
- int req_type;
- if (!TsInputType)
- {
- TsInputType = KdAllocInputType ();
- KdParseMouse(0); /* allocate safe slot in kdMouseInfo */
- req_type = 0;
- }
- else req_type = TsInputType; /* is being re-inited */
-
- for (mi = kdMouseInfo; mi; mi = next)
- {
- next = mi->next;
-
- /* find a usuable slot */
- if (mi->inputType != req_type)
- continue;
-
- /* Check for tslib env var device setting */
- if ((TsNames[0] = getenv("TSLIB_TSDEVICE")) == NULL)
- j++;
-
- if (!mi->name)
- {
- for (i = j; i < NUM_TS_NAMES; i++)
- {
- fd = TsLibOpen(TsNames[i]);
-
- if (fd >= 0)
- {
- mi->name = KdSaveString (TsNames[i]);
- break;
- }
- }
- }
- else
- fd = TsLibOpen(mi->name);
-
- if (fd >= 0 && tsDev != NULL)
- {
- mi->driver = (void *) fd;
- mi->inputType = TsInputType;
-
- KdRegisterFd (TsInputType, fd, TsRead, (void *) mi);
-
- /* Set callbacks for vt switches etc */
- KdRegisterFdEnableDisable (fd, TslibEnable, TslibDisable);
-
- return TRUE;
- }
- }
-
- ErrorF ("Failed to open TSLib device, tried ");
- for (i = j; i < NUM_TS_NAMES; i++)
- ErrorF ("%s ", TsNames[i]);
- ErrorF (".\n");
- if (!TsNames[0])
- ErrorF ("Try setting TSLIB_TSDEVICE to valid /dev entry?\n");
-
- if (fd > 0)
- close(fd);
-
- return FALSE;
+static Status
+TslibInit (KdPointerInfo *pi)
+{
+ int fd = 0, i = 0;
+ DIR *inputdir = NULL;
+ struct dirent *inputent = NULL;
+ struct tsdev *tsDev = NULL;
+ struct TslibPrivate *private = NULL;
+
+ if (!pi || !pi->dixdev)
+ return !Success;
+
+ pi->driverPrivate = (struct TslibPrivate *)
+ xcalloc(sizeof(struct TslibPrivate), 1);
+ if (!pi->driverPrivate)
+ return !Success;
+
+ private = pi->driverPrivate;
+ /* hacktastic */
+ private->phys_screen = 0;
+ pi->nAxes = 3;
+ pi->name = KdSaveString("Touchscreen");
+ pi->inputClass = KD_TOUCHSCREEN;
+
+ return Success;
}
+
static void
-TslibFini (void)
+TslibFini (KdPointerInfo *pi)
{
- KdMouseInfo *mi;
-
- KdUnregisterFds (TsInputType, TRUE);
- for (mi = kdMouseInfo; mi; mi = mi->next)
- {
- if (mi->inputType == TsInputType)
- {
- if(mi->driver)
- {
- ts_close(tsDev);
- tsDev = NULL;
- }
- mi->driver = 0;
-
- /* If below is set to 0, then MouseInit() will trash it,
- * setting to 'mouse type' ( via server reset). Therefore
- * Leave it alone and work around in TslibInit() ( see
- * req_type ).
- */
- /* mi->inputType = 0; */
- }
+ if (pi->driverPrivate) {
+ xfree(pi->driverPrivate);
+ pi->driverPrivate = NULL;
}
}
-KdMouseFuncs TsFuncs = {
+
+KdPointerDriver TsDriver = {
+ "tslib",
TslibInit,
- TslibFini
+ TslibEnable,
+ TslibDisable,
+ TslibFini,
+ NULL,
};
diff --git a/hw/kdrive/mach64/Makefile.am b/hw/kdrive/mach64/Makefile.am
index 299565fdb..67712e262 100644
--- a/hw/kdrive/mach64/Makefile.am
+++ b/hw/kdrive/mach64/Makefile.am
@@ -30,8 +30,4 @@ MACH64_LIBS = \
Xmach64_LDADD = \
$(MACH64_LIBS) \
@KDRIVE_LIBS@ \
- @XSERVER_LIBS@ \
- $(TSLIB_FLAG)
-
-
-Xmach64_DEPENDENCIES = $(MACH64_LIBS) @KDRIVE_LIBS@
+ @XSERVER_LIBS@
diff --git a/hw/kdrive/mach64/mach64stub.c b/hw/kdrive/mach64/mach64stub.c
index 60808c26d..f3fef3c12 100644
--- a/hw/kdrive/mach64/mach64stub.c
+++ b/hw/kdrive/mach64/mach64stub.c
@@ -56,7 +56,8 @@ InitOutput (ScreenInfo *pScreenInfo, int argc, char **argv)
void
InitInput (int argc, char **argv)
{
- KdInitInput (&LinuxMouseFuncs, &LinuxKeyboardFuncs);
+ KdOsAddInputDrivers ();
+ KdInitInput ();
}
void
diff --git a/hw/kdrive/mga/Makefile.am b/hw/kdrive/mga/Makefile.am
index 64d260ede..ee0798915 100644
--- a/hw/kdrive/mga/Makefile.am
+++ b/hw/kdrive/mga/Makefile.am
@@ -7,10 +7,6 @@ bin_PROGRAMS = Xmga
noinst_LIBRARIES = libmga.a
-if TSLIB
-TSLIB_FLAG = -lts
-endif
-
libmga_a_SOURCES = \
mgadraw.c \
g400_composite.c \
@@ -29,7 +25,4 @@ MGA_LIBS = \
Xmga_LDADD = \
$(MGA_LIBS) \
@KDRIVE_LIBS@ \
- @XSERVER_LIBS@ \
- $(TSLIB_FLAG)
-
-Xmga_DEPENDENCIES = $(MGA_LIBS) @KDRIVE_LIBS@
+ @XSERVER_LIBS@
diff --git a/hw/kdrive/mga/g400_composite.c b/hw/kdrive/mga/g400_composite.c
index 671e517fb..da2e8b810 100644
--- a/hw/kdrive/mga/g400_composite.c
+++ b/hw/kdrive/mga/g400_composite.c
@@ -286,10 +286,8 @@ mgaCheckComposite(int op, PicturePtr pSrcPicture, PicturePtr pMaskPicture,
if (pMaskPicture->componentAlpha)
MGA_FALLBACK(("Component alpha unsupported"));
- switch (pDstPicture->format) {
- case PICT_a8:
+ if (pDstPicture->format == PICT_a8)
MGA_FALLBACK(("render to A8 unsupported"));
- }
return TRUE;
}
diff --git a/hw/kdrive/mga/mgastub.c b/hw/kdrive/mga/mgastub.c
index ebb40fd19..5afbf7fcc 100644
--- a/hw/kdrive/mga/mgastub.c
+++ b/hw/kdrive/mga/mgastub.c
@@ -45,7 +45,8 @@ InitOutput (ScreenInfo *pScreenInfo, int argc, char **argv)
void
InitInput (int argc, char **argv)
{
- KdInitInput (&LinuxMouseFuncs, &LinuxKeyboardFuncs);
+ KdOsAddInputDrivers ();
+ KdInitInput ();
}
void
diff --git a/hw/kdrive/neomagic/Makefile.am b/hw/kdrive/neomagic/Makefile.am
index b37bfc303..9a1af990c 100644
--- a/hw/kdrive/neomagic/Makefile.am
+++ b/hw/kdrive/neomagic/Makefile.am
@@ -16,10 +16,6 @@ INCLUDES = \
bin_PROGRAMS = Xneomagic
-if TSLIB
-TSLIB_FLAG = -lts
-endif
-
noinst_LIBRARIES = libneomagic.a
libneomagic_a_SOURCES = \
@@ -41,7 +37,4 @@ NEOMAGIC_LIBS = \
Xneomagic_LDADD = \
$(NEOMAGIC_LIBS) \
@KDRIVE_LIBS@ \
- @XSERVER_LIBS@ \
- $(TSLIB_FLAG)
-
-Xneomagic_DEPENDENCIES = $(NEOMAGIC_LIBS) @KDRIVE_LIBS@
+ @XSERVER_LIBS@
diff --git a/hw/kdrive/neomagic/neomagic.h b/hw/kdrive/neomagic/neomagic.h
index b91e81e8a..9b100051b 100644
--- a/hw/kdrive/neomagic/neomagic.h
+++ b/hw/kdrive/neomagic/neomagic.h
@@ -26,14 +26,10 @@
#include <backend.h>
#include "kxv.h"
#include "klinux.h"
+#include "vesa.h"
-#define DEBUG
-#ifdef DEBUG
-#define DBGOUT(fmt,a...) fprintf (stderr, fmt, ##a)
-#else
-#define DBGOUT(fmt,a...)
-#endif
+#define DBGOUT DebugF
#define ENTER() DBGOUT("Enter %s\n", __FUNCTION__)
#define LEAVE() DBGOUT("Leave %s\n", __FUNCTION__)
diff --git a/hw/kdrive/neomagic/neomagicstub.c b/hw/kdrive/neomagic/neomagicstub.c
index 308f4a2c1..c7ec83b44 100644
--- a/hw/kdrive/neomagic/neomagicstub.c
+++ b/hw/kdrive/neomagic/neomagicstub.c
@@ -51,10 +51,8 @@ InitOutput (ScreenInfo *pScreenInfo, int argc, char **argv)
void
InitInput (int argc, char **argv)
{
- KdInitInput (&LinuxMouseFuncs, &LinuxKeyboardFuncs);
-#ifdef TOUCHSCREEN
- KdAddMouseDriver (&TsFuncs);
-#endif
+ KdOsAddInputDrivers ();
+ KdInitInput ();
}
void
diff --git a/hw/kdrive/nvidia/Makefile.am b/hw/kdrive/nvidia/Makefile.am
index 48551a3a6..67eff6961 100644
--- a/hw/kdrive/nvidia/Makefile.am
+++ b/hw/kdrive/nvidia/Makefile.am
@@ -7,10 +7,6 @@ bin_PROGRAMS = Xnvidia
noinst_LIBRARIES = libnvidia.a
-if TSLIB
-TSLIB_FLAG = -lts
-endif
-
# nvidiavideo.c
libnvidia_a_SOURCES = \
@@ -30,7 +26,4 @@ NVIDIA_LIBS = \
Xnvidia_LDADD = \
$(NVIDIA_LIBS) \
@KDRIVE_LIBS@ \
- @XSERVER_LIBS@ \
- $(TSLIB_FLAG)
-
-Xnvidia_DEPENDENCIES = $(NVIDIA_LIBS) @KDRIVE_LIBS@
+ @XSERVER_LIBS@
diff --git a/hw/kdrive/nvidia/nvidiastub.c b/hw/kdrive/nvidia/nvidiastub.c
index ea2dd0f38..230941958 100644
--- a/hw/kdrive/nvidia/nvidiastub.c
+++ b/hw/kdrive/nvidia/nvidiastub.c
@@ -45,7 +45,8 @@ InitOutput (ScreenInfo *pScreenInfo, int argc, char **argv)
void
InitInput (int argc, char **argv)
{
- KdInitInput (&LinuxMouseFuncs, &LinuxKeyboardFuncs);
+ KdOsAddInputDrivers ();
+ KdInitInput ();
}
void
diff --git a/hw/kdrive/pcmcia/pcmciastub.c b/hw/kdrive/pcmcia/pcmciastub.c
index c509553ce..a56d2cbe2 100644
--- a/hw/kdrive/pcmcia/pcmciastub.c
+++ b/hw/kdrive/pcmcia/pcmciastub.c
@@ -45,7 +45,8 @@ InitOutput (ScreenInfo *pScreenInfo, int argc, char **argv)
void
InitInput (int argc, char **argv)
{
- KdInitInput (&LinuxMouseFuncs, &LinuxKeyboardFuncs);
+ KdOsAddInputDrivers ();
+ KdInitInput ();
}
extern pcmciaDisplayModeRec pcmciaDefaultModes[];
diff --git a/hw/kdrive/pm2/Makefile.am b/hw/kdrive/pm2/Makefile.am
index 1a712072a..a7b0f0088 100644
--- a/hw/kdrive/pm2/Makefile.am
+++ b/hw/kdrive/pm2/Makefile.am
@@ -5,10 +5,6 @@ INCLUDES = \
bin_PROGRAMS = Xpm2
-if TSLIB
-TSLIB_FLAG = -lts
-endif
-
noinst_LIBRARIES = libpm2.a
libpm2_a_SOURCES = \
@@ -28,7 +24,4 @@ PM2_LIBS = \
Xpm2_LDADD = \
$(PM2_LIBS) \
@KDRIVE_LIBS@ \
- @XSERVER_LIBS@ \
- $(TSLIB_FLAG)
-
-Xpm2_DEPENDENCIES = $(PM2_LIBS) @KDRIVE_LIBS@
+ @XSERVER_LIBS@
diff --git a/hw/kdrive/pm2/glint_regs.h b/hw/kdrive/pm2/glint_regs.h
index 269b05fbe..84f220298 100644
--- a/hw/kdrive/pm2/glint_regs.h
+++ b/hw/kdrive/pm2/glint_regs.h
@@ -1,4 +1,3 @@
-/* $XFree86: xc/programs/Xserver/hw/xfree86/drivers/glint/glint_regs.h,v 1.36tsi Exp $ */
/*
* glint register file
diff --git a/hw/kdrive/pm2/pm2stub.c b/hw/kdrive/pm2/pm2stub.c
index fe469515b..1f824b347 100644
--- a/hw/kdrive/pm2/pm2stub.c
+++ b/hw/kdrive/pm2/pm2stub.c
@@ -32,7 +32,8 @@ InitOutput (ScreenInfo *pScreenInfo, int argc, char **argv)
void
InitInput (int argc, char **argv)
{
- KdInitInput (&LinuxMouseFuncs, &LinuxKeyboardFuncs);
+ KdOsAddInputDrivers ();
+ KdInitInput ();
}
void
diff --git a/hw/kdrive/r128/Makefile.am b/hw/kdrive/r128/Makefile.am
index b33e138e1..eab80cce0 100644
--- a/hw/kdrive/r128/Makefile.am
+++ b/hw/kdrive/r128/Makefile.am
@@ -5,10 +5,6 @@ INCLUDES = \
bin_PROGRAMS = Xr128
-if TSLIB
-TSLIB_FLAG = -lts
-endif
-
noinst_LIBRARIES = libr128.a
libr128_a_SOURCES = \
@@ -27,7 +23,4 @@ R128_LIBS = \
Xr128_LDADD = \
$(R128_LIBS) \
@KDRIVE_LIBS@ \
- @XSERVER_LIBS@ \
- $(TSLIB_FLAG)
-
-Xr128_DEPENDENCIES = $(R128_LIBS) @KDRIVE_LIBS@
+ @XSERVER_LIBS@
diff --git a/hw/kdrive/r128/r128stub.c b/hw/kdrive/r128/r128stub.c
index 221648d9c..dbf3c0e82 100644
--- a/hw/kdrive/r128/r128stub.c
+++ b/hw/kdrive/r128/r128stub.c
@@ -48,7 +48,8 @@ InitOutput (ScreenInfo *pScreenInfo, int argc, char **argv)
void
InitInput (int argc, char **argv)
{
- KdInitInput (&LinuxMouseFuncs, &LinuxKeyboardFuncs);
+ KdOsAddInputDrivers ();
+ KdInitInput ();
}
void
diff --git a/hw/kdrive/savage/s3stub.c b/hw/kdrive/savage/s3stub.c
index 41553e6e3..776f8dad2 100644
--- a/hw/kdrive/savage/s3stub.c
+++ b/hw/kdrive/savage/s3stub.c
@@ -60,12 +60,8 @@ InitOutput (ScreenInfo *pScreenInfo, int argc, char **argv)
void
InitInput (int argc, char **argv)
{
-#ifdef VXWORKS
- KdInitInput (&VxWorksMouseFuncs, &VxWorksKeyboardFuncs);
-#endif
-#ifdef linux
- KdInitInput (&LinuxMouseFuncs, &LinuxKeyboardFuncs);
-#endif
+ KdOsAddInputDrivers ();
+ KdInitInput ();
}
extern int s3CpuTimeout;
diff --git a/hw/kdrive/sdl/Makefile.am b/hw/kdrive/sdl/Makefile.am
index ba6ed4d4a..f5abb86e8 100644
--- a/hw/kdrive/sdl/Makefile.am
+++ b/hw/kdrive/sdl/Makefile.am
@@ -5,16 +5,9 @@ INCLUDES = \
bin_PROGRAMS = Xsdl
-if TSLIB
-TSLIB_FLAG = -lts
-endif
-
Xsdl_SOURCES = sdl.c
Xsdl_LDADD = @KDRIVE_PURE_LIBS@ \
@KDRIVE_LIBS@ \
@XSERVER_LIBS@ \
- $(TSLIB_FLAG) \
@XSDL_LIBS@
-
-Xsdl_DEPENDENCIES = @KDRIVE_LIBS@
diff --git a/hw/kdrive/sdl/sdl.c b/hw/kdrive/sdl/sdl.c
index d354f6fb8..d7448ff7f 100644
--- a/hw/kdrive/sdl/sdl.c
+++ b/hw/kdrive/sdl/sdl.c
@@ -30,7 +30,6 @@
#include "kdrive-config.h"
#endif
#include "kdrive.h"
-#include "kkeymap.h"
#include <SDL/SDL.h>
#include <X11/keysym.h>
@@ -39,20 +38,20 @@ static Bool sdlScreenInit(KdScreenInfo *screen);
static Bool sdlFinishInitScreen(ScreenPtr pScreen);
static Bool sdlCreateRes(ScreenPtr pScreen);
-static void sdlKeyboardBell (int volume, int pitch, int duration);
-static void sdlKeyboardLeds (int leds);
-static void sdlKeyboardFini(void);
-static void sdlKeyboardLoad (void);
-static Bool sdlKeyboardInit(void);
+static void sdlKeyboardFini(KdKeyboardInfo *ki);
+static Bool sdlKeyboardInit(KdKeyboardInfo *ki);
-static Bool sdlMouseInit(void);
-static void sdlMouseFini(void);
+static Bool sdlMouseInit(KdPointerInfo *pi);
+static void sdlMouseFini(KdPointerInfo *pi);
void *sdlShadowWindow (ScreenPtr pScreen, CARD32 row, CARD32 offset, int mode, CARD32 *size, void *closure);
void sdlShadowUpdate (ScreenPtr pScreen, shadowBufPtr pBuf);
void sdlTimer(void);
+KdKeyboardInfo *sdlKeyboard = NULL;
+KdPointerInfo *sdlPointer = NULL;
+
KeySym sdlKeymap[]={
0, /* 8 */
0,
@@ -168,51 +167,23 @@ KeySym sdlKeymap[]={
NoSymbol, NoSymbol /* 118 */
};
-//KdMouseInfo *kdMouseInfo;
-
-KdKeyboardFuncs sdlKeyboardFuncs = {
- sdlKeyboardLoad,
- sdlKeyboardInit,
- sdlKeyboardLeds,
- sdlKeyboardBell,
- sdlKeyboardFini,
- 3,
+KdKeyboardDriver sdlKeyboardDriver = {
+ .name = "keyboard",
+ .Init = sdlKeyboardInit,
+ .Fini = sdlKeyboardFini,
};
-KdMouseFuncs sdlMouseFuncs = {
- sdlMouseInit,
- sdlMouseFini,
+KdPointerDriver sdlMouseDriver = {
+ .name = "mouse",
+ .Init = sdlMouseInit,
+ .Fini = sdlMouseFini,
};
KdCardFuncs sdlFuncs = {
- 0, /* cardinit */
- sdlScreenInit, /* scrinit */
- 0, /* initScreen */
- sdlFinishInitScreen, /* finishInitScreen */
- sdlCreateRes, /* createRes */
- 0, /* preserve */
- 0, /* enable */
- 0, /* dpms */
- 0, /* disable */
- 0, /* restore */
- 0, /* scrfini */
- 0, /* cardfini */
-
- 0, /* initCursor */
- 0, /* enableCursor */
- 0, /* disableCursor */
- 0, /* finiCursor */
- 0, /* recolorCursor */
-
- 0, /* initAccel */
- 0, /* enableAccel */
- 0, /* syncAccel */
- 0, /* disableAccel */
- 0, /* finiAccel */
-
- 0, /* getColors */
- 0 /* putColors */
+ .scrinit = sdlScreenInit, /* scrinit */
+ .finishInitScreen = sdlFinishInitScreen, /* finishInitScreen */
+ .createRes = sdlCreateRes, /* createRes */
};
int mouseState=0;
@@ -327,52 +298,34 @@ static Bool sdlFinishInitScreen(ScreenPtr pScreen)
return TRUE;
}
-static void sdlKeyboardBell (int volume, int pitch, int duration)
+static void sdlKeyboardFini(KdKeyboardInfo *ki)
{
-#ifdef DEBUG
- printf("a bell would go here\n");
-#endif
+ sdlKeyboard = NULL;
}
-static void sdlKeyboardLeds (int leds)
+static Bool sdlKeyboardInit(KdKeyboardInfo *ki)
{
-#ifdef DEBUG
- printf("Leds: %d\n", leds);
-#endif
-}
+ ki->minScanCode = 8;
+ ki->maxScanCode = 255;
+ ki->keySyms.minKeyCode = 8;
+ ki->keySyms.maxKeyCode = 255;
+ ki->keySyms.mapWidth = 2;
+ memcpy(ki->keySyms.map, sdlKeymap, sizeof(sdlKeymap));
-static void sdlKeyboardLoad(void)
-{
- int x;
- kdMinScanCode = 8;
- kdMaxScanCode = 255;
- kdMinKeyCode = 8;
- kdMaxKeyCode = 255;
- kdKeymapWidth = 2;
-
- memcpy(kdKeymap, sdlKeymap, sizeof(sdlKeymap));
-}
+ sdlKeyboard = ki;
-static void sdlKeyboardFini(void)
-{
-
-}
-
-static Bool sdlKeyboardInit(void)
-{
- return TRUE;
+ return TRUE;
}
-static Bool sdlMouseInit (void)
+static Bool sdlMouseInit (KdPointerInfo *pi)
{
-#ifdef DEBUG
- printf("kdMouseInfo: 0x%x\n", kdMouseInfo);
-#endif
+ sdlPointer = pi;
return TRUE;
}
-static void sdlMouseFini(void)
+static void sdlMouseFini(KdPointerInfo *pi)
{
+ sdlPointer = NULL;
}
@@ -395,8 +348,18 @@ void InitOutput(ScreenInfo *pScreenInfo, int argc, char **argv)
void InitInput(int argc, char **argv)
{
- /* FIXME: change this to use SDL key/mouse funcs */
- KdInitInput(&sdlMouseFuncs, &sdlKeyboardFuncs);
+ KdPointerInfo *pi;
+ KdKeyboardInfo *ki;
+
+ KdAddKeyboardDriver(&sdlKeyboardDriver);
+ KdAddPointerDriver(&sdlMouseDriver);
+
+ ki = KdParseKeyboard("keyboard");
+ KdAddKeyboard(ki);
+ pi = KdParsePointer("mouse");
+ KdAddPointer(pi);
+
+ KdInitInput();
}
void ddxUseMsg(void)
@@ -418,7 +381,7 @@ void sdlTimer(void)
while ( SDL_PollEvent(&event) ) {
switch (event.type) {
case SDL_MOUSEMOTION:
- KdEnqueueMouseEvent(kdMouseInfo, mouseState, event.motion.x, event.motion.y);
+ KdEnqueuePointerEvent(sdlPointer, mouseState, event.motion.x, event.motion.y, 0);
break;
case SDL_MOUSEBUTTONDOWN:
switch(event.button.button)
@@ -434,7 +397,7 @@ void sdlTimer(void)
break;
}
mouseState|=buttonState;
- KdEnqueueMouseEvent(kdMouseInfo, mouseState|KD_MOUSE_DELTA, 0, 0);
+ KdEnqueuePointerEvent(sdlPointer, mouseState|KD_MOUSE_DELTA, 0, 0, 0);
break;
case SDL_MOUSEBUTTONUP:
switch(event.button.button)
@@ -450,14 +413,14 @@ void sdlTimer(void)
break;
}
mouseState &= ~buttonState;
- KdEnqueueMouseEvent(kdMouseInfo, mouseState|KD_MOUSE_DELTA, 0, 0);
+ KdEnqueuePointerEvent(sdlPointer, mouseState|KD_MOUSE_DELTA, 0, 0, 0);
break;
case SDL_KEYDOWN:
case SDL_KEYUP:
#ifdef DEBUG
printf("Keycode: %d\n", event.key.keysym.scancode);
#endif
- KdEnqueueKeyboardEvent (event.key.keysym.scancode, event.type==SDL_KEYUP);
+ KdEnqueueKeyboardEvent (sdlKeyboard, event.key.keysym.scancode, event.type==SDL_KEYUP);
break;
case SDL_QUIT:
@@ -482,12 +445,9 @@ static void xsdlFini(void)
}
KdOsFuncs sdlOsFuncs={
- xsdlInit,
- 0,
- 0,
- 0,
- xsdlFini,
- sdlTimer
+ .Init = xsdlInit,
+ .Fini = xsdlFini,
+ .pollEvents = sdlTimer,
};
void OsVendorInit (void)
diff --git a/hw/kdrive/sis300/Makefile.am b/hw/kdrive/sis300/Makefile.am
index efd1e9ab4..98020745c 100644
--- a/hw/kdrive/sis300/Makefile.am
+++ b/hw/kdrive/sis300/Makefile.am
@@ -17,10 +17,6 @@ INCLUDES = \
bin_PROGRAMS = Xsis
-if TSLIB
-TSLIB_FLAG = -lts
-endif
-
noinst_LIBRARIES = libsis.a
libsis_a_SOURCES = \
@@ -42,5 +38,3 @@ Xsis_LDADD = \
$(SIS_LIBS) \
@KDRIVE_LIBS@ \
$(TSLIB_FLAG)
-
-Xsis_DEPENDENCIES = $(SIS_LIBS) @KDRIVE_LIBS@
diff --git a/hw/kdrive/sis300/sis_reg.h b/hw/kdrive/sis300/sis_reg.h
index 2b305ff04..6e5a8f6d5 100644
--- a/hw/kdrive/sis300/sis_reg.h
+++ b/hw/kdrive/sis300/sis_reg.h
@@ -25,7 +25,6 @@ OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
USE OR OTHER DEALINGS IN THE SOFTWARE.
**************************************************************************/
-/* $XFree86: xc/lib/GL/mesa/src/drv/sis/sis_reg.h,v 1.3 2000/09/26 15:56:48 tsi Exp $ */
/*
* Authors:
diff --git a/hw/kdrive/sis300/sis_stub.c b/hw/kdrive/sis300/sis_stub.c
index 7f2e48251..8a4c06c6c 100644
--- a/hw/kdrive/sis300/sis_stub.c
+++ b/hw/kdrive/sis300/sis_stub.c
@@ -53,7 +53,8 @@ InitOutput(ScreenInfo *pScreenInfo, int argc, char **argv)
void
InitInput(int argc, char **argv)
{
- KdInitInput(&LinuxMouseFuncs, &LinuxKeyboardFuncs);
+ KdOsAddInputDrivers();
+ KdInitInput();
}
void
diff --git a/hw/kdrive/sis530/sisstub.c b/hw/kdrive/sis530/sisstub.c
index a377dd518..2375f651b 100644
--- a/hw/kdrive/sis530/sisstub.c
+++ b/hw/kdrive/sis530/sisstub.c
@@ -53,7 +53,8 @@ InitOutput (ScreenInfo *pScreenInfo, int argc, char **argv)
void
InitInput (int argc, char **argv)
{
- KdInitInput (&LinuxMouseFuncs, &LinuxKeyboardFuncs);
+ KdOsAddInputDrivers ();
+ KdInitInput ();
}
void
diff --git a/hw/kdrive/smi/Makefile.am b/hw/kdrive/smi/Makefile.am
index a214e762e..0fd9729fc 100644
--- a/hw/kdrive/smi/Makefile.am
+++ b/hw/kdrive/smi/Makefile.am
@@ -6,10 +6,6 @@ INCLUDES = \
bin_PROGRAMS = Xsmi
-if TSLIB
-TSLIB_FLAG = -lts
-endif
-
noinst_LIBRARIES = libsmi.a
# smivideo.c # not ready yet
@@ -32,7 +28,4 @@ SMI_LIBS = \
Xsmi_LDADD = \
$(SMI_LIBS) \
@KDRIVE_LIBS@ \
- @XSERVER_LIBS@ \
- $(TSLIB_FLAG)
-
-Xsmi_DEPENDENCIES = $(SMI_LIBS) @KDRIVE_LIBS@
+ @XSERVER_LIBS@
diff --git a/hw/kdrive/smi/smi.c b/hw/kdrive/smi/smi.c
index 96c774aac..7d4d725c7 100644
--- a/hw/kdrive/smi/smi.c
+++ b/hw/kdrive/smi/smi.c
@@ -19,7 +19,6 @@
* TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
* PERFORMANCE OF THIS SOFTWARE.
*/
-/* $XFree86: xc/programs/Xserver/hw/kdrive/smi/smi.c,v 1.11 2002/10/18 06:31:17 keithp Exp $ */
#ifdef HAVE_CONFIG_H
#include <kdrive-config.h>
diff --git a/hw/kdrive/smi/smi.h b/hw/kdrive/smi/smi.h
index 93b856939..19fdcbad4 100644
--- a/hw/kdrive/smi/smi.h
+++ b/hw/kdrive/smi/smi.h
@@ -21,7 +21,6 @@
* TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
* PERFORMANCE OF THIS SOFTWARE.
*/
-/* $XFree86: xc/programs/Xserver/hw/kdrive/smi/smi.h,v 1.6 2001/07/24 19:06:03 keithp Exp $ */
#ifndef _SMI_H_
#define _SMI_H_
diff --git a/hw/kdrive/smi/smidraw.c b/hw/kdrive/smi/smidraw.c
index 4e1a9fd45..06606ad1b 100644
--- a/hw/kdrive/smi/smidraw.c
+++ b/hw/kdrive/smi/smidraw.c
@@ -21,7 +21,6 @@
* TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
* PERFORMANCE OF THIS SOFTWARE.
*/
-/* $XFree86: xc/programs/Xserver/hw/kdrive/smi/smidraw.c,v 1.7 2001/07/24 19:06:03 keithp Exp $ */
#ifdef HAVE_CONFIG_H
#include <kdrive-config.h>
diff --git a/hw/kdrive/smi/smidraw.h b/hw/kdrive/smi/smidraw.h
index 3ec0831fc..f91b68c56 100644
--- a/hw/kdrive/smi/smidraw.h
+++ b/hw/kdrive/smi/smidraw.h
@@ -21,7 +21,6 @@
* TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
* PERFORMANCE OF THIS SOFTWARE.
*/
-/* $XFree86: xc/programs/Xserver/hw/kdrive/mach64/mach64draw.h,v 1.1 2001/06/03 18:48:19 keithp Exp $ */
#ifndef _SMIDRAW_H_
#define _SMIDRAW_H_
diff --git a/hw/kdrive/smi/smistub.c b/hw/kdrive/smi/smistub.c
index 5770e2a6f..1db6708f2 100644
--- a/hw/kdrive/smi/smistub.c
+++ b/hw/kdrive/smi/smistub.c
@@ -22,7 +22,6 @@
*
* Author: Keith Packard, SuSE, Inc.
*/
-/* $XFree86: xc/programs/Xserver/hw/kdrive/smi/smistub.c,v 1.4 2002/10/08 21:25:35 keithp Exp $ */
#ifdef HAVE_CONFIG_H
#include <kdrive-config.h>
@@ -48,7 +47,8 @@ InitOutput (ScreenInfo *pScreenInfo, int argc, char **argv)
void
InitInput (int argc, char **argv)
{
- KdInitInput (&LinuxMouseFuncs, &LinuxKeyboardFuncs);
+ KdOsAddInputDrivers ();
+ KdInitInput ();
}
void
diff --git a/hw/kdrive/smi/smivideo.c b/hw/kdrive/smi/smivideo.c
index 32c73516a..46593a0ee 100644
--- a/hw/kdrive/smi/smivideo.c
+++ b/hw/kdrive/smi/smivideo.c
@@ -19,7 +19,6 @@
* TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
* PERFORMANCE OF THIS SOFTWARE.
*/
-/* $XFree86: xc/programs/Xserver/hw/kdrive/mach64/mach64video.c,v 1.10 2003/04/23 21:51:18 tsi Exp $ */
#ifdef HAVE_CONFIG_H
#include <kdrive-config.h>
#endif
diff --git a/hw/kdrive/src/Makefile.am b/hw/kdrive/src/Makefile.am
index 53d50950d..20fae554a 100644
--- a/hw/kdrive/src/Makefile.am
+++ b/hw/kdrive/src/Makefile.am
@@ -24,7 +24,7 @@ libkdrive_a_SOURCES = \
kdrive.h \
kinfo.c \
kinput.c \
- kkeymap.h \
+ kkeymap.c \
kmap.c \
kmode.c \
knoop.c \
@@ -37,5 +37,4 @@ libkdrive_a_SOURCES = \
$(top_srcdir)/mi/miinitext.c
libkdrivestubs_a_SOURCES = \
- $(top_srcdir)/Xi/stubs.c \
$(top_srcdir)/fb/fbcmap.c
diff --git a/hw/kdrive/src/fourcc.h b/hw/kdrive/src/fourcc.h
index b19f5decc..54be7ebe8 100644
--- a/hw/kdrive/src/fourcc.h
+++ b/hw/kdrive/src/fourcc.h
@@ -1,4 +1,3 @@
-/* $XFree86: xc/programs/Xserver/hw/xfree86/common/fourcc.h,v 1.4 2003/04/23 21:51:24 tsi Exp $ */
/*
This header file contains listings of STANDARD guids for video formats.
diff --git a/hw/kdrive/src/kdrive.c b/hw/kdrive/src/kdrive.c
index 52e56e90b..b6ac0b0cf 100644
--- a/hw/kdrive/src/kdrive.c
+++ b/hw/kdrive/src/kdrive.c
@@ -43,6 +43,12 @@
#include "dpmsproc.h"
#endif
+#ifdef HAVE_EXECINFO_H
+#include <execinfo.h>
+#endif
+
+#include <signal.h>
+
typedef struct _kdDepths {
CARD8 depth;
CARD8 bpp;
@@ -60,6 +66,8 @@ KdDepths kdDepths[] = {
#define NUM_KD_DEPTHS (sizeof (kdDepths) / sizeof (kdDepths[0]))
+#define KD_DEFAULT_BUTTONS 5
+
int kdScreenPrivateIndex;
unsigned long kdGeneration;
@@ -76,6 +84,8 @@ Bool kdSwitchPending;
char *kdSwitchCmd;
DDXPointRec kdOrigin;
+static Bool kdCaughtSignal = FALSE;
+
/*
* Carry arguments from InitOutput through driver initialization
* to KdScreenInit
@@ -271,7 +281,7 @@ KdSuspend (void)
for (screen = card->screenList; screen; screen = screen->next)
if (screen->mynum == card->selected && screen->pScreen)
KdDisableScreen (screen->pScreen);
- if (card->driver)
+ if (card->driver && card->cfuncs->restore)
(*card->cfuncs->restore) (card);
}
KdDisableInput ();
@@ -285,7 +295,8 @@ KdDisableScreens (void)
KdSuspend ();
if (kdEnabled)
{
- (*kdOsFuncs->Disable) ();
+ if (kdOsFuncs->Disable)
+ (*kdOsFuncs->Disable) ();
kdEnabled = FALSE;
}
}
@@ -343,7 +354,8 @@ KdEnableScreens (void)
if (!kdEnabled)
{
kdEnabled = TRUE;
- (*kdOsFuncs->Enable) ();
+ if (kdOsFuncs->Enable)
+ (*kdOsFuncs->Enable) ();
}
KdResume ();
}
@@ -363,11 +375,15 @@ AbortDDX(void)
KdDisableScreens ();
if (kdOsFuncs)
{
- if (kdEnabled)
+ if (kdEnabled && kdOsFuncs->Disable)
(*kdOsFuncs->Disable) ();
- (*kdOsFuncs->Fini) ();
+ if (kdOsFuncs->Fini)
+ (*kdOsFuncs->Fini) ();
KdDoSwitchCmd ("stop");
}
+
+ if (kdCaughtSignal)
+ abort();
}
void
@@ -379,7 +395,7 @@ ddxGiveUp ()
Bool kdDumbDriver;
Bool kdSoftCursor;
-static char *
+char *
KdParseFindNext (char *cur, char *delim, char *save, char *last)
{
while (*cur && !strchr (delim, *cur))
@@ -560,97 +576,6 @@ KdSaveString (char *str)
return n;
}
-/*
- * Parse mouse information. Syntax:
- *
- * <device>,<nbutton>,<protocol>{,<option>}...
- *
- * options: {nmo} pointer mapping (e.g. {321})
- * 2button emulate middle button
- * 3button dont emulate middle button
- */
-
-void
-KdParseMouse (char *arg)
-{
- char save[1024];
- char delim;
- KdMouseInfo *mi;
- int i;
-
- mi = KdMouseInfoAdd ();
- if (!mi)
- return;
- mi->name = 0;
- mi->prot = 0;
- mi->emulateMiddleButton = kdEmulateMiddleButton;
- mi->transformCoordinates = !kdRawPointerCoordinates;
- mi->nbutton = 3;
- for (i = 0; i < KD_MAX_BUTTON; i++)
- mi->map[i] = i + 1;
-
- if (!arg)
- return;
- if (strlen (arg) >= sizeof (save))
- return;
- arg = KdParseFindNext (arg, ",", save, &delim);
- if (!save[0])
- return;
- mi->name = KdSaveString (save);
- if (delim != ',')
- return;
-
- arg = KdParseFindNext (arg, ",", save, &delim);
- if (!save[0])
- return;
-
- if ('1' <= save[0] && save[0] <= '0' + KD_MAX_BUTTON && save[1] == '\0')
- {
- mi->nbutton = save[0] - '0';
- if (mi->nbutton > KD_MAX_BUTTON)
- {
- UseMsg ();
- return;
- }
- }
-
- if (!delim != ',')
- return;
-
- arg = KdParseFindNext (arg, ",", save, &delim);
-
- if (save[0])
- mi->prot = KdSaveString (save);
-
- while (delim == ',')
- {
- arg = KdParseFindNext (arg, ",", save, &delim);
- if (save[0] == '{')
- {
- char *s = save + 1;
- i = 0;
- while (*s && *s != '}')
- {
- if ('1' <= *s && *s <= '0' + mi->nbutton)
- mi->map[i] = *s - '0';
- else
- UseMsg ();
- s++;
- }
- }
- else if (!strcmp (save, "2button"))
- mi->emulateMiddleButton = TRUE;
- else if (!strcmp (save, "3button"))
- mi->emulateMiddleButton = FALSE;
- else if (!strcmp (save, "rawcoord"))
- mi->transformCoordinates = FALSE;
- else if (!strcmp (save, "transform"))
- mi->transformCoordinates = TRUE;
- else
- UseMsg ();
- }
-}
-
void
KdParseRgba (char *rgba)
{
@@ -736,6 +661,11 @@ KdProcessArgument (int argc, char **argv, int i)
kdDontZap = TRUE;
return 1;
}
+ if (!strcmp (argv[i], "-nozap"))
+ {
+ kdDontZap = TRUE;
+ return 1;
+ }
if (!strcmp (argv[i], "-3button"))
{
kdEmulateMiddleButton = FALSE;
@@ -785,14 +715,6 @@ KdProcessArgument (int argc, char **argv, int i)
UseMsg ();
return 2;
}
- if (!strcmp (argv[i], "-mouse"))
- {
- if ((i+1) < argc)
- KdParseMouse (argv[i+1]);
- else
- UseMsg ();
- return 2;
- }
if (!strcmp (argv[i], "-rgba"))
{
if ((i+1) < argc)
@@ -814,6 +736,20 @@ KdProcessArgument (int argc, char **argv, int i)
{
return 1;
}
+ if (!strcmp (argv[i], "-mouse") ||
+ !strcmp (argv[i], "-pointer")) {
+ if (i + 1 >= argc)
+ UseMsg();
+ KdAddConfigPointer(argv[i + 1]);
+ return 2;
+ }
+ if (!strcmp (argv[i], "-keybd")) {
+ if (i + 1 >= argc)
+ UseMsg();
+ KdAddConfigKeyboard(argv[i + 1]);
+ return 2;
+ }
+
#ifdef PSEUDO8
return p8ProcessArgument (argc, argv, i);
#else
@@ -835,7 +771,8 @@ KdOsInit (KdOsFuncs *pOsFuncs)
if (serverGeneration == 1)
{
KdDoSwitchCmd ("start");
- (*pOsFuncs->Init) ();
+ if (pOsFuncs->Init)
+ (*pOsFuncs->Init) ();
}
}
}
@@ -1420,6 +1357,39 @@ KdDepthToFb (ScreenPtr pScreen, int depth)
#endif
+#ifdef HAVE_BACKTRACE
+/* shamelessly ripped from xf86Events.c */
+void
+KdBacktrace (int signum)
+{
+ void *array[32]; /* more than 32 and you have bigger problems */
+ size_t size, i;
+ char **strings;
+
+ signal(signum, SIG_IGN);
+
+ size = backtrace (array, 32);
+ fprintf (stderr, "\nBacktrace (%d deep):\n", size);
+ strings = backtrace_symbols (array, size);
+ for (i = 0; i < size; i++)
+ fprintf (stderr, "%d: %s\n", i, strings[i]);
+ free (strings);
+
+ kdCaughtSignal = TRUE;
+ if (signum == SIGSEGV)
+ FatalError("Segmentation fault caught\n");
+ else if (signum > 0)
+ FatalError("Signal %d caught\n", signum);
+}
+#else
+void
+KdBacktrace (int signum)
+{
+ kdCaughtSignal = TRUE;
+ FatalError("Segmentation fault caught\n");
+}
+#endif
+
void
KdInitOutput (ScreenInfo *pScreenInfo,
int argc,
@@ -1427,6 +1397,12 @@ KdInitOutput (ScreenInfo *pScreenInfo,
{
KdCardInfo *card;
KdScreenInfo *screen;
+
+#ifdef COMPOSITE
+ /* kind of a hack: we want Composite enabled, but it's disabled per
+ * default. */
+ noCompositeExtension = FALSE;
+#endif
if (!kdCardInfo)
{
@@ -1464,6 +1440,8 @@ KdInitOutput (ScreenInfo *pScreenInfo,
for (card = kdCardInfo; card; card = card->next)
for (screen = card->screenList; screen; screen = screen->next)
KdAddScreen (pScreenInfo, screen, argc, argv);
+
+ signal(SIGSEGV, KdBacktrace);
}
#ifdef DPMSExtension
diff --git a/hw/kdrive/src/kdrive.h b/hw/kdrive/src/kdrive.h
index c371263d3..ced48d7a8 100644
--- a/hw/kdrive/src/kdrive.h
+++ b/hw/kdrive/src/kdrive.h
@@ -47,6 +47,10 @@
#include "shadow.h"
#include "randrstr.h"
+#ifdef XKB
+#include <X11/extensions/XKBstr.h>
+#endif
+
extern WindowPtr *WindowTable;
#define KD_DPMS_NORMAL 0
@@ -63,6 +67,8 @@ extern WindowPtr *WindowTable;
#define KD_MAX_CARD_ADDRESS 8
#endif
+#define Status int
+
/*
* Configuration information per video card
*/
@@ -215,7 +221,7 @@ typedef struct {
#endif
} KdPrivScreenRec, *KdPrivScreenPtr;
-typedef enum _kdMouseState {
+typedef enum _kdPointerState {
start,
button_1_pend,
button_1_down,
@@ -226,51 +232,135 @@ typedef enum _kdMouseState {
synth_2_down_3,
synth_2_down_1,
num_input_states
-} KdMouseState;
-
-#define KD_MAX_BUTTON 7
-
-typedef struct _KdMouseInfo {
- struct _KdMouseInfo *next;
- void *driver;
- void *closure;
- char *name;
- char *prot;
- char map[KD_MAX_BUTTON];
- int nbutton;
- Bool emulateMiddleButton;
- unsigned long emulationTimeout;
- Bool timeoutPending;
- KdMouseState mouseState;
- Bool eventHeld;
- xEvent heldEvent;
- unsigned char buttonState;
- int emulationDx, emulationDy;
- int inputType;
- Bool transformCoordinates;
-} KdMouseInfo;
-
-extern KdMouseInfo *kdMouseInfo;
+} KdPointerState;
+
+#define KD_MAX_BUTTON 32
+
+#define KD_KEYBOARD 1
+#define KD_MOUSE 2
+#define KD_TOUCHSCREEN 3
+
+typedef struct _KdPointerInfo KdPointerInfo;
+
+typedef struct _KdPointerDriver {
+ char *name;
+ Status (*Init) (KdPointerInfo *);
+ Status (*Enable) (KdPointerInfo *);
+ void (*Disable) (KdPointerInfo *);
+ void (*Fini) (KdPointerInfo *);
+ struct _KdPointerDriver *next;
+} KdPointerDriver;
+
+struct _KdPointerInfo {
+ DeviceIntPtr dixdev;
+ char *name;
+ char *path;
+ InputOption *options;
+ int inputClass;
+
+ CARD8 map[KD_MAX_BUTTON + 1];
+ int nButtons;
+ int nAxes;
+
+ Bool emulateMiddleButton;
+ unsigned long emulationTimeout;
+ int emulationDx, emulationDy;
+
+ Bool timeoutPending;
+ KdPointerState mouseState;
+ Bool eventHeld;
+ struct {
+ int type;
+ int x;
+ int y;
+ int z;
+ int flags;
+ int absrel;
+ } heldEvent;
+ unsigned char buttonState;
+ Bool transformCoordinates;
+ int pressureThreshold;
+
+ KdPointerDriver *driver;
+ void *driverPrivate;
+
+ struct _KdPointerInfo *next;
+};
extern int KdCurScreen;
-KdMouseInfo *KdMouseInfoAdd (void);
-void KdMouseInfoDispose (KdMouseInfo *mi);
-void KdParseMouse (char *);
+void KdAddPointerDriver (KdPointerDriver *driver);
+void KdRemovePointerDriver (KdPointerDriver *driver);
+KdPointerInfo *KdNewPointer (void);
+void KdFreePointer (KdPointerInfo *);
+int KdAddPointer (KdPointerInfo *ki);
+int KdAddConfigPointer (char *pointer);
+void KdRemovePointer (KdPointerInfo *ki);
-typedef struct _KdMouseFuncs {
- Bool (*Init) (void);
- void (*Fini) (void);
-} KdMouseFuncs;
-typedef struct _KdKeyboardFuncs {
- void (*Load) (void);
- int (*Init) (void);
- void (*Leds) (int);
- void (*Bell) (int, int, int);
- void (*Fini) (void);
- int LockLed;
-} KdKeyboardFuncs;
+#define KD_KEY_COUNT 248
+#define KD_MIN_KEYCODE 8
+#define KD_MAX_KEYCODE 255
+#define KD_MAX_WIDTH 4
+#define KD_MAX_LENGTH (KD_MAX_KEYCODE - KD_MIN_KEYCODE + 1)
+
+typedef struct {
+ KeySym modsym;
+ int modbit;
+} KdKeySymModsRec;
+
+extern const KeySym kdDefaultKeymap[KD_MAX_LENGTH * KD_MAX_WIDTH];
+extern const int kdDefaultKeymapWidth;
+extern const CARD8 kdDefaultModMap[MAP_LENGTH];
+extern const KeySymsRec kdDefaultKeySyms;
+
+typedef struct _KdKeyboardInfo KdKeyboardInfo;
+
+typedef struct _KdKeyboardDriver {
+ char *name;
+ Bool (*Init) (KdKeyboardInfo *);
+ Bool (*Enable) (KdKeyboardInfo *);
+ void (*Leds) (KdKeyboardInfo *, int);
+ void (*Bell) (KdKeyboardInfo *, int, int, int);
+ void (*Disable) (KdKeyboardInfo *);
+ void (*Fini) (KdKeyboardInfo *);
+ struct _KdKeyboardDriver *next;
+} KdKeyboardDriver;
+
+struct _KdKeyboardInfo {
+ struct _KdKeyboardInfo *next;
+ DeviceIntPtr dixdev;
+ void *closure;
+ char *name;
+ char *path;
+ int inputClass;
+#ifdef XKB
+ XkbDescPtr xkb;
+#endif
+ int LockLed;
+
+ CARD8 keyState[KD_KEY_COUNT/8];
+ int minScanCode;
+ int maxScanCode;
+ CARD8 modmap[MAP_LENGTH];
+ KeySymsRec keySyms;
+
+ int leds;
+ int bellPitch;
+ int bellDuration;
+ InputOption *options;
+
+ KdKeyboardDriver *driver;
+ void *driverPrivate;
+};
+
+void KdAddKeyboardDriver (KdKeyboardDriver *driver);
+void KdRemoveKeyboardDriver (KdKeyboardDriver *driver);
+KdKeyboardInfo *KdNewKeyboard (void);
+void KdFreeKeyboard (KdKeyboardInfo *ki);
+int KdAddConfigKeyboard (char *pointer);
+int KdAddKeyboard (KdKeyboardInfo *ki);
+void KdRemoveKeyboard (KdKeyboardInfo *ki);
typedef struct _KdOsFuncs {
int (*Init) (void);
@@ -279,6 +369,7 @@ typedef struct _KdOsFuncs {
void (*Disable) (void);
void (*Fini) (void);
void (*pollEvents) (void);
+ void (*Bell) (int, int, int);
} KdOsFuncs;
typedef enum _KdSyncPolarity {
@@ -307,9 +398,9 @@ typedef struct _KdMonitorTiming {
extern const KdMonitorTiming kdMonitorTimings[];
extern const int kdNumMonitorTimings;
-typedef struct _KdMouseMatrix {
+typedef struct _KdPointerMatrix {
int matrix[2][3];
-} KdMouseMatrix;
+} KdPointerMatrix;
typedef struct _KaaTrapezoid {
float tl, tr, ty;
@@ -628,8 +719,14 @@ KdParseScreen (KdScreenInfo *screen,
char *
KdSaveString (char *str);
-void
-KdParseMouse (char *arg);
+KdPointerInfo *
+KdParsePointer (char *arg);
+
+KdKeyboardInfo *
+KdParseKeyboard (char *arg);
+
+char *
+KdParseFindNext (char *cur, char *delim, char *save, char *last);
void
KdParseRgba (char *rgba);
@@ -643,6 +740,9 @@ KdProcessArgument (int argc, char **argv, int i);
void
KdOsInit (KdOsFuncs *pOsFuncs);
+void
+KdOsAddInputDrivers (void);
+
Bool
KdAllocatePrivates (ScreenPtr pScreen);
@@ -677,6 +777,9 @@ KdInitOutput (ScreenInfo *pScreenInfo,
void
KdSetSubpixelOrder (ScreenPtr pScreen, Rotation randr);
+
+void
+KdBacktrace (int signum);
/* kinfo.c */
KdCardInfo *
@@ -699,53 +802,54 @@ KdScreenInfoDispose (KdScreenInfo *si);
/* kinput.c */
void
-KdInitInput(KdMouseFuncs *, KdKeyboardFuncs *);
+KdInitInput(void);
void
-KdAddMouseDriver(KdMouseFuncs *);
+KdAddPointerDriver(KdPointerDriver *);
-int
-KdAllocInputType (void);
+void
+KdAddKeyboardDriver(KdKeyboardDriver *);
Bool
-KdRegisterFd (int type, int fd, void (*read) (int fd, void *closure), void *closure);
+KdRegisterFd (int fd, void (*read) (int fd, void *closure), void *closure);
void
-KdRegisterFdEnableDisable (int fd,
- int (*enable) (int fd, void *closure),
- void (*disable) (int fd, void *closure));
+KdUnregisterFds (void *closure, Bool do_close);
void
-KdUnregisterFds (int type, Bool do_close);
+KdUnregisterFd (void *closure, int fd, Bool do_close);
void
-KdEnqueueKeyboardEvent(unsigned char scan_code,
- unsigned char is_up);
+KdEnqueueKeyboardEvent(KdKeyboardInfo *ki, unsigned char scan_code,
+ unsigned char is_up);
#define KD_BUTTON_1 0x01
#define KD_BUTTON_2 0x02
#define KD_BUTTON_3 0x04
#define KD_BUTTON_4 0x08
#define KD_BUTTON_5 0x10
+#define KD_BUTTON_8 0x80
#define KD_MOUSE_DELTA 0x80000000
void
-KdEnqueueMouseEvent(KdMouseInfo *mi, unsigned long flags, int x, int y);
+KdEnqueuePointerEvent(KdPointerInfo *pi, unsigned long flags, int rx, int ry,
+ int rz);
void
-KdEnqueueMotionEvent (KdMouseInfo *mi, int x, int y);
+_KdEnqueuePointerEvent(KdPointerInfo *pi, int type, int x, int y, int z,
+ int b, int absrel, Bool force);
void
KdReleaseAllKeys (void);
void
-KdSetLed (int led, Bool on);
+KdSetLed (KdKeyboardInfo *ki, int led, Bool on);
void
-KdSetMouseMatrix (KdMouseMatrix *matrix);
+KdSetPointerMatrix (KdPointerMatrix *pointer);
void
-KdComputeMouseMatrix (KdMouseMatrix *matrix, Rotation randr, int width, int height);
+KdComputePointerMatrix (KdPointerMatrix *pointer, Rotation randr, int width, int height);
void
KdBlockHandler (int screen,
@@ -768,19 +872,23 @@ KdEnableInput (void);
void
ProcessInputEvents (void);
-extern KdMouseFuncs LinuxMouseFuncs;
-extern KdMouseFuncs LinuxEvdevFuncs;
-extern KdMouseFuncs Ps2MouseFuncs;
-extern KdMouseFuncs BusMouseFuncs;
-extern KdMouseFuncs MsMouseFuncs;
-#ifdef TOUCHSCREEN
-extern KdMouseFuncs TsFuncs;
-#endif
-extern KdKeyboardFuncs LinuxKeyboardFuncs;
+void
+KdRingBell (KdKeyboardInfo *ki,
+ int volume,
+ int pitch,
+ int duration);
+
+extern KdPointerDriver LinuxMouseDriver;
+extern KdPointerDriver LinuxEvdevDriver;
+extern KdPointerDriver Ps2MouseDriver;
+extern KdPointerDriver BusMouseDriver;
+extern KdPointerDriver MsMouseDriver;
+extern KdPointerDriver TsDriver;
+extern KdKeyboardDriver LinuxKeyboardDriver;
extern KdOsFuncs LinuxFuncs;
-extern KdMouseFuncs VxWorksMouseFuncs;
-extern KdKeyboardFuncs VxWorksKeyboardFuncs;
+extern KdPointerDriver VxWorksMouseDriver;
+extern KdKeyboardDriver VxWorksKeyboardDriver;
extern KdOsFuncs VxWorksFuncs;
/* kmap.c */
diff --git a/hw/kdrive/src/kinfo.c b/hw/kdrive/src/kinfo.c
index 3ba7687c2..1e03ac8a2 100644
--- a/hw/kdrive/src/kinfo.c
+++ b/hw/kdrive/src/kinfo.c
@@ -101,7 +101,7 @@ KdScreenInfoDispose (KdScreenInfo *si)
KdCardInfo *ci = si->card;
KdScreenInfo **prev;
- for (prev = &ci->screenList; *prev; prev = &(*prev)->next)
+ for (prev = &ci->screenList; *prev; prev = &(*prev)->next) {
if (*prev == si)
{
*prev = si->next;
@@ -110,38 +110,67 @@ KdScreenInfoDispose (KdScreenInfo *si)
KdCardInfoDispose (ci);
break;
}
+ }
}
-KdMouseInfo *kdMouseInfo;
-
-KdMouseInfo *
-KdMouseInfoAdd (void)
+KdPointerInfo *
+KdNewPointer (void)
{
- KdMouseInfo *mi, **prev;
-
- mi = (KdMouseInfo *) xalloc (sizeof (KdMouseInfo));
- if (!mi)
- return 0;
- bzero (mi, sizeof (KdMouseInfo));
- for (prev = &kdMouseInfo; *prev; prev = &(*prev)->next);
- *prev = mi;
- return mi;
+ KdPointerInfo *pi;
+ int i;
+
+ pi = (KdPointerInfo *)xcalloc(1, sizeof(KdPointerInfo));
+ if (!pi)
+ return NULL;
+
+ pi->name = KdSaveString("Generic Pointer");
+ pi->path = NULL;
+ pi->inputClass = KD_MOUSE;
+ pi->driver = NULL;
+ pi->driverPrivate = NULL;
+ pi->next = NULL;
+ pi->options = NULL;
+ pi->nAxes = 3;
+ pi->nButtons = KD_MAX_BUTTON;
+ for (i = 1; i < KD_MAX_BUTTON; i++)
+ pi->map[i] = i;
+
+ return pi;
}
void
-KdMouseInfoDispose (KdMouseInfo *mi)
+KdFreePointer(KdPointerInfo *pi)
{
- KdMouseInfo **prev;
-
- for (prev = &kdMouseInfo; *prev; prev = &(*prev)->next)
- if (*prev == mi)
- {
- *prev = mi->next;
- if (mi->name)
- xfree (mi->name);
- if (mi->prot)
- xfree (mi->prot);
- xfree (mi);
- break;
- }
+ InputOption *option, *prev = NULL;
+
+ if (pi->name)
+ xfree(pi->name);
+ if (pi->path)
+ xfree(pi->path);
+
+ for (option = pi->options; option; option = option->next) {
+ if (prev)
+ xfree(prev);
+ if (option->key)
+ xfree(option->key);
+ if (option->value)
+ xfree(option->value);
+ prev = option;
+ }
+
+ if (prev)
+ xfree(prev);
+
+ xfree(pi);
+}
+
+void
+KdFreeKeyboard(KdKeyboardInfo *ki)
+{
+ if (ki->name)
+ xfree(ki->name);
+ if (ki->path)
+ xfree(ki->path);
+ ki->next = NULL;
+ xfree(ki);
}
diff --git a/hw/kdrive/src/kinput.c b/hw/kdrive/src/kinput.c
index f671eb698..83da67f6c 100644
--- a/hw/kdrive/src/kinput.c
+++ b/hw/kdrive/src/kinput.c
@@ -2,20 +2,21 @@
* Id: kinput.c,v 1.1 1999/11/02 03:54:46 keithp Exp $
*
* Copyright © 1999 Keith Packard
+ * Copyright © 2006 Nokia 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 Keith Packard not be used in
+ * documentation, and that the name of the authors not be used in
* advertising or publicity pertaining to distribution of the software without
- * specific, written prior permission. Keith Packard makes no
+ * specific, written prior permission. The authors make 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,
+ * THE AUTHORS DISCLAIM 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
+ * EVENT SHALL THE AUTHORS BE LIABLE FOR ANY SPECIAL, INDIRECT OR
* CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
* DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
* TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
@@ -34,7 +35,6 @@
#if HAVE_X11_XF86KEYSYM_H
#include <X11/XF86keysym.h>
#endif
-#include "kkeymap.h"
#include <signal.h>
#include <stdio.h>
#ifdef sun
@@ -45,58 +45,61 @@
#include <X11/extensions/XKBsrv.h>
#endif
-static DeviceIntPtr pKdKeyboard, pKdPointer;
+#include <X11/extensions/XI.h>
+#include <X11/extensions/XIproto.h>
+#include "XIstubs.h" /* even though we don't use stubs. cute, no? */
+#include "exevents.h"
+#include "extinit.h"
+#include "exglobals.h"
-#define MAX_MOUSE_DRIVERS 4
+#define AtomFromName(x) MakeAtom(x, strlen(x), 1)
+
+struct KdConfigDevice {
+ char *line;
+ struct KdConfigDevice *next;
+};
+
+/* kdKeyboards and kdPointers hold all the real devices. */
+static KdKeyboardInfo *kdKeyboards = NULL;
+static KdPointerInfo *kdPointers = NULL;
+static struct KdConfigDevice *kdConfigKeyboards = NULL;
+static struct KdConfigDevice *kdConfigPointers = NULL;
+
+static KdKeyboardDriver *kdKeyboardDrivers = NULL;
+static KdPointerDriver *kdPointerDrivers = NULL;
+
+static xEvent *kdEvents = NULL;
-static KdMouseFuncs *kdMouseFuncs[MAX_MOUSE_DRIVERS];
-static int kdNMouseFuncs;
-static KdKeyboardFuncs *kdKeyboardFuncs;
-static int kdBellPitch;
-static int kdBellDuration;
-static int kdLeds;
static Bool kdInputEnabled;
static Bool kdOffScreen;
static unsigned long kdOffScreenTime;
-static KdMouseMatrix kdMouseMatrix = {
+static KdPointerMatrix kdPointerMatrix = {
{ { 1, 0, 0 },
{ 0, 1, 0 } }
};
-int kdMouseButtonCount;
-int kdMinScanCode;
-int kdMaxScanCode;
-int kdMinKeyCode;
-int kdMaxKeyCode;
-int kdKeymapWidth = KD_MAX_WIDTH;
-KeySym kdKeymap[KD_MAX_LENGTH * KD_MAX_WIDTH];
-CARD8 kdModMap[MAP_LENGTH];
-KeySymsRec kdKeySyms;
-
-
-void
-KdResetInputMachine (void);
+void KdResetInputMachine (void);
-#define KD_KEY_COUNT 248
-
-CARD8 kdKeyState[KD_KEY_COUNT/8];
-
-#define IsKeyDown(key) ((kdKeyState[(key) >> 3] >> ((key) & 7)) & 1)
+#define IsKeyDown(ki, key) ((ki->keyState[(key) >> 3] >> ((key) & 7)) & 1)
+#define KEYMAP(ki) (ki->dixdev->key->curKeySyms)
+#define KEYMAPDDX(ki) (ki->keySyms)
+#define KEYCOL1(ki, k) (KEYMAP(ki).map[((k)-(KEYMAP(ki).minKeyCode))*KEYMAP(ki).mapWidth])
+#define KEYCOL1DDX(ki, k) (KEYMAPDDX(ki).map[((k)-(KEYMAPDDX(ki).minKeyCode))*KEYMAPDDX(ki).mapWidth])
#define KD_MAX_INPUT_FDS 8
typedef struct _kdInputFd {
- int type;
- int fd;
- void (*read) (int fd, void *closure);
- int (*enable) (int fd, void *closure);
- void (*disable) (int fd, void *closure);
- void *closure;
+ int fd;
+ void (*read) (int fd, void *closure);
+ int (*enable) (int fd, void *closure);
+ void (*disable) (int fd, void *closure);
+ void *closure;
} KdInputFd;
-KdInputFd kdInputFds[KD_MAX_INPUT_FDS];
-int kdNumInputFds;
-int kdInputTypeSequence;
+static KdInputFd kdInputFds[KD_MAX_INPUT_FDS];
+static int kdNumInputFds;
+
+extern Bool kdRawPointerCoordinates;
static void
KdSigio (int sig)
@@ -127,8 +130,7 @@ KdUnblockSigio (void)
sigprocmask (SIG_UNBLOCK, &set, 0);
}
-#undef VERIFY_SIGIO
-#ifdef VERIFY_SIGIO
+#ifdef DEBUG_SIGIO
void
KdAssertSigioBlocked (char *where)
@@ -137,8 +139,10 @@ KdAssertSigioBlocked (char *where)
sigemptyset (&set);
sigprocmask (SIG_BLOCK, &set, &old);
- if (!sigismember (&old, SIGIO))
+ if (!sigismember (&old, SIGIO)) {
ErrorF ("SIGIO not blocked at %s\n", where);
+ KdBacktrace(0);
+ }
}
#else
@@ -155,6 +159,17 @@ static int kdnFds;
#define NOBLOCK FNDELAY
#endif
+void
+KdResetInputMachine (void)
+{
+ KdPointerInfo *pi;
+
+ for (pi = kdPointers; pi; pi = pi->next) {
+ pi->mouseState = start;
+ pi->eventHeld = FALSE;
+ }
+}
+
static void
KdNonBlockFd (int fd)
{
@@ -205,98 +220,132 @@ KdRemoveFd (int fd)
}
}
-int
-KdAllocInputType (void)
-{
- return ++kdInputTypeSequence;
-}
-
Bool
-KdRegisterFd (int type, int fd, void (*read) (int fd, void *closure), void *closure)
+KdRegisterFd (int fd, void (*read) (int fd, void *closure), void *closure)
{
if (kdNumInputFds == KD_MAX_INPUT_FDS)
return FALSE;
- kdInputFds[kdNumInputFds].type = type;
kdInputFds[kdNumInputFds].fd = fd;
kdInputFds[kdNumInputFds].read = read;
kdInputFds[kdNumInputFds].enable = 0;
kdInputFds[kdNumInputFds].disable = 0;
kdInputFds[kdNumInputFds].closure = closure;
- ++kdNumInputFds;
+ kdNumInputFds++;
if (kdInputEnabled)
KdAddFd (fd);
return TRUE;
}
void
-KdRegisterFdEnableDisable (int fd,
- int (*enable) (int fd, void *closure),
- void (*disable) (int fd, void *closure))
-{
- int i;
-
- for (i = 0; i < kdNumInputFds; i++)
- if (kdInputFds[i].fd == fd)
- {
- kdInputFds[i].enable = enable;
- kdInputFds[i].disable = disable;
- break;
- }
-}
-
-void
-KdUnregisterFds (int type, Bool do_close)
+KdUnregisterFd (void *closure, int fd, Bool do_close)
{
int i, j;
- for (i = 0; i < kdNumInputFds;)
- {
- if (kdInputFds[i].type == type)
- {
+ for (i = 0; i < kdNumInputFds; i++) {
+ if (kdInputFds[i].closure == closure &&
+ (fd == -1 || kdInputFds[i].fd == fd)) {
if (kdInputEnabled)
KdRemoveFd (kdInputFds[i].fd);
if (do_close)
close (kdInputFds[i].fd);
- --kdNumInputFds;
+ kdNumInputFds--;
for (j = i; j < kdNumInputFds; j++)
kdInputFds[j] = kdInputFds[j+1];
+ break;
}
- else
- i++;
}
}
void
+KdUnregisterFds (void *closure, Bool do_close)
+{
+ KdUnregisterFd(closure, -1, do_close);
+}
+
+void
KdDisableInput (void)
{
- int i;
+ KdKeyboardInfo *ki;
+ KdPointerInfo *pi;
+ int found = 0, i = 0;
- KdBlockSigio ();
+ KdBlockSigio();
- for (i = 0; i < kdNumInputFds; i++)
- {
- KdRemoveFd (kdInputFds[i].fd);
- if (kdInputFds[i].disable)
- (*kdInputFds[i].disable) (kdInputFds[i].fd, kdInputFds[i].closure);
+ for (ki = kdKeyboards; ki; ki = ki->next) {
+ if (ki->driver && ki->driver->Disable)
+ (*ki->driver->Disable) (ki);
+ }
+
+ for (pi = kdPointers; pi; pi = pi->next) {
+ if (pi->driver && pi->driver->Disable)
+ (*pi->driver->Disable) (pi);
+ }
+
+ if (kdNumInputFds) {
+ ErrorF("[KdDisableInput] Buggy drivers: still %d input fds left!",
+ kdNumInputFds);
+ i = 0;
+ while (i < kdNumInputFds) {
+ found = 0;
+ for (ki = kdKeyboards; ki; ki = ki->next) {
+ if (ki == kdInputFds[i].closure) {
+ ErrorF(" fd %d belongs to keybd driver %s\n",
+ kdInputFds[i].fd,
+ ki->driver && ki->driver->name ?
+ ki->driver->name : "(unnamed!)");
+ found = 1;
+ break;
+ }
+ }
+
+ if (found) {
+ i++;
+ continue;
+ }
+
+ for (pi = kdPointers; pi; pi = pi->next) {
+ if (pi == kdInputFds[i].closure) {
+ ErrorF(" fd %d belongs to pointer driver %s\n",
+ kdInputFds[i].fd,
+ pi->driver && pi->driver->name ?
+ pi->driver->name : "(unnamed!)");
+ break;
+ }
+ }
+
+ if (found) {
+ i++;
+ continue;
+ }
+
+ ErrorF(" fd %d not claimed by any active device!\n",
+ kdInputFds[i].fd);
+ KdUnregisterFd(kdInputFds[i].closure, kdInputFds[i].fd, TRUE);
+ }
}
+
kdInputEnabled = FALSE;
}
void
KdEnableInput (void)
{
- xEvent xE;
- int i;
+ xEvent xE;
+ KdKeyboardInfo *ki;
+ KdPointerInfo *pi;
kdInputEnabled = TRUE;
- for (i = 0; i < kdNumInputFds; i++)
- {
- KdNonBlockFd (kdInputFds[i].fd);
- if (kdInputFds[i].enable)
- kdInputFds[i].fd = (*kdInputFds[i].enable) (kdInputFds[i].fd, kdInputFds[i].closure);
- KdAddFd (kdInputFds[i].fd);
+
+ for (ki = kdKeyboards; ki; ki = ki->next) {
+ if (ki->driver && ki->driver->Enable)
+ (*ki->driver->Enable) (ki);
}
-
+
+ for (pi = kdPointers; pi; pi = pi->next) {
+ if (pi->driver && pi->driver->Enable)
+ (*pi->driver->Enable) (pi);
+ }
+
/* reset screen saver */
xE.u.keyButtonPointer.time = GetTimeInMillis ();
NoticeEventTime (&xE);
@@ -304,84 +353,250 @@ KdEnableInput (void)
KdUnblockSigio ();
}
-static int
-KdMouseProc(DeviceIntPtr pDevice, int onoff)
+static KdKeyboardDriver *
+KdFindKeyboardDriver (char *name)
{
- BYTE map[KD_MAX_BUTTON];
- DevicePtr pDev = (DevicePtr)pDevice;
- int i;
+ KdKeyboardDriver *ret;
+
+ /* ask a stupid question ... */
+ if (!name)
+ return NULL;
+ for (ret = kdKeyboardDrivers; ret; ret = ret->next) {
+ if (strcmp(ret->name, name) == 0)
+ return ret;
+ }
+
+ return NULL;
+}
+
+static KdPointerDriver *
+KdFindPointerDriver (char *name)
+{
+ KdPointerDriver *ret;
+
+ /* ask a stupid question ... */
+ if (!name)
+ return NULL;
+
+ for (ret = kdPointerDrivers; ret; ret = ret->next) {
+ if (strcmp(ret->name, name) == 0)
+ return ret;
+ }
+
+ return NULL;
+}
+
+static int
+KdPointerProc(DeviceIntPtr pDevice, int onoff)
+{
+ DevicePtr pDev = (DevicePtr)pDevice;
+ KdPointerInfo *pi;
+ Atom xiclass;
+
if (!pDev)
return BadImplementation;
-
+
+ for (pi = kdPointers; pi; pi = pi->next) {
+ if (pi->dixdev && pi->dixdev->id == pDevice->id)
+ break;
+ }
+
+ if (!pi || !pi->dixdev || pi->dixdev->id != pDevice->id) {
+ ErrorF("[KdPointerProc] Failed to find pointer for device %d!\n",
+ pDevice->id);
+ return BadImplementation;
+ }
+
switch (onoff)
{
case DEVICE_INIT:
- for (i = 1; i <= kdMouseButtonCount; i++)
- map[i] = i;
- InitPointerDeviceStruct(pDev, map, kdMouseButtonCount,
- miPointerGetMotionEvents,
+#ifdef DEBUG
+ ErrorF("initialising pointer %s ...\n", pi->name);
+#endif
+ if (!pi->driver) {
+ if (!pi->driverPrivate) {
+ ErrorF("no driver specified for %s\n", pi->name);
+ return BadImplementation;
+ }
+
+ pi->driver = KdFindPointerDriver(pi->driverPrivate);
+ if (!pi->driver) {
+ ErrorF("Couldn't find pointer driver %s\n",
+ pi->driverPrivate ? (char *) pi->driverPrivate :
+ "(unnamed)");
+ return !Success;
+ }
+ xfree(pi->driverPrivate);
+ pi->driverPrivate = NULL;
+ }
+
+ if (!pi->driver->Init) {
+ ErrorF("no init function\n");
+ return BadImplementation;
+ }
+
+ if ((*pi->driver->Init) (pi) != Success) {
+ return !Success;
+ }
+
+ InitPointerDeviceStruct(pDev, pi->map, pi->nButtons,
+ GetMotionHistory,
(PtrCtrlProcPtr)NoopDDA,
- miPointerGetMotionBufferSize());
- break;
+ GetMotionHistorySize(), pi->nAxes);
+
+ if (pi->inputClass == KD_TOUCHSCREEN) {
+ InitAbsoluteClassDeviceStruct(pDevice);
+ xiclass = AtomFromName(XI_TOUCHSCREEN);
+ }
+ else {
+ xiclass = AtomFromName(XI_MOUSE);
+ }
+
+ AssignTypeAndName(pi->dixdev, xiclass,
+ pi->name ? pi->name : "Generic KDrive Pointer");
+
+ return Success;
case DEVICE_ON:
- pDev->on = TRUE;
- pKdPointer = pDevice;
- for (i = 0; i < kdNMouseFuncs; i++)
- (*kdMouseFuncs[i]->Init)();
- break;
+ if (pDev->on == TRUE)
+ return Success;
+
+ if (!pi->driver->Enable) {
+ ErrorF("no enable function\n");
+ return BadImplementation;
+ }
+
+ if ((*pi->driver->Enable) (pi) == Success) {
+ pDev->on = TRUE;
+ return Success;
+ }
+ else {
+ return BadImplementation;
+ }
+
+ return Success;
+
case DEVICE_OFF:
+ if (pDev->on == FALSE) {
+ return Success;
+ }
+
+ if (!pi->driver->Disable) {
+ return BadImplementation;
+ }
+ else {
+ (*pi->driver->Disable) (pi);
+ pDev->on = FALSE;
+ return Success;
+ }
+
+ return Success;
+
case DEVICE_CLOSE:
- if (pDev->on)
- {
- pDev->on = FALSE;
- pKdPointer = 0;
- for (i = 0; i < kdNMouseFuncs; i++)
- (*kdMouseFuncs[i]->Fini) ();
- }
- break;
+ if (pDev->on) {
+ if (!pi->driver->Disable) {
+ return BadImplementation;
+ }
+ (*pi->driver->Disable) (pi);
+ pDev->on = FALSE;
+ }
+
+ if (!pi->driver->Fini)
+ return BadImplementation;
+
+ (*pi->driver->Fini) (pi);
+
+ KdRemovePointer(pi);
+
+ return Success;
}
- return Success;
+
+ /* NOTREACHED */
+ return BadImplementation;
}
Bool
-LegalModifier(unsigned int key, DevicePtr pDev)
+LegalModifier(unsigned int key, DeviceIntPtr pDev)
{
return TRUE;
}
static void
-KdBell (int volume, DeviceIntPtr pDev, pointer ctrl, int something)
+KdBell (int volume, DeviceIntPtr pDev, pointer arg, int something)
{
+ KeybdCtrl *ctrl = arg;
+ KdKeyboardInfo *ki = NULL;
+
+ for (ki = kdKeyboards; ki; ki = ki->next) {
+ if (ki->dixdev && ki->dixdev->id == pDev->id)
+ break;
+ }
+
+ if (!ki || !ki->dixdev || ki->dixdev->id != pDev->id || !ki->driver)
+ return;
+
+ KdRingBell(ki, volume, ctrl->bell_pitch, ctrl->bell_duration);
+}
+
+void
+DDXRingBell(int volume, int pitch, int duration)
+{
+ KdKeyboardInfo *ki = NULL;
+
+ if (kdOsFuncs->Bell) {
+ (*kdOsFuncs->Bell)(volume, pitch, duration);
+ }
+ else {
+ for (ki = kdKeyboards; ki; ki = ki->next) {
+ if (ki->dixdev->coreEvents)
+ KdRingBell(ki, volume, pitch, duration);
+ }
+ }
+}
+
+void
+KdRingBell(KdKeyboardInfo *ki, int volume, int pitch, int duration)
+{
+ if (!ki || !ki->driver || !ki->driver->Bell)
+ return;
+
if (kdInputEnabled)
- (*kdKeyboardFuncs->Bell) (volume, kdBellPitch, kdBellDuration);
+ (*ki->driver->Bell) (ki, volume, pitch, duration);
}
static void
-KdSetLeds (void)
+KdSetLeds (KdKeyboardInfo *ki, int leds)
{
- if (kdInputEnabled)
- (*kdKeyboardFuncs->Leds) (kdLeds);
+ if (!ki || !ki->driver)
+ return;
+
+ if (kdInputEnabled) {
+ if (ki->driver->Leds)
+ (*ki->driver->Leds) (ki, leds);
+ }
}
void
-KdSetLed (int led, Bool on)
+KdSetLed (KdKeyboardInfo *ki, int led, Bool on)
{
- NoteLedState (pKdKeyboard, led, on);
- kdLeds = pKdKeyboard->kbdfeed->ctrl.leds;
- KdSetLeds ();
+ if (!ki || !ki->dixdev || !ki->dixdev->kbdfeed)
+ return;
+
+ NoteLedState (ki->dixdev, led, on);
+ KdSetLeds (ki, ki->dixdev->kbdfeed->ctrl.leds);
}
void
-KdSetMouseMatrix (KdMouseMatrix *matrix)
+KdSetPointerMatrix (KdPointerMatrix *matrix)
{
- kdMouseMatrix = *matrix;
+ kdPointerMatrix = *matrix;
}
void
-KdComputeMouseMatrix (KdMouseMatrix *m, Rotation randr, int width, int height)
+KdComputePointerMatrix (KdPointerMatrix *m, Rotation randr, int width,
+ int height)
{
int x_dir = 1, y_dir = 1;
int i, j;
@@ -422,73 +637,25 @@ KdComputeMouseMatrix (KdMouseMatrix *m, Rotation randr, int width, int height)
static void
KdKbdCtrl (DeviceIntPtr pDevice, KeybdCtrl *ctrl)
{
- kdLeds = ctrl->leds;
- kdBellPitch = ctrl->bell_pitch;
- kdBellDuration = ctrl->bell_duration;
- KdSetLeds ();
-}
+ KdKeyboardInfo *ki;
-static int
-KdKeybdProc(DeviceIntPtr pDevice, int onoff)
-{
- Bool ret;
- DevicePtr pDev = (DevicePtr)pDevice;
-#ifdef XKB
- XkbComponentNamesRec names;
-#endif
+ for (ki = kdKeyboards; ki; ki = ki->next) {
+ if (ki->dixdev && ki->dixdev->id == pDevice->id)
+ break;
+ }
- if (!pDev)
- return BadImplementation;
+ if (!ki || !ki->dixdev || ki->dixdev->id != pDevice->id || !ki->driver)
+ return;
- switch (onoff)
- {
- case DEVICE_INIT:
- if (pDev != LookupKeyboardDevice())
- {
- return !Success;
- }
-#ifndef XKB
- ret = InitKeyboardDeviceStruct(pDev,
- &kdKeySyms,
- kdModMap,
- KdBell, KdKbdCtrl);
-#else
- memset(&names, 0, sizeof(XkbComponentNamesRec));
-
- XkbSetRulesDflts ("base", "pc101", "us", NULL, NULL);
- ret = XkbInitKeyboardDeviceStruct ((DeviceIntPtr) pDev,
- &names,
- &kdKeySyms,
- kdModMap,
- KdBell, KdKbdCtrl);
-#endif
- if (!ret)
- return BadImplementation;
- break;
- case DEVICE_ON:
- pDev->on = TRUE;
- pKdKeyboard = pDevice;
- if (kdKeyboardFuncs)
- (*kdKeyboardFuncs->Init) ();
- break;
- case DEVICE_OFF:
- case DEVICE_CLOSE:
- pKdKeyboard = 0;
- if (pDev->on)
- {
- pDev->on = FALSE;
- if (kdKeyboardFuncs)
- (*kdKeyboardFuncs->Fini) ();
- }
- break;
- }
- return Success;
+ KdSetLeds(ki, ctrl->leds);
+ ki->bellPitch = ctrl->bell_pitch;
+ ki->bellDuration = ctrl->bell_duration;
}
extern KeybdCtrl defaultKeyboardControl;
static void
-KdInitAutoRepeats (void)
+KdInitAutoRepeats (KdKeyboardInfo *ki)
{
int key_code;
unsigned char mask;
@@ -499,7 +666,7 @@ KdInitAutoRepeats (void)
memset (repeats, '\0', 32);
for (key_code = KD_MIN_KEYCODE; key_code <= KD_MAX_KEYCODE; key_code++)
{
- if (!kdModMap[key_code])
+ if (!ki->modmap[key_code])
{
i = key_code >> 3;
mask = 1 << (key_code & 7);
@@ -525,7 +692,6 @@ const KdKeySymModsRec kdKeySymMods[] = {
{ XK_Hyper_L, Mod3Mask },
{ XK_Hyper_R, Mod3Mask },
{ XK_Mode_switch, Mod4Mask },
-#ifdef TOUCHSCREEN
/* PDA specific hacks */
#ifdef XF86XK_Start
{ XF86XK_Start, ControlMask },
@@ -538,13 +704,12 @@ const KdKeySymModsRec kdKeySymMods[] = {
#ifdef XF86XK_Calendar
{ XF86XK_Calendar, Mod3Mask }
#endif
-#endif
};
#define NUM_SYM_MODS (sizeof(kdKeySymMods) / sizeof(kdKeySymMods[0]))
static void
-KdInitModMap (void)
+KdInitModMap (KdKeyboardInfo *ki)
{
int key_code;
int row;
@@ -552,79 +717,579 @@ KdInitModMap (void)
KeySym *syms;
int i;
- width = kdKeySyms.mapWidth;
- for (key_code = kdMinKeyCode; key_code <= kdMaxKeyCode; key_code++)
+ width = ki->keySyms.mapWidth;
+ for (key_code = ki->keySyms.minKeyCode; key_code <= ki->keySyms.maxKeyCode; key_code++)
{
- kdModMap[key_code] = 0;
- syms = kdKeymap + (key_code - kdMinKeyCode) * width;
+ ki->modmap[key_code] = 0;
+ syms = ki->keySyms.map + (key_code - ki->keySyms.minKeyCode) * width;
for (row = 0; row < width; row++, syms++)
{
for (i = 0; i < NUM_SYM_MODS; i++)
{
if (*syms == kdKeySymMods[i].modsym)
- kdModMap[key_code] |= kdKeySymMods[i].modbit;
+ ki->modmap[key_code] |= kdKeySymMods[i].modbit;
}
}
}
}
+static int
+KdKeyboardProc(DeviceIntPtr pDevice, int onoff)
+{
+ Bool ret;
+ DevicePtr pDev = (DevicePtr)pDevice;
+ KdKeyboardInfo *ki;
+ Atom xiclass;
+
+ if (!pDev)
+ return BadImplementation;
+
+ for (ki = kdKeyboards; ki; ki = ki->next) {
+ if (ki->dixdev && ki->dixdev->id == pDevice->id)
+ break;
+ }
+
+ if (!ki || !ki->dixdev || ki->dixdev->id != pDevice->id) {
+ return BadImplementation;
+ }
+
+ switch (onoff)
+ {
+ case DEVICE_INIT:
+#ifdef DEBUG
+ ErrorF("initialising keyboard %s\n", ki->name);
+#endif
+ if (!ki->driver) {
+ if (!ki->driverPrivate) {
+ ErrorF("no driver specified!\n");
+ return BadImplementation;
+ }
+
+ ki->driver = KdFindKeyboardDriver(ki->driverPrivate);
+ if (!ki->driver) {
+ ErrorF("Couldn't find keyboard driver %s\n",
+ ki->driverPrivate ? (char *) ki->driverPrivate :
+ "(unnamed)");
+ return !Success;
+ }
+ xfree(ki->driverPrivate);
+ ki->driverPrivate = NULL;
+ }
+
+ if (!ki->driver->Init) {
+ ErrorF("Keyboard %s: no init function\n", ki->name);
+ return BadImplementation;
+ }
+
+ if ((*ki->driver->Init) (ki) != Success) {
+ return !Success;
+ }
+
+ KdInitModMap(ki);
+ KdInitAutoRepeats(ki);
+
+#ifndef XKB
+ if (!noXkbExtension) {
+ memset(&names, 0, sizeof(XkbComponentNamesRec));
+ if (XkbInitialMap)
+ names.keymap = XkbInitialMap;
+
+ XkbSetRulesDflts ("base", "pc105", "us", NULL, NULL);
+ ret = XkbInitKeyboardDeviceStruct (pDevice,
+ &names,
+ &ki->keySyms,
+ ki->modmap,
+ KdBell, KdKbdCtrl);
+ }
+ else
+#endif
+ ret = InitKeyboardDeviceStruct(pDev,
+ &ki->keySyms,
+ ki->modmap,
+ KdBell, KdKbdCtrl);
+ if (!ret) {
+ ErrorF("Couldn't initialise keyboard %s\n", ki->name);
+ return BadImplementation;
+ }
+
+ xiclass = AtomFromName(XI_KEYBOARD);
+ AssignTypeAndName(pDevice, xiclass,
+ ki->name ? ki->name : "Generic KDrive Keyboard");
+
+ KdResetInputMachine();
+
+ return Success;
+
+ case DEVICE_ON:
+ if (pDev->on == TRUE)
+ return Success;
+
+ if (!ki->driver->Enable)
+ return BadImplementation;
+
+ if ((*ki->driver->Enable) (ki) != Success) {
+ return BadMatch;
+ }
+
+ pDev->on = TRUE;
+ return Success;
+
+ case DEVICE_OFF:
+ if (pDev->on == FALSE)
+ return Success;
+
+ if (!ki->driver->Disable)
+ return BadImplementation;
+
+ (*ki->driver->Disable) (ki);
+ pDev->on = FALSE;
+
+ return Success;
+
+ break;
+
+ case DEVICE_CLOSE:
+ if (pDev->on) {
+ if (!ki->driver->Disable)
+ return BadImplementation;
+
+ (*ki->driver->Disable) (ki);
+ pDev->on = FALSE;
+ }
+
+ if (!ki->driver->Fini)
+ return BadImplementation;
+
+ (*ki->driver->Fini) (ki);
+
+ KdRemoveKeyboard(ki);
+
+ return Success;
+ }
+
+ /* NOTREACHED */
+ return BadImplementation;
+}
+
+void
+KdAddPointerDriver (KdPointerDriver *driver)
+{
+ KdPointerDriver **prev;
+
+ if (!driver)
+ return;
+
+ for (prev = &kdPointerDrivers; *prev; prev = &(*prev)->next) {
+ if (*prev == driver)
+ return;
+ }
+ *prev = driver;
+}
+
void
-KdAddMouseDriver(KdMouseFuncs *pMouseFuncs)
+KdRemovePointerDriver (KdPointerDriver *driver)
{
- if (kdNMouseFuncs < MAX_MOUSE_DRIVERS)
- kdMouseFuncs[kdNMouseFuncs++] = pMouseFuncs;
+ KdPointerDriver *tmp;
+
+ if (!driver)
+ return;
+
+ /* FIXME remove all pointers using this driver */
+ for (tmp = kdPointerDrivers; tmp; tmp = tmp->next) {
+ if (tmp->next == driver)
+ tmp->next = driver->next;
+ }
+ if (tmp == driver)
+ tmp = NULL;
}
void
-KdInitInput(KdMouseFuncs *pMouseFuncs,
- KdKeyboardFuncs *pKeyboardFuncs)
+KdAddKeyboardDriver (KdKeyboardDriver *driver)
+{
+ KdKeyboardDriver **prev;
+
+ if (!driver)
+ return;
+
+ for (prev = &kdKeyboardDrivers; *prev; prev = &(*prev)->next) {
+ if (*prev == driver)
+ return;
+ }
+ *prev = driver;
+}
+
+void
+KdRemoveKeyboardDriver (KdKeyboardDriver *driver)
+{
+ KdKeyboardDriver *tmp;
+
+ if (!driver)
+ return;
+
+ /* FIXME remove all keyboards using this driver */
+ for (tmp = kdKeyboardDrivers; tmp; tmp = tmp->next) {
+ if (tmp->next == driver)
+ tmp->next = driver->next;
+ }
+ if (tmp == driver)
+ tmp = NULL;
+}
+
+KdKeyboardInfo *
+KdNewKeyboard (void)
+{
+ KdKeyboardInfo *ki = xcalloc(sizeof(KdKeyboardInfo), 1);
+
+ if (!ki)
+ return NULL;
+
+ ki->keySyms.map = (KeySym *)xcalloc(sizeof(KeySym),
+ KD_MAX_LENGTH *
+ kdDefaultKeySyms.mapWidth);
+ if (!ki->keySyms.map) {
+ xfree(ki);
+ return NULL;
+ }
+
+ memcpy(ki->keySyms.map, kdDefaultKeySyms.map,
+ sizeof(KeySym) * (KD_MAX_LENGTH * kdDefaultKeySyms.mapWidth));
+ ki->keySyms.minKeyCode = kdDefaultKeySyms.minKeyCode;
+ ki->keySyms.maxKeyCode = kdDefaultKeySyms.maxKeyCode;
+ ki->keySyms.mapWidth = kdDefaultKeySyms.mapWidth;
+ ki->minScanCode = 0;
+ ki->maxScanCode = 0;
+ ki->leds = 0;
+ ki->bellPitch = 1000;
+ ki->bellDuration = 200;
+ ki->next = NULL;
+ ki->options = NULL;
+
+ return ki;
+}
+
+int
+KdAddConfigKeyboard (char *keyboard)
+{
+ struct KdConfigDevice **prev, *new;
+
+ if (!keyboard)
+ return Success;
+
+ new = (struct KdConfigDevice *) xcalloc(sizeof(struct KdConfigDevice), 1);
+ if (!new)
+ return BadAlloc;
+
+ new->line = xstrdup(keyboard);
+ new->next = NULL;
+
+ for (prev = &kdConfigKeyboards; *prev; prev = &(*prev)->next);
+ *prev = new;
+
+ return Success;
+}
+
+int
+KdAddKeyboard (KdKeyboardInfo *ki)
{
- DeviceIntPtr pKeyboard, pPointer;
- KdMouseInfo *mi;
+ KdKeyboardInfo **prev;
+
+ if (!ki)
+ return !Success;
- if (!kdMouseInfo)
- KdParseMouse (0);
- kdMouseButtonCount = 0;
- for (mi = kdMouseInfo; mi; mi = mi->next)
+ ki->dixdev = AddInputDevice(KdKeyboardProc, TRUE);
+ if (!ki->dixdev) {
+ ErrorF("Couldn't register keyboard device %s\n",
+ ki->name ? ki->name : "(unnamed)");
+ return !Success;
+ }
+
+ RegisterOtherDevice(ki->dixdev);
+
+#ifdef DEBUG
+ ErrorF("added keyboard %s with dix id %d\n", ki->name, ki->dixdev->id);
+#endif
+
+ for (prev = &kdKeyboards; *prev; prev = &(*prev)->next);
+ *prev = ki;
+
+ return Success;
+}
+
+void
+KdRemoveKeyboard (KdKeyboardInfo *ki)
+{
+ KdKeyboardInfo **prev;
+
+ if (!ki)
+ return;
+
+ for (prev = &kdKeyboards; *prev; prev = &(*prev)->next) {
+ if (*prev == ki) {
+ *prev = ki->next;
+ break;
+ }
+ }
+
+ KdFreeKeyboard(ki);
+}
+
+int
+KdAddConfigPointer (char *pointer)
+{
+ struct KdConfigDevice **prev, *new;
+
+ if (!pointer)
+ return Success;
+
+ new = (struct KdConfigDevice *) xcalloc(sizeof(struct KdConfigDevice), 1);
+ if (!new)
+ return BadAlloc;
+
+ new->line = xstrdup(pointer);
+ new->next = NULL;
+
+ for (prev = &kdConfigPointers; *prev; prev = &(*prev)->next);
+ *prev = new;
+
+ return Success;
+}
+
+int
+KdAddPointer (KdPointerInfo *pi)
+{
+ KdPointerInfo **prev;
+
+ if (!pi)
+ return Success;
+
+ pi->mouseState = start;
+ pi->eventHeld = FALSE;
+
+ pi->dixdev = AddInputDevice(KdPointerProc, TRUE);
+ if (!pi->dixdev) {
+ ErrorF("Couldn't add pointer device %s\n",
+ pi->name ? pi->name : "(unnamed)");
+ return BadDevice;
+ }
+
+ RegisterOtherDevice(pi->dixdev);
+
+ for (prev = &kdPointers; *prev; prev = &(*prev)->next);
+ *prev = pi;
+
+ return Success;
+}
+
+void
+KdRemovePointer (KdPointerInfo *pi)
+{
+ KdPointerInfo **prev;
+
+ if (!pi)
+ return;
+
+ for (prev = &kdPointers; *prev; prev = &(*prev)->next) {
+ if (*prev == pi) {
+ *prev = pi->next;
+ break;
+ }
+ }
+
+ KdFreePointer(pi);
+}
+
+KdKeyboardInfo *
+KdParseKeyboard (char *arg)
+{
+ char save[1024];
+ char delim;
+ KdKeyboardInfo *ki = NULL;
+
+ ki = KdNewKeyboard();
+ if (!ki)
+ return NULL;
+
+ ki->name = strdup("Unknown KDrive Keyboard");
+ ki->path = NULL;
+ ki->driver = NULL;
+ ki->driverPrivate = NULL;
+#ifdef XKB
+ ki->xkb = NULL;
+#endif
+ ki->next = NULL;
+
+ if (!arg)
{
- if (mi->nbutton > kdMouseButtonCount)
- kdMouseButtonCount = mi->nbutton;
- }
-
- kdNMouseFuncs = 0;
- KdAddMouseDriver (pMouseFuncs);
- kdKeyboardFuncs = pKeyboardFuncs;
- memset (kdKeyState, '\0', sizeof (kdKeyState));
- if (kdKeyboardFuncs)
- (*kdKeyboardFuncs->Load) ();
- kdMinKeyCode = kdMinScanCode + KD_KEY_OFFSET;
- kdMaxKeyCode = kdMaxScanCode + KD_KEY_OFFSET;
- kdKeySyms.map = kdKeymap;
- kdKeySyms.minKeyCode = kdMinKeyCode;
- kdKeySyms.maxKeyCode = kdMaxKeyCode;
- kdKeySyms.mapWidth = kdKeymapWidth;
- kdLeds = 0;
- kdBellPitch = 1000;
- kdBellDuration = 200;
- kdInputEnabled = TRUE;
- KdInitModMap ();
- KdInitAutoRepeats ();
- KdResetInputMachine ();
- pPointer = AddInputDevice(KdMouseProc, TRUE);
- pKeyboard = AddInputDevice(KdKeybdProc, TRUE);
- RegisterPointerDevice(pPointer);
- RegisterKeyboardDevice(pKeyboard);
- miRegisterPointerDevice(screenInfo.screens[0], pPointer);
- mieqInit(&pKeyboard->public, &pPointer->public);
-#ifdef XINPUT
+ ErrorF("keybd: no arg\n");
+ KdFreeKeyboard (ki);
+ return NULL;
+ }
+
+ if (strlen (arg) >= sizeof (save))
{
- static long zero1, zero2;
+ ErrorF("keybd: arg too long\n");
+ KdFreeKeyboard (ki);
+ return NULL;
+ }
- //SetExtInputCheck (&zero1, &zero2);
- ErrorF("Extended Input Devices not yet supported. Impelement it at line %d in %s\n",
- __LINE__, __FILE__);
+ arg = KdParseFindNext (arg, ",", save, &delim);
+ if (!save[0])
+ {
+ ErrorF("keybd: failed on save[0]\n");
+ KdFreeKeyboard (ki);
+ return NULL;
}
-#endif
+
+ if (strcmp (save, "auto") == 0)
+ ki->driverPrivate = NULL;
+ else
+ ki->driverPrivate = xstrdup(save);
+
+ /* FIXME actually implement options */
+
+ return ki;
+}
+
+KdPointerInfo *
+KdParsePointer (char *arg)
+{
+ char save[1024];
+ char delim;
+ KdPointerInfo *pi = NULL;
+ InputOption *options = NULL, *newopt = NULL, **tmpo = NULL;
+ int i = 0;
+
+ pi = KdNewPointer();
+ if (!pi)
+ return NULL;
+ pi->emulateMiddleButton = kdEmulateMiddleButton;
+ pi->transformCoordinates = !kdRawPointerCoordinates;
+ pi->nButtons = 3;
+ pi->inputClass = KD_MOUSE;
+
+ if (!arg)
+ {
+ ErrorF("mouse: no arg\n");
+ KdFreePointer (pi);
+ return NULL;
+ }
+
+ if (strlen (arg) >= sizeof (save))
+ {
+ ErrorF("mouse: arg too long\n");
+ KdFreePointer (pi);
+ return NULL;
+ }
+ arg = KdParseFindNext (arg, ",", save, &delim);
+ if (!save[0])
+ {
+ ErrorF("failed on save[0]\n");
+ KdFreePointer (pi);
+ return NULL;
+ }
+
+ if (strcmp(save, "auto") == 0)
+ pi->driverPrivate = NULL;
+ else
+ pi->driverPrivate = xstrdup(save);
+
+ if (delim != ',')
+ {
+ return pi;
+ }
+
+ arg = KdParseFindNext (arg, ",", save, &delim);
+
+ while (delim == ',')
+ {
+ arg = KdParseFindNext (arg, ",", save, &delim);
+ if (save[0] == '{')
+ {
+ char *s = save + 1;
+ i = 0;
+ while (*s && *s != '}')
+ {
+ if ('1' <= *s && *s <= '0' + pi->nButtons)
+ pi->map[i] = *s - '0';
+ else
+ UseMsg ();
+ s++;
+ }
+ }
+ else if (!strcmp (save, "emulatemiddle"))
+ pi->emulateMiddleButton = TRUE;
+ else if (!strcmp (save, "noemulatemiddle"))
+ pi->emulateMiddleButton = FALSE;
+ else if (!strcmp (save, "transformcoord"))
+ pi->transformCoordinates = TRUE;
+ else if (!strcmp (save, "rawcoord"))
+ pi->transformCoordinates = FALSE;
+ else
+ {
+ newopt = (InputOption *) xalloc(sizeof (InputOption));
+ if (!newopt)
+ {
+ KdFreePointer(pi);
+ return NULL;
+ }
+ bzero(newopt, sizeof (InputOption));
+
+ for (tmpo = &options; *tmpo; tmpo = &(*tmpo)->next)
+ *tmpo = newopt;
+
+ if (strchr(arg, '='))
+ {
+ i = (strchr(arg, '=') - arg);
+ newopt->key = (char *)xalloc(i+1);
+ strncpy(newopt->key, arg, i+1);
+ newopt->value = xstrdup(strchr(arg, '=') + 1);
+ }
+ else
+ {
+ newopt->key = xstrdup(save);
+ newopt->value = NULL;
+ }
+ newopt->next = NULL;
+ }
+ }
+
+ if (options)
+ pi->options = options;
+
+ return pi;
+}
+
+
+void
+KdInitInput (void)
+{
+ KdPointerInfo *pi;
+ KdKeyboardInfo *ki;
+ struct KdConfigDevice *dev;
+
+ kdInputEnabled = TRUE;
+
+ for (dev = kdConfigPointers; dev; dev = dev->next) {
+ pi = KdParsePointer(dev->line);
+ if (!pi)
+ ErrorF("Failed to parse pointer\n");
+ if (KdAddPointer(pi) != Success)
+ ErrorF("Failed to add pointer!\n");
+ }
+ for (dev = kdConfigKeyboards; dev; dev = dev->next) {
+ ki = KdParseKeyboard(dev->line);
+ if (!ki)
+ ErrorF("Failed to parse keyboard\n");
+ if (KdAddKeyboard(ki) != Success)
+ ErrorF("Failed to add keyboard!\n");
+ }
+
+ if (!kdEvents)
+ kdEvents = (xEvent *)xcalloc(sizeof(xEvent), GetMaximumEventsNum());
+ if (!kdEvents)
+ FatalError("Couldn't allocate event buffer\n");
+
+ mieqInit();
}
/*
@@ -786,7 +1451,7 @@ typedef enum _inputAction {
typedef struct _inputTransition {
KdInputAction actions[MAX_ACTIONS];
- KdMouseState nextState;
+ KdPointerState nextState;
} KdInputTransition;
static const
@@ -931,32 +1596,22 @@ KdInputTransition kdInputMachine[num_input_states][num_input_class] = {
#define EMULATION_WINDOW 10
#define EMULATION_TIMEOUT 100
-#define EventX(e) ((e)->u.keyButtonPointer.rootX)
-#define EventY(e) ((e)->u.keyButtonPointer.rootY)
-
static int
-KdInsideEmulationWindow (KdMouseInfo *mi, xEvent *ev)
+KdInsideEmulationWindow (KdPointerInfo *pi, int x, int y, int z)
{
- if (ev->u.keyButtonPointer.pad1)
- {
- mi->emulationDx += EventX(ev);
- mi->emulationDy += EventY(ev);
- }
- else
- {
- mi->emulationDx = EventX(&mi->heldEvent) - EventX(ev);
- mi->emulationDy = EventY(&mi->heldEvent) - EventY(ev);
- }
- return (abs (mi->emulationDx) < EMULATION_WINDOW &&
- abs (mi->emulationDy) < EMULATION_WINDOW);
+ pi->emulationDx = pi->heldEvent.x - x;
+ pi->emulationDy = pi->heldEvent.y - y;
+
+ return (abs (pi->emulationDx) < EMULATION_WINDOW &&
+ abs (pi->emulationDy) < EMULATION_WINDOW);
}
static KdInputClass
-KdClassifyInput (KdMouseInfo *mi, xEvent *ev)
+KdClassifyInput (KdPointerInfo *pi, int type, int x, int y, int z, int b)
{
- switch (ev->u.u.type) {
+ switch (type) {
case ButtonPress:
- switch (ev->u.u.detail) {
+ switch (b) {
case 1: return down_1;
case 2: return down_2;
case 3: return down_3;
@@ -964,7 +1619,7 @@ KdClassifyInput (KdMouseInfo *mi, xEvent *ev)
}
break;
case ButtonRelease:
- switch (ev->u.u.detail) {
+ switch (b) {
case 1: return up_1;
case 2: return up_2;
case 3: return up_3;
@@ -972,7 +1627,7 @@ KdClassifyInput (KdMouseInfo *mi, xEvent *ev)
}
break;
case MotionNotify:
- if (mi->eventHeld && !KdInsideEmulationWindow(mi, ev))
+ if (pi->eventHeld && !KdInsideEmulationWindow(pi, x, y, z))
return outside_box;
else
return motion;
@@ -1018,119 +1673,101 @@ char *kdActionNames[] = {
#endif
static void
-KdQueueEvent (xEvent *ev)
+KdQueueEvent (DeviceIntPtr pDev, xEvent *ev)
{
KdAssertSigioBlocked ("KdQueueEvent");
- if (ev->u.u.type == MotionNotify)
- {
- if (ev->u.keyButtonPointer.pad1)
- {
- ev->u.keyButtonPointer.pad1 = 0;
- miPointerDeltaCursor (ev->u.keyButtonPointer.rootX,
- ev->u.keyButtonPointer.rootY,
- ev->u.keyButtonPointer.time);
- }
- else
- {
- miPointerAbsoluteCursor(ev->u.keyButtonPointer.rootX,
- ev->u.keyButtonPointer.rootY,
- ev->u.keyButtonPointer.time);
- }
- }
- else
- {
- mieqEnqueue (ev);
- }
+ mieqEnqueue (pDev, ev);
}
-static void
-KdRunMouseMachine (KdMouseInfo *mi, KdInputClass c, xEvent *ev)
+/* We return true if we're stealing the event. */
+static Bool
+KdRunMouseMachine (KdPointerInfo *pi, KdInputClass c, int type, int x, int y,
+ int z, int b, int absrel)
{
const KdInputTransition *t;
- int a;
+ int a;
- t = &kdInputMachine[mi->mouseState][c];
+ c = KdClassifyInput(pi, type, x, y, z, b);
+ t = &kdInputMachine[pi->mouseState][c];
for (a = 0; a < MAX_ACTIONS; a++)
{
switch (t->actions[a]) {
case noop:
break;
case hold:
- mi->eventHeld = TRUE;
- mi->emulationDx = 0;
- mi->emulationDy = 0;
- mi->heldEvent = *ev;
+ pi->eventHeld = TRUE;
+ pi->emulationDx = 0;
+ pi->emulationDy = 0;
+ pi->heldEvent.type = type;
+ pi->heldEvent.x = x;
+ pi->heldEvent.y = y;
+ pi->heldEvent.z = z;
+ pi->heldEvent.flags = b;
+ pi->heldEvent.absrel = absrel;
+ return TRUE;
break;
case setto:
- mi->emulationTimeout = GetTimeInMillis () + EMULATION_TIMEOUT;
- mi->timeoutPending = TRUE;
+ pi->emulationTimeout = GetTimeInMillis () + EMULATION_TIMEOUT;
+ pi->timeoutPending = TRUE;
break;
case deliver:
- KdQueueEvent (ev);
+ _KdEnqueuePointerEvent (pi, pi->heldEvent.type, pi->heldEvent.x,
+ pi->heldEvent.y, pi->heldEvent.z,
+ pi->heldEvent.flags, pi->heldEvent.absrel,
+ TRUE);
break;
case release:
- mi->eventHeld = FALSE;
- mi->timeoutPending = FALSE;
- KdQueueEvent (&mi->heldEvent);
+ pi->eventHeld = FALSE;
+ pi->timeoutPending = FALSE;
+ _KdEnqueuePointerEvent (pi, pi->heldEvent.type, pi->heldEvent.x,
+ pi->heldEvent.y, pi->heldEvent.z,
+ pi->heldEvent.flags, pi->heldEvent.absrel,
+ TRUE);
+ return TRUE;
break;
case clearto:
- mi->timeoutPending = FALSE;
+ pi->timeoutPending = FALSE;
break;
case gen_down_2:
- ev->u.u.detail = 2;
- mi->eventHeld = FALSE;
- KdQueueEvent (ev);
+ _KdEnqueuePointerEvent (pi, ButtonPress, x, y, z, 2, absrel,
+ TRUE);
+ pi->eventHeld = FALSE;
+ return TRUE;
break;
case gen_up_2:
- ev->u.u.detail = 2;
- KdQueueEvent (ev);
+ _KdEnqueuePointerEvent (pi, ButtonRelease, x, y, z, 2, absrel,
+ TRUE);
+ return TRUE;
break;
}
}
- mi->mouseState = t->nextState;
-}
-
-void
-KdResetInputMachine (void)
-{
- KdMouseInfo *mi;
-
- for (mi = kdMouseInfo; mi; mi = mi->next)
- {
- mi->mouseState = start;
- mi->eventHeld = FALSE;
- }
+ pi->mouseState = t->nextState;
+ return FALSE;
}
-static void
-KdHandleMouseEvent (KdMouseInfo *mi, xEvent *ev)
+static int
+KdHandlePointerEvent (KdPointerInfo *pi, int type, int x, int y, int z, int b,
+ int absrel)
{
- if (mi->emulateMiddleButton)
- KdRunMouseMachine (mi, KdClassifyInput (mi, ev), ev);
- else
- KdQueueEvent (ev);
+ if (pi->emulateMiddleButton)
+ return KdRunMouseMachine (pi, KdClassifyInput(pi, type, x, y, z, b),
+ type, x, y, z, b, absrel);
+ return FALSE;
}
static void
-KdReceiveTimeout (KdMouseInfo *mi)
+KdReceiveTimeout (KdPointerInfo *pi)
{
- KdRunMouseMachine (mi, timeout, 0);
+ KdRunMouseMachine (pi, timeout, 0, 0, 0, 0, 0, 0);
}
-#define KILL_SEQUENCE ((1L << KK_CONTROL)|(1L << KK_ALT)|(1L << KK_F8)|(1L << KK_F10))
-#define SPECIAL_SEQUENCE ((1L << KK_CONTROL) | (1L << KK_ALT))
-#define SETKILLKEY(b) (KdSpecialKeys |= (1L << (b)))
-#define CLEARKILLKEY(b) (KdSpecialKeys &= ~(1L << (b)))
-#define KEYMAP (pKdKeyboard->key->curKeySyms)
-#define KEYCOL1(k) (KEYMAP.map[((k)-kdMinKeyCode)*KEYMAP.mapWidth])
+#define KILL_SEQUENCE ((1L << KK_CONTROL)|(1L << KK_ALT)|(1L << KK_F8)|(1L << KK_F10))
+#define SPECIAL_SEQUENCE ((1L << KK_CONTROL) | (1L << KK_ALT))
+#define SETKILLKEY(b) (KdSpecialKeys |= (1L << (b)))
+#define CLEARKILLKEY(b) (KdSpecialKeys &= ~(1L << (b)))
CARD32 KdSpecialKeys = 0;
-#if 0
-/* already defined in opaque.h */
-extern char dispatchException;
-#endif
-
/*
* kdCheckTermination
*
@@ -1145,44 +1782,28 @@ extern char dispatchException;
extern int nClients;
static void
-KdCheckSpecialKeys(xEvent *xE)
+KdCheckSpecialKeys(KdKeyboardInfo *ki, int type, int sym)
{
- KeySym sym = KEYCOL1(xE->u.u.detail);
-
- if (!pKdKeyboard) return;
+ if (!ki)
+ return;
/*
* Ignore key releases
*/
-
- if (xE->u.u.type == KeyRelease) return;
-#ifdef XIPAQ
- /*
- * Check for buttons 1, 2 and 3 on the iPAQ
- */
- if (sym == XK_Pointer_Button1 && kdMouseInfo) {
- KdEnqueueMouseEvent(kdMouseInfo, KD_MOUSE_DELTA | KD_BUTTON_1, 0, 0);
- return;
- }
- if (sym == XK_Pointer_Button2 && kdMouseInfo) {
- KdEnqueueMouseEvent(kdMouseInfo, KD_MOUSE_DELTA | KD_BUTTON_2, 0, 0);
- return;
- }
- if (sym == XK_Pointer_Button3 && kdMouseInfo) {
- KdEnqueueMouseEvent(kdMouseInfo, KD_MOUSE_DELTA | KD_BUTTON_3, 0, 0);
- return;
- }
-#endif
+ if (type == KeyRelease)
+ return;
+
+ /* Some iPaq keyboard -> mouse button mapping used to be here, but I
+ * refuse to perpetuate this madness. -daniels */
/*
* Check for control/alt pressed
*/
- if ((pKdKeyboard->key->state & (ControlMask|Mod1Mask)) !=
+ if ((ki->dixdev->key->state & (ControlMask|Mod1Mask)) !=
(ControlMask|Mod1Mask))
return;
-
-
+
/*
* Let OS function see keysym first
*/
@@ -1194,6 +1815,8 @@ KdCheckSpecialKeys(xEvent *xE)
/*
* Now check for backspace or delete; these signal the
* X server to terminate
+ *
+ * I can't believe it's not XKB. -daniels
*/
switch (sym) {
case XK_BackSpace:
@@ -1219,150 +1842,125 @@ KdCheckSpecialKeys(xEvent *xE)
*/
static void
-KdHandleKeyboardEvent (xEvent *ev)
+KdHandleKeyboardEvent (KdKeyboardInfo *ki, int type, int key)
{
- int key = ev->u.u.detail;
- int byte;
- CARD8 bit;
- KdMouseInfo *mi;
+ int byte;
+ CARD8 bit;
+ KdPointerInfo *pi;
byte = key >> 3;
bit = 1 << (key & 7);
- switch (ev->u.u.type) {
+
+ switch (type) {
case KeyPress:
- kdKeyState[byte] |= bit;
+ ki->keyState[byte] |= bit;
break;
case KeyRelease:
- kdKeyState[byte] &= ~bit;
+ ki->keyState[byte] &= ~bit;
break;
}
- for (mi = kdMouseInfo; mi; mi = mi->next)
- KdRunMouseMachine (mi, keyboard, 0);
- KdQueueEvent (ev);
+
+ for (pi = kdPointers; pi; pi = pi->next)
+ KdRunMouseMachine (pi, keyboard, 0, 0, 0, 0, 0, 0);
}
void
KdReleaseAllKeys (void)
{
- xEvent xE;
- int key;
+ int key, nEvents, i;
+ KdKeyboardInfo *ki;
KdBlockSigio ();
- for (key = 0; key < KD_KEY_COUNT; key++)
- if (IsKeyDown(key))
- {
- xE.u.keyButtonPointer.time = GetTimeInMillis();
- xE.u.u.type = KeyRelease;
- xE.u.u.detail = key;
- KdHandleKeyboardEvent (&xE);
- }
+
+ for (ki = kdKeyboards; ki; ki = ki->next) {
+ for (key = ki->keySyms.minKeyCode; key < ki->keySyms.maxKeyCode;
+ key++) {
+ if (IsKeyDown(ki, key)) {
+ KdHandleKeyboardEvent(ki, KeyRelease, key);
+ nEvents = GetKeyboardEvents(kdEvents, ki->dixdev, KeyRelease, key);
+ for (i = 0; i < nEvents; i++)
+ KdQueueEvent (ki->dixdev, kdEvents + i);
+ }
+ }
+ }
+
KdUnblockSigio ();
}
static void
KdCheckLock (void)
{
- KeyClassPtr keyc = pKdKeyboard->key;
- Bool isSet, shouldBeSet;
-
- if (kdKeyboardFuncs->LockLed)
- {
- isSet = (kdLeds & (1 << (kdKeyboardFuncs->LockLed-1))) != 0;
- shouldBeSet = (keyc->state & LockMask) != 0;
- if (isSet != shouldBeSet)
- {
- KdSetLed (kdKeyboardFuncs->LockLed, shouldBeSet);
- }
+ KeyClassPtr keyc = NULL;
+ Bool isSet = FALSE, shouldBeSet = FALSE;
+ KdKeyboardInfo *tmp = NULL;
+
+ for (tmp = kdKeyboards; tmp; tmp = tmp->next) {
+ if (tmp->LockLed && tmp->dixdev && tmp->dixdev->key) {
+ keyc = tmp->dixdev->key;
+ isSet = (tmp->leds & (1 << (tmp->LockLed-1))) != 0;
+ shouldBeSet = (keyc->state & LockMask) != 0;
+ if (isSet != shouldBeSet)
+ KdSetLed (tmp, tmp->LockLed, shouldBeSet);
+ }
}
}
void
-KdEnqueueKeyboardEvent(unsigned char scan_code,
- unsigned char is_up)
+KdEnqueueKeyboardEvent(KdKeyboardInfo *ki,
+ unsigned char scan_code,
+ unsigned char is_up)
{
- unsigned char key_code;
- xEvent xE;
- KeyClassPtr keyc;
-
- if (!pKdKeyboard)
+ unsigned char key_code;
+ KeyClassPtr keyc = NULL;
+ KeybdCtrl *ctrl = NULL;
+ int type, nEvents, i;
+
+#ifdef DEBUG
+ ErrorF("enqueuing kb event (scancode %d, %s)\n", scan_code, is_up ? "up" : "down");
+ ErrorF("event is from %s\n", ki->name);
+#endif
+
+ if (!ki || !ki->dixdev || !ki->dixdev->kbdfeed || !ki->dixdev->key)
return;
- keyc = pKdKeyboard->key;
- xE.u.keyButtonPointer.time = GetTimeInMillis();
+ keyc = ki->dixdev->key;
+ ctrl = &ki->dixdev->kbdfeed->ctrl;
- if (kdMinScanCode <= scan_code && scan_code <= kdMaxScanCode)
+ if (scan_code >= ki->minScanCode && scan_code <= ki->maxScanCode)
{
- key_code = scan_code + KD_MIN_KEYCODE - kdMinScanCode;
+ key_code = scan_code + KD_MIN_KEYCODE - ki->minScanCode;
/*
* Set up this event -- the type may be modified below
*/
if (is_up)
- xE.u.u.type = KeyRelease;
+ type = KeyRelease;
else
- xE.u.u.type = KeyPress;
- xE.u.u.detail = key_code;
+ type = KeyPress;
- switch (KEYCOL1(key_code))
- {
- case XK_Num_Lock:
- case XK_Scroll_Lock:
- case XK_Shift_Lock:
- case XK_Caps_Lock:
- if (xE.u.u.type == KeyRelease)
- return;
- if (IsKeyDown (key_code))
- xE.u.u.type = KeyRelease;
- else
- xE.u.u.type = KeyPress;
+#ifdef XKB
+ if (noXkbExtension)
+#endif
+ {
+ KdCheckSpecialKeys(ki, type, key_code);
+ KdHandleKeyboardEvent(ki, type, key_code);
}
- /*
- * Check pressed keys which are already down
- */
- if (IsKeyDown (key_code) && xE.u.u.type == KeyPress)
- {
- KeybdCtrl *ctrl = &pKdKeyboard->kbdfeed->ctrl;
-
- /*
- * Check auto repeat
- */
- if (!ctrl->autoRepeat || keyc->modifierMap[key_code] ||
- !(ctrl->autoRepeats[key_code >> 3] & (1 << (key_code & 7))))
- {
- return;
- }
- /*
- * X delivers press/release even for autorepeat
- */
- xE.u.u.type = KeyRelease;
- KdHandleKeyboardEvent (&xE);
- xE.u.u.type = KeyPress;
- }
- /*
- * Check released keys which are already up
- */
- else if (!IsKeyDown (key_code) && xE.u.u.type == KeyRelease)
- {
- return;
- }
- KdCheckSpecialKeys (&xE);
- KdHandleKeyboardEvent (&xE);
+ nEvents = GetKeyboardEvents(kdEvents, ki->dixdev, type, key_code);
+#ifdef DEBUG
+ ErrorF("KdEnqueueKeyboardEvent: got %d events from GKE\n", nEvents);
+#endif
+ for (i = 0; i < nEvents; i++)
+ KdQueueEvent(ki->dixdev, kdEvents + i);
+ }
+ else {
+ ErrorF("driver %s wanted to post scancode %d outside of [%d, %d]!\n",
+ ki->name, scan_code, ki->minScanCode, ki->maxScanCode);
}
}
-#define SetButton(mi, b, v, s) \
-{\
- xE.u.u.detail = mi->map[b]; \
- xE.u.u.type = v; \
- KdHandleMouseEvent (mi, &xE); \
-}
-
-#define Press(mi, b) SetButton(mi, b, ButtonPress, "Down")
-#define Release(mi, b) SetButton(mi, b, ButtonRelease, "Up")
-
/*
- * kdEnqueueMouseEvent
+ * kdEnqueuePointerEvent
*
* This function converts hardware mouse event information into X event
* information. A mouse movement event is passed off to MI to generate
@@ -1370,124 +1968,108 @@ KdEnqueueKeyboardEvent(unsigned char scan_code,
* passed off to MI for enqueueing.
*/
-static void
-KdMouseAccelerate (DeviceIntPtr device, int *dx, int *dy)
-{
- PtrCtrl *pCtrl = &device->ptrfeed->ctrl;
- double speed = sqrt (*dx * *dx + *dy * *dy);
- double accel;
-#ifdef QUADRATIC_ACCELERATION
- double m;
-
- /*
- * Ok, so we want it moving num/den times faster at threshold*2
- *
- * accel = m *threshold + b
- * 1 = m * 0 + b -> b = 1
- *
- * num/den = m * (threshold * 2) + 1
- *
- * num / den - 1 = m * threshold * 2
- * (num / den - 1) / threshold * 2 = m
- */
- m = (((double) pCtrl->num / (double) pCtrl->den - 1.0) /
- ((double) pCtrl->threshold * 2.0));
- accel = m * speed + 1;
-#else
- accel = 1.0;
- if (speed > pCtrl->threshold)
- accel = (double) pCtrl->num / pCtrl->den;
-#endif
- *dx = accel * *dx;
- *dy = accel * *dy;
-}
-
+/* FIXME do something a little more clever to deal with multiple axes here */
void
-KdEnqueueMouseEvent(KdMouseInfo *mi, unsigned long flags, int rx, int ry)
+KdEnqueuePointerEvent(KdPointerInfo *pi, unsigned long flags, int rx, int ry,
+ int rz)
{
- CARD32 ms;
- xEvent xE;
- unsigned char buttons;
- int x, y;
- int (*matrix)[3] = kdMouseMatrix.matrix;
- unsigned long button;
- int n;
-
- if (!pKdPointer)
+ CARD32 ms;
+ unsigned char buttons;
+ int x, y, z;
+ int (*matrix)[3] = kdPointerMatrix.matrix;
+ unsigned long button;
+ int n;
+ int dixflags;
+
+ if (!pi)
return;
ms = GetTimeInMillis();
-
- if (flags & KD_MOUSE_DELTA)
- {
- if (mi->transformCoordinates)
- {
+
+ /* we don't need to transform z, so we don't. */
+ if (flags & KD_MOUSE_DELTA) {
+ if (pi->transformCoordinates) {
x = matrix[0][0] * rx + matrix[0][1] * ry;
y = matrix[1][0] * rx + matrix[1][1] * ry;
}
- else
- {
+ else {
x = rx;
y = ry;
}
- KdMouseAccelerate (pKdPointer, &x, &y);
- xE.u.keyButtonPointer.pad1 = 1;
}
- else
- {
- if (mi->transformCoordinates)
- {
- x = matrix[0][0] * rx + matrix[0][1] * ry + matrix[0][2];
- y = matrix[1][0] * rx + matrix[1][1] * ry + matrix[1][2];
+ else {
+ if (pi->transformCoordinates) {
+ x = matrix[0][0] * rx + matrix[0][1] * ry;
+ y = matrix[1][0] * rx + matrix[1][1] * ry;
}
- else
- {
+ else {
x = rx;
y = ry;
}
- xE.u.keyButtonPointer.pad1 = 0;
}
- xE.u.keyButtonPointer.time = ms;
- xE.u.keyButtonPointer.rootX = x;
- xE.u.keyButtonPointer.rootY = y;
+ z = rz;
- xE.u.u.type = MotionNotify;
- xE.u.u.detail = 0;
- KdHandleMouseEvent (mi, &xE);
+#ifdef DEBUG
+ ErrorF("sending motion notification for (%d, %d, %d)\n", x, y, z);
+ ErrorF(" comes from (%d, %d, %d)\n", rx, ry, rz);
+ ErrorF(" is %s\n", (flags & KD_MOUSE_DELTA) ? "relative" : "absolute");
+#endif
+
+ if (flags & KD_MOUSE_DELTA)
+ dixflags = POINTER_RELATIVE & POINTER_ACCELERATE;
+ else
+ dixflags = POINTER_ABSOLUTE;
+
+ _KdEnqueuePointerEvent(pi, MotionNotify, x, y, z, 0, dixflags, FALSE);
buttons = flags;
- for (button = KD_BUTTON_1, n = 0; button <= KD_BUTTON_5; button <<= 1, n++)
- {
- if ((mi->buttonState & button) ^ (buttons & button))
- {
- if (buttons & button)
- {
- Press(mi, n);
- }
- else
- {
- Release(mi, n);
- }
+ for (button = KD_BUTTON_1, n = 1; n <= pi->nButtons;
+ button <<= 1, n++) {
+ if (((pi->buttonState & button) ^ (buttons & button)) &&
+ !(buttons & button)) {
+#ifdef DEBUG
+ ErrorF(" posting button release %d\n", n);
+#endif
+ _KdEnqueuePointerEvent(pi, ButtonRelease, x, y, z, n,
+ dixflags, FALSE);
}
}
- mi->buttonState = buttons;
+ for (button = KD_BUTTON_1, n = 1; n <= pi->nButtons;
+ button <<= 1, n++) {
+ if (((pi->buttonState & button) ^ (buttons & button)) &&
+ (buttons & button)) {
+#ifdef DEBUG
+ ErrorF(" posting button press %d\n", n);
+#endif
+ _KdEnqueuePointerEvent(pi, ButtonPress, x, y, z, n,
+ dixflags, FALSE);
+ }
+ }
+
+ pi->buttonState = buttons;
}
void
-KdEnqueueMotionEvent (KdMouseInfo *mi, int x, int y)
+_KdEnqueuePointerEvent (KdPointerInfo *pi, int type, int x, int y, int z,
+ int b, int absrel, Bool force)
{
- xEvent xE;
- CARD32 ms;
-
- ms = GetTimeInMillis();
-
- xE.u.u.type = MotionNotify;
- xE.u.keyButtonPointer.time = ms;
- xE.u.keyButtonPointer.rootX = x;
- xE.u.keyButtonPointer.rootY = y;
+ int nEvents = 0, i = 0;
+ int valuators[3] = { x, y, z };
- KdHandleMouseEvent (mi, &xE);
+#ifdef DEBUG
+ ErrorF("mouse enqueuing event from device %s (%d, %d, %d; %d)\n",
+ pi->name, x, y, z, b);
+#endif
+
+ /* TRUE from KdHandlePointerEvent, means 'we swallowed the event'. */
+ if (!force && KdHandlePointerEvent(pi, type, x, y, z, b, absrel))
+ return;
+
+ nEvents = GetPointerEvents(kdEvents, pi->dixdev, type, b, absrel, 0, 3,
+ valuators);
+ for (i = 0; i < nEvents; i++)
+ KdQueueEvent(pi->dixdev, kdEvents + i);
}
void
@@ -1496,16 +2078,16 @@ KdBlockHandler (int screen,
pointer timeout,
pointer readmask)
{
- KdMouseInfo *mi;
+ KdPointerInfo *pi;
int myTimeout=0;
- for (mi = kdMouseInfo; mi; mi = mi->next)
+ for (pi = kdPointers; pi; pi = pi->next)
{
- if (mi->timeoutPending)
+ if (pi->timeoutPending)
{
int ms;
- ms = mi->emulationTimeout - GetTimeInMillis ();
+ ms = pi->emulationTimeout - GetTimeInMillis ();
if (ms < 1)
ms = 1;
if(ms<myTimeout || myTimeout==0)
@@ -1531,7 +2113,7 @@ KdWakeupHandler (int screen,
int result = (int) lresult;
fd_set *pReadmask = (fd_set *) readmask;
int i;
- KdMouseInfo *mi;
+ KdPointerInfo *pi;
if (kdInputEnabled && result > 0)
{
@@ -1543,15 +2125,15 @@ KdWakeupHandler (int screen,
KdUnblockSigio ();
}
}
- for (mi = kdMouseInfo; mi; mi = mi->next)
+ for (pi = kdPointers; pi; pi = pi->next)
{
- if (mi->timeoutPending)
+ if (pi->timeoutPending)
{
- if ((long) (GetTimeInMillis () - mi->emulationTimeout) >= 0)
+ if ((long) (GetTimeInMillis () - pi->emulationTimeout) >= 0)
{
- mi->timeoutPending = FALSE;
+ pi->timeoutPending = FALSE;
KdBlockSigio ();
- KdReceiveTimeout (mi);
+ KdReceiveTimeout (pi);
KdUnblockSigio ();
}
}
@@ -1686,3 +2268,134 @@ ProcessInputEvents ()
KdProcessSwitch ();
KdCheckLock ();
}
+
+/* FIXME use XSECURITY to work out whether the client should be allowed to
+ * open and close. */
+void
+OpenInputDevice(DeviceIntPtr pDev, ClientPtr client, int *status)
+{
+ if (!pDev)
+ *status = BadDevice;
+ else
+ *status = Success;
+}
+
+void
+CloseInputDevice(DeviceIntPtr pDev, ClientPtr client)
+{
+ return;
+}
+
+/* We initialise all input devices at startup. */
+void
+AddOtherInputDevices(void)
+{
+ return;
+}
+
+/* At the moment, absolute/relative is up to the client. */
+int
+SetDeviceMode(register ClientPtr client, DeviceIntPtr pDev, int mode)
+{
+ return BadMatch;
+}
+
+int
+SetDeviceValuators(register ClientPtr client, DeviceIntPtr pDev,
+ int *valuators, int first_valuator, int num_valuators)
+{
+ return BadMatch;
+}
+
+int
+ChangeDeviceControl(register ClientPtr client, DeviceIntPtr pDev,
+ xDeviceCtl *control)
+{
+ switch (control->control) {
+ case DEVICE_RESOLUTION:
+ /* FIXME do something more intelligent here */
+ return BadMatch;
+
+ case DEVICE_ABS_CALIB:
+ case DEVICE_ABS_AREA:
+ return Success;
+
+ case DEVICE_CORE:
+ return Success;
+
+ default:
+ return BadMatch;
+ }
+
+ /* NOTREACHED */
+ return BadImplementation;
+}
+
+int
+NewInputDeviceRequest(InputOption *options)
+{
+ InputOption *option = NULL;
+ KdPointerInfo *pi = NULL;
+ KdKeyboardInfo *ki = NULL;
+
+ for (option = options; option; option = option->next) {
+ if (strcmp(option->key, "type") == 0) {
+ if (strcmp(option->value, "pointer") == 0) {
+ pi = KdNewPointer();
+ if (!pi)
+ return BadAlloc;
+ pi->options = options;
+ }
+ else if (strcmp(option->value, "keyboard") == 0) {
+ ki = KdNewKeyboard();
+ if (!ki)
+ return BadAlloc;
+ ki->options = options;
+ }
+ else {
+ ErrorF("unrecognised device type!\n");
+ return BadValue;
+ }
+ }
+ }
+
+ for (option = options; option; option = option->next) {
+ if (strcmp(option->key, "driver") == 0) {
+ if (pi) {
+ pi->driver = KdFindPointerDriver(option->value);
+ if (!pi->driver) {
+ ErrorF("couldn't find driver!\n");
+ KdFreePointer(pi);
+ return BadValue;
+ }
+ }
+ else if (ki) {
+ ki->driver = KdFindKeyboardDriver(option->value);
+ if (!ki->driver) {
+ ErrorF("couldn't find driver!\n");
+ KdFreeKeyboard(ki);
+ return BadValue;
+ }
+ }
+ }
+ }
+
+ if (pi) {
+ if (KdAddPointer(pi) != Success ||
+ ActivateDevice(pi->dixdev) != Success ||
+ EnableDevice(pi->dixdev) != TRUE) {
+ ErrorF("couldn't add or enable pointer\n");
+ return BadImplementation;
+ }
+ }
+ else if (ki) {
+ if (KdAddKeyboard(ki) != Success ||
+ ActivateDevice(ki->dixdev) != Success ||
+ EnableDevice(ki->dixdev) != TRUE) {
+ ErrorF("couldn't add or enable keyboard\n");
+ return BadImplementation;
+ }
+ }
+
+ return Success;
+}
diff --git a/hw/kdrive/src/kkeymap.c b/hw/kdrive/src/kkeymap.c
index 66383e7f3..ce4596fc8 100644
--- a/hw/kdrive/src/kkeymap.c
+++ b/hw/kdrive/src/kkeymap.c
@@ -28,14 +28,13 @@
#endif
#include "kdrive.h"
#include <X11/keysym.h>
-#include "kkeymap.h"
/*
* Map scan codes (both regular and synthesized from extended keys)
* to X keysyms
*/
-KeySym kdKeymap[(MAX_SCANCODE - MIN_SCANCODE + 1) * MAX_WIDTH] = {
+const KeySym kdDefaultKeymap[KD_MAX_LENGTH * KD_MAX_WIDTH] = {
/* These are directly mapped from DOS scanset 0 */
/* 1 8 */ XK_Escape, NoSymbol,
/* 2 9 */ XK_1, XK_exclam,
@@ -152,58 +151,13 @@ KeySym kdKeymap[(MAX_SCANCODE - MIN_SCANCODE + 1) * MAX_WIDTH] = {
/* 110 117 */ NoSymbol, NoSymbol,
/* 111 118 */ NoSymbol, NoSymbol,
/* 112 119 */ NoSymbol, NoSymbol,
-;
-
-/*
- * Map extended keys to additional scancodes
- */
-KdExtendMap kdExtendMap[] = {
- 0x1d, 89, /* Control_R */
- 0x1c, 90, /* KP_Enter */
- 0x35, 91, /* KP_Divide */
- 0x37, 92, /* Sys_Req */
- 0x38, 93, /* Alt_R */
- 0x45, 94, /* Num_Lock */
- 0x47, 95, /* Home */
- 0x48, 96, /* Up */
- 0x49, 97, /* Page_Up */
- 0x4b, 98, /* Left */
- 0x4d, 99, /* Right */
- 0x4f, 100, /* End */
- 0x50, 101, /* Down */
- 0x51, 102, /* Page_Down */
- 0x52, 103, /* Insert */
- 0x53, 104, /* Delete */
- 0x5b, 105, /* Super_L (Windows_L) */
- 0x5c, 106, /* Super_R (Windows_R) */
- 0x5d, 107, /* Menu */
- 0x46, 69, /* Break (with control pressed) */
};
-#define NUM_EXTEND (sizeof (kdExtendMap)/ sizeof (kdExtendMap[0]))
-
-int kdNumExtend = NUM_EXTEND;
-
-/*
- * Map keys on Japanese keyboard far from zero back to reasonable values
- */
-KdExtendMap kdJapanMap[] = {
- 0x70, 108, /* next to Alt key */
- 0x73, 109, /* dash/vbar */
- 0x79, 110, /* right of space bar */
- 0x7b, 111, /* left of space bar */
- 0x7d, 112, /* Yen */
-};
-
-#define NUM_JAPAN (sizeof (kdJapanMap)/sizeof (kdJapanMap[0]))
-
-int kdNumJapan = NUM_JAPAN;
-
/*
* List of locking key codes
*/
-CARD8 kdLockMap[] = {
+CARD8 kdLockMap[] = {
65,
101,
77,
@@ -218,7 +172,7 @@ int kdNumLock = NUM_LOCK;
* the KEYMAP_LOCKING_ALTGR flag is set in CEKeymapFlags
*/
-CARD8 kdOptionalLockMap[] = {
+CARD8 kdOptionalLockMap[] = {
100,
};
@@ -226,13 +180,13 @@ CARD8 kdOptionalLockMap[] = {
int kdNumOptionalLock = NUM_OPTIONAL_LOCK;
-CARD8 kdModMap[MAP_LENGTH];
+const CARD8 kdDefaultModMap[MAP_LENGTH];
-unsigned long kdKeymapFlags = 0;
+unsigned long kdDefaultKeymapFlags = 0;
-KeySymsRec kdKeySyms = {
- kdKeymap,
- MIN_KEYCODE,
- MAX_KEYCODE,
- 2
+const KeySymsRec kdDefaultKeySyms = {
+ kdDefaultKeymap,
+ KD_MIN_KEYCODE,
+ KD_MAX_KEYCODE,
+ KD_MAX_WIDTH
};
diff --git a/hw/kdrive/src/kloadmap.c b/hw/kdrive/src/kloadmap.c
index bc003d485..b62b2deb2 100644
--- a/hw/kdrive/src/kloadmap.c
+++ b/hw/kdrive/src/kloadmap.c
@@ -27,7 +27,6 @@
#include <kdrive-config.h>
#endif
#include "kdrive.h"
-#include "kkeymap.h"
#ifdef WINDOWS
#define KM_BUF 1024
diff --git a/hw/kdrive/src/kxv.c b/hw/kdrive/src/kxv.c
index 8580dc2ee..4e672f16f 100644
--- a/hw/kdrive/src/kxv.c
+++ b/hw/kdrive/src/kxv.c
@@ -1814,7 +1814,7 @@ KdXVCopyPackedData(KdScreenInfo *screen, CARD8 *src, CARD8 *dst, int randr,
src = src + top * srcDown + left * srcRight;
w >>= 1;
- srcRight >>= 1;
+ /* srcRight >>= 1; */
srcNext = srcRight >> 1;
while (h--) {
CARD16 *s = (CARD16 *)src;
diff --git a/hw/kdrive/trident/tridentstub.c b/hw/kdrive/trident/tridentstub.c
index ebfd7ee9c..650206aac 100644
--- a/hw/kdrive/trident/tridentstub.c
+++ b/hw/kdrive/trident/tridentstub.c
@@ -49,7 +49,8 @@ InitOutput (ScreenInfo *pScreenInfo, int argc, char **argv)
void
InitInput (int argc, char **argv)
{
- KdInitInput (&LinuxMouseFuncs, &LinuxKeyboardFuncs);
+ KdOsAddInputDrivers ();
+ KdInitInput ();
}
void
diff --git a/hw/kdrive/trio/s3stub.c b/hw/kdrive/trio/s3stub.c
index 68178eda0..7531858c5 100644
--- a/hw/kdrive/trio/s3stub.c
+++ b/hw/kdrive/trio/s3stub.c
@@ -52,7 +52,8 @@ InitOutput (ScreenInfo *pScreenInfo, int argc, char **argv)
void
InitInput (int argc, char **argv)
{
- KdInitInput (&LinuxMouseFuncs, &LinuxKeyboardFuncs);
+ KdOsAddInputDrivers ();
+ KdInitInput ();
}
void
diff --git a/hw/kdrive/vesa/Makefile.am b/hw/kdrive/vesa/Makefile.am
index 01bc0a3e1..54a6f47ee 100644
--- a/hw/kdrive/vesa/Makefile.am
+++ b/hw/kdrive/vesa/Makefile.am
@@ -6,11 +6,6 @@ noinst_LIBRARIES = libvesa.a
bin_PROGRAMS = Xvesa
-if TSLIB
-TSLIB_FLAG = -lts
-endif
-
-
libvesa_a_SOURCES = \
vesa.c \
vesa.h \
@@ -27,10 +22,4 @@ Xvesa_SOURCES = \
Xvesa_LDADD = \
libvesa.a \
@KDRIVE_LIBS@ \
- @KDRIVE_LIBS@ \
- $(TSLIB_FLAG) \
@XSERVER_LIBS@
-
-Xvesa_DEPENDENCIES = \
- libvesa.a \
- @KDRIVE_LIBS@
diff --git a/hw/kdrive/vesa/vbe.c b/hw/kdrive/vesa/vbe.c
index 5fbd8abef..08f0b037c 100644
--- a/hw/kdrive/vesa/vbe.c
+++ b/hw/kdrive/vesa/vbe.c
@@ -101,7 +101,7 @@ VbeReportVib(Vm86InfoPtr vi, VbeInfoBlock *vib)
}
ErrorF(")\n");
ErrorF("DAC is %s, controller is %sVGA compatible%s\n",
- (vib->Capabilities[0]&1)?"fixed":"switchable",
+ (vib->Capabilities[0]&1)?"switchable":"fixed",
(vib->Capabilities[0]&2)?"not ":"",
(vib->Capabilities[0]&3)?", RAMDAC causes snow":"");
ErrorF("Total memory: %lu kilobytes\n", 64L*vib->TotalMemory);
diff --git a/hw/kdrive/vesa/vesa.c b/hw/kdrive/vesa/vesa.c
index 67d2d438a..766cacdc8 100644
--- a/hw/kdrive/vesa/vesa.c
+++ b/hw/kdrive/vesa/vesa.c
@@ -871,7 +871,7 @@ vesaComputeFramebufferMapping (KdScreenInfo *screen)
VesaScreenPrivPtr pscr = screen->driver;
int depth, bpp, fbbpp;
Pixel allbits;
- KdMouseMatrix m;
+ KdPointerMatrix m;
if (vesa_linear_fb)
{
@@ -970,10 +970,10 @@ vesaComputeFramebufferMapping (KdScreenInfo *screen)
pscr->mapping = VESA_WINDOWED;
pscr->shadow = TRUE;
}
- KdComputeMouseMatrix (&m, pscr->randr,
- pscr->mode.XResolution, pscr->mode.YResolution);
+ KdComputePointerMatrix (&m, pscr->randr,
+ pscr->mode.XResolution, pscr->mode.YResolution);
- KdSetMouseMatrix (&m);
+ KdSetPointerMatrix (&m);
screen->width = pscr->mode.XResolution;
screen->height = pscr->mode.YResolution;
diff --git a/hw/kdrive/vesa/vesainit.c b/hw/kdrive/vesa/vesainit.c
index 933715731..4f552d1a1 100644
--- a/hw/kdrive/vesa/vesainit.c
+++ b/hw/kdrive/vesa/vesainit.c
@@ -71,7 +71,16 @@ InitOutput (ScreenInfo *pScreenInfo, int argc, char **argv)
void
InitInput (int argc, char **argv)
{
- KdInitInput(&LinuxMouseFuncs, &LinuxKeyboardFuncs);
+ KdKeyboardInfo *ki = NULL;
+
+ KdAddPointerDriver(&LinuxMouseDriver);
+ KdAddKeyboardDriver(&LinuxKeyboardDriver);
+ ki = KdNewKeyboard();
+ if (ki) {
+ ki->driver = &LinuxKeyboardDriver;
+ KdAddKeyboard(ki);
+ }
+ KdInitInput();
}
void
diff --git a/hw/kdrive/vesa/vm86.c b/hw/kdrive/vesa/vm86.c
index c4aadbd85..d09a36dee 100644
--- a/hw/kdrive/vesa/vm86.c
+++ b/hw/kdrive/vesa/vm86.c
@@ -235,13 +235,9 @@ Vm86DoInterrupt(Vm86InfoPtr vi, int num)
OsBlockSignals ();
code = vm86_loop(vi);
OsReleaseSignals ();
- if(code < 0) {
- ErrorF("vm86 failed (errno %d)\n", errno);
+ if(code != 0)
return -1;
- } else if(code != 0) {
- ErrorF("vm86 returned 0x%04X\n", code);
- return -1;
- } else
+ else
return 0;
}
@@ -269,14 +265,10 @@ Vm86DoPOST(Vm86InfoPtr vi)
OsBlockSignals ();
code = vm86_loop(vi);
OsReleaseSignals ();
- if(code < 0) {
- ErrorF("vm86 failed (errno %d)\n", errno);
- return -1;
- } else if(code != 0) {
- ErrorF("vm86 returned 0x%04X\n", code);
+ if(code != 0)
return -1;
- } else
- return 0;
+ else
+ return 0;
}
#define DEBUG_VBE 0
@@ -573,8 +565,17 @@ vm86_loop(Vm86InfoPtr vi)
Vm86Debug(vi);
return -1;
default:
- ErrorF("Unexpected result code 0x%X from vm86\n", code);
- Vm86Debug(vi);
+ if(code < 0) {
+ if(errno == ENOSYS) {
+ ErrorF("No vm86 support. Are you running on AMD64?\n");
+ } else {
+ ErrorF("vm86 failed (errno = %d).\n", errno);
+ Vm86Debug(vi);
+ }
+ } else {
+ ErrorF("Unexpected result code 0x%X from vm86\n", code);
+ Vm86Debug(vi);
+ }
return -1;
}
}
diff --git a/hw/kdrive/via/Makefile.am b/hw/kdrive/via/Makefile.am
index 4d52df9b1..0ea88816a 100644
--- a/hw/kdrive/via/Makefile.am
+++ b/hw/kdrive/via/Makefile.am
@@ -5,10 +5,6 @@ INCLUDES = \
bin_PROGRAMS = Xvia
-if TSLIB
-TSLIB_FLAG = -lts
-endif
-
noinst_LIBRARIES = libvia.a
libvia_a_SOURCES = \
@@ -28,7 +24,4 @@ VIA_LIBS = \
Xvia_LDADD = \
$(VIA_LIBS) \
@KDRIVE_LIBS@ \
- @XSERVER_LIBS@ \
- $(TSLIB_FLAG)
-
-Xvia_DEPENDENCIES = $(VIA_LIBS) @KDRIVE_LIBS@
+ @XSERVER_LIBS@
diff --git a/hw/kdrive/via/viastub.c b/hw/kdrive/via/viastub.c
index f63ee0d81..1439010a9 100644
--- a/hw/kdrive/via/viastub.c
+++ b/hw/kdrive/via/viastub.c
@@ -87,7 +87,8 @@ InitOutput( ScreenInfo* pScreenInfo, int argc, char** argv ) {
*/
void
InitInput( int argc, char** argv ) {
- KdInitInput( &LinuxMouseFuncs, &LinuxKeyboardFuncs );
+ KdOsAddInputDrivers();
+ KdInitInput();
}
/*
diff --git a/hw/kdrive/vxworks/vxkbd.c b/hw/kdrive/vxworks/vxkbd.c
index 1c23aa915..b421e923e 100644
--- a/hw/kdrive/vxworks/vxkbd.c
+++ b/hw/kdrive/vxworks/vxkbd.c
@@ -171,7 +171,7 @@ static int kbdFd = -1;
#include <event.h>
#include <kbd_ioctl.h>
-extern KeybdCtrl defaultKeyboardControl;
+extern KeyboardCtrl defaultKeyboardControl;
static void
VxWorksSetAutorepeat (unsigned char *repeats, Bool on)
@@ -235,7 +235,7 @@ void
VxWorksKeyboardLeds (int leds)
{
DeviceIntPtr pKeyboard = (DeviceIntPtr) LookupKeyboardDevice ();
- KeybdCtrl *ctrl = &pKeyboard->kbdfeed->ctrl;
+ KeyboardCtrl *ctrl = &pKeyboard->kbdfeed->ctrl;
led_ioctl_info led_info;
int i;
diff --git a/hw/kdrive/vxworks/vxworks.c b/hw/kdrive/vxworks/vxworks.c
index ce214ff84..688de620b 100644
--- a/hw/kdrive/vxworks/vxworks.c
+++ b/hw/kdrive/vxworks/vxworks.c
@@ -12,17 +12,6 @@
#include "kdrive.h"
#include <X11/keysym.h>
-int
-VxWorksInit (void)
-{
- return 1;
-}
-
-void
-VxWorksEnable (void)
-{
-}
-
Bool
VxWorksSpecialKey (KeySym sym)
{
@@ -33,33 +22,19 @@ VxWorksSpecialKey (KeySym sym)
case XK_Break:
download(1, "launcher", 0);
return TRUE;
- case XK_Delete:
- dispatchException |= DE_REBOOT;
- return TRUE;
- case XK_BackSpace:
- dispatchException |= DE_RESET;
- return TRUE;
}
return FALSE;
}
void
-VxWorksDisable (void)
-{
-}
-
-void
-VxWorksFini (void)
+KdOsAddInputDrivers (void)
{
+ KdAddPointerDriver(&VxWorksMouseDriver);
+ KdAddPointerDriver(&VxWorksKeyboardDriver);
}
KdOsFuncs VxWorksFuncs = {
- VxWorksInit,
- VxWorksEnable,
- VxWorksSpecialKey,
- VxWorksDisable,
- VxWorksFini,
- 0
+ .SpecialKey = VxWorksSpecialKey,
};
void
diff --git a/hw/vfb/.gitignore b/hw/vfb/.gitignore
new file mode 100644
index 000000000..e3225f65b
--- /dev/null
+++ b/hw/vfb/.gitignore
@@ -0,0 +1,2 @@
+Xvfb.1
+Xvfb.1x
diff --git a/hw/vfb/InitInput.c b/hw/vfb/InitInput.c
index 23d404df5..99cf56c70 100644
--- a/hw/vfb/InitInput.c
+++ b/hw/vfb/InitInput.c
@@ -1,4 +1,3 @@
-/* $Xorg: InitInput.c,v 1.4 2001/02/09 02:04:44 xorgcvs Exp $ */
/*
Copyright 1993, 1998 The Open Group
@@ -26,7 +25,6 @@ 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>
@@ -45,7 +43,7 @@ from The Open Group.
#include <X11/keysym.h>
Bool
-LegalModifier(unsigned int key, DevicePtr pDev)
+LegalModifier(unsigned int key, DeviceIntPtr pDev)
{
return TRUE;
}
@@ -57,6 +55,10 @@ ProcessInputEvents()
miPointerUpdate();
}
+void DDXRingBell(int volume, int pitch, int duration)
+{
+}
+
#define VFB_MIN_KEY 8
#define VFB_MAX_KEY 255
KeySym map[MAP_LENGTH * LK201_GLYPHS_PER_KEY];
@@ -294,8 +296,8 @@ vfbMouseProc(DeviceIntPtr pDevice, int onoff)
map[1] = 1;
map[2] = 2;
map[3] = 3;
- InitPointerDeviceStruct(pDev, map, 3, miPointerGetMotionEvents,
- (PtrCtrlProcPtr)NoopDDA, miPointerGetMotionBufferSize());
+ InitPointerDeviceStruct(pDev, map, 3, GetMotionHistory,
+ (PtrCtrlProcPtr)NoopDDA, GetMotionHistorySize(), 2);
break;
case DEVICE_ON:
@@ -320,6 +322,5 @@ InitInput(int argc, char *argv[])
k = AddInputDevice(vfbKeybdProc, TRUE);
RegisterPointerDevice(p);
RegisterKeyboardDevice(k);
- miRegisterPointerDevice(screenInfo.screens[0], p);
- (void)mieqInit ((DevicePtr) k, (DevicePtr) p);
+ (void)mieqInit();
}
diff --git a/hw/vfb/InitOutput.c b/hw/vfb/InitOutput.c
index 86e3fbe14..a2d866118 100644
--- a/hw/vfb/InitOutput.c
+++ b/hw/vfb/InitOutput.c
@@ -1,4 +1,3 @@
-/* $Xorg: InitOutput.c,v 1.4 2001/02/09 02:04:45 xorgcvs Exp $ */
/*
Copyright 1993, 1998 The Open Group
@@ -26,7 +25,6 @@ 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>
@@ -255,10 +253,12 @@ OsVendorFatalError()
{
}
+#if defined(DDXBEFORERESET)
void ddxBeforeReset(void)
{
return;
}
+#endif
void
ddxUseMsg()
@@ -364,6 +364,9 @@ ddxProcessArgument(int argc, char *argv[], int i)
if (strcmp (argv[i], "-render") == 0) /* -render */
{
Render = FALSE;
+#ifdef COMPOSITE
+ noCompositeExtension = TRUE;
+#endif
return 1;
}
@@ -448,17 +451,6 @@ ddxProcessArgument(int argc, char *argv[], int i)
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
diff --git a/hw/vfb/Makefile.am b/hw/vfb/Makefile.am
index bd87d1d4b..4f711fde7 100644
--- a/hw/vfb/Makefile.am
+++ b/hw/vfb/Makefile.am
@@ -21,8 +21,9 @@ Xvfb_LDFLAGS =
AM_CFLAGS = -DHAVE_DIX_CONFIG_H \
-DNO_HW_ONLY_EXTS \
-DNO_MODULE_EXTS \
- @SERVER_DEFINES@ \
- $(XVFBMODULES_CFLAGS)
+ -DXFree86Server \
+ $(XVFBMODULES_CFLAGS) \
+ $(DIX_CFLAGS)
# Man page
include $(top_srcdir)/cpprules.in
diff --git a/hw/vfb/lk201kbd.h b/hw/vfb/lk201kbd.h
index 9b4090ed0..d0198d06b 100644
--- a/hw/vfb/lk201kbd.h
+++ b/hw/vfb/lk201kbd.h
@@ -45,7 +45,6 @@ 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
diff --git a/hw/xfree86/Makefile.am b/hw/xfree86/Makefile.am
index 8665926f6..0c1306f09 100644
--- a/hw/xfree86/Makefile.am
+++ b/hw/xfree86/Makefile.am
@@ -1,22 +1,28 @@
+include $(top_srcdir)/cpprules.in
+
if DRI
DRI_SUBDIR = dri
endif
+if XF86UTILS
+XF86UTILS_SUBDIR = utils
+endif
+
DOC_SUBDIR = doc
SUBDIRS = common ddc dummylib i2c x86emu int10 fbdevhw os-support parser rac \
ramdac shadowfb vbe vgahw xaa xf1bpp xf4bpp xf8_16bpp \
xf8_32bpp loader scanpci dixmods exa \
- $(DRI_SUBDIR) utils $(DOC_SUBDIR) getconfig
+ $(DRI_SUBDIR) $(XF86UTILS_SUBDIR) $(DOC_SUBDIR)
DIST_SUBDIRS = common ddc dummylib i2c x86emu int10 fbdevhw os-support \
parser rac ramdac shadowfb vbe vgahw xaa xf1bpp xf4bpp \
xf8_16bpp xf8_32bpp loader scanpci dixmods dri exa \
- utils doc getconfig
+ utils doc
bin_PROGRAMS = Xorg
-AM_CFLAGS = @XORG_CFLAGS@ @SERVER_DEFINES@ @LOADER_DEFINES@
+AM_CFLAGS = $(DIX_CFLAGS) @XORG_CFLAGS@
INCLUDES = @XORG_INCS@
Xorg_SOURCES = xorg.c
@@ -38,23 +44,29 @@ XORG_LIBS = \
common/libinit.a \
loader/libloader.a \
libosandcommon.la \
+ rac/librac.a \
parser/libxf86config.a \
- dummylib/libdummy.a \
dixmods/libdixmods.la \
@XORG_LIBS@
+Xorg_DEPENDENCIES = \
+ $(XORG_LIBS)
+
Xorg_LDADD = $(XORG_LIBS) \
@XSERVER_LIBS@ \
dixmods/libxorgxkb.la
Xorg_LDFLAGS = $(LD_EXPORT_SYMBOLS_FLAG)
+BUILT_SOURCES = xorg.conf.example
+CLEAN = xorg.conf.example xorg.conf.example.pre
+EXTRA_DIST = xorgconf.cpp
if SOLARIS_ASM_INLINE
# Needs to be built before any files are compiled when using Sun compilers
# so in*/out* inline definitions are properly processed.
-BUILT_SOURCES = os-support/solaris/solaris-$(SOLARIS_INOUT_ARCH).il
+BUILT_SOURCES += os-support/solaris/solaris-$(SOLARIS_INOUT_ARCH).il
os-support/solaris/solaris-$(SOLARIS_INOUT_ARCH).il:
cd os-support/solaris ; make solaris-$(SOLARIS_INOUT_ARCH).il
@@ -75,7 +87,18 @@ endif
optionsdir = $(libdir)/X11
dist_options_DATA = Options
-EXTRA_DIST = xorgconf.cpp
+CPP_FILES_FLAGS = \
+ -DRGBPATH=\"$(RGB_DB)\" \
+ -DLOCALFONTPATH="\"$(BASE_FONT_PATH)/local\"" \
+ -DMISCFONTPATH="\"$(BASE_FONT_PATH)/misc\"" \
+ -DT1FONTPATH="\"$(BASE_FONT_PATH)/Type1\"" \
+ -DTRUETYPEFONTPATH="\"$(BASE_FONT_PATH)/TTF\"" \
+ -DDPI75FONTPATH="\"$(BASE_FONT_PATH)/75dpi\"" \
+ -DDPI100FONTPATH="\"$(BASE_FONT_PATH)/100dpi\"" \
+ -DMODULEPATH=\"$(DEFAULT_MODULE_PATH)\"
relink:
rm -f Xorg && $(MAKE) Xorg
+
+xorg.conf.example.pre: xorgconf.cpp
+ cp $(srcdir)/xorgconf.cpp $@
diff --git a/hw/xfree86/common/Makefile.am b/hw/xfree86/common/Makefile.am
index 0fe8aff27..d15e99a51 100644
--- a/hw/xfree86/common/Makefile.am
+++ b/hw/xfree86/common/Makefile.am
@@ -21,8 +21,6 @@ RANDRSOURCES = xf86RandR.c
BUSSOURCES = xf86isaBus.c xf86pciBus.c xf86fbBus.c xf86noBus.c $(SBUS_SOURCES)
-KBDSOURCES = xf86Kbd@XORG_OS_KBD@.c
-
MODEDEFSOURCES = $(srcdir)/vesamodes $(srcdir)/extramodes
xf86DefModeSet.c: $(srcdir)/modeline2c.pl $(MODEDEFSOURCES)
@@ -32,16 +30,15 @@ BUILT_SOURCES = xf86DefModeSet.c
AM_LDFLAGS = -r
libcommon_la_SOURCES = xf86Configure.c xf86Bus.c xf86Config.c \
- xf86Cursor.c xf86DGA.c xf86DPMS.c \
+ xf86Cursor.c xf86cvt.c xf86DGA.c xf86DPMS.c \
xf86DoProbe.c xf86DoScanPci.c xf86Events.c \
- xf86Globals.c xf86Io.c xf86AutoConfig.c \
+ xf86Globals.c xf86AutoConfig.c \
xf86MiscExt.c xf86Option.c \
xf86VidMode.c xf86fbman.c xf86cmap.c \
xf86Helper.c xf86PM.c \
xf86Mode.c xf86Build.h xorgHelper.c xf86Versions.c \
$(XVSOURCES) $(BUSSOURCES) $(XKBSOURCES) \
- $(DEBUGSOURCES) $(XISOURCES) $(RANDRSOURCES) \
- $(KBDSOURCES)
+ $(DEBUGSOURCES) $(XISOURCES) $(RANDRSOURCES)
nodist_libcommon_la_SOURCES = xf86DefModeSet.c
libinit_a_SOURCES = xf86Build.h xf86Init.c
@@ -59,11 +56,6 @@ sdk_HEADERS = compiler.h fourcc.h xf86.h xf86Module.h xf86Opt.h \
DISTCLEANFILES = xf86Build.h
CLEANFILES = $(BUILT_SOURCES)
-# this is a hack for now. as above we don't have rules to build all of these
-# yet, but we want to make sure they all get into the distball. this should
-# eventually go away.
-DISTKBDSOURCES = xf86Kbd.c xf86KbdBSD.c xf86KbdLnx.c xf86KbdMach.c
-
EXTRA_DIST = \
atKeynames.h \
compiler.h \
@@ -74,7 +66,6 @@ EXTRA_DIST = \
xf86Bus.h \
xf86Config.h \
xf86InPriv.h \
- xf86Keymap.h \
xf86Module.h \
xf86Opt.h \
xf86PciInfo.h \
@@ -103,4 +94,4 @@ if LNXACPI
XORG_CFLAGS += -DHAVE_ACPI
endif
-AM_CFLAGS = $(XORG_CFLAGS) @SERVER_DEFINES@ @LOADER_DEFINES@
+AM_CFLAGS = $(DIX_CFLAGS) $(XORG_CFLAGS)
diff --git a/hw/xfree86/common/atKeynames.h b/hw/xfree86/common/atKeynames.h
index d37f5b0f0..1415fce20 100644
--- a/hw/xfree86/common/atKeynames.h
+++ b/hw/xfree86/common/atKeynames.h
@@ -1,4 +1,3 @@
-/* $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.
*
diff --git a/hw/xfree86/common/compiler.h b/hw/xfree86/common/compiler.h
index 39c8b8c59..ea995eda1 100644
--- a/hw/xfree86/common/compiler.h
+++ b/hw/xfree86/common/compiler.h
@@ -1,4 +1,3 @@
-/* $XFree86: xc/programs/Xserver/hw/xfree86/common/compiler.h,v 3.106 2004/02/02 03:55:28 dawes Exp $ */
/*
* Copyright 1990,91 by Thomas Roell, Dinkelscherben, Germany.
*
@@ -119,7 +118,7 @@ extern int ffs(unsigned long);
# if defined(NO_INLINE) || defined(DO_PROTOTYPES)
# if !defined(__arm__)
-# if !defined(__sparc__) && !defined(__arm32__) \
+# if !defined(__sparc__) && !defined(__sparc) && !defined(__arm32__) \
&& !(defined(__alpha__) && defined(linux)) \
&& !(defined(__ia64__) && defined(linux)) \
@@ -1079,7 +1078,10 @@ xf86WriteMmio32Be(__volatile__ void *base, const unsigned long offset,
extern volatile unsigned char *ioBase;
#if defined(linux) && defined(__powerpc64__)
-# include <asm/memory.h>
+# include <linux/version.h>
+# if LINUX_VERSION_CODE < KERNEL_VERSION(2, 6, 0)
+# include <asm/memory.h>
+# endif
#endif /* defined(linux) && defined(__powerpc64__) */
#ifndef eieio /* We deal with arch-specific eieio() routines above... */
# define eieio() __asm__ __volatile__ ("eieio" ::: "memory")
@@ -1512,88 +1514,7 @@ inl(unsigned short port)
# endif /* ix86 */
-# elif defined(__powerpc__) /* && !__GNUC__ */
-/*
- * NON-GCC PowerPC - Presumed to be PowerMAX OS for now
- */
-# ifndef PowerMAX_OS
-# error - Non-gcc PowerPC and !PowerMAXOS ???
-# endif
-
-# define PPCIO_DEBUG 0
-# define PPCIO_INLINE 1
-# define USE_ABS_MACRO 1
-/*
- * Use compiler intrinsics to access certain PPC machine instructions
- */
-# define eieio() __inst_eieio()
-# define stw_brx(val,base,ndx) __inst_sthbrx(val,base,ndx)
-# define stl_brx(val,base,ndx) __inst_stwbrx(val,base,ndx)
-# define ldw_brx(base,ndx) __inst_lhbrx(base,ndx)
-# define ldl_brx(base,ndx) __inst_lwbrx(base,ndx)
-
-# define ldq_u(p) (*((unsigned long long *)(p)))
-# define ldl_u(p) (*((unsigned long *)(p)))
-# define ldw_u(p) (*((unsigned short *)(p)))
-# define stq_u(v,p) (*(unsigned long long *)(p)) = (v)
-# define stl_u(v,p) (*(unsigned long *)(p)) = (v)
-# define stw_u(v,p) (*(unsigned short *)(p)) = (v)
-# define mem_barrier() eieio()
-# define write_mem_barrier() eieio()
-
-extern volatile unsigned char *ioBase;
-
-# if !defined(abs) && defined(USE_ABS_MACRO)
-# define abs(x) ((x) >= 0 ? (x) : -(x))
-# endif
-
-# undef inb
-# undef inw
-# undef inl
-# undef outb
-# undef outw
-# undef outl
-
-# if PPCIO_DEBUG
-
-extern void debug_outb(unsigned int a, unsigned char b, int line, char *file);
-extern void debug_outw(unsigned int a, unsigned short w, int line, char *file);
-extern void debug_outl(unsigned int a, unsigned int l, int line, char *file);
-extern unsigned char debug_inb(unsigned int a, int line, char *file);
-extern unsigned short debug_inw(unsigned int a, int line, char *file);
-extern unsigned int debug_inl(unsigned int a, int line, char *file);
-
-# define outb(a,b) debug_outb(a,b, __LINE__, __FILE__)
-# define outw(a,w) debug_outw(a,w, __LINE__, __FILE__)
-# define outl(a,l) debug_outl(a,l, __LINE__, __FILE__)
-# define inb(a) debug_inb(a, __LINE__, __FILE__)
-# define inw(a) debug_inw(a, __LINE__, __FILE__)
-# define inl(a) debug_inl(a, __LINE__, __FILE__)
-
-# else /* !PPCIO_DEBUG */
-
-extern unsigned char inb(unsigned int a);
-extern unsigned short inw(unsigned int a);
-extern unsigned int inl(unsigned int a);
-
-# if PPCIO_INLINE
-
-# define outb(a,b) \
- (*((volatile unsigned char *)(ioBase + (a))) = (b), eieio())
-# define outw(a,w) (stw_brx((w),ioBase,(a)), eieio())
-# define outl(a,l) (stl_brx((l),ioBase,(a)), eieio())
-
-# else /* !PPCIO_INLINE */
-
-extern void outb(unsigned int a, unsigned char b);
-extern void outw(unsigned int a, unsigned short w);
-extern void outl(unsigned int a, unsigned int l);
-
-# endif /* PPCIO_INLINE */
-
-# endif /* !PPCIO_DEBUG */
-
-# else /* !GNUC && !PPC */
+# else /* !GNUC */
# if !defined(QNX4)
# if defined(__STDC__) && (__STDC__ == 1)
# ifndef asm
@@ -1602,17 +1523,13 @@ extern void outl(unsigned int a, unsigned int l);
# endif
# ifndef SCO325
# if defined(__UNIXWARE__)
-# if defined(IN_MODULE)
# /* avoid including <sys/types.h> for <sys/inline.h> on UnixWare */
-# define ushort unsigned short
-# define ushort_t unsigned short
-# define ulong unsigned long
-# define ulong_t unsigned long
-# define uint_t unsigned int
-# define uchar_t unsigned char
-# else
-# include <sys/types.h>
-# endif /* IN_MODULE */
+# define ushort unsigned short
+# define ushort_t unsigned short
+# define ulong unsigned long
+# define ulong_t unsigned long
+# define uint_t unsigned int
+# define uchar_t unsigned char
# endif /* __UNIXWARE__ */
# if !defined(sgi) && !defined(__SUNPRO_C)
# include <sys/inline.h>
@@ -1780,7 +1697,7 @@ static __inline__ void ppc_flush_icache(char *addr)
: : "r"(addr) : "memory");
}
-# elif defined(__sparc__) || defined(sparc)
+# elif defined(__sparc__) || defined(sparc) || defined(__sparc)
/*
* Like powerpc, we provide byteswapping and no byteswapping functions
* here with byteswapping as default, drivers that don't need byteswapping
diff --git a/hw/xfree86/common/fourcc.h b/hw/xfree86/common/fourcc.h
index e60aa4e83..853657e86 100644
--- a/hw/xfree86/common/fourcc.h
+++ b/hw/xfree86/common/fourcc.h
@@ -1,4 +1,3 @@
-/* $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.
diff --git a/hw/xfree86/common/scoasm.h b/hw/xfree86/common/scoasm.h
index 5a5af8eb9..8f80e7b1e 100644
--- a/hw/xfree86/common/scoasm.h
+++ b/hw/xfree86/common/scoasm.h
@@ -1,4 +1,3 @@
-/* $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.
diff --git a/hw/xfree86/common/vesamodes b/hw/xfree86/common/vesamodes
index 851643fa6..2bc886276 100644
--- a/hw/xfree86/common/vesamodes
+++ b/hw/xfree86/common/vesamodes
@@ -16,10 +16,10 @@ ModeLine "640x400" 31.5 640 672 736 832 400 401 404 445 -hsync +vsy
ModeLine "720x400" 35.5 720 756 828 936 400 401 404 446 -hsync +vsync
# 640x480 @ 60Hz (Industry standard) hsync: 31.5kHz
-ModeLine "640x480" 25.2 640 656 752 800 480 490 492 525 -hsync -vsync
+ModeLine "640x480" 25.175 640 656 752 800 480 490 492 525 -hsync -vsync
# 640x480 @ 72Hz (VESA) hsync: 37.9kHz
-ModeLine "640x480" 31.5 640 664 704 832 480 489 491 520 -hsync -vsync
+ModeLine "640x480" 31.5 640 664 704 832 480 489 492 520 -hsync -vsync
# 640x480 @ 75Hz (VESA) hsync: 37.5kHz
ModeLine "640x480" 31.5 640 656 720 840 480 481 484 500 -hsync -vsync
@@ -52,7 +52,7 @@ ModeLine "1024x768" 65.0 1024 1048 1184 1344 768 771 777 806 -hsync -vsy
ModeLine "1024x768" 75.0 1024 1048 1184 1328 768 771 777 806 -hsync -vsync
# 1024x768 @ 75Hz (VESA) hsync: 60.0kHz
-ModeLine "1024x768" 78.8 1024 1040 1136 1312 768 769 772 800 +hsync +vsync
+ModeLine "1024x768" 78.75 1024 1040 1136 1312 768 769 772 800 +hsync +vsync
# 1024x768 @ 85Hz (VESA) hsync: 68.7kHz
ModeLine "1024x768" 94.5 1024 1072 1168 1376 768 769 772 808 +hsync +vsync
diff --git a/hw/xfree86/common/xf86.h b/hw/xfree86/common/xf86.h
index 3c416a0be..169a957d2 100644
--- a/hw/xfree86/common/xf86.h
+++ b/hw/xfree86/common/xf86.h
@@ -1,4 +1,3 @@
-/* $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.
@@ -37,6 +36,12 @@
#ifndef _XF86_H
#define _XF86_H
+#if HAVE_XORG_CONFIG_H
+#include <xorg-config.h>
+#elif HAVE_DIX_CONFIG_H
+#include <dix-config.h>
+#endif
+
#include "xf86str.h"
#include "xf86Opt.h"
#include <X11/Xfuncproto.h>
@@ -53,14 +58,13 @@ 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__
+#if defined(__sparc__) || defined(__sparc)
extern Bool sbusSlotClaimed;
#endif
extern confDRIRec xf86ConfigDRI;
@@ -166,9 +170,6 @@ 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);
@@ -199,6 +200,10 @@ void *xf86GetPointerScreenFuncs(void);
void xf86InitOrigins(void);
void xf86ReconfigureLayout(void);
+/* xf86cvt.c */
+DisplayModePtr xf86CVTMode(int HDisplay, int VDisplay, float VRefresh,
+ Bool Reduced, Bool Interlaced);
+
/* xf86DPMS.c */
Bool xf86DPMSInit(ScreenPtr pScreen, DPMSSetProcPtr set, int flags);
@@ -217,6 +222,10 @@ pointer xf86AddInputHandler(int fd, InputHandlerProc proc, pointer data);
int xf86RemoveInputHandler(pointer handler);
void xf86DisableInputHandler(pointer handler);
void xf86EnableInputHandler(pointer handler);
+pointer xf86AddGeneralHandler(int fd, InputHandlerProc proc, pointer data);
+int xf86RemoveGeneralHandler(pointer handler);
+void xf86DisableGeneralHandler(pointer handler);
+void xf86EnableGeneralHandler(pointer handler);
void xf86InterceptSignals(int *signo);
void xf86InterceptSigIll(void (*sigillhandler)(void));
Bool xf86EnableVTSwitch(Bool new);
@@ -354,10 +363,8 @@ int xf86RegisterRootWindowProperty(int ScrnIndex, Atom property, Atom type,
pointer value);
Bool xf86IsUnblank(int mode);
-#ifdef XFree86LOADER
void xf86AddModuleInfo(ModuleInfoPtr info, pointer module);
void xf86DeleteModuleInfo(int idx);
-#endif
/* xf86Debug.c */
#ifdef BUILDDEBUG
@@ -411,6 +418,15 @@ void xf86PruneDriverModes(ScrnInfoPtr scrp);
void xf86SetCrtcForModes(ScrnInfoPtr scrp, int adjustFlags);
void xf86PrintModes(ScrnInfoPtr scrp);
void xf86ShowClockRanges(ScrnInfoPtr scrp, ClockRangePtr clockRanges);
+double xf86ModeHSync(DisplayModePtr mode);
+double xf86ModeVRefresh(DisplayModePtr mode);
+void xf86SetModeDefaultName(DisplayModePtr mode);
+void xf86SetModeCrtc(DisplayModePtr p, int adjustFlags);
+DisplayModePtr xf86DuplicateMode(DisplayModePtr pMode);
+DisplayModePtr xf86DuplicateModes(ScrnInfoPtr pScrn, DisplayModePtr modeList);
+Bool xf86ModesEqual(DisplayModePtr pMode1, DisplayModePtr pMode2);
+void xf86PrintModeline(int scrnIndex,DisplayModePtr mode);
+DisplayModePtr xf86ModesAdd(DisplayModePtr modes, DisplayModePtr new);
/* xf86Option.c */
diff --git a/hw/xfree86/common/xf86AutoConfig.c b/hw/xfree86/common/xf86AutoConfig.c
index be07ec9d4..4f6a98aef 100644
--- a/hw/xfree86/common/xf86AutoConfig.c
+++ b/hw/xfree86/common/xf86AutoConfig.c
@@ -1,6 +1,3 @@
-/* $DHD: xc/programs/Xserver/hw/xfree86/common/xf86AutoConfig.c,v 1.15 2003/09/24 19:39:36 dawes Exp $ */
-/* $XdotOrg: $ */
-
/*
* Copyright 2003 by David H. Dawes.
* Copyright 2003 by X-Oz Technologies.
@@ -32,8 +29,6 @@
* 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
@@ -45,9 +40,7 @@
#include "xf86Priv.h"
#include "xf86_OSlib.h"
-/*
- * Sections for the default built-in configuration.
- */
+/* Sections for the default built-in configuration. */
#define BUILTIN_MODULE_SECTION \
"Section \"Module\"\n" \
@@ -55,6 +48,9 @@
"\tLoad\t\"dbe\"\n" \
"\tLoad\t\"glx\"\n" \
"\tLoad\t\"freetype\"\n" \
+ "\tLoad\t\"type1\"\n" \
+ "\tLoad\t\"record\"\n" \
+ "\tLoad\t\"dri\"\n" \
"EndSection\n\n"
#define BUILTIN_DEVICE_NAME \
@@ -78,7 +74,6 @@
#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 \
@@ -101,17 +96,6 @@
#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[] = {
@@ -171,6 +155,61 @@ AppendToConfig(const char *s)
AppendToList(s, &builtinConfig, &builtinLines);
}
+static const char *
+videoPtrToDriverName(pciVideoPtr info)
+{
+ /*
+ * things not handled yet:
+ * amd/cyrix/nsc
+ * xgi
+ */
+
+ switch (info->vendor)
+ {
+ case 0x1142: return "apm";
+ case 0xedd8: return "ark";
+ case 0x1a03: return "ast";
+ case 0x1002: return "ati";
+ case 0x102c: return "chips";
+ case 0x1013: return "cirrus";
+ case 0x8086:
+ if ((info->chipType == 0x00d1) || (info->chipType == 0x7800))
+ return "i740";
+ else return "i810";
+ case 0x102b: return "mga";
+ case 0x10c8: return "neomagic";
+ case 0x105d: return "i128";
+ case 0x10de: case 0x12d2: return "nv";
+ case 0x1163: return "rendition";
+ case 0x5333:
+ switch (info->chipType)
+ {
+ case 0x88d0: case 0x88d1: case 0x88f0: case 0x8811:
+ case 0x8812: case 0x8814: case 0x8901:
+ return "s3";
+ case 0x5631: case 0x883d: case 0x8a01: case 0x8a10:
+ case 0x8c01: case 0x8c03: case 0x8904: case 0x8a13:
+ return "s3virge";
+ default:
+ return "savage";
+ }
+ case 0x1039: return "sis";
+ case 0x126f: return "siliconmotion";
+ case 0x121a:
+ if (info->chipType < 0x0003)
+ return "voodoo";
+ else
+ return "tdfx";
+ case 0x3d3d: return "glint";
+ case 0x1023: return "trident";
+ case 0x100c: return "tseng";
+ case 0x1106: return "via";
+ case 0x15ad: return "vmware";
+ default: break;
+ }
+ return NULL;
+}
+
Bool
xf86AutoConfig(void)
{
@@ -178,7 +217,6 @@ xf86AutoConfig(void)
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. */
@@ -195,108 +233,8 @@ xf86AutoConfig(void)
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);
- }
+ if (info)
+ driver = videoPtrToDriverName(info);
AppendToConfig(BUILTIN_MODULE_SECTION);
AppendToConfig(BUILTIN_MONITOR_SECTION);
@@ -307,19 +245,12 @@ xf86AutoConfig(void)
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);
@@ -338,13 +269,6 @@ xf86AutoConfig(void)
}
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);
@@ -357,12 +281,9 @@ xf86AutoConfig(void)
xf86setBuiltinConfig(builtinConfig);
ret = xf86HandleConfigFile(TRUE);
FreeConfig();
- switch(ret) {
- case CONFIG_OK:
- return TRUE;
- default:
+
+ if (ret != CONFIG_OK)
xf86Msg(X_ERROR, "Error parsing the built-in default configuration.\n");
- return FALSE;
- }
-}
+ return (ret == CONFIG_OK);
+}
diff --git a/hw/xfree86/common/xf86Bus.c b/hw/xfree86/common/xf86Bus.c
index d93503723..7617bf78a 100644
--- a/hw/xfree86/common/xf86Bus.c
+++ b/hw/xfree86/common/xf86Bus.c
@@ -1,4 +1,3 @@
-/* $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.
*
@@ -66,7 +65,7 @@ xf86CurrentAccessRec xf86CurrentAccess = {NULL,NULL};
BusRec primaryBus = { BUS_NONE, {{0}}};
-Bool xf86ResAccessEnter = FALSE;
+static Bool xf86ResAccessEnter = FALSE;
#ifdef REDUCER
/* Resources that temporarily conflict with estimated resources */
@@ -114,7 +113,7 @@ void
xf86BusProbe(void)
{
xf86PciProbe();
-#if defined(__sparc__) && !defined(__OpenBSD__)
+#if (defined(__sparc__) || defined(__sparc)) && !defined(__OpenBSD__)
xf86SbusProbe();
#endif
}
@@ -665,32 +664,6 @@ xf86AccessRestoreState(void)
* Otherwise resources needed for access control might be shadowed
* by other resources!
*/
-#ifdef async
-
-static AsyncQPtr *AsyncQ = NULL;
-_X_EXPORT 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
_X_EXPORT void
xf86EnableAccess(ScrnInfoPtr pScrn)
@@ -699,9 +672,6 @@ xf86EnableAccess(ScrnInfoPtr pScrn)
register EntityAccessPtr pceAcc;
register xf86AccessPtr pAcc;
EntityAccessPtr tmp;
-#ifdef async
- AsyncQPtr *org, new = NULL;
-#endif
#ifdef DEBUG
ErrorF("Enable access %i\n",pScrn->scrnIndex);
@@ -710,9 +680,7 @@ xf86EnableAccess(ScrnInfoPtr pScrn)
/* 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;
}
@@ -723,7 +691,6 @@ xf86EnableAccess(ScrnInfoPtr pScrn)
if (peAcc == pceAcc) {
return;
}
- SETUP_Q;
if (pScrn->CurrentAccess->pMemAccess == pceAcc)
pScrn->CurrentAccess->pMemAccess = NULL;
while (pceAcc) {
@@ -741,13 +708,11 @@ xf86EnableAccess(ScrnInfoPtr pScrn)
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;
@@ -770,7 +735,6 @@ xf86EnableAccess(ScrnInfoPtr pScrn)
if (pceAcc == peAcc) { /* current Mem == pAccess */
return;
}
- SETUP_Q;
while (pceAcc) { /* current Mem != pAccess */
pAcc = pceAcc->pAccess;
if (pAcc && pAcc->AccessDisable)
@@ -788,7 +752,6 @@ xf86EnableAccess(ScrnInfoPtr pScrn)
}
pScrn->CurrentAccess->pMemAccess =
pScrn->CurrentAccess->pIoAccess = (EntityAccessPtr) pScrn->access;
- PROCESS_Q;
return;
case MEM:
@@ -796,7 +759,6 @@ xf86EnableAccess(ScrnInfoPtr pScrn)
if (peAcc == pceAcc) {
return;
}
- SETUP_Q;
if (pScrn->CurrentAccess->pIoAccess == pceAcc)
pScrn->CurrentAccess->pIoAccess = NULL;
while (pceAcc) {
@@ -814,14 +776,11 @@ xf86EnableAccess(ScrnInfoPtr pScrn)
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;
}
@@ -2414,7 +2373,7 @@ xf86PostProbe(void)
if (fbSlotClaimed) {
if (pciSlotClaimed || isaSlotClaimed
-#if defined(__sparc__) && !defined(__OpenBSD__)
+#if (defined(__sparc__) || defined(__sparc)) && !defined(__OpenBSD__)
|| sbusSlotClaimed
#endif
) {
@@ -2571,17 +2530,13 @@ xf86PostPreInit()
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
+ } else {
xf86ErrorFVerb(3, " No, I don't.\n");
-#endif
+ }
xf86MsgVerb(X_INFO, 3, "resource ranges after preInit:\n");
xf86PrintResList(3, Acc);
@@ -2594,22 +2549,12 @@ xf86PostScreenInit(void)
ScreenPtr pScreen;
unsigned int flags;
int nummem = 0, numio = 0;
-#ifdef XFree86LOADER
- pointer xf86RACInit = NULL;
-#endif
- if (doFramebufferMode) {
- SetSIGIOForState(OPERATING);
- return;
- }
+ 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
@@ -2688,12 +2633,7 @@ xf86PostScreenInit(void)
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
}
}
@@ -3066,7 +3006,7 @@ xf86FindPrimaryDevice()
}
-#if !defined(__sparc__) && !defined(__powerpc__) && !defined(__mips__)
+#if !defined(__sparc) && !defined(__sparc__) && !defined(__powerpc__) && !defined(__mips__)
#include "vgaHW.h"
#include "compiler.h"
#endif
@@ -3078,7 +3018,7 @@ static void
CheckGenericGA()
{
/* This needs to be changed for multiple domains */
-#if !defined(__sparc__) && !defined(__powerpc__) && !defined(__mips__) && !defined(__ia64__)
+#if !defined(__sparc__) && !defined(__sparc) && !defined(__powerpc__) && !defined(__mips__) && !defined(__ia64__) && !defined(__arm__) && !defined(__s390__)
IOADDRESS GenericIOBase = VGAHW_GET_IOBASE();
CARD8 CurrentValue, TestValue;
@@ -3180,23 +3120,6 @@ notifyStateChange(xf86NotifyState state)
}
}
-#ifdef async
-_X_EXPORT 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 */
_X_EXPORT int
diff --git a/hw/xfree86/common/xf86Bus.h b/hw/xfree86/common/xf86Bus.h
index 96da6e6a9..b638e9026 100644
--- a/hw/xfree86/common/xf86Bus.h
+++ b/hw/xfree86/common/xf86Bus.h
@@ -1,4 +1,3 @@
-/* $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.
@@ -41,7 +40,7 @@
#define _XF86_BUS_H
#include "xf86pciBus.h"
-#ifdef __sparc__
+#if defined(__sparc__) || defined(__sparc)
#include "xf86sbusBus.h"
#endif
@@ -75,15 +74,6 @@ typedef struct {
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
diff --git a/hw/xfree86/common/xf86Config.c b/hw/xfree86/common/xf86Config.c
index 2cb47545b..c0e21dd5e 100644
--- a/hw/xfree86/common/xf86Config.c
+++ b/hw/xfree86/common/xf86Config.c
@@ -1,5 +1,3 @@
-/* $XdotOrg: xserver/xorg/hw/xfree86/common/xf86Config.c,v 1.32 2006/06/01 19:53:06 ajax Exp $ */
-/* $XFree86: xc/programs/Xserver/hw/xfree86/common/xf86Config.c,v 3.276 2003/10/08 14:58:26 dawes Exp $ */
/*
@@ -65,8 +63,9 @@
#include "xf86Config.h"
#include "xf86Priv.h"
#include "xf86_OSlib.h"
-
+#include "configProcs.h"
#include "globals.h"
+#include "extension.h"
#ifdef XINPUT
#include "xf86Xinput.h"
@@ -74,6 +73,7 @@ extern DeviceAssocRec mouse_assoc;
#endif
#ifdef XKB
+#undef XKB_IN_SERVER
#define XKB_IN_SERVER
#include <X11/extensions/XKBsrv.h>
#endif
@@ -251,7 +251,7 @@ xf86ModulelistFromConfig(pointer **optlist)
{
int count = 0, i = 0;
char **modulearray;
- char *ignore[] = { "GLcore", "speedo", "bitmap", NULL };
+ char *ignore[] = { "GLcore", "speedo", "bitmap", "drm", NULL };
pointer *optarray;
XF86LoadPtr modp;
@@ -280,9 +280,21 @@ xf86ModulelistFromConfig(pointer **optlist)
count++;
modp = (XF86LoadPtr) modp->list.next;
}
+ } else {
+ xf86configptr->conf_modules = xnfcalloc(1, sizeof(XF86ConfModuleRec));
+ }
+
+ if (count == 0) {
+ XF86ConfModulePtr ptr = xf86configptr->conf_modules;
+ ptr = xf86addNewLoadDirective(ptr, "extmod", XF86_LOAD_MODULE, NULL);
+ ptr = xf86addNewLoadDirective(ptr, "dbe", XF86_LOAD_MODULE, NULL);
+ ptr = xf86addNewLoadDirective(ptr, "glx", XF86_LOAD_MODULE, NULL);
+ ptr = xf86addNewLoadDirective(ptr, "freetype", XF86_LOAD_MODULE, NULL);
+ ptr = xf86addNewLoadDirective(ptr, "type1", XF86_LOAD_MODULE, NULL);
+ ptr = xf86addNewLoadDirective(ptr, "record", XF86_LOAD_MODULE, NULL);
+ ptr = xf86addNewLoadDirective(ptr, "dri", XF86_LOAD_MODULE, NULL);
+ count = 7;
}
- if (count == 0)
- return NULL;
/*
* allocate the memory and walk the list again to fill in the pointers
@@ -383,18 +395,6 @@ xf86DriverlistFromConfig()
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()
{
@@ -419,8 +419,7 @@ xf86InputDriverlistFromConfig()
if (xf86ConfigLayout.inputs) {
idp = xf86ConfigLayout.inputs;
while (idp->identifier) {
- if (!xf86BuiltinInputDriver(idp->driver))
- count++;
+ count++;
idp++;
}
}
@@ -435,10 +434,8 @@ xf86InputDriverlistFromConfig()
count = 0;
idp = xf86ConfigLayout.inputs;
while (idp->identifier) {
- if (!xf86BuiltinInputDriver(idp->driver)) {
- modulearray[count] = idp->driver;
- count++;
- }
+ modulearray[count] = idp->driver;
+ count++;
idp++;
}
modulearray[count] = NULL;
@@ -511,7 +508,6 @@ fixup_video_driver_list(char **drivers)
static char **
GenerateDriverlist(char * dirname, char * drivernames)
{
-#ifdef XFree86LOADER
char **ret;
const char *subdirs[] = { dirname, NULL };
static const char *patlist[] = {"(.*)_drv\\.so", "(.*)_drv\\.o", NULL};
@@ -522,39 +518,6 @@ GenerateDriverlist(char * dirname, char * drivernames)
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
}
@@ -616,6 +579,9 @@ static Bool
configFiles(XF86ConfFilesPtr fileconf)
{
MessageType pathFrom = X_DEFAULT;
+ int countDirs;
+ char *temp_path;
+ char *log_buf;
/* FontPath */
@@ -675,13 +641,13 @@ configFiles(XF86ConfFilesPtr fileconf)
FatalError("No valid FontPath could be found.");
/* make fontpath more readable in the logfiles */
- int countDirs = 1;
- char *temp_path = defaultFontPath;
+ countDirs = 1;
+ temp_path = defaultFontPath;
while((temp_path = index(temp_path, ',')) != NULL) {
countDirs++;
temp_path++;
}
- char *log_buf = xnfalloc(strlen(defaultFontPath) + (2 * countDirs) + 1);
+ log_buf = xnfalloc(strlen(defaultFontPath) + (2 * countDirs) + 1);
if(!log_buf) /* fallback to old method */
xf86Msg(pathFrom, "FontPath set to \"%s\"\n", defaultFontPath);
else {
@@ -727,7 +693,6 @@ configFiles(XF86ConfFilesPtr fileconf)
}
-#ifdef XFree86LOADER
/* ModulePath */
if (fileconf) {
@@ -738,7 +703,6 @@ configFiles(XF86ConfFilesPtr fileconf)
}
xf86Msg(xf86ModPathFrom, "ModulePath set to \"%s\"\n", xf86ModulePath);
-#endif
#if 0
/* LogFile */
@@ -794,7 +758,9 @@ typedef enum {
FLAG_RENDER_COLORMAP_MODE,
FLAG_HANDLE_SPECIAL_KEYS,
FLAG_RANDR,
- FLAG_AIGLX
+ FLAG_AIGLX,
+ FLAG_IGNORE_ABI,
+ FLAG_ALLOW_EMPTY_INPUT,
} FlagValues;
static OptionInfoRec FlagOptions[] = {
@@ -866,6 +832,10 @@ static OptionInfoRec FlagOptions[] = {
{0}, FALSE },
{ FLAG_AIGLX, "AIGLX", OPTV_BOOLEAN,
{0}, FALSE },
+ { FLAG_ALLOW_EMPTY_INPUT, "AllowEmptyInput", OPTV_BOOLEAN,
+ {0}, FALSE },
+ { FLAG_IGNORE_ABI, "IgnoreABI", OPTV_BOOLEAN,
+ {0}, FALSE },
{ -1, NULL, OPTV_NONE,
{0}, FALSE },
};
@@ -924,6 +894,10 @@ configServerFlags(XF86ConfFlagsPtr flagsconf, XF86OptionPtr layoutopts)
&(xf86Info.grabInfo.allowDeactivate));
xf86GetOptValBool(FlagOptions, FLAG_ALLOW_CLOSEDOWN_GRABS,
&(xf86Info.grabInfo.allowClosedown));
+ xf86GetOptValBool(FlagOptions, FLAG_IGNORE_ABI, &xf86Info.ignoreABI);
+ if (xf86Info.ignoreABI) {
+ xf86Msg(X_CONFIG, "Ignoring ABI Version\n");
+ }
/*
* Set things up based on the config file information. Some of these
@@ -1057,6 +1031,10 @@ configServerFlags(XF86ConfFlagsPtr flagsconf, XF86OptionPtr layoutopts)
xf86Info.aiglxFrom = X_CONFIG;
}
+ xf86Info.allowEmptyInput = FALSE;
+ if (xf86GetOptValBool(FlagOptions, FLAG_ALLOW_EMPTY_INPUT, &value))
+ xf86Info.allowEmptyInput = TRUE;
+
/* Make sure that timers don't overflow CARD32's after multiplying */
#define MAX_TIME_IN_MIN (0x7fffffff / MILLI_PER_MIN)
@@ -1146,304 +1124,6 @@ configServerFlags(XF86ConfFlagsPtr flagsconf, XF86OptionPtr layoutopts)
}
/*
- * 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) {
- 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:
*
@@ -1464,12 +1144,13 @@ checkCoreInputDevices(serverLayoutPtr servlayoutp, Bool implicitLayout)
IDevPtr corePointer = NULL, coreKeyboard = NULL;
Bool foundPointer = FALSE, foundKeyboard = FALSE;
const char *pointerMsg = NULL, *keyboardMsg = NULL;
- IDevPtr indp;
+ IDevPtr indp, i;
IDevRec Pointer, Keyboard;
XF86ConfInputPtr confInput;
XF86ConfInputRec defPtr, defKbd;
int count = 0;
MessageType from = X_DEFAULT;
+ int found = 0;
/*
* First check if a core pointer or core keyboard have been specified
@@ -1621,6 +1302,35 @@ checkCoreInputDevices(serverLayoutPtr servlayoutp, Bool implicitLayout)
return FALSE;
}
+ /*
+ * always synthesize a 'mouse' section configured to send core
+ * events, unless a 'void' section is found, in which case the user
+ * probably wants to run footless.
+ */
+ for (i = servlayoutp->inputs; i->identifier && i->driver; i++) {
+ if (!strcmp(i->driver, "void") || !strcmp(i->driver, "mouse")) {
+ found = 1; break;
+ }
+ }
+ if (!found) {
+ xf86Msg(X_INFO, "No default mouse found, adding one\n");
+ bzero(&defPtr, sizeof(defPtr));
+ defPtr.inp_identifier = "<default pointer>";
+ defPtr.inp_driver = "mouse";
+ confInput = &defPtr;
+ 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, "AlwaysCore", NULL);
+ indp[count].identifier = NULL;
+ servlayoutp->inputs = indp;
+ }
+ }
+
confInput = NULL;
/* 1. Check for the -keyboard command line option. */
@@ -1679,10 +1389,6 @@ checkCoreInputDevices(serverLayoutPtr servlayoutp, Bool implicitLayout)
confInput = xf86findInputByDriver("kbd",
xf86configptr->conf_input_lst);
}
- if (!confInput) {
- confInput = xf86findInputByDriver("keyboard",
- xf86configptr->conf_input_lst);
- }
if (confInput) {
foundKeyboard = TRUE;
from = X_DEFAULT;
@@ -2000,8 +1706,6 @@ configLayout(serverLayoutPtr servlayoutp, XF86ConfLayoutPtr conf_layout,
servlayoutp->options = conf_layout->lay_option_lst;
from = X_DEFAULT;
- if (!checkCoreInputDevices(servlayoutp, FALSE))
- return FALSE;
return TRUE;
}
@@ -2060,7 +1764,7 @@ configImpliedLayout(serverLayoutPtr servlayoutp, XF86ConfScreenPtr conf_screen)
indp = xnfalloc(sizeof(IDevRec));
indp->identifier = NULL;
servlayoutp->inputs = indp;
- if (!checkCoreInputDevices(servlayoutp, TRUE))
+ if (!xf86Info.allowEmptyInput && checkCoreInputDevices(servlayoutp, TRUE))
return FALSE;
return TRUE;
@@ -2227,6 +1931,7 @@ configMonitor(MonPtr monitorp, XF86ConfMonitorPtr conf_monitor)
monitorp->widthmm = conf_monitor->mon_width;
monitorp->heightmm = conf_monitor->mon_height;
monitorp->reducedblanking = FALSE;
+ monitorp->maxPixClock = 0;
monitorp->options = conf_monitor->mon_option_lst;
/*
@@ -2524,9 +2229,6 @@ configDRI(XF86ConfDRIPtr drip)
}
#endif
-/* Extension enable/disable in miinitext.c */
-extern Bool EnableDisableExtension(char *name, Bool enable);
-
static Bool
configExtensions(XF86ConfExtensionsPtr conf_ext)
{
@@ -2592,10 +2294,6 @@ configInput(IDevPtr inputp, XF86ConfInputPtr conf_input, MessageType from)
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;
}
@@ -2653,6 +2351,12 @@ addDefaultModes(MonPtr monitorp)
return TRUE;
}
+static void
+checkInput(serverLayoutPtr layout) {
+ if (!xf86Info.allowEmptyInput)
+ checkCoreInputDevices(layout, FALSE);
+}
+
/*
* load the config file and fill the global data structure
*/
@@ -2774,6 +2478,8 @@ xf86HandleConfigFile(Bool autoconfig)
return CONFIG_PARSE_ERROR;
}
+ checkInput(&xf86ConfigLayout);
+
/*
* Handle some command line options that can override some of the
* ServerFlags settings.
diff --git a/hw/xfree86/common/xf86Config.h b/hw/xfree86/common/xf86Config.h
index 77b25ed32..0786ec6fe 100644
--- a/hw/xfree86/common/xf86Config.h
+++ b/hw/xfree86/common/xf86Config.h
@@ -1,4 +1,3 @@
-/* $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.
diff --git a/hw/xfree86/common/xf86Configure.c b/hw/xfree86/common/xf86Configure.c
index 4b9d418b9..f71486c9d 100644
--- a/hw/xfree86/common/xf86Configure.c
+++ b/hw/xfree86/common/xf86Configure.c
@@ -1,4 +1,3 @@
-/* $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.
*
@@ -37,9 +36,7 @@
#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"
@@ -51,7 +48,7 @@
#include "Configint.h"
#include "vbe.h"
#include "xf86DDC.h"
-#if defined(__sparc__) && !defined(__OpenBSD__)
+#if (defined(__sparc__) || defined(__sparc)) && !defined(__OpenBSD__)
#include "xf86Bus.h"
#include "xf86Sbus.h"
#endif
@@ -60,7 +57,7 @@
typedef struct _DevToConfig {
GDevRec GDev;
pciVideoPtr pVideo;
-#if defined(__sparc__) && !defined(__OpenBSD__)
+#if (defined(__sparc__) || defined(__sparc)) && !defined(__OpenBSD__)
sbusDevicePtr sVideo;
#endif
int iDriver;
@@ -79,7 +76,7 @@ Bool foundMouse = FALSE;
#elif defined(__SCO__)
static char *DFLT_MOUSE_PROTO = "OSMouse";
#elif defined(__UNIXWARE__)
-static char *DFLT_MOUSE_PROTO = "Xqueue";
+static char *DFLT_MOUSE_PROTO = "OSMouse";
static char *DFLT_MOUSE_DEV = "/dev/mouse";
#elif defined(QNX4)
static char *DFLT_MOUSE_PROTO = "OSMouse";
@@ -90,6 +87,9 @@ static char *DFLT_MOUSE_DEV = "/dev/devi/mouse0";
#elif defined(__FreeBSD__) || defined(__FreeBSD_kernel__) || defined(__DragonFly__)
static char *DFLT_MOUSE_DEV = "/dev/sysmouse";
static char *DFLT_MOUSE_PROTO = "auto";
+#elif defined(linux)
+static char DFLT_MOUSE_DEV[] = "/dev/input/mice";
+static char DFLT_MOUSE_PROTO[] = "auto";
#else
static char *DFLT_MOUSE_DEV = "/dev/mouse";
static char *DFLT_MOUSE_PROTO = "auto";
@@ -134,7 +134,7 @@ xf86AddBusDeviceToConfigure(const char *driver, BusType bus, void *busData, int
if (!DevToConfig[i].pVideo)
return NULL;
break;
-#if defined(__sparc__) && !defined(__OpenBSD__)
+#if (defined(__sparc__) || defined(__sparc)) && !defined(__OpenBSD__)
case BUS_SBUS:
for (i = 0; i < nDevToConfig; i++)
if (DevToConfig[i].sVideo &&
@@ -213,7 +213,7 @@ xf86AddBusDeviceToConfigure(const char *driver, BusType bus, void *busData, int
NewDevice.GDev.identifier = "ISA Adapter";
NewDevice.GDev.busID = "ISA";
break;
-#if defined(__sparc__) && !defined(__OpenBSD__)
+#if (defined(__sparc__) || defined(__sparc)) && !defined(__OpenBSD__)
case BUS_SBUS: {
char *promPath = NULL;
NewDevice.sVideo = (sbusDevicePtr) busData;
@@ -265,11 +265,7 @@ configureInputSection (void)
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) */
@@ -602,7 +598,6 @@ configureFlagsSection (void)
static XF86ConfModulePtr
configureModuleSection (void)
{
-#ifdef XFree86LOADER
char **elist, **el;
/* Find the list of extension modules. */
const char *esubdirs[] = {
@@ -613,10 +608,8 @@ configureModuleSection (void)
"fonts",
NULL
};
-#endif
parsePrologue (XF86ConfModulePtr, XF86ConfModuleRec)
-#ifdef XFree86LOADER
elist = LoaderListDirs(esubdirs, NULL);
if (elist) {
for (el = elist; *el; el++) {
@@ -653,7 +646,6 @@ configureModuleSection (void)
}
xfree(elist);
}
-#endif
return ptr;
}
@@ -663,10 +655,8 @@ configureFilesSection (void)
{
parsePrologue (XF86ConfFilesPtr, XF86ConfFilesRec)
-#ifdef XFree86LOADER
if (xf86ModulePath)
ptr->file_modulepath = strdup(xf86ModulePath);
-#endif
if (defaultFontPath)
ptr->file_fontpath = strdup(defaultFontPath);
if (rgbPath)
@@ -788,10 +778,8 @@ DoConfigure()
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);
diff --git a/hw/xfree86/common/xf86Cursor.c b/hw/xfree86/common/xf86Cursor.c
index 787c39de8..46d812804 100644
--- a/hw/xfree86/common/xf86Cursor.c
+++ b/hw/xfree86/common/xf86Cursor.c
@@ -1,4 +1,3 @@
-/* $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.
*
@@ -78,14 +77,9 @@ static miPointerScreenFuncRec xf86PointerScreenFuncs = {
xf86CursorOffScreen,
xf86CrossScreen,
xf86WarpCursor,
-#ifdef XINPUT
- xf86eqEnqueue,
- xf86eqSwitchScreen
-#else
/* let miPointerInitialize take care of these */
NULL,
NULL
-#endif
};
static xf86ScreenLayoutRec xf86ScreenLayout[MAXSCREENS];
@@ -229,13 +223,12 @@ xf86SwitchMode(ScreenPtr pScreen, DisplayModePtr mode)
if (mode->HDisplay > pScr->virtualX || mode->VDisplay > pScr->virtualY)
return FALSE;
- pCursorScreen = miPointerCurrentScreen();
+ pCursorScreen = miPointerGetScreen(inputInfo.pointer);
if (pScreen == pCursorScreen)
- miPointerPosition(&px, &py);
+ miPointerGetPosition(inputInfo.pointer, &px, &py);
xf86EnterServerState(SETUP);
Switched = (*pScr->SwitchMode)(pScr->scrnIndex, mode, 0);
- xf86EnterServerState(OPERATING);
if (Switched) {
pScr->currentMode = mode;
@@ -270,6 +263,7 @@ xf86SwitchMode(ScreenPtr pScreen, DisplayModePtr mode)
pScr->frameY1 = pScr->virtualY - 1;
}
}
+ xf86EnterServerState(OPERATING);
if (pScr->AdjustFrame)
(*pScr->AdjustFrame)(pScr->scrnIndex, pScr->frameX0, pScr->frameY0, 0);
@@ -577,24 +571,40 @@ xf86InitOrigins(void)
/* force edge lists */
if(screen->left) {
ref = screen->left->screennum;
+ if (! xf86Screens[ref] || ! xf86Screens[ref]->pScreen) {
+ ErrorF("Referenced uninitialized screen in Layout!\n");
+ break;
+ }
pLayout->left = AddEdge(pLayout->left,
0, xf86Screens[i]->pScreen->height,
xf86Screens[ref]->pScreen->width, 0, ref);
}
if(screen->right) {
ref = screen->right->screennum;
+ if (! xf86Screens[ref] || ! xf86Screens[ref]->pScreen) {
+ ErrorF("Referenced uninitialized screen in Layout!\n");
+ break;
+ }
pScreen = xf86Screens[i]->pScreen;
pLayout->right = AddEdge(pLayout->right,
0, pScreen->height, -pScreen->width, 0, ref);
}
if(screen->top) {
ref = screen->top->screennum;
+ if (! xf86Screens[ref] || ! xf86Screens[ref]->pScreen) {
+ ErrorF("Referenced uninitialized screen in Layout!\n");
+ break;
+ }
pLayout->up = AddEdge(pLayout->up,
0, xf86Screens[i]->pScreen->width,
0, xf86Screens[ref]->pScreen->height, ref);
}
if(screen->bottom) {
ref = screen->bottom->screennum;
+ if (! xf86Screens[ref] || ! xf86Screens[ref]->pScreen) {
+ ErrorF("Referenced uninitialized screen in Layout!\n");
+ break;
+ }
pScreen = xf86Screens[i]->pScreen;
pLayout->down = AddEdge(pLayout->down,
0, pScreen->width, 0, -pScreen->height, ref);
@@ -610,6 +620,10 @@ xf86InitOrigins(void)
break;
case PosRelative:
ref = screen->refscreen->screennum;
+ if (! xf86Screens[ref] || ! xf86Screens[ref]->pScreen) {
+ ErrorF("Referenced uninitialized screen in Layout!\n");
+ break;
+ }
if(screensLeft & (1 << ref)) break;
dixScreenOrigins[i].x = dixScreenOrigins[ref].x + screen->x;
dixScreenOrigins[i].y = dixScreenOrigins[ref].y + screen->y;
@@ -617,6 +631,10 @@ xf86InitOrigins(void)
break;
case PosRightOf:
ref = screen->refscreen->screennum;
+ if (! xf86Screens[ref] || ! xf86Screens[ref]->pScreen) {
+ ErrorF("Referenced uninitialized screen in Layout!\n");
+ break;
+ }
if(screensLeft & (1 << ref)) break;
pScreen = xf86Screens[ref]->pScreen;
dixScreenOrigins[i].x =
@@ -626,6 +644,10 @@ xf86InitOrigins(void)
break;
case PosLeftOf:
ref = screen->refscreen->screennum;
+ if (! xf86Screens[ref] || ! xf86Screens[ref]->pScreen) {
+ ErrorF("Referenced uninitialized screen in Layout!\n");
+ break;
+ }
if(screensLeft & (1 << ref)) break;
pScreen = xf86Screens[i]->pScreen;
dixScreenOrigins[i].x =
@@ -635,6 +657,10 @@ xf86InitOrigins(void)
break;
case PosBelow:
ref = screen->refscreen->screennum;
+ if (! xf86Screens[ref] || ! xf86Screens[ref]->pScreen) {
+ ErrorF("Referenced uninitialized screen in Layout!\n");
+ break;
+ }
if(screensLeft & (1 << ref)) break;
pScreen = xf86Screens[ref]->pScreen;
dixScreenOrigins[i].x = dixScreenOrigins[ref].x;
@@ -644,6 +670,10 @@ xf86InitOrigins(void)
break;
case PosAbove:
ref = screen->refscreen->screennum;
+ if (! xf86Screens[ref] || ! xf86Screens[ref]->pScreen) {
+ ErrorF("Referenced uninitialized screen in Layout!\n");
+ break;
+ }
if(screensLeft & (1 << ref)) break;
pScreen = xf86Screens[i]->pScreen;
dixScreenOrigins[i].x = dixScreenOrigins[ref].x;
diff --git a/hw/xfree86/common/xf86DGA.c b/hw/xfree86/common/xf86DGA.c
index 88324eb19..204457fb1 100644
--- a/hw/xfree86/common/xf86DGA.c
+++ b/hw/xfree86/common/xf86DGA.c
@@ -1,5 +1,3 @@
-/* $XdotOrg: xserver/xorg/hw/xfree86/common/xf86DGA.c,v 1.8 2006/02/15 20:44:13 ajax 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.
*
@@ -49,6 +47,8 @@
#endif
#include "xf86Xinput.h"
+#include "mi.h"
+
static unsigned long DGAGeneration = 0;
static int DGAScreenIndex = -1;
@@ -63,11 +63,7 @@ DGACopyModeInfo(
XDGAModePtr xmode
);
-#if defined(XFree86LOADER) || !defined(XFreeXDGA)
_X_EXPORT int *XDGAEventBase = NULL;
-#else
-_X_EXPORT int *XDGAEventBase = &DGAEventBase;
-#endif
#define DGA_GET_SCREEN_PRIV(pScreen) \
((DGAScreenPtr)((pScreen)->devPrivates[DGAScreenIndex].ptr))
@@ -913,22 +909,6 @@ DGAVTSwitch(void)
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;
@@ -936,36 +916,6 @@ 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
diff --git a/hw/xfree86/common/xf86DPMS.c b/hw/xfree86/common/xf86DPMS.c
index 001c3d4bf..3aa83e882 100644
--- a/hw/xfree86/common/xf86DPMS.c
+++ b/hw/xfree86/common/xf86DPMS.c
@@ -1,5 +1,3 @@
-/* $XFree86: xc/programs/Xserver/hw/xfree86/common/xf86DPMS.c,v 1.11 2003/11/11 21:02:28 dawes Exp $ */
-/* $XdotOrg: xserver/xorg/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.
diff --git a/hw/xfree86/common/xf86Date.h b/hw/xfree86/common/xf86Date.h
index 4b65d2c1f..978c4fa15 100644
--- a/hw/xfree86/common/xf86Date.h
+++ b/hw/xfree86/common/xf86Date.h
@@ -1,5 +1,3 @@
-/* $XdotOrg: xc/programs/Xserver/hw/xfree86/xf86Date.h,v 1.4 2004/08/16 22:48:50 kem 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.
*
diff --git a/hw/xfree86/common/xf86Debug.c b/hw/xfree86/common/xf86Debug.c
index 5579cde5b..cb579343a 100644
--- a/hw/xfree86/common/xf86Debug.c
+++ b/hw/xfree86/common/xf86Debug.c
@@ -1,4 +1,3 @@
-/* $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.
@@ -164,6 +163,7 @@ void xf86PokeMmio32(pointer Base, unsigned long Offset, CARD32 v)
}
+#if 0
_X_EXPORT void
xf86STimestamp(xf86TsPtr* timestamp)
{
@@ -195,3 +195,4 @@ xf86SPTimestamp(xf86TsPtr* timestamp, char *str)
gettimeofday((struct timeval*)*timestamp,NULL);
}
}
+#endif
diff --git a/hw/xfree86/common/xf86DoProbe.c b/hw/xfree86/common/xf86DoProbe.c
index b74f37e11..fc0a9f4eb 100644
--- a/hw/xfree86/common/xf86DoProbe.c
+++ b/hw/xfree86/common/xf86DoProbe.c
@@ -1,4 +1,3 @@
-/* $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.
*
@@ -40,10 +39,8 @@
#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"
@@ -55,7 +52,6 @@ DoProbe()
Bool probeResult;
Bool ioEnableFailed = FALSE;
-#ifdef XFree86LOADER
/* Find the list of video driver modules. */
char **list = xf86DriverlistFromCompile();
char **l;
@@ -70,7 +66,6 @@ DoProbe()
/* Load all the drivers that were found. */
xf86LoadModules(list, NULL);
-#endif /* XFree86LOADER */
/* Disable PCI devices */
xf86AccessInit();
diff --git a/hw/xfree86/common/xf86DoScanPci.c b/hw/xfree86/common/xf86DoScanPci.c
index 9f8c15651..0c6668a49 100644
--- a/hw/xfree86/common/xf86DoScanPci.c
+++ b/hw/xfree86/common/xf86DoScanPci.c
@@ -1,4 +1,3 @@
-/* $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.
*
@@ -40,9 +39,7 @@
#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"
@@ -54,9 +51,7 @@ 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
@@ -95,7 +90,6 @@ void DoScanPci(int argc, char **argv, int i)
/*
* 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 */
@@ -106,17 +100,9 @@ void DoScanPci(int argc, char **argv, int i)
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");
diff --git a/hw/xfree86/common/xf86Events.c b/hw/xfree86/common/xf86Events.c
index daf1e2b80..05e62f184 100644
--- a/hw/xfree86/common/xf86Events.c
+++ b/hw/xfree86/common/xf86Events.c
@@ -1,4 +1,3 @@
-/* $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.
*
@@ -48,9 +47,6 @@
* authorization from the copyright holder(s) and author(s).
*/
-/* $XConsortium: xf86Events.c /main/46 1996/10/25 11:36:30 kaleb $ */
-/* $XdotOrg: xserver/xorg/hw/xfree86/common/xf86Events.c,v 1.22 2006/03/25 19:52:03 ajax Exp $ */
-
/* [JCH-96/01/21] Extended std reverse map to four buttons. */
#ifdef HAVE_XORG_CONFIG_H
@@ -108,23 +104,12 @@ extern Bool noXkbExtension;
#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) { \
+#define EqEnqueue(pDev, ev) { \
int __sigstate = xf86BlockSIGIO (); \
- __EqEnqueue (ev); \
+ mieqEnqueue (pDev, ev); \
xf86UnblockSIGIO(__sigstate); \
}
-#define ENQUEUE(ev, code, direction, dev_type) \
- (ev)->u.u.detail = (code); \
- (ev)->u.u.type = (direction); \
- EqEnqueue((ev))
-
/*
* 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
@@ -150,9 +135,6 @@ Bool VTSwitchEnabled = TRUE; /* Allows run-time disabling for
extern fd_set EnabledDevices;
-#if defined(XQUEUE)
-extern void xf86XqueRequest(void);
-#endif
#ifdef XF86PM
extern void (*xf86OSPMClose)(void);
#endif
@@ -174,6 +156,12 @@ typedef struct x_IHRec {
static IHPtr InputHandlers = NULL;
+Bool
+LegalModifier(unsigned int key, DeviceIntPtr pDev)
+{
+ return TRUE;
+}
+
/*
* TimeSinceLastInputEvent --
* Function used for screensaver purposes by the os module. Returns the
@@ -257,14 +245,10 @@ ProcessInputEvents ()
xf86Info.inputPending = FALSE;
-#ifdef XINPUT
- xf86eqProcessInputEvents();
-#else
mieqProcessInputEvents();
-#endif
- miPointerUpdate();
+ miPointerUpdateSprite(inputInfo.pointer);
- miPointerPosition(&x, &y);
+ miPointerGetPosition(inputInfo.pointer, &x, &y);
xf86SetViewport(xf86Info.currentScreen, x, y);
}
@@ -388,7 +372,7 @@ xf86ProcessActionEvent(ActionEvent action, void *arg)
#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: */
+ /* that have a global effect. For example: */
/* */
/* if (!strcmp(message, "foo") { */
/* do_foo(); break */
@@ -407,679 +391,6 @@ xf86ProcessActionEvent(ActionEvent action, void *arg)
}
}
-/*
- * 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))
_X_EXPORT Bool
@@ -1141,16 +452,14 @@ xf86Wakeup(pointer blockData, int err, pointer pReadmask)
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);
+ xf86UnblockSIGIO(sigstate);
/*
* Remove the descriptior from the set because more than one
* device may share the same file descriptor.
@@ -1165,15 +474,13 @@ xf86Wakeup(pointer blockData, int err, pointer pReadmask)
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);
+ xf86UnblockSIGIO(sigstate);
/*
* Must break here because more than one device may share
* the same file descriptor.
@@ -1195,7 +502,7 @@ xf86Wakeup(pointer blockData, int err, pointer pReadmask)
}
}
}
-
+
if (xf86VTSwitchPending()) xf86VTSwitch();
if (xf86Info.inputPending) ProcessInputEvents();
@@ -1220,7 +527,7 @@ xf86SigioReadInput(int fd,
/*
* xf86AddEnabledDevice --
- *
+ *
*/
_X_EXPORT void
xf86AddEnabledDevice(InputInfoPtr pInfo)
@@ -1232,7 +539,7 @@ xf86AddEnabledDevice(InputInfoPtr pInfo)
/*
* xf86RemoveEnabledDevice --
- *
+ *
*/
_X_EXPORT void
xf86RemoveEnabledDevice(InputInfoPtr pInfo)
@@ -1253,18 +560,14 @@ xf86InterceptSignals(int *signo)
static void (*xf86SigIllHandler)(void) = NULL;
-_X_EXPORT void
+_X_EXPORT void
xf86InterceptSigIll(void (*sigillhandler)(void))
{
xf86SigIllHandler = sigillhandler;
}
-#ifdef HAVE_EXECINFO_H
-#define HAVE_BACKTRACE
-#include <execinfo.h>
-#endif
-
#ifdef HAVE_BACKTRACE
+#include <execinfo.h>
static __inline__ void xorg_backtrace(void)
{
@@ -1305,7 +608,7 @@ static int xorg_backtrace_frame(uintptr_t pc, int signo, void *arg)
ElfSym *dlsym;
char header[32];
int depth = *((int *) arg);
-
+
if (signo) {
char signame[SIG2STR_MAX];
@@ -1318,7 +621,7 @@ static int xorg_backtrace_frame(uintptr_t pc, int signo, void *arg)
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;
@@ -1340,7 +643,7 @@ static int xorg_backtrace_frame(uintptr_t pc, int signo, void *arg)
*/
ErrorF("%s\n", header);
}
-
+
return 0;
}
# endif /* HAVE_WALKCONTEXT */
@@ -1383,7 +686,7 @@ static int xorg_backtrace_pstack(void) {
while (!done) {
bytesread = read(pipefd[0], btline, sizeof(btline) - 1);
-
+
if (bytesread > 0) {
btline[bytesread] = 0;
ErrorF("%s", btline);
@@ -1407,11 +710,11 @@ static int xorg_backtrace_pstack(void) {
static __inline__ void xorg_backtrace(void) {
ErrorF("\nBacktrace:\n");
-
-# ifdef HAVE_PSTACK
+
+# 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
{
@@ -1449,7 +752,7 @@ xf86SigHandler(int signo)
(void) signal(signo, xf86SigHandler);
return;
}
-
+
if (xf86SignalIntercept && (*xf86SignalIntercept < 0)) {
*xf86SignalIntercept = signo;
/* Re-arm handler just in case */
@@ -1462,16 +765,9 @@ xf86SigHandler(int signo)
#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);
}
@@ -1485,6 +781,63 @@ xf86SigMemDebug(int signo)
}
#endif
+static void
+xf86ReleaseKeys(DeviceIntPtr pDev)
+{
+ KeyClassPtr keyc = NULL;
+ KeySym *map = NULL;
+ xEvent ke;
+ int i = 0, j = 0, nevents = 0;
+
+ if (!pDev || !pDev->key)
+ return;
+
+ keyc = pDev->key;
+ map = keyc->curKeySyms.map;
+
+ /*
+ * 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:
+ if (pDev == inputInfo.keyboard) {
+ ke.u.keyButtonPointer.time = GetTimeInMillis();
+ ke.u.keyButtonPointer.rootX = 0;
+ ke.u.keyButtonPointer.rootY = 0;
+ ke.u.u.type = KeyRelease;
+ ke.u.u.detail = i;
+ (*pDev->public.processInputProc) (&ke, pDev, 1);
+ }
+ else {
+ nevents = GetKeyboardEvents(xf86Events, pDev, KeyRelease, i);
+ for (j = 0; j < nevents; j++)
+ EqEnqueue(pDev, xf86Events + i);
+ }
+ break;
+ }
+ }
+ }
+}
+
/*
* xf86VTSwitch --
* Handle requests for switching the vt.
@@ -1499,7 +852,7 @@ xf86VTSwitch()
#ifdef DEBUG
ErrorF("xf86VTSwitch()\n");
#endif
-
+
#ifdef XFreeXDGA
if(!DGAVTSwitch())
return;
@@ -1526,14 +879,14 @@ xf86VTSwitch()
}
#if !defined(__UNIXOS2__)
- /*
+ /*
* Keep the order: Disable Device > LeaveVT
- * EnterVT > EnableDevice
+ * EnterVT > EnableDevice
*/
- DisableDevice((DeviceIntPtr)xf86Info.pKeyboard);
pInfo = xf86InputDevs;
while (pInfo) {
- DisableDevice(pInfo->dev);
+ if (pInfo->dev)
+ DisableDevice(pInfo->dev);
pInfo = pInfo->next;
}
#endif /* !__UNIXOS2__ */
@@ -1548,7 +901,7 @@ xf86VTSwitch()
if (!xf86VTSwitchAway()) {
/*
- * switch failed
+ * switch failed
*/
#ifdef DEBUG
@@ -1571,12 +924,16 @@ xf86VTSwitch()
SaveScreens(SCREEN_SAVER_FORCER, ScreenSaverReset);
#if !defined(__UNIXOS2__)
- EnableDevice((DeviceIntPtr)xf86Info.pKeyboard);
pInfo = xf86InputDevs;
while (pInfo) {
- EnableDevice(pInfo->dev);
+ if (pInfo->dev) {
+ xf86ReleaseKeys(pInfo->dev);
+ EnableDevice(pInfo->dev);
+ }
pInfo = pInfo->next;
}
+ /* XXX HACK */
+ xf86ReleaseKeys(inputInfo.keyboard);
#endif /* !__UNIXOS2__ */
for (ih = InputHandlers; ih; ih = ih->next)
xf86EnableInputHandler(ih);
@@ -1633,14 +990,18 @@ xf86VTSwitch()
SaveScreens(SCREEN_SAVER_FORCER,ScreenSaverReset);
#if !defined(__UNIXOS2__)
- EnableDevice((DeviceIntPtr)xf86Info.pKeyboard);
pInfo = xf86InputDevs;
while (pInfo) {
- EnableDevice(pInfo->dev);
+ if (pInfo->dev) {
+ xf86ReleaseKeys(pInfo->dev);
+ EnableDevice(pInfo->dev);
+ }
pInfo = pInfo->next;
}
+ /* XXX HACK */
+ xf86ReleaseKeys(inputInfo.keyboard);
#endif /* !__UNIXOS2__ */
-
+
for (ih = InputHandlers; ih; ih = ih->next)
xf86EnableInputHandler(ih);
@@ -1651,8 +1012,8 @@ xf86VTSwitch()
/* Input handler registration */
-_X_EXPORT pointer
-xf86AddInputHandler(int fd, InputHandlerProc proc, pointer data)
+static pointer
+addInputHandler(int fd, InputHandlerProc proc, pointer data)
{
IHPtr ih;
@@ -1671,25 +1032,33 @@ xf86AddInputHandler(int fd, InputHandlerProc proc, pointer data)
ih->next = InputHandlers;
InputHandlers = ih;
- AddEnabledDevice(fd);
+ return ih;
+}
+_X_EXPORT pointer
+xf86AddInputHandler(int fd, InputHandlerProc proc, pointer data)
+{
+ IHPtr ih = addInputHandler(fd, proc, data);
+
+ if (ih)
+ AddEnabledDevice(fd);
return ih;
}
-_X_EXPORT int
-xf86RemoveInputHandler(pointer handler)
+_X_EXPORT pointer
+xf86AddGeneralHandler(int fd, InputHandlerProc proc, pointer data)
{
- IHPtr ih, p;
- int fd;
-
- if (!handler)
- return -1;
+ IHPtr ih = addInputHandler(fd, proc, data);
- ih = handler;
- fd = ih->fd;
-
- if (ih->fd >= 0)
- RemoveEnabledDevice(ih->fd);
+ if (ih)
+ AddGeneralSocket(fd);
+ return ih;
+}
+
+static void
+removeInputHandler(IHPtr ih)
+{
+ IHPtr p;
if (ih == InputHandlers)
InputHandlers = ih->next;
@@ -1701,6 +1070,43 @@ xf86RemoveInputHandler(pointer handler)
p->next = ih->next;
}
xfree(ih);
+}
+
+_X_EXPORT int
+xf86RemoveInputHandler(pointer handler)
+{
+ IHPtr ih;
+ int fd;
+
+ if (!handler)
+ return -1;
+
+ ih = handler;
+ fd = ih->fd;
+
+ if (ih->fd >= 0)
+ RemoveEnabledDevice(ih->fd);
+ removeInputHandler(ih);
+
+ return fd;
+}
+
+_X_EXPORT int
+xf86RemoveGeneralHandler(pointer handler)
+{
+ IHPtr ih;
+ int fd;
+
+ if (!handler)
+ return -1;
+
+ ih = handler;
+ fd = ih->fd;
+
+ if (ih->fd >= 0)
+ RemoveGeneralSocket(ih->fd);
+ removeInputHandler(ih);
+
return fd;
}
@@ -1719,6 +1125,20 @@ xf86DisableInputHandler(pointer handler)
}
_X_EXPORT void
+xf86DisableGeneralHandler(pointer handler)
+{
+ IHPtr ih;
+
+ if (!handler)
+ return;
+
+ ih = handler;
+ ih->enabled = FALSE;
+ if (ih->fd >= 0)
+ RemoveGeneralSocket(ih->fd);
+}
+
+_X_EXPORT void
xf86EnableInputHandler(pointer handler)
{
IHPtr ih;
@@ -1732,6 +1152,20 @@ xf86EnableInputHandler(pointer handler)
AddEnabledDevice(ih->fd);
}
+_X_EXPORT void
+xf86EnableGeneralHandler(pointer handler)
+{
+ IHPtr ih;
+
+ if (!handler)
+ return;
+
+ ih = handler;
+ ih->enabled = TRUE;
+ if (ih->fd >= 0)
+ AddGeneralSocket(ih->fd);
+}
+
/*
* As used currently by the DRI, the return value is ignored.
*/
@@ -1757,11 +1191,8 @@ void
xf86ReloadInputDevs(int sig)
{
InputInfoPtr pInfo;
-
- signal(sig, (void(*)(int))xf86ReloadInputDevs);
- DisableDevice((DeviceIntPtr)xf86Info.pKeyboard);
- EnableDevice((DeviceIntPtr)xf86Info.pKeyboard);
+ signal(sig, (void(*)(int))xf86ReloadInputDevs);
pInfo = xf86InputDevs;
while (pInfo) {
@@ -1769,10 +1200,15 @@ xf86ReloadInputDevs(int sig)
EnableDevice(pInfo->dev);
pInfo = pInfo->next;
}
-
+
return;
}
+_X_EXPORT void
+DDXRingBell(int volume, int pitch, int duration) {
+ xf86OSRingBell(volume, pitch, duration);
+}
+
#ifdef WSCONS_SUPPORT
/* XXX Currently XKB is mandatory. */
@@ -1786,7 +1222,7 @@ xf86PostWSKbdEvent(struct wscons_event *event)
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);
diff --git a/hw/xfree86/common/xf86Globals.c b/hw/xfree86/common/xf86Globals.c
index b3b5c1b29..9b23710bb 100644
--- a/hw/xfree86/common/xf86Globals.c
+++ b/hw/xfree86/common/xf86Globals.c
@@ -1,4 +1,3 @@
-/* $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.
@@ -94,36 +93,11 @@ 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 */
@@ -142,20 +116,6 @@ xf86InfoRec xf86Info = {
-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 */
@@ -189,14 +149,12 @@ 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[] = {
diff --git a/hw/xfree86/common/xf86Helper.c b/hw/xfree86/common/xf86Helper.c
index 1e7742761..93c89fd5f 100644
--- a/hw/xfree86/common/xf86Helper.c
+++ b/hw/xfree86/common/xf86Helper.c
@@ -1,4 +1,3 @@
-/* $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.
@@ -70,7 +69,6 @@
static int xf86ScrnInfoPrivateCount = 0;
-#ifdef XFree86LOADER
/* Add a pointer to a new DriverRec to xf86DriverList */
_X_EXPORT void
@@ -92,7 +90,7 @@ xf86AddDriver(DriverPtr driver, pointer module, int flags)
else {
(void) memset( xf86DriverList[xf86NumDrivers - 1], 0,
sizeof( DriverRec ) );
- (void) memcpy( xf86DriverList[xf86NumDrivers - 1], driver,
+ (void) memcpy( xf86DriverList[xf86NumDrivers - 1], driver,
sizeof(DriverRec1));
}
@@ -143,6 +141,32 @@ xf86DeleteInputDriver(int drvIndex)
xf86InputDriverList[drvIndex] = NULL;
}
+InputDriverPtr
+xf86LookupInputDriver(const char *name)
+{
+ int i;
+
+ for (i = 0; i < xf86NumInputDrivers; i++) {
+ if (xf86InputDriverList[i] && xf86InputDriverList[i]->driverName &&
+ xf86NameCmp(name, xf86InputDriverList[i]->driverName) == 0)
+ return xf86InputDriverList[i];
+ }
+ return NULL;
+}
+
+InputInfoPtr
+xf86LookupInput(const char *name)
+{
+ InputInfoPtr p;
+
+ for (p = xf86InputDevs; p != NULL; p = p->next) {
+ if (strcmp(name, p->name) == 0)
+ return p;
+ }
+
+ return NULL;
+}
+
_X_EXPORT void
xf86AddModuleInfo(ModuleInfoPtr info, pointer module)
{
@@ -172,7 +196,6 @@ xf86DeleteModuleInfo(int idx)
xf86ModuleInfoList[idx] = NULL;
}
}
-#endif
/* Allocate a new ScrnInfoRec in xf86Screens */
@@ -199,11 +222,7 @@ xf86AllocateScreen(DriverPtr drv, int flags)
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?
@@ -222,7 +241,7 @@ xf86AllocateScreen(DriverPtr drv, int flags)
#endif
xf86Screens[i]->DriverFunc = drv->driverFunc;
-
+
return xf86Screens[i];
}
@@ -260,10 +279,8 @@ xf86DeleteScreen(int scrnIndex, int flags)
xf86OptionListFree(pScrn->options);
-#ifdef XFree86LOADER
if (pScrn->module)
UnloadModule(pScrn->module);
-#endif
if (pScrn->drv)
pScrn->drv->refCount--;
@@ -276,7 +293,7 @@ xf86DeleteScreen(int scrnIndex, int flags)
xfree(pScrn);
/* Move the other entries down, updating their scrnIndex fields */
-
+
xf86NumScreens--;
for (i = scrnIndex; i < xf86NumScreens; i++) {
@@ -321,11 +338,7 @@ xf86AllocateInput(InputDriverPtr drv, int flags)
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;
@@ -352,10 +365,8 @@ xf86DeleteInput(InputInfoPtr pInp, int flags)
pInp->free(pInp, 0);
#endif
-#ifdef XFree86LOADER
if (pInp->module)
UnloadModule(pInp->module);
-#endif
if (pInp->drv)
pInp->drv->refCount--;
@@ -445,11 +456,11 @@ xf86AddPixFormat(ScrnInfoPtr pScrn, int depth, int bpp, int pad)
#define DO_PIX24FOR32(f) ((f & Support32bppFb) && (f & SupportConvert24to32))
#ifndef GLOBAL_DEFAULT_DEPTH
-#define GLOBAL_DEFAULT_DEPTH 16
+#define GLOBAL_DEFAULT_DEPTH 24
#endif
#ifndef GLOBAL_DEFAULT_FBBPP
-#define GLOBAL_DEFAULT_FBBPP 16
+#define GLOBAL_DEFAULT_FBBPP 32
#endif
_X_EXPORT Bool
@@ -476,7 +487,7 @@ xf86SetDepthBpp(ScrnInfoPtr scrp, int depth, int dummy, int fbbpp,
depth24flags &= ~(SupportConvert32to24 | SupportConvert32to24 |
PreferConvert24to32 | PreferConvert32to24);
#endif
-
+
if (xf86FbBpp > 0) {
scrp->bitsPerPixel = xf86FbBpp;
scrp->bitsPerPixelFrom = X_CMDLINE;
@@ -935,7 +946,7 @@ xf86SetGamma(ScrnInfoPtr scrp, Gamma gamma)
{
MessageType from = X_DEFAULT;
#if 0
- xf86MonPtr DDC = (xf86MonPtr)(scrp->monitor->DDC);
+ xf86MonPtr DDC = (xf86MonPtr)(scrp->monitor->DDC);
#endif
if (TEST_GAMMA(xf86Gamma)) {
from = X_CMDLINE;
@@ -988,7 +999,7 @@ _X_EXPORT void
xf86SetDpi(ScrnInfoPtr pScrn, int x, int y)
{
MessageType from = X_DEFAULT;
- xf86MonPtr DDC = (xf86MonPtr)(pScrn->monitor->DDC);
+ xf86MonPtr DDC = (xf86MonPtr)(pScrn->monitor->DDC);
int ddcWidthmm, ddcHeightmm;
int widthErr, heightErr;
@@ -998,7 +1009,7 @@ xf86SetDpi(ScrnInfoPtr pScrn, int x, int y)
if (DDC && (DDC->features.hsize > 0 && DDC->features.vsize > 0) ) {
/* DDC gives display size in mm for individual modes,
- * but cm for monitor
+ * but cm for monitor
*/
ddcWidthmm = DDC->features.hsize * 10; /* 10mm in 1cm */
ddcHeightmm = DDC->features.vsize * 10; /* 10mm in 1cm */
@@ -1042,7 +1053,7 @@ xf86SetDpi(ScrnInfoPtr pScrn, int x, int y)
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",
+ "Probed monitor is %dx%d mm, using Displaysize %dx%d mm\n",
ddcWidthmm,ddcHeightmm, pScrn->widthmm,pScrn->heightmm);
}
}
@@ -1138,7 +1149,7 @@ xf86SetRootClip (ScreenPtr pScreen, Bool enable)
pWin->valdata->before.resized = TRUE;
}
}
-
+
/*
* Use REGION_BREAK to avoid optimizations in ValidateTree
* that assume the root borderClip can't change well, normally
@@ -1163,9 +1174,9 @@ xf86SetRootClip (ScreenPtr pScreen, Bool enable)
REGION_EMPTY(pScreen, &pWin->borderClip);
REGION_BREAK (pWin->drawable.pScreen, &pWin->clipList);
}
-
+
ResizeChildrenWinSize (pWin, 0, 0, 0, 0);
-
+
if (WasViewable)
{
if (pWin->backStorage)
@@ -1210,7 +1221,7 @@ xf86SetRootClip (ScreenPtr pScreen, Bool enable)
if (bsExposed)
{
RegionPtr valExposed = NullRegion;
-
+
if (pWin->valdata)
valExposed = &pWin->valdata->after.exposed;
(*pScreen->WindowExposures) (pWin, valExposed, bsExposed);
@@ -1269,7 +1280,7 @@ xf86EnableDisableFBAccess(int scrnIndex, Bool enable)
*/
pspix->devPrivate = pScrnInfo->pixmapPrivate;
/*
- * Restore all of the clip lists on the screen
+ * Restore all of the clip lists on the screen
*/
if (!xf86Resetting)
xf86SetRootClip (pScreen, TRUE);
@@ -1278,7 +1289,7 @@ xf86EnableDisableFBAccess(int scrnIndex, Bool enable)
else
{
/*
- * Empty all of the clip lists on the screen
+ * Empty all of the clip lists on the screen
*/
xf86SetRootClip (pScreen, FALSE);
/*
@@ -1399,7 +1410,7 @@ xf86LogInit()
#define LOGSUFFIX ".log"
#define LOGOLDSUFFIX ".old"
-
+
/* Get the log file name */
if (xf86LogFileFrom == X_DEFAULT) {
/* Append the display number and ".log" */
@@ -1527,7 +1538,7 @@ xf86MatchDevice(const char *drivername, GDevPtr **sectlist)
*sectlist = NULL;
if (xf86DoProbe) return 1;
-
+
if (xf86DoConfigure && xf86DoConfigurePass1) return 1;
/*
@@ -1535,18 +1546,18 @@ xf86MatchDevice(const char *drivername, GDevPtr **sectlist)
* 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)
+ * 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
@@ -1576,7 +1587,7 @@ xf86MatchDevice(const char *drivername, GDevPtr **sectlist)
}
j++;
}
-
+
/*
* make the array NULL terminated and return its address
*/
@@ -1602,7 +1613,7 @@ struct Inst {
/**
* Find set of unclaimed devices matching a given vendor ID.
- *
+ *
* Used by drivers to find as yet unclaimed devices matching the specified
* vendor ID.
*
@@ -1618,7 +1629,7 @@ struct Inst {
* \param drvp Pointer the driver's control structure.
* \param foundEntities Returned list of entity indicies associated with the
* driver.
- *
+ *
* \returns
* The number of elements in returned in \c foundEntities on success or zero
* on failure.
@@ -1633,7 +1644,7 @@ struct Inst {
* that parameter.
*/
_X_EXPORT int
-xf86MatchPciInstances(const char *driverName, int vendorID,
+xf86MatchPciInstances(const char *driverName, int vendorID,
SymTabPtr chipsets, PciChipsets *PCIchipsets,
GDevPtr *devList, int numDevs, DriverPtr drvp,
int **foundEntities)
@@ -1650,6 +1661,8 @@ xf86MatchPciInstances(const char *driverName, int vendorID,
*foundEntities = NULL;
+ if (!xf86PciVideoInfo)
+ return 0;
/* Each PCI device will contribute at least one entry. Each device
* section can contribute at most one entry. The sum of the two is
@@ -1710,7 +1723,7 @@ xf86MatchPciInstances(const char *driverName, int vendorID,
foundVendor = TRUE;
}
if ( (device_id == pPci->chipType)
- || ((vendorID == PCI_VENDOR_GENERIC)
+ || ((vendorID == PCI_VENDOR_GENERIC)
&& (match_class == device_class)) ) {
if ( instances != NULL ) {
instances[allocatedInstances - 1].foundHW = TRUE;
@@ -1721,7 +1734,7 @@ xf86MatchPciInstances(const char *driverName, int vendorID,
if ( xf86DoConfigure && xf86DoConfigurePass1 ) {
if ( xf86CheckPciSlot(pPci->bus, pPci->device,
pPci->func) ) {
- GDevPtr pGDev =
+ GDevPtr pGDev =
xf86AddDeviceToConfigure( drvp->driverName,
pPci, -1 );
if (pGDev) {
@@ -1779,7 +1792,7 @@ xf86MatchPciInstances(const char *driverName, int vendorID,
*/
for (j = 0; j < numDevs; j++) {
- if (devList[j]->screen > 0 && devList[j]->busID
+ if (devList[j]->screen > 0 && devList[j]->busID
&& *devList[j]->busID) {
for (i = 0; i < allocatedInstances; i++) {
pPci = instances[i].pci;
@@ -1808,7 +1821,7 @@ xf86MatchPciInstances(const char *driverName, int vendorID,
pPci->device,
pPci->func) &&
devList[j]->screen == instances[i].screen) {
-
+
if (devBus)
xf86MsgVerb(X_WARNING,0,
"%s: More than one matching Device section for "
@@ -1817,10 +1830,10 @@ xf86MatchPciInstances(const char *driverName, int vendorID,
devList[j]->identifier);
else
devBus = devList[j];
- }
+ }
} else {
- /*
- * if device section without BusID is found
+ /*
+ * if device section without BusID is found
* only assign to it to the primary device.
*/
if (xf86IsPrimaryPci(pPci)) {
@@ -1835,7 +1848,7 @@ xf86MatchPciInstances(const char *driverName, int vendorID,
}
}
}
- if (devBus) dev = devBus; /* busID preferred */
+ 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 "
@@ -2055,7 +2068,7 @@ xf86MatchIsaInstances(const char *driverName, SymTabPtr chipsets,
dev->identifier);
} else
foundChip = c->token;
- } else {
+ } else {
if (FindIsaDevice) foundChip = (*FindIsaDevice)(dev);
/* Probe it */
from = X_PROBED;
@@ -2066,7 +2079,7 @@ xf86MatchIsaInstances(const char *driverName, SymTabPtr chipsets,
if (foundChip >= 0){
for (Chips = ISAchipsets; Chips->numChipset >= 0; Chips++) {
- if (Chips->numChipset == foundChip)
+ if (Chips->numChipset == foundChip)
break;
}
if (Chips->numChipset == -1){
@@ -2089,7 +2102,7 @@ xf86MatchIsaInstances(const char *driverName, SymTabPtr chipsets,
}
}
*foundEntities = retEntities;
-
+
return numFound;
}
@@ -2113,7 +2126,7 @@ xf86GetClocks(ScrnInfoPtr pScrn, int num, Bool (*ClockFunc)(ScrnInfoPtr, int),
if (num > MAXCLOCKS)
num = MAXCLOCKS;
- for (i = 0; i < num; i++)
+ for (i = 0; i < num; i++)
{
if (ProtectRegs)
(*ProtectRegs)(pScrn, TRUE);
@@ -2126,7 +2139,7 @@ xf86GetClocks(ScrnInfoPtr pScrn, int num, Bool (*ClockFunc)(ScrnInfoPtr, int),
(*ProtectRegs)(pScrn, FALSE);
if (BlankScreen)
(*BlankScreen)(pScrn, FALSE);
-
+
usleep(50000); /* let VCO stabilise */
cnt = 0;
@@ -2140,25 +2153,25 @@ xf86GetClocks(ScrnInfoPtr pScrn, int num, Bool (*ClockFunc)(ScrnInfoPtr, int),
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)
+ 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)
+ 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)
+ while ((inb(status) & maskval) == 0x00)
if (sync-- == 0) goto finish;
-
- for (rcnt = 0; rcnt < 5; rcnt++)
+
+ for (rcnt = 0; rcnt < 5; rcnt++)
{
- while (!(inb(status) & maskval))
+ while (!(inb(status) & maskval))
cnt++;
- while ((inb(status) & maskval))
+ while ((inb(status) & maskval))
cnt++;
}
-
+
finish:
xf86EnableInterrupts();
@@ -2169,7 +2182,7 @@ finish:
xf86SetPriority(FALSE);
- for (i = 0; i < num; i++)
+ for (i = 0; i < num; i++)
{
if (i != knownclkindex)
{
@@ -2177,10 +2190,10 @@ finish:
{
pScrn->clock[i] = 0;
}
- else
+ else
{
pScrn->clock[i] = (int)(0.5 +
- (((float)knownclkvalue) * pScrn->clock[knownclkindex]) /
+ (((float)knownclkvalue) * pScrn->clock[knownclkindex]) /
(pScrn->clock[i]));
/* Round to nearest 10KHz */
pScrn->clock[i] += 5;
@@ -2191,7 +2204,7 @@ finish:
}
pScrn->clock[knownclkindex] = knownclkvalue;
- pScrn->numClocks = num;
+ pScrn->numClocks = num;
/* Restore registers that were written on */
(*ClockFunc)(pScrn, CLK_REG_RESTORE);
@@ -2381,17 +2394,12 @@ xf86GetVersion()
_X_EXPORT CARD32
xf86GetModuleVersion(pointer module)
{
-#ifdef XFree86LOADER
return (CARD32)LoaderGetModuleVersion(module);
-#else
- return 0;
-#endif
}
_X_EXPORT pointer
xf86LoadDrvSubModule(DriverPtr drv, const char *name)
{
-#ifdef XFree86LOADER
pointer ret;
int errmaj = 0, errmin = 0;
@@ -2400,15 +2408,11 @@ xf86LoadDrvSubModule(DriverPtr drv, const char *name)
if (!ret)
LoaderErrorMsg(NULL, name, errmaj, errmin);
return ret;
-#else
- return (pointer)1;
-#endif
}
_X_EXPORT pointer
xf86LoadSubModule(ScrnInfoPtr pScrn, const char *name)
{
-#ifdef XFree86LOADER
pointer ret;
int errmaj = 0, errmin = 0;
@@ -2417,26 +2421,21 @@ xf86LoadSubModule(ScrnInfoPtr pScrn, const char *name)
if (!ret)
LoaderErrorMsg(pScrn->name, name, errmaj, errmin);
return ret;
-#else
- return (pointer)1;
-#endif
}
/*
* xf86LoadOneModule loads a single module.
- */
+ */
_X_EXPORT 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
@@ -2452,13 +2451,9 @@ xf86LoadOneModule(char *name, pointer opt)
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;
}
@@ -2470,7 +2465,7 @@ xf86UnloadSubModule(pointer mod)
* This is disabled for now. The loader isn't smart enough yet to undo
* relocations.
*/
-#if defined(XFree86LOADER) && 0
+#if 0
UnloadSubModule(mod);
#endif
}
@@ -2478,59 +2473,28 @@ xf86UnloadSubModule(pointer mod)
_X_EXPORT Bool
xf86LoaderCheckSymbol(const char *name)
{
-#ifdef XFree86LOADER
return LoaderSymbol(name) != NULL;
-#else
- return TRUE;
-#endif
}
+/* These two are just ABI stubs, they don't do anything in dlloader world */
_X_EXPORT void
xf86LoaderReqSymLists(const char **list0, ...)
{
-#ifdef XFree86LOADER
- va_list ap;
-
- va_start(ap, list0);
- LoaderVReqSymLists(list0, ap);
- va_end(ap);
-#endif
}
_X_EXPORT void
xf86LoaderReqSymbols(const char *sym0, ...)
{
-#ifdef XFree86LOADER
- va_list ap;
-
- va_start(ap, sym0);
- LoaderVReqSymbols(sym0, ap);
- va_end(ap);
-#endif
}
_X_EXPORT void
xf86LoaderRefSymLists(const char **list0, ...)
{
-#ifdef XFree86LOADER
- va_list ap;
-
- va_start(ap, list0);
- LoaderVRefSymLists(list0, ap);
- va_end(ap);
-#endif
}
_X_EXPORT void
xf86LoaderRefSymbols(const char *sym0, ...)
{
-#ifdef XFree86LOADER
- va_list ap;
-
- va_start(ap, sym0);
- LoaderVRefSymbols(sym0, ap);
- va_end(ap);
-#endif
}
@@ -2543,7 +2507,7 @@ static const OptionInfoRec BSOptions[] = {
{ -1, NULL, OPTV_NONE, {0}, FALSE }
};
-_X_EXPORT void
+_X_EXPORT void
xf86SetBackingStore(ScreenPtr pScreen)
{
Bool useBS = FALSE;
@@ -2583,7 +2547,7 @@ static const OptionInfoRec SMOptions[] = {
{ -1, NULL, OPTV_NONE, {0}, FALSE }
};
-_X_EXPORT void
+_X_EXPORT void
xf86SetSilkenMouse (ScreenPtr pScreen)
{
Bool useSM = TRUE;
@@ -2594,12 +2558,12 @@ xf86SetSilkenMouse (ScreenPtr pScreen)
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) &&
+ if (((pScrn->racMemFlags & RAC_CURSOR) &&
!xf86NoSharedResources(pScrn->scrnIndex,MEM)) ||
- ((pScrn->racIoFlags & RAC_CURSOR) &&
+ ((pScrn->racIoFlags & RAC_CURSOR) &&
!xf86NoSharedResources(pScrn->scrnIndex,IO))) {
useSM = FALSE;
from = X_PROBED;
@@ -2614,7 +2578,7 @@ xf86SetSilkenMouse (ScreenPtr pScreen)
/*
* 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.
+ * work correctly with this too.
*/
pScrn->silkenMouse = useSM && xf86SIGIOSupported();
if (serverGeneration == 1)
@@ -2668,7 +2632,7 @@ xf86ConfigIsaEntity(ScrnInfoPtr pScrn, int scrnFlag, int entityIndex,
IsaChipsets *i_id;
EntityInfoPtr pEnt = xf86GetEntityInfo(entityIndex);
if (!pEnt) return pScrn;
-
+
if (!(pEnt->location.type == BUS_ISA)) {
xfree(pEnt);
return pScrn;
@@ -2682,7 +2646,7 @@ xf86ConfigIsaEntity(ScrnInfoPtr pScrn, int scrnFlag, int entityIndex,
}
if (!pScrn)
- pScrn = xf86AllocateScreen(pEnt->driver,scrnFlag);
+ pScrn = xf86AllocateScreen(pEnt->driver,scrnFlag);
xf86AddEntityToScreen(pScrn,entityIndex);
if (i_chip) {
@@ -2707,7 +2671,7 @@ xf86ConfigPciEntity(ScrnInfoPtr pScrn, int scrnFlag, int entityIndex,
EntityInfoPtr pEnt = xf86GetEntityInfo(entityIndex);
if (!pEnt) return pScrn;
- if (!(pEnt->location.type == BUS_PCI)
+ if (!(pEnt->location.type == BUS_PCI)
|| !xf86GetPciInfoForEntity(entityIndex)) {
xfree(pEnt);
return pScrn;
@@ -2744,12 +2708,12 @@ xf86ConfigPciEntity(ScrnInfoPtr pScrn, int scrnFlag, int entityIndex,
_X_EXPORT ScrnInfoPtr
xf86ConfigFbEntity(ScrnInfoPtr pScrn, int scrnFlag, int entityIndex,
- EntityProc init, EntityProc enter, EntityProc leave,
+ 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;
@@ -2762,7 +2726,7 @@ xf86ConfigFbEntity(ScrnInfoPtr pScrn, int scrnFlag, int entityIndex,
}
if (!pScrn)
- pScrn = xf86AllocateScreen(pEnt->driver,scrnFlag);
+ pScrn = xf86AllocateScreen(pEnt->driver,scrnFlag);
xf86AddEntityToScreen(pScrn,entityIndex);
xf86SetEntityFuncs(entityIndex,init,enter,leave,private);
@@ -2784,14 +2748,14 @@ xf86ConfigActiveIsaEntity(ScrnInfoPtr pScrn, int entityIndex,
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;
@@ -2802,10 +2766,10 @@ xf86ConfigActiveIsaEntity(ScrnInfoPtr pScrn, int entityIndex,
xf86ClaimFixedResources(res,entityIndex);
if (!xf86SetEntityFuncs(entityIndex,init,enter,leave,private))
return FALSE;
-
+
return TRUE;
}
-
+
_X_EXPORT Bool
xf86ConfigActivePciEntity(ScrnInfoPtr pScrn, int entityIndex,
PciChipsets *p_chip, resList res, EntityProc init,
@@ -2814,13 +2778,13 @@ xf86ConfigActivePciEntity(ScrnInfoPtr pScrn, int entityIndex,
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;
@@ -2828,11 +2792,11 @@ xf86ConfigActivePciEntity(ScrnInfoPtr pScrn, int entityIndex,
xf86ClaimFixedResources(p_id->resList,entityIndex);
}
xfree(pEnt);
-
+
xf86ClaimFixedResources(res,entityIndex);
if (!xf86SetEntityFuncs(entityIndex,init,enter,leave,private))
return FALSE;
-
+
return TRUE;
}
@@ -2888,7 +2852,7 @@ xf86ConfigIsaEntityInactive(EntityInfoPtr pEnt, IsaChipsets *i_chip,
}
void
-xf86ConfigFbEntityInactive(EntityInfoPtr pEnt, EntityProc init,
+xf86ConfigFbEntityInactive(EntityInfoPtr pEnt, EntityProc init,
EntityProc enter, EntityProc leave, pointer private)
{
ScrnInfoPtr pScrn;
@@ -2957,7 +2921,7 @@ xf86RegisterRootWindowProperty(int ScrnIndex, Atom property, Atom type,
pNewProp->format = format;
pNewProp->size = len;
pNewProp->data = value;
-
+
#ifdef DEBUG
ErrorF("new property filled\n");
#endif
@@ -2999,7 +2963,7 @@ xf86RegisterRootWindowProperty(int ScrnIndex, Atom property, Atom type,
#ifdef DEBUG
ErrorF("xf86RegisterRootWindowProperty succeeded\n");
#endif
- return(Success);
+ return(Success);
}
_X_EXPORT Bool
diff --git a/hw/xfree86/common/xf86InPriv.h b/hw/xfree86/common/xf86InPriv.h
index 4a02606d3..62e4820cb 100644
--- a/hw/xfree86/common/xf86InPriv.h
+++ b/hw/xfree86/common/xf86InPriv.h
@@ -1,4 +1,3 @@
-/* $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.
@@ -35,14 +34,13 @@
#define _xf86InPriv_h
/* xf86Globals.c */
-#ifdef XFree86LOADER
extern InputDriverPtr *xf86InputDriverList;
-#else
-extern InputDriverPtr xf86InputDriverList[];
-#endif
extern int xf86NumInputDrivers;
/* xf86Xinput.c */
void xf86ActivateDevice(InputInfoPtr pInfo);
+/* xf86Helper.c */
+InputDriverPtr xf86LookupInputDriver(const char *name);
+
#endif /* _xf86InPriv_h */
diff --git a/hw/xfree86/common/xf86Init.c b/hw/xfree86/common/xf86Init.c
index 9bb2bf8b2..ff878d59c 100644
--- a/hw/xfree86/common/xf86Init.c
+++ b/hw/xfree86/common/xf86Init.c
@@ -1,5 +1,3 @@
-/* $XFree86: xc/programs/Xserver/hw/xfree86/common/xf86Init.c,v 3.212 2004/01/27 01:31:45 dawes Exp $ */
-/* $XdotOrg: xserver/xorg/hw/xfree86/common/xf86Init.c,v 1.36 2006/06/01 18:47:01 daniels Exp $ */
/*
* Loosely based on code bearing the following copyright:
@@ -62,9 +60,7 @@
#include "compiler.h"
-#ifdef XFree86LOADER
#include "loaderProcs.h"
-#endif
#ifdef XFreeXDGA
#include "dgaproc.h"
#endif
@@ -104,6 +100,8 @@
static void xf86PrintBanner(void);
static void xf86PrintMarkers(void);
+static void xf86PrintDefaultModulePath(void);
+static void xf86PrintDefaultLibraryPath(void);
static void xf86RunVtInit(void);
#ifdef __UNIXOS2__
@@ -114,12 +112,10 @@ extern void os2ServerVideoAccess();
void (*xf86OSPMClose)(void) = NULL;
#endif
-#ifdef XFree86LOADER
static char *baseModules[] = {
"pcidata",
NULL
};
-#endif
/* Common pixmap formats */
@@ -141,16 +137,6 @@ static int numFormats = 6;
#endif
static Bool formatsDone = FALSE;
-InputDriverRec XF86KEYBOARD = {
- 1,
- "keyboard",
- NULL,
- NULL,
- NULL,
- NULL,
- 0
-};
-
static Bool
xf86CreateRootWindow(WindowPtr pWin)
{
@@ -272,10 +258,8 @@ 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;
@@ -333,13 +317,16 @@ InitOutput(ScreenInfo *pScreenInfo, int argc, char **argv)
if (!autoconfig)
PostConfigInit();
-#ifdef XFree86LOADER
/* Initialise the loader */
LoaderInit();
/* Tell the loader the default module search path */
LoaderSetPath(xf86ModulePath);
+ if (xf86Info.ignoreABI) {
+ LoaderSetOptions(LDR_OPT_ABI_MISMATCH_NONFATAL);
+ }
+
#ifdef TESTING
{
char **list, **l;
@@ -377,8 +364,6 @@ InitOutput(ScreenInfo *pScreenInfo, int argc, char **argv)
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 */
@@ -401,7 +386,6 @@ InitOutput(ScreenInfo *pScreenInfo, int argc, char **argv)
/* Initialise the resource broker */
xf86ResourceBrokerInit();
-#ifdef XFree86LOADER
/* Load all modules specified explicitly in the config file */
if ((modulelist = xf86ModulelistFromConfig(&optionlist))) {
xf86LoadModules(modulelist, optionlist);
@@ -415,10 +399,6 @@ InitOutput(ScreenInfo *pScreenInfo, int argc, char **argv)
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);
@@ -432,7 +412,6 @@ InitOutput(ScreenInfo *pScreenInfo, int argc, char **argv)
* 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
@@ -672,12 +651,10 @@ InitOutput(ScreenInfo *pScreenInfo, int argc, char **argv)
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.
@@ -982,13 +959,6 @@ InitOutput(ScreenInfo *pScreenInfo, int argc, char **argv)
#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();
@@ -1000,21 +970,6 @@ InitOutput(ScreenInfo *pScreenInfo, int argc, char **argv)
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.
@@ -1028,7 +983,6 @@ InitInput(argc, argv)
IDevPtr pDev;
InputDriverPtr pDrv;
InputInfoPtr pInfo;
- static InputInfoPtr coreKeyboard = NULL, corePointer = NULL;
xf86Info.vtRequestsPending = FALSE;
xf86Info.inputPending = FALSE;
@@ -1036,19 +990,7 @@ InitInput(argc, argv)
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) {
+ if ((pDrv = xf86LookupInputDriver(pDev->driver)) == NULL) {
xf86Msg(X_ERROR, "No Input driver matching `%s'\n", pDev->driver);
/* XXX For now, just continue. */
continue;
@@ -1070,80 +1012,18 @@ InitInput(argc, argv)
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) {
+ xf86Msg(X_INFO, "evaluating device (%s)\n", pInfo->name);
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
+ mieqInit();
}
#ifndef SET_STDERR_NONBLOCKING
@@ -1167,9 +1047,7 @@ OsVendorInit()
signal(SIGCHLD, SIG_DFL); /* Need to wait for child processes */
#endif
OsDelayInitColors = TRUE;
-#ifdef XFree86LOADER
loadableFonts = TRUE;
-#endif
if (!beenHere)
xf86LogInit();
@@ -1265,12 +1143,6 @@ 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
@@ -1461,9 +1333,7 @@ ddxProcessArgument(int argc, char **argv, int i)
}
if (!strcmp(argv[i],"-ignoreABI"))
{
-#ifdef XFree86LOADER
LoaderSetOptions(LDR_OPT_ABI_MISMATCH_NONFATAL);
-#endif
return 1;
}
if (!strcmp(argv[i],"-verbose"))
@@ -1508,6 +1378,16 @@ ddxProcessArgument(int argc, char **argv, int i)
xf86PrintBanner();
exit(0);
}
+ if (!strcmp(argv[i],"-showDefaultModulePath"))
+ {
+ xf86PrintDefaultModulePath();
+ exit(0);
+ }
+ if (!strcmp(argv[i],"-showDefaultLibPath"))
+ {
+ xf86PrintDefaultLibraryPath();
+ exit(0);
+ }
/* Notice the -fp flag, but allow it to pass to the dix layer */
if (!strcmp(argv[i], "-fp"))
{
@@ -1757,6 +1637,8 @@ ddxUseMsg()
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");
+ ErrorF("-showDefaultModulePath show the server default module path\n");
+ ErrorF("-showDefaultLibPath show the server default library path\n");
/* OS-specific usage */
xf86UseMsg();
ErrorF("\n");
@@ -1783,8 +1665,8 @@ xf86PrintBanner()
"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");
+ "latest version in the X.Org Foundation git repository.\n"
+ "See http://wiki.x.org/wiki/GitPage for git access instructions.\n");
#endif
ErrorF("\nX Window System Version %d.%d.%d",
XORG_VERSION_MAJOR,
@@ -1870,9 +1752,7 @@ xf86PrintBanner()
#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
@@ -1882,6 +1762,18 @@ xf86PrintMarkers()
}
static void
+xf86PrintDefaultModulePath(void)
+{
+ ErrorF("%s\n", DEFAULT_MODULE_PATH);
+}
+
+static void
+xf86PrintDefaultLibraryPath(void)
+{
+ ErrorF("%s\n", DEFAULT_LIBRARY_PATH);
+}
+
+static void
xf86RunVtInit(void)
{
int i;
@@ -1896,7 +1788,11 @@ xf86RunVtInit(void)
FatalError("xf86RunVtInit: fork failed (%s)\n", strerror(errno));
break;
case 0: /* child */
- setuid(getuid());
+ 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) {
@@ -1915,7 +1811,6 @@ xf86RunVtInit(void)
}
}
-#ifdef XFree86LOADER
/*
* xf86LoadModules iterates over a list that is being passed in.
*/
@@ -1958,8 +1853,6 @@ xf86LoadModules(char **list, pointer *optlist)
return !failed;
}
-#endif
-
/* Pixmap format stuff */
_X_EXPORT PixmapFormatPtr
diff --git a/hw/xfree86/common/xf86Io.c b/hw/xfree86/common/xf86Io.c
deleted file mode 100644
index 4dbbd7e93..000000000
--- a/hw/xfree86/common/xf86Io.c
+++ /dev/null
@@ -1,501 +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: xserver/xorg/hw/xfree86/common/xf86Io.c,v 1.6 2006/03/25 19:52:03 ajax 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 (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)
-_X_EXPORT 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/hw/xfree86/common/xf86Kbd.c b/hw/xfree86/common/xf86Kbd.c
deleted file mode 100644
index 85f9e3406..000000000
--- a/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/hw/xfree86/common/xf86KbdBSD.c b/hw/xfree86/common/xf86KbdBSD.c
deleted file mode 100644
index c1f6156e3..000000000
--- a/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/hw/xfree86/common/xf86KbdLnx.c b/hw/xfree86/common/xf86KbdLnx.c
deleted file mode 100644
index c5361f5d9..000000000
--- a/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/hw/xfree86/common/xf86KbdMach.c b/hw/xfree86/common/xf86KbdMach.c
deleted file mode 100644
index 89c23c24a..000000000
--- a/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/hw/xfree86/common/xf86Keymap.h b/hw/xfree86/common/xf86Keymap.h
deleted file mode 100644
index f0998ba9b..000000000
--- a/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/hw/xfree86/common/xf86MiscExt.c b/hw/xfree86/common/xf86MiscExt.c
index 80fbf417d..652428489 100644
--- a/hw/xfree86/common/xf86MiscExt.c
+++ b/hw/xfree86/common/xf86MiscExt.c
@@ -1,4 +1,3 @@
-/* $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.
*
@@ -90,6 +89,7 @@ typedef struct {
int rate;
int delay;
int serverNumLock; /* obsolete */
+ pointer private;
} kbdParamsRec, *kbdParamsPtr;
/*
@@ -247,7 +247,6 @@ _X_EXPORT Bool
MiscExtSetMouseDevice(pointer mouse, char* device)
{
mseParamsPtr mse = mouse;
-
mse->device = device;
return TRUE;
@@ -256,54 +255,20 @@ MiscExtSetMouseDevice(pointer mouse, char* device)
_X_EXPORT 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;
+ return FALSE;
}
_X_EXPORT 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;
}
_X_EXPORT 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;
}
@@ -366,7 +331,7 @@ MiscExtCreateStruct(MiscExtStructType mse_or_kbd)
InputInfoPtr pInfo = xf86InputDevs;
while (pInfo) {
- if (xf86IsCorePointer(pInfo->dev))
+ if (pInfo->dev == inputInfo.pointer)
break;
pInfo = pInfo->next;
}
@@ -459,22 +424,18 @@ MiscExtApply(pointer structure, MiscExtStructType mse_or_kbd)
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)))
+ || (mse->type > MTYPE_EXPPS2
+ && (mse->type != MTYPE_OSMOUSE)))
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 */
@@ -495,7 +456,6 @@ MiscExtApply(pointer structure, MiscExtStructType mse_or_kbd)
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
@@ -516,7 +476,6 @@ MiscExtApply(pointer structure, MiscExtStructType mse_or_kbd)
return MISC_RET_BADFLAGS;
if (mse->type != MTYPE_OSMOUSE
- && mse->type != MTYPE_XQUEUE
&& mse->type != MTYPE_BUSMOUSE)
{
if (mse->samplerate < 0)
@@ -563,12 +522,8 @@ MiscExtApply(pointer structure, MiscExtStructType mse_or_kbd)
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)) {
@@ -593,37 +548,7 @@ MiscExtApply(pointer structure, MiscExtStructType mse_or_kbd)
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;
+ return MISC_RET_BADVAL;
}
_X_EXPORT Bool
diff --git a/hw/xfree86/common/xf86Mode.c b/hw/xfree86/common/xf86Mode.c
index 36e81559e..3cebac754 100644
--- a/hw/xfree86/common/xf86Mode.c
+++ b/hw/xfree86/common/xf86Mode.c
@@ -1,5 +1,3 @@
-/* $XdotOrg: xserver/xorg/hw/xfree86/common/xf86Mode.c,v 1.10 2006/03/07 16:00:57 libv 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.
*
@@ -47,7 +45,25 @@
#include "globals.h"
#include "xf86.h"
#include "xf86Priv.h"
-#include "xf86DDC.h"
+#include "edid.h"
+
+static void
+printModeRejectMessage(int index, DisplayModePtr p, int status)
+{
+ char *type;
+
+ if (p->type & M_T_BUILTIN)
+ type = "built-in ";
+ else if (p->type & M_T_DEFAULT)
+ type = "default ";
+ else if (p->type & M_T_DRIVER)
+ type = "driver ";
+ else
+ type = "";
+
+ xf86DrvMsg(index, X_INFO, "Not using %smode \"%s\" (%s)\n", type, p->name,
+ xf86ModeStatusToString(status));
+}
/*
* xf86GetNearestClock --
@@ -352,8 +368,9 @@ xf86HandleBuiltinMode(ScrnInfoPtr scrp,
return MODE_OK;
}
-static double
-ModeHSync(DisplayModePtr mode)
+/** Calculates the horizontal sync rate of a mode */
+_X_EXPORT double
+xf86ModeHSync(DisplayModePtr mode)
{
double hsync = 0.0;
@@ -365,8 +382,9 @@ ModeHSync(DisplayModePtr mode)
return hsync;
}
-static double
-ModeVRefresh(DisplayModePtr mode)
+/** Calculates the vertical refresh rate of a mode */
+_X_EXPORT double
+xf86ModeVRefresh(DisplayModePtr mode)
{
double refresh = 0.0;
@@ -384,6 +402,16 @@ ModeVRefresh(DisplayModePtr mode)
return refresh;
}
+/** Sets a default mode name of <width>x<height> on a mode. */
+_X_EXPORT void
+xf86SetModeDefaultName(DisplayModePtr mode)
+{
+ if (mode->name != NULL)
+ xfree(mode->name);
+
+ mode->name = XNFprintf("%dx%d", mode->HDisplay, mode->VDisplay);
+}
+
/*
* xf86LookupMode
*
@@ -429,6 +457,17 @@ xf86LookupMode(ScrnInfoPtr scrp, DisplayModePtr modep,
ModeStatus status = MODE_NOMODE;
Bool allowDiv2 = (strategy & LOOKUP_CLKDIV2) != 0;
Bool haveBuiltin;
+ int n;
+ const int types[] = {
+ M_T_BUILTIN | M_T_PREFERRED,
+ M_T_BUILTIN,
+ M_T_USERDEF | M_T_PREFERRED,
+ M_T_USERDEF,
+ M_T_DRIVER | M_T_PREFERRED,
+ M_T_DRIVER,
+ 0
+ };
+ const int ntypes = sizeof(types) / sizeof(int);
strategy &= ~(LOOKUP_CLKDIV2 | LOOKUP_OPTIONAL_TOLERANCES);
@@ -448,143 +487,141 @@ xf86LookupMode(ScrnInfoPtr scrp, DisplayModePtr modep,
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;
- }
+ for (n = 0; n < ntypes; n++) {
+ int type = types[n];
+ for (p = scrp->modePool; p != NULL; p = p->next) {
- if (haveBuiltin && !(p->type & M_T_BUILTIN))
+ /* scan through the modes in the sort order above */
+ if ((p->type & type) != type)
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 (strcmp(p->name, modep->name) == 0) {
- if (p->type & M_T_BUILTIN) {
- return xf86HandleBuiltinMode(scrp, p,modep, clockRanges,
- allowDiv2);
- }
+ /* Skip over previously rejected modes */
+ if (p->status != MODE_OK) {
+ if (!found)
+ status = p->status;
+ continue;
+ }
- /* 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;
- }
+ /* Skip over previously considered modes */
+ if (p->prev)
+ 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;
+ if (p->type & M_T_BUILTIN) {
+ return xf86HandleBuiltinMode(scrp, p,modep, clockRanges,
+ allowDiv2);
}
- 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;
+
+ /* 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;
}
- continue;
- }
- /*
- * Clock is in range, so if it is not a programmable clock, find
- * a matching clock.
- */
+ /*
+ * 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 = xf86ModeVRefresh(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;
+ }
- 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;
+ /*
+ * 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;
}
- 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;
+ found = TRUE;
+
+ if (strategy == LOOKUP_BEST_REFRESH) {
+ refresh = xf86ModeVRefresh(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;
}
- 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 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) break;
}
if (!found || bestMode == NULL)
return status;
@@ -595,7 +632,8 @@ xf86LookupMode(ScrnInfoPtr scrp, DisplayModePtr modep,
modep->ClockIndex = -1;
modep->SynthClock = (modep->Clock * MulFactor) / DivFactor;
} else {
- modep->Clock = (scrp->clock[clockIndex] * DivFactor) / MulFactor;
+ modep->Clock = (scrp->clock[clockIndex] * DivFactor) /
+ MulFactor;
modep->ClockIndex = clockIndex;
modep->SynthClock = scrp->clock[clockIndex];
if (extraFlags & V_CLKDIV2) {
@@ -648,7 +686,7 @@ xf86LookupMode(ScrnInfoPtr scrp, DisplayModePtr modep,
* Initialises the Crtc parameters for a mode. The initialisation includes
* adjustments for interlaced and double scan modes.
*/
-static void
+_X_EXPORT void
xf86SetModeCrtc(DisplayModePtr p, int adjustFlags)
{
if ((p == NULL) || ((p->type & M_T_CRTC_C) == M_T_BUILTIN))
@@ -730,6 +768,87 @@ xf86SetModeCrtc(DisplayModePtr p, int adjustFlags)
}
}
+/**
+ * Allocates and returns a copy of pMode, including pointers within pMode.
+ */
+_X_EXPORT DisplayModePtr
+xf86DuplicateMode(DisplayModePtr pMode)
+{
+ DisplayModePtr pNew;
+
+ pNew = xnfalloc(sizeof(DisplayModeRec));
+ *pNew = *pMode;
+ pNew->next = NULL;
+ pNew->prev = NULL;
+ if (pNew->name == NULL) {
+ xf86SetModeDefaultName(pMode);
+ } else {
+ pNew->name = xnfstrdup(pMode->name);
+ }
+
+ return pNew;
+}
+
+/**
+ * Duplicates every mode in the given list and returns a pointer to the first
+ * mode.
+ *
+ * \param modeList doubly-linked mode list
+ */
+_X_EXPORT DisplayModePtr
+xf86DuplicateModes(ScrnInfoPtr pScrn, DisplayModePtr modeList)
+{
+ DisplayModePtr first = NULL, last = NULL;
+ DisplayModePtr mode;
+
+ for (mode = modeList; mode != NULL; mode = mode->next) {
+ DisplayModePtr new;
+
+ new = xf86DuplicateMode(mode);
+
+ /* Insert pNew into modeList */
+ if (last) {
+ last->next = new;
+ new->prev = last;
+ } else {
+ first = new;
+ new->prev = NULL;
+ }
+ new->next = NULL;
+ last = new;
+ }
+
+ return first;
+}
+
+/**
+ * Returns true if the given modes should program to the same timings.
+ *
+ * This doesn't use Crtc values, as it might be used on ModeRecs without the
+ * Crtc values set. So, it's assumed that the other numbers are enough.
+ */
+_X_EXPORT Bool
+xf86ModesEqual(DisplayModePtr pMode1, DisplayModePtr pMode2)
+{
+ if (pMode1->Clock == pMode2->Clock &&
+ pMode1->HDisplay == pMode2->HDisplay &&
+ pMode1->HSyncStart == pMode2->HSyncStart &&
+ pMode1->HSyncEnd == pMode2->HSyncEnd &&
+ pMode1->HTotal == pMode2->HTotal &&
+ pMode1->HSkew == pMode2->HSkew &&
+ pMode1->VDisplay == pMode2->VDisplay &&
+ pMode1->VSyncStart == pMode2->VSyncStart &&
+ pMode1->VSyncEnd == pMode2->VSyncEnd &&
+ pMode1->VTotal == pMode2->VTotal &&
+ pMode1->VScan == pMode2->VScan &&
+ pMode1->Flags == pMode2->Flags)
+ {
+ return TRUE;
+ } else {
+ return FALSE;
+ }
+}
+
/*
* xf86CheckModeForMonitor
*
@@ -752,31 +871,6 @@ xf86CheckModeForMonitor(DisplayModePtr mode, MonPtr monitor)
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)
@@ -788,7 +882,7 @@ xf86CheckModeForMonitor(DisplayModePtr mode, MonPtr monitor)
if (monitor->nHsync > 0) {
/* Check hsync against the allowed ranges */
- float hsync = ModeHSync(mode);
+ float hsync = xf86ModeHSync(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)))
@@ -801,7 +895,7 @@ xf86CheckModeForMonitor(DisplayModePtr mode, MonPtr monitor)
if (monitor->nVrefresh > 0) {
/* Check vrefresh against the allowed ranges */
- float vrefrsh = ModeVRefresh(mode);
+ float vrefrsh = xf86ModeVRefresh(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)))
@@ -831,11 +925,14 @@ xf86CheckModeForMonitor(DisplayModePtr mode, MonPtr monitor)
((mode->HSyncEnd - mode->HDisplay) == 80) &&
((mode->HSyncEnd - mode->HSyncStart) == 32) &&
((mode->VSyncStart - mode->VDisplay) == 3)) {
- if (!monitor->reducedblanking)
+ if (!monitor->reducedblanking && !(mode->type & M_T_DRIVER))
return MODE_NO_REDUCED;
}
}
+ if ((monitor->maxPixClock) && (mode->Clock > monitor->maxPixClock))
+ return MODE_CLOCK_HIGH;
+
return MODE_OK;
}
@@ -1029,8 +1126,8 @@ xf86InitialCheckModeForDriver(ScrnInfoPtr scrp, DisplayModePtr mode,
/ (mode->CrtcHTotal * mode->CrtcVTotal);
}
- mode->HSync = ModeHSync(mode);
- mode->VRefresh = ModeVRefresh(mode);
+ mode->HSync = xf86ModeHSync(mode);
+ mode->VRefresh = xf86ModeVRefresh(mode);
/* Assume it is OK */
return MODE_OK;
@@ -1186,6 +1283,58 @@ xf86CheckModeForDriver(ScrnInfoPtr scrp, DisplayModePtr mode, int flags)
return MODE_OK;
}
+static int
+inferVirtualSize(ScrnInfoPtr scrp, DisplayModePtr modes, int *vx, int *vy)
+{
+ float aspect = 0.0;
+ MonPtr mon = scrp->monitor;
+ int x = 0, y = 0;
+ DisplayModePtr mode;
+
+ if (!mon) return 0;
+
+ /*
+ * technically this triggers if _either_ is zero, which is not what EDID
+ * says, but if only one is zero this is best effort. also we don't
+ * know that all projectors are 4:3, but we certainly suspect it.
+ */
+ if (!mon->widthmm || !mon->heightmm)
+ aspect = 4.0/3.0;
+ else
+ aspect = (float)mon->widthmm / (float)mon->heightmm;
+
+ /* find the largest M_T_DRIVER mode with that aspect ratio */
+ for (mode = modes; mode; mode = mode->next) {
+ float mode_aspect, metaspect;
+ if (!(mode->type & (M_T_DRIVER|M_T_USERDEF)))
+ continue;
+ mode_aspect = (float)mode->HDisplay / (float)mode->VDisplay;
+ metaspect = aspect / mode_aspect;
+ /* 5% slop or so, since we only get size in centimeters */
+ if (fabs(1.0 - metaspect) < 0.05) {
+ if ((mode->HDisplay > x) && (mode->VDisplay > y)) {
+ x = mode->HDisplay;
+ y = mode->VDisplay;
+ }
+ }
+ }
+
+ if (!x || !y) {
+ xf86DrvMsg(scrp->scrnIndex, X_WARNING,
+ "Unable to estimate virtual size\n");
+ return 0;
+ }
+
+ *vx = x;
+ *vy = y;
+
+ xf86DrvMsg(scrp->scrnIndex, X_INFO,
+ "Estimated virtual size for aspect ratio %.4f is %dx%d\n",
+ aspect, *vx, *vy);
+
+ return 1;
+}
+
/*
* xf86ValidateModes
*
@@ -1253,11 +1402,11 @@ xf86ValidateModes(ScrnInfoPtr scrp, DisplayModePtr availModes,
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];
+ Bool inferred_virtual = FALSE;
#ifdef DEBUG
ErrorF("xf86ValidateModes(%p, %p, %p, %p,\n\t\t %p, %d, %d, %d, %d, %d, %d, %d, %d, 0x%x)\n",
@@ -1288,166 +1437,6 @@ xf86ValidateModes(ScrnInfoPtr scrp, DisplayModePtr availModes,
}
/*
- * 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.
*/
@@ -1464,8 +1453,8 @@ xf86ValidateModes(ScrnInfoPtr scrp, DisplayModePtr availModes,
scrp->monitor->hsync[i].hi = hsync[i].hi;
}
} else {
- scrp->monitor->hsync[0].lo = 28;
- scrp->monitor->hsync[0].hi = 33;
+ scrp->monitor->hsync[0].lo = 31.5;
+ scrp->monitor->hsync[0].hi = 37.9;
scrp->monitor->nHsync = 1;
}
type = "default ";
@@ -1493,8 +1482,8 @@ xf86ValidateModes(ScrnInfoPtr scrp, DisplayModePtr availModes,
scrp->monitor->vrefresh[i].hi = vrefresh[i].hi;
}
} else {
- scrp->monitor->vrefresh[0].lo = 43;
- scrp->monitor->vrefresh[0].hi = 72;
+ scrp->monitor->vrefresh[0].lo = 50;
+ scrp->monitor->vrefresh[0].hi = 70;
scrp->monitor->nVrefresh = 1;
}
type = "default ";
@@ -1610,6 +1599,13 @@ xf86ValidateModes(ScrnInfoPtr scrp, DisplayModePtr availModes,
virtX = virtualX;
virtY = virtualY;
scrp->virtualFrom = X_CONFIG;
+ } else if (!modeNames || !*modeNames) {
+ /* No virtual size given in the config, try to infer */
+ /* XXX this doesn't take m{in,ax}Pitch into account; oh well */
+ inferred_virtual = inferVirtualSize(scrp, availModes, &virtX, &virtY);
+ if (inferred_virtual)
+ linePitch = miScanLineWidth(virtX, virtY, minPitch, apertureSize,
+ BankFormat, pitchInc);
}
/* Print clock ranges and scaled clocks */
@@ -1626,7 +1622,7 @@ xf86ValidateModes(ScrnInfoPtr scrp, DisplayModePtr availModes,
for (p = availModes; p != NULL; p = p->next) {
status = xf86InitialCheckModeForDriver(scrp, p, clockRanges,
strategy, maxPitch,
- virtualX, virtualY);
+ virtX, virtY);
if (status == MODE_OK) {
status = xf86CheckModeForMonitor(p, scrp->monitor);
@@ -1646,18 +1642,7 @@ xf86ValidateModes(ScrnInfoPtr scrp, DisplayModePtr availModes,
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));
+ printModeRejectMessage(scrp->scrnIndex, p, status);
}
}
@@ -1680,7 +1665,7 @@ xf86ValidateModes(ScrnInfoPtr scrp, DisplayModePtr availModes,
"TargetRefresh", 0.0);
if (targetRefresh > 0.0) {
for (p = scrp->modePool; p != NULL; p = p->next) {
- if (ModeVRefresh(p) > targetRefresh * (1.0 - SYNC_TOLERANCE))
+ if (xf86ModeVRefresh(p) > targetRefresh * (1.0 - SYNC_TOLERANCE))
break;
}
if (!p)
@@ -1760,7 +1745,8 @@ xf86ValidateModes(ScrnInfoPtr scrp, DisplayModePtr availModes,
* horizontal timing parameters that CRTs may have
* problems with.
*/
- if ((q->type & M_T_DEFAULT) &&
+ if (!scrp->monitor->reducedblanking &&
+ (q->type & M_T_DEFAULT) &&
((double)q->HTotal / (double)q->HDisplay) < 1.15)
continue;
@@ -1768,7 +1754,7 @@ xf86ValidateModes(ScrnInfoPtr scrp, DisplayModePtr availModes,
* If there is a target refresh rate, skip modes that
* don't match up.
*/
- if (ModeVRefresh(q) <
+ if (xf86ModeVRefresh(q) <
(1.0 - SYNC_TOLERANCE) * targetRefresh)
continue;
@@ -1797,39 +1783,14 @@ xf86ValidateModes(ScrnInfoPtr scrp, DisplayModePtr availModes,
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));
- }
+ if (repeat && ((status = p->status) != MODE_OK))
+ printModeRejectMessage(scrp->scrnIndex, p, status);
saveType = p->type;
status = xf86LookupMode(scrp, p, clockRanges, strategy);
- if (repeat && status == MODE_NOMODE) {
+ 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_OK)
+ printModeRejectMessage(scrp->scrnIndex, p, status);
if (status == MODE_ERROR) {
ErrorF("xf86ValidateModes: "
"unexpected result from xf86LookupMode()\n");
@@ -1938,6 +1899,30 @@ xf86ValidateModes(ScrnInfoPtr scrp, DisplayModePtr availModes,
#undef _VIRTUALX
+ /*
+ * If we estimated the virtual size above, we may have filtered away all
+ * the modes that maximally match that size; scan again to find out and
+ * fix up if so.
+ */
+ if (inferred_virtual) {
+ int vx = 0, vy = 0;
+ for (p = scrp->modes; p; p = p->next) {
+ if (p->HDisplay > vx && p->VDisplay > vy) {
+ vx = p->HDisplay;
+ vy = p->VDisplay;
+ }
+ }
+ if (vx < virtX || vy < virtY) {
+ xf86DrvMsg(scrp->scrnIndex, X_WARNING,
+ "Shrinking virtual size estimate from %dx%d to %dx%d\n",
+ virtX, virtY, vx, vy);
+ virtX = vx;
+ virtY = vy;
+ linePitch = miScanLineWidth(vx, vy, linePitch, apertureSize,
+ BankFormat, pitchInc);
+ }
+ }
+
/* Update the ScrnInfoRec parameters */
scrp->virtualX = virtX;
@@ -2024,20 +2009,6 @@ xf86PruneDriverModes(ScrnInfoPtr scrp)
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;
@@ -2103,8 +2074,8 @@ add(char **p, char *new)
strcat(*p, new);
}
-static void
-PrintModeline(int scrnIndex,DisplayModePtr mode)
+_X_EXPORT void
+xf86PrintModeline(int scrnIndex,DisplayModePtr mode)
{
char tmp[256];
char *flags = xnfcalloc(1, 1);
@@ -2159,8 +2130,8 @@ xf86PrintModes(ScrnInfoPtr scrp)
do {
desc = desc2 = "";
- hsync = ModeHSync(p);
- refresh = ModeVRefresh(p);
+ hsync = xf86ModeHSync(p);
+ refresh = xf86ModeVRefresh(p);
if (p->Flags & V_INTERLACE) {
desc = " (I)";
}
@@ -2174,6 +2145,8 @@ xf86PrintModes(ScrnInfoPtr scrp)
prefix = "Built-in mode";
else if (p->type & M_T_DEFAULT)
prefix = "Default mode";
+ else if (p->type & M_T_DRIVER)
+ prefix = "Driver mode";
else
prefix = "Mode";
if (p->type & M_T_USERDEF)
@@ -2201,7 +2174,31 @@ xf86PrintModes(ScrnInfoPtr scrp)
p->SynthClock / 1000.0, hsync, refresh, desc, desc2);
}
if (hsync != 0 && refresh != 0)
- PrintModeline(scrp->scrnIndex,p);
+ xf86PrintModeline(scrp->scrnIndex,p);
p = p->next;
} while (p != NULL && p != scrp->modes);
}
+
+/**
+ * Adds the new mode into the mode list, and returns the new list
+ *
+ * \param modes doubly-linked mode list.
+ */
+_X_EXPORT DisplayModePtr
+xf86ModesAdd(DisplayModePtr modes, DisplayModePtr new)
+{
+ if (modes == NULL)
+ return new;
+
+ if (new) {
+ DisplayModePtr mode = modes;
+
+ while (mode->next)
+ mode = mode->next;
+
+ mode->next = new;
+ new->prev = mode;
+ }
+
+ return modes;
+}
diff --git a/hw/xfree86/common/xf86Module.h b/hw/xfree86/common/xf86Module.h
index a32569980..3c3247e40 100644
--- a/hw/xfree86/common/xf86Module.h
+++ b/hw/xfree86/common/xf86Module.h
@@ -1,4 +1,3 @@
-/* $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.
@@ -85,8 +84,8 @@ typedef enum {
* mask is 0xFFFF0000.
*/
#define ABI_ANSIC_VERSION SET_ABI_VERSION(0, 3)
-#define ABI_VIDEODRV_VERSION SET_ABI_VERSION(1, 0)
-#define ABI_XINPUT_VERSION SET_ABI_VERSION(0, 6)
+#define ABI_VIDEODRV_VERSION SET_ABI_VERSION(1, 1)
+#define ABI_XINPUT_VERSION SET_ABI_VERSION(1, 0)
#define ABI_EXTENSION_VERSION SET_ABI_VERSION(0, 3)
#define ABI_FONT_VERSION SET_ABI_VERSION(0, 5)
diff --git a/hw/xfree86/common/xf86Opt.h b/hw/xfree86/common/xf86Opt.h
index 718732353..dbb98da03 100644
--- a/hw/xfree86/common/xf86Opt.h
+++ b/hw/xfree86/common/xf86Opt.h
@@ -1,4 +1,3 @@
-/* $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.
diff --git a/hw/xfree86/common/xf86Option.c b/hw/xfree86/common/xf86Option.c
index d3e38b17d..7afb63a4d 100644
--- a/hw/xfree86/common/xf86Option.c
+++ b/hw/xfree86/common/xf86Option.c
@@ -1,4 +1,3 @@
-/* $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.
*
@@ -143,14 +142,14 @@ xf86CollectInputOptions(InputInfoPtr pInfo, const char **defaultOpts,
if (defaultOpts) {
pInfo->options = xf86OptionListCreate(defaultOpts, -1, 0);
}
- if (pInfo->conf_idev->commonOptions) {
+ if (pInfo->conf_idev && 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) {
+ if (pInfo->conf_idev && pInfo->conf_idev->extraOptions) {
tmp = xf86optionListDup(pInfo->conf_idev->extraOptions);
if (pInfo->options)
pInfo->options = xf86optionListMerge(pInfo->options, tmp);
diff --git a/hw/xfree86/common/xf86PM.c b/hw/xfree86/common/xf86PM.c
index 0262be3df..ac8896879 100644
--- a/hw/xfree86/common/xf86PM.c
+++ b/hw/xfree86/common/xf86PM.c
@@ -1,4 +1,3 @@
-/* $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.
*
diff --git a/hw/xfree86/common/xf86PciInfo.h b/hw/xfree86/common/xf86PciInfo.h
index c18d512a9..0630cfa82 100644
--- a/hw/xfree86/common/xf86PciInfo.h
+++ b/hw/xfree86/common/xf86PciInfo.h
@@ -1,4 +1,3 @@
-/* $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.
@@ -93,6 +92,7 @@
#define PCI_VENDOR_TRITECH 0x1292
#define PCI_VENDOR_NVIDIA_SGS 0x12D2
#define PCI_VENDOR_VMWARE 0x15AD
+#define PCI_VENDOR_AST 0x1A03
#define PCI_VENDOR_3DLABS 0x3D3D
#define PCI_VENDOR_AVANCE_2 0x4005
#define PCI_VENDOR_HERCULES 0x4843
@@ -359,6 +359,9 @@
#define PCI_CHIP_RS350_7834 0x7834
#define PCI_CHIP_RS350_7835 0x7835
+/* ASPEED Technology (AST) */
+#define PCI_CHIP_AST2000 0x2000
+
/* Avance Logic */
#define PCI_CHIP_ALG2064 0x2064
#define PCI_CHIP_ALG2301 0x2301
diff --git a/hw/xfree86/common/xf86Priv.h b/hw/xfree86/common/xf86Priv.h
index 0794de777..9279dbd7b 100644
--- a/hw/xfree86/common/xf86Priv.h
+++ b/hw/xfree86/common/xf86Priv.h
@@ -1,4 +1,3 @@
-/* $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.
@@ -95,13 +94,9 @@ 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;
@@ -198,20 +193,6 @@ 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
@@ -222,6 +203,9 @@ void xf86UnlockServer(void);
void xf86InitXkb(void);
+/* xf86Xinput.c */
+extern xEvent *xf86Events;
+
#endif /* _NO_XF86_PROTOTYPES */
diff --git a/hw/xfree86/common/xf86Privstr.h b/hw/xfree86/common/xf86Privstr.h
index a35de2065..659e566e0 100644
--- a/hw/xfree86/common/xf86Privstr.h
+++ b/hw/xfree86/common/xf86Privstr.h
@@ -1,4 +1,3 @@
-/* $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.
@@ -68,38 +67,11 @@ typedef enum {
*/
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;
@@ -126,25 +98,6 @@ typedef struct {
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 */
@@ -167,6 +120,7 @@ typedef struct {
MessageType randRFrom;
Bool aiglx;
MessageType aiglxFrom;
+ Bool ignoreABI;
struct {
Bool disabled; /* enable/disable deactivating
* grabs or closing the
@@ -179,6 +133,9 @@ typedef struct {
Bool allowClosedown;
ServerGrabInfoRec server;
} grabInfo;
+
+ Bool allowEmptyInput; /* Allow the server to start with no input
+ * devices. */
} xf86InfoRec, *xf86InfoPtr;
#ifdef DPMSExtension
diff --git a/hw/xfree86/common/xf86RandR.c b/hw/xfree86/common/xf86RandR.c
index b06bd7728..288d72193 100644
--- a/hw/xfree86/common/xf86RandR.c
+++ b/hw/xfree86/common/xf86RandR.c
@@ -1,6 +1,4 @@
-/* $XdotOrg: xserver/xorg/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.
*
@@ -156,6 +154,8 @@ xf86RandRSetMode (ScreenPtr pScreen,
int oldHeight = pScreen->height;
int oldmmWidth = pScreen->mmWidth;
int oldmmHeight = pScreen->mmHeight;
+ int oldVirtualX = scrp->virtualX;
+ int oldVirtualY = scrp->virtualY;
WindowPtr pRoot = WindowTable[pScreen->myNum];
Bool ret = TRUE;
@@ -188,10 +188,12 @@ xf86RandRSetMode (ScreenPtr pScreen,
}
if (!xf86SwitchMode (pScreen, mode))
{
- scrp->virtualX = pScreen->width = oldWidth;
- scrp->virtualY = pScreen->height = oldHeight;
+ pScreen->width = oldWidth;
+ pScreen->height = oldHeight;
pScreen->mmWidth = oldmmWidth;
pScreen->mmHeight = oldmmHeight;
+ scrp->virtualX = oldVirtualX;
+ scrp->virtualY = oldVirtualY;
ret = FALSE;
}
/*
@@ -270,8 +272,8 @@ xf86RandRSetConfig (ScreenPtr pScreen,
xorgRRRotation RRRotation;
RRRotation.RRConfig.rotation = oldRotation;
RRRotation.RRConfig.rate = xf86RandRModeRefresh (scrp->currentMode);
- RRRotation.RRConfig.width = pScreen->width;
- RRRotation.RRConfig.height = pScreen->height;
+ RRRotation.RRConfig.width = scrp->virtualX;
+ RRRotation.RRConfig.height = scrp->virtualY;
(*scrp->DriverFunc)(scrp, RR_SET_CONFIG, &RRRotation);
}
diff --git a/hw/xfree86/common/xf86Resources.h b/hw/xfree86/common/xf86Resources.h
index ce2c62bb3..97bf817fe 100644
--- a/hw/xfree86/common/xf86Resources.h
+++ b/hw/xfree86/common/xf86Resources.h
@@ -1,4 +1,3 @@
-/* $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.
diff --git a/hw/xfree86/common/xf86Version.h b/hw/xfree86/common/xf86Version.h
index 45746bc90..f7ac89b1b 100644
--- a/hw/xfree86/common/xf86Version.h
+++ b/hw/xfree86/common/xf86Version.h
@@ -1,5 +1,3 @@
-/* $XdotOrg: xc/programs/Xserver/hw/xfree86/xf86Version.h,v 1.2 2004/04/23 19:20:02 eich Exp $ */
-/* $XFree86: xc/programs/Xserver/hw/xfree86/xf86Version.h,v 3.566 2003/12/19 04:52:11 dawes Exp $ */
/*
* Copyright (c) 1994-2003 by The XFree86 Project, Inc.
@@ -59,4 +57,3 @@
#endif
/* $XConsortium: xf86Version.h /main/78 1996/10/28 05:42:10 kaleb $ */
-/* $XdotOrg: xc/programs/Xserver/hw/xfree86/xf86Version.h,v 1.2 2004/04/23 19:20:02 eich Exp $ */
diff --git a/hw/xfree86/common/xf86Versions.c b/hw/xfree86/common/xf86Versions.c
index 881de1372..97a35590e 100644
--- a/hw/xfree86/common/xf86Versions.c
+++ b/hw/xfree86/common/xf86Versions.c
@@ -1,4 +1,3 @@
-/* $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.
*
@@ -32,7 +31,6 @@
#include "xf86.h"
#include "xf86OSmouse.h"
-#include "xf86OSKbd.h"
static CARD32 registeredVersions[NUM_BUILTIN_IFS];
@@ -52,8 +50,6 @@ xf86GetBuiltinInterfaceVersion(BuiltinInterface iface, int flags)
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);
diff --git a/hw/xfree86/common/xf86VidMode.c b/hw/xfree86/common/xf86VidMode.c
index 272665ba3..fb9151346 100644
--- a/hw/xfree86/common/xf86VidMode.c
+++ b/hw/xfree86/common/xf86VidMode.c
@@ -1,4 +1,3 @@
-/* $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.
*
diff --git a/hw/xfree86/common/xf86XKB.c b/hw/xfree86/common/xf86XKB.c
index 68be17c3a..399eb02d9 100644
--- a/hw/xfree86/common/xf86XKB.c
+++ b/hw/xfree86/common/xf86XKB.c
@@ -51,7 +51,6 @@ THE USE OR PERFORMANCE OF THIS SOFTWARE.
* 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>
diff --git a/hw/xfree86/common/xf86Xinput.c b/hw/xfree86/common/xf86Xinput.c
index a931a5d60..16e330d43 100644
--- a/hw/xfree86/common/xf86Xinput.c
+++ b/hw/xfree86/common/xf86Xinput.c
@@ -1,4 +1,3 @@
-/* $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>
*
@@ -39,7 +38,6 @@
* 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)
@@ -48,7 +46,6 @@
* authorization from the copyright holder(s) and author(s).
*/
/* $XConsortium: xf86Xinput.c /main/14 1996/10/27 11:05:25 kaleb $ */
-/* $XdotOrg: xserver/xorg/hw/xfree86/common/xf86Xinput.c,v 1.8 2006/03/24 20:50:13 fredrik Exp $ */
#ifdef HAVE_XORG_CONFIG_H
#include <xorg-config.h>
@@ -65,6 +62,7 @@
#include "xf86Xinput.h"
#ifdef XINPUT
#include "XIstubs.h"
+#include "xf86Optrec.h"
#endif
#include "mipointer.h"
#include "xf86InPriv.h"
@@ -75,10 +73,6 @@
#include "dpmsproc.h"
#endif
-#ifdef XFreeXDGA
-#include "dgaproc.h"
-#endif
-
#include "exevents.h" /* AddInputDevice */
#include "exglobals.h"
@@ -94,131 +88,19 @@
#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))
+#include "mi.h"
-/***********************************************************************
- *
- * 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.
- *
- ***********************************************************************
- */
-_X_EXPORT 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));
-}
+xEvent *xf86Events = NULL;
static Bool
xf86SendDragEvents(DeviceIntPtr device)
{
LocalDevicePtr local = (LocalDevicePtr) device->public.devicePrivate;
- if (inputInfo.pointer->button->buttonsDown > 0)
- return (local->flags & XI86_SEND_DRAG_EVENTS);
+ if (device->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));
-}
-
-_X_EXPORT 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;
+ return (TRUE);
}
/***********************************************************************
@@ -231,60 +113,20 @@ xf86CheckButton(int button,
*/
_X_EXPORT void
xf86ProcessCommonOptions(LocalDevicePtr local,
- pointer list)
+ 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, "AlwaysCore", 0) ||
+ xf86SetBoolOption(list, "SendCoreEvents", 0) ||
+ xf86SetBoolOption(list, "CorePointer", 0) ||
+ xf86SetBoolOption(list, "CoreKeyboard", 0)) {
+ local->flags |= XI86_ALWAYS_CORE;
+ xf86Msg(X_CONFIG, "%s: always reports core events\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");
+ local->flags |= XI86_SEND_DRAG_EVENTS;
} else {
- local->always_core_feedback = dev->intfeed;
- dev->intfeed->ctrl.integer_displayed = (local->flags & XI86_ALWAYS_CORE) ? 1 : 0;
+ xf86Msg(X_CONFIG, "%s: doesn't report drag events\n", local->name);
}
}
@@ -302,42 +144,24 @@ 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
+ dev = AddInputDevice(local->device_control, TRUE);
+
+ 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;
+
+ dev->coreEvents = local->flags & XI86_ALWAYS_CORE;
+ RegisterOtherDevice(dev);
- if (serverGeneration == 1)
- xf86Msg(X_INFO, "XINPUT: Adding extended input device \"%s\" (type: %s)\n",
- local->name, local->type_name);
+ if (serverGeneration == 1)
+ xf86Msg(X_INFO, "XINPUT: Adding extended input device \"%s\" (type: %s)\n",
+ local->name, local->type_name);
}
}
@@ -368,190 +192,32 @@ xf86ActivateDevice(LocalDevicePtr local)
void
OpenInputDevice(DeviceIntPtr dev,
- ClientPtr client,
- int *status)
+ 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;
- }
- }
- }
-}
-
+ if (!dev->inited)
+ ActivateDevice(dev);
-/***********************************************************************
- *
- * 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.
- *
- ***********************************************************************
- */
+ if (!dev->public.on) {
+ if (EnableDevice(dev)) {
+ dev->startup = FALSE;
+ }
+ else {
+ ErrorF("couldn't enable device %s\n", dev->name);
+ *status = BadDevice;
+ return;
+ }
+ }
-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;
+ *status = 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)
+CloseInputDevice(DeviceIntPtr dev,
+ 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
@@ -593,9 +259,15 @@ SetDeviceMode (ClientPtr client, DeviceIntPtr dev, int mode)
int
SetDeviceValuators (ClientPtr client, DeviceIntPtr dev, int *valuators,
- int first_valuator, int num_valuators)
+ int first_valuator, int num_valuators)
{
- return BadMatch;
+ LocalDevicePtr local = (LocalDevicePtr) dev->public.devicePrivate;
+
+ if (local->set_device_valuators)
+ return (*local->set_device_valuators)(local, valuators, first_valuator,
+ num_valuators);
+
+ return BadMatch;
}
@@ -614,251 +286,100 @@ ChangeDeviceControl (ClientPtr client, DeviceIntPtr dev, xDeviceCtl *control)
LocalDevicePtr local = (LocalDevicePtr)dev->public.devicePrivate;
if (!local->control_proc) {
- return (BadMatch);
+ switch (control->control) {
+ case DEVICE_CORE:
+ case DEVICE_RESOLUTION:
+ case DEVICE_ABS_CALIB:
+ case DEVICE_ABS_AREA:
+ return Success;
+ default:
+ 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.
- */
-
-_X_EXPORT 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 ()
+AddOtherInputDevices()
{
- 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
- else if (DPMSPowerLevel != DPMSModeOn)
- SetScreenSaverTimer();
-
- 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;
- }
- }
- }
-}
+int
+NewInputDeviceRequest (InputOption *options)
+{
+ IDevRec *idev = NULL;
+ InputDriverPtr drv = NULL;
+ InputInfoPtr pInfo = NULL;
+ InputOption *option = NULL;
+ DeviceIntPtr dev = NULL;
+
+ idev = xcalloc(sizeof(*idev), 1);
+ if (!idev)
+ return BadAlloc;
+
+ for (option = options; option; option = option->next) {
+ if (strcmp(option->key, "driver") == 0) {
+ if (!xf86LoadOneModule(option->value, NULL))
+ return BadName;
+ drv = xf86LookupInputDriver(option->value);
+ if (!drv) {
+ xf86Msg(X_ERROR, "No input driver matching `%s'\n",
+ option->value);
+ return BadName;
+ }
+ idev->driver = xstrdup(option->value);
+ if (!idev->driver) {
+ xfree(idev);
+ return BadAlloc;
+ }
+ }
+ if (strcmp(option->key, "name") == 0 ||
+ strcmp(option->key, "identifier") == 0) {
+ idev->identifier = xstrdup(option->value);
+ if (!idev->identifier) {
+ xfree(idev);
+ return BadAlloc;
+ }
+ }
+ }
+
+ if (!drv->PreInit) {
+ xf86Msg(X_ERROR,
+ "Input driver `%s' has no PreInit function (ignoring)\n",
+ drv->driverName);
+ return BadImplementation;
+ }
+
+ idev->commonOptions = NULL;
+ for (option = options; option; option = option->next)
+ idev->commonOptions = xf86addNewOption(idev->commonOptions,
+ option->key, option->value);
+ idev->extraOptions = NULL;
+
+ pInfo = drv->PreInit(drv, idev, 0);
+
+ if (!pInfo) {
+ xf86Msg(X_ERROR, "PreInit returned NULL for \"%s\"\n", idev->identifier);
+ return BadMatch;
+ }
+ else if (!(pInfo->flags & XI86_CONFIGURED)) {
+ xf86Msg(X_ERROR, "PreInit failed for input device \"%s\"\n",
+ idev->identifier);
+ xf86DeleteInput(pInfo, 0);
+ return BadMatch;
+ }
+
+ xf86ActivateDevice(pInfo);
+
+ dev = pInfo->dev;
+ dev->inited = ((*dev->deviceProc)(dev, DEVICE_INIT) == Success);
+ if (dev->inited && dev->startup)
+ EnableDevice(dev);
-void
-xf86eqSwitchScreen(ScreenPtr pScreen,
- Bool fromDIX)
-{
- xf86EventQueue.pEnqueueScreen = pScreen;
-
- if (fromDIX)
- xf86EventQueue.pDequeueScreen = pScreen;
+ return Success;
}
/*
@@ -867,479 +388,162 @@ xf86eqSwitchScreen(ScreenPtr pScreen,
_X_EXPORT 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();
+ int is_absolute,
+ int first_valuator,
+ int num_valuators,
+ ...)
+{
+ va_list var;
+ int i = 0, nevents = 0;
+ Bool drag = xf86SendDragEvents(device);
+ int *valuators = NULL;
+ int flags = 0;
+ xEvent *xE = NULL;
+
+ if (is_absolute)
+ flags = POINTER_ABSOLUTE;
+ else
+ flags = POINTER_RELATIVE | POINTER_ACCELERATE;
- 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;
- }
+ valuators = xcalloc(sizeof(int), num_valuators);
- 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;
- }
- }
+ for (i = 0; i < num_valuators; i++)
+ valuators[i] = va_arg(var, int);
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;
+
+ if (!xf86Events)
+ xf86Events = (xEvent *)xcalloc(sizeof(xEvent), GetMaximumEventsNum());
+ if (!xf86Events)
+ FatalError("Couldn't allocate event store\n");
+
+ nevents = GetPointerEvents(xf86Events, device, MotionNotify, 0,
+ flags, first_valuator, num_valuators,
+ valuators);
+
+ for (i = 0; i < nevents; i++) {
+ xE = xf86Events + i;
+ /* Don't post core motion events for devices not registered to send
+ * drag events. */
+ if (xE->u.u.type != MotionNotify || drag) {
+ mieqEnqueue(device, xf86Events + i);
+ }
}
- 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"));
+
+ xfree(valuators);
}
_X_EXPORT void
xf86PostProximityEvent(DeviceIntPtr device,
- int is_in,
- int first_valuator,
- int num_valuators,
- ...)
+ 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;
- }
+ va_list var;
+ int i, nevents, *valuators = NULL;
- 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;
+ valuators = xcalloc(sizeof(int), num_valuators);
- 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();
+ va_start(var, num_valuators);
+ for (i = 0; i < num_valuators; i++)
+ valuators[i] = va_arg(var, int);
+ va_end(var);
- 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"));
-
+ if (!xf86Events)
+ xf86Events = (xEvent *)xcalloc(sizeof(xEvent), GetMaximumEventsNum());
+ if (!xf86Events)
+ FatalError("Couldn't allocate event store\n");
+
+ nevents = GetProximityEvents(xf86Events, device,
+ is_in ? ProximityIn : ProximityOut,
+ first_valuator, num_valuators, valuators);
+ for (i = 0; i < nevents; i++)
+ mieqEnqueue(device, xf86Events + i);
+
+ xfree(valuators);
}
_X_EXPORT 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);
+ int is_absolute,
+ int button,
+ int is_down,
+ int first_valuator,
+ int num_valuators,
+ ...)
+{
+ va_list var;
+ int *valuators = NULL;
+ int i = 0, nevents = 0;
- 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;
- }
+ valuators = xcalloc(sizeof(int), num_valuators);
- 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);
- }
- }
+ va_start(var, num_valuators);
+ for (i = 0; i < num_valuators; i++)
+ valuators[i] = va_arg(var, int);
+ va_end(var);
- /* 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"));
+ if (!xf86Events)
+ xf86Events = (xEvent *)xcalloc(sizeof(xEvent), GetMaximumEventsNum());
+ if (!xf86Events)
+ FatalError("Couldn't allocate event store\n");
+
+ nevents = GetPointerEvents(xf86Events, device,
+ is_down ? ButtonPress : ButtonRelease, button,
+ is_absolute ? POINTER_ABSOLUTE :
+ POINTER_RELATIVE,
+ first_valuator, num_valuators, valuators);
+
+ for (i = 0; i < nevents; i++)
+ mieqEnqueue(device, xf86Events + i);
+
+ xfree(valuators);
}
_X_EXPORT 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;
- }
+ unsigned int key_code,
+ int is_down,
+ int is_absolute,
+ int first_valuator,
+ int num_valuators,
+ ...)
+{
+ va_list var;
+ int i = 0, nevents = 0, *valuators = NULL;
+
+ /* instil confidence in the user */
+ DebugF("this function has never been tested properly. if things go quite "
+ "badly south after this message, then xf86PostKeyEvent is "
+ "broken.\n");
+
+ if (!xf86Events)
+ xf86Events = (xEvent *)xcalloc(sizeof(xEvent), GetMaximumEventsNum());
+ if (!xf86Events)
+ FatalError("Couldn't allocate event store\n");
+
+ if (is_absolute) {
+ valuators = xcalloc(sizeof(int), num_valuators);
+ va_start(var, num_valuators);
+ for (i = 0; i < num_valuators; i++)
+ valuators[i] = va_arg(var, int);
+ va_end(var);
+
+ nevents = GetKeyboardValuatorEvents(xf86Events, device,
+ is_down ? KeyPress : KeyRelease,
+ key_code, first_valuator,
+ num_valuators, valuators);
+ xfree(valuators);
}
- va_end(var);
+ else {
+ nevents = GetKeyboardEvents(xf86Events, device,
+ is_down ? KeyPress : KeyRelease,
+ key_code);
+ }
+
+ for (i = 0; i < nevents; i++)
+ mieqEnqueue(device, xf86Events + i);
}
_X_EXPORT void
@@ -1347,72 +551,18 @@ 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();
+ int nevents = 0, i = 0;
-#ifdef XFreeXDGA
- /* if(!DGAStealKeyEvent(xf86EventQueue.pEnqueueScreen->myNum, xE)) */
-#endif
- ENQUEUE(xE);
-}
-
-/*
- * Motion history management.
- */
+ if (!xf86Events)
+ xf86Events = (xEvent *)xcalloc(sizeof(xEvent), GetMaximumEventsNum());
+ if (!xf86Events)
+ FatalError("Couldn't allocate event store\n");
-_X_EXPORT 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;
-}
+ nevents = GetKeyboardEvents(xf86Events, device,
+ is_down ? KeyPress : KeyRelease, key_code);
-_X_EXPORT 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;
+ for (i = 0; i < nevents; i++)
+ mieqEnqueue(device, xf86Events + i);
}
_X_EXPORT LocalDevicePtr
@@ -1436,10 +586,10 @@ xf86FirstLocalDevice()
_X_EXPORT int
xf86ScaleAxis(int Cx,
- int Sxhigh,
- int Sxlow,
- int Rxhigh,
- int Rxlow )
+ int Sxhigh,
+ int Sxlow,
+ int Rxhigh,
+ int Rxlow )
{
int X;
int dSx = Sxhigh - Sxlow;
@@ -1474,9 +624,9 @@ xf86XInputSetScreen(LocalDevicePtr local,
int x,
int y)
{
- if ((xf86IsCorePointer(local->dev) || xf86ShareCorePointer(local->dev)) &&
- (miPointerCurrentScreen() != screenInfo.screens[screen_number])) {
- miPointerSetNewScreen (screen_number, x, y);
+ if (miPointerGetScreen(local->dev) !=
+ screenInfo.screens[screen_number]) {
+ miPointerSetScreen(local->dev, screen_number, x, y);
}
}
@@ -1485,17 +635,11 @@ _X_EXPORT 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? */
- }
+ if (!dev || !dev->valuator)
+ return;
+
InitValuatorAxisStruct(dev, axnum, minval, maxval, resolution, min_res,
max_res);
-#endif
}
/*
@@ -1505,12 +649,14 @@ xf86InitValuatorAxisStruct(DeviceIntPtr dev, int axnum, int minval, int maxval,
_X_EXPORT void
xf86InitValuatorDefaults(DeviceIntPtr dev, int axnum)
{
-#ifdef XINPUT
- if (axnum == 0)
+ if (axnum == 0) {
dev->valuator->axisVal[0] = screenInfo.screens[0]->width / 2;
- else if (axnum == 1)
+ dev->valuator->lastx = dev->valuator->axisVal[0];
+ }
+ else if (axnum == 1) {
dev->valuator->axisVal[1] = screenInfo.screens[0]->height / 2;
-#endif
+ dev->valuator->lasty = dev->valuator->axisVal[1];
+ }
}
/* end of xf86Xinput.c */
diff --git a/hw/xfree86/common/xf86Xinput.h b/hw/xfree86/common/xf86Xinput.h
index 9fb30413a..fe65643ce 100644
--- a/hw/xfree86/common/xf86Xinput.h
+++ b/hw/xfree86/common/xf86Xinput.h
@@ -49,7 +49,6 @@
* 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
@@ -87,15 +86,6 @@
#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. */
@@ -119,7 +109,7 @@ 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,
@@ -134,21 +124,20 @@ typedef struct _LocalDeviceRec {
Bool (*reverse_conversion_proc)(
struct _LocalDeviceRec *local,
int x, int y, int *valuators);
-
+ int (*set_device_valuators)
+ (struct _LocalDeviceRec *local,
+ int *valuators, int first_valuator,
+ int num_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;
@@ -167,16 +156,7 @@ typedef struct _DeviceAssocRec
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,
@@ -189,10 +169,6 @@ void xf86PostKeyEvent(DeviceIntPtr device, unsigned int key_code, int is_down,
...);
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);
void xf86ActivateDevice(LocalDevicePtr local);
Bool xf86CheckButton(int button, int down);
@@ -212,10 +188,16 @@ void xf86RemoveEnabledDevice(InputInfoPtr pInfo);
void xf86AddInputDriver(InputDriverPtr driver, pointer module, int flags);
void xf86DeleteInputDriver(int drvIndex);
InputInfoPtr xf86AllocateInput(InputDriverPtr drv, int flags);
+InputDriverPtr xf86LookupInputDriver(const char *name);
+InputInfoPtr xf86LookupInput(const char *name);
void xf86DeleteInput(InputInfoPtr pInp, int flags);
/* xf86Option.c */
void xf86CollectInputOptions(InputInfoPtr pInfo, const char **defaultOpts,
pointer extraOpts);
+/* Legacy hatred */
+#define SendCoreEvents 59
+#define DontSendCoreEvents 60
+
#endif /* _xf86Xinput_h */
diff --git a/hw/xfree86/common/xf86cmap.c b/hw/xfree86/common/xf86cmap.c
index 1ee241d0b..ea6a26dcd 100644
--- a/hw/xfree86/common/xf86cmap.c
+++ b/hw/xfree86/common/xf86cmap.c
@@ -1,5 +1,3 @@
-/* $XdotOrg: xserver/xorg/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.
*
diff --git a/hw/xfree86/common/xf86cmap.h b/hw/xfree86/common/xf86cmap.h
index 4291b971a..b98bd3bfd 100644
--- a/hw/xfree86/common/xf86cmap.h
+++ b/hw/xfree86/common/xf86cmap.h
@@ -1,4 +1,3 @@
-/* $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.
diff --git a/hw/xfree86/common/xf86cvt.c b/hw/xfree86/common/xf86cvt.c
new file mode 100644
index 000000000..dfb6e71e4
--- /dev/null
+++ b/hw/xfree86/common/xf86cvt.c
@@ -0,0 +1,292 @@
+/*
+ * Copyright 2005-2006 Luc Verhaegen.
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a
+ * copy of this software and associated documentation files (the "Software"),
+ * to deal in the Software without restriction, including without limitation
+ * the rights to use, copy, modify, merge, publish, distribute, sublicense,
+ * and/or sell copies of the Software, and to permit persons to whom the
+ * Software is furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in
+ * all copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, 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.
+ */
+
+/*
+ * The reason for having this function in a file of its own is
+ * so that ../utils/cvt/cvt can link to it, and that xf86CVTMode
+ * code is shared directly.
+ */
+
+#include "xf86.h"
+
+/*
+ * Generate a CVT standard mode from HDisplay, VDisplay and VRefresh.
+ *
+ * These calculations are stolen from the CVT calculation spreadsheet written
+ * by Graham Loveridge. He seems to be claiming no copyright and there seems to
+ * be no license attached to this. He apparently just wants to see his name
+ * mentioned.
+ *
+ * This file can be found at http://www.vesa.org/Public/CVT/CVTd6r1.xls
+ *
+ * Comments and structure corresponds to the comments and structure of the xls.
+ * This should ease importing of future changes to the standard (not very
+ * likely though).
+ *
+ * About margins; i'm sure that they are to be the bit between HDisplay and
+ * HBlankStart, HBlankEnd and HTotal, VDisplay and VBlankStart, VBlankEnd and
+ * VTotal, where the overscan colour is shown. FB seems to call _all_ blanking
+ * outside sync "margin" for some reason. Since we prefer seeing proper
+ * blanking instead of the overscan colour, and since the Crtc* values will
+ * probably get altered after us, we will disable margins altogether. With
+ * these calculations, Margins will plainly expand H/VDisplay, and we don't
+ * want that. -- libv
+ *
+ */
+_X_EXPORT DisplayModePtr
+xf86CVTMode(int HDisplay, int VDisplay, float VRefresh, Bool Reduced,
+ Bool Interlaced)
+{
+ DisplayModeRec *Mode = xnfalloc(sizeof(DisplayModeRec));
+
+ /* 1) top/bottom margin size (% of height) - default: 1.8 */
+#define CVT_MARGIN_PERCENTAGE 1.8
+
+ /* 2) character cell horizontal granularity (pixels) - default 8 */
+#define CVT_H_GRANULARITY 8
+
+ /* 4) Minimum vertical porch (lines) - default 3 */
+#define CVT_MIN_V_PORCH 3
+
+ /* 4) Minimum number of vertical back porch lines - default 6 */
+#define CVT_MIN_V_BPORCH 6
+
+ /* Pixel Clock step (kHz) */
+#define CVT_CLOCK_STEP 250
+
+ Bool Margins = FALSE;
+ float VFieldRate, HPeriod;
+ int HDisplayRnd, HMargin;
+ int VDisplayRnd, VMargin, VSync;
+ float Interlace; /* Please rename this */
+
+ memset(Mode, 0, sizeof(DisplayModeRec));
+
+ /* CVT default is 60.0Hz */
+ if (!VRefresh)
+ VRefresh = 60.0;
+
+ /* 1. Required field rate */
+ if (Interlaced)
+ VFieldRate = VRefresh * 2;
+ else
+ VFieldRate = VRefresh;
+
+ /* 2. Horizontal pixels */
+ HDisplayRnd = HDisplay - (HDisplay % CVT_H_GRANULARITY);
+
+ /* 3. Determine left and right borders */
+ if (Margins) {
+ /* right margin is actually exactly the same as left */
+ HMargin = (((float) HDisplayRnd) * CVT_MARGIN_PERCENTAGE / 100.0);
+ HMargin -= HMargin % CVT_H_GRANULARITY;
+ } else
+ HMargin = 0;
+
+ /* 4. Find total active pixels */
+ Mode->HDisplay = HDisplayRnd + 2*HMargin;
+
+ /* 5. Find number of lines per field */
+ if (Interlaced)
+ VDisplayRnd = VDisplay / 2;
+ else
+ VDisplayRnd = VDisplay;
+
+ /* 6. Find top and bottom margins */
+ /* nope. */
+ if (Margins)
+ /* top and bottom margins are equal again. */
+ VMargin = (((float) VDisplayRnd) * CVT_MARGIN_PERCENTAGE / 100.0);
+ else
+ VMargin = 0;
+
+ Mode->VDisplay = VDisplay + 2*VMargin;
+
+ /* 7. Interlace */
+ if (Interlaced)
+ Interlace = 0.5;
+ else
+ Interlace = 0.0;
+
+ /* Determine VSync Width from aspect ratio */
+ if (!(VDisplay % 3) && ((VDisplay * 4 / 3) == HDisplay))
+ VSync = 4;
+ else if (!(VDisplay % 9) && ((VDisplay * 16 / 9) == HDisplay))
+ VSync = 5;
+ else if (!(VDisplay % 10) && ((VDisplay * 16 / 10) == HDisplay))
+ VSync = 6;
+ else if (!(VDisplay % 4) && ((VDisplay * 5 / 4) == HDisplay))
+ VSync = 7;
+ else if (!(VDisplay % 9) && ((VDisplay * 15 / 9) == HDisplay))
+ VSync = 7;
+ else /* Custom */
+ VSync = 10;
+
+ if (!Reduced) { /* simplified GTF calculation */
+
+ /* 4) Minimum time of vertical sync + back porch interval (µs)
+ * default 550.0 */
+#define CVT_MIN_VSYNC_BP 550.0
+
+ /* 3) Nominal HSync width (% of line period) - default 8 */
+#define CVT_HSYNC_PERCENTAGE 8
+
+ float HBlankPercentage;
+ int VSyncAndBackPorch, VBackPorch;
+ int HBlank;
+
+ /* 8. Estimated Horizontal period */
+ HPeriod = ((float) (1000000.0 / VFieldRate - CVT_MIN_VSYNC_BP)) /
+ (VDisplayRnd + 2 * VMargin + CVT_MIN_V_PORCH + Interlace);
+
+ /* 9. Find number of lines in sync + backporch */
+ if (((int)(CVT_MIN_VSYNC_BP / HPeriod) + 1) < (VSync + CVT_MIN_V_PORCH))
+ VSyncAndBackPorch = VSync + CVT_MIN_V_PORCH;
+ else
+ VSyncAndBackPorch = (int)(CVT_MIN_VSYNC_BP / HPeriod) + 1;
+
+ /* 10. Find number of lines in back porch */
+ VBackPorch = VSyncAndBackPorch - VSync;
+
+ /* 11. Find total number of lines in vertical field */
+ Mode->VTotal = VDisplayRnd + 2 * VMargin + VSyncAndBackPorch + Interlace
+ + CVT_MIN_V_PORCH;
+
+ /* 5) Definition of Horizontal blanking time limitation */
+ /* Gradient (%/kHz) - default 600 */
+#define CVT_M_FACTOR 600
+
+ /* Offset (%) - default 40 */
+#define CVT_C_FACTOR 40
+
+ /* Blanking time scaling factor - default 128 */
+#define CVT_K_FACTOR 128
+
+ /* Scaling factor weighting - default 20 */
+#define CVT_J_FACTOR 20
+
+#define CVT_M_PRIME CVT_M_FACTOR * CVT_K_FACTOR / 256
+#define CVT_C_PRIME (CVT_C_FACTOR - CVT_J_FACTOR) * CVT_K_FACTOR / 256 + \
+ CVT_J_FACTOR
+
+ /* 12. Find ideal blanking duty cycle from formula */
+ HBlankPercentage = CVT_C_PRIME - CVT_M_PRIME * HPeriod/1000.0;
+
+ /* 13. Blanking time */
+ if (HBlankPercentage < 20)
+ HBlankPercentage = 20;
+
+ HBlank = Mode->HDisplay * HBlankPercentage/(100.0 - HBlankPercentage);
+ HBlank -= HBlank % (2*CVT_H_GRANULARITY);
+
+ /* 14. Find total number of pixels in a line. */
+ Mode->HTotal = Mode->HDisplay + HBlank;
+
+ /* Fill in HSync values */
+ Mode->HSyncEnd = Mode->HDisplay + HBlank / 2;
+
+ Mode->HSyncStart = Mode->HSyncEnd -
+ (Mode->HTotal * CVT_HSYNC_PERCENTAGE) / 100;
+ Mode->HSyncStart += CVT_H_GRANULARITY -
+ Mode->HSyncStart % CVT_H_GRANULARITY;
+
+ /* Fill in VSync values */
+ Mode->VSyncStart = Mode->VDisplay + CVT_MIN_V_PORCH;
+ Mode->VSyncEnd = Mode->VSyncStart + VSync;
+
+ } else { /* Reduced blanking */
+ /* Minimum vertical blanking interval time (µs) - default 460 */
+#define CVT_RB_MIN_VBLANK 460.0
+
+ /* Fixed number of clocks for horizontal sync */
+#define CVT_RB_H_SYNC 32.0
+
+ /* Fixed number of clocks for horizontal blanking */
+#define CVT_RB_H_BLANK 160.0
+
+ /* Fixed number of lines for vertical front porch - default 3 */
+#define CVT_RB_VFPORCH 3
+
+ int VBILines;
+
+ /* 8. Estimate Horizontal period. */
+ HPeriod = ((float) (1000000.0 / VFieldRate - CVT_RB_MIN_VBLANK)) /
+ (VDisplayRnd + 2*VMargin);
+
+ /* 9. Find number of lines in vertical blanking */
+ VBILines = ((float) CVT_RB_MIN_VBLANK) / HPeriod + 1;
+
+ /* 10. Check if vertical blanking is sufficient */
+ if (VBILines < (CVT_RB_VFPORCH + VSync + CVT_MIN_V_BPORCH))
+ VBILines = CVT_RB_VFPORCH + VSync + CVT_MIN_V_BPORCH;
+
+ /* 11. Find total number of lines in vertical field */
+ Mode->VTotal = VDisplayRnd + 2 * VMargin + Interlace + VBILines;
+
+ /* 12. Find total number of pixels in a line */
+ Mode->HTotal = Mode->HDisplay + CVT_RB_H_BLANK;
+
+ /* Fill in HSync values */
+ Mode->HSyncEnd = Mode->HDisplay + CVT_RB_H_BLANK / 2;
+ Mode->HSyncStart = Mode->HSyncEnd - CVT_RB_H_SYNC;
+
+ /* Fill in VSync values */
+ Mode->VSyncStart = Mode->VDisplay + CVT_RB_VFPORCH;
+ Mode->VSyncEnd = Mode->VSyncStart + VSync;
+ }
+
+ /* 15/13. Find pixel clock frequency (kHz for xf86) */
+ Mode->Clock = Mode->HTotal * 1000.0 / HPeriod;
+ Mode->Clock -= Mode->Clock % CVT_CLOCK_STEP;
+
+ /* 16/14. Find actual Horizontal Frequency (kHz) */
+ Mode->HSync = ((float) Mode->Clock) / ((float) Mode->HTotal);
+
+ /* 17/15. Find actual Field rate */
+ Mode->VRefresh = (1000.0 * ((float) Mode->Clock)) /
+ ((float) (Mode->HTotal * Mode->VTotal));
+
+ /* 18/16. Find actual vertical frame frequency */
+ /* ignore - just set the mode flag for interlaced */
+ if (Interlaced)
+ Mode->VTotal *= 2;
+
+ {
+ char Name[256];
+ Name[0] = 0;
+
+ snprintf(Name, 256, "%dx%d", HDisplay, VDisplay);
+
+ Mode->name = xnfalloc(strlen(Name) + 1);
+ memcpy(Mode->name, Name, strlen(Name) + 1);
+ }
+
+ if (Reduced)
+ Mode->Flags |= V_PHSYNC | V_NVSYNC;
+ else
+ Mode->Flags |= V_NHSYNC | V_PVSYNC;
+
+ if (Interlaced)
+ Mode->Flags |= V_INTERLACE;
+
+ return Mode;
+}
diff --git a/hw/xfree86/common/xf86fbBus.c b/hw/xfree86/common/xf86fbBus.c
index cf8de47f6..102f6b1b2 100644
--- a/hw/xfree86/common/xf86fbBus.c
+++ b/hw/xfree86/common/xf86fbBus.c
@@ -1,4 +1,3 @@
-/* $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.
diff --git a/hw/xfree86/common/xf86fbman.c b/hw/xfree86/common/xf86fbman.c
index c3eadac1f..8141a8373 100644
--- a/hw/xfree86/common/xf86fbman.c
+++ b/hw/xfree86/common/xf86fbman.c
@@ -1,4 +1,3 @@
-/* $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.
diff --git a/hw/xfree86/common/xf86fbman.h b/hw/xfree86/common/xf86fbman.h
index adb26a1f1..4f2eac5e6 100644
--- a/hw/xfree86/common/xf86fbman.h
+++ b/hw/xfree86/common/xf86fbman.h
@@ -1,4 +1,3 @@
-/* $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.
diff --git a/hw/xfree86/common/xf86isaBus.c b/hw/xfree86/common/xf86isaBus.c
index 049dcda5f..3abad38ef 100644
--- a/hw/xfree86/common/xf86isaBus.c
+++ b/hw/xfree86/common/xf86isaBus.c
@@ -1,4 +1,3 @@
-/* $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.
*
diff --git a/hw/xfree86/common/xf86noBus.c b/hw/xfree86/common/xf86noBus.c
index 52e8a194c..0e3e3cc6b 100644
--- a/hw/xfree86/common/xf86noBus.c
+++ b/hw/xfree86/common/xf86noBus.c
@@ -1,4 +1,3 @@
-/* $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.
diff --git a/hw/xfree86/common/xf86pciBus.c b/hw/xfree86/common/xf86pciBus.c
index 4d587a13f..ae33568b8 100644
--- a/hw/xfree86/common/xf86pciBus.c
+++ b/hw/xfree86/common/xf86pciBus.c
@@ -1,4 +1,3 @@
-/* $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.
*
@@ -1399,7 +1398,7 @@ fixPciResource(int prt, memType alignment, pciVideoPtr pvp, unsigned long type)
(*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)),
+ res_n,(*p_base),(1L << (*p_size)),
((type & ResPhysMask) == ResMem) ? "Mem" : "Io");
#endif
if (res_n != 0xff) {
@@ -1578,8 +1577,8 @@ findPciRange(PCITAG tag, resPtr m, resPtr avoid, CARD32 size)
return 0;
}
-pciVideoPtr
-getPciVideoPtr(tag)
+static pciVideoPtr
+getPciVideoPtr(PCITAG tag)
{
int n = 0;
@@ -1690,19 +1689,12 @@ 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");
-#else
- xf86SetupPciIds = ScanPciSetupPciIds;
- xf86ClosePciIds = ScanPciClosePciIds;
- xf86FindPciNamesByDevice = ScanPciFindPciNamesByDevice;
- xf86FindPciNamesBySubsys = ScanPciFindPciNamesBySubsys;
-#endif
if (!xf86SetupPciIds())
FatalError("xf86SetupPciIds() failed\n");
diff --git a/hw/xfree86/common/xf86pciBus.h b/hw/xfree86/common/xf86pciBus.h
index 75d82fbcf..90d9dd9b9 100644
--- a/hw/xfree86/common/xf86pciBus.h
+++ b/hw/xfree86/common/xf86pciBus.h
@@ -1,4 +1,3 @@
-/* $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.
diff --git a/hw/xfree86/common/xf86sbusBus.c b/hw/xfree86/common/xf86sbusBus.c
index 4e84729fb..2e06ffac4 100644
--- a/hw/xfree86/common/xf86sbusBus.c
+++ b/hw/xfree86/common/xf86sbusBus.c
@@ -20,7 +20,6 @@
* IN AN ACTION 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>
diff --git a/hw/xfree86/common/xf86sbusBus.h b/hw/xfree86/common/xf86sbusBus.h
index 81c1b84ac..8576409d4 100644
--- a/hw/xfree86/common/xf86sbusBus.h
+++ b/hw/xfree86/common/xf86sbusBus.h
@@ -20,7 +20,6 @@
* IN AN ACTION 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
diff --git a/hw/xfree86/common/xf86str.h b/hw/xfree86/common/xf86str.h
index 590bf4cd0..6e62e52ff 100644
--- a/hw/xfree86/common/xf86str.h
+++ b/hw/xfree86/common/xf86str.h
@@ -1,4 +1,3 @@
-/* $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.
@@ -120,13 +119,19 @@ typedef enum {
MODE_ERROR = -1 /* error condition */
} ModeStatus;
+/*
+ * The mode sets are, from best to worst: USERDEF, DRIVER, and DEFAULT/BUILTIN.
+ * Preferred will bubble a mode to the top within a set.
+ */
# 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_PREFERRED 0x08 /* preferred mode within a set */
# define M_T_DEFAULT 0x10 /* (VESA) default modes */
# define M_T_USERDEF 0x20 /* One of the modes from the config file */
+# define M_T_DRIVER 0x40 /* Supplied by the driver (EDID, etc) */
/* Video mode */
typedef struct _DisplayModeRec {
@@ -208,6 +213,7 @@ typedef struct {
pointer options;
pointer DDC;
Bool reducedblanking; /* Allow CVT reduced blanking modes? */
+ int maxPixClock; /* in kHz, like mode->Clock */
} MonRec, *MonPtr;
/* the list of clock ranges */
@@ -318,7 +324,6 @@ typedef struct _DriverRec {
#define HaveDriverFuncs 1
-#ifdef XFree86LOADER
/*
* The optional module list struct. This allows modules exporting helping
* functions to configuration tools, the Xserver, or any other
@@ -332,7 +337,6 @@ typedef struct _ModuleInfoRec {
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
diff --git a/hw/xfree86/common/xf86xv.c b/hw/xfree86/common/xf86xv.c
index ede2e064e..3e908b86a 100644
--- a/hw/xfree86/common/xf86xv.c
+++ b/hw/xfree86/common/xf86xv.c
@@ -28,7 +28,6 @@
* 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>
@@ -53,9 +52,7 @@
#include <X11/extensions/Xv.h>
#include <X11/extensions/Xvproto.h>
#include "xvdix.h"
-#ifdef XFree86LOADER
#include "xvmodproc.h"
-#endif
#include "xf86xvpriv.h"
@@ -118,16 +115,9 @@ 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))
@@ -984,6 +974,7 @@ xf86XVEnlistPortInWindow(WindowPtr pWin, XvPortRecPrivatePtr portPriv)
if(!winPriv) {
winPriv = xalloc(sizeof(XF86XVWindowRec));
if(!winPriv) return BadAlloc;
+ memset(winPriv, 0, sizeof(XF86XVWindowRec));
winPriv->PortRec = portPriv;
winPriv->next = PrivRoot;
pWin->devPrivates[XF86XVWindowIndex].ptr = (pointer)winPriv;
@@ -1036,6 +1027,9 @@ xf86XVDestroyWindow(WindowPtr pWin)
pPriv->pDraw = NULL;
tmp = WinPriv;
+ if(WinPriv->pGC) {
+ FreeGC(WinPriv->pGC, 0);
+ }
WinPriv = WinPriv->next;
xfree(tmp);
}
@@ -1128,6 +1122,8 @@ xf86XVClipNotify(WindowPtr pWin, int dx, int dy)
while(WinPriv) {
pPriv = WinPriv->PortRec;
+ if(!pPriv) goto next;
+
if(pPriv->pCompositeClip && pPriv->FreeCompositeClip)
REGION_DESTROY(pScreen, pPriv->pCompositeClip);
@@ -1158,6 +1154,7 @@ xf86XVClipNotify(WindowPtr pWin, int dx, int dy)
}
}
+next:
pPrev = WinPriv;
WinPriv = WinPriv->next;
}
@@ -1749,9 +1746,13 @@ xf86XVPutImage(
REGION_UNINIT(pScreen, &VPReg);
}
- if(portPriv->pDraw) {
+ /* 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 */
+ ret = xf86XVEnlistPortInWindow((WindowPtr)pDraw, portPriv);
+ if(ret != Success) goto PUT_IMAGE_BAILOUT;
if(!REGION_NOTEMPTY(pScreen, &ClipRegion)) {
clippedAway = TRUE;
@@ -1782,7 +1783,6 @@ xf86XVPutImage(
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;
@@ -1823,6 +1823,56 @@ xf86XVQueryImageAttributes(
format->id, width, height, pitches, offsets);
}
+
+_X_EXPORT void
+xf86XVFillKeyHelperDrawable (DrawablePtr pDraw, CARD32 key, RegionPtr clipboxes)
+{
+ ScreenPtr pScreen = pDraw->pScreen;
+ WindowPtr pWin = (WindowPtr)pDraw;
+ XF86XVWindowPtr pPriv = GET_XF86XV_WINDOW(pWin);
+ GCPtr pGC = NULL;
+ XID pval[2];
+ BoxPtr pbox = REGION_RECTS(clipboxes);
+ int i, nbox = REGION_NUM_RECTS(clipboxes);
+ xRectangle *rects;
+
+ if(!xf86Screens[pScreen->myNum]->vtSema) return;
+
+ if(pPriv)
+ pGC = pPriv->pGC;
+
+ if(!pGC) {
+ int status;
+ pval[0] = key;
+ pval[1] = IncludeInferiors;
+ pGC = CreateGC(pDraw, GCForeground | GCSubwindowMode, pval, &status);
+ if(!pGC) return;
+ ValidateGC(pDraw, pGC);
+ if (pPriv) pPriv->pGC = pGC;
+ } else if (key != pGC->fgPixel){
+ pval[0] = key;
+ ChangeGC(pGC, GCForeground, pval);
+ ValidateGC(pDraw, pGC);
+ }
+
+ REGION_TRANSLATE(pDraw->pScreen, clipboxes, -pDraw->x, -pDraw->y);
+
+ 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;
+ }
+
+ (*pGC->ops->PolyFillRect)(pDraw, pGC, nbox, rects);
+
+ if (!pPriv) FreeGC(pGC, 0);
+
+ DEALLOCATE_LOCAL(rects);
+}
+
_X_EXPORT void
xf86XVFillKeyHelper (ScreenPtr pScreen, CARD32 key, RegionPtr clipboxes)
{
diff --git a/hw/xfree86/common/xf86xv.h b/hw/xfree86/common/xf86xv.h
index fbe60cb48..817e2b994 100644
--- a/hw/xfree86/common/xf86xv.h
+++ b/hw/xfree86/common/xf86xv.h
@@ -1,4 +1,3 @@
-/* $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.
@@ -233,6 +232,9 @@ void xf86XVFreeVideoAdaptorRec(XF86VideoAdaptorPtr ptr);
void
xf86XVFillKeyHelper (ScreenPtr pScreen, CARD32 key, RegionPtr clipboxes);
+void
+xf86XVFillKeyHelperDrawable (DrawablePtr pDraw, CARD32 key, RegionPtr clipboxes);
+
Bool
xf86XVClipVideoHelper(
BoxPtr dst,
diff --git a/hw/xfree86/common/xf86xvmc.c b/hw/xfree86/common/xf86xvmc.c
index 40c82c75d..f8ff0bed4 100644
--- a/hw/xfree86/common/xf86xvmc.c
+++ b/hw/xfree86/common/xf86xvmc.c
@@ -1,4 +1,3 @@
-/* $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.
@@ -41,19 +40,13 @@
#include "resource.h"
#include "dixstruct.h"
-#ifdef XFree86LOADER
#include "xvmodproc.h"
-#endif
#include "xf86xvpriv.h"
#include "xf86xvmc.h"
typedef int (*XvMCScreenInitProcPtr)(ScreenPtr, int, XvMCAdaptorPtr);
-#ifdef XFree86LOADER
_X_EXPORT XvMCScreenInitProcPtr XvMCScreenInitProc = NULL;
-#else
-_X_EXPORT XvMCScreenInitProcPtr XvMCScreenInitProc = XvMCScreenInit;
-#endif
typedef struct {
diff --git a/hw/xfree86/common/xf86xvmc.h b/hw/xfree86/common/xf86xvmc.h
index 0b073aac8..bc7a98c6a 100644
--- a/hw/xfree86/common/xf86xvmc.h
+++ b/hw/xfree86/common/xf86xvmc.h
@@ -1,4 +1,3 @@
-/* $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.
diff --git a/hw/xfree86/common/xf86xvpriv.h b/hw/xfree86/common/xf86xvpriv.h
index 0d1efdafb..e716c9c6a 100644
--- a/hw/xfree86/common/xf86xvpriv.h
+++ b/hw/xfree86/common/xf86xvpriv.h
@@ -1,4 +1,3 @@
-/* $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.
@@ -81,6 +80,7 @@ typedef struct {
typedef struct _XF86XVWindowRec{
XvPortRecPrivatePtr PortRec;
struct _XF86XVWindowRec *next;
+ GCPtr pGC;
} XF86XVWindowRec, *XF86XVWindowPtr;
#endif /* _XF86XVPRIV_H_ */
diff --git a/hw/xfree86/common/xisb.c b/hw/xfree86/common/xisb.c
index 916066005..88506f659 100644
--- a/hw/xfree86/common/xisb.c
+++ b/hw/xfree86/common/xisb.c
@@ -24,7 +24,6 @@
* 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
diff --git a/hw/xfree86/common/xorgHelper.c b/hw/xfree86/common/xorgHelper.c
index d5e0fc159..7f9dd507a 100644
--- a/hw/xfree86/common/xorgHelper.c
+++ b/hw/xfree86/common/xorgHelper.c
@@ -1,4 +1,3 @@
-/* $XdotOrg: xc/programs/Xserver/hw/xfree86/common/xorgHelper.c,v 1.3 2005/04/20 12:25:21 daniels Exp $ */
#ifdef HAVE_XORG_CONFIG_H
#include <xorg-config.h>
diff --git a/hw/xfree86/common/xorgVersion.h b/hw/xfree86/common/xorgVersion.h
index 47005320a..f627e87a5 100644
--- a/hw/xfree86/common/xorgVersion.h
+++ b/hw/xfree86/common/xorgVersion.h
@@ -1,4 +1,3 @@
-/* $XdotOrg: xc/programs/Xserver/hw/xfree86/xorgVersion.h,v 1.3 2004/08/16 02:07:53 kem Exp $ */
/*
* Copyright (c) 2004, X.Org Foundation
@@ -48,4 +47,3 @@
# define XORG_VERSION_SNAP XORG_GET_SNAP_VERSION(XORG_VERSION_CURRENT)
#endif
-/* $XdotOrg: xc/programs/Xserver/hw/xfree86/xorgVersion.h,v 1.3 2004/08/16 02:07:53 kem Exp $ */
diff --git a/hw/xfree86/ddc/Makefile.am b/hw/xfree86/ddc/Makefile.am
index 0f563869a..a04b5e8fe 100644
--- a/hw/xfree86/ddc/Makefile.am
+++ b/hw/xfree86/ddc/Makefile.am
@@ -4,10 +4,11 @@ module_LTLIBRARIES = libddc.la
libddc_la_LDFLAGS = -avoid-version
libddc_la_SOURCES = xf86DDC.c edid.c interpret_edid.c print_edid.c \
- interpret_vdif.c print_vdif.c ddcProperty.c
+ interpret_vdif.c print_vdif.c ddcProperty.c \
+ edid_modes.c
INCLUDES = $(XORG_INCS) -I$(srcdir)/../i2c
-AM_CFLAGS = $(XORG_CFLAGS) @SERVER_DEFINES@ @MODULE_DEFINES@ @LOADER_DEFINES@
+AM_CFLAGS = $(DIX_CFLAGS) $(XORG_CFLAGS)
EXTRA_DIST = ddcPriv.h DDC.HOWTO
diff --git a/hw/xfree86/ddc/ddcProperty.c b/hw/xfree86/ddc/ddcProperty.c
index 00e721053..13083dd50 100644
--- a/hw/xfree86/ddc/ddcProperty.c
+++ b/hw/xfree86/ddc/ddcProperty.c
@@ -1,18 +1,32 @@
-/* ddcProperty.c: Make the DDC monitor information available to clients
- * as properties on the root window
- *
- * Copyright 1999 by Andrew C Aitchison <A.C.Aitchison@dpmms.cam.ac.uk>
+/*
+ * Copyright 2006 Luc Verhaegen.
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a
+ * copy of this software and 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
+ * 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.
*/
-/* $XFree86: xc/programs/Xserver/hw/xfree86/ddc/ddcProperty.c,v 1.9tsi Exp $ */
#ifdef HAVE_XORG_CONFIG_H
#include <xorg-config.h>
#endif
-#include <string.h>
-#include "misc.h"
#include "xf86.h"
-/* #include "xf86_OSproc.h" */
+#include "xf86DDC.h"
#include <X11/Xatom.h>
#include "property.h"
#include "propertyst.h"
@@ -22,139 +36,93 @@
#define EDID2_ATOM_NAME "XFree86_DDC_EDID2_RAWDATA"
#define VDIF_ATOM_NAME "XFree86_DDC_VDIF_RAWDATA"
-Bool
-xf86SetDDCproperties(ScrnInfoPtr pScrnInfo, xf86MonPtr DDC)
+static void
+addRootWindowProperties(ScrnInfoPtr pScrn, xf86MonPtr DDC)
{
- Atom EDID1Atom=-1, EDID2Atom=-1, VDIFAtom=-1;
+ Atom EDID1Atom=-1, EDID2Atom=-1;
CARD8 *EDID1rawdata = NULL;
CARD8 *EDID2rawdata = NULL;
- int i, ret;
- Bool makeEDID1prop = FALSE;
- Bool makeEDID2prop = FALSE;
-
-#ifdef DEBUG
- ErrorF("xf86SetDDCproperties(%p, %p)\n", pScrnInfo, DDC);
-#endif
-
- if (pScrnInfo==NULL || pScrnInfo->monitor==NULL || DDC==NULL) {
- return FALSE;
- }
-
-#ifdef DEBUG
- ErrorF("pScrnInfo->scrnIndex %d\n", pScrnInfo->scrnIndex);
-
- ErrorF("pScrnInfo->monitor was %p\n", pScrnInfo->monitor);
-#endif
-
- pScrnInfo->monitor->DDC = DDC;
+ int i, scrnIndex = pScrn->scrnIndex;
+ Bool makeEDID1prop = FALSE;
+ Bool makeEDID2prop = FALSE;
if (DDC->ver.version == 1) {
- makeEDID1prop = TRUE;
+ makeEDID1prop = TRUE;
} else if (DDC->ver.version == 2) {
- int checksum1;
- int checksum2;
- makeEDID2prop = TRUE;
-
- /* Some monitors (eg Panasonic PanaSync4)
- * report version==2 because they used EDID v2 spec document,
- * although they use EDID v1 data structure :-(
- *
- * Try using checksum to determine when we have such a monitor.
- */
- checksum2 = 0;
- for (i=0; i<256; i++) { checksum2 += DDC->rawData[i]; }
- if ( (checksum2 % 256) != 0 ) {
- xf86DrvMsg(pScrnInfo->scrnIndex,X_INFO, "Monitor EDID v2 checksum failed\n");
- xf86DrvMsg(pScrnInfo->scrnIndex,X_INFO, "XFree86_DDC_EDID2_RAWDATA property may be bad\n");
- checksum1 = 0;
- for (i=0; i<128; i++) { checksum1 += DDC->rawData[i]; }
- if ( (checksum1 % 256) == 0 ) {
- xf86DrvMsg(pScrnInfo->scrnIndex,X_INFO, "Monitor EDID v1 checksum passed,\n");
- xf86DrvMsg(pScrnInfo->scrnIndex,X_INFO, "XFree86_DDC_EDID1_RAWDATA property created\n");
- makeEDID1prop = TRUE;
+ int checksum1;
+ int checksum2;
+ makeEDID2prop = TRUE;
+
+ /* Some monitors (eg Panasonic PanaSync4)
+ * report version==2 because they used EDID v2 spec document,
+ * although they use EDID v1 data structure :-(
+ *
+ * Try using checksum to determine when we have such a monitor.
+ */
+ checksum2 = 0;
+ for (i = 0; i < 256; i++)
+ checksum2 += DDC->rawData[i];
+ if (checksum2 % 256) {
+ xf86DrvMsg(scrnIndex, X_INFO, "Monitor EDID v2 checksum failed\n");
+ xf86DrvMsg(scrnIndex, X_INFO,
+ "XFree86_DDC_EDID2_RAWDATA property may be bad\n");
+ checksum1 = 0;
+ for (i = 0; i < 128; i++)
+ checksum1 += DDC->rawData[i];
+ if (!(checksum1 % 256)) {
+ xf86DrvMsg(scrnIndex, X_INFO,
+ "Monitor EDID v1 checksum passed,\n");
+ xf86DrvMsg(scrnIndex, X_INFO,
+ "XFree86_DDC_EDID1_RAWDATA property created\n");
+ makeEDID1prop = TRUE;
+ }
}
- }
} else {
- xf86DrvMsg(pScrnInfo->scrnIndex, X_PROBED,
- "unexpected EDID version %d revision %d\n",
- DDC->ver.version, DDC->ver.revision );
+ xf86DrvMsg(scrnIndex, X_PROBED, "unexpected EDID version %d.%d\n",
+ DDC->ver.version, DDC->ver.revision);
+ return;
}
if (makeEDID1prop) {
- if ( (EDID1rawdata = xalloc(128*sizeof(CARD8)))==NULL ) {
- return FALSE;
- }
-
- EDID1Atom = MakeAtom(EDID1_ATOM_NAME, sizeof(EDID1_ATOM_NAME), TRUE);
-
+ if ((EDID1rawdata = xalloc(128*sizeof(CARD8)))==NULL)
+ return;
- for (i=0; i<128; i++) {
- EDID1rawdata[i] = DDC->rawData[i];
- }
-
-#ifdef DEBUG
- ErrorF("xf86RegisterRootWindowProperty %p(%d,%d,%d,%d,%d,%p)\n",
- xf86RegisterRootWindowProperty,
- pScrnInfo->scrnIndex,
- EDID1Atom, XA_INTEGER, 8,
- 128, (unsigned char *)EDID1rawdata );
-#endif
-
- ret = xf86RegisterRootWindowProperty(pScrnInfo->scrnIndex,
- EDID1Atom, XA_INTEGER, 8,
- 128, (unsigned char *)EDID1rawdata
- );
- if (ret != Success)
- ErrorF("xf86RegisterRootWindowProperty returns %d\n", ret );
+ EDID1Atom = MakeAtom(EDID1_ATOM_NAME, sizeof(EDID1_ATOM_NAME), TRUE);
+ memcpy(EDID1rawdata, DDC->rawData, 128);
+ xf86RegisterRootWindowProperty(scrnIndex, EDID1Atom, XA_INTEGER, 8,
+ 128, (unsigned char *)EDID1rawdata);
}
if (makeEDID2prop) {
- if ( (EDID2rawdata = xalloc(256*sizeof(CARD8)))==NULL ) {
- return FALSE;
- }
- for (i=0; i<256; i++) {
- EDID2rawdata[i] = DDC->rawData[i];
- }
-
- EDID2Atom = MakeAtom(EDID2_ATOM_NAME, sizeof(EDID2_ATOM_NAME), TRUE);
-
-#ifdef DEBUG
- ErrorF("xf86RegisterRootWindowProperty %p(%d,%d,%d,%d,%d,%p)\n",
- xf86RegisterRootWindowProperty,
- pScrnInfo->scrnIndex,
- EDID2Atom, XA_INTEGER, 8,
- 256, (unsigned char *)EDID2rawdata );
-#endif
- ret = xf86RegisterRootWindowProperty(pScrnInfo->scrnIndex,
- EDID2Atom, XA_INTEGER, 8,
- 256, (unsigned char *)EDID2rawdata
- );
- if (ret != Success)
- ErrorF("xf86RegisterRootWindowProperty returns %d\n", ret );
+ if ((EDID2rawdata = xalloc(256*sizeof(CARD8)))==NULL)
+ return;
+
+ memcpy(EDID2rawdata, DDC->rawData, 256);
+ EDID2Atom = MakeAtom(EDID2_ATOM_NAME, sizeof(EDID2_ATOM_NAME), TRUE);
+ xf86RegisterRootWindowProperty(scrnIndex, EDID2Atom, XA_INTEGER, 8,
+ 256, (unsigned char *)EDID2rawdata);
}
+#if 0
if (DDC->vdif) {
#define VDIF_DUMMY_STRING "setting dummy VDIF property - please insert correct values\n"
-#ifdef DEBUG
- ErrorF("xf86RegisterRootWindowProperty %p(%d,%d,%d,%d,%d,%p)\n",
- xf86RegisterRootWindowProperty,
- pScrnInfo->scrnIndex,
- VDIFAtom, XA_STRING, 8,
- strlen(VDIF_DUMMY_STRING), VDIF_DUMMY_STRING
- );
+
+ VDIFAtom = MakeAtom(VDIF_ATOM_NAME, sizeof(VDIF_ATOM_NAME), TRUE);
+ xf86RegisterRootWindowProperty(scrnIndex, VDIFAtom, XA_STRING, 8,
+ strlen(VDIF_DUMMY_STRING), VDIF_DUMMY_STRING);
+ }
#endif
+}
+Bool
+xf86SetDDCproperties(ScrnInfoPtr pScrn, xf86MonPtr DDC)
+{
+ if (!pScrn || !pScrn->monitor || !DDC)
+ return FALSE;
- VDIFAtom = MakeAtom(VDIF_ATOM_NAME, sizeof(VDIF_ATOM_NAME), TRUE);
+ xf86DDCMonitorSet(pScrn->scrnIndex, pScrn->monitor, DDC);
- ret = xf86RegisterRootWindowProperty(pScrnInfo->scrnIndex,
- VDIFAtom, XA_STRING, 8,
- strlen(VDIF_DUMMY_STRING),
- VDIF_DUMMY_STRING
- );
- if (ret != Success)
- ErrorF("xf86RegisterRootWindowProperty returns %d\n", ret );
- }
+ addRootWindowProperties(pScrn, DDC);
return TRUE;
}
diff --git a/hw/xfree86/ddc/edid.c b/hw/xfree86/ddc/edid.c
index 6d3b18c13..3ebafbbba 100644
--- a/hw/xfree86/ddc/edid.c
+++ b/hw/xfree86/ddc/edid.c
@@ -1,4 +1,3 @@
-/* $XFree86: xc/programs/Xserver/hw/xfree86/ddc/edid.c,v 1.3 2000/11/03 18:46:08 eich Exp $ */
/* edid.c: retrieve EDID record from raw DDC1 data stream: data
* is contained in an array of unsigned int each unsigned int
diff --git a/hw/xfree86/ddc/edid.h b/hw/xfree86/ddc/edid.h
index 9182fbdb0..30499a6da 100644
--- a/hw/xfree86/ddc/edid.h
+++ b/hw/xfree86/ddc/edid.h
@@ -1,4 +1,3 @@
-/* $XFree86: xc/programs/Xserver/hw/xfree86/ddc/edid.h,v 1.6 2000/04/17 16:29:55 eich Exp $ */
/* edid.h: defines to parse an EDID block
*
diff --git a/hw/xfree86/ddc/edid_modes.c b/hw/xfree86/ddc/edid_modes.c
new file mode 100644
index 000000000..cfc8ddc13
--- /dev/null
+++ b/hw/xfree86/ddc/edid_modes.c
@@ -0,0 +1,348 @@
+/*
+ * Copyright 2006 Luc Verhaegen.
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a
+ * copy of this software and 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
+ * 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_XORG_CONFIG_H
+#include <xorg-config.h>
+#endif
+
+#include "xf86.h"
+#include "xf86DDC.h"
+#include <X11/Xatom.h>
+#include "property.h"
+#include "propertyst.h"
+#include "xf86DDC.h"
+
+/*
+ * TODO:
+ * - for those with access to the VESA DMT standard; review please.
+ */
+#define MODEPREFIX(name) NULL, NULL, name, 0,M_T_DRIVER
+#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 DDCEstablishedModes[17] = {
+ { MODEPREFIX("800x600"), 40000, 800, 840, 968, 1056, 0, 600, 601, 605, 628, 0, V_PHSYNC | V_PVSYNC, MODESUFFIX }, /* 800x600@60Hz */
+ { MODEPREFIX("800x600"), 36000, 800, 824, 896, 1024, 0, 600, 601, 603, 625, 0, V_PHSYNC | V_PVSYNC, MODESUFFIX }, /* 800x600@56Hz */
+ { MODEPREFIX("640x480"), 31500, 640, 656, 720, 840, 0, 480, 481, 484, 500, 0, V_NHSYNC | V_NVSYNC, MODESUFFIX }, /* 640x480@75Hz */
+ { MODEPREFIX("640x480"), 31500, 640, 664, 704, 832, 0, 480, 489, 491, 520, 0, V_NHSYNC | V_NVSYNC, MODESUFFIX }, /* 640x480@72Hz */
+ { MODEPREFIX("640x480"), 30240, 640, 704, 768, 864, 0, 480, 483, 486, 525, 0, V_NHSYNC | V_NVSYNC, MODESUFFIX }, /* 640x480@67Hz */
+ { MODEPREFIX("640x480"), 25200, 640, 656, 752, 800, 0, 480, 490, 492, 525, 0, V_NHSYNC | V_NVSYNC, MODESUFFIX }, /* 640x480@60Hz */
+ { MODEPREFIX("720x400"), 35500, 720, 738, 846, 900, 0, 400, 421, 423, 449, 0, V_NHSYNC | V_NVSYNC, MODESUFFIX }, /* 720x400@88Hz */
+ { MODEPREFIX("720x400"), 28320, 720, 738, 846, 900, 0, 400, 412, 414, 449, 0, V_NHSYNC | V_PVSYNC, MODESUFFIX }, /* 720x400@70Hz */
+ { MODEPREFIX("1280x1024"), 135000, 1280, 1296, 1440, 1688, 0, 1024, 1025, 1028, 1066, 0, V_PHSYNC | V_PVSYNC, MODESUFFIX }, /* 1280x1024@75Hz */
+ { MODEPREFIX("1024x768"), 78800, 1024, 1040, 1136, 1312, 0, 768, 769, 772, 800, 0, V_PHSYNC | V_PVSYNC, MODESUFFIX }, /* 1024x768@75Hz */
+ { MODEPREFIX("1024x768"), 75000, 1024, 1048, 1184, 1328, 0, 768, 771, 777, 806, 0, V_NHSYNC | V_NVSYNC, MODESUFFIX }, /* 1024x768@70Hz */
+ { MODEPREFIX("1024x768"), 65000, 1024, 1048, 1184, 1344, 0, 768, 771, 777, 806, 0, V_NHSYNC | V_NVSYNC, MODESUFFIX }, /* 1024x768@60Hz */
+ { MODEPREFIX("1024x768"), 44900, 1024, 1032, 1208, 1264, 0, 768, 768, 776, 817, 0, V_PHSYNC | V_PVSYNC | V_INTERLACE, MODESUFFIX }, /* 1024x768@43Hz */
+ { MODEPREFIX("832x624"), 57284, 832, 864, 928, 1152, 0, 624, 625, 628, 667, 0, V_NHSYNC | V_NVSYNC, MODESUFFIX }, /* 832x624@75Hz */
+ { MODEPREFIX("800x600"), 49500, 800, 816, 896, 1056, 0, 600, 601, 604, 625, 0, V_PHSYNC | V_PVSYNC, MODESUFFIX }, /* 800x600@75Hz */
+ { MODEPREFIX("800x600"), 50000, 800, 856, 976, 1040, 0, 600, 637, 643, 666, 0, V_PHSYNC | V_PVSYNC, MODESUFFIX }, /* 800x600@72Hz */
+ { MODEPREFIX("1152x864"), 108000, 1152, 1216, 1344, 1600, 0, 864, 865, 868, 900, 0, V_PHSYNC | V_PVSYNC, MODESUFFIX }, /* 1152x864@75Hz */
+};
+
+static DisplayModePtr
+DDCModesFromEstablished(int scrnIndex, struct established_timings *timing)
+{
+ DisplayModePtr Modes = NULL, Mode = NULL;
+ CARD32 bits = (timing->t1) | (timing->t2 << 8) |
+ ((timing->t_manu & 0x80) << 9);
+ int i;
+
+ for (i = 0; i < 17; i++) {
+ if (bits & (0x01 << i)) {
+ Mode = xf86DuplicateMode(&DDCEstablishedModes[i]);
+ Modes = xf86ModesAdd(Modes, Mode);
+ }
+ }
+
+ return Modes;
+}
+
+/*
+ *
+ */
+static DisplayModePtr
+DDCModesFromStandardTiming(int scrnIndex, struct std_timings *timing)
+{
+ DisplayModePtr Modes = NULL, Mode = NULL;
+ int i;
+
+ for (i = 0; i < STD_TIMINGS; i++) {
+ if (timing[i].hsize && timing[i].vsize && timing[i].refresh) {
+ Mode = xf86CVTMode(timing[i].hsize, timing[i].vsize,
+ timing[i].refresh, FALSE, FALSE);
+ Mode->type = M_T_DRIVER;
+ Modes = xf86ModesAdd(Modes, Mode);
+ }
+ }
+
+ return Modes;
+}
+
+/*
+ *
+ */
+static DisplayModePtr
+DDCModeFromDetailedTiming(int scrnIndex, struct detailed_timings *timing,
+ int preferred)
+{
+ DisplayModePtr Mode;
+
+ /* We don't do stereo */
+ if (timing->stereo) {
+ xf86DrvMsg(scrnIndex, X_INFO,
+ "%s: Ignoring: We don't handle stereo.\n", __func__);
+ return NULL;
+ }
+
+ /* We only do seperate sync currently */
+ if (timing->sync != 0x03) {
+ xf86DrvMsg(scrnIndex, X_INFO,
+ "%s: %dx%d Warning: We only handle seperate"
+ " sync.\n", __func__, timing->h_active, timing->v_active);
+ }
+
+ Mode = xnfalloc(sizeof(DisplayModeRec));
+ memset(Mode, 0, sizeof(DisplayModeRec));
+
+ Mode->type = M_T_DRIVER;
+ if (preferred)
+ Mode->type |= M_T_PREFERRED;
+
+ Mode->Clock = timing->clock / 1000.0;
+
+ Mode->HDisplay = timing->h_active;
+ Mode->HSyncStart = timing->h_active + timing->h_sync_off;
+ Mode->HSyncEnd = Mode->HSyncStart + timing->h_sync_width;
+ Mode->HTotal = timing->h_active + timing->h_blanking;
+
+ Mode->VDisplay = timing->v_active;
+ Mode->VSyncStart = timing->v_active + timing->v_sync_off;
+ Mode->VSyncEnd = Mode->VSyncStart + timing->v_sync_width;
+ Mode->VTotal = timing->v_active + timing->v_blanking;
+
+ xf86SetModeDefaultName(Mode);
+
+ /* We ignore h/v_size and h/v_border for now. */
+
+ if (timing->interlaced)
+ Mode->Flags |= V_INTERLACE;
+
+ if (timing->misc & 0x02)
+ Mode->Flags |= V_PHSYNC;
+ else
+ Mode->Flags |= V_NHSYNC;
+
+ if (timing->misc & 0x01)
+ Mode->Flags |= V_PVSYNC;
+ else
+ Mode->Flags |= V_NVSYNC;
+
+ return Mode;
+}
+
+/*
+ *
+ */
+static void
+DDCGuessRangesFromModes(int scrnIndex, MonPtr Monitor, DisplayModePtr Modes)
+{
+ DisplayModePtr Mode = Modes;
+
+ if (!Monitor || !Modes)
+ return;
+
+ /* set up the ranges for scanning through the modes */
+ Monitor->nHsync = 1;
+ Monitor->hsync[0].lo = 1024.0;
+ Monitor->hsync[0].hi = 0.0;
+
+ Monitor->nVrefresh = 1;
+ Monitor->vrefresh[0].lo = 1024.0;
+ Monitor->vrefresh[0].hi = 0.0;
+
+ while (Mode) {
+ if (!Mode->HSync)
+ Mode->HSync = ((float) Mode->Clock ) / ((float) Mode->HTotal);
+
+ if (!Mode->VRefresh)
+ Mode->VRefresh = (1000.0 * ((float) Mode->Clock)) /
+ ((float) (Mode->HTotal * Mode->VTotal));
+
+ if (Mode->HSync < Monitor->hsync[0].lo)
+ Monitor->hsync[0].lo = Mode->HSync;
+
+ if (Mode->HSync > Monitor->hsync[0].hi)
+ Monitor->hsync[0].hi = Mode->HSync;
+
+ if (Mode->VRefresh < Monitor->vrefresh[0].lo)
+ Monitor->vrefresh[0].lo = Mode->VRefresh;
+
+ if (Mode->VRefresh > Monitor->vrefresh[0].hi)
+ Monitor->vrefresh[0].hi = Mode->VRefresh;
+
+ Mode = Mode->next;
+ }
+}
+
+DisplayModePtr
+xf86DDCGetModes(int scrnIndex, xf86MonPtr DDC)
+{
+ int preferred, i;
+ DisplayModePtr Modes = NULL, Mode;
+
+ preferred = PREFERRED_TIMING_MODE(DDC->features.msc);
+
+ /* Add established timings */
+ Mode = DDCModesFromEstablished(scrnIndex, &DDC->timings1);
+ Modes = xf86ModesAdd(Modes, Mode);
+
+ /* Add standard timings */
+ Mode = DDCModesFromStandardTiming(scrnIndex, DDC->timings2);
+ Modes = xf86ModesAdd(Modes, Mode);
+
+ for (i = 0; i < DET_TIMINGS; i++) {
+ struct detailed_monitor_section *det_mon = &DDC->det_mon[i];
+
+ switch (det_mon->type) {
+ case DT:
+ Mode = DDCModeFromDetailedTiming(scrnIndex,
+ &det_mon->section.d_timings,
+ preferred);
+ preferred = 0;
+ Modes = xf86ModesAdd(Modes, Mode);
+ break;
+ case DS_STD_TIMINGS:
+ Mode = DDCModesFromStandardTiming(scrnIndex,
+ det_mon->section.std_t);
+ Modes = xf86ModesAdd(Modes, Mode);
+ break;
+ default:
+ break;
+ }
+ }
+
+ return Modes;
+}
+
+/*
+ * Fill out MonPtr with xf86MonPtr information.
+ */
+void
+xf86DDCMonitorSet(int scrnIndex, MonPtr Monitor, xf86MonPtr DDC)
+{
+ DisplayModePtr Modes = NULL, Mode;
+ int i, clock;
+ Bool have_hsync = FALSE, have_vrefresh = FALSE;
+
+ if (!Monitor || !DDC)
+ return;
+
+ Monitor->DDC = DDC;
+
+ Monitor->widthmm = 10 * DDC->features.hsize;
+ Monitor->heightmm = 10 * DDC->features.vsize;
+
+ /* If this is a digital display, then we can use reduced blanking */
+ if (DDC->features.input_type)
+ Monitor->reducedblanking = TRUE;
+ /* Allow the user to also enable this through config */
+
+ Modes = xf86DDCGetModes(scrnIndex, DDC);
+
+ /* Skip EDID ranges if they were specified in the config file */
+ have_hsync = (Monitor->nHsync != 0);
+ have_vrefresh = (Monitor->nVrefresh != 0);
+
+ /* Go through the detailed monitor sections */
+ for (i = 0; i < DET_TIMINGS; i++) {
+ switch (DDC->det_mon[i].type) {
+ case DS_RANGES:
+ if (!have_hsync) {
+ if (!Monitor->nHsync)
+ xf86DrvMsg(scrnIndex, X_INFO,
+ "Using EDID range info for horizontal sync\n");
+ Monitor->hsync[Monitor->nHsync].lo =
+ DDC->det_mon[i].section.ranges.min_h;
+ Monitor->hsync[Monitor->nHsync].hi =
+ DDC->det_mon[i].section.ranges.max_h;
+ Monitor->nHsync++;
+ } else {
+ xf86DrvMsg(scrnIndex, X_INFO,
+ "Using hsync ranges from config file\n");
+ }
+
+ if (!have_vrefresh) {
+ if (!Monitor->nVrefresh)
+ xf86DrvMsg(scrnIndex, X_INFO,
+ "Using EDID range info for vertical refresh\n");
+ Monitor->vrefresh[Monitor->nVrefresh].lo =
+ DDC->det_mon[i].section.ranges.min_v;
+ Monitor->vrefresh[Monitor->nVrefresh].hi =
+ DDC->det_mon[i].section.ranges.max_v;
+ Monitor->nVrefresh++;
+ } else {
+ xf86DrvMsg(scrnIndex, X_INFO,
+ "Using vrefresh ranges from config file\n");
+ }
+
+ clock = DDC->det_mon[i].section.ranges.max_clock * 1000;
+ if (clock > Monitor->maxPixClock)
+ Monitor->maxPixClock = clock;
+
+ break;
+ default:
+ break;
+ }
+ }
+
+ if (Modes) {
+ /* Print Modes */
+ xf86DrvMsg(scrnIndex, X_INFO, "Printing DDC gathered Modelines:\n");
+
+ Mode = Modes;
+ while (Mode) {
+ xf86PrintModeline(scrnIndex, Mode);
+ Mode = Mode->next;
+ }
+
+ /* Do we still need ranges to be filled in? */
+ if (!Monitor->nHsync || !Monitor->nVrefresh)
+ DDCGuessRangesFromModes(scrnIndex, Monitor, Modes);
+
+ /* look for last Mode */
+ Mode = Modes;
+
+ while (Mode->next)
+ Mode = Mode->next;
+
+ /* add to MonPtr */
+ if (Monitor->Modes) {
+ Monitor->Last->next = Modes;
+ Modes->prev = Monitor->Last;
+ Monitor->Last = Mode;
+ } else {
+ Monitor->Modes = Modes;
+ Monitor->Last = Mode;
+ }
+ }
+}
diff --git a/hw/xfree86/ddc/interpret_edid.c b/hw/xfree86/ddc/interpret_edid.c
index 718cbf77a..7b4b2b9ec 100644
--- a/hw/xfree86/ddc/interpret_edid.c
+++ b/hw/xfree86/ddc/interpret_edid.c
@@ -1,4 +1,3 @@
-/* $XFree86: xc/programs/Xserver/hw/xfree86/ddc/interpret_edid.c,v 1.7 2000/04/17 16:29:55 eich Exp $ */
/* interpret_edid.c: interpret a primary EDID block
*
@@ -32,6 +31,41 @@ static void get_whitepoint_section(Uchar *, struct whitePoints *);
static void get_detailed_timing_section(Uchar*, struct detailed_timings *);
static Bool validate_version(int scrnIndex, struct edid_version *);
+static void
+handle_edid_quirks(xf86MonPtr m)
+{
+ int i, j;
+ struct detailed_timings *preferred_timing;
+ struct monitor_ranges *ranges;
+
+ /*
+ * max_clock is only encoded in EDID in tens of MHz, so occasionally we
+ * find a monitor claiming a max of 160 with a mode requiring 162, or
+ * similar. Strictly we should refuse to round up too far, but let's
+ * see how well this works.
+ */
+ for (i = 0; i < 4; i++) {
+ if (m->det_mon[i].type == DS_RANGES) {
+ ranges = &m->det_mon[i].section.ranges;
+ for (j = 0; j < 4; j++) {
+ if (m->det_mon[j].type == DT) {
+ preferred_timing = &m->det_mon[j].section.d_timings;
+ if (!ranges->max_clock) continue; /* zero is legal */
+ if (ranges->max_clock * 1000000 < preferred_timing->clock) {
+ xf86Msg(X_WARNING,
+ "EDID preferred timing clock %.2fMHz exceeds "
+ "claimed max %dMHz, fixing\n",
+ preferred_timing->clock / 1.0e6,
+ ranges->max_clock);
+ ranges->max_clock =
+ (preferred_timing->clock+999999)/1000000;
+ return;
+ }
+ }
+ }
+ }
+ }
+}
xf86MonPtr
xf86InterpretEDID(int scrnIndex, Uchar *block)
@@ -54,7 +88,9 @@ xf86InterpretEDID(int scrnIndex, Uchar *block)
&m->ver);
get_dt_md_section(SECTION(DET_TIMING_SECTION,block),&m->ver, m->det_mon);
m->no_sections = (int)*(char *)SECTION(NO_EDID,block);
-
+
+ handle_edid_quirks(m);
+
return (m);
error:
@@ -268,16 +304,18 @@ get_detailed_timing_section(Uchar *c, struct detailed_timings *r)
r->misc = MISC;
}
+#define MAX_EDID_MINOR 3
static Bool
validate_version(int scrnIndex, struct edid_version *r)
{
if (r->version != 1)
return FALSE;
- if (r->revision > 3) {
- xf86DrvMsg(scrnIndex, X_ERROR,"EDID Version 1.%i not yet supported\n",
- r->revision);
- return FALSE;
- }
+
+ if (r->revision > MAX_EDID_MINOR)
+ xf86DrvMsg(scrnIndex, X_WARNING,
+ "Assuming version 1.%d is compatible with 1.%d\n",
+ r->revision, MAX_EDID_MINOR);
+
return TRUE;
}
diff --git a/hw/xfree86/ddc/interpret_vdif.c b/hw/xfree86/ddc/interpret_vdif.c
index c21bac17a..3a17e2f33 100644
--- a/hw/xfree86/ddc/interpret_vdif.c
+++ b/hw/xfree86/ddc/interpret_vdif.c
@@ -1,4 +1,3 @@
-/* $XFree86: xc/programs/Xserver/hw/xfree86/ddc/interpret_vdif.c,v 1.5 1999/12/03 19:17:26 eich Exp $ */
#ifdef HAVE_XORG_CONFIG_H
#include <xorg-config.h>
diff --git a/hw/xfree86/ddc/print_edid.c b/hw/xfree86/ddc/print_edid.c
index 609738ad9..30b607d4f 100644
--- a/hw/xfree86/ddc/print_edid.c
+++ b/hw/xfree86/ddc/print_edid.c
@@ -1,4 +1,3 @@
-/* $XFree86: xc/programs/Xserver/hw/xfree86/ddc/print_edid.c,v 1.15 2001/05/22 17:01:23 tsi Exp $ */
/* print_edid.c: print out all information retrieved from display device
*
diff --git a/hw/xfree86/ddc/print_vdif.c b/hw/xfree86/ddc/print_vdif.c
index ededa21b2..13cd3abad 100644
--- a/hw/xfree86/ddc/print_vdif.c
+++ b/hw/xfree86/ddc/print_vdif.c
@@ -1,4 +1,3 @@
-/* $XFree86: xc/programs/Xserver/hw/xfree86/ddc/print_vdif.c,v 1.4tsi Exp $ */
#ifdef HAVE_XORG_CONFIG_H
#include <xorg-config.h>
diff --git a/hw/xfree86/ddc/vdif.h b/hw/xfree86/ddc/vdif.h
index 5c129aef0..1777b68a7 100644
--- a/hw/xfree86/ddc/vdif.h
+++ b/hw/xfree86/ddc/vdif.h
@@ -1,4 +1,3 @@
-/* $XFree86: xc/programs/Xserver/hw/xfree86/ddc/vdif.h,v 1.4tsi Exp $ */
#ifndef _VDIF_H
#define _VDIF_H
diff --git a/hw/xfree86/ddc/xf86DDC.c b/hw/xfree86/ddc/xf86DDC.c
index c989cd232..dd64bd56f 100644
--- a/hw/xfree86/ddc/xf86DDC.c
+++ b/hw/xfree86/ddc/xf86DDC.c
@@ -15,15 +15,6 @@
static const OptionInfoRec *DDCAvailableOptions(void *unused);
-const char *i2cSymbols[] = {
- "xf86CreateI2CDevRec",
- "xf86I2CDevInit",
- "xf86I2CWriteRead",
- "xf86I2CFindDev",
- "xf86DestroyI2CDevRec",
- NULL
-};
-
static MODULESETUPPROTO(ddcSetup);
static XF86ModuleVersionInfo ddcVersRec =
@@ -58,12 +49,6 @@ ddcSetup(pointer module, pointer opts, int *errmaj, int *errmin)
if (!setupDone) {
setupDone = TRUE;
xf86AddModuleInfo(&DDC, module);
- /*
- * Tell the loader about symbols from other modules that this module
- * might refer to.
- */
- LoaderRefSymLists(i2cSymbols, NULL);
-
}
/*
* The return value must be non-NULL on success even though there
@@ -121,15 +106,24 @@ static const OptionInfoRec DDCOptions[] = {
{ -1, NULL, OPTV_NONE, {0}, FALSE },
};
-#ifdef XFree86LOADER
/*ARGSUSED*/
static const OptionInfoRec *
DDCAvailableOptions(void *unused)
{
return (DDCOptions);
}
-#endif
+/**
+ * Attempts to probe the monitor for EDID information, if NoDDC and NoDDC1 are
+ * unset. EDID information blocks are interpreted and the results returned in
+ * an xf86MonPtr.
+ *
+ * This function does not affect the list of modes used by drivers -- it is up
+ * to the driver to decide policy on what to do with EDID information.
+ *
+ * @return pointer to a new xf86MonPtr containing the EDID information.
+ * @return NULL if no monitor attached or failure to interpret the EDID.
+ */
xf86MonPtr
xf86DoEDID_DDC1(
int scrnIndex, DDC1SetSpeedProc DDC1SetSpeed,
@@ -170,6 +164,17 @@ xf86DoEDID_DDC1(
return tmp;
}
+/**
+ * Attempts to probe the monitor for EDID information, if NoDDC and NoDDC2 are
+ * unset. EDID information blocks are interpreted and the results returned in
+ * an xf86MonPtr.
+ *
+ * This function does not affect the list of modes used by drivers -- it is up
+ * to the driver to decide policy on what to do with EDID information.
+ *
+ * @return pointer to a new xf86MonPtr containing the EDID information.
+ * @return NULL if no monitor attached or failure to interpret the EDID.
+ */
xf86MonPtr
xf86DoEDID_DDC2(int scrnIndex, I2CBusPtr pBus)
{
@@ -328,8 +333,6 @@ DDCRead_DDC2(int scrnIndex, I2CBusPtr pBus, int start, int len)
unsigned char *R_Buffer;
int i;
- xf86LoaderReqSymLists(i2cSymbols, NULL);
-
if (!(dev = xf86I2CFindDev(pBus, 0x00A0))) {
dev = xf86CreateI2CDevRec();
dev->DevName = "ddc2";
diff --git a/hw/xfree86/ddc/xf86DDC.h b/hw/xfree86/ddc/xf86DDC.h
index 8c7c67164..77994715e 100644
--- a/hw/xfree86/ddc/xf86DDC.h
+++ b/hw/xfree86/ddc/xf86DDC.h
@@ -1,4 +1,3 @@
-/* $XFree86: xc/programs/Xserver/hw/xfree86/ddc/xf86DDC.h,v 1.10 2000/06/07 22:03:09 tsi Exp $ */
/* xf86DDC.h
*
@@ -48,6 +47,9 @@ extern xf86vdifPtr xf86InterpretVdif(
CARD8 *c
);
+extern void
+xf86DDCMonitorSet(int scrnIndex, MonPtr Monitor, xf86MonPtr DDC);
+
extern Bool xf86SetDDCproperties(
ScrnInfoPtr pScreen,
xf86MonPtr DDC
@@ -57,6 +59,8 @@ extern void xf86print_vdif(
xf86vdifPtr v
);
+DisplayModePtr xf86DDCGetModes(int scrnIndex, xf86MonPtr DDC);
+
#endif
diff --git a/hw/xfree86/dixmods/Makefile.am b/hw/xfree86/dixmods/Makefile.am
index d1b806a7e..c34ddd6e3 100644
--- a/hw/xfree86/dixmods/Makefile.am
+++ b/hw/xfree86/dixmods/Makefile.am
@@ -18,6 +18,7 @@ module_LTLIBRARIES = libafb.la \
libcfb.la \
libcfb32.la \
libfb.la \
+ libwfb.la \
libmfb.la \
libshadow.la
@@ -31,7 +32,7 @@ fontsmoduledir = $(moduledir)/fonts
fontsmodule_LTLIBRARIES = libfreetype.la \
libtype1.la
-AM_CFLAGS = @XORG_CFLAGS@ @DIX_CFLAGS@ @SERVER_DEFINES@ @LOADER_DEFINES@
+AM_CFLAGS = @XORG_CFLAGS@ @DIX_CFLAGS@
INCLUDES = @XORG_INCS@ \
-I$(top_srcdir)/afb \
-I$(top_srcdir)/cfb \
@@ -64,6 +65,12 @@ libdbe_la_SOURCES = dbemodule.c
libfb_la_LDFLAGS = -avoid-version
libfb_la_LIBADD = $(top_builddir)/fb/libfb.la
libfb_la_SOURCES = $(top_builddir)/fb/fbcmap.c fbmodule.c
+libfb_la_CFLAGS = -DXFree86Server $(AM_CFLAGS)
+
+libwfb_la_LDFLAGS = -avoid-version
+libwfb_la_LIBADD = $(top_builddir)/fb/libwfb.la
+libwfb_la_SOURCES = $(top_builddir)/fb/fbcmap.c fbmodule.c
+libwfb_la_CFLAGS = -DXFree86Server $(AM_CFLAGS) -DFB_ACCESS_WRAPPER
libglx_la_LDFLAGS = -avoid-version
if AIGLX
@@ -93,8 +100,10 @@ libtype1_la_LDFLAGS = -avoid-version
libtype1_la_SOURCES = type1mod.c
libdixmods_la_SOURCES = $(top_srcdir)/mi/miinitext.c
+libdixmods_la_CFLAGS = -DXFree86LOADER $(AM_CFLAGS)
libxorgxkb_la_SOURCES = xkbVT.c xkbPrivate.c xkbKillSrv.c
+libxorgxkb_la_LIBADD = $(top_builddir)/dix/libdix.la
libxtrap_la_LDFLAGS = -avoid-version
libxtrap_la_LIBADD = $(top_builddir)/XTrap/libxtrap.la
diff --git a/hw/xfree86/dixmods/extmod/Makefile.am b/hw/xfree86/dixmods/extmod/Makefile.am
index 0b1245dd7..9f6c4081b 100644
--- a/hw/xfree86/dixmods/extmod/Makefile.am
+++ b/hw/xfree86/dixmods/extmod/Makefile.am
@@ -11,7 +11,7 @@ if XV
XV_SRCS = xvmod.c xvmodproc.h
endif
-AM_CFLAGS = @XORG_CFLAGS@ @SERVER_DEFINES@ @LOADER_DEFINES@
+AM_CFLAGS = @DIX_CFLAGS@ @XORG_CFLAGS@
INCLUDES = @XORG_INCS@ \
-I$(top_srcdir)/afb \
-I$(top_srcdir)/mfb \
diff --git a/hw/xfree86/dixmods/extmod/dgaproc.h b/hw/xfree86/dixmods/extmod/dgaproc.h
index eb9791098..5e424afb2 100644
--- a/hw/xfree86/dixmods/extmod/dgaproc.h
+++ b/hw/xfree86/dixmods/extmod/dgaproc.h
@@ -1,4 +1,3 @@
-/* $XFree86: xc/programs/Xserver/Xext/dgaproc.h,v 1.21 2000/06/30 19:06:54 keithp Exp $ */
#ifndef __DGAPROC_H
#define __DGAPROC_H
diff --git a/hw/xfree86/dixmods/extmod/modinit.h b/hw/xfree86/dixmods/extmod/modinit.h
index 3e185e460..41f060b2a 100644
--- a/hw/xfree86/dixmods/extmod/modinit.h
+++ b/hw/xfree86/dixmods/extmod/modinit.h
@@ -1,5 +1,3 @@
-/* $XdotOrg: xc/programs/Xserver/Xext/extmod/modinit.h,v 1.3 2005/04/20 12:25:13 daniels Exp $ */
-/* $XFree86: xc/programs/Xserver/Xext/extmod/modinit.h,v 1.1 2003/07/16 01:38:33 dawes Exp $ */
#ifdef HAVE_DIX_CONFIG_H
#include <dix-config.h>
@@ -10,7 +8,6 @@
#endif
#ifdef SHAPE
-extern void ShapeExtensionInit(INITARGS);
#define _SHAPE_SERVER_ /* don't want Xlib structures */
#include <X11/extensions/shapestr.h>
#endif
@@ -128,7 +125,12 @@ extern void ShmRegisterFuncs(
ShmFuncsPtr funcs);
#endif
+#ifdef XACE
+extern void XaceExtensionInit(INITARGS);
+#endif
+
#if 1
+extern void SecurityExtensionSetup(INITARGS);
extern void SecurityExtensionInit(INITARGS);
#endif
diff --git a/hw/xfree86/dixmods/extmod/vidmodeproc.h b/hw/xfree86/dixmods/extmod/vidmodeproc.h
index 918d1e4df..c5ad03af2 100644
--- a/hw/xfree86/dixmods/extmod/vidmodeproc.h
+++ b/hw/xfree86/dixmods/extmod/vidmodeproc.h
@@ -1,4 +1,3 @@
-/* $XFree86: xc/programs/Xserver/Xext/vidmodeproc.h,v 1.4 1999/12/13 01:39:40 robin Exp $ */
/* Prototypes for DGA functions that the DDX must provide */
diff --git a/hw/xfree86/dixmods/extmod/xf86dga.c b/hw/xfree86/dixmods/extmod/xf86dga.c
index 9979bfb30..0736167f8 100644
--- a/hw/xfree86/dixmods/extmod/xf86dga.c
+++ b/hw/xfree86/dixmods/extmod/xf86dga.c
@@ -1,4 +1,3 @@
-/* $XFree86: xc/programs/Xserver/Xext/xf86dga.c,v 3.21 2000/06/30 19:06:54 keithp Exp $ */
/*
diff --git a/hw/xfree86/dixmods/extmod/xf86dga2.c b/hw/xfree86/dixmods/extmod/xf86dga2.c
index 1f52d7416..fa9530860 100644
--- a/hw/xfree86/dixmods/extmod/xf86dga2.c
+++ b/hw/xfree86/dixmods/extmod/xf86dga2.c
@@ -3,7 +3,6 @@
Written by Mark Vojkovich
*/
-/* $XFree86: xc/programs/Xserver/Xext/xf86dga2.c,v 1.17 2001/10/28 03:32:51 tsi Exp $ */
#ifdef HAVE_XORG_CONFIG_H
diff --git a/hw/xfree86/dixmods/extmod/xf86misc.c b/hw/xfree86/dixmods/extmod/xf86misc.c
index 3ce3c4266..3a6f83eca 100644
--- a/hw/xfree86/dixmods/extmod/xf86misc.c
+++ b/hw/xfree86/dixmods/extmod/xf86misc.c
@@ -1,4 +1,3 @@
-/* $XFree86: xc/programs/Xserver/Xext/xf86misc.c,v 3.41 2003/11/17 22:20:27 dawes Exp $ */
/*
* Copyright (c) 1995, 1996 The XFree86 Project, Inc
diff --git a/hw/xfree86/dixmods/extmod/xf86miscproc.h b/hw/xfree86/dixmods/extmod/xf86miscproc.h
index 87a251767..93b193ca7 100644
--- a/hw/xfree86/dixmods/extmod/xf86miscproc.h
+++ b/hw/xfree86/dixmods/extmod/xf86miscproc.h
@@ -1,4 +1,3 @@
-/* $XFree86: xc/programs/Xserver/Xext/xf86miscproc.h,v 1.5 2002/11/20 04:04:58 dawes Exp $ */
/* Prototypes for Pointer/Keyboard functions that the DDX must provide */
diff --git a/hw/xfree86/dixmods/extmod/xf86vmode.c b/hw/xfree86/dixmods/extmod/xf86vmode.c
index bcd08bf90..44ec9f11d 100644
--- a/hw/xfree86/dixmods/extmod/xf86vmode.c
+++ b/hw/xfree86/dixmods/extmod/xf86vmode.c
@@ -1,4 +1,3 @@
-/* $XFree86: xc/programs/Xserver/Xext/xf86vmode.c,v 3.58 2003/11/06 18:37:57 tsi Exp $ */
/*
@@ -29,8 +28,6 @@ or other dealings in this Software without prior written authorization
from Kaleb S. KEITHLEY
*/
-/* $XdotOrg: xserver/xorg/hw/xfree86/dixmods/extmod/xf86vmode.c,v 1.9 2006/02/10 22:00:24 anholt Exp $ */
-/* $Xorg: xf86vmode.c,v 1.3 2000/08/17 19:47:59 cpqbld Exp $ */
/* THIS IS NOT AN X CONSORTIUM STANDARD OR AN X PROJECT TEAM SPECIFICATION */
#ifdef HAVE_XORG_CONFIG_H
diff --git a/hw/xfree86/dixmods/extmod/xvmod.c b/hw/xfree86/dixmods/extmod/xvmod.c
index 7899f3a75..7c1450c7a 100644
--- a/hw/xfree86/dixmods/extmod/xvmod.c
+++ b/hw/xfree86/dixmods/extmod/xvmod.c
@@ -1,4 +1,3 @@
-/* $XFree86: xc/programs/Xserver/Xext/xvmod.c,v 1.1 1998/08/13 14:45:36 dawes Exp $ */
#ifdef HAVE_XORG_CONFIG_H
#include <xorg-config.h>
diff --git a/hw/xfree86/dixmods/extmod/xvmodproc.h b/hw/xfree86/dixmods/extmod/xvmodproc.h
index b284e3f4e..81356a149 100644
--- a/hw/xfree86/dixmods/extmod/xvmodproc.h
+++ b/hw/xfree86/dixmods/extmod/xvmodproc.h
@@ -1,4 +1,3 @@
-/* $XFree86: xc/programs/Xserver/Xext/xvmodproc.h,v 1.2 2001/03/05 04:51:55 mvojkovi Exp $ */
#ifdef HAVE_DIX_CONFIG_H
#include <dix-config.h>
diff --git a/hw/xfree86/dixmods/fbmodule.c b/hw/xfree86/dixmods/fbmodule.c
index e8e6cd7c6..4df2646dd 100644
--- a/hw/xfree86/dixmods/fbmodule.c
+++ b/hw/xfree86/dixmods/fbmodule.c
@@ -33,7 +33,11 @@
static XF86ModuleVersionInfo VersRec =
{
+#ifdef FB_ACCESS_WRAPPER
+ "wfb",
+#else
"fb",
+#endif
MODULEVENDORSTRING,
MODINFOSTRING1,
MODINFOSTRING2,
@@ -45,4 +49,4 @@ static XF86ModuleVersionInfo VersRec =
{0,0,0,0} /* signature, to be patched into the file by a tool */
};
-_X_EXPORT XF86ModuleData fbModuleData = { &VersRec, NULL, NULL };
+_X_EXPORT XF86ModuleData FBPREFIX(ModuleData) = { &VersRec, NULL, NULL };
diff --git a/hw/xfree86/dixmods/type1mod.c b/hw/xfree86/dixmods/type1mod.c
index 48c1d0421..3da53eae5 100644
--- a/hw/xfree86/dixmods/type1mod.c
+++ b/hw/xfree86/dixmods/type1mod.c
@@ -57,9 +57,6 @@ static XF86ModuleVersionInfo VersRec =
_X_EXPORT XF86ModuleData type1ModuleData = { &VersRec, type1Setup, NULL };
extern void Type1RegisterFontFileFunctions(void);
-#ifdef BUILDCID
-extern void CIDRegisterFontFileFunctions(void);
-#endif
FontModule type1Module = {
Type1RegisterFontFileFunctions,
@@ -67,23 +64,11 @@ FontModule type1Module = {
NULL
};
-#ifdef BUILDCID
-FontModule CIDModule = {
- CIDRegisterFontFileFunctions,
- "CID",
- NULL
-};
-#endif
-
static pointer
type1Setup(pointer module, pointer opts, int *errmaj, int *errmin)
{
type1Module.module = module;
LoadFont(&type1Module);
-#ifdef BUILDCID
- CIDModule.module = module;
- LoadFont(&CIDModule);
-#endif
/* Need a non-NULL return */
return (pointer)1;
diff --git a/hw/xfree86/dixmods/xkbKillSrv.c b/hw/xfree86/dixmods/xkbKillSrv.c
index ee19454b0..415873ad0 100644
--- a/hw/xfree86/dixmods/xkbKillSrv.c
+++ b/hw/xfree86/dixmods/xkbKillSrv.c
@@ -1,4 +1,3 @@
-/* $Xorg: ddxKillSrv.c,v 1.3 2000/08/17 19:53:46 cpqbld Exp $ */
/************************************************************
Copyright (c) 1993 by Silicon Graphics Computer Systems, Inc.
@@ -24,7 +23,6 @@ OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH
THE USE OR PERFORMANCE OF THIS SOFTWARE.
********************************************************/
-/* $XFree86: xc/programs/Xserver/xkb/ddxKillSrv.c,v 1.3 2002/11/23 19:27:50 tsi Exp $ */
#ifdef HAVE_DIX_CONFIG_H
#include <dix-config.h>
diff --git a/hw/xfree86/dixmods/xkbPrivate.c b/hw/xfree86/dixmods/xkbPrivate.c
index 0479bcac3..e6d4f0fc0 100644
--- a/hw/xfree86/dixmods/xkbPrivate.c
+++ b/hw/xfree86/dixmods/xkbPrivate.c
@@ -1,4 +1,3 @@
-/* $XFree86: xc/programs/Xserver/xkb/ddxPrivate.c,v 1.2 2003/04/03 16:20:22 dawes Exp $ */
#ifdef HAVE_DIX_CONFIG_H
#include <dix-config.h>
@@ -26,13 +25,13 @@ XkbDDXPrivate(DeviceIntPtr dev,KeyCode key,XkbAction *act)
if (xf86act->type == XkbSA_XFree86Private) {
memcpy(msgbuf, xf86act->data, XkbAnyActionDataSize);
msgbuf[XkbAnyActionDataSize]= '\0';
- if (strcmp(msgbuf, "-vmode")==0)
+ if (strcasecmp(msgbuf, "-vmode")==0)
xf86ProcessActionEvent(ACTION_PREV_MODE, NULL);
- else if (strcmp(msgbuf, "+vmode")==0)
+ else if (strcasecmp(msgbuf, "+vmode")==0)
xf86ProcessActionEvent(ACTION_NEXT_MODE, NULL);
- else if (strcmp(msgbuf, "ungrab")==0)
+ else if (strcasecmp(msgbuf, "ungrab")==0)
xf86ProcessActionEvent(ACTION_DISABLEGRAB, NULL);
- else if (strcmp(msgbuf, "clsgrb")==0)
+ else if (strcasecmp(msgbuf, "clsgrb")==0)
xf86ProcessActionEvent(ACTION_CLOSECLIENT, NULL);
else
xf86ProcessActionEvent(ACTION_MESSAGE, (void *) msgbuf);
diff --git a/hw/xfree86/dixmods/xkbVT.c b/hw/xfree86/dixmods/xkbVT.c
index c637d5545..a1cdc7016 100644
--- a/hw/xfree86/dixmods/xkbVT.c
+++ b/hw/xfree86/dixmods/xkbVT.c
@@ -1,4 +1,3 @@
-/* $Xorg: ddxVT.c,v 1.3 2000/08/17 19:53:46 cpqbld Exp $ */
/************************************************************
Copyright (c) 1993 by Silicon Graphics Computer Systems, Inc.
@@ -24,7 +23,6 @@ OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH
THE USE OR PERFORMANCE OF THIS SOFTWARE.
********************************************************/
-/* $XFree86: xc/programs/Xserver/xkb/ddxVT.c,v 1.3 2002/11/23 19:27:50 tsi Exp $ */
#ifdef HAVE_DIX_CONFIG_H
#include <dix-config.h>
diff --git a/hw/xfree86/doc/Makefile.am b/hw/xfree86/doc/Makefile.am
index 55e69b035..6d8f4d213 100644
--- a/hw/xfree86/doc/Makefile.am
+++ b/hw/xfree86/doc/Makefile.am
@@ -5,9 +5,6 @@ SUBDIRS = man
endif
EXTRA_DIST = \
- changelogs/CHANGELOG \
- changelogs/CHANGELOG.ND \
- changelogs/CHANGELOG.R5 \
README.DRI \
README.fonts \
README.rapidaccess
diff --git a/hw/xfree86/doc/changelogs/CHANGELOG b/hw/xfree86/doc/changelogs/CHANGELOG
deleted file mode 100644
index a8d6dffac..000000000
--- a/hw/xfree86/doc/changelogs/CHANGELOG
+++ /dev/null
@@ -1,18691 +0,0 @@
-XFree86 4.4.0 (29 February 2004)
- 821. Fix Radeon secondary head register initialization (Hui Yu@ATI,
- Benjamin Herrenschmidt).
- 820. ati & atimisc module changes (Marc La France)
- - Allow builds with ATIAvoidNonPCI && !ATIAvoidCPIO;
- - Make handling of unknown Radeon's saner;
- - Add private option to re-enable BIOS display switches;
- - Deal with ati & atimisc module version skews;
- - Fix private option handling;
- 819. Fix rendition driver system lockup on changes to text mode
- (Bugzilla #1204, Eric Wittry).
- 818. Make the "fp=n" TTCap option behave the same with the FreeType backend
- as with the X-TT backend (Bugzilla #1163, Chisato Yamauchi).
- 817. Fix the disappearance of the RAW_ASCENT, RAW_DESCENT, RAW_PIXEL_SIZE,
- and RAW_POINT_SIZE properties for the FreeType backend (Bugzilla #1163,
- Chisato Yamauchi).
- 816. Fix a FreeType backend problem with the font ascent/descent being
- incorrect with some fonts (Bugzilla #1163, Chisato Yamauchi, reported by
- Michael Lampe).
- 815. Fix for detection of hardwired panel for the via driver (Bugzilla #813,
- Luc Verhaegen, reported by Johannes Specht).
- 814. Fix missing ';' in via_driver.c hidden by an empty macro (Bugzilla #813,
- Luc Verhaegen).
- 813. Add FT_Get_Postscript_Name() to the freetype2 export list for OS/2.
- This is needed for the recent PostScript fontname property fix
- (Bugzilla #1189, Frank Giessler).
- 812. Fix MGA driver for big endian and EXTRADEBUG compilation (derived from
- #6132, Rene Rebe).
- 811. Turn off the GetDisplayInfo BIOS call by default and add an option
- to turn it back on in the i810 driver. This fixes some lockup
- problems found with some Dell BIOS' (Alan Hourihane, Alain Poirier).
- 810. Fix compile issue in imstt driver (#6140, Rene Rebe)
- 809. Only reset primary head of a Radeon (#6133, Rene Rebe).
- 808. Fix big-endian typo in xf86CopyYUV12ToPacked (#6131, Rene Rebe).
- 807. Fix neomagic white screen/lockup bug introduced in 4.3.99.15 (Bugzilla
- #1179, #1157, David Dawes).
- 806. Fixing DPMS: let modification of DPMS timeout take effect immeditately,
- don't activate DPMS when disabled (Egbert Eich).
-
-XFree86 4.3.99.903 (15 February 2004)
- 805. Resync the pci.ids data with pciids.sf.net (2004-02-15 snapshot).
- 804. Improve X server performance on OS/2 when using TCP transport:
- - Let the server set TCP_NODELAY, et al.
- - Change the behavior of os2PseudoSelect() on sockets.
- (Bugzilla #1175, Frank Giessler).
- 803. X server on OS/2 doesn't respect AutoRepeat on/off unless XKB is disabled
- (Bugzilla #1174, Frank Giessler).
- 802. Licence update.
- 801. Optimise SlowBcopy() for ia64 architecture (Marc La France).
- 800. Simplify vgaHWSaveFonts() and vgaHWRestoreFonts() to fix hangs seen with
- certain nVidia boards on ZX1-based systems (Marc La France).
- 799. Some more font path checks.
- 798. Don't define X_LOCALE on Panther (Etsushi Kato and Toshimitsu Tanaka).
- 797. Fix GL_VERSION string for indirect rendering (Bugzilla #1147, DRI Project)
- 796. Fix the 1024x576 modes in the via driver (Bugzilla #812, Luc Verhaegen,
- reported by Julian Cable).
- 795. Add uz_UZ locale (Bugzilla #1151, Mashrab Kuvatov).
- 794. Fix font alias overrun.
- 793. Fix for the way the FreeType backend sets the
- _ADOBE_POSTSCRIPT_FONTNAME property for Type1 fonts (Bugzilla #1123,
- David Dawes, based on Roland Mainz, reported by David Capshaw).
- 792. Fix formatting of the XLookupString bytes that xev prints out (Bugzilla
- #1153, Noah Levitt).
- 791. Likely fix for FreeBSD 5.2 libGL build problem (David Dawes, reported by
- Terry R. Friedrichsen).
- 790. Fix typo in bsd_mouse.c (Tyler Retzlaff).
- 789. Fix off-by-one errors in the emulation of an ix86's BT, BTS, BTR and BTC
- instructions (Marc La France).
- 788. Fixing segfaults that may happen in some corner cases on VT switch
- and int10 initialization (Egbert Eich).
- 787. Increase PCI I/O space size on Linux/PowerPC (Bugzilla #1143,
- Paul Mackerras).
- 786. Fix DRI cleanup at exit and re-enabling on reset for the via driver
- (Bugzilla #998, Thomas Hellström).
- 785. Fix Xv error propagation to the client for the via driver (Bugzilla #998,
- Thomas Hellström).
- 784. Fix a problem when utilizing DrawArrays when indirect rendering
- (Bugzilla #1142, DRI Project).
- 783. Xterm followup fix for Bugzilla #981 (Thomas Dickey).
- 782. Fix EXT version of vertex arrays (DRI Project).
- 781. Fix long-standing off-by-one bug in calculating dimensions of single
- (private) back cliprect when the window is partially offscreen in
- libdri.a (Keith Whitwell)
- 780. Don't do the MGAISBUSY() loop in MGAStormSync() for Mystique cards
- because this reportedly results in an infinite loop (Bugzila #85,
- David Dawes, reported by Phil ??? and Stéphane VOLTZ).
- 779. Make sure the r128 driver enables the hsync and vsync signals after
- programming a video mode (Bugzilla #935, Kevin Martin).
- 778. Fix Multitexture problems with vertex arrays and indirect rendering
- (Bugzilla #1092, DRI Project).
- 777. Fix SecondaryColor & FogColor when indirect rendering (Bugzilla #1091,
- DRI Project).
- 776. Fix build failures on Mac OS X 10.1.x (Torrey T. Lyons).
- 775. Fix a timing problem in the nsc driver that prevents the display from
- working in some cases (Bugzilla #840, Hansruedi Glauser, Alan Hourihane).
- 774. Via driver workaround to handle setting WC for the video memory when
- initially only part of it has WC set (Bugzilla #1010 Thomas Hellström).
- 773. Fix the XAA clipping flags for the via driver, which fixes a line
- drawing problem seen with OpenOffice Calc (Bugzilla #1026,
- Thomas Hellström).
- 772. HKSCS and GB18030 support for luit (Bugzilla #1048, Zarick Lau).
- 771. Fix some remaining memory allocation related problems with the via
- driver (Bugzilla #998, Thomas Hellström).
- 770. Add a UseRpath build switch to allow the use of -rpath to be enabled
- or disabled from the host.def file. Implemented for *BSD, Hurd, Linux.
- The default settings remains as before (David Dawes).
- 769. Add a root window property called XFree86_VT that holds the VT number
- that the XFree86 server is running on (Andrew Aitcheson, suggested by
- Samuel Thibault).
- 768. Fix a problem where root window properties registered with
- xf86RegisterRootWindowProperty() are not re-registered after server
- regeneration (David Dawes, reported by Samuel Thibault).
- 767. Fix xtest failures for the savage driver's zero width lines by
- removing the TwoPointLine and using only the Bresenham version
- (reported by Nicolas Joly).
- 766. Fix refresh rate setting for 845G/856G systems that don't support the
- Intel-specific refresh rate BIOS calls (Bugzilla #1106, David Dawes,
- reported by Lucian Precup).
- 765. Fixes/build updates for BSD/OS 5.1 and 4.3.1 (Bugzilla #1111, Kurt Lidl).
- 764. Fix a problem in libXmu's FindChildren() that can cause a crash by
- copying memory from outside the bounds of an array (Bugzilla #1109,
- John Tillman).
- 763. Add missing TimerCallback in trident_video.c to shutdown the video.
- This could account for many peoples lockups with video on Trident chips.
- Also, add a Wait for vsync when programming video modes to avoid lockups.
- (Yukun Chen, Alan Hourihane).
- 762. Fix a lockup problem on Trident Blade3D engines by permanently turning
- on PCI Retry. Also sync the engine on CloseScreen and LeaveVT.
- (Yukun Chen, Alan Hourihane).
- 761. Fix getaddrinfo() return value check in SmsGenerateClientID() that was
- causing a crash when the current hostname is unresolved, and returning
- a NULL id otherwise (Bugzilla #1096, David Dawes).
- 760. Support automatic configuration of the X server on OpenBSD with
- wsmouse-supported mices. (Matthieu Herrb).
- 759. Updates for XKB keyboard maps:
- - Add Tibetan/Dzongkha keyboard layout (Bugzilla #1082, Gregory Mokhin).
- - Add three new Internet/multimedia keyboard descriptions
- (Bugzilla #1088, Radics Laszlo).
- 758. Add overlooked SecondaryColor entries to AppleDRI indirect dispatch
- table (Torrey T. Lyons).
- 757. Allocate pBIOSInfo->UserSetting in the via driver, which fixes a crash
- (James Harris).
- 756. Fix Linux drm kernel modules to handle the nopage() prototype change in
- Linux 2.6.1 (Michel Dänzer, from DRI CVS).
- 755. Fix use of dynamic xcursors on OS/2 (Bugzilla #1087, Frank Giessler).
- 754. Fix the fbdev driver so that it allows 24-bit pixel size, and disable
- the RandR extension when rotation is enabled (Jonathan Thambidurai).
- 753. Rendition driver fixes:
- - Fix the mode size limits so that the set of modes that the driver
- accepts isn't unnecessarily restricted.
- - Fix color palette refreshing after VT switching.
- - Fix a core dump at server exit with the hardware cursor was enabled.
- - Add checking for supported depths. Without this the server could
- crash if an unsupported depth was specified.
- (Eric Wittry)
- 752. Update XKB registry file rules/xfree86.xml (Sergey Oudaltsov).
- 751. Fix some rules in en_US.UTF-8 Compose file (Bugzilla #1071,
- Matthew Fischer).
- 750. Add some content (supported hardware and driver options) to the tdfx(4)
- man page (Bugzilla #1068, Nicolas Joly).
- 749. Make '-pn' (partial network) the default for all X servers, and document
- the '-nopn' option (David Dawes).
- 748. Allow rstartd.real to be installed into a location other than LIBDIR
- (#6034, Luke Mewburn).
- 747. Allow xdm's chooser to be installed into a directory other than LIBDIR
- (#6033, Luke Mewburn).
- 746. Add XKB description for the Logitech Access keyboard (#6026,
- Michael Geddes).
- 745. Fix typo in computing xterm's relative font size (Jess Thrysoee).
- 744. Fix typo in savage man page (Bugzilla #1065, Nicolas Joly).
- 743. Fix for xf86Msg() call with swapped arguments (Bugzilla #1064,
- Nicolas Joly).
- 742. Set the dependencies correctly for SCO shared libraries, and use gcc
- for linking instead of ld (Bugzilla #1045, Kean Johnston).
- 741. Some cleanups for the SCO support, and a few changes required for
- compilation on UnixWare (Bugzilla #1045, Kean Johnston).
- 740. Make the X server lock file code treat the display string in the same
- way as the local listener code (i.e., convert it to an integer then back
- to a string). This fixes a problem where an non-numeric display
- argument could cause a second server to be started on display :0,
- replacing the local listener nodes for the original server.
- (Bugzilla #1056, David Dawes, reported by Robin Schoonover).
- 739. Fix xfs and xdm core dumps in BecomeOrphan(), and rework/simplify
- the BecomeDaemon() code (Bugzilla #1060, #1074, David Dawes,
- reported by Martin Birgmeier).
- 738. Add a "VBERestore" option for the i830 part of the i810 driver, to
- allow the VBE restore bug workaround to be disabled. This is needed
- for correct text mode restoration on some 830M-based machines
- (David Dawes, reported by Martin van Es).
- 737. Fix memory leak when list of registered renderers are cleared at the
- start of each new server generation (Kevin Martin and Rik Faith).
- 736. Fix memory double freeing at XIM destroying in imLcIm.c (Ivan Pascal,
- reported: Bugzilla #1015).
- 735. Add xkb keymap for Microsoft Mutimedia Keyboard keys (Bugzilla #1052,
- Jacques Legare).
- 734. Update Compose file for en_US.UTF-8 locale (Bugzilla #1053,
- Matthew Fischer) and fix wrong comment signs there (Ivan Pascal).
- 733. VIA driver fixes:
- - Restructure the via driver's cache allocation to work with both
- the VIA and new open DRI module, and remove the now unneeded
- version check (Thomas Hellström, Alan Cox, bugzilla #998).
- - Remove special case lindvd hack (Alan Cox)
- - Add support for Xv when unaccelerated (Thomas Hellström)
- (Bugzilla #998, #1020, #1021).
- 732. Check for a NULL argument in XSetICFocus() before dereferencing it.
- This fixes crashes with some XIM software (see
- http://bugzilla.mozilla.gr.jp/show_bug.cgi?id=2961#c19).
- 731. Improve the i810 bitblt bug workaround, and re-enable the pixmap cache
- at depth 24 (David Dawes).
- 730. Workaround for lockup at mode switch with an i810 (David Dawes).
- 729. Fix transparent mono 8x8 pattern fills for the i810 (David Dawes).
- 728. Disable XKB by default in XDarwin (Torrey T. Lyons).
- 727. Fix manpage build warnings on Panther (Matthieu Herrb).
- 726. Make sure that the ring buffer is flushed in I810CloseScreen(). This
- fixes unpredictable behaviour that sometimes shows up after server
- exit/restart or server reset, including memory corruption, spontaneous
- reboots, etc, and some odd xtest behaviour (David Dawes).
- 725. Xdmcp fixes for IPv6 and mixed IPv6/IPv4 operation. (Mario Klebsch,
- Matthieu Herrb).
- 724. Update rman by merging XFree86 changes to rman 3.2 (Thomas Dickey).
- 723. Create fonts.scale and fonts.dir files in the target directories at
- 'make install' time. This fixes several problems where some font
- entries get left out (David Dawes).
- 722. Add the Bitstream Vera fonts (Bitstream, Inc and The Gnome Project).
- 721. Xterm patches #183, #184 (Thomas Dickey).
- 720. Build fix for the Chips driver on Linux/arm (#6011, Michel Dänzer and
- Othmar Pasteka).
- 719. Change v4l "norm" names to the bttv versions (#5993,
- Marco Antonio Alvarez).
- 718. Fix for symbols/hr map (#5991, Vlatko Kosturjak).
- 717. The current VIA DRI driver isn't remotely compatible with the current
- code, so make sure it isn't loaded by requiring version 2.0.0 or later
- (Alan Cox).
- 716. Fix VIA KM400 memory detection (Luc Verhaegen, Bugzilla #813).
- 715. Fix a long standing VIA Xv problem with totem/xine and YUV surface
- types (Uberto Barbini).
- 714. VIA driver updates/fixes:
- - Remove HARDWARE_NEEDS_PROGRAMMED_ORIGIN (Bugzilla #1011).
- - Allocate the UserSetting structure and use it. Changed the names so
- its uses can be tracked through the tree (Bugzilla #1006, #1014).
- - Remove dead FIFO handling code.
- - Clean up formatting in via_bios.h, via_driver.h.
- - via_tuner module (1/2 of Bugzilla #1012, #1013):
- + Add via_tuner structures and methods.
- + Handle the back end work for boards with Philips SAA71xx
- devices on the I2C bus providing one or two TV overlays.
- + Handle CXA2104S audio decoder if present.
- + Handle FI1236 TV tuners if present.
- - Remove bogus DriverVersion, DriverName stuff.
- - Xv updates (Bugzilla #1013):
- + Remove DDR mode tables and compute supported overlay modes properly.
- + Remove various bits of dead code.
- + Probe for Tuners in the Xv setup.
- + Don't advertise XvImageMask on the tuner overlays - they can't do it.
- + Clean up tuner channel computation.
- + Make the property setting code use the via_tuner backend.
- + Fix formatting of the various YUV copying loops.
- (Alan Cox).
- 713. Add a missing code for jisx0208.1990-0.enc (Chisato Yamauchi).
- 712. Xtt2 update: Restore the behaviour of "bw" TTCap option for Netscape 4.x.
- (Chisato Yamauchi).
- 711. Fix neomagic driver default mode selection to match the detected
- panel size. This allows it to work correctly with automatic
- configuration (David Dawes).
- 710. Fixes and updates for XKB keyboard maps:
- - Fix Armenian phonetic keymap (Bugzilla #1016, Ani).
- - Fix rules for Brasilian ABNT2 keyboard (Ricardo Y. Igarashi).
- - Add Shift+CapsLock group switcher (Ivan Pascal, see Bugzilla #1025).
- - Update rules/xfree86.lst with missing descriptions (Ivan Pascal).
- 709. Build fix for Solaris Express (Bugzilla #1032, Alan Coopersmith).
- 708. Fix warning in lib/Xt/Alloc.c (Bugzilla #1035, Nicolas Joly).
- 707. Fix short overflow problem with box clipping in fb/fbcopy.c
- (Bugzilla #978, Stephen McCamant).
- 706. Fix logic in xterm's get_pty() for platforms where old-style pty's are
- preferred to /dev/ptmx (Bugzilla #997, Kean Johnston, Thomas Dickey).
- 705. Fix handling of eightBitInput for UTF-8 locales in xterm (Thomas Dickey).
- 704. Merge recent cygwin-related changes from freedesktop.org's config/cf
- (Thomas Dickey).
- 703. Disable Xv in the via driver when acceleration is disabled (Alan Cox).
- 702. Fix bugs caused by empty PCI buses on ZX1-based systems (Marc La France).
- 701. Fix optional save/restore of BIOS area data in int10 module
- (Marc La France).
- 700. Update Swedish localization of XDarwin GUI (Patrik Montgomery).
- 699. Fixes to build/run on cygwin (Thomas Dickey). This includes a workaround
- for _XtInherit by Ralf Habacker, needed to run applications such as xman.
- 698. Warning fixes for gcc 3.3.2 (Marc La France).
- 697. Fix file descriptor leaks in xdm (Marc La France).
- 696. Fix memory leaks in libFS (Marc La France).
- 695. Security fix: change xdm to use mkstemp(), where available, instead of
- mktemp() (Marc La France).
- 694. Update XKB registry file rules/xfree86.xml (Sergey Oudaltsov).
- 693. Fix for FreeType-related crash when attempting to draw a missing glyph
- with constant-width fonts (Chisato Yamauchi).
-
-XFree86 4.3.99.902 (18 December 2003)
- 672. Fixes for xterm (Thomas Dickey):
- - Add a limit-check in selection to fix a bug in triple-clicking
- (Bugzilla #981)
- - add -v/-version/-h/-help options to uxterm (Debian #223926)
- 671. Updates for SCO support (Bugzilla #994, Kean Johnston).
- 670. Don't build the Aiptek driver unless HasLinuxInput is set
- (Bugzilla #972, Andrew Aitchison).
- 669. A new fixed version of the zh_CN.UTF-8 locale file (Bugzilla #991,
- James Su).
- 668. Fix locale.dir/locale.alias bugs that break the zh_CN.GB2312 locale
- (Bugzilla #990, James Su).
- 667. Fixes and updates for XKB keyboard maps:
- - Add to 'us' keymap backslash key that can be rewritten in other layouts
- (Bugzilla #976, Børre Gaup).
- - Fix some keys in Georgian latin keymap (Bugzilla #985, Vano Beridze).
- - Add Korean keymap (Jungshik Shin).
- - Add French variant of 'dvorak' keymap (Josselin Mouette).
- - Fix wrong key type in the 'keymap without special keys' (Ivan Pascal).
- 666. Via driver updates:
- - Fix pixmap caches and Xv. The blitter has a 2048 pixel limit so we
- must constrain the pixmap cache.
- - Rip out all the memory allocator garbage and put it in one place.
- - Allow optional use of AlanH's new linear allocator (not yet heavily
- tested).
- - Fix allocation bugs that this clean up made visible.
- - Add missing I2C symbols.
- - Some small formatting/other cleanups.
- (Alan Cox).
- 665. Fix a problem with distinguishing unassigned characters in the FreeType
- backend (Bugzilla #975, Roland Mainz, Chisato Yamauchi).
- 664. Update Japanese localization of XDarwin GUI (Toshimitsu Tanaka).
- 663. Fix setjmp-related build issues on Solaris 2.5.1/x86 (Lindsay Haigh).
- 662. Xdm, xf86cfg, mkfontscale and fonttosfnt fixes for platforms without
- snprintf() (Lindsay Haigh).
- 661. Update Brazilian keyboard map (Ricardo Y. Igarashi).
- 660. Fix a bug in the fbgc.c code that caused the even stipple code path to
- be used instead of the odd stipple path. Basically causing glitches in
- rendering or no rendering at all. (Alan Hourihane).
- 659. Fix XDarwin crash in IOKit mode for certain screen resolutions
- (Torrey T. Lyons).
- 658. DRI update - update the SiS DRI driver from DRI trunk (Eric Anholt).
- 657. Fix mouse wheel code again for PowerPC (#5990, Rene Rebe).
- 656. Fix sparc asm glapi initialisation in libGL when using indirect rendering
- (GLX) (Bugzilla #923, Ferris McCormick).
- 655. Disable the OPTGX1SubsequentHorVertLine() function in the NSC Geode
- GX1 driver to due problems falling back to the FillRectSolid function.
- (Alan Hourihane, See Bugzilla #841 for reasons).
- 654. Add sun.unicode.india-0.enc (Bugzilla #939, JungShik Shin, Roland Mainz).
- 653. Fix an x86emu crash for a BIOS that references the FS (or GS) register
- (Sergey Babkin).
- 652. Install the DRM kernel module source under ProjectRoot/src (David Dawes).
- 651. Update XKB registry file rules/xfree86.xml (Sergey Oudaltsov).
- 650. Fix '-nolisten tcp' when building with IPv6 disabled (Bugzilla #651,
- Andrew Bevitt).
- 649. Add some missing dead-key compose sequences for Vietnamese (#5981,
- Le Hong Boi).
- 648. Fix a problem with the v4l driver not seeing all the tv-norms
- available under the bttv driver with the Linux 2.6.0-test11 kernel
- (#5976, Marco Antonio Alvarez).
- 647. Build fix after recent REGION_* changes (Part of #5983, Oswald
- Buddenhagen, and #5984, Alexander Stohr).
- 646. Fix for XKB map 'altwin' to avoid one keysym to more than one modifier
- mapping (Ivan Pascal).
-
-XFree86 4.3.99.901 ( 2 December 2003)
- 645. Update xterm's checking of modifiers to match change 635, and handle
- the case of keys like Meta_L being in more than one modifier. This
- addresses an issue arising from Bugzilla #924 (David Dawes).
- 644. When XDM-AUTHORIZATION-1 is used with IPv6 IPv4-mapped addresses,
- (which should not happen with change 643, but can be done with other
- xdm implementations) send the IPv4 address in the auth data; otherwise
- send fake data for alignement purposes. (Matthieu Herrb).
- 643. Don't generate XDM-AUTHORIZATION-1 authentification data for
- IPv6 connections (Matthieu Herrb).
- 642. Fix fontconfig timestamp checking problem that shows up on JFS
- (Bugzilla #932, Frank Giessler).
- 641. Restore VT ownership at XFree86 server exit on Linux. Should do the
- same for other platforms that change change VT ownership at startup
- (Bugzilla #927, Andrew Bevitt).
- 640. Fix Mesa/GL problem on Linux with -mcpu=ultrasparc (reported by
- Ferris McCormick).
- 639. Fix a problem connecting to an IPv4-only X server running on a
- machine which happens to have an AAAA DNS record from a NetBSD or
- OpenBSD host with IPv6 configured (Matthieu Herrb).
- 638. Don't use IPv6 sockets with IPv4-mapped addresses (::FFFF:w.x.y.z)
- when making IPv4 connections with the "tcp" transport type. This
- fixes problems on platforms (such as FreeBSD 5.1) which disable
- IPv4-mapped addresses by default. It also fixes a problem with
- XDM-AUTHORIZATION-1 for IPv4 connections with the default "tcp"
- transport as reported in Bugzilla #903 (David Dawes).
- 637. Fix backward compatibility of Xlib+IPv6 for apps linked against a libc
- without IPv6 support (David Dawes).
- 636. Restore the behaviour of scalable fonts.dir entries in directories with
- the ":unscaled" attribute (Chisato Yamauchi, David Dawes, reported by
- Mike Fabian).
- 635. Fix xmodmap's output of the modifiers map when the first column keysym
- is empty (Ivan Pascal).
- 634. Fixes for XKB keyboard maps:
- - fix Meta, Super, Hyper keysyms interpretation
- - fix typo in rules/xfree86.xml (Ivan Pascal).
- 633. DRI updates.
- - Latest kernel drivers from the DRI trunk.
- - Fix FB_LOCATION in radeon driver (Michel Daenzer).
- - Texture managment code consolidation (Ian Romanick)
- - i830 stencil fix (Keith Whitwell)
- - mga blend fixes (Ville Syrjala)
- 632. Fix a problem that prevented the i810 driver from using dot clocks less
- than 12MHz (which appear to work) (Bugzilla #925, Richard Dengler).
- 631. Fix a server crash that can happen when loading some CID fonts
- (Bugzilla #906, David Dawes).
- 630. Restructured version of the wacom driver, with support for TwinView,
- fixed bugs and added filters (Bugzilla #537, Ping Cheng).
- 629. Fix libfontenc link failure on OS/2 (Bugzilla #921, Frank Giessler).
- 628. OS/2 fixes:
- - Unable to connect to a font server.
- - SIGFPE in GLX.
- (Bugzila #920, Frank Giessler).
- 627. Add a missing entry to big5hkscs-0.enc (Bugzilla #917, Jungshik Shin).
- 626. Update libfreetype-xtt2 to version 1.1a:
- - Fixed erroneous method of making up italic bitmap.
- (Chisato Yamauchi, After X-TT Project).
- 625. OS/2 build fixes:
- - Cleanup of bootstrap leftovers in xc/config/imake.
- - Explicitly define int32_t and int64_t in Mesa.
- - Missing Xft/Imakefile patch.
- (Bugzilla #915, Frank Giessler).
- 624. Fix hide/unhide of XDarwin application with xpr when an AppleWM-aware
- window manager is not present (Torrey T. Lyons).
- 623. Fix generic rootless code bug which caused the wrong region to be
- damaged on window resize (Torrey T. Lyons).
- 622. Fix server crash when doing 'listwithinfo' of an outline font in
- a directory marked ":unscaled" (Bugzilla #911, David Dawes).
- 621. Fix a key truncation problem with 'xauth add' (Bugzilla #903,
- David Dawes).
- 620. With AppleDRI, don't use APPLE_fence as a replacement for NV_fence
- calls (John Harper).
- 619. Fix intermittent XDarwin crash when quitting (Torrey T. Lyons).
- 618. Build fixes and updates for GNU/Hurd and GNU/K*BSD systems (Bugzilla
- #907, #908, Robert Millan).
- 617. Xterm fixes (Bugzilla #893, #905, Thomas Dickey).
- 616. XDarwin fixes:
- - Fix intermittent crash on XDarwin startup.
- - Fix failure to redraw after resizing with cr implementation.
- - Fix install failure when DESTDIR is specified (Reported by
- Benjamin Reed).
- (Torrey T. Lyons).
- 615. Add command line options to mkfontscale to enable/disable generation
- of iso10646-1 lines (Bugzilla #885, Roland Mainz).
- 614. Add a more complete set of the encodings we support to mkfontscale
- (Bugzilla #884, Roland Mainz).
- 613. Add ansi-1251 encoding file (Bugzilla #884, Roland Mainz).
- 612. Update XDMCP to use the IPv6 multicast address that has been assigned
- by IANA. Draft XDMCP 1.1 specs updated accordingly (Bugzilla #895,
- Alan Coopersmith).
- 611. Add 'defined(VT_ACTIVATE)' to the test for platforms that support VT
- switching (based on Bugzilla #894, Robert Millan).
- 610. Make several tests for glibc features glibc-specific rather than
- specific to the underlying OS (Bugzila #890, 891, Robert Millan).
-
-XFree86 4.3.99.16 (20 November 2003)
- 609. Fix 'constype' for modern framebuffers on Solaris (Bugzilla #890,
- Alan Coopersmith).
- 608. Fix a thread deadlock problem in libXp (Bugzilla #887, Roland Mainz).
- 607. Fix event buffer overrun in the wacom driver (Bugzilla #882, David Dawes,
- reported by Jonathan Hough).
- 606. Add unmapping code to DGAUnmapPhysical() for most systems that use
- mmap(). Without this lots of map/unmap calls would result in running
- out of address space and/or file handles (Bugzilla #880, David Dawes,
- reported by Eckhard Neber).
- 605. Restore the Windows keycodes in the 'xfree86' XKB keycodes map,
- and add the Solaris-compatible tokens as aliases (reported by
- Panagiotis Papadakos).
- 604. Fix some problems building against external installations of
- freetype2 (David Dawes).
- 603. Add font bounds checking to the X server side of the font server
- interface (Chisato Yamauchi, David Dawes).
- 602. Fix ForcePCIMode option to work as advertised in Radeon driver
- (Bugzilla #850, Kevin Martin).
- 601. Update the fonts document for the FreeType backend changes
- (Chisato Yamauchi, Reiko Nakajima, After X-TT Project).
- 600. Don't allow the lack of "SUPERSCRIPT TWO" to prevent Adobe Standard
- Cyrillic encoded fonts from being accepted as "koi8" capable
- (Michail Vidiassov).
- 599. Xvfb didn't have enough pixmap formats for Render (David Dawes).
- 598. Fix the processing of xdm/config/Xres.cpp, which is broken with
- gcc 3.3.2 (reported by Chisato Yamauchi).
- 597. Fix two problems with Xvfb:
- - Too much memory was allocated because of a confusion between
- bytes and pixels.
- - The XWD header was corrupted at server reset.
- (David Dawes).
- 596. Fix several problems xwud has displaying TrueColor dumps (extreme
- slowness displaying on TrueColor visuals, and incorrectness displaying
- on DirectColor visuals) (David Dawes).
- 595. Rank TrueColor above DirectColor in xwud. This avoids colourmap flashing
- by default when running on a server with both visuals available
- (David Dawes).
- 594. Build with Xplugin support by default on Panther (Torrey T. Lyons).
- 593. On Mac OS X, allow "X -version" to work without connecting to
- CoreGraphics (Torrey T. Lyons, reported by Benjamin Reed).
- 592. Don't optimize away window restacks in rootless mode (John Harper).
- 591. Fix problems preventing mesa-based GLX from working with Xnest, even
- though it is linked in and advertised (David Dawes).
- 590. Fix typing in XDarwin Preference panel going to X11 (Torrey T. Lyons).
- 589. Fix rootless build after REGION_* macro rework (Torrey T. Lyons).
- 588. Fix broken GLX indirect rendering (David Dawes).
- 587. Fix the XKB definitions for the "Hiragana_Katakana" key, and fix
- some incorrect definitions in symbols/jp (Chisato Yamauchi).
- 586. Change the mkfontdir wrapper script to invoke mkfontscale via its full
- path name (Chisato Yamauchi).
- 585. Modify xf86config and xf86cfg to enable loading the "freetype" module
- (Chisato Yamauchi).
- 584. Wrap ucs2any with ProgramTargetName in dependencies, as needed for
- OS/2, and note that OS/2 doesn't have basename(3) (Bugzilla #871,
- Frank Giessler).
- 583. Fix atimisc's decoding of the mode on input for large panels
- (Marc La France).
- 582. Fix SEGV when ATIPreinit() fails (Marc La France).
- 581. In rootless XDarwin, don't send ButtonPress events when clicking in
- non-X11 windows (Torrey T. Lyons, John Harper).
- 580. AppleWM compatibility fixes:
- - Disable XDarwin handling cut and paste if AppleWM-aware cut and
- paste manager is available.
- - Set _NATIVE_SCREEN_ORIGIN property on root window.
- (John Harper, Torrey T. Lyons).
- 579. Change ProjectRoot from /XFree86 to /usr/X11R6 on OS/2 (Bugzilla #865,
- Frank Giessler).
- 578. Fix building of new Mesa on OS/2 (Bugzilla #865, Frank Giessler).
- 577. Change the way how libraries with long file names are handed on
- OS/2 (Bugzilla #865, Frank Giessler).
- 576. Force screen blanking when entering DPMS states (Bugzilla #866,
- David Dawes, reported by Ed Fardos).
- 575. XDarwin fixes/cleanups:
- - Handle X11 executables opened from the Finder.
- - Use xcodebuild instead of pbxbuild on Panther.
- - Clean up Darwin specific imake #defines.
- - Fix compiler warnings on Panther.
- (Torrey T. Lyons).
- 574. A workaround for platforms (like *BSD) where IPv6 sockets don't accept
- IPv4 connections: disable IPv6 XDMCP code by default. This allows IPv4
- XDMCP to work on such platforms (David Dawes).
- 573. Rework REGION_* macros to eliminate NEED_SCREEN_REGIONS build failures
- (Marc La France).
- 572. Fix an old bug in the X server and xfs related to usage of
- c->savedName (Bugzilla #818, Owen Taylor).
- 571. Fix FontFileListOneFontWithInfo() so that it handles aliases in the
- same was as FontFileOpenFont() (Bugzilla #818, Owen Taylor).
- 570. Respect USE_SSE_ASM for the .S files in the r200 and radeon 3D drivers.
- This should fix the reported OpenBSD build problem (David Dawes).
- 569. Some missing FreeBSD AMD64/Sparc64 patches (Bugzilla #786, Eric Anholt).
- 568. The call to xf86RandRSetMode() from xf86RandRCreateScreenResources()
- doesn't appear to be necessary. Removing it restores the documented
- ViewPort behaviour when RandR is enabled (David Dawes).
- 567. Make the vesa driver blank the screen during initialisation for
- cosmetic reasons (David Dawes).
- 566. Make the cirrus driver blank the screen during initialisation for
- cosmetic reaons (most other drivers do this) (Bugzilla #781,
- Nicholas Miell).
- 565. The vesa driver wasn't setting the viewport correctly either at
- ScreenInit or EnterVT (David Dawes).
- 564. Fix the viewport initialisation. The ViewPort parameters from the
- XF86Config file were being ignored, and the default was a 0,0 viewport
- rather than centred on the virtual screen as documented. When RandR
- is enabled, it undoes all of this though... (David Dawes).
- 563. Fix an off-by-one bug in libXcursor that can result in segfaulting
- applications (David Dawes, reported by Agustin Gianni).
- 562. Fix RandR initialization problem when default screen resolution is
- different from the virtual resolution. (Bugzilla #853, Bob Paauwe).
- 561. Fix an Xv problem with the via driver where updating a portion of the
- overlay causes excessive CPU usage (Bugzilla #821, Neil Terry).
- 560. Fix an Xnest hang on OS/2 (Bugzilla #852, Frank Giessler).
- 559. OS/2 update for the recent move to building most libraries shared,
- and add some functions to the export lists for freetype and Xt for
- compatibility with older applications (Bugzilla #852, Frank Giessler).
- 558. Fix the installation location of the XRes and Xss manpage aliases
- (Bugzilla #848, ISHIKAWA Mutsumi).
- 557. Include backwards compatibility API for renamed stream functions in
- Freetype2 library (Torrey T. Lyons).
- 556. Fix acecad driver to call xf86DeleteInput() (Bugzilla #855, S. Voltz).
- 555. Register to handle X11 executables on Panther (John Harper).
- 554. Fixes for GLX on Mac OS X:
- - Make libGL not export libGLU symbols.
- - Fix uninitialized mutex for threaded direct GLX.
- (John Harper).
- 553. Fix "Non-aligned pointer being freed" warnings on XDarwin startup
- (Torrey T. Lyons).
- 552. Miscellaneous fixes for Panther:
- - Fix spurious #pragma getting inserted by cpp (Martin Costabel).
- - Fix startup failure due to bad keymapping file (Torrey T. Lyons).
- - Fix startup warning about missing semicolons (Torrey T. Lyons).
- 551. Mesa X86 asm build fix for Solaris (David Dawes).
- 550. Fix building libOSMesa on Darwin (Torrey T. Lyons).
- 549. Get backlight working on Apple's GeForce4 powerbooks (Guido Guenther).
-
-XFree86 4.3.99.15 ( 1 November 2003)
- 548. Update libfreetype-xtt2 to version 1.1:
- - Improved the very lazy method. To prevent displaying chipped bitmap
- when having italic angle, the lsb and rsb are adjusted by using
- italicAngle in post table.
- - Added automatic correction of bitmap position for preventing
- displaying chipped bitmap when using charcell or very lazy method.
- - Set DEFAULT_VERY_LAZY macro. If post table is available, the very
- lazy method is used as default when handling multi-bytes fonts.
- - Added additional glyphs(0x2d21-0x2d7c) to jisx0208.1990-0.enc.
- (Chisato Yamauchi, After X-TT Project).
- 547. Set the pixel clock limit above which hzoom is enabled for the video
- overlay for G450 and G550 cards to 234MHz. This fixes a problem with
- the Xv support having half horizontal resolution (Michel Lespinasse).
- 546. Add support on Mac OS X for building keymap using Carbon Keyboard
- Layout API (John Harper).
- 545. Map holes in kdrive VESA driver (#5436, Juliusz Chroboczek).
- 544. Add option to Radeon driver to allow minimum dot clock to be
- overridden (Bugzilla #831, Nils Philippsen).
- 543. Add shared libraries run-path information to pkg-config datafiles
- provided for some libraries. (Bugzilla #832, Frederick Bruckman,
- Matthieu Herrb).
- 542. Fix buglets detected by SGI compiler in neomagic, sis and tseng drivers
- (Marc La France).
- 541. Fix I/O alignment in mga and via drivers (Marc La France).
- 540. Improve xkbcomp's key types auto-recognition (Ivan Pascal).
- 539. Add support for multi-threaded direct GLX rendering with AppleDRI
- (John Harper).
- 538. Fix a problem in Xlib that was cause by the ANSI prototype cleanups
- (Bugzilla #839, Owen Taylor).
- 537. Limit the rate of duplicate audit messages in the X server. (Matthieu
- Herrb, David Dawes).
- 536. Fix ChipValidMode() return type (Marc La France).
- 535. Fix for AGP8x support on HP zx1-based systems (Marc La France).
- 534. Workaround for mysterious segfault related to mkfontscale's use of
- memcmp() (Marc La France).
- 533. Support the new Linear allocator in the trident driver and make the
- hardware cursor use it. Xv automagically uses it. (Alan Hourihane).
- 532. Fix acecad input driver build and re-enable it
- (Bugzilla #816, Alan Hourihane).
- 531. Fix DRM_CAS on ia64 as used by the DRI (Bugzilla #778, John Dennis).
- 530. Call OsCleanup() at the end of each server generation, and add an
- argument to indicate when the server is terminating. This allows
- misc end-of-generation cleanups to be added to OsCleanup() (David Dawes).
- 529. Explicitly free the DPMS and ScreenSaver timer resources at the end
- of each server generation (David Dawes).
- 528. Cygwin configuration updates and install script updates (Bugzilla #799,
- 805, Harold L Hunt II, Alexander Gottwald)
- 527. Build shared libraries for Xt and Xaw on Cygwin. (Bugzilla #804,
- Ralf Habacker).
- 526. Xterm patches #180, 181 (Thomas Dickey).
- 525. Update libfreetype-xtt2 to version 1.0d:
- - Fixed server crash caused by loading fonts for which encoding file
- does not exist.
- - Some fixes for minor bugs when handling errors.
- - Some minor cleanups.
- (Chisato Yamauchi, After X-TT Project).
- 524. Export strl{cat,cpy} functions to the server modules and provide
- an implementation for the systems that don't have them. (Matthieu
- Herrb).
- 523. Fixes and updates for XKB keyboard maps:
- - Update Serbian layouts (Bugzilla #92, Danilo Segan).
- - Add 'MS Windows like' US International variant for 'us' keymap (Ivan
- Pascal).
- - Change CapsLock default behavior to 'Caps acts as locking Shift,
- Shift cancels Caps'. Add new type for four-level keys (Ivan Pascal).
- 522. Fix generic rootless code bug which tests CopyWindow instead of CopyBytes
- (Kensuke Matsuzaki).
- 521. Update libfreetype-xtt2 to version 1.0c. This consists of some minor
- fixes and cleanups (Chisato Yamauchi, After X-TT Project).
- 520. Add accelerated rootless drawing support and fix bug in rootless
- FillSpans (Torrey T. Lyons and John Harper).
- 519. Update SiS driver:
- - Merge 661/741/760 support
- - Clean up
- - Fix Xv problems after swsuspend
- - Fix LCD-via-CRT1 on various machines
- 518. Prevent some compilers from optimising out Mesa's X11 error interface
- (Marc La France).
- 517. Add rules to generate post-processed and assembler source from C++ files
- (Marc La France).
- 516. Change `make World` so that well it interrupts itself to build a utility
- (makedepend, pswrap, etc), it only builds that utility. Some things were
- being built too early (Marc La France).
- 515. When the i830 driver's checks for sufficient memory for tiled mode
- fail, don't later try to allocate with tiling enabled (David Dawes).
- 514. Enable I845G_VBE_WORKAROUND in the i830 driver for all platforms, since
- this reportedly fixes VT switching problems on hardware other than the
- 845G.
- 513. Updated README.SiS (Thomas Winischhofer).
- 512. Add the After X-TT Project's libfreetype-xtt2 1.0b fixes and
- enhancements to the "freetype" module (Chisato Yamauchi,
- After X-TT Project). This should make it possible to deprecate the
- "xtt" module in a future release. Fixes and enhancements include:
- - Fixed crash caused by using fonts which have OS2 sfnt table.
- - Corrected metrics calculation error. Although the original code uses
- size->metrics, the FT_Size_Metrics does not have exact values when
- handling the outline. So the codes for metrics calculation were
- drastically rewritten.
- - Fixed some problems with FreeTypeRasteriseGlyph():
- + Made "only metrics is required" distinct from "both metrics and
- rasterised bitmap are required" to improve performance when
- loading large charset.
- + Fixed the erroneous usage of freetype2 API. To get valid metrics,
- FT_Outline_Get_BBox() or FT_Outline_Get_CBox() is used for outline.
- + Took the strange code for raster copying and rewrote it.
- - Fixed UNDERLINE_POSITION so that it counts downwards.
- - Fixed a risky calculational method for info->maxbound and
- info->minbound when spacing is not charcell. All glyphs' metrics are
- calculated and valid info->maxbounds and info->minbounds are set
- without cutting any corners.
- - Added TTCap option "fn","ai","ds","fs","vl","cr","bw","eb","hi",
- "fc" and "fm" which are compatible with X-TT 1.4.
- - Supported character width for vertical layouts.
- 511. Encoding file updates (After X-TT Project):
- - Removed jisx0208.1983-0.enc and added 'ALIAS jisx0208.1983-0' to
- jisx0208.1990-0.enc.
- - Added Windows ucs2 cmap(3,1) to jisx0208.1990-0.enc and
- jisx0201.1976-0.enc.
- - Added files for GB18030-0 and GB18030-1 (James Su).
- 510. Update X-TrueType (X-TT) to version 1.4.2 (Chisato Yamauchi,
- After X-TT Project):
- - Fixed several bugs of make_up_italic_bitmap() function.
- - Changed the order of priority of mapIDRelations in JISX0208 and
- JISX0201 code converter. The windows ucs2 is given the highest
- priority for kochi-substitute Japanese fonts.
- - Fixed code relation in cc_jisx0208_to_std_ucs2() function
- (not 0x215d -> 0x00b1 but 0x215d -> 0x2212)
- - Added minor improvements.
- 509. Fixes and updates for HTML and PDF versions of spec docs for
- installation and inclusion in the online docs (David Dawes).
- 508. Implement SharedLibtoolLibraryTarget, etc for bsdLib/ELF, including
- creating links for older but compatible revisions of such
- libraries (David Dawes).
- 507. Allow a simple form of option name aliasing for options handled
- via OptionInfoRec (David Dawes).
- 506. Add optimized code for RENDER with rootless XDarwin (John Harper,
- Torrey T. Lyons).
- 505. Declare LoadPalette, SetOverscan and DPMSSet as public functions through
- the XFree86's ScrnInfoRec, so these functions can be wrapped.
- (Alan Hourihane).
- 504. XDarwin improvements:
- - Add complete server side support for AppleWM with xpr.
- - Allow Aqua and X11 windows to interleave when AppleWM-aware window
- manager is present.
- - Fix hang on server reset.
- (Torrey T. Lyons, John Harper).
- 503. Fix double-free at server regeneration in the screensave/DPMS timer
- code (David Dawes).
- 502. Build most libraries as shared by default. (Matthieu Herrb,
- David Dawes).
- 501. Add missing symbol definition files for libraries (Matthieu Herrb).
- 500. Add 'inet' keymaps for two Logitec keyboard models (Bugzilla #762,
- Eric Mountain; Bugzilla #766, Chris Hornbaker) and cleanup Logitec
- keymaps (Ivan Pascal).
- 499. Add missing SetScreenSaverTimer() to ProcSetScreenSaver (Ivan Pascal).
- 498. Fix building on Mac OS X after DRI merge (Torrey T. Lyons).
-
-XFree86 4.3.99.14 (10 October 2003)
- 497. Add an xf86InitFBManagerLinear() function and implement the Linear
- allocation routines. These still fallback to XY area allocation if
- no (or the lack of) linear space is available. It assumes the driver
- has already called one of the init routines to the FBManager for Areas
- before this new setup can be used (Alan Hourihane).
- 496. Added USB keyboard support for Solaris/x86 platform (Bugzilla #352,
- Daniel Rock).
- 495. i830/i810 driver:
- * Added Christian Ziez's code to tweak BIOS image to convince chipset of
- resized video RAM.
- * Fixed viewport/video overlay window alignment issues.
- * Fixed calculation of video overlay memory size.
- * Fixed video overlay on TV out (Bugzilla #213). (Egbert Eich).
- 494. Fixed mode setting in trident driver: use mode passed in function
- argument, not value in currentMode (Bugzilla #197, Egbert Eich).
- 493. Added delay when writing to Glint PM2 ramdac to avoid lockups
- (Egbert Eich).
- 492. Fixed bug in Glint Bresenham line fallback code that caused line be drawn
- beyond framebuffer boundaries (Bugzilla #624, Egbert Eich).
- 490. Force sane pallette when entering DGA mode in Matrox driver
- (Egbert Eich).
- 489. ATI Rage128: Wait with modifying FP video mode according to BIOS values
- until final call of ValidMode() to prevent modes from being rejected
- (Bugzilla #661, Egbert Eich).
- 488. Some Savage BIOSes turn on clock doubling on non-doubled modes.
- Added code that catches and fixes this situation (Egbert Eich).
- 487. Tdfx driver: Fixed order of initialization/deinitialization in
- ScreenInit()/ CloseScreen().
- Fixed texture video support, removed artefacts in last line of overlay
- video support (Bugzilla #299). (Egbert Eich).
- 486. Add "automatic configuration" support for the XFree86 server, allowing
- it to be started in a useful way without an XF86Config file.
- - Add support to the config file parser for processing internally
- supplied configuration data.
- - Modify the algorithm for finding core input devices to maximise the
- likelihood that they will be found.
- - Add a FindDevice function to the OSMouse interface, allowing
- an OS-specific function to be called to find the mouse device when
- none is specified in the configuration. Implementations included for
- Linux and FreeBSD.
- - Add a GuessProtocol function to the OSMouse interface, allowing
- an OS-specific function to be called as a fallback when the mouse
- protocol can't otherwise be detected. Implementation included for
- Linux.
- - Bump the OSMouse interface version to 1.1 with the addition of the
- above two functions.
- - An interface for calling an external utility "getconfig" to generate
- some configuration data. Implementation of getconfig included.
- - Generate a default internal configuration, autodetecting as much
- as possible, with reasonable fallbacks.
- - Recognise "DefaultDepth" and "DefaultFbbpp" options in the Device
- section.
- - Add a "TargetRefreshRate" option to help prevent modes with too
- high a resolution (and poor refresh rate) being used as the default.
- - Use DDC-probed mode timings to estimate the monitor parameters when
- the DDC-probed information doesn't include a DS_RANGES property.
- This should improve the reliability of monitor auto-detection.
- (David Dawes, X-Oz Technologies).
- 485. Add functions for checking option values without marking them as "used"
- (David Dawes).
- 484. Add missing xf86ReplaceRealOption() function (David Dawes).
- 483. Added support for Siliconmotion Cougar3DR chip (Bugzilla #754,
- Chris Edgington).
- 482. Cygwin:
- * Added another German keyboard layout.
- * Added Japanese keyboard layout to the list of defaults as jp.
- * Added a new default keyboard layout for Portuguese (Brazil, ABNT2).
- * Print the layout number in hexadecimal.
- * Display the argument to the -query option in the window title.
- (Bugzilla #763, Alexander Gottwald)
- 481. Add processing for WM_WINDOWPOSCHANGED to cause window to repaint when
- using TweakUI's focus-follows-mouse behavior. (Bugzilla #763,
- Harold L Hunt II)
- 480. Added runtime detection of SHM support by checking the return value of
- shmget to the SHM and xf86BIGFONT extension to support SHM on Cygwin
- (Bugzilla #764, Harold L Hunt II).
- 479. Adding O_BINARY flag when opening an xkm file if this flag is defined
- (Bugzilla #768, Alexander Gottwald).
- 478. Radeon driver fixes (Hui Yu@ATI)
- - 9200 DVI fix and TMDS_PLL initialization for all chips
- - New chips support (9800XT/SE, 9600XT/SE, M11, T2/X2 etc.)
- - Cleanup unused/secondary chip ids
- - Autodetect PCI cards
- - Add BusType to override PCI card autodetect
- - Add display bandwidth calculation routine to fix flickering/tearing
- display problem
- - Workaround for corrupted BIOS image causing incorrect panel size
- - Fix the LCD table reading loop
- - Various small changes (including improving DDC reliability and
- CRTC_MORE_CNTL initialization)
- 477. Fix XAA Color8x8 cache bug:
- Pattern was expanded from source instead of destination
- (Thomas Winischhofer)
- 476. Fixes and updates for XKB keyboard maps:
- - Add 'United Kingdom w/deadkeys' gb(intl) keymap (Bugzilla #744,
- Phil Jones).
- - Add multi_layout compliant 'us_intl' keymap (Ivan Pascal).
- - Fix 'macintosh' geometry file (Bugzilla #753, Simon Vallet).
- 475. APM driver:
- . improved clock parameter calculation.
- . Fixed order of initialization of cursor.
- . Fixed restauration of graphical text mode.
- . Added YUY2 video format.
- . Corrected accel framebuffer pitches and max screen height
- (Bugzilla #528, Egbert Eich).
- 474. Moved DisableMMIO() out of the unmap() function, added call to
- EnableMMIO() to EnterVT() to work around lockup problems when
- switching between two Xserver (Bugzilla #748, Egbert Eich).
- 473. Fixed problem with text widget in Xaw when widget has a different
- depth than the default visual (Bugzilla #745, Wolfram Gloger).
- 472. Fixed Sig11 when calling X -query with no ipv6 support in kernel
- (Bugzilla #737, Egbert Eich).
- 471. Added support for Sparc64 and AMD64 on FreeBSD.
- This patch also disables warnings from system headers, fixes some elf
- relocations also relevant for other platforms and disables translation of
- KEY_SysReqest and KEY_Break on sparc64. (Bugzilla #739, Eric Anholt).
- 470. Switched VIA video driver to fillkey helper function (Bugzilla #525,
- Alan Cox).
- 469. Fixed CRT modes > FP panel size for siliconmotion (Bugzilla #727,
- Hugues Fournier).
- 468. Fixed xedit coredumps: update counter of free objects when getting an
- object from the list (Bugzilla #722, Egbert Eich).
- 467. Fixed definition of UseInstalledOnCrossCompile so that it never is
- undefined (Harlod L. Hunt II).
- 466. Add the 'b' flag to fopen() when opening binary xkm files. This is
- irrelevant for *nix OSes, but required for Cygwin. (Bugzilla #689,
- Harold L Hunt II).
- 465. Cygwin:
- * MultiWindow Mode: Automatically validate the size of windows that are
- being resized. (Earle F. Philhower III)
- * Safely shutdown the MultiWindow Mode and Clipboard Manager threads on
- server shutdown. (Earle F. Philhower III)
- * MultiWindow Mode - Fix a crash from a string copy bug.
- (Earle F. Philhower III)
- * Add lots of defaults for keyboardlayout. (Alexander Gottwald)
- * Add a system tha allows arbitrary commands to be added to the tray menu
- icon. (Earle F. Philhower III)
- * Print the name of the keyboardlayout to aid in adding more layouts.
- (Alexander Gottwald)
- * Stop printing the IDirectDrawSurface4_Blt() failure messages after 10
- times. (Harold L Hunt II)
- * Disable check for pc105 keyboard and just assume that it is present.
- This check was causing problems with certain keyboard drivers that
- failed to report that a pc105 keyboard was present.
- (Alexander Gottwald)
- * MultiWindow Mode - Add handling for WM_CHANGE_STATE IconicState
- messages;
- minimize the associated Windows window when these messages are
- received. (Harold L Hunt II).
- Submitted: (Bugzilla #704, Harold L. Hunt).
- 464. cygwin.cf:
- * removed BuildDPS flag.
- * Changed Alloca flag as Cygwin 1.5.x supports alloca, now.
- * Use external expat package by default.
- * Changed XawI18nDefines to utilize improved wide char support in
- Cygwin 1.5.x. (Bugzilla #699, Harold L. Hunt II).
- 463. Fixed C&T panel register setting (Akira Taniguchi, Egbert Eich).
- 462. Fixing crash on ia64 because of wrong setjmp buffer alignment (Bugzilla
- #596, John Dennis).
- 461. Changing ImPS/2 mouse Z-axis range to -8 to 7 (Bugzilla #691,
- Matthew W. S. Bell, Egbert Eich).
- 460. Making sure the compiled xkb config file is found by Xnest if
- ProjectRoot is modified (Bugzilla #688, Frank Giessler).
- 459. Fixing build of machine code .S files on OS/2 (Bugzilla #689,
- Frank Giessler).
- 458. Import Mesa 5.0.2 (Alan Hourihane).
- 457. DRI merge (DRI Project)
- - Update the SiS driver to use Mesa 5.0
- -
- 456. Fixes and updates for XKB keyboard maps:
- - Update xkb geometry files (Alexander Pohoyda).
- - Fix German-Romanian maps (Manfred Pohler).
- - Cleanup Hungarian layout (Bugzilla #730, Egmont Koblinger).
- 455. Change the order of the timeouts processing and the input devices
- reading in WaitForSomething() which caused unneeded keyboard autorepat
- events (Ivan Pascal).
-
-XFree86 4.3.99.13 (25 September 2003)
- 454. Add support for chip ID 5964 (Radeon 9200 SE) to the radeon driver, and
- fix detection of IDs 5962 and 5963 with Driver "ati" (Bugzilla #732,
- Michel Daenzer)
- 453. Add gcc format checking for the X server's message and logging
- functions, and fix lots of associated warnings (David Dawes).
- 452. Replace the perl version of ucs2any with a C version ( Ben Collver and
- other NetBSD developers, Matthieu Herrb).
- 451. For drivers that support 'Option "dri"' have the driver request
- loading the dri module when this option is true. This brings
- it in to line with how other things are handled. Other drivers
- that have DRI support need to have the "dri" option added (David Dawes).
- 450. Fix libGL bug that could cause deadlock when switching contexts
- (John Harper).
- 449. Improve the contrast of the whiteglass xterm cursor, and fix the
- hotspot of the whiteglass right_ptr cursor and add transparency
- to it (#5867, René Rebe).
- 448. Fix a problem with the "pl2" (Polish qwertz) map where the order in
- which the Alt_R and Shift keys are pressed affects the results
- (Tom Pala).
- 447. In xdm, use better pseudo-random number generators to generate
- magic cookies. Add support for EGD and other compatible entropy
- gathering daemons. (Oswald Buddenhagen from KDE, Matthieu Herrb).
- 446. Fix IMPS/2 mouse wheel on platforms where char defaults to unsigned
- (Rene Rebe).
- 445. Fix rare xterm crash on Darwin due to dyld deadlock when a signal comes
- in while dyld is looking up a symbol (Rob Braun).
- 444. XDarwin cleanup and improvements:
- - Load bundle at runtime for chosen Quartz mode: xpr, cr, or fullscreen.
- - AppleWM extension has been generalized to work with any Quartz mode.
- Currently only the xpr implementation is complete.
- - Wrote a man page for AppleWM.
- - Moved hw/darwin/quartz/aqua* files that contained code to protect
- the alpha channel to miext/rootless/safeAlpha.
- (Torrey T. Lyons).
- 443. Remove lots of redundant redeclarations (David Dawes).
- 442. VIA driver:
- Fixed video memory detection. (Bugzilla #525, Alan Cox).
- Fixed TV and FP initialization problems (Bugzilla #525, Frederic Crozat,
- Alan Cox).
- Removed remaining globals (Egbert Eich).
- 441. Fixed memory leaks in the loader (Bugzilla #682 and #683, Juergen Keil).
- 440. Fixed erroneous freeing of DisplayModeRec in xf86DeleteMode() when
- deleting the modePool in xf86PruneDriverModes() the 'prev' member has
- a different meaning for modePool modes than for ScrnInfoPtr->modes modes
- where it creates a doubly linked list (Bugzilla #678, Juergen Keil).
- 439. Fixed SDK for VIA driver (Bugzilla #674, Bernhard Rosenkraenzer).
- 438. Extended list of monitor ranges and modes in xf86cfg (Egbert Eich).
-
-XFree86 4.3.99.12 (10 September 2003)
- 437. Move the X server log file handling from the XFree86 DDX to the DIX,
- allowing the more descriptive logging to be used throughout the server,
- and the log messages to be more uniform in formatting (David Dawes).
- 436. Added support for the Compaq Evo keyboard (Stanislav Brabec).
- 435. Fixed writes past end of array in via_bios.c (Bugzilla #662,
- Egbert Eich).
- 434. Let luit copy the termios settings from the calling terminal (Bugzilla
- #641, Juliusz Chroboczek).
- 433. Add _ADOBE_POSTSCRIPT_FONTNAME to the list of font properties xlsfonts
- that are atoms and should be converted to strings when run with the
- -ll flag. Also fixed the lenght problems that may arise (Bugzilla # 659,
- Alan Coopersmith).
- 432. Backing out 321.: sysMem gets initialized once during server lifetime
- (Egbert Eich).
- 431. Fixing X11.tmpl to set XFTINCLUDES after defining a non-standard path
- to fontconfig, adding FONTCONFIGINCLUDES to the build rules for fontconfig
- (Kevin P. Fleming).
- 430. Added support for the hp5181 inet keyboard (Bugzilla #648, Alan Strohm).
- 429. Added support for Apple Laptop keyboards, added level3/group switching to
- KP_Enter, modified layout so keyboards acts the same way as under Mac OS
- (Bugzilla #642, Frank Murphy).
- 428. Adding ANGKHANKHU (U+0E5A) character to level 3 of keycode <AD09> on
- th_tis keymap (Theppitak Karoonboonyanan).
- 427. Fixes and updates for XKB keyboard maps:
- - Add 'Romanian keymap for German keyboard' and 'Romanian keymap with
- access to German umlauts' (Manfred Pohler).
- - Update xfree86.dtd file (Sergey V. Oudaltsov).
- - Add an XkbOption that makes a keyboard map without special keysyms
- on Ctrl+Alt+smth for those who use such combinations for another
- purposes (Ivan Pascal).
- 426. Reverse patch #423 because it causes compile problems (Ivan Pascal).
- 425. Disable the bytecode interpreter by default in FreeType 1, bringing it
- into line with the default for FreeType 2. Document how to enable
- it in xf86site.def for those with no legal impediment to doing so
- (David Dawes).
- 424. Improvement of Xlib's keysym compose module:
- - Allow to figure out a mulibyte string if it is omitted in Compose file.
- - Add 'include' instruction with some substitutions.
- - Add a searching of Compose file as a value of XCOMPOSEFILE environment
- variable and as a $HOME/.XCompose file. (Ivan Pascal).
- 423. Add a writing of some Xserver XKB module error messages into a servers
- log file (Ivan Pascal).
- 422. Add Trident CyberBladeXP4 support, but acceleration is currently
- disabled. (Alan Hourihane).
- 421. Xinstall.sh updates to reduce its reliance on external utilities and
- provide better diagnostics when required external utilities don't exist.
- (David Dawes).
- 420. Fixes and updates for XKB keyboard maps:
- - Fix unneeded BKSL redefinition in Ukrainian 'winkeys' keyboard map
- (Andriy Rysin).
- - Fix some keycodes for jp106 keyboard model (Bugzilla #657,
- Stephen J. Turnbull).
- - Update xfree86.xml registry file (Andriy Rysin, Sergey V. Oudaltsov).
- 419. Add a missing xf86UnblockSIGIO() call to xf86InstallSIGIOHandler()
- (#5839, NetBSD PR xsrc/22668, Yorick Hardy).
- 418. Fix a problem with the "pl" map where the order in which the Alt_R and
- Shift keys are pressed affects the results (#5832, Tom Pala).
- 417. Fix the warning generated by the ONE_LEVEL <RALT> definition in
- the "level3" map (#5832, Tom Pala).
- 416. Remove the unnecessary dependence of RandR on RENDER (David Dawes).
- 415. Remove some static variables that should be per-screen (David Dawes).
- 414. SiS driver update:
- - Add 8x8 Color Pattern Fill (315/330 series)
- - Add transparency support for 8x8 Mono Pattern (300/315/330 series)
- - Fix Xv "insufficency" triggered by MPlayer (315 series)
- 413. Add missing REQUEST_SIZE_MATCH() to xSyncSetCounter protocol request
- (noticed by Ruben Nunez Francisco).
- 412. Allow building libOSMesa during non-XFree86 builds (Marc La France).
- 411. Rip out incorrect limits on the number of PCI buses an ix86 chipset can
- handle and implement an improved solution for avoiding "phantom" PCI
- buses (Marc La France, Bugzilla #604).
- 410. Fixes for potential integer overflows in font libraries. (blexim,
- Matthieu Herrb).
- 409. SiS driver: Add RENDER hardware acceleration
- 408. Add a Fopen() function to open the Xauthority file without spawning
- a shell (Bugzilla #255, Aidan Kehoe, Matthieu Herrb).
- 407. Fix a bug introduced with #397 that results in the core pointer and
- keyboard devices specified in a ServerLayout section being ignored
- (David Dawes).
- 406. Added big5hkscs encoding to font encoding files (Bugzilla #575,
- Jungshik Shin).
- 405. Don't call FBIOPAN_DISPLAY ioctl with arguments that will cause a
- confusing if harmless error; make an fbdevhw internal function static to
- fix a warning. (Michel Dänzer)
- 404. Passing correct virtual screen size to xf86ValidateModes() in VIA driver
- (Luc Verhaegen).
- 403. Added RGB overlays to i810 driver (Bugzilla# 625, Alastair M. Robinson).
- 402. Fixed mode switching and mode comparison for xf86VidMode extension for S3
- driver (Bugzilla #613, Alexey Baj, Egbert Eich).
- 401. Via driver: Fixed remaining globals, some formatting issues, out of
- memory handling in Xv overlay code and a couple of small glitches caused
- by the fixes (Bugzilla# 525, Alan Cox)
- Fixed some missing globals and static build (Egbert Eich).
- A handful globals still remain.
- 400. Update the Xserver(1), XFree86(1) and XF86Config(5) man pages to
- clarify how XFree86 configuration/run-time parameters are specified
- and their order of precedence (David Dawes).
-
-XFree86 4.3.99.11 (25 August 2003)
- 399. Try to make the state of libXfont more consistent. It shouldn't depend
- on whether a static or loadable XFree86 server is being built, so it
- now always has a dependency on the FreeType2 library (when FreeType
- support is enabled) (David Dawes).
- 398. Make the specification of a Monitor in the Screen sections of the
- XF86Config file optional. Some drivers may need changes (coming later)
- to maximise the utility of this (David Dawes).
- 397. When a core keyboard or core pointer cannot be found in the
- configuration, create default ones. The pointer part of this
- requires some changes to the mouse driver (coming later) before
- the default core pointer configuration will be useful on most
- platforms (David Dawes).
- 396. Add a facility for assigning version numbers to builtin XFree86 server
- interfaces and allowing modules to query them. Assign versions for
- the os-mouse and os-kbd interfaces (David Dawes).
- 395. Include uname(2) information in the server's banner messages
- (Marc La France).
- 394. Fix bug in detection of multi-function PCI devices (Marc La France, in
- partial resolution of Bugzilla #574).
- 393. Change the XFree86 server's global default depth to 16, and change most
- drivers that support the three common depths (8, 16, 24) to defer to
- the global default rather than specifying their own (David Dawes).
- 392. Fixed a crash when _XIMProtoOpenIM(), hich is called through XOpenIM()
- API when protocol IM is being set up, fails (Bugzilla #618,
- Hisashi MIYASHITA).
- 391. Fixed a possible source of Sig11 in Jamstudio driver (Bugzilla #617,
- Jonathan Hough, Egbert Eich).
- 390. Fixed building without RENDER support (Bugzilla #306, Matthieu Herrb,
- Egbert Eich).
- 389. Pass pointer obtained by Xalloc() to Xfree() not the one that may be
- manipulated in the mean time (Bugzilla #614, Alan Coopersmith).
- 388. Added reverse mapping of keysyms to keycodes (XKeysymToKeycode())
- to xev to detect situations where this maps to a different keycode than
- the one of the key pressed (Egbert Eich).
- 387. Made xauth called by startx quiet (Bugzilla #597, Stas Sergeev).
- 386. Added missing operand size override handling to PUSH imm8 in x86emu
- (Bugzilla #590, Boris Weissman).
- 385. Fixed compile glitch with NetBSD in xdm/genauth.c (Bugzilla #587,
- Nicolas JOLY)
- 384. Fix bugs in Xlib's EUC string converters that cause incorrect work of
- _Xmblen. Fix _Xmblen usage in imCallbk.c when Xlib is built with
- X_LOCALE (Etsushi Kato).
- 383. Update xev program for print the result of XmbLookupString call
- (Bugzilla #582, Noah Levitt, Ivan Pascal)
- 382. Fixes and updates for XKB keyboard maps:
- - Fix for Uzbek keyboard map (Bugzilla #595, Mashrab Kuvatov).
- - Fix for the problem with Alt+Tab combinations in some window mangers
- (Bugzilla #580,616): window chooser menu doesn't disappear after
- Alt key release (Egbert Eich, Ivan Pascal).
- 381. Allow a Display subsection with no depth or fbbpp specified to match
- any depth/fbbpp, and make Display subsections optional, creating one
- with default parameters when no suitable one can be found (David Dawes).
- 380. Include <sys/param.h> to get the BSD macro for luit (ITO Tsuyoshi).
- 379. DRM resync from the DRI trunk...
- - Lots of misc fixes/cleanups, and some resyncs with 2.4 and 2.6
- kernels.
- - Fix maplist entries being used after they were freed; thanks to
- Benjamin Herrenschmidt for tracking this down (Michel Daenzer).
- - FreeBSD updates (Eric Anholt).
- - Fail in DRM(agp_acquire) if the AGP aperture can't be used, such
- that the X server falls back to PCI GART or disables the DRI
- gracefully (Michel Daenzer).
- - Possibly fix stanford checker complaints about sarea for radeon
- (Keith Whitwell).
- - Restore i830 texture age waiting when swapping in new textures
- (Keith Whitwell).
- - Fix texture rectangle support for r100 (Keith Whitwell).
- - Add i810 add page flipping support to the DRM (Dave Airlie).
- - Merged DRM documentation (Jose Fonseca).
- - r128 MESA_ycbcr_texture (Ian Romanick, Leif Delgass).
- 378. Linux drm module build fixes for newish kernels from the DRI
- repository (Michel Daenzer, Linus Torvalds, Leif Delgass). This
- addresses Bugzilla #603, 605 (Calum Mackay).
- 377. Fix the test for 2.5.x with x < 52 Linux kernels for the drm module
- build (Bugzilla #601, Callum Mackay).
- 376. Fix an XAA pixmap cache server crash that can happen in some cases
- when the off-screen memory is heavily fragmented (David Dawes, based
- on #5752, Koike Kazuhiko, Chisato Yamauchi).
- 375. Fix for the Brazilian ABNT2 keyboard extra key that now translates to
- a different keycode value. Patch suggested by Ivan Pascal.
- 374. Fixed XDarwin fullscreen crash in some screen sizes (Torrey T. Lyons).
- 373. Be a little more precise about differentiating between active and
- inactive non-video PCI resources (Marc La France).
- 372. Added Apple-WM extension and library (John Harper, Torrey T. Lyons).
- 371. Fixed indirect GLX on Mac OS X when the client can not make a
- connection to the CoreGraphics window server (John Harper).
- 370. Fixed support for 64bit PCI bus on 32bit systems (Egbert Eich).
- 369. Added support for using aliases in the -nolisten option. '-nolisten tcp'
- aliases to IPv4 and IPv6 (Matthieu Herrb, Egbert Eich).
- 368. Added fallback Xlib transport layer if IPv6 socket cannot be openend
- (Egbert Eich).
- 367. Added missing symbol to the vbeSymbols table in i740 driver (Bugzilla
- #583, Egbert Eich).
- 366. Changed scripts containing 'head -1' which is not supported by
- POSIX 1003.1-2001 any more (Bugzilla #570, #569, Paul Eggert,
- Egbert Eich).
- 365. Changed POSIX 1003.1-2001 non-conformant 'sort +2' to 'sort -k 3' with
- backward compatibility (Bugzilla #568, Paul Eggert).
- 364. Add Microsoft Pro OEM model to XKB inet map (Bugzilla #458,
- maxim@wzzrd.com)
- 363. Extract the CHANGELOG's commit date and include it in the XFree86
- server log/version information (David Dawes).
- 362. Change the way xf86Build.h is created so that it doesn't cause its
- dependencies to be rebuilt when its contents are not changed
- (David Dawes).
-
-XFree86 4.3.99.10 (10 August 2003)
- 361. Fixes and updates for XKB keyboard maps:
- - Added numpad:microsoft XKB option (Bugzilla #558, Will Styles).
- - Fixed inconsistence in indicator names (Bugzilla #577, Noah Levitt).
- - Added type6 model of Sun keyboard (Warren Turkal).
- 360. Add UK (gb) layout to the dvorak XKB map (#5739, Mike Sulivan).
- 359. More work on the NativeGDI server for Cygwin/XFree86. The span routines
- are nearing completion (albeit they run slowly until the higher
- level X primitive functions are implemented). The obvious issue with
- the current code is the problems surrounding 1-bit DIBsections which
- have msb/lsb issues compared to the other types of DIBsections.
- This work was done quite some time ago in the Cygwin/XFree86 CVS.
- (Alan Hourihane).
- 358. SiS driver update:
- - Added pseudo-Xinerama extension for MergedFB mode
- - Fixes for Clevo L285/L287 (1024x768)
- 357. Include Xmd.h in Xpm/lib/XpmI.h to get definitions of LONG64
- (Bugzilla #562, John Dennis).
- 356. Moved Meta_L/R keys and added Super_L/R keys on macintosh keyboard.
- This makes the layout more compatible to the PC keyboard layout
- (Bugzilla #565, Frank Murphy).
- 355. Add check for Xmalloc() return value in XGetErrorDatabaseText() to avoid
- Sig11 (Bugzilla #563, Alan Coopersmith).
- 354. Separated build of libglx.a module and normal libglx.a library
- (Bugzilla #541, Frank Giessler).
- 353. Fixed build of Xnest, Xprt and Xvfb for OS/2 by linking with the linker
- definition files (Bugzilla #541, Frank Giessler).
- 352. Fixed freeing of properties form xkb_geomerty block (Bugzilla #550,
- Alexander Pohoyda).
- 351. Fixed string octal number parsing and string to int conversion for "\00"
- in xkbcomp (Bugzilla #553, Egbert Eich).
- 350. Removed stale definition from XftCompat.h (Bugzilla #543, Egbert Eich).
- 349. Added XLC_LOCALE file for zh_CN.UTF-8, moved iso10646 encoding to the end
- in ja_JP, ko_KR and zh_TW UTF-8 XLC_LOCALE files
- (Bugzilla #544, Akira TAGOH).
- 348. Fixed typo in #if conditional in cfb code (Bugzilla #556, Dave Love).
- 347. Fixed ValidMode() in C&T driver to work with option 'FixPanelSize'
- (Egbert Eich).
- 346. Fixed Meta_R key on us layout Macintosh keyboard (Bugzilla #539,
- Frank Murphy).
- 345. Add new charset sequence for CText at the end of list. This way the
- sequence of a charsets that were added earlier will be picked if two
- sequences for the same charset are registered (Bugzilla #228,
- Egbert Eich).
- 344. Use return value sysconf (_SC_OPEN_MAX) instead of the fixed number 256
- for allowed number of open files on POSIX.1 conformant systems
- (Egbert Eich).
- 343. Added missing exported functions in libfreetype to compile mkfontscale,
- made mkfontsdir script install on platforms that use extensions (Bugzilla
- 536, Frank Giessler).
- 342, Fixed a sig11 in Xaw that may appear on the rare condition that no font
- can be found (Bugzilla #482, Egbert Eich).
- 341. Added KP_Separator to symbols that can generate decimal() in xcalc
- (Egbert Eich).
- 340. Disabled Color8x8PatternFill() in savage driver (Egbert Eich).
- 339. Fixed a sig11 in twm when used with a session manager (Egbert Eich).
- 338. Fixed rounding of refresh rate in RandR, updated Xrandr man page
- (Bugzilla #527, Egbert Eich).
- 337. Added MenuBorderWidth and MenuBorderColor options to twm (Bugzilla #529,
- Alexander Pohoyda)
- 336. Update for VIA driver:
- - DGA no longer hangs (eg freedroidRPG now runs reliably)
- - Starting two copies of Xine no longer aborts the X server
- - Added support for KM400/K8M400
- - Improved video overlay support.
- - Fixed video overlay clipping when the image cliprects change but
- not the size.
- - TV tuner support via XV interface for two overlay ports.
- - DRI support (the client side library is not yet fully ported to 4.3).
- - Disable Xv in modes with insufficient bandwidth (1600c1200x16).
- - Updated documentation
- It differs from the base VIA codedrop.
- - Several of the fixes were done by me on top of it (the dual Xine fix,
- and bandwidth)
- - Various system types have been turned to CARD32 to make the code
- portable
- - The hybrid Video4Linux/XV glue was racy and has been removed
- (the XV layer is more than sufficient anyway)
- - DRI library client code is not included (porting not yet finished)
- - Additional debugging
- (Bugzilla #525, VIA, Alan Cox) .
- - Cleaning up namespace pollution, removing dependency on via_drm.h
- removing some global symbols from driver (Egbert Eich).
- Please note: there are more global symbols yet to be removed.
- 335. Remove the 'xc/xkbcomp/geometry/HP' directory from the CVS repository.
- 334. Substantial rewrite of the "nv" driver (Mark Vojkovich).
- 333. Resync with Cygwin/XFree86 changes up to Test92 (#5721, Harold Hunt and
- the Cygwin/XFree86 project).
- 332. Add a clean target for Cygwin's ResourceObjectRule() rule (#5720,
- Harold Hunt).
- 331. Fix xman's formatting/displaying of manual pages on Darwin, where
- 'groff' defaults to PostScript formatting (#5719, T. M. Pederson).
- 330. SiS driver update:
- - Fixed SiS 620 support
- - Added interface for sisctrl utility
- (Thomas Winischhofer)
- 329. Fixes for regressions in xauth and xhost with IPv6 code
- (Matthieu Herrb, Hideki ONO).
- 328. Update X-TrueType (X-TT) to version 1.4.1 (Chisato Yamauchi,
- After X-TT Project):
- - Extension of code converter modules for ARABIC, ARMSCII8,
- BIG5HKSCS, GB18030, ISO8859.*, etc. (Pablo Saratxaga, James Su)
- - Try to use TT_Load_Glyph_Bitmap() in get_metrics() when `bs'
- option is not set.
- - Use Embedded Bitmap with the option `eb=y' when Auto Italic is set.
- - Enhancements for `ds', `eb' and `bw' options.
- - New options for TTCap, `fc' and `fm': they enable the *extremely*
- fast loading of big Japanese or unicode fonts with `-p-' in the XLFD.
- - Performance improvement of FreeTypeGetMetrics() function.
- - Improved performance based on the solution to the buffer
- overflow problem, caused by exceeding the range of
- maxbounds.ascent/maxbounds.descent. This problem occurred only
- when `-m-' spacing was used.
- - Improved fix to crashes caused when certain fonts (e.g. verdana.ttf)
- are used; solution based on investigating the true nature of the
- problem.
- - Added patch for mktcapdir-0.5.4 and some ttfconf files suitable for
- X-TT 1.4.0.
- - Preparation for extending the encoding field of XLFD. X-TT permits
- the following additional XLFD format:
- "-foo-foo-medium-r-normal--0-0-0-0-c-0-foo.2000-0.0"
- "-foo-foo-medium-r-normal--0-0-0-0-c-0-foo.2000-0.1"
- The last number can be used to indicate the plane number of a huge
- character set.
- - Support for reverse `fc' specification. `fc=0xaa00-0xa0ff' means
- specifying the ranges 0x0000-0xa0ff and 0xaa00-0xffff. This is
- useful for GB18030 proportional fonts.
- - Improved fix for server crash that appears on Linux/PPC.
- - Added ksc5601.*-3 and ksx1001.*-3 to KSCJOHAB/main.c (Jungshik Shin).
- - Added U+20AC and U+00AE characters to KSCJOHABtoUCS2.c and
- KSC5601toUCS2.c (Jungshik Shin).
- - Fixed an X server crash when using LucidaSansRegular.ttf
- (reported by Koike Kazuhiko).
- - Improved fix to prevent NULL dereference when the font cache
- becomes full; solution by allocation of a dummy area for bitmap.
- - Fixed an X server crash because of an inconsistency problem between
- XFree86 and X-TT (reported by Koike Kazuhiko).
- - Numerous minor improvements.
-
-XFree86 4.3.99.9 (25 July 2003)
- 327. Add Mach64 I2C framework. Derived from GATOS project (Marc La France).
- 326. Removed ru_yawerty xkb symbols file as it is misleading as suggested
- by Ivan Pasacal (Bugzilla #516, Ivan Pascal).
- 325. Fixed two bounds errors in rman
- (Bugzilla #505, Dan Nelson, Bugzilla #506, Eric Anholt).
- 324. Cleaned up MMIO map/unmap in RADEONPreInit(), unmapped MMIO in
- CloseScreen() even when server is switched away (Bugzilla #504,
- Hui Yu, Egbert Eich).
- 323. Modified transport code so that a bind to an IPv4 socket fails silently
- when the bind to an IPv6 socket for the same port was successful.
- This works around a problem in theIPv6 implementation on some OSes
- that also handle IPv4 calls over IPv6 sockets (Egbert Eich).
- 322. Simplified handling of the -nolisten option as suggested by
- Alan Coopersmith. This option can now be issued multiple times.
- 321. Added code to unmap sysMem when freeing int10 (Bugzilla #504,
- Frank Giessler).
- 320. Fix generic rootless crash while resizing when CopyBytes is not defined
- by the implementation (Torrey T. Lyons).
- 319. Fix XDarwin Cocoa rootless crash when unshaping a shaped window
- (Torrey T. Lyons).
- 318. More IPv6 changes from Alan Coopersmith as follows:
- - Add support for IPv6 bracketed numeric addresses, similar to RFC 2732
- syntax to a number of areas.
- - Fix some issues with colon parsing and determining which addresses are
- DECnet (two colons between hostname and display number) and which are
- non-bracketed IPv6 numeric addresses ending in two colons, followed by
- another colon and the display number (three colons in a row).
- - Fix additional places Fabio forgot to change the string length when
- switching "inetv6" to "inet6".
- - Use MAXHOSTNAMELEN if it is defined for MAXHOSTNAME in xrdb. (Perhaps
- NI_MAXHOST should be used as well on platforms that support it.)
- - Make #include <sys/socket.h> in Xtrans.h look like the other places
- it's included in the tree, with checks for Lynx & Win32
- 317. IPv6: 2003.07.11 update to X.Org's response to comment #13; i.e.
- s/FamilyInternetV6/FamilyInternet6/g (Marc La France).
- 316. IPv6 build fixes for older Linux systems; Many of these are derived from
- a suggestion by Alan Coopersmith (Marc La France).
- 315. Change DEVID macro to work around glitch in SCO's C compiler
- (Marc La France).
- 314. Fixed Radeon driver so that clone modes survive server reset
- (Bugzilla #487, Egbert Eich).
- 313. Changed behavior of FreeType and Type1 renderer: when no encoding file
- is found fail with BadFontName instead of using an iso8859-1 encoding
- (Bugzilla #479, Roland Mainz, Juliusz Chroboczek, Egbert Eich).
- 312. Fixed screen switching problem on SCO where VT was off by one
- (Bugzilla #470, Kean Johnston).
- 311. S3 driver:
- . allow only specific displayWidths when acceleration is enabled
- . added double_scan support (Egbert Eich).
- 310. Removed build rules for hp Xserver that was recently removed from
- Xserver/Imakefile (Egbert Eich).
- 309. Fixes for C&T driver:
- . switch to SW mouse in doublescan modes.
- . centered video correctly for all interlaced modes (docs were
- misleading).
- . fixed README (Egbert Eich).
- 308. Fixed a typo in mkfontscale (Bugzilla #491, Juliusz Chroboczek).
- 307. A lot of X server prototype cleanups, including fixing an
- inconsistency between the cfbBitBlt and CopyPlane functions
- exposed by the prototyping (#A.1859, Alexander Stohr).
- 306. Fix missing newline in Message -> MessageF transition in dri_glx.c
- (#A.1833, Alexander Stohr).
- 305. Fill out the sunleo man page (#A.1783, Arnaud Quette).
- 304. Fix a typo in the XSetWMProtocols(3) man page (#5697, Alexander Pohoyda).
- 303. Fix for a few Xlib charset converters (Bruno Haible).
- 302. Fix calculation of CRTC2 frame offset with page flipping in radeon driver
- (Michel Daenzer)
- 301. Xinerama-fy the XTest extension (Rik Faith).
-
-XFree86 4.3.99.8 (10 July 2003)
- 300. X.Org IPv6 changes (Bugzilla #227, Alan Coopersmith, Marc La France).
- See http://www.x.org/IPV6_Specific_Changes.html for details. This has
- been further modified as follows.
- - Deal with small memory leaks in xdm & xauth.
- - Fix a number of compilation issues.
- - Where supported, use SIOCGLIFCONF to query network interfaces on more
- than only Solaris.
- - Incorporate X.Org responses to comments #'s 1, 2, 4, 5, 7, 10, 11, 12,
- 13, 14 and 15 (taken from an X.Org-internal document dated 2003.06.17).
- - Replace HasIPv6 imake symbol with BuildIPv6, defaulting it to YES, and
- build in IPv6 support whenever BuildIPv6 is asserted _and_ the OS
- #define's AF_INET6. This is to maximise IPv6 code exposure and
- eliminate <OS>.cf file changes to support IPv6.
- 299. On Solaris, don't allow remote root xdm logins if CONSOLE is set in
- /etc/default/login (Bugzilla #227, Alan Coopersmith).
- 298. Fix SEGV in fstobdf when font server is not specified and FSServerName()
- returns NULL (Bugzilla #227, Alan Coopersmith).
- 297. Fix XDMCP bug that could cause local host entries in /etc/X0.hosts to be
- lost (Bugzilla #227, Alan Coopersmith).
- 296. Make certain xtrans static variable volatile to avoid optimisation issues
- that occur when they are modified by SIGALRM handlers
- (Bugzilla #227, Alan Coopersmith).
- 295. Use %p instead of %x to print pointer values in xtrans debug messages to
- avoid overflow on platforms with 32-bit ints & 64-bit pointers
- (Bugzilla #227, Alan Coopersmith).
- 294. Change SUN-RPC code to use authdes_seccreate() call rather than the
- deprecated authdes_create() (Bugzilla #227, Alan Coopersmith).
- 293. Add xdm /dev/random handling for Solaris
- (Bugzilla #227, Alan Coopersmith).
- 292. Solaris compile fixes (Bugzilla #227, Alan Coopersmith).
- 291. Update X.Org version numbers to X11R6.6 or X11R6.7 and replace old
- references to X Consortium with X.Org (Bugzilla #227, Alan Coopersmith).
- 290. Update the usage of DRM AGP handles so that valid handles aren't
- mis-interpreted as invalid handles (based on Bugzilla #484, Dave Airlie).
- 289. Twisting fontfile.c and fontdir.c to be able to pass all fonts (bitmap
- and scaleable) to the scalable renderer as this one can deal with
- XLFD names (Bugzilla #475, Juliusz Chroboczek). PLEASE TEST!
- 288. Changing PS/2 mouse resolution to 8 counts/mm as some broken mice have
- problems with other values (W. uses 8) (Egbert Eich).
- 287. Fixing mode setting by BIOS. Wrong clock selection in MiscOut register
- caused screen to stay blank (Egbert Eich).
- 286. Added description for -dumpSched and -schedInterval to the usage
- message (Egbert Eich)
- 285. Update the SCO OpenServer port, fixing these specific problems:
- . Fixed the Imake template so i[3456]86 and friends arent defined
- . Fixed bad preprocessor stuff in X11.tmpl that was producing warnings
- . Updated default GCC flags to more aggresively optimize
- . Fixed keyboard LED handling
- . Enable SCO function keys in xterm
- . Make Delete key send DEL by default on SCO in xterm
- . Fix to make fonttosfnt compile (Bugzilla #470, Kean Johnston).
- 284. Added missing ro2 symbols file to list of files to install
- (Bugzilla #476, Egbert Eich).
- 283. Corrected precedence problem in test in xc/lib/X11/XKBUse.c:
- XkbUseExtension(). This avoids an extra round trip during application
- startup (Bugzilla #473, Owen Taylor).
- 282. Fixing deadlock in libXi - when is called _XLockDisplay() twice - when
- calling a Xi function that calls XGetExtensionVersion() (Bugzilla #260,
- Bastien Nocera, Owen Taylor).
- 281. Adding support for video modes <320x240 to S3 driver by changing the
- minimal clock frequency to 15.6 MHz (Bugzilla #472, Alexey Baj).
- 280. Made mkfontscale behavior and options compatible to mkfontdir, fixed
- bugs in output format (Bugzilla #425, Juliusz Chroboczek, Kean Johnston).
- 279. Changed xclock hands back to black (antialiased) , created XClk-col.ad
- to set colored hands instead, added missing documentation for missing
- resources. This follows the behavior of the other X applications more
- closely (Bugzilla #437, Joerg Wunsch).
- 278. Added support for Trio64UV+ and Trio64V2/DX/GX to S3 driver (backport
- from 3.x) (Bugzilla #465, Alexej Baj).
- 277. Increased Xlib default buffer size to 16k (was 2048), made size
- configurable thru environment variable XLIBBUFFERSIZE (minimum 2048)
- (Bugzilla #466, Roland Mainz).
- 276. Increased maximum BIGREQUEST size to 4Mb and made it configurable thru
- a command line option. This increases performance of certain
- applications considerably (Bugzilla #460, Roland Mainz).
- 275. VIA driver: initialized screen parameters in PreInit() instead of
- AccelInit() so that they are set even when acceleration is disabled
- (Egbert Eich).
- 274. Do not drop H&V sync during screen blanking for Radeon
- (Bugzilla #320, Michael Breuer, Hui Yu@ATI).
- 273. Let out-of-limit pixel clocks only use the frequency below pll output
- lower limit for Radeons (Bugzilla #262, John Vickers, Hui Yu@ATI).
- 272. Add support for Radeon cards with DAC/TMDS wire up in different ways
- from what the driver was originally programmed to; includes support
- for dual DVI cards (Hui Yu@ATI).
- 271. Add Radeon DPMS handling for flat panels (Bugzilla #26, Hui Yu@ATI).
- 270. Decreased the retry loops in DDC probing so that Radeon startup
- time won't be too long in the worst case (Hui Yu@ATI).
- 269. Fix Radeon Asic bug in RMX unit of IGP chips (Hui Yu@ATI).
- 268. Fix Radeon register initialization for RGB offset to fix the
- "milky-screen" problem (Bugzilla #351, Hui Yu@ATI).
- 267. Add support for new Radeon chips: R350(9800), RV350(9600,M10),
- RS250(IGP7000), RS300(IGP9000), RV280(9200) (Hui Yu@ATI).
- 266. Fix a lockup with the trident driver when stopping/starting Xv
- applications (Alan Hourihane).
- 265. Fix initialisation in xauth (Martin Birgmeier).
- 264. Calling RADEONSaveFPRegisters() regardless of display type to catch
- register restauration problems (Bugzilla #193, Hui Yu).
- 263. Fixed order of name and filename in encodings.dir files generated by
- mkfontscale (Roland Mainz).
- 262. Changed resource registration in TDFX driver: VGA mem resources
- are unused during OPERATING state, RAC isn't required for memory
- resources (Bugzilla #357, Egbert Eich).
- 261. Attempt to fix VIA driver lockups when moving windows:
- assumed bug compatibility to previous S3 products
- (Bugzilla #435, Egbert Eich).
- 260. Disabled mode writeback to client program from MGA driver (Egbert Eich).
- 259. #ifdef'ed variables in os-support/bsd in cases they are not needed
- (Bugzilla #430, Jason L. Wright).
- 258. Fixes and updates for XKB keyboard maps:
- - add Faroese keyboard map (Bugzilla #401, Roi a Torkilsheyggi)
- - add missing KPPT key to ABNT2 keycodes list (Bugzilla #431, Christian
- Tosta)
- - fix geometry/pc file (Alexander Pohoyda).
- 257. Don't sleep on Darwin for directory owner/mode problems (John Harper).
- 256. Limit 430TX and 430VX to 128 and 32 PCI buses respectively
- (Marc La France).
- 255. Add direct GLX rendering on Mac OS X and Apple-DRI extension
- (John Harper).
- 254. Replaced inline asms with compier intrinsics for Intel compiler
- (Bugzilla #427, Slava Sysoltsev).
- 253. Partly fixed build problems caused by mkfontdir replacement
- (Bugzilla #425, Egbert Eich).
- 252. SiS driver update:
- Fixed Xabre support
- (Final) fix for Compaq 3045US
- Customized timing for 848x480 parallel panels
- 251. Replaced mkfontdir by simple shell script that calls mkfontscale
- (see #233) (Bugzilla #388, Juliusz Chroboczek).
- 250. Added encoding files for Arabic (iso8859-6.16 and iso8859-6.8x)
- (Bugzilla #420, Roland Mainz).
- 249. Removed O_SYNC from open call for /dev/mem for all Linux platforms.
- This hopefully takes care of the speed problem
- (Bugzilla #419, #414, Egbert Eich).
- 248. Fixed fontstosfnt to build on OS/2 (Bugzilla #415, Frank Giessler
- Juliusz Chroboczek).
- 247. Fixed DMC touchscreen driver: button press events are properly
- recognized now, made sure device is still recognized after a restart,
- fixed misleading error messages (Bugzilla #418, Andreas Kies).
- 246. Added PanoramiX supprt for the RENDER requests: Trapezoids, Triangles,
- TriStrip, TriFan, SetPictureTransform and SetPictureFilter
- (Bugzilla #138, Egbert Eich).
- 245. Fixed SW/Theme cursor drawing glitches in i740 driver (Bugzilla #21,
- Egbert Eich).
- 244. Added input driver for Aiptek tablet (Bugzilla: #393, (list #5686),
- Bryan W. Headley).
-
-XFree86 4.3.99.7 (25 June 2003)
- 243. Added 'BitKeeper' to the directories that get excluded by lndir
- (Bugzilla #408, H.J.Lu).
- 242. Fixed gcc warnings in xdmauth.c (Bugzilla #410, Jason L. Wright).
- 241. Updated Citron touchscreen driver: set 'block duration time'
- to one second to avoid timeouts, added user strings to inform about
- HW version (Peter Kunzmann).
- 240. Fixed wraparound bug in TimerSet() (Peter Osterlund).
- 239. Fixed X*LookupString() in imDevLkup.c to return status
- XBufferOverflow and the required size as required
- (Bugzilla #397, Kusanagi Kouichi).
- Dto. for imLcLkup.c (Egbert Eich).
- 238. Removed unused function QualifyName, Exit() from Xprint
- and CountBits(), matchVisuals() from GLX
- (Bugzilla #395, #400, #394 Jason L. Wright).
- 237. Fixed type warning when building sunffb driver on 64bit
- (Bugzilla #404, Jason L. Wright).
- 236. Fixed warnings when building Palmex touchscreen driver statically
- (Bugzilla #405, Jason L. Wright).
- 235. Fixes and updates for XKB keyboard maps:
- - add programmers variant to the Turkish keyboard map (Nilgün Belma
- Bugüner)
- - add a variant of the Romanian keyboard map for German keyboard
- (Manfred Pohler)
- - add layout for BTC 9001AH keyboard (Nick Kurshev)
- - add Uzbek keymap description (Bugzilla #391, Mashrab Kuvatov)
- - update geometry files (Alexander Pohoyda)
- 234. Added fonttosfnt, a utility that generates bitmap-only TTFs. It is
- capable of reading most font formats (Bugzilla #389,
- Juliusz Chroboczek).
- 233. Added functionalities to mkfontscale so mkfontscale performs every
- functionality mkfontdir does (Bugzilla #387, Juliusz Chroboczek).
- 232. Removed absolute path from cpp for Linux as /usr/bin/ should be
- in the default search patch (Egbert Eich).
- 231. Fix regression of Xvideo not working with some videos on the
- CyberBladeXP/Ai1 chips (Bugzilla #251, Stephane Voltz).
- 230. Added early failure and warning message when not sufficient memory
- available for DRI in i8xx driver (Egbert Eich).
- 229. Fix bug in original patch which added support for two new relocation
- types for IA64 (Bugzilla #195, John Dennis).
- 228. Fix scaling calculus in savage driver (Bugzilla #274, Emmanuel).
- 227. Clarifying if conditions, fixing memory leaks in error path, removing
- useless code in savage driver (Bugzilla #278+279, Emmanuel).
- 226. Adding message to R128 driver which informs about modified modes for LCD
- according to VBIOS (Bugzilla #23, Egbert Eich).
- 225. Fixed chipset ID for v2100/v2200 for overrides (Egbert Eich).
- 224. Added interlaced support for Voodoo 3,4,5 to TDFX driver (Bugzilla #383,
- Jakub Bogusz).
- 223. Fixed typo in getPciBiosTypes() (Bugzilla #382, Jakub Bogusz).
- 222. Restore previous mode if mode switch fails (Bugzilla #381, Jakub Bogusz).
- 221. Fixed typo that prevented lubB19 fonts with different maps from being
- generated (Bugzilla #380, Jakub Bogusz).
- 220. Sync entrypoints for OS/2 with recent changes in fontconfig and Xft
- (Bugzilla #374, Frank Giessler).
- 219. Added detection of 2Mb memory for CLGD7548, fixed a possible memory
- leak and did minor cleanups (Bugzilla #369, Lucas Correia Villa Real).
- (PLEASE TEST!)
- 218. Recode single-byte keyboard scancodes that clash with recoded
- double-byte scancodes (David Dawes).
- 217. Fixes and updates for XKB keyboard maps:
- - add more EuroSign to "us_intl" keyboard map (Paul Bolle)
- - update geometry files (Alexander Pohoyda)
- - add AudioMute key to inet(hpxe3gc) (Bugzilla #350, Paul Pacheco)
- - add option for replacing RCtrl key with Right Alt (Bugzilla #343,
- Adam Tlalka)
- - add Uzbek keyboard map (Bugzilla #372, Mashrab Kuvatov)
- 216. (Re-)fix portability of gccmakedep and generate ccmakedep on all
- platforms (Marc La France).
- 215. Fix i810/i815 problem with interlaced modes where only the top half
- of the screen gets displayed (Paul Stewart).
- 214. Changed any occurance of x86_64 to AMD64, the official name of the
- architecture (Egbert Eich).
- 213. Removed Copyright sign from man pages as this causes some formatters
- to choke (Egbert Eich).
- 212. Export SysV IPC functions to modules in Net and OpenBSD
- (Bugzilla #355, Quentin Garnier).
- 211. Fix rootless bug when reordering windows behind others (Torrey T Lyons).
- 210. Fix page size issues that prevented the mmap()'ing of SBUS devices
- (Marc La France).
- 209. Fixes for the following problems on OS/2:
- - long startup delay of xinit
- - recovery from hard-error popups
- - text-mode version of xf86cfg
- - xf86cfg unable to find default config file
- - installation of static libraries
- - missing exported functions in X11.dll
- - typo in xf86pathIsAbsolute()
- (Bugzilla #267, Frank Giessler).
- 208. SiS driver update:
- Fixed 1280x960 and 1280x1024 LCD support (SiS 30x)
- Added Chroma-Keying support to Xv part
- Added support for Barco iQ R and G series projectors
-
-XFree86 4.3.99.6 (10 June 2003)
- 207. Add support for the Mac's KP_Equal key (untested) (David Dawes).
- 206. Import fontconfig 2.1.0 as an external package, and update the build
- to use this version (David Dawes).
- 205. New version of the FreeType backend. (Bugzilla #325, Juliusz Chroboczek).
- 204. Rework XDarwin's Cocoa rootless implementation to use new generic
- rootless code in miext/rootless (Torrey T. Lyons).
- 203. Fix repeated image problem when using a vesa video mode before starting
- the Xserver on the S3 Trio3D cards (Alan Hourihane).
- 202. Import zlib 1.1.4 for systems that don't provide it (Matthieu Herrb).
- 201. Improve fonts width and weight detection (Bugzilla #265-266,
- Juliusz Chroboczek).
- 200. Fix library dependencies for xlibi18n modules (Bugzilla #82, Joe Kelsey,
- Matthieu Herrb).
- 199. Fix manual pages typos (Bugzilla #316, Jens Schweikhardt).
- 198. Fix bug (Bugzilla #315) in _XTextPropertyToTextList() that causes
- an application crash in some circumstances (Ivan Pascal).
- 197. Fixes and updates for XKB keyboard maps:
- - add asciitilde to Swedish 'nodeadkeys' map (Bugzilla #291).
- - add map for true Romanian keyboard (Bugzilla #300, Manfred Pohler).
- - add EuroSign to "us_intl" keyboard map (Bugzilla #309, Paul Bolle).
- - fix some keys in Armenian 'phonetic' layout (Bugzilla #313, Ani).
- - add some geometry files (Alexander Pohoyda).
- - some cosmetic changes.
- 196. Import FreeType 2.1.4, and do initial merge for config/build
- (David Dawes).
- 195. Remove unnecessary links of libm (Marc La France).
- 194. IRIX 6.5 build fixes and noise reductions (Marc La France).
- 193. Clean up confusion in Imakefiles between XONLYLIB and XLIBONLY (and
- between DEPXONLYLIB and the previously non-existent DEPXLIBONLY)
- (Marc La France).
- 192. Do not unnecessarily link libXmu, libXt and/or libXext into executables
- (Marc La France).
- 191. Fix makedepend for IRIX 6.5 (Marc La France).
- 190. Make the handling of X_BYTE_ORDER in Imakefiles more portable
- (Marc La France).
- 189. Allow building of a libXfont without font cache support (Marc La France).
- 188. When using cpp to generate scripts and data files, change XCOMM to pound
- signs even when preceeded by only whitespace, and provide a means to
- generate output lines with trailing backslashes. Change `startx` script
- accordingly (Marc La France).
-
-XFree86 4.3.99.5 (25 May 2003)
- 187. Fix XDMCP queries in xdm on systems using getifaddrs().
- (Bugzilla #277, Joel Ray Holveck).
- 186. Initial imake/config support for more closely (and more
- automatically) emulating how libtool handles shared library revisions.
- Implmemented for Linux only so far (David Dawes).
- 185. Fix libexpat shared lib revision on platforms that use minor version
- numbers (David Dawes).
- 184. Update Tamil keyboard map (Thuraiappah Vaseeharan).
- 183. Add missing xfs reply to GetEventMask requests (Marc La France).
- 182. Change the ELF loader to ignore .debug* sections (Marc La France).
- 181. Simplify internal interfaces in the PCI code and remove the Xserver's
- interference with normal PCMCIA operation (Marc La France).
- 180. i810/815 depth buffer needs to be a multiple of the tile size. This
- fixes 3D corruption near the bottom of the screen at 800x600@16bpp
- (Bugzilla #283, Dave Airlie).
- 179. SiS driver update
- - Allow Modelines for LCD and secondary VGA on 301B
- - Support plasma panels natively (including a small
- database for some known panels since some panels
- report wrong timing data via DDC)
- 178. DRM resync from the DRI trunk...
- - Lots of fixes/cleanups/resyncs for the BSD DRM drivers (Eric Anholt).
- - Fix potential oops and memory leaks when allocations fail in
- addbufs_agp/pci (Leif Delgass).
- - Add support for buffer private structs with PCI DMA buffers
- (Leif Delgass).
- - Disable MTRRS on FreeBSD-stable (Eric Anholt).
- - Remove some unused code (Keith Whitwell).
- - Move prototypes for gamma functions to gamma_drv.h (Keith Whitwell).
- - 2.5.x resync (Linus Torvalds).
- - Ensure driver has been initialized before installing irq handler,
- and modify all drivers to ensure irq handler is removed before
- cleanup, and cleanup is called at takedown (Leif Delgass).
- - Check for lock on init/cleanup in all drivers except i810/i830
- (Leif Delgass).
- - Put back __HAVE_KERNEL_CTX_SWITCH for the sparc drm driver
- (Keith Whitwell).
- - Only free original pagelist in addbufs_pci if one already exists
- (fixes oops) (Leif Delgass).
- - texmem-0-0-1 branch merge (Ian Romanick).
- - Fix warning on machines where sizeof(drm_addr_t) != 4 (Randy Dunlap).
- - Support AGP bridges where the AGP aperture can't be accessed directly
- by the CPU (David Mosberger, Benjamin Herrenschmidt, Michel Daenzer,
- Paul Mackerras, Jeff Wiedemeier).
- 177. Fix another xedit compile problem (Marc La France).
- 176. Small fix for Italian keyboard map (Sebastiano Vigna).
- 175. Don't ship xf86Bus.h and xf86pciBus.h with the SDK (Marc La France).
- 174. Restore VGA driver's checking for depths 1, 4 & 8 (Marc La France).
- 173. Fix a problem with savage driver when UseBIOS is off, such that the
- performance drops dramatically. Now the performance matches or
- exceeds that of the option UseBIOS (Alan Hourihane).
- 172. Add workaround for problems that arise when in multi-layout map
- different modifier keysyms share the same key (Ivan Pascal).
- 171. Fix bug that causes XGetKeyboardMapping produce incorrect map when keys
- have more then two keysyms. Also add a map columns duplication for better
- compatibility with core protocol keyboard maps (Ivan Pascal).
- 170. Fix XKB bug (Bugzilla #253) that causes an Xserver crash when XKB action
- RedirectKey is used (Ivan Pascal).
- 169. Add missing letters to Ukrainian phonetic keyboard map (Andriy Rysin).
-
-XFree86 4.3.99.4 (10 May 2003)
- 168. Prevent a SIGFPE with the glint/pm3 driver when attempting to display
- an XVideo image less than 8 pixels wide (Måns Rullgård).
- 167. Support for building a DRI enabled server on OpenBSD (Wilbern Cobb,
- Matthieu Herrb).
- 166. Fix double free bug when a Mac-specific font fails to load with
- Freetype (Torrey T. Lyons).
- 165. Check for NULL tObj in the i830 3D driver's TexEnv function. This
- fixes a FlightGear crash (Keith Whitwell).
- 164. Set Mesa hooks to flush vertices on state changes in Radeon 3D drivers
- (Keith Whitwell).
- 163. Add an entry to the i2c module that drivers can call to retrieve an array
- of all I2C buses associated with a screen (Marc La France).
- 162. Fix to prevent PCI and CardBus resets when switching out of the server's
- virtual console (Marc La France).
- 161. Change the /dev/ file used on some *BSD's to mmap the framebuffer in DGA
- clients to match the /dev/ file used by the server (Marc La France).
- 160. SiS driver fixes:
- - Added MergedFB mode (including HWCursor and Xv)
- - Xv enhancements and fixes for all chipsets
- - New Xv properties (SWITCHCRT, TVPOSITION, etc)
- - Added support for custom LCD resolutions (via DDC)
- - Fixed DVI output (DVI-D and DVI-A), automatic detection
- - Numerous bugfixes and enhancements
- (Thomas Winischhofer)
- 159. Make freetype-config more useful on NetBSD (#5693, Thomas Klausner).
- 158. Small fixes in keyboard maps:
- - add an explicit type declaration in level3(ralt_switch)
- (Bugzilla #225, Séamus Ó Ciardhuáin);
- - fix wrong group number in Russian keyboard map (Ivan Pascal).
- 157. Add rootless implementation for XDarwin using Apple's Xplugin API
- (John Harper, Torrey T. Lyons).
- 156. Fix precision problems in xf86XVClipVideoHelper and in Mach64 XVideo
- support (Marc La France).
- 155. Add missing symbols when DRI is disabled to glint driver
- (Bugzilla #203, Mike Harris).
- 154. Fix a memory leak caused by the data allocated in XGetDefault() never
- being freed (Jim Radford).
- 153. Update keysym capitalization rules in XConvertCase() with unicode
- keysyms and some missed charsets (Bugzilla #209, Séamus Ó Ciardhuáin).
- 152. Use C89 style function prototypes in manual pages (Bugzilla #208,
- Aidan Kehoe).
- 151. Fix small memory leaks in XvQueryAdaptors() and __driUtilCreateScreen()
- (Jim Radford).
- 150. Updated Wacom driver to support ntuos 2 2D mouse and a few styli,
- TabletPC with ISD V4 protocol, intiq 15X and Cintiq 18SX
- (Wacom).
- 149. Fix programming error in ix86 motherboard chipset determination
- (Marc La France).
- 148. Ansi prototypes cleanup in Xserver/include and Xserver/os
- (Matthieu Herrb).
- 147. Fix shared libXp dependencies on *BSD and Darwin (Dale Rahn).
- 146. Fix infinite loop that occurs on systems whose PCI configuration space
- doesn't advertise a host bridge (Marc La France).
- 145. Workaround for broken devices that don't implement the header type field
- in their PCI configuration space (Marc La France).
- 144. Portability changes for older Sun compilers (Alan Coopersmith).
-
-XFree86 4.3.99.3 (25 April 2003)
- 143. Fix building of the dristat and drmstat utilities (David Dawes).
- 142. From the DRI trunk...
- - Remove more dead code from the BSD DRM (Eric Anholt).
- - Remove some #if 0'd code and unused string functions from the Linux
- DRM (Keith Whitwell).
- - Move debug versions of the DRM memory functions to a new file
- (Keith Whitwell).
- - drm_memory cleanup (Leif Delgass).
- - dristat and drmstat cleanups (Leif Delgass).
- - Remove unused dev->map_count (Leif Delgass).
- - For the i830 DRM driver, pass the dma handle from pci_alloc_consistent
- to the card for status page rather than using virt_to_bus on
- the virtual address (Leif Delgass).
- - Cleanup the style of the linux-compat code in the BSD DRM, and use
- ioctl directly rather than reimplementing it (Eric Anholt).
- 141. Remove old XF86Setup source code. (Matthieu Herrb).
- 140. Only add all default modes to mode list when RandR is enabled and
- active (Egbert Eich).
- 139. MGA driver: vertical blanking can generate interrupt (2D driver part)
- (Ville Syrjala Bugz.: 199).
- 138. Fix mmapw SEGV (Marc La France).
- 137. From the DRI trunk...
- - Install dummy/noop read & poll fops unless the driver has
- replacements (Keith Whitwell).
- - Remove gamma-specific stuff from the BSD DRM (Eric Anholt).
- - Remove DRM_DMA_HISTOGRAM and associated code from the BSD DRM
- (Eric Anholt).
- - Remove BSD DRM's unused drm_init.h (Eric Anholt).
- - Handle read() failures in the drm X server module (Michel Daenzer).
- - Set DRM device major for NetBSD.
- 136. Fix bug that prevented fbman from using the last partial scanline of a
- Mach64 framebuffer (Marc La France).
- 135. Make ATI Mach64 FIFO cache integrity testing optional (Marc La France).
- 134. Export ATI Mach64 hardware overlay as an XVideo adaptor (derived from
- GATOS project, Egbert Eich, Marc La France).
- 133. Reorganise ATI Mach64 support into separate source files
- (Marc La France).
- 132. Refine atimisc's decoding of the panel mode on server entry in an attempt
- to reduce the effect of atyfb bugs (Marc La France).
- 131. Make Rage128 and Radeon XVideo available even when 2D acceleration is
- disabled (Marc La France).
- 130. There is no longer any need to require hardware cursors during Rage128
- and Radeon XVideo displays (Marc La France).
- 129. Initialise v4l's XVideo adaptors last (Marc La France).
- 128. Reduce cut&paste effects by adding more helpers to Xv
- (derived from #5645, Björn Augustsson, Marc La France).
- 127. Centralise a region comparison primitive into 'mi' and use it instead of
- local definitions throughout the server (Marc La France).
- 126. DPMSExtension & XvExtension driver cleanups (Marc La France).
- 125. Add missing tests for vtSema to xaa 'Picture' functions.
- These missing checks caused strange behavior with some drivers
- when RENDER extension requests were made while X was switched away.
- (Egbert Eich).
- 124. i810 driver: call drmCtlUninstHandler() on CloseScreen()
- (David Airlie).
- 123. Savage driver updated to 1.1.1.27: several fixes for video glitches
- (Tim Roberts).
- 122. Put back the DRM part of Charl Botha's Radeon suspend/resume support
- that was inadvertently backed out in the DRI resync last week.
- 121. Resync the Linux drm modules with the DRI trunk. Includes:
- - Check for NULL map before calling DRM(ioremapfree) on cleanup
- (Leif Delgass).
- - Remove DRM read, poll and write_string (Keith Whitwell).
- - Add more get_param queries for embedded project (Keith Whitwell).
- - Move a bunch of gamma-specific code into a gamma-specific file,
- and restore the kooky DRM(write_string) code for gamma
- (Keith Whitwell).
- - Remove unused DMA histogram code (Keith Whitwell).
- - Remove unused 'DRM_FLAG_NOCTX' option (Keith Whitwell).
- - Remove unused __HAVE_KERNEL_CTX_SWITCH code (Keith Whitwell).
- - Fix templates so the i8x0 drivers don't have to define
- __HAVE_DMA_WAITLIST (Keith Whitwell).
- - Gamma drm updates (Alan Hourihane).
- - Only mga, i810, i830 require AGP (Leif Delgass).
- - Remove PCIGART_ENABLED define for radeon, pcigart support now
- included for any arch (Leif Delgass).
- - Get rid of superfluous fields in struct drm_radeon_ring_buffer
- (Michel Daenzer).
- - Use correct address for radeon ring read pointer writeback
- (Michel Daenzer).
- 120. Fix a potential bug in ZX1 support (Marc La France).
- 119. Fix a buffer overflow in xkbprint (Ivan Pascal).
- 118. Fix a bug in Xlib that prevents a vertical text drawing with
- X[mb|wc]DrawString (bugzilla #178, OSAME Ken-ichiro).
- 117. Added missing files to the SDK so it can actually be used (Sven Luther).
- 116. mkfontscale enhancements (bugzilla #166, Julius Chroboczek).
- 115. Fix handling of local host names in /etc/X<n>.hosts (bugzilla #156,
- Alan Coopersmith).
- 114. Add to XLookupString an automatic search of the layout which keysym can
- be converted to a control-code when Control modifier is set (Ivan Pascal).
- 113. Fix xkbcomp crash with some combinations of layouts in a multi-layout
- keyboard map (Ivan Pascal).
- 112. Keyboard maps cleanups, including:
- - fix incorrect aliases in a keycodes file.
- - remove unneeded type declarations.
- - remove ThirdLevel modifier key descriptions in maps and replace them
- with references to a common one in 'level3' file.
- - some cosmetic changes.
- (Ivan Pascal).
- 111. Fix some function definition conflicts from Xlib cleanup when X_LOCALE
- or NeedWidePrototypes is set (Torrey T. Lyons).
- 110. Resync the BSD drm modules with the DRI trunk (Eric Anholt).
- 109. Resync the Linux drm modules with the DRI trunk. Includes:
- - Add 2nd arg for DRM_FREE (Keith Whitwell).
- - Use file pointers instead of pids for resource and lock tracking
- (Keith Whitwell).
- - Add 'SG' map type identifier string ((pci scatter/gather) to /proc vm
- info (Leif Delgass).
- - Use list_entry() to get container struct from struct list_head
- pointers. Build fix for RedHat 9 kernel (5 args to
- remap_page_range()) (Leif Delgass).
- 108. Fix a server crash with shadowfb and render when refreshing outside the
- visible screen (Sven Luther).
- 107. Fix a potential infinite loop during server generation when in
- Xinerama (Rik Faith).
- 106. Fix DRM module build on 2.5.41 and later kernels (tqueue -> workqueue)
- (David Dawes).
- 105. Fix lockup when using Xv in the trident driver (Alan Hourihane).
- 104. Add support for TV chipsets VT1621 and CH7005 to the trident driver
- (VIA, Alan Hourihane).
- 103. Add VIA CLE266 driver (Bugzilla #154, VIA/S3)
- 102. Remove non-functioning glxStub, and remove external GlxStaticServerLib
- support (David Dawes).
- 101. Change the WORLDOPTS default to empty. This means that 'make World'
- will now stop on the first error. To get the old behaviour, run
- 'make WORLDOPTS=-k World' (David Dawes).
- 100. Add preliminary version of generic rootless code based on XDarwin's
- rootless mode (Torrey T. Lyons, John Harper).
- 99. Remove PEX and XIE source code (Matthieu Herrb).
- 98. The XKB version of XRefreshKeyboardMapping() had an UnlockDisplay()
- call without a preceding LockDisplay() call (Yoel Perl).
- 97. Xlib cleanups and fixes, including:
- - Fixed up any old style function defintions that raised warnings.
- - Fixed functions with no parameter or return value.
- - Moved any external prototype in a c-files to h-files.
- - Set unreferenced and unmentioned functions to static.
- - Completed any forward declartion with its calling parameters.
- - Established function typedefs where might be helpful.
- - Fixed bogus XIM callback function to XID type, fixed XPointer* -
- XPointer mismatch on some callback.
- - Added explicit FIXME XXX statement on locations for the work around
- macro XCMS_CONVERSION_HARDWARE where the compiler was unsatisfied
- about a known problem with the currently inconsistent src_to_CIEXYZ
- table types.
- - Split _XcmsSetGetColor and *Colors handling routine in order
- to avoid any type conflicts there, fixed a memory leak for
- error case in that area. Used stack based Buffer for single-color
- version (should be simpler and faster).
- - Fixed _XAsyncReply where a "register variable pend" was passed
- and returned with the & operator. This location is further
- suspect of variable size problems on anything else but 32 bit
- platforms, with the new code it might more likely raise a type
- mismatch warning for those specific location.
- (#A.1729, Alexander Stohr).
- 96. Fix the <KPDL> mapping for the hr XKB map, and add an hr_US map (#A.1726,
- Vlatko Kosturjak).
- 95. Fix vmware driver crash when running two X servers concurrently (#5688,
- Nolan Leake).
- 94. Rework the Linux drm kernel module build to leverage off the standard
- kernel build system. This is based on suggestions and examples from
- David Woodhouse. This approach has the advantage that the build
- requirements of a wider range of standard kernels are now supported
- transparently, but the disadvantage of some extra complexity to handle
- building against clean vendor-distributed kernel source trees.
- This has been tested with some recent Red Hat and SuSE distributions
- (David Dawes).
- 93. Update Italian keyboard map (Bugzilla #109, Sebastiano Vigna).
- 92. Add keys missed in multi-layout keyboard maps: LSGT key in Belgian map
- and 'old','phonetic' variants in Armenian map (Ivan Pascal).
- 91. More reliable workaround for handling the I830Sync() function being
- called while VT switched away (David Dawes).
- 90. Fix references to DRI functions in non-DRI i810_driver.c build
- (David Dawes).
- 89. Import expat 1.95.4 (Matthieu Herrb).
-
-XFree86 4.3.99.2 (10 April 2003)
- 88. Fix file descriptor leaks in xman (Ted Unangst, OpenBSD PR#3186).
- 87. Fix bug in mode validation that occurs when the XF86Config doesn't
- specify any mode or virtual resolution information (Marc La France).
- 86. Resetting 'bound' flag for an agp entry after undbind succeeded in
- drm_agpsupport.h (Egbert Eich).
- 85. Ignoring hw_lock for drm device if lock was set by a different instance
- (ie Xserver) to prevent second server to spin in driver release function
- (currently only relevant for i8xx drm drivers) (David Dawes).
- 84. Adding extra delay before doing a slowBcopy in ia64 to prevent a MC
- when saving/restoring VGA fonts (Egbert Eich).
- 83. Turn off needToSync in LeaveVT() in i830 driver to prevent server
- crashes because xaa tries to sync blitter while switched away
- (Egbert Eich).
- 82. Added the O_SYNC flag when opening /dev/mem to work around a kernel bug
- which causes conflits between WC settings in MTRR registers and cacheable
- attribute in page table (Egbert Eich).
- 81. Reduced retry count for mouse configuration to 4. This should speed
- up server start for people who use a mouse repeater like gpm
- (Egbert Eich).
- 80. Fixed xf86cfg to duplicate font names before they get freed when
- unloading the module (Egbert Eich).
- 79. Added missing functions to xf86cfg (Egbert Eich).
- 78. Added missing ROP_NEEDS_SOURCE to Savage driver;
- now all 2D accel functions should use this flag (Egbert Eich).
- 77. Reduced flicker with video playback in Savage driver (Tim Roberts).
- 76. Load vgahw submodule in RENDITION driver before using it
- (Egbert Eich).
- 75. Magically speed up video playback on Neomagic (Egbert Eich).
- 74. Added drmAgpUnbind()/drmAgpBind() functionality on Leave/Enter for i810
- cards to allow a second Xserver to be started if the first one has
- DRI enabled (Egbert Eich).
- 73. Set NeedRingBufferLow for i855/i865 to avoid lockups on vt switches
- (Egbert Eich).
- 72. Check for vtSema before accessing registers in I830BIOSSaveScreen()
- (Egbert Eich).
- 71. Some sanity fixes for atiprobe to work better with xf86cfg: Handle
- situation gracefully if the PCI config pointer doesn't exist
- (Egbert Eich).
- 70. Changed behavior of fontfile: don't drop the entire directory if some
- fonts cannot be rendered (Egbert Eich).
- 69. Fixed B&H bdf fonts: AVERAGE_WIDTH is not a string but an int (Mike Fabian).
- 68. Fixed type in radeon driver which caused display to go into
- powersaving mode when Xcursor is disabled (Bugz: 90, Michel Dänzer).
- 67. Fixed typo in XKB-Config.sgml (Bugz: 53, Hiroyuki Bessho).
- 66. Fix SiliconMotion driver for mode switching and SEGV problem when
- initializing Xv functionality (Bugzilla #50, Alan Hourihane).
- 65. Add Radeon DRI suspend/resume support (Charl Botha, #A.1431).
- 64. Rage 128 Xv fix for high resolution displays (Rik Faith).
- 63. PPC updates for Radeon (Michel Dänzer, Hui Yu@ATI).
- 62. Radeon patch from ATI (Hui Yu@ATI).
- - IGP320/330/340 support (2D only)
- - RV280 (9200/M9+) support
- - Fix for some M9 laptop panels
- - Improved version of monitor detection code previously submitted
- - Fixed bug for two or more radeon cards
- - Man page updates
- - Workaround for double scan modes problem at high resolutions
- - Overlay scaling problem when RMX is used
- 61. Fix xprop to get all windows (not only the first) in a property holding
- a window list printed (#A.1676, Kim Woelders).
- 60. Fix for spontaneous repeated keyboard events during sync grab (#A.1713,
- Michal Maruska).
- 59. Fixed DPMS problem on C&T 69000 due to incorrect LCD flag
- (Bugzilla #101, Egbert Eich).
- 58. Added xkb symbols layout for BTC 5090 internet keyboard
- (Bugzilla #57, Jack Angel).
- 57. Fix the Xinstall.sh script so that it can handle being run from a
- directory with white space in its path name (#A.1690, Eric Branlund).
- 56. Allow AGPGART support to be enabled for OpenBSD (#A.1684, Brian Feldman).
- 55. Make the mouse driver check the SendDragEvents option (based on #A.1682,
- Juuso Ã…berg).
- 54. Fix a double allocation in _XTextPropertyToTextList() (#A.1681,
- Lubos Lunak).
- 53. Fix a typo that causes the 'yu' keymap to emit a lower case 'L' in
- both shift states (#A.1675, Nikola Smolenski).
- 52. Allow the remote shell command for xon to be specified from the
- command line. This allows ssh to be used (for example) (#A.1657,
- Mike Urban).
- 51. Fix segfaults that can happen when using composition of RENDER and
- non-RENDER fonts (#A.1656, Wu Jian Feng).
- 50. Add convenient ways to enter "double quote" and "cedilla" with the
- en_US.UTF-8 compose rules (Alexandre Oliva).
- 49. Improve support for Wacom Cintiq boards (#A.1547, Sebastian Rittau).
- 48. Add support for Kensington's "ValuMouse" to the mouse driver (#A.1494,
- Roy Wood).
- 47. Workaround for a crash that happens if a scalable font has a bitmap
- entry in fonts.dir (#5687, Juliusz Chroboczek).
- 46. Single/dual rasterizer quiescence patch for the glint/gamma DRI driver
- (#5685, Sven Luther).
- 45. Fix a FreeBSD/alpha build problem (#5679, Fred Clift).
- 44. Fix a bug in the GLU/project.3gl man page (#5676, Thomas Klausner).
- 43. Luit fixes:
- - Fix a buffer overflow.
- - Allow for holes in the pty space, and use the union of the pty
- names in 4.4BSD and recent FreeBSD.
- - Allow luit to be set-uid on all BSD releases, and introduce an
- additional security fix on POSIX saved-id systems.
- (#5672, 5674, ITO Tsuyoshi, Juliusz Chroboczek).
- 42. Fix memory leaks in ProcXF86VidModeModModeLine and
- ProcXF86VidModeValidateModeLine, and unintialized fields of the mode
- structure in ProcXF86VidModeAddModeLine, VidModeCreateMode, and
- VidModeAddModeline (#5671, Miguel Freitas).
- 41. Fix SEGV in fbdev's mode validation (Alexandr Andreev).
- 40. Add two more variations of Thai XKB maps (#5658,
- Theppitak Karoonboonyanan, Visanu Euarchukiati,
- Supphachoke Santiwichaya).
- 39. Fix a twm crash when the window menu is used and no windows are open
- (#5667, Matthias Scheler).
- 38. Restore the sign of UNDERLINE_POSITION in the FreeType backend (#5665,
- Roman Kagan).
- 37. Check the return value of fclose() in xauth to prevent losing the
- existing contents of an Xauthority file when there is insufficient
- space to write the new one (#5663, Owen Taylor).
- 36. Fix case in xmag which would cause a BadMatch during a X_GetImage for
- single child of root class InputOnly. Also do some null pointer
- protection (#5657, Kevin Brosius).
- 35. Allow an arbitary message to be sent to the DDX by pressing a key
- which has the appropriate action definition (#5519, Joe Moss).
- 34. Add a new request to the XF86Misc extension that allows a client
- to send an arbitrary message to the DDX, which in turn can send the
- message to the driver. The driver may also send a string back.
- An example of this is implemented for the radeon driver (#5518,
- Joe Moss).
- 33. Remove duplicate XShmGetEventBase() declaration (#5656,
- Branden Robinson).
- 32. Fix drag lock when using a mouse button greater than 4
- (Bugzilla #51, Paul Elliott)
- 31. Fix lockup on server shutdown/restart with the radeon driver
- (Bugzilla #94, Michel Dänzer).
- 30. Add missing symbols to reference list that show up when DRI is not
- loaded in r128 driver (Bugzilla #83, Leif Delgass).
- 29. Add missing symbols to reference list that show up when DRI is not
- loaded in mga driver (Bugzilla #84, Leif Delgass).
- 28. Various build and warning fixes (#A.1703, Peter Breitenlohner).
- 27. Avoid overlapping strcpy() in imake.c (Dan Nelson).
- 26. Updates for building on OS/2 (#5650, Frank Giessler).
-
-XFree86 4.3.99.1 (23 March 2003)
- 25. Xterm patch #176 (Thomas Dickey).
- 24. Another int10 fix. This time for adapters found at PCI:0:0:0. This
- fix is particularly important for ZX1-based systems (Marc La France).
- 23. int10 fix for all ix86 non-Linux systems (Marc La France).
- 22. Add preliminary support for generating HTML and PDF versions of most
- spec documents (David Dawes).
- 21. Use lower-case extensions uniformly for text and PostScript documents
- (based on #4876, Branden Robinson).
- 20. Disable cuase of SEGV's in rendition driver (Marc La France).
- 18. Limit 440EX & 440LX based systems to 32 PCI buses (Marc La France).
- 18. Fix typo that caused incorrect initialization of xkb memory
- (John Heasley).
- 17. Fix bug in trident driver that caused old Cyber 9382/9385 chipsets
- to display half a jittered screen (Alan Hourihane).
- 16. Add shadowfb support to XDarwin IOKit mode (Torrey T. Lyons).
- 15. Change most of os-support/ to respect VIDMEM_READONLY (Marc La France).
- 14. Fix compatibility problem between modules generated without the recent
- setjmp/longjmp work and a server generated using glibc <= 2.2.*
- (Marc La France).
- 13. setjmp/longjmp related fixes for Linux/libc5 systems (Marc La France).
- 12. Fix possible overflow in _XlcLocaleDirName. (Matthieu Herrb).
- 11. Various NetBSD fixes for non-i386 (#5662, #5666 Aymeric Vincent,
- Matthew Green, Chris Gilbert, Thomas Klausner).
- 10. Enable native thread support on NetBSD 1.6M and later (#5597, #5660,
- Matthias Scheler).
- 9. Make setjmp/longjmp emulation save/restore blocked signal masks on all
- libc5 & glibc systems (Marc La France).
- 8. Fix for non-PC keyboard bug introduced by changes to make SysRq
- generate the same keycode as PrtScrn (Ivan Pascal).
- 7. Workaround for problems linking C programs against libGLU on FreeBSD 3.x
- (David Dawes).
- 6. Make setjmp/longjmp emulation save/restore blocked signal masks on all
- 5. Fix setjmp/longjmp emulation for glibc 2.2.[01] systems and remove
- HasGlibc21Sigsetjmp override (Marc La France).
- 4. setjmp/longjmp-related compilation fixes for libc5 systems
- (Marc La France).
- 3. Fix minor glitch in the generation of Makefiles for libraries that don't
- need threads support (Marc La France).
- 2. Fix XDarwin build broken by #960 (Shantonu Sen).
- 1. Fix StaticColor colormap on Darwin/x86 6.x (Rob Braun).
-
-XFree86 4.3.0 (27 February 2003)
- 964. Add an imake option to allow the glibc21-style setjmp() behaviour
- to be forced when auto-detecting it fails (this is needed for RH 7.0).
- 963. Add missing raise/lower volume key descriptions for the "hpxe3gc"
- XKB map (#A.1651, Paul Pacheco).
- 962. Fix some typos in the Syriac XKB map (#5654, Emil Soleyman-Zomalan).
- 961. Add documentation about using XKB for the XFree86 server's special
- key sequences and the HandleSpecialKeys config option (#5653, Joe Moss).
- 960. Move the XF86_DATE definition to a separate file so that bumping it
- doesn't trigger almost everything to be rebuilt (David Dawes).
- 959. Xterm patch #174 (Thomas Dickey).
- 958. Fix a bug that was preventing DGA2 acceleration from being advertised
- by the i810 driver (David Dawes).
- 957. Fix an "xtt" font backend module crash that shows up on Linux/PPC,
- related to an invalid code converter module being loaded because of
- a broken string comparison in xttconv.c (#A.1647, Chisato Yamauchi,
- Daisuke MASATSUNA).
- 956. Fix a NULL dereference that can happen in lcGenConv.c (#A.1646,
- Anthony Fok Tung-Ling).
- 955. Bump the libXft minor revision for the UTF-16 APIs that were added
- after rev 2.0 (#A.1643, A.1644, Keith Packard, 5652, Mike Harris).
- 954. Fix a typo in the "freetype" font backend that prevents "ttc" fonts
- from working (#5651, Mike Fabian).
- 953. Fix atimisc bug in restoring colourmaps after a VT switch
- (Marc La France).
- 952. A more complete set of dead accent/space compose sequences, add
- <Multi_key> <slash> for letters with a "stroke", and add some
- combos for exponent characters, katakana voiced sounds, etc to
- the en_US.UTF-8 compose file (#5646, David Monniaux).
- 951. Reinstate the VBEInit() call in the savage driver's PreInit(). This
- appears to fix a problem on some Savage MX platforms (#5649,
- Mike Harris).
- 950. Restore the radeon driver's unconditional RADEONPreInt10Save() call
- on Alpha platforms because this is needed for Radeon cards where the
- BIOS ROM can't be read after it's been run once (by the firmware)
- without this (#5648, Jeff Wiedemeier).
- 949. Update Newport driver doc (#5647, Guido Guenther).
- 948. Fix reversed logic for VGA locking/unlocking (Nat Ersoz).
- 947. Luit fixes:
- - Fix a bug with --encoding being too strict with the syntax.
- - Add a -x flag that causes luit to exit as soon as the child does.
- - Update the man page to synchronise with Tomohiro's work on XTerm.
- (#5643, Juliusz Chroboczek).
- 946. Fix some endianness bugs in the r200 DRI driver, and guard a debugging
- print message (Michel Dänzer).
- 945. Fix radeon HW cursor artifacts when switching between 2-color and
- ARGB cursors by always using the ARGB mode (#A.1639, Michel Dänzer and
- Fredrik Höglund).
- 944. Fix rootless XDarwin crash when trying to GetImage with a rectangle
- bigger then the associated top level window (John Harper).
- 943. Add support for multi-head on ZX1-based Itanium2 systems (Marc La France
- with documentation and assistance from Hewlett-Packard).
- 942. Correctly initialize the RE_LINE_PATTERN register in the radeon
- and r200 DRI drivers (Keith Whitwell).
- 941. Fix a problem where a malformed Ximage can cause Xcursor to step
- outside the image data (#A.1636, Keith Packard, reported by
- Michel Dänzer).
- 940. Allow xf86setjmp/xf86setlongjmp to work with platforms where
- setjmp() isn't directly available as a function, specifically Linux
- platforms that use glibc 2.0 and 2.1. (David Dawes, Keith Packard).
- 939. Check pScrn->vtSema before calling xf86SetCursor() from
- xf86CursorCloseScreen(). This avoids a segfault at exit with some
- drivers (Alan Hourihane).
- 938. Fix adding FP native mode for Radeon (Hui Yu@ATI, Kevin Martin).
- 937. Initialize I2C when primary head has an invalid DDC type for the
- Radeon driver (Hui Yu@ATI).
- 936. Video fixes for TV and TVOverscan for the nsc driver (Sarma Kolluru).
- 935. Fix to prevent ShadowComposite() to try to update the framebuffer
- when server is switched away (Egbert Eich).
- 934. Fix problems where the ThirdLevel key and Alt modifiers don't work
- when a map that uses the ThirdLevel virtual modifier is not the first
- layout in a multi-layout configuration (#5642, Ivan Pascal).
- 933. Use safe values in the Thai XIM which should work regardless of
- the signedness of XIMStringConversionPosition (#A.1628,
- Theppitak Karoonboonyanan).
- 932. Replace xf86setjmp/xf86setlongjmp with symbol aliases that resolve
- directly to the native libc versions so that they can operate in
- modules, and make xf86jmp_buf much larger so that should be big enough
- for any reasonable CPU/OS combination. This should fix problems
- with the Freetype2-based freetype font module (#A.1625, Keith Packard).
- 931. Change the default base symbols map from pc104 to pc105, which should
- fix most cases where the <LSGT> key isn't defined. Also change the
- default XkbModel from pc101 to pc105 (Ivan Pascal).
- 930. Fix run-time enabling/disabling of VT switching via xf86EnableVTSwitch()
- (David Dawes).
- 929. Add a "DontVTSwitch" option to allow VT switching to be disabled
- (on platforms where the X server initiates VT switches) (#5640,
- Branden Robinson).
- 928. Fix a memory leak in _XimExtension() (#5638, MINAMI Hirokazu).
- 927. Fix hard-coded ProjectRoot paths in the proxymngr man page (#5634,
- Branden Robinson).
- 926. Fix a NULL pointer dereference in the fontenc library (#5633, Debian).
- 925. Update the neomagic man page to document the OverlayMem option (#5632,
- Diego Santa Cruz and Branden Robinson).
- 924. Fix a memory leak in XCloseDisplay, and a potential race condition
- when multiple threads attempt to initialize the Xcursor library
- simultaneously (#A.1623, Keith Packard).
- 923. Fix xvidtune to pop up a info window if mode on chipset is
- not tuneable (Egbert Eich).
- 922. Fix a NULL pointer in a var_arg list in xfd which causes problems
- on 64 bit systems (Egbert Eich).
- 921. Fix a typo in the nsc Imakefile when installing the linkkit
- (#A.1624, Stanislav Brabec).
- 920. Remove a dependency on how Xlib buffers requests internally for
- xtest's test 2 of XSync (Keith Packard).
- 919. Fix a bug in the way the bitmap font code calculates mix/max bounds
- (it was ignoring empty characters), which fixes some xtest fonts
- bounds check failures (Keith Packard).
- 918. Check that the HW cursor has been setup before calling
- xf86ForceHWCursor() in the radeon (and r128) driver. This fixes
- crashes when using only the SW cursor (#5628, Michel Dänzer).
- 917. Fix duplicate arguments for xf86MatchPciInstances() in the DESIGN doc
- (#5627, Guido Guenther).
- 916. Miscellaneous 64-bit and warning fixes to mfb, xf1bpp and xf4bpp
- (Marc La France).
- 915. Fix a bug in beforelight that was preventing it from being restarted
- and could cause random X clients to be killed. (Matthieu Herrb)
- 914. Add a means by which a motherboard chipset driver can prevent the common
- layer's check for mis-configured PCI-to-PCI bridges (Marc La France).
- 913. Fix bug that would sometimes cause an extra hardware cursor to re-appear
- on a secondary head after a server reset (Marc La France).
- 912. Protect "cvl" references in recent changes to _XEventsQueued() with
- '#ifdef XTHREADS' (reported by Dan Holm).
-
-XFree86 4.2.99.902 (17 February 2003)
- 911. Change the newport driver to use ShadowFBInit2 to fix the broken
- "switching back from the console" issue, and update the driver's man
- page (#5625, Guido Guenther).
- 910. SCO doc update (#5624, J. Kean Johnston).
- 909. Fix X11.tmpl so that Fontconfig works correctly if an OS.cf file
- sets HasFontconfig, and do this in sco5.cf (#5624, J. Kean Johnston).
- 908. Move the vbe module from xfree86/os-support/ to xfree86/ (David Dawes).
- 907. Some changes to the os-support kbd driver layer's calling conventions
- to provide more flexibility (#A.1615, Zephaniah E. Hull).
- 906. Fix a crash in the "xtt" font module caused by a NULL dereference
- when the font cache becomes full (#A.1611, Chisato Yamauchi and
- tokeijikakenoringo).
- 905. Update the list of DRI-supported Radeon hardware (#A.1610,
- Knut J Bjuland).
- 904. Fix a problem in _XEventsQueued() that causes an event reader lock
- of another thread to be released. This can cause a hang and keyboard
- lockup in KDE (#5619, Ewald Snel).
- 903. Fix some bugs with Xft drawing to non-Render enabled servers:
- - Drawing monochrome glyphs had an infinite loop.
- - XftGlyphSpecCore failed to render some glyphs, leading to application
- crashes from uninitialized values.
- (#A.1608, Keith Packard, reported by Nalin Dahyabhai).
- 902. Fix the <BKSL> key in the "winkeys" variants of the Russian and
- Ukrainian XKB maps (#5624, Leon Kanter).
- 901. Install the XKB README files (#5623, Ivan Pascal).
- 900. Add the numeric keys row to the pc/us symbols map (#5622, Ivan Pascal).
- 899. Resync with DRI mesa-4-0-4 branch:
- - Fix DOT3 texture combine env in the r200 driver (Ian Romanick).
- - Fix SW TCL path in the radeon driver (Felix Kühling).
- - Don't assert for FLUSH_STORED_VERTICES if a glBegin hasn't been
- emitted (Alan Hourihane).
- 898. Another update to the fix for the client-side DRI cleanup code that
- should fix references to freed data, an fix a potential memory leak
- (Leif Delgass).
- 897. Fix the behaviour of XLookupString() when XKB is enabled in Xlib
- but not the server. This fixes an xtest XRebindKeysym() failure
- (David Dawes).
- 896. Added radeon driver options documentation to the Options file
- (#5621, Michel Dänzer).
- 895. Fix the return value of SetFontPath() when a font path element is bad
- (David Dawes).
- 894. Add some more HP keyboard layouts (Peter Soos).
- 893. Remove XFree86-specific keysyms that already have generic equivalents
- (Menu, Redo, Print, Undo).
- 892. Add keyboard layout information for the HP 5181 Internet/Multimedia
- keyboard (#A.1603, John Mitchell).
- 891. Fix a problem where two-color render cursors have extra pixels set
- (#A.1607, Keith Packard).
- 890. Fix for corruption when using video modes requiring more than 2MB on
- S3 968 cards (#A.1602, Justin T. Gibbs).
- 889. Fix TVoverscan problems on the NSC SC1200 chip (Sarma Kolluru).
- 888. Cure cursor artifacts by setting HARDWARE_CURSOR_SHOW_TRANSPARENT and
- HARDWARE_CURSOR_UPDATE_UNHIDDEN in the r128 and radeon drivers. The
- wait-for-VSync nonsense the Radeon's currently do can, and should, be
- ripped out later. (Marc La France).
- 887. Extend HARDWARE_CURSOR_SHOW_TRANSPARENT to make hardware cursors
- transparent, rather than disabling them, when a switch to a software
- cursor is needed. This removes recently introduced cursor artifacts
- in the atimisc driver. (Marc La France).
- 886. Cancel repeat for switch screen XKB actions, which fixes a VT
- switching problem that has just become visible (Ivan Pascal).
- 885. Added reinitialization of screen layout after RandR size change
- on a multihead setup. This keeps cursor movement beween screens
- working (Egbert Eich).
- 884. Remove Xcms.txt entries that have server-side equivalents. It looks
- like the slightly different resulting colour definitions from the
- Xcms.txt entries were responsible for an xtest failure.
- 883. Fix some problems with using pre-existing version of fontconfig,
- freetype2 and expat (#A.1600, Keith Packard).
- 882. Add missing zero-sized check to one of Xft's core rendering routines
- (#A.1599, Keith Packard).
- 881. Add a missing symbol reference to the radeon driver (#5618, Mike Harris).
- 880. Fix the Xcursor include path in the man page (#5617, Kevin Brosius).
- 879. Update ViRGE documentation (#5617, Kevin Brosius).
- 878. Fix mkfontscale so that it doesn't include characters forbidden in XLFD
- in the names it generates (#5616, Mike Fabian and Juliusz Chroboczek).
- 877. Fix a rounding problem in the "freetype" module, which fixes the problem
- worked around in entry 864 below (#5615, Juliusz Chroboczek).
- 876. Fix incorrect alias for lv_LV.iso885913, and add some missing lv_LV
- aliases (#5614, Aivils Stoss).
- 875. Fix a bug where xauth may write an incomplete authority file and delete
- the old one if there is insufficient disk space (#5612, Harald Hoyer).
- 874. DPMSClose() wasn't correctly setting its devPrivate to NULL (based
- on #A.1594, Denis Zaitsev).
- 873. Fix scanpci's printing of routing information for PCI-to-PCI bridges
- (Marc La France).
- 872. Bring Cygwin/XFree86 up-to-date (#5613)
- - Multiwindow Window Manager (Kensuke Matsuzaki).
- - Clipboard integration (Harold Hunt).
- - Remove unnecessary redefines of fchown/fchmod (Takashi Sawanaka)
- - Fix some NULL pointer problems on screen changes (Alexander Gottwald).
- 871. Fix some problems when noaccel is used in the nsc driver (Sarma Kolluru).
- 870. Fix acceleration bugs in the nsc driver (Sarma Kolluru).
- 869. Change initMouseHW() to always return TRUE, which restores the older
- more graceful behaviour (Egbert Eich).
- 868. Revert the DestroyContext, GarbageCollectDrawables reording in
- dri_util.c, and instead check if the drawable is known to the DRI
- client code before calling XF86DRIGetDrawableInfo (Egbert Eich).
- 867. Fix some scaling problems with the updated whiteglass cursor icons,
- fixing some incorrect hotspots (Kevin Puetz).
- 866. The sunffb driver was treating a function with a void return value
- as if it had a Bool return value. This causes the driver to fail
- in some cases (#A.1588, Ferris McCormick).
- 865. Add private keysyms for the new XKB actions (XFree86 special keys),
- and move those actions to an XKB compatibility map. This fixes
- side-effects (loss of auto-repeat and mousekeys functionality) of
- the way this was implemented previously (#5610, Ivan Pascal).
- 864. Fix an X server crash with the "freetype" module when displaying
- kochi-mincho.ttf at a size of 18 pixels or higher (Chisato Yamauchi).
- 863. Fix segfault in XkbInitKeyboardDeviceStruct() (David Dawes).
- 862. Add a ServerFlags/ServerLayout option for disabling the RandR extension
- (David Dawes).
- 861. Resync with DRI mesa-4-0-4 branch:
- - Correct RADEON_MAX_TCL_VERTSIZE and set MaxArrayLockSize
- (Keith Whitwell).
- - Fix EAGAIN handling in radeon_cp_dispatch_texture(), which fixes
- corruption of large textures (Michel Dänzer).
- - Fix bufferSize and alphaMask for DRI in several drivers (Brian Paul,
- Leif Delgass).
- - Avoid a loop on validating destroyed drawable (Keith Whitwell).
- - Reorder DestroyContext, GarbageCollectDrawables to avoid error
- (Egbert Eich).
- - Remove untested BSD DRM vlank signal code (Eric Anholt).
- - Update Radeon PCI IDs for BSD drm driver (Eric Anholt).
- - Uninitialize mutexes on cleanup in the BSD drm driver, which
- fixes panics with FreeBSD-5.0 with WITNESS (Eric Anholt).
- - Remove the untested/unused gamma DRM driver for BSD (Eric Anholt).
- 860. Fix byte swapping of the refresh rate argument to RandR's
- SetScreenConfig request, and fix a 1.0 client compatibility problem
- with SetScreenConfig (#A.1574, Keith Packard).
- 859. The i810 driver wasn't releasing control of the agpgart when VT switching
- away for the 830M and later (David Dawes).
- 858. Update Rage 128 and Radeon PCI IDs (Mike Harris).
- 857. Fix vertical retrace to not interfere with interrupt handling
- (#5608, Michel Dänzer).
- 856. Add M9 DRI support (Hui Yu@ATI).
- 855. Update Radeon man page (Michel Dänzer).
- 854. Add Radeon man page (Hui Yu@ATI).
- 853. Use strtol instead of atoi in xf86cfg 'expert' mode. Make pauses
- when printing keyboard models in xf86config (#5609, Chisato Yamauchi).
- 852. Xterm patch #173 (Thomas Dickey).
- 851. Don't use XkbGetKeyboard() in xset, just use XkbAllocKeyboard()
- (Ivan Pascal).
- 850. Fixes for the nsc driver for HW cursor hotspots and GX2 video
- clipping issues (Sarma Kolluru, NSC).
- 849. Fix HW cursor on CRTC2 for SiS650+301B (Thomas Winischhofer).
- 848. Update the i810/i830 driver to recognise the 865G integrated graphics
- chipset (David Dawes).
- 847. Updates for the nsc driver (Sarma Kolluru, NSC).
- 846. Fixed dual head for 1400x1050 displays (Thomas Winischhofer).
- 845. Initializing clock ranges in several drivers to get rid of the
- annoying 'scaled from 0.0 MHz' message in xf86PrintModes()
- (Egbert Eich).
-
-XFree86 4.2.99.901 (4 February 2003)
- 844. Fixing a double free in libXRandr (Egbert Eich).
- 843. The microsoft-win3.1 encoding file wasn't being installed (#A.1569,
- Mike Harris).
- 842. Sync the FIFO in the vmware driver after defining an ARGB cursor
- (#5607, Nolan Leake).
- 841. Add missing Num_Lock and Scroll_Lock modifiers to the jp XKB map
- (Chisato Yamauchi).
- 840. Change the default cursor theme to "core".
- 839. Fix some keys in the Slovenian (si) XKB map (David Balazic,
- Henrik Nordström).
- 838. Add a check to xset for a NULL return from XkbGetKeyboard()
- (Tapani Utriainen).
- 837. Resync with DRI mesa-4-0-4 branch:
- - radeon DRM: only acknowledge interrupts we handle -- others could
- be used outside the DRM (Michel Dänzer).
- - Fix PCI and AGP posting problems (based on testing by Chris Ison
- and suggestions by Benjamin Herrenschmidt and Arjan van de Ven).
- - Remove radeon_flush_write_combine() which has been unused for a while
- (Michel Dänzer).
- - Disable strict aliasing when building the DRM (Michel Dänzer).
- 836. Fix xfs crash on Darwin by making libXfont a flat namespace image
- (Torrey T. Lyons).
- 835. Avoid endless loop when initializing an PS/2 mouse behind a
- repeater (Egbert Eich).
- 834. Radeon driver: make sure RADEONCPStop() is only called when
- RADEONCPStart() has been called before. Failing to do so may
- make the kernel driver oops (Egbert Eich).
- 833. Disabling MMX, 3DNow and SSE support for x86-64 as the function
- call sequence is hardcoded to ia32 (Egbert Eich).
- 832. Fix a hang in multi-thread mode caused by a missing UnlockDisplay() in
- XkbGetMapChanges() (Jose Luu).
- 831. Resync with DRI mesa-4-0-4 branch:
- - Don't inflate relative vblank sequence numbers on repeated calls
- (e.g., when interrupted by a signal) (Michel Dänzer).
- - Fix size of VERTEX2 ioctl struct (Egbert Eich).
- 830. SiS driver fixes:
- - Mode restoration fix.
- - Xv Hue and Saturation property fixes (310/325 series).
- - Built-in mode fixes.
- - Revert wrong bus width assumptions from previous patch.
- (Thomas Winischhofer).
- 829. R128 build fix on big endian platforms (#A.1565, George Staikos).
- 828. Updated whiteglass cursor icons that fix the resizing glitches in the
- existing ones (#A.1563, Kevin Puetz).
- 827. Include server control definitions in some XKB maps that were missing
- them (based on #A.1562, Jens Petersen).
- 826. Define Alt/Meta modifiers for the jp106 XKB layout, and include
- server control definitions (#A.1562, Jens Petersen).
- 825. Add some locales required for the OpenI18N compliance test (#A.1550,
- Leon Ho).
- 824. s3virge driver updates:
- - 320x240 doublescan support with mouse adjust.
- - Power management printouts, DAC error printout fix.
- - Log XVideo status based on chipset, and preliminary support for
- disabling XV when a mode doesn't support it.
- (#A.1550, Kevin Brosius).
- 823. Add an Ethiopic TTF and OTF font (#A.1549, Daniel Yacob).
- 822. Add a phonetic layout to the Bengali XKB map (#5606, Taneem Ahmed).
- 821. Work around an AGP bug in the AlphaServer ES45 by padding each ring
- buffer packet in the radeon drm with NOPs to cache line boundaries.
- This is only done for Alpha platforms (#5605, Jeff Wiedemeier).
- 820. Add missing domain decoding to DRM(irq_busid) for Alpha (#5604,
- Jeff Wiedemeier).
- 819. Build fix for the DRM on FreeBSD 5.0-current (#5603, Eric Anholt).
- 818. xaaStateChange.c was not calling RestoreAccelState before doing
- CPUToScreenTexture and CPUToScreenAlphaTexture, which seems to be the
- reason why RENDER acceleration was broken on some dual-monitor MGA cards
- (#5602, Nolan Leake).
- 817. Make the vmware driver a little more conservative about supporting
- HW RGBA cursors in 8-bit modes (#5606, Nolan Leake).
- 816. Work around a problem with the vmware driver's interaction with the
- offscreen memory manager (#5606, Nolan Leake).
- 815. Fix fb's rotation of tiles and stipples when using non-zero PixOrigin
- macros (Torrey T. Lyons).
- 814. Fix Radeon native FP mode initializion (Hui Yu@ATI).
- 813. Resync with DRI mesa-4-0-4 branch:
- - Fix Q3A mode change prolbem in thr r200 driver (Keith Whitwell).
- - Add a missing break to prevent spurious GL_INVALID_ENUM
- (Leif Delgass).
- - Fix __FUNCTION__ usage in the ffb 3D driver (Leif Delgass).
- - Limit the number of pending vblank signals to 100 to prevent
- a DoS (Michel Dänzer).
- - Fix a void * arithmetic warning in the radeon DRM driver
- (Leif Delgass).
- 812. Fix a typo in the "pl2" XKB map (#A.1553, Piotr Xurek).
- 811. Fix a null dereference in Mesa that can cause an X server crash at
- client exit (#A.1548, Ezra Peisach).
- 810. Improve the XTT code that prevents unexpected data to be passed to
- XAA (#5600, Chisato Yamauchi).
- 809. xkbcomp/rules/xfree86.xml wasn't being installed (#5599, Ivan Pascal).
- 808. Add knowledge about two Korean foundries to mkfontscale (#5598,
- Jungshik Shin).
- 807. Disable the INREG fallbackup in the radeon 3D driver on Alpha because
- it references a function that's not availalbe (#5596, Jeff Wiedemeier).
- 806. Fixed patch 760: VBEInit takes entity index, not screen index
- (Egbert Eich).
- 805. Card name changes/fixes (Hui Yu@ATI).
- 804. Panel color channel depth fix for Radeons (Hui Yu@ATI).
- 803. Include list_for_each_safe define for kernels that do not have it
- (Kevin Martin).
- 802. Fix 2D corruption around 3D window, when 3D window is moving and using
- Radeon page flipping code (Michel Dänzer).
- 801. Big endian fixes for Rage 128 and Radeon video and Radeon cursor code
- (Michel Dänzer).
- 800. Enable PCI GART for all architectures (still gated by ForcePCIMode, if
- on an AGP card) (Michel Dänzer).
- 799. Fix for Radeon's CP accelerated 2D sync routine (Michel Dänzer).
- 798. SiS driver fixes:
- - Fix for SiS730+LVDS machines (display modes restricted due to
- hardware limits; LCD text mode restoration fixed)
- - Fix for SiS300 bus width detection
- - Fix for Fn+Fx output device switching on some machines (still
- does not work on all)
- - Numerous Dual Head fixes
- - Added color hardware cursor support on 300/310/325/330 series
- - Added PAL-M and PAL-N support for Chrontel 701x
- - Added ModeLine handling for 300/310/325/330 series (CRT1 only)
- (Thomas Winischhofer).
- 797. Fix for memory fences on PowerPC (Marc La France).
- 796. Work-around for Radeon int10 problems (Marc La France).
- 795. Fix XDarwin crash in rootless mode with 16-bit color by ensuring that
- window pixmap pointers are 32-bit aligned (John Harper, Torrey T. Lyons).
- 794. Update the i810 2D driver and i830 3D drivers to recognise and handle
- the Intel 852GM/855GM integrated graphics chipsets (David Dawes,
- Keith Whitwell).
- 793. Force extension-generated mode switches always occur (Marc La France).
- 792. Fix OS/2 library build problem (Frank Giessler).
- 791. Fix bug that at times prevented recognition of resources decoded on PCI
- root buses (Marc La France).
- 790. Fix XDarwin's spurious transparent regions in rootless windows
- (Torrey T. Lyons).
- 789. Fix bug in recognition of certain ix86 Host-to-PCI bridges
- (Marc La France).
- 788. Fix for breakage in reading the serial PnP mouse ID string (David Dawes).
- 787. Add "core" theme to Xcursor to force old behaviour (Keith Packard).
- 786. Increase the default font cache size so that it works better for
- iso10646 (#A.1541, Hidetoshi Yamanouchi, Chisato Yamauchi).
- 785. Fix an XTT problem where garbage is displayed when there are undefined
- glyphs for fixed width fonts, and fix some other potential problems
- (#A.1541, Hidetoshi Yamanouchi, Chisato Yamauchi).
- 784. Resync symbols/fi with symbols/pc/fi (#A.1532, Marko Myllynen,
- #5589, Linus Torvalds).
- 783. Resync xkb/rules/xfree86.xml with xfree86.lst (#5595, Ivan Pascal).
- 782. ISO_Level3_Shift was breaking compose sequences because Xlib wasn't
- recognising it as a modifier key (#5594, Ivan Pascal).
- 781. Add a Lao (lo) XKB map (#5592, Anousak Souphavanh).
- 780. Add a multi-layout version of the Malayalam keymap (#5593, Ivan Pascal).
- 779. Add some missing entries to the xkb rules $oldlayouts and $nonlatin
- sets (#5593, Ivan Pascal).
- 778. Prevent mkfontscale from looking at bitmap fonts, and ensure that it
- doesn't crash if a font happens to have no head (#5591,
- Juliusz Chroboczek).
- 777. Document that DVI the mga_hal module may be necessary to use the DVI
- output with the G550 and other cards (#5590, Andrew Aitchison).
- 776. Fixes for a few "nodeadkeys" XKB maps (David Dawes).
- 775. Protect magic cookie from short-lived exposure on command line in
- startx (Christian Biere).
- 774. Fix ELF loader to ignore -g debugging information
- (#A.1539, Juergen Keil).
- 773. Fix artifacts left by XDarwin when reshaping a shaped window (reported
- by Adrian Umpleby).
- 772. Fix XDarwin rootless crash when resizing a window (John Harper).
- 771. Fix vbe module to not assume BIOS call results are zero-extended
- (Paulo Cesar Pereira de Andrade).
- 770. Fix improper initialisation of pciConfigRec's. Reported by Marcel
- Moolenaar (Marc La France).
- 769. Fix intermittent XDarwin crash on Mac OS X 10.1.x when changing cursors
- on dual processor machines (Torrey T. Lyons).
- 768. Correction to 'is' keymap (reported by Richard Allen).
- 767. Fix GLX library mis-use of LockDisplay()/UnlockDisplay() sequences
- (reported by Alexis Vartanian).
-
-XFree86 4.2.99.4 (20 January 2003)
- 766. Fix XDarwin's rootless mode with 16-bit color (John Harper).
- 765. Allow UTF8 conversion to work for Japanese locales (#A.1527,
- Etsushi Kato).
- 764. Add a method for working around a problem that can show up when
- running setxkbmap from a machine with a different version of XKB
- than the X server. The workaround method is documented in
- the setxkbmap(1) man page (#5588, Ivan Pascal).
- 763. Add some new keys and key combinations that can be used for switching
- between XKB groups (#5587, Ivan Pascal).
- 762. Fix typos in the README.fonts document (#5585, John Himpel,
- Juliusz Chroboczek).
- 761. Fix the pc/fi and pc/il XKB maps after recent changes made them
- non-compliant with the multi-layout scheme (#5581, Ivan Pascal).
- 760. Allow the mga driver to fallback to using VBE for DDC when using
- the native method fails. This allows DDC to work for DVI output
- on Matrox cards (#5580, Andrew Aitchison).
- 759. Add block handler for XDarwin's quartz modes to clean up any
- autoreleased objects in the server thread (Torrey T. Lyons).
- 758. Fix use of uninitliazed variable in xmag/xmag.c (A.1525, Keith Packard).
- 757. Fix typo in Radeon Mono8x8 code (#A.1526, Juergen Keil).
- 756. PS/2 mice initialization sequence changed: rerun entire sequence
- when something goes wrong - this needs to be rewritten completely
- after 4.3 is out (Egbert Eich).
- 755. Savage driver: disable HW cursor on stretched LCD displays,
- let SaveScreen and DGA test if HW cursor is on before
- disabling/reenabling it (Egbert Eich).
- 754. Fixed VBE EDID read: due to a missing register setting read
- ended in endless loop on certain systems (Egbert Eich).
- 753. Changed the default mouse device for FreeBSD to sysmouse and the
- protocol to auto when running X -configure (#5584, Eric Anholt).
- 752. Changed the default mouse device for xf86cfg and xf86config to
- /dev/sysmouse for FreeBSD (#5582, #5583, Eric Anholt).
- 751. Fix for Mono8x8 patterns on Radeon (#A.1520, Juergen Keil, Kevin Martin).
- 750. Fix for Radeon mode validation (#A.1330, #A.1380, #A.1393, #A.1522,
- #A.1523, Wayne Whitney, Hui Yu@ATI, Juergen Keil).
- 749. Workaround for flickering problem with switching between ARGB and mono
- cursors on Radeons (#A.1380, Hui Yu@ATI).
- 748. DDCMode fix for VidMode extension (#A.1380, Kevin Martin, Hui Yu@ATI).
- 747. Panel detection bug fix for Radeon (#A.1380, Hui Yu@ATI).
- 746. Add Xv overlay support for dual headed Radeons (#A.1380, Hui Yu@ATI).
- 745. Fix Radeon driver's 24-bit support for flat panels (#A.1380, Hui Yu@ATI).
- 744. Add Radeon 9500/Pro support (#A.1380, Hui Yu@ATI).
- 743. Disable CGWorkaround for non-A11 rev R300s (Kevin Martin, Hui Yu@ATI).
- 742. Radeon solid/dashed line fix for RV200 and newer card (Kevin Martin).
- 741. Radeon overlay gamma fix (Hui Yu@ATI).
- 740. Radeon LG panel fix (Hui Yu@ATI).
- 739. Change makedepend to warn about any whitespace it finds in front of
- pre-processor directives (Marc La France).
- 738. Missing deadkeys in UTF-8 compose table (Mike Fabian).
- 737. Build fix for SPARC (Thorsten Kukuk).
- 736. Fixed integer address value in vesa driver to be large enough
- to hold a 64 bit memory address (Andreas Schwab).
- 735. Disabled RENDER accel on Matrox when used in multihead mode
- (Stefan Dirsch).
- 734. Added FireGL 8700/8800 to the list of supported cards or RADEON
- driver (Stefan Dirsch).
- 733. Added -mcmodel=kernel to DRM Makefile for x86_64 (Stefan Dirsch).
- 732. Added vesa and fbdev driver to x86_64, removed nsc driver for ia64 build
- (Stefan Dirsch).
- 731. Fixing comments in th_TH.UTF-8 (Stefan Dirsch).
- 730. Fixes from the DRI CVS:
- - Don't segfault when spec or fog stride is 0.
- - Don't set RADEON_SURF_TRANSLATION_DIS for framebuffer aperture
- byte swapping on big endian machines; doesn't work with R200 and
- later chips.
- - Improve AGP workaround for pre-R200 chips.
- (Michel Dänzer).
- 729. Remove inappropriate __linux__ ifdef in the tdfx client-side DRI driver
- (#5579, Eric Anholt).
- 728. Allow makedepend handle whitespace in front of the '#' in preprocessor
- directives (ISO C permits this) (#A.1516, Alexander Stohr).
- 727. Add zh_TW.UTF-8 locale support (#A.1514, Leon Ho).
- 726. Add recognition of wacom "XD-xxxx" models to the wacom input driver,
- and treat them the same as "GD-xxxx" models (#A.1505, Rene Rask).
- 725. Fix some missing render extension big-req compatibility (#A.1493,
- Keith Packard).
- 724. Fix a missing initialisation in the calcomp input driver that makes
- the driver unusable and crashes the X server at startup (#A.1492,
- Martin Kroeker).
- 723. Work around for a bug in the i740 driver's XVideo support where the
- video output would sometimes stop updating (#5578, Stephen Blackheath).
- 722. Make DRM signal-on-vblank request return EINVAL on BSD since it's
- not been ported yet (#5576, Eric Anholt).
- 721. Remove the no longer used bsd/drm/kernel/r128/*.[ch] files (#5576,
- Eric Anholt).
- 720. drmFreeBufs was missing from the r128 driver's referenced symbols list
- (#5574, Eric Anholt).
- 719. Allow all of the extended mouse button bits for the "sysmouse" protocol
- to be passed through (#5573, Eric Anholt).
- 718. Update the XFree86 server special key handling so that by default
- there is a fallback to the the hard-coded keys when there is no
- Terminate action binding in the XKB map. A new global option is
- added to allow the fallback mechanism to be used never, when needed,
- or always, with "when needed" the default (#5572, Joe Moss).
- 717. Update the README.fonts document (#5570, Juliusz Chroboczek).
- 716. Build the loader's libc wrapper with -DHAVE_SYSV_IPC on FreeBSD
- since NVIDIA's binary driver uses it (#5569, Eric Anholt).
- 715. Reduce the stack usage from 64k to 8k in imLcPrs.c, which fixes
- a problem with Java for FreeBSD (#5568, Eric Anholt).
- 714. Gcc 3 deprecated the #pragma weak method for weak links (#5567,
- Motoyuki Konno).
- 713. FreeBSD.cf updates:
- - Sparc64 support
- - Recent 5.0-current doesn't need libXThrStub
- - Disable SharedLibXdmGreet, fixing xdm on alpha
- (#5566, Eric Anholt).
- 712. XDarwin now loads GLX support dynamically. Current options are Apple's
- OpenGL framework or Mesa (Torrey T. Lyons).
- 711. GeForceFX support in the nv driver (Mark Vojkovich).
- 710. DPMS support in the nv driver. CRTs only at this time (Mark Vojkovich).
- 709. Fix for recognition of non-existent PCI devices (Marc La France).
- 708. Fix for when firmware/BIOS initialisation does not enable the extra
- command FIFO entries available on second-generation integrated Mach64
- variants (Marc La France).
- 707. Copying Syriac OTF fonts to directory OTF instead of TTF.
- The xtt font renderer cannot handle OTF fonts causing the
- entire directory to be ignored (Egbert Eich).
- 706. Disabling MIT-SHM extensions for Xnest, fixing pixmap private
- code in Xnest, thus cleaning out bogus patch 137.
- NOTE: The MIT-SHM presently *does* *not* work with Xnest.
- I have code to make it work but it is not well tested therefore
- MIT-SHM is disabled for now! (Egbert Eich).
- 705. Fix the misnaming of three of the redglass cursors (#A.1491,
- Keith Packard).
- 704. Fix for two problems where the combination of xtt and XAA could result
- in a crash. The first problem was xtt returning a NULL pointer for
- the bitmap even though the height was non-zero. The second problem
- was glyph ascent/descent exceeding the range of maxbounds.ascent/
- maxbounds.descent (A.1484, Chisato Yamauchi, Masanori Shimada).
- 703. Eliminate locale-dependent behaviour in fontconfig's setfontdirs
- script (#A.1483, Markus Kuhn).
- 702. Fix a bug in previous Thai XIM changes (#5563,
- Theppitak Karoonboonyanan).
- 701. Updates for the Israeli XKB map, including:
- - Implement parens mirroring.
- - Add two additional variants: "lyx", replacing shifted Hebrew
- letters with Hebrew point marks, and "si1452", implementing the
- Standard of Israel no. 1452 mapping.
- (#5562, Tzafrir Cohen).
- 700. BuildServersOnly fix when building on a system with no installed
- X headers or libraries (#5559, ISHIKAWA Mutsumi).
- 699. Add extended symbols for the "Logitech Cordless Desktop Navigator"
- keyboard (#A.1480, Gilbert Fridgen).
- 698. Fix xdm resource's font references to match actual bitmap fonts (#A.1477,
- Göran Uddeborg).
- 697. Update the xcursorgen man page (#A.1475, Keith Packard).
- 696. Add a Mongolian XKB map (#5557, Sanlig Badral).
- 695. Fixes for the Turkish XKB map (#5556, Nilgün Belma Bugüner).
- 694. Thai XIM fixes:
- - Fix the arguments in calling to StringConversionCallback in Thai XIM
- filter, according to Hideki Hiura's explanation on the protocol.
- - Add input sequence correction capability to the Thai XIM by
- exploiting the XIMStringConversionSubstitution operation.
- (#5553, Theppitak Karoonboonyanan).
- 693. Resync the pc/fi XKB map with the previous map (#5552, Marko Myllynen).
- 692. Workaround for parsing of Layout sections caused by recent changes
- (#5558, Andrew Aitchison, Paulo César Pereira de Andrade).
- 691. Fix the enabling of the Glint Gamma for use on an Appian Graphics
- Jeronimo 2000 board which uses two Permedia3's (#5448, Sven Luther).
- 690. Fix a problem in the trident driver for older chipsets and using
- 16bit clock programming, manifested itself on a Thinkpad 760EL,
- but there are probably lots of others. (Alan Hourihane).
- 689. On Darwin add Mac font directories to fonts.conf (Torrey T. Lyons).
- 688. Post XDarwin mouse events in Quartz mode where they happen rather than
- where the cursor currently is (Adrian Umpleby).
- 687. Enable Freetype Mac FOND support on Mac OS X (Torrey T. Lyons).
- 686. Add an "lswitch" option to the group xkb map, allowing the left Alt
- key to be used for AltGr (#A.1463, Andreas Tobler).
- 685. Add some locales for OpenI18N1.2 (LI18NUX2000) level.1 conformance,
- and change zh_HK to point to zh_HK.big5hkscs which conforms to
- glibc's default for zh_HK (#A.1457, Leon Ho).
- 684. Updates for the Irish and Ogham XKB maps (#5549, 5550,
- Séamus Ó Ciardhuáin).
- 683. Xterm patch #172 (Thomas Dickey).
-
-XFree86 4.2.99.3 (21 December 2002)
- 682. Add a request to XFree86-VidModeExtension to get the read/write
- permissions so that clients can check if they have permission to
- change parameters (David Dawes).
- 681. Fix read-only XFree86-VidModeExtension requests for remote connections
- (David Dawes, reported by Jamie Zawinski).
- 680. Correct problem when the server prints the name of a 'private
- xkb action' in a format that xkbcomp cannot understand, and
- was causing problems when calling XkbGetKeyboard (Ivan Pascal).
- 679. Fix animated cursor problem with multiple screens (#A.1454,
- Keith Packard).
- 678. gtf.c build fix for LynxOS 4.0 (#A.1453, Stuart Lissaman).
- 677. Fix a segfault in fontconfig (#A.1450, Keith Packard).
- 676. If some LEDs are lighting when one reloads the XKB keyboard map
- (using setxkbmap or xf86cfg) the LEDs become 'frozen' and can't
- be switched off. The patch fixes this bug. (#5544, Ivan Pascal).
- 675. Fix some problems with the addition of multi-layout scheme to
- xkb: some keys that aren't 'alphabetic' should be treated as
- such to allow CapsLock+Shift working as expected; sometimes it
- is required to load an include file more than once due to
- multi-layout configuration, also fix some typos
- (#5545, Ivan Pascal).
- 674. XKB programable 'special combinations' (such as Ctrl+Alt+<key>)
- also send usual key evants (press and release). Although the
- keysym generated in this case is NoSymbol such events can confuse
- some applications (#5546, Ivan Pascal).
- 673. Fix some remaining memory leaks in xkb initialization code
- (Paulo César Pereira de Andrade).
- 672. Temporarily enable the hard-coded Ctrl-Alt-Backspace terminate sequence
- until a better fallback mechanism is implemented (Egbert Eich).
- 671. Allow XKB-remappable hot keys to work with the "kbd" driver
- (Egbert Eich).
- 670. Export xf86inSuspend as needed by the "kbd" driver (Egbert Eich).
- 669. SiS driver updates, including:
- - support for SiS 330 Xabre (untested)
- - Bugfix for boxes with two VGA connectors (tested)
- - Autodetection of second monitor (tested)
- - TV detection improved (tested)
- - fixed error in 1280x1024 panel support (yet untested)
- - Fixed bug in TV output on SiS30xB/30xLV (PAL still only BW, not
- even the Windows driver can display PAL in color)
- - Fixed positioning of TV picture. Works now for all video bridges
- except Chrontel 7019 (still untested).
- (Thomas Winischhofer).
- 668. Add an alternative French XKB layout (fr-latin9) (#A.1446, Guylhem Aznar,
- Rene Cougnenc, Nicolas Mailhot).
- 667. Add bar and brokenbar to default <LSGT> definition for pc102 and
- pc105 xkb maps (based on #A.1445, Göran Uddeborg).
- 666. Change the keypad "decimal" key to KP_Separator in the dk, fi, no, se
- xkb maps (#A.1440, Robin Rosenberg).
- 665. Fixes and cleanups for the ISO8859-14 Compose table (#5543,
- Séamus Ó Ciardhuáin).
- 664. Update the Ogham xkb map, including full support for the IS434 standard
- and laptops (#5542, Séamus Ó Ciardhuáin).
- 663. Update the Irish xkb map, including adding support for laptops (#5541,
- Séamus Ó Ciardhuáin).
- 662. Add "Inet" key definitions for the Honeywell Euroboard keyboard (#A.810,
- Scott Penrose).
- 661. Add "Inet" key definitions for the Trust Direct Access keyboard (#A.897,
- Raphaël Poss).
- 660. Add draglock support to the mouse driver, for aiding trackball use
- by people with low dexterity (#A.1224, Paul Elliott).
- 659. Fix bad includes in the xkb "level3" symbols file (A.1444,
- Göran Uddeborg).
- 658. Fix atimisc panel support bug that occurs when the mode on server entry
- is a VGA mode with large horizontal and/or vertical blanking pulses
- (Marc La France).
- 657. Fix small documentation error in config/imake/imakemdep.h (#A.1052,
- Linus Almstrom).
- 656. Small change to find_mesa_visual() in xf86glx.c to avoid
- branch misprediction on x86 (#A.1057, lompik at voila.fr).
- 655. Clear memory allocated in xtWidgetAlloc() to avoid garbage from
- malloc() being referenced later (#A.1114, Adam J. Richter).
- 656. Make SysRq generate the same keycode as PrtScrn, and Break the same
- keycode as Pause (#A.1160, Owen Taylor).
- 655. Add "Inet" key definitions for some HP and Toshiba laptops (#A.1213,
- Peter Soos).
- 654. "Inet" key definitions for the Brother Internet keyboard (#A.1242,
- Diego Iastrubni).
- 653. "Inet" key definitions for the Ennyah model DKB-1008 keyboard (#A.1256,
- Lionel Landwerlin).
- 652. Apply i830 DRM driver cleanups to the i810 driver (#A.1438,
- David Airlie).
- 651. Add XI18NOBJS files for the ko_KR.UTF-8 and ja_JP.UTF-8 locales
- (#5538, 5539, Jungshik Shin).
- 650. Add FIRSTINDEX to the gb2312.1980-0.enc, gbk-0.enc and jis0212.1990-0.enc
- encoding files (#5537, Jungshik Shin).
- 649. Increment shared libraries major revisions on OpenBSD if gcc with
- stack protector is used (Matthieu Herrb, Todd Fries).
- 648. Resync with DRI (mesa-4-0-4-branch).
- 647. Update XDarwin's IOKit mode to work with new event handling code
- (Torrey T. Lyons).
- 646. Add some more aliases for some German locales (#A.1263, Thomas Koeller).
- 645. Update kio8-r encoded Cyrillic BDF fonts (#A.1267, Andrey A. Chernov).
- 644. Fix Xtrans TLI code to handle a port scan and not fill the log file
- with error messages from _XSERVTransTLIAccept() (#A.1333, Fiel Cabral).
- 643. Only free cbs.data.text when cbs.type is XIMTextType in
- _XimStatusDrawCallback() (#A.1342, Owen Taylor).
- 642. Allow mouse pointer movement to be rotated (#A.1346, Joost Buelens).
- 641. Add xkb layouts for Indian scripts (Kannada, Telugu, and Oriya) (#A.1436,
- Guntupalli Karunakar).
- 640. Enable MMX, SSE and 3DNow! for NetBSD 1.6 and later (#5536,
- Matthias Scheler).
- 639. Merge the xkb 'lt' layouts into pc/lt (#5535, Nerijus Baliunas).
- 638. Set the default fa_IR character set to UTF-8 instead of
- ISIRI-3342 (#A.1356, Roozbeh Pournader).
- 637. Fixes and updates for building under LynxOS/PowerPC 4.0 (#A.1386,
- Stuart Lissaman).
- 636. Update the ClearlyU fonts to version 1.9 (#A.1386, Mark Leisher).
- 635. Fix for drmOpenDevice() ignoring success on its second attempt at
- opening the drm device (#A.1394, Alexander Stohr).
- 634. Add support for a "-include" command line option to makedepend, similar
- to the same GNU C option (#A.1396, Alexander Stohr).
- 633. Perform country-independent matching for Chinese languages in fontconfig
- (#A.1406, Keith Packard).
- 632. Finish off the UTF-16 APIs in Xft, and fix the UTF-16 conversion
- code in fontconfig (#A.1411, Keith Packard, Jungshik Shin).
- 631. Make XIM locale checking case-independent (based on #A.1422, Leon Ho).
- 630. Fix incorrect datatype for the pixmap width in
- fbCompositeSrcAdd_8000x8000(), and add some small optimisations
- (#A.1423, Keith Packard).
- 629. Update the se xkb map to allow the older AltGr+5 method of entering
- the Euro sign (#A.1433, Christian Rose).
- 628. Add validation for the screen number parameter received over the wire
- by the X server's DRI extension code, and fix some similar checks in
- the GLX code. This fixes X server segfaults when an invalid screen
- value is provided (#A.1434, Felix Kühling)..
- 627. Fix some bugs in the Iranian xkb layout (#A.1135, Roozbeh Pournader).
- 626. Add a Bosnian xkb layout (#A.1398, Amila Akagic).
- 625. Fix for Hungarian xkb layout (#A.1175, Peter Soos).
- 624. Update the Maltese xkb layouts (#A.1243, Ramon Casha).
- 623. Add EuroSign to the xkb "gb" layout (#A.901, Dermot McNally).
- 622. Various updates for the xkb "xfree86" keymap list (including #A.777,
- Andriy Rysin).
- 621. Let kbd driver test if Xserver is in suspend before handling any
- input events (Egbert Eich).
- 620. Fixed agp version checking to accept minor versions >= the specified
- number (Leif Delgass).
- 619. Update referenced symbols lists for the mga, vesa, i810 and vmware
- drivers (David Dawes).
- 618. Add missing symbol to the mga driver's referenced symbols lists
- (#5534, Mike Harris).
- 617. Add some utf8 locale aliases (#5533, Mike Harris).
- 616. Fix some Linux/Alpha (with domain support) build and runtime
- problems (#5532, Jeff Wiedemeier).
- 615. Add some missing symbols to the radeon driver's referenced symbols
- lists (#5531, Mike Harris).
- 614. Restore the Alt/Meta mappings for pc104/pc105 keyboards in the
- multi-layout maps (David Dawes).
- 613. Add UTF-8 locale entries for Amharic-Ethiopian, Tigrinya-Eritrean
- and Tigrinya-Ethiopian (#5529, Daniel Yacob).
- 612. Restore the "\|" key in the GB multi-layout keyboard layout (#5528,
- Andrew Aitchison).
- 611. Updates for the auto-generated UTF-8 Compose file (#5527,
- David Monniaux).
- 610. Updates/fixes for the Korean font encoding file (#5525, Jungshik Shin).
- 609. Fix some problems with the multilayout version of the Turkish layout
- (#5521, Nilgün Belma Bugüner).
- 608. DRM vertical blank ioctl can send a signal as an alternative to
- blocking (r200 and radeon only so far) (#5523, Michel Dänzer).
- 607. Build fix for Linux/Alpha (#5515, Mike Harris).
- 606. Change CppCmd on Linux to /usr/bin/cpp (#5514, Mike Harris).
- 605. Fix an incorrect check for the "StrangeLockups" option in the
- neomagic driver (#5505, Mike Harris).
- 604. Rename geode driver to nsc and add GX2 support (Sarma Kolluru, NatSemi).
- 603. Add the missing XKB definition for keysym "ISO_Level3_Lock" (#5526,
- Séamus Ó Ciardhuáin).
- 602. XkbSetControls should return True when successful, not False (#A.1385,
- Stephen Montgomery-Smith).
- 601. The functions XGetXlibControls and XSetXlibControls must work even if
- the X server doesn't have the XKB extensions (#5513, Ivan Pascal).
- 600. Add en_ZA locales (#5512, Berend De Schouwer).
- 599. Fix shadowfb to not make update callbacks for operations that don't
- touch offscreen memory, and to not double (or more) update glyph
- rendering (#5509, Nolan Leake).
- 598. Change XAA to not sync when it sees RENDER operations that don't
- touch VRAM, and to try to accelerate Glyphs with Composite if it
- seems likely that will work (#5509, Nolan Leake).
- 597. VMware driver updates, including:
- - Fixed vmwareGetImage to correctly calculate the region to be gotten.
- - Small cursor bypass optimization.
- - Fixed race between writing normal registers and writing HWcursor
- registers.
- - Fixed small race in the FIFO wrap code that could cause FIFO
- corruption.
- - Added temporary offscreen memory manager.
- - Added compositing (RENDER) acceleration.
- (#5509, Nolan Leake).
- 596. Newport driver updates, including:
- - Add hardware cursor support.
- - Workaround blank console after VT switch on some newports
- (based on a patch from Dominik Behr).
- - Support for the Indigo2 XL (based on a patch from Adrian Schroeter).
- (#5507, Guido Guenther).
- 595. Add SGML versions of the XKB config and enhancing docs (#5506,
- Kamil Toman).
- 594. Enable SSE, MMX, 3DNow support by default for Linux/x86_64 (#5502,
- Mike Harris).
- 593. Replace hard-coded "lib" directory names with LibDirName in Imake.tmpl
- (#5480, Mike Harris).
- 592. DRI shouldn't have been enabled for Linux/s390 (#5500, Mike Harris).
- 591. Numerous bug, stability, and correctness fixes for the Intel 830/845G
- 3D support (#5517, Keith Whitwell).
- 590. Numerous bug and stability fixes for the Intel 830/845G 2D and Xv
- support (#5517, David Dawes).
- 589. Move IOKit-specific global variables out of generic XDarwin code
- (Torrey T. Lyons).
- 588. Add a new interface for registration of core font renderers that allows
- priorities to be assigned. This allows multiple renderers for the
- same extension to be registered, with the one with the highest priority
- being the one that gets used (#5435, 5437, Juliusz Chroboczek).
- 587. Fix 640x480 modes in neomagic driver (Egbert Eich).
- 586. Fix reporting of G400/G450 in MGA driver (Andrew C. Aitchison).
- 585. Don't change the authorization data (and in particular, don't
- enable local host access) if the X server's authority file
- is removed or becomes unreadable while the server is running
- (David Dawes, reported by Dietmar Schröter).
- 584. Xterm patch #171 (Thomas Dickey).
- 583. Fix uninitialized buffer-count in luit (Semen A. Ustimenko).
- 582. Various xdm updates from Debian and Suse (#5358, Branden Robinson,
- #5511, Sebastian Krahmer).
- 581. Flesh out suncg6's SaveScreen() function (Moritz Bunkus).
- 580. lib/Xaw/MultiSrc.c improperly checks open() return value
- (A.1415, Jaromir Dolecek), Fix provided by Hideo Saito in NetBSD.
- 579. Add DPMS and screen blanking support in the sunffb driver
- (Ferris McCormick).
- 578. Fix SEGV that occurs when Xsun* runs into an unrecognized framebuffer
- type (Marc La France).
- 577. When the mode on server entry is found to be using composite sync on a
- Mach64 variant, turn on the "compositesync" option (Marc La France).
- 576. Plug SIGIO hole while the server is switching back into its VT
- (reported by Michel Lespinasse).
- 575. Use shadowfb in XDarwin fullscreen Quartz mode (Torrey T. Lyons).
- 574. Make RENDER optional for Xvfb. When RENDER is enabled add depth 32
- pixmap format to list of supported pixmaps (Egbert Eich).
- 573. Fix va_args glitches for xterm/libfontconfig: 0 == (void*)0 isn't true
- for all platforms (Egbert Eich).
- 572. Fix lbxproxy to also build on platforms that don't have snprintf()
- (Egbert Eich).
- 571. Fix va_args glitches in mkfontscale: arg stack isn't preserved after
- calling va_arg on all platforms (Egbert Eich).
- 570. Fixed x11perf aa benchmarks to support non-default visuals/colormaps
- (Egbert Eich).
- 569. Use -Os to build on Darwin PPC with Gcc 3.x (Torrey T. Lyons).
- 568. XEditResCheckMessages trashed XtMalloced memory on some widget
- hierarchies, due to using incorrect indexes when removing
- duplicates (A.1409, Rob Arthan).
- 567. xprop updates (Mihael Hategan).
- 566. Fix SEGV in ICE library (Petter Reinholdtsen).
- 565. Fix interaction between backing store and miext/shadow (adapted from
- Paulo César Pereira de Andrade).
- 564. Add new key descriptions for XFree86 special keys (i.e. for terminating
- and VT switching the Xserver) (#5510, Ivan Pascal).
- 563. #define DEALLOCATE_LOCAL as "do {} while(0)" instead of nothing to
- eliminate GCC warnings caused by code that does not assume
- DEALLOCATE_LOCAL can deal with null pointers (suggested by Kevin Martin).
- 562. -
- 561. Fix bug in kldload() call on FreeBSD (reported by Joy Ganguly).
- 560. Adding int10 symbols to the list of possibly unresolved symbols in
- Rage128 driver (Egbert Eich).
- 559. Allowing scanpci to be build on Ppc (Egbert Eich).
- 558. Updating SiS driver. Lots of new features, supported chipsets and
- LCD panels, bug fixes. For details please check:
- http://www.winischhofer.net/linuxsis630.shtml
- (Thomas Winischhofer).
- 557. Changed MGA driver to query fb_offset for DRI from kernel instead
- of taking the driver's FBAddress - this is required by platforms
- like Alpha (Egbert Eich).
- 556. Fix Xmu memory leak (reported by Michael Vogt).
- 555. Deal with Creative SBlive devices that mis-identify themselves as
- "prehistoric" VGA's (Marc La France).
- 554. Allow -configure to setup Unknown Vendor/Boards removing the requirement
- of xf86PciInfo information (Alan Hourihane).
- 553. Hardware alpha blended cursors in the "nv" driver, new PCI IDs, and
- a fix for a problem on PowerPC (Mark Vojkovich).
- 552. "nv" driver workaround needed to let Xv continue to work after a
- suspend on some laptops (Pierre Lombard).
- 551. Restore '--assembler-with-cpp' in AsCmd for Linux/mips, fixing the build
- on that platform (#5499, Guido Guenther).
- 550. An alternative update for alphabetic four level cz, sk XKB maps.
- This is compatible with the way MS Windows behaves (#5498, Kamil Toman).
- 549. Clarify the difference between characters and bytes in xev (#5497,
- Markus Kuhn).
- 548. Add an Irish (ie) XKB keyboard map (#5496, Seamus O Ciardhuain).
- 547. Replace the UTF-8 compose map with one automatically generated from
- the official Unicode documentation, with the addition of some
- handwritten rules (#5495, David Monniaux).
- 546. Document the "nomtrr" option in the XF86Config man page (#5494,
- Mike Harris).
- 545. Some fixes for the Icelandic xkb map (#5493, Olafur Osvaldsson).
- 544. Add French Canadian keyboard description to xfree86.lst (#5492,
- Mike Harris).
- 543. Add a new file for descriptions of XkbModel, XkbLayout, XkbVariant
- and XkbOption names, using an XML format. Includes a DTD file
- and perl script to convert from the new format to the old (.lst)
- format (#5491, Ivan Pascal).
- 542. Add missing "dvorak" single-group XKB layout (#5490, Ivan Pascal).
- 541. Change the xkbfile library to allow some names to be grouped into
- a named list, which allows the rules file to be simplified (#5490,
- Ivan Pascal).
- 540. Make the new single-group XKB symbols maps used by default (#5490,
- Ivan Pascal).
- 539. Fix a crash that can happen when some apps are run in CJK locales
- (#5489, Havoc Pennington).
- 538. Make xdm check the full password string (on Linux) for locked accounts
- rather than just the first character (#5485, Mike Harris,
- Nalin Dahyabhai).
- 537. Fix a few cases where the transport endpoints would be removed
- even if NOUNLINK is specified in the flags (#5484, J. Kean Johnston).
- 536. Attempt to fix bitblt problems when doing offscreen pixmaps in
- i810 (Egbert Eich).
- 535. Change Build rule so that x86 assembler code for MESA can be completely
- disabled on i386 (Egbert Eich).
- 534. Added IEEE Optimization for x86-64 (Egbert Eich).
- 533. Initialized fullscreen in DRIscreenPrivate to a vaild value
- (Egbert Eich).
- 532. Fixed module loader to map memory in the low 32bit address space on
- x86-64 (Egbert Eich).
- 531. Shifted Keypad delete: added KP_Separator for de_DE and de_CH keyboard.
- 530. Added sanity checks to various scripts (Egbert Eich).
- 529. Fixed Trident RGB16 video playback mode (Alastair Robinsion).
- 528. i810 only set OVRACT register when TVout isn't enabled
- (Sebastien BASTARD, Matthew J. Sottek, Egbert Eich).
- 527. Record changes of BusMaster state so that pciDisable/Enable/Mem/Io
- don't override these (Egbert Eich).
- 526. Fixed RAC code: when no resources are shared chips may still need
- RAC for bus access if both require non overlapping parts of the
- VGA resources (Egbert Eich).
- 525. Fix for resource registration of C&T and Tdfx driver (Egbert Eich).
- 524. Prevent core dumps in Xutf8Reset/Lookup code of Xlib (Masaru Yokoi).
- 523. Added support for BE systems for C&T driver (Michael Stephen Hanni).
- 522. Added support for special keys found on many ACPI control, Easy Access
- Keyboards, Internet keyboards, laptops, notebooks and PDA (via
- xkb/symbols/inet). Added new key symbols for these keyboards
- (Stanislav Brabec).
- 521. Fixed some problems with ininite loops which where introduced
- with the host bridge specific code (Egbert Eich).
- 520. AXP domain support (Jeff Wiedemeier).
- 519. Added -m32 flag to c++ when build on ia32 (Egbert Eich).
- 518. -
- 517. Added rule to be able to use Numlock key on broken IBM keyboards
- (Stefan Dirsch).
- 516. Fixed Xlib build rules so it builds a truly static library again
- (Egbert Eich).
- 515. When compiled with GCC, force imake to generate Makefile's using GCC's
- preprocessor rather than a system-provided one (Marc La France).
- 514. Replace hard-coded "lib" directory names with LibDirName in X11.tmpl
- (#5480, Mike Harris).
- 513. Add some README files for XKB and it's configuration files (#5479, 5483,
- Kamil Toman).
- 512. Fixes for the "pc" cz and sk XKB maps:
- - readded cz_qwerty (but new pc/ style) map
- - added bskl variant missing in cz_qwerty and sk, sk_qwerty
- - fixed keypad decimal key definition to affect only defined group
- in cz, cz_qwerty
- - missing SPCE definition readded to sk, sk_qwerty
- (#5478, Kamil Toman).
- 511. Union Reality UR-F98 headtracker input driver (Linux-only) (#5476, 5477,
- Alan Cox).
- 510. Palmax PD1100 touch screen driver (#5475, 5477, Alan Cox).
- 509. Fujitsu Stylistic input driver (#5474, 5477, Rob Tsuk, John Apfelbaum,
- Richard Miller-Smith, Alan Cox).
- 508. Initialise ProgramName in xterm's main before referencing it (#5473,
- Peter Valchev).
- 507. Add an Ogham XKB keyboard map (#5472, Seamus O Ciardhuain).
- 506. Handle Alt+Ctrl+Shift+SPECIAL differently from Alt+Ctrl+SPECIAL
- where SPECIAL is one of the fallback built-in XFree86 hot keys
- (#5468, J. Kean Johnston).
- 505. Add Syriac XKB keyboard maps (#5467, Emil Soleyman-Zomalan).
- 504. Rename HasKatmaiSupport to HasSSESupport (#5461-5463, 5465, Mike Harris).
- 503. Add mouse wheel support for SCO OpenServer (#5460, J. Kean Johnston).
- 502. Fix i18n problem in xmessage due to use of the useStringInPlace
- resource (A.1381, Chisato Yamauchi).
- 501. Fix xnest build on file systems that are not case sensitive
- (Torrey T. Lyons).
- 500. Use unique local Imake define for fonts.conf dir (#5482, Mike A. Harris)
- 499. Fix xc/lib/Imakefile to not break HasFontconfig (#5481, Mike A. Harris)
- 498. Refresh screen after wake from sleep in XDarwin full screen mode
- (Torrey T. Lyons).
- 497. Fixes and updates for the SCO OpenServer port (#5459, J. Kean Johnston).
- 496. Add PCI ID defines for some ATI R300 chipsets (#5458,
- Vladimir Dergachev).
- 495. Fix error message typo in MakeRootTile() (#5451, Mike Harris).
- 494. Redirect hostname's stderr in the xon script (#5450, Mike Harris).
- 493. Add a request to the XFree86-Misc extension for querying the
- X server's config file, module path, and log file name (#5456, Joe Moss).
- 492. Add support for using the XKEYBOARD extension's action handlers
- for the XFree86 X server hot keys. This provides control over
- the mapping of these hot keys (#A.1334, 5454, Joe Moss).
- 491. Reinstate the X server -xkbdir option, but only when the X server's
- real and effective uids are the same (based on #A.1132, Ivan Popov).
- 490. Fix an xkbcomp bug that prevents a later definition from specifying
- actions if the previous definition didn't (#5471, Joe Moss).
- 489. Add a stub handler to xkbcomp for the DeviceValuator action (#A.1341,
- Joe Moss).
- 488. Fix broken software cursor with XDarwin's new event handling
- (Torrey T. Lyons).
- 487. Change imake so that, when compiled with GCC, it invokes the pre-
- processor through the gcc front-end, passing it imake's -v flag
- (Marc La France).
- 486. xf86cfg and xf86config patches, includind 1400x1050 mode, update list
- of modules, auto inclusion of the xtt module when running X -configure
- (A.1363, A.1364, A.1365, Chisato Yamauchi).
- 485. Fix unbalanced paranthesis in linuxPci.c (#5466, Ishikawa Mutsumi).
- 484. Remove "Option VideoRam" from savage driver, there's no need for it,
- and utilize the entities given VideoRam size (Alan Hourihane).
- 483. Fix fontconfig to obey NothingOutsideProjectRoot, so that the directory
- /usr/share/fonts is ignored in this case (#A.1325, Joe Moss).
- 482. Fix a segfault when using xkbcomp's -I option, and update the man
- page to correctly document the way this option works (#5447, Joe Moss).
- 481. Don't assume mmap returns the pointer hint requested. This is in
- the DENSE map code for Linux/alpha (#5439, Ray Strode).
- 480. Build fix for r128_accel on PPC when DRI is disabled (based on
- #5438, Mike Harris and #5449, Matthieu Herrb).
- 479. Updates to bdf/misc UCS fonts (#5446, 5453, Markus Kuhn).
- 478. Fix Thai glyphs in the 6x13 UCS font (#5427, Theppitak Karoonboonyanan).
- 477. Add Thai glyphs to 7x13, 7x13B, 7x13O, 7x14, 7x14B UCS fonts
- (#5445, Theppitak Karoonboonyanan).
- 476. Add Thai subfont generation based on the ISO8859-11 map from unicode.org
- (#5434, 5445, Theppitak Karoonboonyanan).
- 475. Update the multilayout version of the Greek (el) xkb symbols (#5425,
- Vasilis Vasaitis).
- 474. On XDarwin startup, do not send events to the X server thread until it
- is ready to receive them (Torrey T. Lyons).
- 473. Add a utility (called gtf) for calculating VESA GTF mode lines
- (Andy Ritger).
- 472. Add an input driver for KB-Gear's Jamstudio pentablet (A.1328,
- Brian Goines).
- 471. Add a Tektronix 4957 input driver (#A.1211, Olivier Danet).
- 470. Fix backing store in Rage 128 and Radeon drivers (Kevin Martin).
- 469. Fix Mono8x8 code in savage driver, needed ROP_NEEDS_SOURCE, also
- add NO_PLANEMASK to ScreenToScreen as code doesn't handle that case
- (Alan Hourihane).
- 468. Add a little utility to read and write I/O ports, for those host
- architectures that have them (Marc La France).
- 467. Ignore (with messages) any HorizSync and VertRefresh specifications for
- panels when using ATI LT, LTPro, XL and Mobility M1 (Marc La France).
- 466. Fix a build failure when BuildServersOnly is defined and XnestServer
- is not defined, and when /usr/X11R6 is not installed. (#A.1145,
- Valeriy E. Ushakov).
- 465. Fix panel support bug for ATI LTPro, XL and Mobility M1 chips
- (Marc La France).
- 464. Fix mode validation to deal with video memory sizes 256MB or greater
- (Marc La France).
- 463. Add ARGB cursors support to the vmware driver (#5442, Nolan Leake).
- 462. Add more query options to glxinfo (#5441, Brian Paul).
- 461. Fix a typo in glxinfo (#5440, D. Hageman).
- 460. Fix a memory leak in Cygwin/XFree86 server (#5444, Kensuke Matsuzaki).
- 459. Missing fallback to miPolyArc in fbarc.c (#A.1339, Ralf Klingebiel).
- 458. Fix the cyrix driver support for the 5510, 5520 and 5530. This driver
- only works with VSA1 based chips (#A.1260, Alan Cox).
- 457. When building with gcc >= 2.8, generate Makefiles with `imake -Wundef`
- (Marc La France).
- 456. Re-instate changes clobbered by DRI merge (Marc La France).
- 455. Fix a typo in shadowfb support from #5413 (#5430, Nolan Leake).
- 454. Fix a bug in vmware's HW cursor support which conditionally hid the
- cursor (#5430, Nolan Leake).
- 453. Fix an initialization problem in the calcomp input driver (#A.1056,
- Josef Walzer).
- 452. Add command line and XF86Config options to control Render color
- allocation on dynamic indexed visuals (Olivier Chapuis, Keith Packard)
- 451. Keep track of whether the 830/845G HW cursor should be visible or
- hidden so that it doesn't get turned on when it shouldn't (David Dawes).
- 450. Fix for DGA offset inconsistency in the 830/845G driver (based on
- a patch from Edgar Toernig).
- 449. Fix a memory leak when calling _XCloseLC and removing the loadable
- locales (#A.855 Mark Robinson).
- 448. Fix input size of character strings used in lib/X11/lcGetConv.c (#A.828,
- Yong-Jhen Hong).
- 447. Add Shape extension support to Cygwin/XFree86 rootless mode (#5431,
- Matsuzaki Kensuke).
- 446. Fix a typo in the s3 driver which prevented virtual display sizes.
- (#A.965, Stef Voltz).
- 445. Fix a server crash that can happen when a DGA client frees its colormap
- before setting the mode back to the original mode (David Dawes).
- 444. Modify Type1 font RAM allocation heuristics to allow for larger fonts.
- (#A.1121, Melchior Franz).
- 443. Add new relocation entries for Alpha architecture to the loader which
- are used when compiling with gcc >3.1 (#A.819, Thorsten Kranzkowski).
- 442. Fix server crash when using Xinerama when application closes.
- (#A.808, Tsukahara Ken).
- 441. Import Mesa-4.0.4, and resync with the DRI trunk (DRI Project).
- 440. Server support for the alpha architecture on OpenBSD 3.2.
- (Matthieu Herrb, Arthur Grabowski).
- 439. Workaround for <linux/input.h> conflict (Marc La France).
-
-XFree86 4.2.99.2 (21 October 2002)
- 438. Fix some memory leaks in libX11 i18n code (#A.1314, Olivier Chapuis).
- 437. Add DGA and Xvideo support to the i740 driver (#A.1307, Kopecek Tomas).
- 436. Fix the number of beeps when using AccessX and XKB
- (#A.1302, Alan Coopersmith).
- 435. Add twelve hour format to xclock's digital format
- (#A.1285, Brian L. Matthews).
- 434. Fix application crash when using DPS client libraries
- (#A.1282, Frank Giessler).
- 433. Fix pixmap cache corruption on VT switches in mga driver
- (#A.1279, Ross Mikosh).
- 432. Add missing Increment option in Summa input driver (#A.1276, G.P.Halkes).
- 431. Missing semicolon in twm/gram.y (#A.1307, Jim Gifford).
- 430. Cygwin/XFree86 updates
- - Add X.ico, an icon for Windows (Harold Hunt, Jehan Bing)
- - Include a preliminary pseudo-rootless mode (Matsuzaki Kensuke)
- - XF86Config file support (Alexander Gottwald)
- - Scrollbars support (Jehan Bing, Harold Hunt)
- (#5424, Cygwin/XFree86 developers).
- 429. Add ko_KR.UTF-8 and ja_JP.UTF-8 XLC_LOCALE files (#5421, Jungshik Shin).
- 428. Add TCVN support to luit (#5416, Tomohiro KUBOTA).
- 427. Expand luit to support several major non-ISO-2022-compliant
- encodings such as GBK and Shift_JIS (#5416, Tomohiro KUBOTA).
- 426. Add support for double-buffering to the tdfx driver's XVideo overlay
- support (#5415, Stephen Davies).
- 425. Add a -strftime option for xclock's digital mode (#5414, George Belotsky).
- 424. README.fonts update (#5409, 5410, Khoda Hafez).
- 423. Major update for VMware driver
- - recoded to use XAA, offscreen memory support, and color expansion code
- - Add RENDER support
- - Optimization of HWcursor
- - Bug fixes for HWcursor in 8bit mode and VT switching
- (#5423, Nolan Leake, VMware).
- 422. Updates for shadowfb code
- - Add RENDER support
- - support for pre-fb modifications
- - support for real framebuffers rather than memory based framebuffer
- - Removal of old fullscreen update code (when VT switching)
- - fix bug in FillSpans
- (#5411, #5413, Nolan Leake, VMware).
- 421. Clear the list of registered renderers at the start of each new server
- generation, and only print warnings about suffixes with more than
- one registered renderer for the first generation (David Dawes).
- 420. Make xf86PrintModes() show which modes are hot-key switchable
- (David Dawes).
- 419. Fix the vesa driver's misuse of virtualX for displayWidth (David Dawes).
- 418. Fix the VBE module's depth/bpp matching, which fixes some 24/32 problems
- as well as some 15/16 problems (David Dawes).
- 417. Fix black cursor images on Mac OS X 10.2.2 (Joseph Maurer).
- 416. Fix hotkey switching for user-specified modes, and fix hotkey switching
- between all valid modes when no specific modes are specified in the
- config file (David Dawes).
- 415. Trival input drivers Imakefile cleanup (#5299, Mike Harris).
- 414. Use INSTDATFLAGS when installing X server modules (#5292,
- Branden Robinson).
- 413. Fix the iso8859-15 Compose map -- there is no diaeresis codepoint
- in iso8859-15 (#5389, Wolfgang Sourdeau, Rüdiger Kuhlman).
- 412. Acute/apostrophe fix for nodeadkeys section of XKB German symbols
- (#5388, Andreas Metzler).
- 411. Fix Cards file typo (#5387, Branden Robinson).
- 410. Cleanup the XKB Macinosh US keyboard symbols, and remove those that
- should be in other country maps (#5386, Branden Robinson).
- 409. Add a user-configurable throttle on xconsole's number of saved lines
- (#5379, Branden Robinson).
- 408. Fix missing declaration of XShmGetEventBase() in XShm.h (#5375,
- Branden Robinson).
- 407. Remove inconsistencies in the way extension headers are referred to
- in most extension libraries (David Dawes).
- 406. Install extension struct/protocol headers that weren't already
- being installed (#5369, Branden Robinson).
- 405. Fix long-standing colour map bug in ATI driver (Marc La France).
- 404. Enable imake.c to perform correct C library version detection on hppa
- machines (#5372, Ben Collins).
- 403. Add new Imake rules to handle C++ programs that don't have man pages
- (#5371, Branden Robinson).
- 402. Add a -color app-defaults file for xmessage that exercises some
- features of Xaw7, and fix the base app-defaults to not use the no
- longer supported "whenNeeded" value for the "Scroll" resource (#5370,
- Branden Robinson).
- 401. Stop the drm module from creating a world-writable directory in /dev.
- Since dev nodes can only be created by root, there's no need for
- anyone else to be able to write to /dev/dri (#5367, Brendan O'Dea,
- #5380, 5422, Mike Harris).
- 400. Fix a SEGV in lbxproxy because it's ResizeReverseMap() makes assumptions
- about the atom numbers that can lead to unallocated memory being
- accessed (#5366, Branden Robinson and Anthony DeRobertis).
- 399. Increase the wacom driver's timeout for reading data after a request.
- This is needed for PalmWac (Wacom emulation for PalmOS) (#5364,
- Mathieu Clabaut).
- 398. Add Big5-HKSCS to locale.dir, and fix a missing portion in X-TT's
- Big5HKSCS-Unicode table (#5362, Branden Robinson and ThizLinux
- Laboratory Ltd).
- 397. Handle vetoed APM suspend events properly on Linux (#5362,
- Branden Robinson).
- 396. Handle ARM and HP-PA separately from m68k and PowerPC in xfree86.cf,
- and some cleanups (#5360, Branden Robinson).
- 395. xfs updates and cleanups (#5359, Branden Robinson).
- 394. Fix for random crashes when a screen fails to initialise (Marc La France).
- 393. Update RandR to include refresh rates (v1.1) (Keith Packard)
- 392. Numerous man pages fixes, add some missing manpages (#5365, #5373,
- #5376, #5377, #5382-5385, #5390, #5391, #5393, #5295 Branden Robinson
- #5374, Jonathan Amery, #5378, Jochen Voss)
- 391. Install bdftruncate and ucs2any without the .pl extension
- (#5391, Branden Robinson)
- 390. Rewrite Radeon DDC/DFP mode detection and management (Kevin Martin).
- 389. Integrate ATI patch:
- - Add 2D support for Radeon 9000 (RV250), Mobility M9 (RV250 mobile)
- and Radeon 9700 (R300)
- - Clone mode fixes and improvements
- - Dell VE card fixes
- - Dual-head VT switching fixes
- - General code clean up
- (#A.1217, Hui Yu@ATI).
- 388. Rewrite XDarwin's event handling to fix some bugs and to use
- SetInputCheck() for a performance boost (Torrey T. Lyons).
- 387. Add a little utility to write files through mmap() (Marc La France).
- 386. Add National Semiconductor Geode driver, support for the 5530, SC1200
- and SC1400 chipsets (NSC, Alan Hourihane).
- 385. linux.cf updates:
- - Resync the DebianMaintainer #define and the stuff in the
- corresponding if block to meet Debian's current needs.
- - Sort long chains of architecture-dependent #if-#elif directives in
- ASCII order.
- - Add explicit recongition of several architectures to the #ifndef
- BuildXF86DRI block.
- - Define a fallback CplusplusCmd (g++) if we don't recongize the
- platform we're on.
- - Turn off the loadable server on MIPS and SuperH platforms, where it
- doesn't (yet) work.
- - Trash some unneeded #defines in the Mc68020Architecture compilation
- environment.
- - Remove the block that #defines HasXserver NO for the s390 and s390x
- architectures (things like Xvfb build fine on these platforms).
- (#5357, Branden Robinson).
- 384. Fix an error in the Finnish XKB keyboard map (#5356, Marko Myllynen).
- 383. Add a Malayalam XKB keyboard map (#5355, Baiju M).
- 382. Add a "kbd" driver module that can eventually replace the built-in
- "keyboard" driver (#5344, Ivan Pascal).
- 381. Add os-support level support for a loadable keyboard driver for BSD
- and Linux (#5344, Ivan Pascal).
- 380. Add some new common layer functions for supporting a loadable keyboard
- driver (#5344, Ivan Pascal).
- 379. Move the XkbDisable option to a global server flag rather than
- keyboard driver flag, since it really is a global setting (#5344,
- Ivan Pascal).
- 378. Fix RenderCreateCursor's conversion from an ARGB cursor to a 2-color
- cursor when the cursor is wider than 8 pixels (#5353, Greg Parker).
- 377. Fix 24bpp displays with the fbdev driver when not using shadowfb
- (#5351, Michel Lanners).
- 376. Fixes and improvements for the en_US.UTF8 compose rules (#5346,
- Alexandre Oliva).
- 375. Fix compose rules for some dead accents for iso8859-1 and iso8859-15
- (#5338, 5339, Alexandre Oliva).
- 374. Add support for th_TH.UTF-8. with XIM (#5336, Theppitak Karoonboonyanan).
- 373. Fix some bugs in the Thai XIM:
- - excessive '(' char when switching XKB keyboard group
- - ineffective Ctrl-<key> and Alt-<key>
- (#5335, Theppitak Karoonboonyanan).
- 372. Add an X server command line flag (-br) to make the default root window
- solid black (#5334, Jens Owen).
- 371. Add support for th_TH.ISO-8859-11 (#5327, Theppitak Karoonboonyanan).
- 370. Use pci_alloc_consistent/pci_free_consistent instead of the
- local page alloc/free functions in the i810 and i830 DRM drivers
- (#5323, Arjan van de Ven).
- 369. Fix some non-POSIX usage of tail, expand and sort (#5322, Paul Eggert).
- 368. Fix bug in PCI code for Solaris/SPARC (Marc La France).
- 367. When enabling PCI adapters, also enable their bus mastering capability;
- Consequently, deprecate xf86EnablePciBusMaster() (Marc La France).
- 366. Fix lndir's handling of relative symbolic links, and update the man page
- to document the -withrevinfo flag (H. J. Lu, Marc La France).
- 365. Xdm patches: realloc usage, zero malloc()ated memory, enable
- /dev/urandom on NetBSD 1.4 and later, OpenBSD patches (#5345,
- Mike A. Harris, #5401, Matthias Scheler, Matthieu Herrb)
- 364. Xterm patches #168, #169 (Thomas Dickey).
- 363. In certain circumstances, allow VGA-rerouting through Simba bridges.
- This only affects UltraSPARC-IIi systems. This is a small but
- necessary step in eradicating SparcArchitecture's need to compile the ati
- dribver with -DAVOID_CPIO (Marc La France).
- 362. In int10, ignore interrupts whose simulation isn't yet implemented.
- Previously, such interrupts caused the emulation to stop. (Egbert Eich,
- Marc La France).
- 361. Add full support for multi-head on 460GX-based Itanium systems
- (Marc La France, with documentation loaned by Intel under NDA).
- 360. Fix Darwin build problems with libXrandr and the new FreeType2 backend
- (Torrey T. Lyons).
- 359. Savage driver updates.
- - Support for ProSavage DDR (PCI ID 0x8D04)
- - TV output fixes
- - support for -pixmap24 flag
- - XAA fixes to cure lockups
- (#5412, Tim Roberts).
- 358. Enable version controlled .dll's on Cygwin/XFree86 (Alexander Gottwald).
- 357. Some build fixes for Cygwin/XFree86 (Alan Hourihane).
- 356. Add new FreeType2 backend which fixes a bug with -c- fonts
- (#5347, #5348, Juliusz Chroboczek).
- 355. Add new command line options to glxinfo for more detailed output
- (#5354, Brian Paul).
- 354. Support for 24bpp, fix screen blanking and bug fixes for newport driver
- (#5329, #5349, Guido Guenther).
- 353. Add RandR support to XFree86 DDX. (Keith Packard)
- 352. Update RandR extension to 1.0. Eliminate depth switching
- (Keith Packard, Jim Gettys)
- 351. Fix XDarwin rootless crash when window resizing with complex bit
- gravity (Greg Parker).
- 350. Fix some incorrect mappings in the gbk-0.enc encodings file (#5313,
- Tomohiro KUBOTA).
- 349. Fix C precedence bug in mfb (#5309, Tassia St. Germain).
- 348. Updates to mkfontscale (#5307, Juliusz Chroboczek).
- 347. Add SharedXcursorReqs to Cygwin build (#5405, Harold Hunt).
- 346. Add image transformation and subpixel order to Render (Keith Packard)
- 345. Add Xcursor-def.cpp to Xcursor library (#5350, Alexander Gottwald).
- 344. Update to pci.ids to 2002-09-24 snapshot (Marc La France).
- 343. Add a little utility to read files through mmap() (Marc La France).
- 342. Implement a means to ignore certain host bridges while determining PCI
- bus topology (not yet used) (Marc La France).
- 341. Bridge driver interface fixups for host bridges (Marc La France).
- 340. Change makedepend to recognise invocations of parameter'ed macros
- (Marc La France).
- 339. Major redesign in the Xedit syntax highlight code. Now there isn't
- anymore the builtin C mode, but a new version using the xedit lisp
- interpreter, as well as several new modes, including Lisp/Scheme,
- Imakefile, X Resource files, Makefile, Manpage source, Sgml and
- Html (Paulo César Pereira de Andrade).
- 338. Print a warning if more than one renderer is registered for a font type
- (#5305, Juliusz Chroboczek).
- 337. Fix a double free() that can cause a crash in XCloseIM() (based one
- #5303, Mo DeJong).
- 336. Allow xman's MANCONF definition to be specified in the Imakefile
- (based on #5302, Mike Harris).
- 335. Config typo and update for Linux on Hitachi SuperH architecture (#5301,
- ISHIKAWA Mutsumi).
- 334. Add a "DefaultRefresh" option to the vesa driver (David Dawes).
- 333. Fix build problem when calling GNU make with "--" prefixed options
- (#5291, Toomas (toomas at tklabor.ee)).
- 332. Avoid noise from hostname call in startx (#5270, Mike Harris).
- 331. xwd ignores the -frame option if the -id option is used (#5251,
- Mike Harris).
- 330. Fix problem where DRIUnlock was called when DRI fails to load
- (Kevin Martin)
- 329. Fix erroneous warnings about removing DRM signal handler when DRI
- fails to load (Kevin Martin)
- 328. Add LINE_LIMIT_COORDS option to XAA to work around limited coordinate
- space for lines on Radeons (Kevin Martin)
- 327. Fix Radeon DGA code to use XAA sync function (Michel Dänzer)
- 326. Major rework of Radeon accel code:
- - Merge CP and MMIO code (Kevin Martin and Michel Dänzer)
- - Fix indirect buffer CP code (Kevin Martin and Michel Dänzer)
- - Add CP support for scanline color expansion and image writes
- (Michel Dänzer)
- - Fix Mono8x8 problems (Kevin Martin and Michel Dänzer)
- - Fix clipping routine to properly set transparency and
- dp_gui_master_cntl reg (Kevin Martin and Michel Dänzer)
- - Fix clipping calculation errors (Kevin Martin)
- - Properly set line bias so that sw rendered solid and dashed lines
- match the accel TwoPoint lines (Kevin Martin)
- - Fix drawing last point for solid and dashed lines (Kevin Martin)
- - Remove NoLineAccel option since two point lines work (Kevin Martin)
- 325. Export some more Xft symbols (Cygwin) that are needed for qt 3.x
- (#5285, Ralf Habacker).
- 324. Don't sleep on Cygwin for ICE directory mode problems (#5284,
- Ralf Habacker).
- 323. Fix a bug in XtGetDisplays() with more than 1 open display (#5282,
- Kip Rugger).
- 322. Second part of xkb multi-layout keyboard map support (#5321,
- Ivan Pascal).
- 321. Allow the Record extension to report logical coordinated with Xinerama
- (#5231, Paul Stewart).
- 320. Allow the XTrap extension to report logical coordinated with Xinerama
- (#5230, Paul Stewart).
- 319. Moved LdPreLib define after the vendor/OS specific config files
- as it may depend on setting done there (Egbert Eich).
- 318. Several fixes for cross compile environment (Egbert Eich).
- 317. Added code to allow for building of static only libraries with
- -fPIC for platforms which require it (Egbert Eich).
- 316. Added '-m32' to gcc flags as default for ia32 builds when gcc version
- is >= 3.1. This allows building a 32 bit Version of X on 64bit x86-64
- (Egbert Eich).
- 315. Changed direct calls of ld to 'gcc -nostdlib' for Linux (Egbert Eich).
- 314. Changed calls to as to 'gcc -c -x assembler-with-cpp' for Linux
- (Egbert Eich).
- 313. Added '-fno-strict-aliasing' flag to gcc version >= 3.1 (Egbert Eich).
- Strict requires that one address must not contain pointers to
- different types - a feature heavily used by X (Egbert Eich).
- 312. Fixed a core dump problem in libXtt (?) (Egbert Eich).
- 311. Removed '#pragma pack' from structures that contain function pointers
- in x86emu. This causes problems on gcc 3.1 for ia64 (Egbert Eich).
- 310. Added defines for missing X types to saverproto.h (Egbert Eich).
- 309. Fixed compiler warings generated by gcc >= 3.1 in mesa drivers
- (Egbert Eich).
- 308. For platforms that allow both 32 and 64 bit libraries to be executed
- split Xlib i18n modules path into
- <libpath>/X11R6/lib/X11/locale/lib/common and
- <libpath>/X11R6/lib/X11/locale/lib64/common. 'lib64' has been defined
- to be the default path for 64bit shared libraries on these platforms
- (Egbert Eich).
- 307. Fixed obvious typo in OMlib (Egbert Eich).
- 306. Fixed code in cfb that didn't comply with C sequence rules.
- Modern C compilers tend to be more aggressive on code reordering
- (Egbert Eich).
- 305. Changed arguments of NoopDDA() from VarArgs to void. Handling
- of VarArgs by gcc isn't compatible with the way it was used
- on certain platforms (Egbert Eich).
- 304. Added support for 32bit pixmaps for 24bit overlay framebuffers in
- fb overlay code (Egbert Eich).
- 303. Fixed kdrive to print a meaningful error message instead of just
- core dump when no matching graphics cards is found (Egbert Eich).
- 302. fixed portability bug in xwd (Andreas Schwab <schwab@suse.de>)
- 301. fixed X Server crash, which happended each time a proportional iso10646
- font was loaded with xtt backend (Yong Li <rigel863@yahoo.com>)
- 300. Added some ARM specific fixes to compiler.h (Uli Hecht).
- 299. Added a virtual 'dummy' driver (Egbert Eich).
- 298. Fixed core dump when certain access functions are not set in
- xf86Bus.c (Egbert Eich).
- 297. Fixed problem where SIGIO could be disabled after a server reset.
- 296. Added configurable list of devices the xf86Misc extension is allowed
- to change the mouse device to (Egbert Eich).
- 295. Changed default mouse type to 'auto' when generating config file
- with '-configure' (Egbert Eich).
- 294. Made sure keyboard modifier settings are consistent after exit
- from DGA when the xkb extension is used (Egbert Eich).
- 293. Disabled keyboard processing when Xserver is suspended by power
- management.
- This allows effective locking of laptops when stolen (Egbert Eich).
- 292. Added/improved options for lockfile syncing (Egbert Eich).
- 291. Added support for backup copy of Xserver logfile (Egbert Eich).
- 290. Fixed GetTimeInMillis() to use deltas instead of absolute time
- returend by gettimeofday(). This ensures time is monotonic in X
- (Egbert Eich).
- 289. Fixed xf86Misc extension to allow modification of Expps2 mice
- (Egbert Eich).
- 288. Made code in xf86MiscExt.c more readable (Egbert Eich).
- 287. Fixed PCI CardBus bridge handling (Egbert Eich).
- 286. Added code to reenable PCI bus mastering after coming back from a
- VT switch to radeon driver (Charl P. Botha <http://cpbotha.net/>)
- (Egbert Eich).
- 285. Dito for r128 driver (M. Harris).
- 284. Dito for glint and mga driver (Egbert Eich).
- 283. Fixed double scan issues for low res modes in C&T driver (Egbert Eich).
- 282. Set rgbBits to 8 for all HiQV chips in chips driver (Egbert Eich).
- 281. Moved initialization of accel funtions past initialization of
- offscreen fb manager in chips driver (Egbert Eich).
- 280. Fixed initialization of video in chips driver (?).
- 279. Fixed HALlib problem restoring text mode on G550 (Egbert Eich).
- 278. Restructured and included Matrox's Merged Framebuffer changes
- to mga driver (Egbert Eich).
- 277. G450/550 clockchip programming fixes (Matrox).
- 276. Fixed HW Cursor for HALlib frame granularity (Egbert Eich).
- 275. Enabling 2D accel in 24-bit for neomagic 2360 and 2380 (Egbert Eich).
- 274. Added support for builtin 1024x480 mode of Sony subnotebooks for
- Neomagic driver (Egbert Eich).
- 273. Fixed support for lowRes (320x240) modes in neomagic driver
- (Egbert Eich).
- 272. Fixed RAC function registration in S3 driver (Egbert Eich).
- 271. Added some voodoo to screen initialization of S3 driver (Egbert Eich).
- 270. Fixed vbe/int10 support in SMI driver. It used to core dump
- when BIOS was not usable (Egbert Eich).
- 269. Separated BRIGHTNESS and and CAPTURE_BRIGNTESS video attributes
- in smi driver: CAPTURE_BRIGHTNESS refers to the capture chip
- (ie. Philips SAA7110) while BRIGHTNESS controls the video overlay
- of the SMI chip itself (Egbert Eich).
- 268. Disable automatic loading of DRI when running SUN ffb as this is
- inconsistent with other drivers (Thorsten Kukuk).
- 267. Fixed Gamma/Brightness code in trident driver (Egbert Eich).
- 266. Added FpDelay debugging option (Egbert Eich).
- 260. Fixed video support for Trident 9397 (Egbert Eich).
- 265. Fixed Cursor/VT switch support for vmware driver (Egbert Eich).
- 264. Fixed Blit problems in vmware driver when running KDE (Egbert Eich).
- 263. Added RENDER support to vmware driver (Egbert Eich).
- 262. Added C&T 69030 to extrapci.ids (Egbert Eich).
- 261. Improved mouse autodetection code (Egbert Eich).
- 260. Restructured int10 code so that vm86 and x86emu support can be loaded
- as modules. Implemented heuristic to try vm86 first and fall back to
- x86emu. This allows 32 bit Xservers to run on x86_64 on 64-bit kernel
- without vm86 support (Egbert Eich).
- 259. Restructured elf loader: determine which section to load from elfheader
- flags (Egbert Eich).
- 258. Adding RENDER Support to RAC (Egbert Eich).
- 257. Using borderClip instead of borderSize region for redisplay function
- in miext/shadow code to avoid core dumps when vt switched away
- (Egbert Eich).
- 256. Replacing sprintf() by snprintf() in lbxproxy to eliminate possible
- buffer overrun exploits (Egbert Eich).
- 255. KP_Decimal fixes to Czech and Slovak keybards
- (Jan Holesovsky <kendy@suse.cz>) (Egbert Eich).
- 254. Treat PCI-to-MCA and PCI-to_EISA bridges as PCI-to-ISA (Marc La France).
- 253. Correct the server's understanding of CardBus resource ranges
- (Marc La France).
- 252. Ignore unconfigured (and mis-configured) PCI-to-PCI and PCI-to-CardBus
- bridges (Marc La France).
- 251. Prevent infinite loops during VGA re-routing (Marc La France).
- 250. Add a framework for bus bridge drivers and use it to rework the handling
- of Sun's Simba P2P bridges (Marc La France).
- 249. Fix bdftopcf memory leak (Marc La France).
- 248. XVideo support for the i830 and i845G (David Dawes, Alan Hourihane).
- 247. Fix various bugs in the DRI support for the i830 and i845G
- (Keith Whitwell).
- 246. Major rework of the 2D i830/i845G support, including:
- - Improve VESA mode selection, and fix refresh rate selection.
- - Don't duplicate functions provided in the vbe modules.
- - Don't duplicate functions provided in the vgahw module.
- - Rewrite memory allocation.
- - Rewrite initialisation and save/restore state handling.
- - Decouple the i810 support from i830 and later.
- - Remove various unnecessary hacks and workarounds.
- - Fix an 845G problem with the ring buffer not in pre-allocated
- memory.
- - Fix screen blanking.
- - Fix some HW cursor glitches, and turn HW cursor off at VT switch
- and exit.
- - Don't attempt to use the i830's function 1 entity.
- - Fix problems with option handling.
- (David Dawes).
- 245. A "hammer" approach at ensuring font properties are freed properly
- (Marc La France).
- 244. Fix 'su' usage for FreeBSD in the default xdm config (Eric Anholt).
- 243. Fix a FreeBSD scrollwheel problem that shows up with gcc 3.1
- (Eric Anholt).
- 242. Make C++ libraries on FreeBSD get linked with $(CXX), fixing libGLU
- (Eric Anholt).
- 241. FreeBSD.cf updates, including enabling SSE/3DNow support (Eric Anholt).
- 240. Intel 830 and 845G DRI support, including i830 support updated for
- Mesa 4.x (#5288, Jeff Hartmann, 2D3D).
- 239. [SECURITY] Fix an Xlib problem that made it possible to load arbitrary
- code into privileged clients.
- 238. Add Xcursor library. Make Xlib use it. (Keith Packard)
- 237. Fix threaded libraries on Mac OS X 10.2 (A.1229, Marko Karppinen).
- 236. Add hardware accelerated GLX to XDarwin (Greg Parker).
- 235. Use Imake custom version variables in XDarwin startup message
- (Torrey T. Lyons).
- 234. Attempt to prevent PCI scans on non-PCI ix86 systems (Marc La France).
- 233. Allow master aborts on CardBus buses to complete normally during PCI
- scans (Marc La France).
- 232. Fix bug that prevented the server from restoring CardBus data properly
- (Marc La France).
- 231. Fix DEVID define and make it more generally available (Marc La France).
- 230. Fix bug in NetBSD PCI code (Marc La France).
- 229. Add an option to completely disable PCI scans (Marc La France).
- 228. Xterm patch #167 (Thomas Dickey).
- 227. Add CreateCursor request to Render extension (Keith Packard)
- 226. Change scanpci to not disable I/O too early (Marc La France).
- 225. Better error handling in xfs -ls argument parsing (Mordy Ovits).
- 224. Make loader ignore ELF objects that don't define any symbols (H. J. Lu)
- 223. Add a HasGcc3 imake symbol (Marc La France).
- 222. Enable threaded libraries on Darwin (Jeff Whitaker and Torrey T. Lyons).
- 221. Xaw documentation fixes (A.1218, Paul Vojta).
- 220. Add some mode collection/handling interfaces to the vbe module,
- which makes it easier for drivers to set modes via the video BIOS
- (David Dawes).
- 219. I830/845 Workaround for BIOSes which force 1MB stolen memory, and
- agpgart related fix (#5300, Abraham vd Merwe).
- 218. Add NetBSD specific PCI access functions for powerpc and alpha
- platforms (Charles Hannum).
- 217. Split bsd_video.c into architecture specific files, and merge NetBSD
- alpha and powerpc support there. (Matthieu Herrb, Simon Burge,
- Charles Hannum & other NetBSD developers).
- 216. Define CSRG_BASED for Darwin and fix xman so it works on Darwin
- (Torrey T. Lyons).
- 215. On Darwin, fix imake to find Gcc and correct config for RawCppCmd
- (Torrey T. Lyons).
- 214. Add functions to allow modules to query the core X server version
- and the version of its sub modules (David Dawes).
- 213. Fix scanpci's printing of 64-bit PCI bases (Marc La France).
- 212. Add missing dependency and regenerate xf86PciStdIds.h accordingly
- (Marc La France).
- 211. A more flexible way of dealing with ix86 motherboard chipsets that can
- only implement less than the full 256 PCI buses (Marc La France).
- 210. RAC-related fixups to ATI drivers and xf86SetOperatingState() call
- cleanups in most drivers (Marc La France).
- 209. Fix int10 miscompilation glitch on IA-64 (Marc La France).
- 208. Add support for Permedia3 (rev C) chips that use slightly different
- clock programming techniques (Jay Estabrook).
- 207. Fix Finder warnings about XDarwin plist format on Jaguar
- (Torrey T. Lyons).
- 206. Fix XDarwin build issues on Jaguar (Sean Fagan).
- 205. Fix Radeon DDC for non-Dell cards, and fix a radeon pci id-related
- build problem (#5326, Andrew C Aitchison).
- 204. Change the X server (and scanpci) to use the pci.ids file (from
- pciids.sf.net) for vendor/device descriptions (David Dawes).
- 203. Change XDarwin to use NSQuickDrawView instead of Carbon windows to
- get a QuickDraw graphics port for rootless windows (Torrey T. Lyons).
- 202. Add support for some missing 32-bit address modes to x86emu. Some
- video BIOSes use them, especially those for some of the integrated
- Intel chipsets, and this fixes int10/vbe support for these on
- platforms that use the emulator (David Dawes).
- 201. Add PCI ID for ATI Radeon Mobility M7 'LX' (#5233, Mike Harris).
- 200. Fix CrossCompile environment for Cygwin/XFree86
- (#5324, Alexander Gottwald, Harold Hunt).
- 199. ATI patch to:
- - Fix Dell OEM VE card support
- - Add better clone mode support
- - Fix large panel (>= 1600x1200) detection and initialization problems
- - Remove "PanelSize" and "CrtScreen" options since they are no longer
- needed with new CloneMode and improved flat panel support
- - Add "DDCMode" option to detect and use DDC modes
- - Add "PanelOff" option to disable panel on laptops
- - Fix corrupted console problem
- - Other misc fixes
- (#A.1043, Hui Yu@ATI).
- 198. Remove -DNO_TCP_H from cygwin.cf for Cygwin/XFree86 (#5320, Harold Hunt).
- 197. Major updates to Cygwin/XFree86.
- - fix depth 24 issues.
- - fix the handling of the DirectDraw module.
- - disable the use of the LAYER/RANDR extension.
- - lots of bug fixes.
- (#5318, #5317, Harold L. Hunt, Alan Hourihane).
- 196. When using the vesa driver and the DisplaySize option the server
- would crash with a floating point exception due to a divide by zero
- in miscreeninit() (#5298, Mike A. Harris).
- 195. The function MoveLine in lib/Xaw/TextAction.c sometimes attempts to
- read uninitialized memory when hit ctrl-N in a Text widget to move to
- the next line (#5245, Johnathan Kamens).
- 194. Adjust -probe for change in default stderr verbosity (Marc La France).
- 193. Radeon patch for Xv on all known Radeon devices (James Ralston and
- Keith Packard).
- 192. New XDarwin application icon (Michael Oland).
- 191. Dead strip unneeded code in rootlessValTree.c and other miscellaneous
- XDarwin code cleanup (Greg Parker and Torrey T. Lyons).
- 190. Lots of Cygwin/XFree86 cleanups and fixes (#5304, Harold Hunt)
- 189. Fix rootless XDarwin crash when resizing a window with negative x
- coordinate (Torrey T. Lyons).
-
-XFree86 4.2.99.1 (7 June 2002)
- 188. Fix some build problems when building with shared libraries disabled
- (David Dawes).
- 187. Update the magellan input driver and turn it on in the build process
- (#A.1024, Christoph Koulen).
- 186. Add Peritek Borealis support to the I128 driver (Robin Cutshaw).
- 185. Modify the r128 and radeon drivers to use fbdev's DPMS support when
- fbdev is enabled (#5219, Michel Dänzer).
- 184. Add support for the composite sync mode flag to the radeon driver
- (#5219, Michel Dänzer).
- 183. Add a mkfontscale utility for creating fonts.scale files (#5213, 5214,
- Juliusz Chroboczek).
- 182. Add a 1152x768 mode suitable for Titanium PowerBooks to the set of
- build-in modes (#5212, Michel Dänzer).
- 181. Add support to xkbcomp and libxkbfile for composing multi-layout
- keyboard maps from partial "single layout" files. This allows
- the XkbLayout to be specified as a comma-separated list of single
- layout names. Note: new "single layout" symbol maps aren't available
- yet. (#5210, Ivan Pascal).
- 180. Fix Xv endianess problem with the Radeon driver (#5207, Guido Guenther).
- 179. Updates to the Finnish xkb map, including:
- - add ISO-8859-15 missing symbols ([zZsS]caron)
- - reorganize some special symbols (such as paragraph, cent, division)
- - map AltGr+SPCE as space, nobreakspace comes way too often by accident
- - minor white space/comment cleanups
- (#5197, Marko Myllynen).
- 178. Add an option to the r128 driver for enabling DMA for Xv image transfers
- (#5195, Michel Dänzer).
- 177. Make the 'distclean' target remove depend files (#5194,
- Carlos A M dos Santos).
- 176. Fix bad usage of "UseInstalled" in FreeBSD.cf (#5192,
- Carlos A M dos Santos).
- 175. Several xkb layout updates:
- - Added other Armenian layouts.
- - Added Swedish dvorak layout.
- - Fixed typo in "la" file.
- - Added EuroSign in Dutch keyboard.
- - Added a "comma" variant for "ro" keyboard allowing to type real comma
- below Romanian letters.
- - New file "ro2" with the real Romanian layout (the file "ro" is not a
- Romanian keyboard, but a modified US one that has been hacked to
- include Romanian letters).
- (#5191, Pablo Saratxaga).
- 174. Fix makedepend so that it can parse a unary '+' operator (#5185,
- Mark Snitily).
- 173. Fix a typo in Xvesa's emulation of instructions forbidden in vm86
- mode (#5184, Juliusz Chroboczek)
- 172. Fix a bounds check in Xlib's Region code (#5183, Owen Taylor).
- 171. Fix LIBXML2LIBDIR name clash in lib/Imakefile (#5180, ISHIKAWA Mutsumi).
- 170. Avoid a problem with setfontdirs when run in some locales (#5179,
- ISHIKAWA Mutsumi).
- 169. A little tuning for XtAppPeekEvent() (#5178, Dan McNichol).
- 168. Add a command line option to luit to specify the encoding (#5177, 5181,
- Tomohiro Kubota).
- 167. A fix for luit's command line argument handling (#5173, Tomohiro Kubota).
- 166. Add support to luit for some more 8-bit encodings (#5171,
- Juliusz Chroboczek).
- 165. Add an option to luit to enable using GL codes instead of GR codes
- after a single shift for keyboard input (#5170-5172, Tomohiro Kubota
- and Juliusz Chroboczek).
- 164. Fix an fbdev driver crash when the VT isn't active (#5169,
- Michel Dänzer).
- 163. Fix a bug that resulted in XwcTextPropertyToTextList() storing an
- incomplete list (#5168, Tassia St. Germain, for X.Org).
- 162. Add "ISO8859-16" to the registry (#5167, Tassia St. Germain, for X.Org).
- 161. A revised Greek xkb layout, including a three-level "extended"
- variant, and a "polytonic" variant (#5165, Vasilis Vasaitis).
- 160. Add support for an el_GR.UTF-8 locale, including a compose file with
- support for polytonic Greek text (#5165, Vasilis Vasaitis).
- 159. Add missing zh_CN XI18N_OBJS file (#5164, Yong Li).
- 158. Make xfs chdir to "/" before fork()ing (#5162, Mike Harris).
- 157. Add some reference counting for Xlib's i18n modules, preventing
- a module getting unloaded while it's still in use (#5160, Owen Taylor).
- 156. Update for SCO OpenServer support (#5158, Kean Johnston).
- 155. Add aliases for the Brazilian Portuguese locale as defined on FreeBSD
- (#5157, Carlos A M dos Santos).
- 154. Recognise the en_UK.ISO8859-15 and en_US.ISO8859-15 locales (#5156, 5186,
- Matthias Scheler).
- 153. Some cleanups for the UTF-8 Compose file, including:
- - Better support for Greek
- - Typo fixes, including incorrect character literals and keysyms.
- (#5154, Vasilis Vasaitis).
- 152. Modify Xt's default fallback font pattern to work better in locales
- where the current one fails to find a useful font (#5152,
- Tomohiro KUBOTA).
- 151. Updates to bdf/misc UCS fonts, and generate ISO8859-16 subsets
- (#5147, Markus Kuhn).
- 150. Fix some empty delay loops and jiffie wrap bugs in the i830 drm driver
- (#5149, Arjan Van de Ven).
- 149. Fix a potential NULL dereference in the drm kernel module (#5148,
- Andreas Schwab).
- 148. Major OS/2 support update (#5119, Holger Veit).
- 147. Fix mode setting in DGA on the Rage128 & Radeon drivers (Alan Hourihane).
- 146. Build libXt as a flat namespace image on Darwin (Torrey T. Lyons).
- 145. Install the bitmap file xc/programs/bitmap/Stipple as Stippler on file
- systems that are not case sensitive (Torrey T. Lyons).
- 144. Fix enabling of MMIO window on BladeXP desktop chips (Alan Hourihane).
- 143. Due to bugs in the CyberBladei7/i1 series that cause offset problems,
- we're disabling the hardware cursor (for now) (Alan Hourihane).
- 142. Fix Xft-def.cpp file for Cygwin/XFree86 (#5283, Harold Hunt).
- 141. Server support for OpenBSD/sparc64 (Jason Wright, Matthieu Herrb).
- 140. Alignment fixes for Xvideo on the Permedia3 (Alan Hourihane).
- 139. lndir fix for paths containing '//' (H. J. Lu).
- 138. Fix blank display problem in trident driver for older TGUI series
- chips, and a few Xv cleanups too (Alan Hourihane).
- 137. Enable MIT-SHM extension in Xnest server (#A.795, Steve Schwarz).
- 136. Fix typo in Rage128 DGA driver (#5187. Charles M. Hannum).
- 135. Fix enabling of DRI when XvMC is disabled (#5208, Matthew Sottek, Intel).
- 134. Fix HW Cursor handling in vmware driver (#5193, Jeremy, VMWare).
- 133. YUV handling updates for v4l module. Can now handle multiple formats
- and find common format for both videocard and kernel.(#5196, Gerd Knorr).
- 132. Savage driver updates (#5203, Tim Roberts).
- 131. Drop the indirect buffer after ScreenInit, fixes corruption and
- kernel error messages. (#5199, Michel Dänzer).
- 130. Add Polygon support to Render extension (Carl Worth, Keith Packard)
- 129. Add Intel i845G 2D support to the i8x0 driver, DRI is disabled.
- (#A.1062, Graeme Fisher, 2D3D).
- 128. Fix RGB/BGR inversion problem and screen blanking in the glint
- driver (Alan Hourihane).
- 127. Add MIT-SCREEN-SAVER extension docs (Alan Coopersmith).
- 126. Fix problems opening /dev/fb0 in fbdevhw layer (#5229, Michel Dänzer).
- 125. Update the apm driver (#5227, Loic Grenie).
- 124. Update the Japanese localization of XDarwin (Toshimitsu Tanaka).
- 123. Symbol table cleanup, leaving xf86GetPointerScreenFuncs() as the only
- common/xf86Cursor.c entry available to modules (Marc La France).
- 122. Fix VidMode-generated mode switches by making them go through (almost)
- the same code path as keyboard-generated mode switches (Marc La France).
- 121. Allow AGP apertures to overlap with other BIOS-assigned PCI resources
- (Marc La France).
- 120. Indent'd most of xterm's C code (Thomas Dickey).
- 119. Major Radeon driver code cleanup (Kevin Martin).
- 118. Radeon Xv fixes and video key support added (Keith Packard).
- 117. DPMS support for DFP/LCD and second head added for Radeon (Hui Yu@ATI).
- 116. Option to disable line acceleration added since Radeon only has 14 bits
- for lines and clipping. This will be changed to an XAA option for 14
- bit support in the future (Hui Yu@ATI, Kevin Martin).
- 115. Radeon DDC and DFP handling improvements (Hui Yu@ATI).
- 114. Fixes for DRI lockup problems with Radeon 7500/VE and the AMD 761
- chipset (Hui Yu@ATI).
- 113. Radeon PLL routines rewritten with ATOMIC_UPDATE enabled (Hui Yu@ATI).
- 112. Clone mode added to Radeon driver (not yet functional and disabled
- by default) (Hui Yu@ATI, Kevin Martin).
- 111. Fix usage of BuildBinTop in Cygwin/XFree86 (#5223, Harold Hunt).
- 110. Implement WarpCursor for Cygwin/XFree86, and use GetProcAddress
- instead of relying on ddraw.dll (#5220-#5222, Harold Hunt).
- 109. Fix bug that prevented the vesa driver from accessing VGA CRTC registers
- (Marc La France).
- 108. New pre-processor files for expat, fontconfig and rename of
- OSmesa-def.cpp to OSMesa-def.cpp (#5215-#5218, Alexander Gottwald).
- 107. Rework ati, atimisc, r128 and radeon module versioning (Marc La France).
- 106. Code clean up for the original Rage LT (Marc La France).
- 105. An attempt at disabling display switches while the server is running on
- an LT Pro or Mobility M1 (Marc La France).
- 104. Make atimisc, r128 and radeon modules register the symbols they reference
- at module load time, rather than PreInit() (Marc La France).
- 103. Fix rounding error in Mach64 DSP calculation (Marc La France).
- 102. Convert xmh to ANSI C (Thomas Dickey).
- 101. Xterm patch #166 (Thomas Dickey).
- 100. Fix keyboard beeps on Cygwin/XFree86 (#5211, Harold Hunt).
- 99. Fixed i810 crash on vt switch due to call to Sync() while switched away
- (Andris Pavenis).
- 98. Fixed MGAG550 HW Cursor (Laure-Amelie Couturie).
- 97. Added Xv support to neomagic driver (Shigehiro Nomura).
- 96. Implemented cross compile environment (Egbert Eich).
- 95. Added AMD x86-64 architecture support (Egbert Eich).
- 94. Fixed memory leaks in xkb code (Egbert Eich).
- 93. Fixed several memory leaks in the config file parser and initialization
- routines (Egbert Eich).
- 92. Added CardBus bridge support (Egbert Eich).
- 91. Fixed strdup() define in glx (Egbert Eich).
- 90. Extended xf86misc extension to support changing the mouse device
- (Egbert Eich).
- 89. Replaced strdup() in xf86Configure.c with xalloc()/strcpy() to avoid
- conflicts when using internal malloc (Egbert Eich).
- 88. Extended memory debugging: Added signal handler to trigger a memory
- debugger dump on SIGUSR2 when compiled with memleak support
- (Egbert Eich).
- 87. Set vtSema to FALSE when suspended by APM to catch calls to 2D accel
- functions (Egbert Eich).
- 86. Implemented mouse protocol detection by analyzing data stream
- (Egbert Eich).
- 85. Added PnP mouse detection for PS/2, ImPS/2 and older MS serial mice
- (Egbert Eich).
- 84. Fixed gamma correction code for Trident 9397 (Alan Hourihane).
- 83. Fixed C&T driver to avoid initialization of video in non-linear mode
- (Egbert Eich).
- 82. Changed C&T driver to allow video even if acceleration is disabled
- (Egbert Eich).
- 81. Attempt to implement a more consistent handling of HW cursor in C&T
- driver (Egbert Eich).
- 80. Fixed MGA driver to make HALlib work with VESA framebuffer modes
- (Egbert Eich).
- 79. Reworked Rendition driver (Egbert Eich).
- 78. S3 Virge driver: added minimal gap between SyncStart and HDisplay to
- avoid video lockups (Egbert Eich).
- 77. Fixed memory leaks in S3 Savage driver (Egbert Eich).
- 76. Modified several drivers to do int10 initialization using the
- VBE functions instead of calling int10 directly (Egbert Eich).
- 75. Fixed video support and mode initialization in Silicon Motion driver,
- removed wait for v-retrace (Egbert Eich).
- 74. Misc fixes to SiS driver (Thomas Winischhofer).
- 73. Added support for 1400x1050 screen in Trident driver (Egbert Eich).
- 72. Fixed several video issues for Trident CyberBladeXP chips (Egbert Eich).
- 71. Added probe for Tseng ISA chips (Egbert Eich).
- 70. Added 'KGAUniversal' option to generic vga driver which changes handling
- left overscan to work also on chips with C&T core (ie all C&T and Intel
- graphics chips) (Egbert Eich).
- 69. Modified int10 code to map area between V_BIOS and SYS_BIOS instead of
- copying it. Copying causes problems if legacy devices map MMIO
- registers there (Egbert Eich).
- 68. Implemented an extended int10 init function to allow passing flags
- (Egbert Eich).
- 67. Implemented optional handling of BIOS video mode scratch area in int10
- code (Egbert Eich).
- 66. Again modified MTRR range splitting (Egbert Eich).
- 65. Added funtions to VBE to save and restore a video mode (Egbert Eich).
- 64. Added missing commas to symbols/us_intl (Hans Lunsing).
- 63. Added Ungherese (qwerty) support (Koblinger Egmont).
- 62. Added Euro symbol for hungarian kbd layout (Koblinger Egmont).
- 61. Build with libcurses on Darwin for forward compatibility
- (Jordan Hubbard).
- 60. Add Trident CyberBladeXP acceleration (Alan Hourihane).
- 59. Major XDarwin rootless mode rewrite:
- - Use Carbon to draw directly to windows' backing buffers, rather
- than "triple" buffering with Core Graphics.
- - Reorganized Xserver/hw/darwin directory structure to separate out
- legacy support for Mac OS X 10.0.x.
- (Torrey T. Lyons and Greg Parker).
- 58. Fix RGB/BGR inversion problem on Permedia3 chips (Alan Hourihane).
- 57. Fix server link problem that shows up on ppc (#5205, Guido Guenther).
- 56. Restore effect of option "NoSilkenMouse" (Marc La France).
- 55. Fix some nForce graphics regressions caused by recent flat panel and
- Mac updates to the nv driver (Mark Vojkovich).
- 54. Recognise the "Absolute" keyword that was documented in the
- XF86Config man page (David Dawes).
- 53. Fix the man page information about Absolute screen positioning in
- the ServerLayout section (David Dawes).
- 52. SunOS changes to xedit's lisp interpreter (Marc La France).
- 51. Support the Ti 3026 ramdac with 3DLabs Permedia found on some
- AccelStar boards (Alan Hourihane).
- 50. Move int10 softbooting furthur up in the glint driver to post
- much earlier (Alan Hourihane).
- 49. Fix bug that sometimes caused makedepend to forget #define'd symbols
- (Marc La France).
- 48. MIT-SHM updates (Roberto Zunino, Matthieu Herrb).
- 47. Import Mesa-4.0.1, and resync with the DRI trunk which is now based
- on this (Keith Whitwell, Brian Paul, Alan Hourihane, David Dawes).
- 46. Mga driver updates:
- - Don't try dual-head mode with the G400 unless the mga_hal module
- is loaded.
- - Distinguish between the G400 and G450 when showing the chipset in
- the log.
- - Update the mga man page for supported hardware and dual-head
- support. Futher updates are needed to document all of the
- drivers's options.
- (David Dawes).
- 45. Add -Wundef when compiling the tree with GCC >= 2.8 (Marc La France).
- 44. Macintosh flat panel fix in the "nv" driver (Mark Vojkovich).
- 43. XDarwin fixes and improvements for full screen Quartz mode:
- - Pull full screen specific code out of generic Quartz support.
- - Install new colormaps correctly with PseudoColor.
- - Release the screen immediately when closing down.
- - Do not try to release the screen when closing down in rootless mode.
- (Torrey T. Lyons).
- 42. Reimplement Xft library on top of new fontconfig library (Keith Packard).
- 41. Resync with the final Mesa-3.4.x-based DRI trunk.
- 40. Add support for wscons bell (Jason Wright).
- 39. Fix IBM-reported bug that could cause PCI bus lockouts with second
- generation integrated Mach64 controllers (Marc La France).
- 38. Rework ATI driver's registration of symbols with the loader
- (Marc La France).
- 37. In the ATI driver, add option "CrtDisplay" to force CRT display in a
- dual display situation (Marc La France).
- 36. In the ATI driver, rename option "CrtScreen" to "NoPanelDisplay", keeping
- "CrtScreen" as a private option for compatibility (Marc La France).
- 35. Document X_NOT_IMPLEMENTED (Marc La France).
- 34. NetBSD teeny OS version handling improvement in imake (#5176,
- Matthias Scheler).
- 33. Build I2C support before building drivers (Marc La France).
- 32. Fix a problem related to reserving the overlay key in the default
- colormap in 24+8 mode. This caused some clients using the 8-bit
- visuals to fail (David Dawes).
- 31. [SECURITY] Zlib error handling fix (Mark Adler).
- 30. Put back XDarwin's byte-ordering fix for reading keymappings on
- Darwin x86 that was inadvertently dropped (Rob Braun).
- 29. Fix Big Endian hardware cursor bug on GeForce3 (Mark Vojkovich).
- 28. Experimental flat panel support in the "nv" driver. GeForce2 Go
- should work now (Mark Vojkovich).
- 27. XDarwinStartup improvements:
- - Auto-detect proper mode to run XDarwin.
- - Find XDarwin.app with Launch Services.
- - Add XDarwinStartup man page.
- (Torrey T. Lyons).
- 26. Localize XDarwin credits in French (Olivier Verdier) and Portuguese
- (FabrÂ’cio L. de Castro).
- 25. Turn off XFree86-Misc and VidMode extensions for XDarwin
- (Torrey T. Lyons).
- 24. Localize a few missing strings in XDarwin preferences (Torrey T. Lyons).
- 23. GeForce4 support (Mark Vojkovich).
- 22. Add IA-64 460GX PCI IDs (Marc La France).
- 21. Some vesa driver updates:
- - Use the common layer's mode validation functions, which gives
- mode selection behaviour more consistent with other drivers.
- - Don't force the depth 24 framebuffer bpp. Instead check what
- framebuffer layouts are supported by VBE, and and choose the
- layout appropriately.
- - fb handles 24/32 fb/pixmap layout conversion, so don't use
- the xf24_32bpp module.
- - shadow + fb at depth 4 needs the bpp set to 8.
- (David Dawes).
- 20. Fix some misleading messages about why modes aren't available
- (David Dawes).
- 19. Fix for `hostname` issue on Linux (Marc La France).
- 18. Fix startx script for ksh (Phillip B. Bruce).
- 17. Fix Emulate3Buttons for wsmouse protocol on NetBSD and OpenBSD
- (Matthieu Herrb).
- 16. Add Portuguese localization of XDarwin front end
- (FabrÂ’cio L. de Castro).
- 15. Fix mouse Protocol "Auto" for SunOS (Marc La France).
- 14. Relocate all driver low memory accesses (atimisc module not yet done)
- (Marc La France).
- 13. Make driver I/O relocatable (atimisc, s3, sis and tseng not yet done)
- (Marc La France).
- 12. PCI domain changes for SunOS/SPARC64 (Marc La France).
- 11. PCI domain changes for Linux/SPARC64 (#4653, David S. Miller,
- Marc La France).
- 10. Temporary workaround for IA-64 (Marc La France).
- 9. Fix SIGSEGV when printing modes that have no modifiers (Marc La France).
- 8. Revert the ATI driver's composite sync default to off (Marc La France).
- 7. Add a note to the messages that get printed when a signal is caught
- during initialization (which includes X -configure) that reported
- unresolved symbols might not be the reason for the server aborting
- (David Dawes).
- 6. Fix symbol registration in some drivers, which reduces the number of
- symbols reported as "unresolved" when 'X -configure' crashes
- (David Dawes).
- 5. Fill in names for BIOS modes in the vesa driver's mode pool that weren't
- otherwise assigned names (David Dawes).
- 4. Fix an unresolved symbol in libGLU.so that shows up when building it
- with gcc-3 (David Dawes).
- 3. Fix invalid code caused by a memcpy() macro being split by a directive
- (#5150, Sami Farin).
- 2. Fix incorrect symbol prefixing with Xlib's i18n modules on Solaris
- (Keith Packard, David Dawes).
- 1. Don't try to print mode names when the name is NULL (David Dawes).
-
-XFree86 4.2.0 (18 January 2002)
- 690. Workaround for hardware bug that prevents older ATI 3D Rage adapters from
- being assigned to XF86Config device sections (Marc La France).
-
-XFree86 4.1.99.7 (17 January 2002)
- 689. Fix bug introduced in snapshot 4.1.99.5 causing XDarwin's PseudoramiX
- extension to always be disabled (Torrey T. Lyons).
- 688. Disable the pipe check for stdout/stderr that was added in the previous
- snapshot because it looks like it might cause too many problems
- (David Dawes).
- 687. Update the Arabic (ar) XKB keyboard map (#5145, Arabeyes team).
- 686. Update the Russian (ru) XKB keyboard map, adding two new variants
- ("typewriter" and "phonetic") (#5143, Ivan Pascal).
- 685. Remove the lt_a and lt_p XKB keyboard maps (#5139, Nerijus Baliunas).
- 684. Disable the DRI and print a warning message for Radeon 8500 cards
- until they are supported (Kevin Martin).
- 683. Properly detect when no BIOS is present on Radeon cards (#4978,
- Charles Hannum, Kevin Martin).
- 682. Delay before restoring VGA registers for Radeons to "fix" VT switch
- problems (Kevin Martin).
- 681. Add new PCI IDs from ATI (Kevin Martin).
- 680. Update the Xinstall.sh script to create version compatibility links for
- shared freetype libraries when needed (David Dawes).
- 679. Update Freetype2 shared library versions to match the versions libtool
- generates (Keith Packard).
- 678. Doc updates (lots of people, includes #5142, 5144)
-
-XFree86 4.1.99.6 (14 January 2002)
- 677. Change the default verbosity level for stderr from 1 to 0 (David Dawes).
- 676. Set the X server's stderr to non-blocking for non-root users
- (David Dawes).
- 675. Don't allow the X server to start when stdout or stderr is a pipe for
- non-root users (David Dawes).
- 674. Add OpenGL man pages.
- 673. Avoid duplicate symbol problem with xkbevd on some platform (#A.769,
- Nicholas Leippe).
- 672. Updated Ukranian XKB symbols file (#A.764, Andriy Rysin).
- 671. Fix ELF loader for ARM architecture (#5138, Phil Blundell and
- Adam C. Powell IV).
- 670. Fix a race condition in the Linux kernel DRM code (#5136,
- Arjan van de Ven).
- 669. Fix DGA support in the s3virge driver (#5135, Kevin Brosius).
- 668. Add XvBskew, XvRskew to adjust skew values for centering of an
- Xvideo window for the trident driver (Alan Hourihane).
- 667. Fix loader for Motorola 68k machines (Alan Hourihane).
- 666. Fix very high resolution modes (e.g. 1600x1200@16bpp) in the
- Trident driver (Alan Hourihane).
- 665. -
- 664. Quick hack to allow GLX to be included in non-XFree86 servers
- (Marc La France).
- 663. More ROP_NEEDS_SOURCE fixes for Savage chipsets (Egbert Eich).
- 662. Improvements to the SiS driver which should fix a lot of the 630
- issues (Thomas Winischhofer).
- 661. In XDarwin IOKit mode, ignore screens sized 1x1 (Torrey T. Lyons).
- 660. Some missing QNX fixes (#5121, Frank Liu).
- 659. Update XDarwin man page and usage message for XFree86 4.2.0. Add
- XFree86 man page to XDarwin distribution (Torrey T. Lyons).
- 658. Add bn_BD.UTF-8 to locale.dir (Taneem Ahmed).
- 657. Fix luit not dropping priviledges when run with the -c flag (#5134,
- Juliusz Chroboczek).
- 656. Fix unresolved symbol and loader symbol registration problems in the
- i810 driver that were introduced with the i830 support (David Dawes,
- Abraham vd Merwe).
- 655. Fix sparklies problem for other Trident *BladeXP chipsets
- (Alan Hourihane).
- 654. In XDarwin IOKit mode, ignore screens that can not provide the requested
- size, depth, or refresh rate instead of generating a fatal error
- (Torrey T. Lyons).
-
-XFree86 4.1.99.5 (7 January 2002)
- 653. Fix some typos in the DRI README (#A.757, Andreas Mohr).
- 652. xon.sh path setting from 3.3.6 (#A.756, Marc Herbert).
- 651. Fix a problem with the Radeon driver that was causing the sync polarity
- to be ignored (#A.753, Vedran Rodic).
- 650. Set the max clock correctly for the G550 second head (#5133,
- Luugi Marsan).
- 649. Fix a Radeon DRI lockup problem (#5128, Steven Pritchard).
- 648. Back out some mga_g450pll.c changes that cause problems on at least
- some G450 configurations (#5122, David Woodhouse).
- 647. Fix some xterm build warnings on *BSD (David Dawes, Thomas Dickey).
- 646. Some QNX4 fixes/updates (#5121, 5124, 5130, 5131, Frank Liu).
- 645. Prefer POSIX O_NONBLOCK to O_NDELAY (when defined) in lib/dps (#5121,
- Frank Liu).
- 644. Fix portability problem with XpmI.h (based on #5121, Frank Liu).
- 643. Only use SA_RESTART in xterm when it's available (#5121, Frank Liu).
- 642. Work around Watcom compiler bug that shows up when building Mesa's
- stencil.c (David Dawes, based on #5121, Frank Liu).
- 641. Handle __inline and __inline__ in compiler.h for non-GNU compilers,
- which makes it more likely that drivers will build with other compilers
- (David Dawes, based on #5121, Frank Liu).
- 640. Build fixes for xedit/lisp. Don't define NEED_SNPRINTF when not needed.
- Avoid a double recursion into subdirs (#5123, Matthieu Herrb).
- Added code for systems without getpagesize.
- 639. Fix the xdm's handling of keys, allowing keypad keys to work (#A.662,
- Servaas Vandenberghe).
- 638. Fix hang when quitting XDarwin before starting X server
- (Torrey T. Lyons).
- 637. Don't add XDarwin's PseudoramiX extension with only one screen
- (Greg Parker).
- 636. Add Spanish localization of XDarwin help file (Pablo Di Noto).
- 635. Improve XDarwinStartup's error reporting (Torrey T. Lyons).
-
-XFree86 4.1.99.4 (28 December 2001)
- 634. Update the ati/radeon driver to recognise the All-in-Wonder 8500's
- ID (#5117, Vladimir Dergachev).
- 633. Fix bug where a pointer may be checked without being intialized in xman
- (#5120, Martin Husemann).
- 632. Add an informational message to the radeon driver when LCD/DFP mode
- validation fails (#5118, Vladimir Dergachev).
- 631. Handle the ATI Rage128 "PP" variant like the "PR" variant (#4982,
- Mike Harris).
- 630. Fix a LynxOS on PowerPC build problem (#A.746, Stuart Lissaman).
- 629. Fix the names of the Northern Saami keyboards (#A.742,
- Petter Reinholdtsen).
- 628. Add Xinerama info to xdpyinfo (#A.741, Greg Parker).
- 627. Fix an xdm problem caused by not handling an interrupted read (#A.728,
- Darren Marshall).
- 626. Add functions completing text control for Render. Bump XRender library
- minor version (Keith Packard).
- 625. Add XKB layout info for a newer Logitech iTouch keyboard (#A.727,
- Dimitromanolakis Apostolos).
- 624. Fix a problem that shows up with the summa tablet driver when using
- a Genius EasyPen (#A.714, Anders Melchiorsen).
- 623. Fix for VT switch problem with the S3 driver (based on #A.677,
- Juergen Lesny).
- 622. Remove some more spurious entries in the KSC 5601 encoding file (#A.678,
- Jungshik Shin).
- 621. Fix for APM problem on devfs-based Linux systems with APM in a kernel
- module (#A.663, Denis Zaitsev).
- 620. Update the mga Xv double buffering to match the more recent submission
- (#4976, Didier Gautheron).
- 619. Fix a bug in the XKB Slovak (sk) layout (#A.621, Juraj Bednar).
- 618. Fix a small window when a SIGIO may be received without a handler
- installed (David Dawes, based on #A.620, Michel Lespinasse).
- 617. ISO 8859-{1,7,15} Compose file updates and fixes (#5114,
- Vasilis Vasaitis).
- 616. In XDarwin multi-monitor IOKit mode, read screen location from the
- kernel (Torrey T. Lyons).
- 615. Update XDarwin credits file (Torrey T. Lyons).
- 614. Fix various XDarwin crashes in multi-monitor rootless mode by using
- a new "light" version of PanoramiX/Xinerama called PseudoramiX
- (Gregory Parker).
- 613. Fix some typos in the X.Org INSTALL doc (#5113, Chris Pepper).
- 612. Fix an bug that prevented the releasing of XvMC memory on exit (#5112,
- Matthew J. Sottek).
- 611. Some Xprint build warning fixes (David Dawes).
- 610. Xprt PCL3 support (#5111, Mark Snitily, from X11R6.6).
- 609. Xprt PostScript bitmap cache (#5110, Chris Bare, from X11R6.6).
- 608. Updates for the Romanian (ro) XKB map (#5108, Marius Andreiana).
- 607. Update s3virge docs (#5107, Kevin Brosius).
- 606. Disable pixmap24 option for Permedia3/4/R4 as the chip doesn't support
- this (Alan Hourihane).
- 605. Fixed a infinite loop in the i2c code.
- 604. Fixed a Sig11 problem in siliconmotion driver (Egbert Eich).
- 603. Fixes to silicon motion driver:
- - gamma correction for 24 bit true color mode.
- - XAA: clipping rectangle was clipped to visible screen, so offscreen
- pixmaps could not been drawn at with accelerated drawing functions.
- - in SMI_ScreenInit frame buffer size calculation for video changed.
- - smi_video: partly rewritten.
- - Support for 7111
- - interlaced video via
- - XF86Config Option "Interlaced" or
- - attribute XV_INTERLACED (Corvin Zahn).
- 602. Add French localization of XDarwin help file (Olivier Verdier).
-
-XFree86 4.1.99.3 (19 December 2001)
- 601. Change the property Xprint uses to identify pmf printer internal fonts
- to avoid a clash with DPS (#5106, Chris Bare, from X11R6.6).
- 600. Fix a C type aliasing bug in xkbcomp (#5104, Jakub Jelinek).
- 599. Fix a bug in Xprint's PS output code that was over-optimizing out
- clip change requests (#5102, Chris Bare, from X11R6.6).
- 598. Improved error handling for Xprint's -XpFile option (#5101, 5105,
- Chris Bare, from X11R6.6).
- 597. Add higher resolution options to the Xprint postscript printer support
- (#5096, Chris Bare, from X11R6.6).
- 596. BuildLoadableXlibI18n should be keyed off "SharedLibX11" rather than
- "BuildX11Lib" (#5095, Ernie Coskrey).
- 595. Fix a luit inconsistency between the default data used when a
- locale is unknown and the data used by ISO 8859-1 locales (#5092,
- Juliusz Chroboczek).
- 594. Add eo_EO locale entries, which is what GNU libc 2.2 uses for the
- Esperanto locale (#5091, Juliusz Chroboczek).
- 593. Fix an Xprt page handling problem (#5090, Chris Bare, from X11R6.6).
- 592. Update the X.Org release number from 6.5.1 to 6.6 in various
- documents and header files (#5089, 5100, Chris Bare, from X11R6.6).
- 591. Recognise __SVR4 as an alternative for SVR4 in Xosdefs.h (#5087,
- Chris Bare, from X11R6.6).
- 590. Cleanup some header files to make them more C++ friendly (#5086, 5088,
- Chris Bare, from X11R6.6).
- 589. Update the driver status document (#5085, Branden Robinson).
- 588. Fix the SiS drm driver (#5084, Torsten Duwe).
- 588. Fix Trident driver pitch values when accelerator is in use, applies
- to Image and Blade series chips (Alan Hourihane).
- 586. Minor bugfix to SiS driver, restructured VT switching code
- (Egbert Eich).
- 585. Attempt to fix flickering in 24bpp on Trident CyberBladeXPAi1
- (Egbert Eich).
- 584. Fixed UTF8lib support (Mike Fabian).
- 583. Re-instate makedepend's recognition of backslash line terminations
- (Marc La France).
- 582. Add proper reference counting to the XvMCContext so that destroying
- the context before destroying associated surfaces is handled correctly
- (#5083, Matthew J. Sottek).
- 581. Fix the xtt (X-TrueType) font module so that it will recognise
- fonts with upper-case suffixes (".TTF" and ".TTC") (#5082,
- ISHIKAWA Mutsumi).
- 580. Use uname instead of hostname in rstart and xon scripts for portability,
- plus some other rstart and xon fixes (#5081, Chris Bare, from X11R6.6).
- 579. Some newport driver cleanups and fixes (#5080, 5103, Guido Guenther).
- 578. Fix XagNsingleScreen definition and some related side-effects (#5077,
- Chris Bare, from X11R6.6).
- 577. Fix some doc typos, and remove references to the non-existent
- shadowfb(4) man page (#5076, David Krause).
- 576. Pitch calculation updates for the r128 driver (#5074, Michel Dänzer).
- 575. Updates for VMware SVGA programming documentation (#5073,
- Jeremy (VMware)).
- 574. Fix cases where makedepend reports the wrong line number and file when
- an error occurs (#5072, Mark Snitily, from X11R6.6).
- 573. Fix differences in libXt behaviour when using poll() compared with
- when using select() (#5071, Chris Bare, from X11R6.6).
- 572. Some warning cleanups for Tru64 (#5069, Antti Tapaninen).
- 571. Fix a typo in the mt_us keymap entry (#5067, Nerijus Baliunas).
- 570. Add some missing UNDEFINE lines to the iso8859-11 and tis620-2
- encoding files (#5065, 5066, Theppitak Karoonboonyanan).
- 569. Some Luxi font updates:
- - update the Type 1 versions to fix a UID-related bug and cover more
- glyphs
- - update the TTF fonts.scale file to include ISO 8859-13
- - update the docs to properly reflect the fonts' glyph coverage
- (#5064, B&H, Juliusz Chroboczek).
- 568. Fix "The Open Group" copyright notices to reflect the change in
- post R6.4 licensing (#5093, Mark Snitily, from X11R6.6).
- 567. Added debugging helpers (Egbert Eich).
- 566. Added support for the Trident CyberBladeXPAi1 (Egbert Eich).
- 565. Fixed Mono8x8Fill problem in S3 Virge and Savage drivers (Egbert Eich).
-
-XFree86 4.1.99.2 (12 December 2001)
- 564. Fix XDarwin GetImage bug on screens other than 0 in rootless mode
- (Gregory Parker).
- 563. Fix acceleration, hw cursor and console restoration in the "nv" driver
- on PowerPC (Mark Vojkovich).
- 562. Fix console switching on r128 & radeon drivers using FBDev (#5075,
- Benjamin Herrenschmidt (radeon), Michel Dänzer (r128) ).
- 561. Implement double buffering for XVputimage in the mga driver (#A.601,
- Didier Gautheron).
- 560. Fix a wheel emulation problem that prevented delivery of button
- events when the wheel button was the same as one of the emulated
- button (#A.600, Antonio Larrosa Jiménez).
- 559. Fix some 'make install.sdk' problems (#A.586, Stanislav Brabec).
- 558. Fix mga DGA when UseFBDev is enabled (#A.584, Wayne Whitney).
- 557. Fix dri module build when BuildXinerama is set to NO (David Dawes,
- based on #A.599, Pontus Lidman).
- 556. Fix libXext build when BuildLBX is set to NO (based on #A.582,
- Didier Gautheron).
- 555. Fix typo in ms_MY locale name (was ms_NY) (Hasbullah Bin Pit).
- 554. Fix incorrect code in signal handlers in most of the clients,
- xterm and xdm not done yet (Matthieu Herrb).
- 553. Add Glint R4 and Gamma2 support to the glint driver (Alan Hourihane).
- 552. Fix rotated display in the nv driver (Mark Vojkovich).
- 551. By default, validate all available modes rather than only the largest
- such mode (Marc La France).
- 550. Various XDarwin improvements:
- - Use all 8 bits of PseudoColor in full screen Quartz mode.
- - Write XDarwin version number to console log.
- - Move Alt/Option key back to Mod1 by default.
- (Torrey T. Lyons)
- 549. Fix offscreen memory manager segfault (Jacques Gangloff).
- 548. XDarwin Quartz mode cursor improvements:
- - Safely free QuickDraw cursors.
- - Fix disappearing cursor in rootless mode with multiple monitors.
- (Gregory Parker and Torrey T. Lyons)
- 547. i810 XvMC fixes (#5078, Matthew J. Sottek).
- 546. Downgrade DDC-related mode rejections to warnings as some monitors
- advertise their nominal, rather than actual, tolerances (Marc La France).
- 545. Add Korean localization of XDarwin front end (Kyunghwan Kim).
- 544. Allow XDarwin to launch from the Finder even if there are spaces, etc.
- in the path to its application bundle (Torrey T. Lyons).
- 543. Add XvHsync, XvVsync to adjust skew values for centering of an
- Xvideo window for the trident driver (Geoffrey Hausheer, Alan Hourihane).
- 542. Fixed xkb to avoid setting of AccessXTimeout to 0 (Egbert Eich).
- 541. Added option to sync the logfile after every line written (Egbert Eich).
- 540. Improved APM handling:
- - Added disable of Input Handlers.
- - Added support for undo on failed APM requests.
- - Set vtSema to false (Egbert Eich).
- 539. Improved detection of primary device especially for non-PC platforms
- (Egbert Eich).
- 538. Silicon Motion driver Fixes:
- - Removed separate loading of int10 code.
- - Added reset of graphics engine on EnterVT (Egbert Eich).
- 537. Set flag ROP_NEEDS_SOURCE for CPUToScreenColorExpand for all
- S3 Savage chips (Egbert Eich).
- 536. SiS driver:
- - Added fix to restore fbdev mode properly on VT switch/exit.
- - Improved LCD handling on SiS 630.
- - fixed screen blanking in SiS driver to properly blank LCDs
- (Egbert Eich).
- 535. Trident driver:
- - Fixed screen centering for 640x480 Modes.
- - Fixed video playback for BladeAi1.
- - Fixed hotkey internal/external switching for XPm8/16.
- - Added support for on-the-fly video recentering.
- - Attempt to fix contrast settings for video (Egbert Eich).
- 534. Added reset code for PS/2 mice when replug events occurs
- (required for later Linux 2.4.x kernels) (Egbert Eich).
- 533. xf86cfg: start AccessX controls even when started from a running server
- (Egbert Eich).
- 532. Add support in glint driver for booting secondary cards that have
- the VGA disable jumper set (so no access to the BIOS) (Jay Estabrook).
- 531. Add Spanish localization of XDarwin front end (Pablo Di Noto).
- 530. Set the r128 DRI driver version back to 2.2 so that the major version is
- the same as for the version in XFree86 4.1.0.
- 529. Fixes for DGA2.0 support in the radeon driver (#A.585,
- Shyouzou Sugitani).
- 528. Fix mkfontdir's scanning of fonts.scale files to detect a bad file
- resulting from concatenating two fonts.scales files, and to avoid
- buffer overruns from over-long strings (#A.563, Jonathan Kamens).
- 527. Avoid i810 VT switching problems on FreeBSD (David Dawes).
- 526. Fix a possible SIGFPE in the X-TrueType fonts (#A.640, Nam SungHyun).
- 525. Fix -probe and -configure to not clear the screen on exit on SunOS SPARC.
- (Marc La France).
- 524. Fix support for ATI Graphics Pro Turbo 1600 adapters (Marc La France).
- 523. Newport driver updates, including 24-bit support (#5062, Guido Guenther).
- 522. Fix pixel info not being returned from the APPGROUP extension (#5061,
- Chris Bare, from X11R6.6).
- 521. Remove debug message in the calcomp driver (#5060, Martin Kroeker).
- 520. Replace "X Windows" with "X Window System" or "X" in various places
- (#5058, David Krause).
- 519. Fix the size of some lbx struct members on 64-bit architectures
- (#5053, Chris Bare, from X11R6.6).
- 518. Fix the size of some xXagGetAttrReply struct members on 64-bit
- architectures (#5052, Chris Bare, from X11R6.6).
- 517. Add a NULL check that was missing in the CID part of the Type1 code
- (#5050, Mark Snitily, from X11R6.6).
- 516. XKB AccessX LED beep feature (#5047, Chris Bare, from X11R6.6).
- 515. Fix WriteToClient flushing bug (#5046, Chris Bare, from X11R6.6).
- 514. Fix improper freeing of widget translations in libXt when
- REFCNT_TRANSLATIONS is defined (#5044, Chris Bare, from X11R6.6).
- 513. Fix XPrint memory leak (#5042, Chris Bare, from X11R6.6).
- 512. Local Authorization Fix (#5041, Chris Bare, from X11R6.6).
- 511. Add locale entries for Sami (#5055, Børre Gaup).
- 510. Fix XProcessInternalConnection man page duplication (#5040, Chris Bare,
- from X11R6.6).
- 509. Minor xrx Imakefile fix (#5038, Chris Bare, from X11R6.6).
- 508. Remove outdated xc/fonts/encodings/large/README (#5033,
- Juliusz Chroboczek).
- 507. Enable XVideo support for the SuperSavage (#5031, Tim Roberts).
- 506. Add some missing locale entries (#5026, Mike Harris).
- 505. s3virge driver updates, including:
- - cr3a patch (#4884, Adam J. Richter)
- - ViRGE MX XVideo patch (#4915, Sven Menke)
- - An option to disable XVideo
- - Disable solid filled rects for Trio3D because of trouble reports
- - Some MX fixes
- - Fix ViRGE MX XVideo so window overlap works
- - Enable ViRGE GX2 XVideo
- - Fix low resolution problems on ViRGE MX (&GX2)
- (#5024, 5030, 5034, Kevin Brosius).
- 504. Some new/updated xkb files (#5019, Pablo Saratxaga).
- 503. Add some ATI PCI IDs (#5018, Mike Harris).
- 502. Implement a hack for the DEC TGA2 cards which maps an extra page
- before framebuffer start as the acceleration code is slightly
- broken (Jay Estabrook).
- 501. Allow secondary MGA boards to be used on Alpha that have the VGA
- disable switch set (Jay Estabrook).
- 500. Fix Radeon jerky cursor movement bug (Jay Estabrook, #5054, Mike Harris).
- 499. Add new Luxi fonts from Bigelow & Holmes (#5010, Charles Bigelow and
- Kris Holmes, integrated by Juliusz Chroboczek).
- 498. Update the ClearlyU fonts to version 1.8 (#5009, Mark Leisher).
- 497. Add XKB symbols for Saami (#5006, 5059, Børre Gaup).
- 496. Change the mapping of the JIS reverse solidus to what most Japanese
- users expect (#5002, Juliusz Chroboczek).
- 495. Fix hiding/showing of mouse cursor under Windows on Cygwin/XFree86
- (#5056, Harold Hunt).
- 494. Fix Permedia3 SDRAM based boards planemask problems (Jay Estabrook).
- 493. Don't use int10 in glint driver when using fbdev interface (#5039,
- Michel Dänzer).
- 492. Fix SlowBCopy for MIPS and PowerPCs (Marc La France).
- 491. Fix XF86Config overrides for I/O base, framebuffer address and video
- memory size in cyrix driver (Marc La France).
- 490. Don't interfere with ATI panel support when using DDC information for
- monitor tolerance defaults (Marc La France).
- 489. Add Dutch localization of XDarwin help file (Paul Edens).
- 488. Add stub functions needed by libGL to libXThrStubs. Link libGL against
- libXthrStubs on systems that build it. (#4997, Matthieu Herrb).
- 487. Fix building and loading of I18N modules by Xlib on NetBSD and OpenBSD
- (#5049, Matthieu Herrb).
- 486. Fix duplicate loader symbols (#5048, Vladimir Dergachev).
- 485. Fix problems with clipping in fb when the clip list contains negative
- coordinates (Gregory Parker).
- 484. Fix return value of VBEBankSwitch() (Norm Raden).
- 483. Updates/fixes for the QNX6 (aka Neutrino) port (#4990, Frank Liu).
- 482. Autodetect when -fno-merge-constants is needed for building modules,
- and enable its use by default in those cases (Marc La France,
- David Dawes).
- 481. Status doc updates (#4991, Branden Robinson).
- 480. Fix for flickering i815 LCDs (#4968, Poul-Henning Kamp, Harald Koenig).
- 479. Move much of the I18N code in Xlib into separately loadable
- modules (#4965, 5043, Ernie Coskrey, from X11R6.6).
- 478. Modify UXTerm.ad's font5 resource so that xterm can display double
- width characters using a font distributed with XFree86 (#4962,
- Tomohiro KUBOTA).
- 477. Add Dutch localization of XDarwin front end (Paul Edens).
- 476. Add a quick check to not use as the default mode any internal modes
- with horizontal timing parameters that aren't CRT-friendly (David Dawes).
- 475. Add an 832x624 @ 75Hz mode line to the default mode set (#4960,
- Andrew C. Aitchison).
- 474. Fix Radeon LCD Panel detection and Power Delay (ATI Technologies).
- 473. Ignore XDarwin full screen switch key combination when in rootless mode
- (Torrey T. Lyons).
- 472. Xterm patches #163, #164 (Thomas Dickey): mostly bug fixes.
- 471. Fix race condition in XDarwin causing occasional hangs or crashes when
- quitting from the menu (Torrey T. Lyons).
- 470. Cygwin/XFree86 updates (#5035, #5036, Harold Hunt).
- 469. Make sure Cygwin checks ENOBUFS for error test in XlibInt.c, as under
- Cygwin when the socket is full ENOBUFS is returned (Brian Genisio).
- 468. Fix SIGFPE in LastLinePel for ATI Radeon, console restoring on dual CRT
- head on VE, improved panel and ddc line detection (ATI Technologies).
- 467. Fix bug that caused hardware cursors to disappear on mode switches when
- silken mouse is disabled (Marc La France).
- 466. Preliminary changes to keyboard handling for SPARC SunOS
- (Marc La France).
- 465. Zero out SPARC SunOS primary framebuffer on exit, like Sun's servers do
- (Marc La France).
- 464. More driver name normalisation (Marc La France).
- 463. Minor speedup for Mach64 acceleration for big-endian architectures
- (Marc La France).
- 462. Fix bug that prevented relocation of unassigned PCI I/O bases
- (Marc La France).
- 461. Add Swedish localization of the XDarwin help file (Patrik Montgomery).
- 460. Fix use of gethostbyname and getservbyname to _XGethostbyname and
- _XGetservbyname for portability (#5017, Mark W. Snitily, from X11R6.6).
- 459. Fix buffer problems used by xrdb to build command line, noticed on
- systems with a large amount of visuals (#5016, Alan Coopersmith).
- 458. Fix bug regarding signal handling in x11perf by inserting an abort
- test after each run (#5015, Mark W. Snitily, from X11R6.6).
- 457. Add improved diagnostic messages and error checking to libXfont
- which is used by bdftopcf command (#5014, Chris Bare, from X11R6.6).
- 456. Fix advertised surfaces for the i810 Motion Compensation driver and
- make use of new XVMC_INTRA_UNSIGNED surface flag (#5003, Matthew Sottek).
- 455. Fix r128 driver to call wrapped screen functions when using the
- fbdevhw layer (#5004, Michel Dänzer).
- 454. Add Rage128 Pro PP detection to ati driver (#5025, Alfred Perlstein,
- Mike Harris).
- 453. Add CyberBladeXPAi1 recognition to the trident driver (#A.658,
- Jani Jaakkola).
- 452. Fix typo in PCI bus scanning that caused a hang when there was more than
- one PCI bus (#A.652, Uwe Dannowski).
- 451. Update Japanese localization of XDarwin help file (Toshimitsu Tanaka).
- 450. Update XDarwin help file (Torrey T. Lyons).
- 449. Fix XDarwin SHAPE support in rootless mode (Gregory Parker).
- 448. More corrections to Xaw manpage (#5022, Branden Robinson).
- 447. Fix XDarwin crash if a NULL mask is passed to Composite in rootless
- mode (Torrey T. Lyons).
- 446. Fix XDarwin crash if more than one keyboard interface is returned from
- NXEventSystemInfo (Gregory Parker).
- 445. Big5 encoding fix (#4957, Juliusz Chroboczek).
- 444. Use DDC sync (disabled by default) and DPMS info (#4955,
- Andrew C Aitchison).
- 443. Update the i810 XVideo support to double the maximum image width
- to 1440 (#4933, Philip Pokorny).
- 442. Fix several memory leaks in x11perf (#4931, Ernie Coskrey, from X11R6.6).
- 441. Bypass startup VT #1 switching hack for FreeBSD/syscons unless running
- on a pre-3.1 version of FreeBSD (#4926, Huver).
- 440. Catch bogus flat panel dimensions in the ati/r128 driver (#4907,
- Michel Dänzer).
- 439. Fix Maltese entry in xkbcomp/keymap/xfree86 (#4921, Nerijus Baliunas).
- 438. Fix a locale.alias typo (#4920, Nerijus Baliunas).
- 437. Documents Options for the Matrox and Neomagic drivers, and makes
- HW/SWcursor generic options (#5021, Dr. Andrew C. Aitchison).
- 436. Corrections and updates to Xaw manpage (#5020, Branden Robinson).
- 435. Add German localization of XDarwin front end (Andreas Monitzer).
- 434. Add the DEC-XTRAP extension and sample clients (#4904, 4918,
- Paul Stewart).
- 433. Update the us_intl XKB symbols map to include all diacritics used
- in latin script (#4917, Pablo Saratxaga).
- 432. Add a Compose file for utf-8 (#4917, 5019, Pablo Saratxaga).
- 431. Fix radeon and sis GL module Imakefiles (#4916, Bill Nottingham).
- 430. Bug fixes and updates for Savage driver (#5001, Tim Roberts).
- 429. Add luit (#4914, Juliusz Chroboczek).
- 428. Fix a typo in fontenc that prevents building with no dependency on
- libfont (#4913, Juliusz Chroboczek).
- 427. Add an encoding file for the KSC Johab encoding (#4912, Jungshik Shin).
- 426. Remove some spurious entries in the KSC 5601 encoding file (#4910,
- Jungshik Shin).
- 425. Add Swedish localization of XDarwin front end (Patrik Montgomery).
- 424. Fill in mode switch characters in XDarwin keymap (Mario Klebsch and
- Torrey T. Lyons).
- 423. Linux/PA-RISC portability fixes (#4892, Grant Grundler, Bdale Garbee,
- and LaMont Jones).
- 422. Linux/mips portability patch (#4891, 4919, Guido Guenther).
- 421. Preliminary support for building on Linux/arm32 (#4890,
- Branden Robinson).
- 420. Make it possible to build the X server on Linux/m68k platforms
- (#4889, Christian T. Steigies).
- 419. Fixes for xman's manpath config handling (#4886, Branden Robinson and
- Colin Watson).
- 418. Fix some man page aliases (#4882, Branden Robinson).
- 417. Define __GLX_ALIGN64 for glx on Alpha (based on #4888, Branden Robinson).
- 416. Remove PEX5 from the lists of specs in doc/specs/Imakefile (#4881,
- Branden Robinson).
- 415. linux.cf updates (#4874, Branden Robinson).
- 414. Updates for zh locale files (#4879, Branden Robinson).
- 413. xf86config man page update (#4877, Branden Robinson).
- 412. Startx enhancements and cleanups (#4875, Branden Robinson and
- Henry T. So).
- 411. Use DirectDraw2 instead of DirectDraw on Cygwin (#5012, Harold Hunt).
- 410. Add French localization of XDarwin front end (Olivier Verdier).
- 409. Fix portability problem in the generation of the man page version string
- (Marc La France).
- 408. Fix a NativeGDI problem on Cygwin/XFree86 (#5007, #5008, Harold Hunt).
- 407. Fix for threaded libraries (Marc La France).
- 406. Finish removal of SuperProbe (Marc La France).
- 405. A rather large number of warning fixes throughout (Marc La France).
- 404. Fix bug in HTML install script (Marc La France).
- 403. Missing ident lines for some XFree86-modified files (Marc La France).
- 402. Add default half-width doublescanned modes (Marc La France).
- 401. Mark all driver-registered resources with ResBus (Marc La France).
- 400. Fix DPMS-related build problem (Marc La France).
- 399. Log a message just before calling each ChipProbe() during '-probe'
- processing (Marc La France).
- 398. Temporarily disable ISA probing on SPARCs and PowerPCs (Marc La France).
- 397. Add PCI IDs for Sun hardware (Marc La France).
- 396. Fix memory leak in resource relocation (Marc La France).
- 395. Do not relocate resources that only conflict with disabled non-video PCI
- devices or disabled PCI ROMs (Marc La France).
- 394. Re-organise SBUS code (Marc La France).
- 393. Add as-yet-unused definitions for PCI resource types other than I/O and
- memory (Marc La France).
- 392. Add doc for Solaris, but don't format it yet (Marc La France).
- 391. Normalise driver names (Marc La France).
- 390. For SPARCs, disable DGA support in ATI driver
- (from #4650, David S. Miller).
- 389. Clean up some debugging messages (Marc La France).
- 388. Fix newport driver for when a /proc fs isn't mounted (Marc La France).
- 387. Fix DAC handling bugs in s3 driver (Marc La France).
- 386. Fix resource registration bug for PCI Tseng's (Marc La France).
- 385. Add aperture driver for Solaris (not yet used) (Marc La France).
- 384. Rework scanpci to fix problems that prevented it from completely
- displaying non-PCI bridges and Simba bridges (Marc La France).
- 383. Fix build problems in some input drivers (Marc La France).
- 382. Fix int10 compile problem for SPARCs and PowerPCs (Marc La France).
- 381. Ensure master aborts on secondary buses complete normally during PCI
- scans (Marc La France).
- 380. Some memory mapping and Solaris cleanups (Marc La France).
- 379. Fix XDarwin crash on server reset and problem in full screen mode when
- switching from X to Aqua to X too rapidly (Torrey T. Lyons).
- 378. Add __apploaddir__ definition to imake MANDEFS, to specify location of
- app-defaults directory, fixes Debian bug report #87611 (Thomas Dickey).
- 377. Xterm patches #161, #162 (Thomas Dickey): mostly bug fixes.
- 376. Add new CyberBladeXP Aladdin based chip ID's (#4994, Hubert Feyrer).
- 375. fix a potential issue where POSIX allows the string returned
- from getenv to be overwritten (from X11R6.6, Chris Bare).
- 374. Cygwin/XFree86 cleanups and fixes (#4992, #4993, #4999 Harold Hunt).
- 373. Fix i830 VT switching problems which hang the ring buffer (#4987,
- #4989, Abraham vd Merwe).
- 372. fix a format string problem in lbxproxy, apparently not exploitable
- (r0gue@vertarmy.org, Matthieu Herrb).
- 371. Fix disappearing cursor in XDarwin rootless mode by falling back to
- system cursor for cursors bigger than 16x16 (Torrey T. Lyons).
- 370. Make XDarwin start more robustly from the Finder (Torrey T. Lyons).
- 369. Update XDarwin Japanese localization (Toshimitsu Tanaka).
- 368. Fix calculation of DPI when Xinerama in use (#4986, Andrew C Aitchison).
- 367. Update XDarwin preferences GUI to match current features
- (Torrey T. Lyons).
- 366. Xkb fixes for international keyboards (Matthieu Herrb).
- 365. Add client side sparc64 support for NetBSD and OpenBSD (Eduardo Horvath,
- Matthieu Herrb).
- 364. Allow xkbcomp to be used in a cross-compile environment (Alan Hourihane).
- 363. Update documention for the SiS driver, the Options file
- (Ademar de Souza Reis Jr.).
- 362. Xterm patches #157, #158, #159, #160 (Thomas Dickey): mostly bug fixes.
- 361. Fix high-res modes in the nv driver. Add interlaced support for
- chips older than NV11 (Mark Vojkovich).
- 360. Cross compilation fixes (#4981, Harold Hunt, Alan Hourihane).
- 359. Fix cursor artifacts when running XDarwin in full screen Quartz mode
- with 8 bit depth (Torrey T. Lyons).
- 358. Fix byte ordering issue in XDarwin when loading keymapping files on x86
- and correctly set ByteOrder for PPC and x86 (Rob Braun).
- 357. When XDarwin is launched from the Finder, start X clients in an
- interactive shell if user's shell is Bourne-based (Torrey T. Lyons).
- 356. Add CaseSensitiveFileSystem definition, which defaults to YES, except
- on Darwin, Cygwin, and OS/2. Fix another case problem spotted by
- NAKAHASHI Ichiro (Torrey T. Lyons).
- 355. Enable Vendor specific FatalError for Cygwin/XFree86 and create
- the Xserver as a windows executable (#4967, Harold Hunt).
- 354. Add i830 2D and DRI driver (#A.604, VA Linux Systems, 2D3D).
- 353. Use the -no-cpp-precomp compiler option on Darwin, rather than the
- deprecated -traditional-cpp (Christoph Pfisterer).
- 352. Reverting patch #340, fixing type (Egbert Eich).
- 351. Fix rotation in fbdev driver (#4958, #4959, Michel Dänzer).
- 350. Resync with DRI CVS trunk (DRI Project).
- 349. Move ati driver out of DevelDrivers on PPC platforms (#4952,
- Michel Dänzer).
- 348. SECURITY: set default value of authComplain resource in xdm to true.
- This closes a hole where anyone can connect to the X server if
- the xdm auth dir doesn't exist (Galen Hancock).
- 347. SECURITY: don't let a non-root user halt the machine by having X
- send SIGUSR1 to init (Thomas Moestl).
- 346. Changed int10 module to stub on Sparc (Egbert Eich).
- 345. Added hyperpen driver (Roland Jansen et. al.).
- 344. Fixed alignments of x86emu-structures for AXP (Jay Estabrook).
- 343. Fixed XLoadQueryFont() and XLoadFont() to support locales
- (required for Euro support) (Markus Kuhn).
- 342. Modified XtCvtStringToFont() to match any ISO8859 instead of
- latin1 as fallback. Required for Euro Support (Markus Kuhn).
- 341. Added acute to compose key list for iso8859-15 (Markus Kuhn).
- 340. Modified XV Xinerama support to recognize adaptors if screen 0
- has no adaptor (Egbert Eich).
- 339. Modified order of disable devices and LeaveVT() to be symetric
- to the enter case (Egbert Eich).
- 338. Modified GetTimeInMillis() to handle non monotonous system clocks
- (Egbert Eich).
- 337. Added comment about a Zeos Meridan 850c Notebook to C&T docs (Alan Cox).
- 336. Added call to vbeFree() to apm driver (Egbert Eich).
- 335. C&T driver:
- - fixed sig11 problem for non-69030 chipsets.
- - fixed DGA to announce acellerated functions only if accelleration
- is enabled.
- - added FP_mode flag to C&T driver which allows to override the detected
- state of the flat panel (Egbert Eich).
- - fixed driver to act appropriately if the BIOS switches to the
- external monitor it detects when doing DDC.
- - Set IOBase correctly for MMIO when detection 65545 PCI.
- - fixed text screen restauration on 69030 (Egbert Eich).
- - reinabled correct KGA handling of C&T chips: unblank before the end
- of scanline.
- - added support for composite sync.
- - when FP is active disallow display sizes greater than panel.
- - added double buffering to video support.
- - fixed register settings to prevent flickering during video playback.
- (Egbert Eich).
- 334. Fixed bug in C&T driver that caused interlaced mode not to work
- (Claus Hulstrøm).
- 333. Added full MMIO support for C&T 69030 chips (Gregg H. Burman).
- 332. Fixed MMIO accel code in Cirrus Alpine driver, got PIO accel code to
- work (Egbert Eich).
- 331. Fixed fbdev to obtain 24 bit framebuffer format from the kernel, added
- more failure messages to fbdev driver (Egbert Eich).
- 330. Added calls to vbeFree() to rendition, savage, silicon motion,
- i740 and i810 driver (Egbert Eich).
- 329. Modified MGA driver for new Sparse allocation sceme (Jay Estabrook).
- 328. Modified handling of sparse addresses on AXP: The code now no longer
- maps the entire sparse range. Now the required ranges are mapped
- relative to a fixed base address (Jay Estabrook).
- 327. Fixed HW cursor for MGA G100 (Egbert Eich).
- 326. Fixed MGA drivers to be able to use overlay modes when HAL lib is
- loaded (Egbert Eich).
- 325. Disabled accel functions that cause lockups on certain neomagic
- systems by default. They can be reenabled by setting the option
- "StrangeLockups" to "no" (Egbert Eich).
- 324. Did a further fix on ScreenToScreenCopy() for Neomagic 2200
- (Egbert Eich).
- 323. Added experimental support for Toshiba Libretto. This can be enabled
- by the option "DisplayHeight480" (Egbert Eich).
- 322. Fixed clipping in Savage driver, update to version 1.1.1.19
- (Tim Roberts).
- 321. fixed calls to BLTSync() on SiS driver (Egbert Eich).
- 320. Fixed Mono8x8PatternFill(): Moving SETROPFG behind SETROPBG did the
- trick (Egbert Eich).
- 319. Setting 24 bpp pximap flags correctly in SiS driver dependening
- on chipset (Egbert Eich).
- 318. Setting depth and bpp of framebuffer correctly for suncg14 and sunleo
- driver (Thorsten Kukuk).
- 317. Tseng driver not longer ignores results of TsengDoMemLimit() which
- tests for certain restrictions on the usable framebuffer size
- (Egbert Eich).
- 316. Vesa driver: adding calls to vbeFree() before exiting PreInit().
- Reinit vbe in ScreenInit() (Egbert Eich).
- 315. Adding int10 initialization to generic vga driver (Egbert Eich).
- 314. Modified generic vga driver to use shadow fb for vga16 on AXP.
- This works around the problem that AXP can address memory only 32bit
- wide which doesn't work on a latched register planar fb (Egbert Eich).
- 313. Removing 3.3 code from wacom driver. Makes driver hard to read
- (Egbert Eich).
- 312. Removing message output from xf86WcmPlug() which causes -configure
- to core dump (Egbert Eich).
- 311. Modified int10 Pci code to be able to use new version of
- xf86ReadPciBIOS() (Egbert Eich).
- 310. Modified int10 int1A handler to return valid when an unimplemented int10
- call is encountered. This allows fallback to system BIOS (Egbert Eich).
- 309. Modified xf86ReadPciBIOS() to check for valid i386 PC signature.
- Added functions xf86GetAvailablePciBIOSTypes() and
- xf86ReadPciBIOSByType() to obtain available PCI BIOS types and
- retrieve a certain BIOS by type (Egbert Eich).
- 308. Reversed bogus patch 1050 of version 4.0.2. The graphics engine will
- *never* be called after receiving an APM suspend and before receiving
- an APM resume. If the neomagic locks up on resume this has a different
- reason (Egbert Eich).
- 307. Change real/effective user ID to 0/0 before calling modprobe in
- xf86LoadKernelModule() on Linux so user can also load drm modules. Fixed
- PATH environment variable to /sbin (Stefan Dirsch, Egbert Eich).
- 306. Removed disable/enable interrupt code on ia64 as interrupts cannot
- be controled from user level (Egbert Eich).
- 305. Further attempt to fix split algorithm for MTRR regions (Egbert Eich).
- 304. Fixed problem in XAACopyPlaneNtoNColorExpand() that caused bogus
- memory accesses when src was not in fb memory (Egbert Eich).
- 303. Fixed cfb8_32PaintWindow() to use correct cfb32FillBoxTileOdd function
- (Egbert Eich).
- 302. Fix to xdm PAM support (Werner Fink).
- 301. Fixed cz and cz_querty keyboard layouts, added support for Slovak
- keyboard (Jan Holesovsky).
- 300. Fixed core dump in twm if no locales are present (Egbert Eich).
- 299. Modified xterm app default to use LFD fontnames instead of old type
- (Michael Schroeder).
- 298. Add a f.startwm function to twm to start another manager.
- (Matthieu Herrb).
- 297. Disable MIT-SHM in Xnest, caused a segfault (Matthieu Herrb).
- 296. Update wskbd keyboard protocol handling for OpenBSD/macppc
- (Matthieu Herrb).
- 295. Fix problems starting XDarwin from the Finder and pasting with
- multi-button mouse emulation (Torrey T. Lyons).
- 294. S3 driver updates. Restore console for 964 with Ti3025 and Trio64, and
- support for Aurora64V+ (#4953, Ani Joshi).
- 293. Fix USB Keyboard access when no PS/2 controller present
- (#4948, Pontus Lidman).
- 292. Add i810 XvMC (Motion Compensation) driver (#4946, #4964, #4966,
- Matthew Sottek, Intel).
- 291. When using XKB and LEDs are switched on/off by external application
- the keyboard module doesn't change phisycal LEDs state immediately
- (#4951, Ivan Pascal).
- 290. Clean up Cygwin/XFree86 keyboard files (#4949 Harold Hunt).
- 289. Add Matrox G550 support (#4947, Luugi Marson, Matrox).
- 288. Remove SuperProbe.man definition for manual page
- (#4944, Ishikawa Mutsumi).
- 287. Ark driver updates (#4943, Ani Joshi).
- 286. Fix xterm when XIM is disabled - caused a segfault
- (#4942, Tomohiro Kubota).
- 285. Add Big Endian support (PowerPC) to radeon driver (#4934, Ani Joshi).
- 284. Fix support for legacy Windows TrueType fonts in Big5 encoding
- (#4938, Joe Man).
- 283. Support Radeon 7500, 8500 and Rage128ProII (#4941, ATI Technologies).
- 282. Support Trident TGUI96xx and greater with Xv (Alan Hourihane).
- 281. XDarwin fixes for Xinerama in Quartz modes:
- - Turn Xinerama on by default.
- - Fix warping the cursor.
- Also load keymapping from file in IOKit mode for Mac OS X 10.1
- compatibility. (Torrey T. Lyons and Gregory Parker)
- 280. Fix Trident 96xx high clock setting, acceleration fixes (Alan Hourihane).
- 279. Fix XDarwin rootless crashing bug when window resizing with the Mac menu
- bar not on X11 main screen (Gregory Parker).
- 278. Define X_LOCALE on Darwin as Darwin's setlocale() does not work
- properly (Torrey T. Lyons).
- 277. Fix problems with XDarwin multi-monitor support for some screen
- arrangements (Gregory Parker).
- 276. Preliminary big endian (PowerPC) support for the "nv" driver
- (Ani Joshi, Mark Vojkovich).
- 275. Enable ThreadedX for Cygwin/XFree86 using auto import features of
- newer binutils packages (Alan Hourihane).
- 274. Exclude the Mac OS X menu bar from the X11 screen while running XDarwin
- in rootless mode (Yannick Bessette and Torrey T. Lyons).
- 273. Add support for builtin MTRR and AGP support in NetBSD 1.5Y.
- (Matthias Drochner and Frank van der Linden).
- 272. Rework XDarwin front end to start X clients in the user's normal
- environment and fix issues while quitting (Torrey T. Lyons).
- 271. SECURITY: fix glyph clipping for large origin (Keith Packard).
- Reported to be remotly exploitable through konqueror or netscape
- by Georgi Guninski.
- 270. Fix setting of memPhysBase in a few drivers (#4937, Gerd Knorr).
- 269. Finish merging freetype-2-0-4 into trunk by resolving conflicts. This
- also fixes a syntax error on Darwin caused by an out of date version of
- ttgload.c (Torrey T. Lyons).
- 268. Update VMware driver (#4935, Jeremy (VMware)).
- 267. Native GDI infrastructure sync with Cygwin/XFree86 (#4936, Harold Hunt).
- 266. Update Darwin build configuration files including:
- - Report full OS version and more capabilities.
- - Fix X server build problem due to libraries in ProjectRoot being
- listed as dependencies for some targets.
- - Allow dynamic shared libraries to take advantage of two-level
- namespace on Darwin 1.4.
- (Torrey T. Lyons)
- 265. Disable clipboard viewer, external program xwinclip handles this (fow now)
- (#4932, Harold Hunt).
- 264. Add ability to let Aqua and X use different display modes while running
- XDarwin full screen (Torrey T. Lyons).
- 263. Fix build dependency problem in xedit/lisp/lisp.rules
- (#4930, Harald Koenig).
- 262. Fix a fontenc-related problem that can cause the TrueType backend
- to crash (#4909, Juliusz Chroboczek).
- 261. Fix DPMS support for I128 driver (Robin Cutshaw).
- 260. Add OSVErrorF for Cygwin/XFree86 (#4923, Harold Hunt).
- 259. Support Trident Cyber9320, TGUI9440, TVGA8900C, TVGA9000 ISA chips
- (Alan Hourihane).
- 258. Fix banked 24bpp displayWidth calculation (Marc La France).
- 257. Fix accel initialisation bugs in ATI driver (Marc La France).
- 256. Add entry to initialise framebuffer manager by area (allowing for a
- possible extra partial scanline) and make it print all largest areas
- (Marc La France).
- 255. Make xdm use BSD authentification on OpenBSD and use setproctitle()
- instead of home grown version where available (enabled on
- OpenBSD and NetBSD only) (Matthieu Herrb).
- 254. Make -configure generate the DisplaySize from the acquired DDC
- information (#4897, Andrew C Aitchison).
-
-XFree86 4.1.99.1 (20 August 2001)
- 253. Fix bad xalloc() in the new fontenc code (#4899, ISHIKAWA Mutsumi).
- 252. Fix some Xrandr build issues on Cygwin/XFree86 (#4898, Suhaib Siddiqi).
- 251. Fix some Cygwin/XFree86 dependencies in cygwin.rules (#4894, Harold Hunt).
- 250. Add ATI Xpert2000 (Rage 128 SM) (#4896, Mike Harris).
- 249. Fix '-configure' crash introduced recently (#4895, Andrew C Aitchison).
- 248. Re-write Xvideo support for Permedia3 (Alan Hourihane).
- 247. Add Texas Instruments Permedia to Delta attached chips (Alan Hourihane).
- 246. Add Permedia4 support (different clock synth) (Jay Estabrook).
- 245. Resync with DRI CVS trunk (VA Linux Systems).
- 244. Add XKB descriptions for the extra keys on a Dell Internet keyboard
- (#A.533, Ben Liblit).
- 243. Add a Maltese XKB map and locale support (#A.527, Ramon Casha).
- 242. Add a new "bksl" variant of the Czech XKB map (#A.515, Stanislav Brabec).
- 241. Fix the initialization sequence for ExplorerPS/2 (#A.510,
- Arndt Schoenewald).
- 240. When xdm is built with PAM support, don't call getpwnam() before
- calling the various PAM functions associated with authenticating a user
- (A.504, Ben Harris).
- 239. Fix ccmakedep to handle source file extensions of more than one
- character (#A.507, Andy Wiggin).
- 238. Fix a VT switching crash in the cirrus driver when acceleration is
- disabled (#A.489, Kirill V. Semenkov, #A.518, B. D. Elliott).
- 237. Add support for the "PR" variant of the Rage 128 Pro (#A.487,
- Alfred Perlstein).
- 236. Make the config file created with 'XFree86 -configure' load the
- speedo and/or type1 modules if relevant font directory is in
- the font path (#A.484, Dmitry Yu. Bolkhovityanov).
- 235. Fix a bug in the nv driver's detection of the crystal frequency (A.481,
- Leo L. Schwab).
- 234. Make xfontsel use the same order in its menus as the sort order used
- by the X server and xfs (#A.480, Dmitry Yu. Bolkhovityanov).
- 233. Add an input driver for DMC FIT10 touch-panel (#A.477, Mayk Langer).
- 232. Fix xf86PostMotionEvent() to handle first_valuator values other than
- zero (#A.468, Joe Krahn).
- 231. Change the Swedish xkb map to map AltGr+Space to space (#A.467,
- David Härdeman).
- 230. Fix the return value information in the Xv library man pages (#A.458,
- Tommi Vainikainen).
- 229. Fix the DGA client library so that it can map the video memory on
- Solaris 8 x86 (#A.454, Juergen Keil).
- 228. Change {Max,Min}{X,Y}Position options in the elographics and mutouch
- drivers to {Max,Min}{X,Y} so that it's consistent with the other
- drivers.
- 227. Some Bulgarian and Serbian locale updates (#A.444, Anton Zinoviev).
- 226. Add a usage message to glxinfo (#A.430, Mike Coleman).
- 225. Set the Alt/Windows key mappings for 104-key keyboards to be
- compatible with 101-key keyboards by default, and add some new
- XKB options to set them differently.
- 224. Add some new XKB options to select third level shift and group
- switchers/togglers (#A.425, Anton Zinoviev).
- 223. Fix a bug in the Serbian XKB map (#A.424, Anton Zinoviev).
- 222. Export from the loader the DIX symbols necessary for a modular version
- of the DEC-XTRAP extension (#4797, Paul Stewart).
- 221. Add a workaround for FreeBSD to make programs (like mkfontdir) that
- are run as part of the build use the shared libraries from the build
- rather than those that may be installed on the system (David Dawes).
- 220. Use MAXSOCKS for connection limit in Cygwin/XFree86 (Alan Hourihane).
- 219. Add Render's layer support to Cygwin/XFree86 (#4872, Harold Hunt).
- 218. Support for OpenBSD/powerpc (Matthieu Herrb).
- 217. Experimental change to default behaviour of ATI panel support to override
- the horizontal and vertical porches of all modes to that found in the
- mode on entry (Marc La France).
- 216. Fix detection of a panel's mode on entry in the ATI driver
- (Marc La France).
- 215. Fix for Option "CRTScreen" in ATI driver (Marc La France).
- 214. Patch for the Thai glyphs in Mark Leisher's ClearlyU font (#4846,
- Theppitak Karoonboonyanan).
- 213. Add a font encoding file for tis620-2 (#4845, Theppitak Karoonboonyanan).
- 212. Add a font encoding file for ISO8859-16 (#4844, Markus Kuhn).
- 211. Make the input method framework in Xlib work better in an UTF-8
- locale (#4843, Yao Zhang and Bruno Haible).
- 210. Default *sampleText*international to false in xfontsel's app-defaults
- file, since it breaks if the user has '*international: true' (#4842,
- Juliusz Chroboczek).
- 209. A new version of the fontenc layer. A major difference is that it
- reads from a "system" encodings directory
- <ProjectRoot>/lib/fonts/encodings/encodings.dir, which is searched
- after any encodings.dir file in the font's directory. The font
- ABI version is bumped to 0.3 and the Xfont shared library's version
- is bumped to 1.4 (#4839, Juliusz Chroboczek).
- 208. Add support to xload for displaying the load of remote hosts by using
- information in rwhod(1)'s database (#4833, Anders Eriksson).
- 207. Rename the XVisibilityNotifyEvent man page to XVisibilityEvent,
- which matches the naming convention for the other X Event man pages
- (#4830, Ernie Coskrey, from X11R6.6).
- 206. Update the registry to match X.Org's X11R6.6 version (#4829,
- Ernie Coskrey, from X11R6.6).
- 205. Fix for the SlowKeys feature of the AccessX portion of XKB not working
- when the delay is longer than the amount of time between the delivery
- of key press events to the extension (#4828, Ernie Coskrey,
- from X11R6.6).
- 204. Add a locale alias for "th_TH.TIS-620" (#4827,
- Theppitak Karoonboonyanan).
- 203. Some linux.cf updates (#4825, Branden Robinson).
- 202. Make the vbe module build like the other modules.
- 201. -
- 200. Add a command line options (-show) to xvidtune to print out the current
- video mode (#4809, Markus Kuhn).
- 199. A new driver for the "Acecad Flair" tablet (not enabled by default yet)
- (#4800, Edouard TISSERANT).
- 198. Fix some typos in the iso8859-2 Compose file (#4799, Kamil Toman).
- 197. Add some XKB options to allow the CapsLock behaviour to be easily
- selected (#4794, Ivan Pascal).
- 196. Don't reference the log file in the FatalError message if it hasn't
- been opened yet (#4793, Branden Robinson).
- 195. Add Calcomp input driver (#A.554 Martin Kroeker).
- 194. Add preliminary 8 bit PseudoColor support to XDarwin full screen Quartz
- mode and fix IOKit mode PseudoColor that was broken by the multi-monitor
- patch (Torrey T. Lyons).
- 193. Load XDarwin keymapping from file by default and give more useful error
- message if getting keymapping from kernel fails. Change keymapping
- translation so delete key is XK_BackSpace by default (Torrey T. Lyons).
- 192. Create the two sets of locale.alias and locale.dir entries (those with
- and those without the ':' separator) from a single set of entries in
- the source files (David Dawes).
- 191. Add an MS mouse driver for KDrive (#4754, Juliusz Chroboczek).
- 190. Improve "true Big5" and "Emacs Big5" support (#4792, Yong Li, #4798,
- Tomohiro KUBOTA).
- 189. Fix a non-standard character set bug in Xlib (#4792, Ivan Pascal).
- 188. Fix for the savage driver on 64-bit platforms (#4788, Jay Estabrook).
- 187. Xv fix for the r128 driver on big-endian architectures (#4781,
- Michel Dänzer).
- 186. Fix an Xlib bug that affects conversion from CTEXT to multibyte /
- wide character (#4780, Tomohiro KUBOTA, #4783, Bruno Haible).
- 185. Release notes (4.1.0) and Status doc fixes (#4778, 4779,
- Branden Robinson).
- 184. 64-bit fix for lib/X11/ImUtil.c (#4773, Mike Harris).
- 183. Fix dashed lines for the r128 driver on big-endian architectures
- (#4769, Michel Dänzer).
- 182. Fix Xlib's parsing of CTEXT with multi-byte characters in GR (#4761,
- Juliusz Chroboczek).
- 181. Fixes for the Romanian (ro) XKB map (#4746, Marius Andreiana).
- 180. XDarwin bug fixes:
- - Stop FatalError re-entry in "no Quartz support" messages.
- - Synchronize XDarwin serverVisible state with application on rootless
- startup.
- (Torrey T. Lyons)
- 179. Fix an XDarwin bug that broke XWarpPointer in Quartz modes (Gregory
- Parker).
- 178. Fix some more mi build warnings (David Dawes).
- 177. Fix some mi build warnings (#4716-4719,4721-4724, Adam Sulmicki).
- 176. Port for Linux/SuperH (Jornada680/690 and SEGA Dreamcast) (#4680, 4681,
- ISHIKAWA Mutsumi).
- 175. Support for mouse wheel emulation (#A.506, Henry T. So).
- 174. Add support to Cygwin/XFree86 to use CTRL+ALT+BKSPACE as the shutdown
- signal and fix up command line options to accomodate.
- (#4838, Alexander Gottwald).
- 173. In XDarwin, add ability to change modifiers to use when faking multiple
- mouse buttons (Gregory Parker).
- 172. Do not build Cygwin/XFree86 with -ansi as Cygwin's library (newlib) lacks
- some prototype definitions that cause runtime failures (hypot being one
- of them) (Alan Hourihane).
- 171. Add extra library flags (commented out for now) for building
- Cygwin/XFree86's server (#4834, Harold Hunt).
- 170. Fix a bug in the v4l module which caused multiple TV cards not to work
- (#4835, Gerd Knorr).
- 169. Add multi-monitor support to XDarwin for all display modes using
- Xinerama (Gregory Parker and Torrey T. Lyons).
- 168. Fix 16bpp colour maps on Mach64's (Marc La France).
- 167. Fix Mach64 DPMS bug (Marc La France).
- 166. Fix bug that prevented hardware cursors on Mach64 CT's (Marc La France).
- 165. Document what a ChipAdjustFrame() function should to to prevent moving
- of hardware cursors during mode switches (Marc La France).
- 164. -Wimplicit warning cleanup [`make World` >required<] (Marc La France).
- 163. Ensure installed headers can find the headers they, in turn, #include
- (Marc La France).
- 162. Make imake pass its -W* flags to cpp (Marc La France).
- 161. More accomodations for newer GCC's (Mike A. Harris).
- 160. Remove a CYGWIN define from Xserver/include/windowstr.h
- (#4832, Harold Hunt).
- 159. Fix a casting problem which causes bdftopcf to write corrupted
- fonts on buffer boundaries (#A.522, Jakub Bogusz).
- 158. Cygwin/XFree86 updates (#4824, #4826 Harold Hunt).
- 157. Fix horizontal stripes problem in Permedia3 driver (Alan Hourihane).
- 156. Remove most X_NOT_STDC_ENV code, and assume that __STDC__ is defined
- (David Dawes).
- 155. Remove (stale) support for Amoeba and Minix (David Dawes).
- 154. Update Cygwin/XFree86 cross-compilation and update to latest
- source base (#4801, #4802, Harold Hunt).
- 153. Fix 'make install' for Freetype. (#4812, Carlos A M dos Santos).
- 152. Turn on dll style modules for Linux/MIPS. (#4807, Guido Guenther).
- 151. Add support for ATI's Radeon VE, Mobility M6, All-In-Wonder Radeon
- and Rage128 Pro Ultra, Digital Flat Panel support. Use DDC2 interface.
- (#4817, Mike Smith, ATI Technologies).
- 150. Add IBM S/390 support for building the tree (#4815, Mike A. Harris)
- 149. Fixes incorrect spelling of "XChangeWindowAttributes" found in
- XCreateColormap(3X11) and XInstallColormap(3X11)
- (#4813 Carlos A M dos Santos).
- 148. Fix a serious memory leak in XAA (Mark Vojkovich).
- 147. Add a DriverPrivate field to I2C devices (Marc La France).
- 146. In the ATI driver, initialise the fb manager whether or not XAA is also
- used (Marc La France).
- 145. Fix typos in radeon and wacom drivers.
- 144. Don't disable the secondary CRTC on ATI Rage XL adapters (it doesn't
- exist) (Marc La France).
- 143. Speed up ix86 block moves in ATI driver (Marc La France).
- 142. Temporarily disable hardware cursor support for ATI GX & CX adapters
- (Marc La France).
- 141. Make composite sync the default in the ATI driver (David S. Miller).
- 140. Rework stretching of small DFP modes in ATI driver (Marc La France).
- 139. Add an interesting PCI ID (Marc La France).
- 138. Allow ChipValidMode() functions to pre-calculate a mode's horizontal
- sync and vertical refresh rates (Marc La France).
- 137. Another fix for mode switch and cursor interactions (Marc La France).
- 136. Temporary fix for endianness problems in ATI driver (Marc La France).
- 135. Add XGetIMValues() prototype to Xlib.h (Marc La France).
- 134. Use a more reasonable numbering for recent binutils versions on Linux
- (Marc La France).
- 133. Fix dependencies for building drivers in a static server
- (Marc La France).
- 132. Update XDarwin Japanese localization to include rootless UI changes
- (Toshimitsu Tanaka).
- 131. Fix potential XDarwin bug in translating Darwin keymappings to X11
- keymaps with unrecognized modifier keys (Gregory Parker).
- 130. Make XDarwin ignore Caps Lock when checking for VT switch, except when
- the user's switch key preference includes Caps Lock (Gregory Parker).
- 129. Update XDarwin Cocoa UI and preferences for rootless mode. Add more
- explicit error message for users trying to run in Quartz modes without
- Quartz support. Remove unneeded info.nib files (Torrey T. Lyons).
- 128. Added XDarwin menu bar hiding/showing in rootless mode (Gregory Parker).
- 127. Fix DDC from reporting misleading information.
- (#4806 Andrew C Aitchison)
- 126. Patch to make VBE DDC honour the NoDDC option.
- Before this, NoDDC disabled only 2 of the 3 ways the server might
- ask the monitor for DDC infomation.
- (#4805 Andrew C Aitchison)
- 125. Stops xf86cfg complaining about non-video chips from Intel.
- Adds a few PCI card ids for Intel and one for Matrox.
- (#4804 Andrew C Aitchison)
- 124. Add support for NVIDIA nForce integrated graphics (Mark Vojkovich).
- 123. Fix a possible fatal crash in Xv when Xinerama is used (Mark Vojkovich).
- 122. Corrects typos in output of xf86cfg when checking modules and
- documents ddc module options (Andrew C Aitchison).
- 121. On Mac OS X, allow users to disable mouse acceleration changes by
- XDarwin (Torrey T. Lyons).
- 120. By default, don't build the MagicTouch input driver until a common layer
- interface is coded for it (Marc La France).
- 119. Fix Offscreen Image support for Xv/v4l in tdfx driver (Alan Hourihane).
- 118. Add MagicTouch driver (A.482, Mauro Ziliani)
- 117. Fix side effect in XFree86 of the recent changes to libxf86config
- (A.486, Knuts Andy).
- 116. Define Xutf8LookupString in X11-def.cpp for Cygwin/XFree86
- (#4790, Suhaib Siddiqi).
- 115. Turn on RandR build for Cygwin/XFree86 (#4789, Harold Hunt).
- 114. Import of Gregory Parker's rootless code for Mac OS X. The code has
- been cleaned up, reorganized, and modified to use Cocoa and fb
- (Gregory Parker and Torrey T. Lyons).
- 113. Freshen SCO port (#4709, J. Kean Johnston).
- 112. Fix int10 build for GCC 3.0 (Marc La France).
- 111. An attempt at fixing the i740 driver to not reference options before they
- are collected (Marc La France).
- 110. Fix for RandR build (Bill Crawford).
- 109. Fix 3Dfx Voodoo Banshee boards with timing issues (Alan Hourihane).
- 108. Allow Cygwin/XFree86 to be cross compiled (#4784-#4786 Harold Hunt).
- 107. Fix fatal bug in XAA's N-to-N CopyPlane acceleration (Elliot Lee).
- 106. Add RandR support to the Kdrive PCMCIA driver (Alan Hourihane).
- 105. Fix SharedLibGL to SharedLibGlx in cygwin.rules and some Cygwin/XFree86
- fixes including enabling backing store. (#4770, #4771 Harold Hunt).
- 104. xf86UnMapVidMem shows the wrong number of arguments in
- os-support/README.OS-lib (#4357, Guido Guenther).
- 103. Some driver loader symbol req/ref registration cleanups (David Dawes).
- 102. Cygwin/XFree86 fixes.
- Release pressed modifier keys when server looses focus.
- Remove declaration in lib/X11/lcGetConv.c (no longer needed).
- Remove unnecessary #if(n)def __CYGWIN__ in lib/X11/lcGetConv.c, one in
- lib/dps/csconndi.c and one in lib/font/Type1/regions.h.
- Add a new SharedDepLibraryTarget rule (#4763-#4768, Harold Hunt).
- 101. Fix bogus handling of BUS_CNTL Mach64 register (Marc La France).
- 100. Fix a typo in xc/programs/bitmap/Bitmap.h (#4757, Suhaib Siddiqi).
- 99. Add Cygwin/XFree86 manpage and minor tweaks (#4756, Harold Hunt).
- 98. Ensure PCI master aborts are allowed to complete normally on non-root
- buses (Marc La France).
- 97. Allow ChipScreenInit()'s to load modules during the first server
- generation (Marc La France).
- 96. Update XvMC header files to match the spec (Matthew Sottek).
- 95. Darwin build configuration changes:
- - Turn on building Xv and GLX extensions.
- - Make GLX and GLU build successfully.
- - Use Darwin's libz instead of building one for XFree86.
- - Use XFree86's standard compiler optimization flags per CPU type.
- (Torrey T. Lyons).
- 94. Fix Xserver/Imakefile typo which broke XDarwin build (Torrey T. Lyons).
- 93. Fix Darwin bindist files so that dynamic shared libraries are put in
- Xbin.tgz instead of Xprog.tgz (Torrey T. Lyons).
- 92. Fix problem in Ib/Xaw/AsciiSrc.c:nitStringOrFile() when descriptor 0
- is closed, as a zero return value from open(2) is taken as an error
- (splite at purdue.edu).
- 91. Fix glide driver that causes -configure to fail for all drivers
- (Alan Hourihane).
- 90. Don't define SVR4 on Cygwin/XFree86 (#4751, Suhaib Siddiqi,
- Alan Hourihane).
- 89. Don't override system commands specified in host.def on Cygwin/XFree86
- (#4753, Alexander Gottwald).
- 88. Fix cursor problem in server respawn's on Cygwin/XFree86
- (#4750, Harold Hunt).
- 87. Fix typo definition of CplusplusCmd in cygwin.cf
- (#4752, Alexander Gottwald).
- 86. Fix makedepend for use on Cygwin/XFree86.
- Use makedepend on Cygwin/XFree86.
- Fix SharedDepLibraryTarget so that build dependencies are correct,
- this fixes libGLU's build problem (Alan Hourihane).
- 85. Don't define MKSTEMP on Cygwin/XFree86 (#4725, Harold Hunt).
- 84. Fix memory count function for I128 (Mark Thompson).
- 83. Use TermcapLibrary as -lncurses instead of -ltermcap, fixes problem
- building xterm/resize on Cygwin/XFree86 (#4749, Harold Hunt).
- 82. Fix X server segfault in the GLX code (Brian Paul).
- 81. PseudoColor fixes for Cygwin/XFree86 (#4745, Harold Hunt).
- 80. Fix broken TGA driver (Alan Hourihane).
- 79. Fix FIFO reset trouble in tdfx driver by lowering the FIFO size due to
- suspect code in Glide3. (Alan Hourihane).
- 78. Fix Xvideo in tdfx driver when using YUY2 or UYVY data (Alan Hourihane).
- 77. Add two missing symbols to loader reference for the glint driver
- (#4740, Mike Harris).
- 76. Make Cygwin/XFree86 work at 8bpp, and re-arrange some command line
- flags. (#4743, Harold Hunt).
- 75. Fix some build issues on Cygwin/XFree86 (#4736, #4737, Suhaib Siddiqi).
- 74. Some Cygwin/XFree86 cleanups (#4735, Harold Hunt).
- 73. Fix XAA's incorrect acceleration of X-Render's repeated sources and
- masks (Mark Vojkovich).
- 72. Disable PCI resource conflict checking for Linux/Alpha (Jay Estabrook).
- 71. Fix Linux xf86GetPciSizeFromOS() parsing when the kernel is 64 bit
- and any base or size is larger than 32 bits in magnitude (#4732,
- David S. Miller).
- 70. Xinstall.sh updates and bug fixes (David Dawes).
- 69. Make XDarwin ddx pass up proper right and middle mouse button numbers
- and fix mouse button 5 (Christoph Pfisterer and Torrey T. Lyons).
- 68. Restore backwards compatibility from 4.0.[2,3] to 4.1.0 for
- the i810, r128 and radeon DRI drivers (Gareth Hughes).
- 67. Fix a problem when using patterns of horizontal lines with the mga
- video overlay (#A.442, Ewald Snel).
- 66. Remove duplicate XineramaLibrary section in X11.tmpl (#4731,
- Mike Harris).
- 65. Enable building DRI for Linux/ppc, and fix a drm-related bug
- for Linux/ppc (#4728, 4730, Michel Dänzer).
- 64. Document Options for the r128 and fbdev drivers (#4727, 4729,
- Michel Dänzer).
- 63. Add a BuildBindist switch which causes a file containing the XFree86
- version number to be installed in ProjectRoot, include this in
- the Xbin bindist tarballs, and turn on this switch in the bindist
- host.def files. The purpose is to allow the installer script to
- easily identify which version the bindist tarballs are (David Dawes).
- 62. Resync bindist and Xinstall.sh with changes made for 4.0.3 (David Dawes).
- 61. Fix the Shape extension's XShapeCombineMask to handle cases where
- src_mask is None according to the spec. This reportedly fixes an
- X server crash (#4715, Huver).
- 60. Exclude the DRI extension when NO_HW_ONLY_EXTS is defined (based on
- #4714, Frederic Lepied).
- 59. Fixup Cygwin/XFree86 after recent Xrandr changes (#4726, Harold Hunt).
- 58. Fix ATI Radeon driver on Alpha. Seems as though the BIOS doesn't
- like Re-POSTing and memory setup gets confused. (Jay Estabrook, Jeff
- Weidemeier)
- 57. Build fixes for Cygwin/XFree86 (#4710,#4711,#4713 Harold Hunt).
- 56. Fix problem with Xinstall.sh on Darwin 1.3.x (#A.431, Stefan Pantos).
- 55. Update Xinstall.sh and Darwin bindist directories to optionally
- install Quartz support and to add an x86 distribution (Torrey T. Lyons).
- 54. Install xterm.termcap and xterm.terminfo when installing xterm
- (Torrey T. Lyons).
- 53. Add missing return value for miSetPixmapDepths() (#4708,
- ISHIKAWA Mutsumi).
- 52. Fill in the v4l man page template with some useful information (#4707,
- Gerd Knorr).
- 51. Fix FFB OpenGL SwapBuffers (#4705, David S. Miller).
- 50. Fix some mi build warnings (#4695-4701,4704, Adam Sulmicki).
- 49. Work around a problem building the rstart specs doc with a symlinked
- build tree (David Dawes).
- 48. Fix Glint 300SX+Delta support. Add faster 500TX text acceleration
- based on other code (Alan Hourihane).
- 47. Remove SPARC-specific byte-swapping code that would not work on older
- SPARC CPUs (part of #4653, David S. Miller).
- 46. NULLify mapVidMem() and remove DEV_MEM define for Linux/SPARC
- (#4651, David S. Miller).
- 45. Fixing MTRR split code (hopefully) (Egbert Eich).
- 44. Fixing coredump when doing vbeFree() twice: S3 Virge and C&T
- (Egbert Eich).
- 43. Fixing HWCursor for mga driver in fbdev mode (Egbert Eich).
- 42. Make the entire source tree (except GLX) compile under SunOS/SPARC 5.7.
- Functions that have yet to be ported are FatalError()'s. This is
- temporarily controlled through a BuildXFree86onSparcSunOS #define in
- host.def (Marc La France).
- 41. Merge support for all Solaris/ix86 versions together (Marc La France).
- 40. Replace Xserver/Imakefile's DDXDIRn scheme with a more general scheme
- (Marc La France).
- 39. For GCC on SVR4 variants, use -fPIC rather than -fpic to generate shared
- objects (Marc La France).
- 38. Fix xmh's use of XtNewString() with getenv (#4694, Tim Waugh).
- 37. Xdm/PAM fixes: leave it to PAM to observe whether or not an account
- is locked, and reinitialize credentials after calling initgroups(),
- because sometimes the credentials pam_setcred() gives are in the
- form of group membership (#4693, Mike Harris).
- 36. Add an encodings file for standard box drawing characters for
- VT100-compatible terminals (#4691, Juliusz Chroboczek).
- 35. Fix warnings when building mieq.c (#4689, Adam Sulmicki).
- 34. Fix some bugs in the cz and sk entried in XKB's keymap/xfree86 file
- (#4692, Ivan Pascal).
- 33. Add 'hr' entries to XKB's keymap/xfree86 and rules/xfree86.lst files
- (#4687, Nerijus Baliunas).
- 32. Include <X11/Xutil.h> in shape.h to get Region typedef (#4686,
- Adam Sulmicki).
- 31. Acceleration bug fixes for GLINT Permedia1 (Alan Hourihane).
- 30. Ensure glint driver chips don't exceed the specified virtual sizes.
- (Alan Hourihane).
- 29. ATI DGA changes (Patrick Chase and Marc La France):
- - Add accelerated DGA primitives for Mach64 variants;
- - Add accelerated DGA transparent blits for Rage128 and Radeon;
- - Fix setting of DGA_CONCURRENT_ACCESS;
- - Take XaaNo* options into consideration.
- 28. Simplify DGAShutdown() (Marc La France).
- 27. Fix colourmap bug when switching out of a DGA mode (Marc La France).
- 26. Make it possible, but not required, for a driver to initialise DGA after
- XAA so that it may factor in any XaaNo* options in determining what DGA
- drawing primitives to support (Marc La France).
- 25. Prevent mode switches while DGA modes are set (Marc La France).
- 24. Remove all VGA'isms from the glint driver, it doesn't need them
- (Alan Hourihane).
- 23. Support the Delta in the glint driver, needed for boards that have
- the Delta connected to the rasterizer, as it acts as an arbiter for
- the bus. Resolves acceleration troubles. (Alan Hourihane).
- 22. Add an lv entry to XKB's keymap/xfree86 file (#4685, Nerijus Baliunas).
- 21. Fix some typos in XKB's xfree86.lst file (#4684, Nerijus Baliunas).
- 20. Add DDXOSVERRORF ifdefs to the XFree86 ddx code that make use of the
- OsVendorVErrorFProc feature (#4678, Michel Dänzer).
- 19. Convert the r128 driver's "UseBIOSDisplay" option into a more general
- "Display" option (#4678, Michel Dänzer).
- 18. Treat GL_POINT like GL_POINTS and GL_LINE like GL_LINES in the sunffb
- DRI driver (#4677, David S. Miller).
- 17. Some doc updates related to cross compiling (#A.413, Scott A McConnell).
- 16. Fix bsdLib.rules and bsdLib.tmpl problems that show up when
- X11ProjectRoot is defined (#4676, Johnny C. Lam).
- 15. Fix Trident XVideo colorkey at depth 15, 24 (Alan Hourihane).
- 14. Fix some apm driver bugs, including one that prevented acceleration
- from working (#4674, Loïc Grenié).
- 13. Fix 555 (depth 15) palette handling in the i810 driver (#4673,
- Andrew C. Aitchison).
- 12. [SECURITY] Fix authentication issues with mmap() on drm devices
- (Jeff Hartmann).
- 11. Add euro locales and some other missing locales to locale.alias and
- locale.dir (#4662, 4665, 4667, Mike Harris).
- 10. Fix Romanian XKB map (#4664, Mike Harris).
- 9. Spell Portuguese correctly in XKB lst files (#4663, Mike Harris).
- 8. Fix new ioperm calls in lnx_video.c for Alpha that are not needed
- (Jay Estabrook).
- 7. Add drivers for PCMCIA cards, HP VGA Out F1252A, and the ColorGraphic
- Voyager VGA card to the KDrive server. Tested on the Compaq IPAQ.
- Use -listmodes, to check resolutions supported.
- (Alan Hourihane).
- 6. Add RandR extension (Jim Gettys)
- 5. Fix int10 option handling and DDC max clock reporting (Marc La France).
- 4. Fix problems with assembler file dependencies when using gccmakedep
- with the build (Frederic Lepied).
- 3. Update Japanese localization of XDarwin help file (Toshimitsu Tanaka).
- 2. Update XDarwin man pages, help files, and version info. Add option to
- build XDarwin.app bundle for deployment (Torrey Lyons).
- 1. Finish DRI resync, including tdfx driver updates for textured video
- support (VA Linux Systems).
-
-XFree86 4.0.99.900 (18 May 2001)
- 561. Add an XKB description for Latvian (lv) keyboards (#A.411, Ilya Ketris).
- 560. Resync with DRI CVS trunk (VA Linux Systems).
- 559. Savage driver updates, including compiler warning fixes, document
- the "ShadowStatus" option in the man page, and fix an argument
- mismatch between ShadowWait and SavageWaitQueue (#4661, Tim Roberts).
- 558. Update the wacom driver to add a "ScreenNo" option to allow a tablet
- to be attached to a screen in a multi-head setup, and to add auto-
- detection of USB line and max parameters of USB tablets (#4640,
- Frederic Lepied).
- 557. Add a README file that has information about enabling the extra buttons
- on the IBM Rapid Access keyboard (#4639, Dennis Bjorklund).
- 556. Fix some Slovene/Slovak confusion in locale.dir/locale.alias files
- (#4638, Kamil Toman).
- 555. New XKB keymaps for cz and sk (#4634, 4637, Kamil Toman).
- 554. Updates for the iso8859-2 Compose file (#4634, Kamil Toman).
- 553. Check V_CSYNC in the r128 driver, and fix building with R128_DEBUG
- enabled (#4631, Michel Dänzer).
- 552. Mesa 3.4.2 (and later) import.
- 551. More build & warning fixes (Marc La France).
- 550. Fix bug that caused hardware cursors to be temporarily moved during mode
- switches (Marc La France).
- 549. Optimise HARDWARE_CURSOR_AND_SOURCE_WITH_MASK case (Marc La France).
- 548. Move xf86CursorScreenRec definition into xf86CursorPriv.h
- (Marc La France).
- 547. Fix BIOS retrievals in MGA driver (Marc La France).
- 546. Fix ATIProbe() for newer Rage128 and Radeon chips (Marc La France).
- 545. Add temporary workaround in ATI driver for interrupts that occur on
- PowerPC's upon PCI master-aborts (Marc La France).
- 544. Update XDarwin to use fb and support Render (Torrey Lyons).
- 543. Back out sunleo conversion to fb. This driver is too heavily dependent
- on cfb32 for a simple fb conversion (Marc La France).
- 542. Miscellaneous build/warning fixes (Marc La France).
- 541. More prep work for SunOS (Marc La France).
- 540. Fix libXft build on SunOS (Marc La France).
- 539. Another makedepend bug fix (Marc La France).
- 538. Fix use of xftcache utility during !UseInstalled builds (Marc La France).
- 537. Adds #XFree86LOADER define to wrap ModuleInfo related functions
- (#4654, Harold Hunt).
- 536. Add an option to the SiS driver to turn off Xvideo support
- (Ademar de Souza Reis Jr.)
- 535. Fix FreeType bug, use MAXFONTNAMELEN (#4652, Janusz Gorycki,
- Juliusz Chroboczek).
- 534. Fix hw/vfb for compilation on Cygwin/XFree86 (#4655, Harold Hunt).
- 533. Fix some Sparc platform issues with Pci resources and the glint
- driver (#4641-4641,4644-4648 David S. Miller).
- 532. Update glide, imstt, newport, rendition, suncg14, suncg3, suncg6,
- sunleo, suntcx, vga and vmware to use fb and support Render
- (Keith Packard).
- 531. XDarwin fixes:
- - Turn off building non-functional RENDER support.
- - Reduce disappearing cursor problems when switching with Dock.
- - Top of X display is no longer occasionally drawn black when
- switching from Aqua.
- (Torrey Lyons).
- 530. Update freetype2 bits to 2.0.2 version (Keith Packard).
- 529. Re-fix the Trident Video scaler support for Blade series chips
- (Alan Hourihane).
- 528. Fixed lbx to handle endian swapping without core dump (Egbert Eich).
- 527. Fixed MTRR region splitting (Egbert Eich).
- 526. Cleaned up option handling in int10 code (Egbert Eich).
- 525. Added options to specify the Video BIOS to use for POSTing a
- chipset (Egbert Eich).
- 524. Trident driver: added call to BIOS to enable unstretched mode when
- display is stretched. This should make the option "CyberShadow"
- obsolete. (Egbert Eich).
- 523. Attempt to fix video Support on Trident driver (Egbert Eich).
- 522. Added VBE DDC support to SiS driver (Egbert Eich).
- 521. Fixed Silicon Motion to unblank the display when driver fails
- in PreInit() (Egbert Eich).
- 520. Cleaned up handling of 'shadow status' in Savage driver
- (Egbert Eich).
- 519. Savage driver: fixed lockups for Savage4 when loading colormap,
- manipulating the HW cursor, doing certain blit operations
- 518. Cleanded up DDC code in mga driver (Egbert Eich).
- 517. Fixed KGA handling in i740 driver (Egbert Eich).
- 516. Converted i740 and Silicon Motion drivers to fb (Egbert Eich).
- 515. Added calls to vbeFree() or xf86FreeInt10() to C&T, glint,
- mga, neomagic, nv, s3v, tdfx and trident drivers to clean up
- shared memory segments (Egbert Eich).
- 514. Reworked video support in C&T driver, cleaned up block handler
- (Egbert Eich).
- 513. C&T driver: introduced a delay when setting the cursor image for
- the first time after a mode change (Egbert Eich).
- 512. Fixed R128CCE_RESET in r128 driver to do a reset only when dri
- is enabled (Egbert Eich).
- 511. Rewrote readPciBIOS() and getValidBIOSBase() (Egbert Eich).
- 510. Fixed xf86Info structure in xf86Globals.c to match prototype
- (Egbert Eich).
- 509. -
- 508. Fix XDarwin install problems with DESTDIR handling and with soft links
- to the XtAppAddTimeOut manpage (Christoph Pfisterer).
- 507. Add Error message output in Cygwin/XFree86 (#4632, Harold Hunt).
- 506. Fix xdm when HasPam defined, and enable Pam support on Solaris 2.6 and
- later (#A.401, #A.402, #A.403, Rainer Orth).
- 505. Add Croatian keyboard for xkbcomp from Slovenian keyboard layout
- (#A.405, Vlatko Kosturjak).
- 504. Fix XvQueryAdaptors when there is no adaptors found
- (#A.394, Jamie Strachan).
- 503. Remove a stray INCLUDES in Xmuu/Imakefile when snprintf isn't used.
- Set the Permedia2 DAC Mask to 0xFF.
- PCI ROM space address access patch for LynxOS PPC.
- Change limit of motoppcBusAddrToHostAddr for LynxOS PPC.
- Include <sys/wait.h> for LynxOS in os/osinit.c.
- Define CBAUD, when it's missing in xterm, on LynxOS.
- (#A.387, Stuart Lissaman).
- 502. Add SiS 86C204 to xf86PciInfo.h (#A.382, Carlos Manuel Duclos Vergara).
- 501. Fix mga font corruption problems introduced with the recent addition
- of big-endian support (#4629, Andrew C. Aitchison).
- 500. Update for the mga driver's man page (#4628, Andy Isaacson).
- 499. Add more drivers to the default build on Linux/mips (#4623,
- Guido Guenther).
- 498. Move the vgahw module load/init after the PROBD_DETECT handling
- in the i810 driver's PreInit(), which fixes a segv when using
- the X server's -configure option (#A.378, Leandro Martelli).
- 497. Fix a problem with Radeon VE cards failing to enable its video output
- (#A.376, Paul Stewart).
- 496. Fix some DRI-related build dependency problems (David Dawes).
- 495. Fix some drivers (including tdfx, r128, radeon, ark, imstt) that weren't
- respecting the Virtual resolution requested in the config file
- (David Dawes).
- 494. Fix some offscreen memory calculation/allocation problems in the
- tdfx driver (David Dawes).
- 493. Fix a bug in localResizeOffscreenLinear when checking widths
- (Alan Hourihane).
- 492. Update Japanese localization for XDarwin Dock related fixes
- (Toshimitsu Tanaka).
- 491. Fix restoring of text mode fonts on Permedia3 (Alan Hourihane).
- 490. Provide workaround for an apparent bug in Mac OS X 10.0.2 that causes
- XDarwin to lose the cursor when switching to X using the Dock icon.
- Fix "Application not responding" message in XDarwin's popup Dock menu
- (Torrey Lyons).
- 489. Hardware cursor documentation update (Marc La France).
- 488. XVideo extension support in ATI driver for generic (e.g. v4l) adapters
- (based on a patch by Ignacio Garcia Etxebarria).
- 487. Fix ATI driver bug that caused the hardware cursor to move after mode
- switches (Marc La France).
- 486. Fix off-by-one error in screen positioning after a mode switch
- (Marc La France).
- 485. Backout part of 479 and implement a proper fix in the ATI driver
- (Marc La France).
- 484. Fix palette problem on NVIDIA Riva128 in DGA mode (Mark Vojkovich).
- 483. setxkbmap patch that:
- - fixes bug in comand line parser
- - makes debug output more comprehensive
- - prevent to use 'variant' from previous call if 'layout' name changed.
- (#4627, Ivan Pascal)
- 482. Documents Xaa specific options in the XF86Config manual page
- (#4616, Branden Robinson)
- 481. Add Mouse 3 Button emulation to Cygwin/XFree86 (#4626, Harold Hunt,
- Alexander Gottwald).
- 480. V4L documentation fix (Marc La France).
- 479. Fix bug in generic hardware cursor RealizeCursor entry
- (Marc La France).
- 478. Extend the XFree86-VidModeExtension to accept gamma ramps from the
- client rather than just rgb gamma values (Mark Vojkovich).
- 477. More Xv updates for the Permedia3 (#4625, Sven Luther).
- 476. Build Cygwin/XFree86 with -ansi -pedantic (Alan Hourihane).
- 475. Limit the number of PCI buses to 128 on ix86 (Marc La France).
- 474. More fixes for the handling of unassigned PCI bases (Marc La France).
- 473. Fix option handling in most drivers so that per-screen options work
- correctly (David Dawes).
- 472. Resync with DRI CVS trunk (VA Linux Systems).
- 471. Import latest Mesa 3.4.x branch.
- 470. Add a PIOOffset value plus readEnable and writeEnable function pointers
- to the vgahw rec. The former allows vgahw to be used for VGA registers
- that are shadowed in I/O space. The latter allow the VGA_ENABLE
- register to be accessed in similar way to most other VGA registers.
- Add vgaHWEnable() and vgaHWDisable() functions (David Dawes).
- 469. Disable HWcursor for CyberBladeXP chips (Alan Hourihane).
- 468. Fix a Trident Cyber9388 setup issue (Alan Hourihane).
- 467. Fix man page building and installing on Darwin. To be safe we assume
- the Darwin file system is case insensitive since one common variety is,
- ie. HFS+ (Torrey Lyons).
- 466. Improve interoperability between Aqua pasteboard and X cut buffer with
- XDarwin (Gregory Parker).
- 465. Updates for Cygwin/XFree86 (Harold Hunt).
- 464. Provide more robust default preferences for XDarwin (Torrey Lyons).
- 463. Remove map84 keyboard map from Cygwin/XFree86 build (#4621, Harold Hunt).
- 462. Disable xload on Cygwin/XFree86 (Alan Hourihane).
- 461. Remove an errorneous i++ from os/xdmcp.c with -class (Alexander Gottwald).
- 460. Allow Cygwin/XFree86 to build with cygipc support (Alan Hourihane).
- 459. Small XDarwin fixes:
- - Don't leak IOService objects when searching for desired screen.
- - Eliminate chance of SIGPIPE while shutting down.
- - Revert to Aqua cursor when quit by exiting main client.
- - Stop console error messages when using mouse button 3.
- (Torrey Lyons and Christoph Pfisterer).
- 458. At Linus' request, make linux/int10 module deal with shmat() errors
- (Marc La France).
- 457. Fix makedepend's integer value parsing and make it understand GCC's
- #include_next directive as found in glibc & libc5 (Marc La France).
- 456. Xterm patch #156 (Thomas Dickey): change preference of types for
- selection-target between UTF8_STRING and STRING (Juliusz Chroboczek),
- fixes for configure script and documentation (report by Adam
- <adam@cfar.umd.edu>).
- 455. Fix XDarwin so display number preference is followed (Torrey Lyons).
- 454. Fix Xserver/Imakefile for Cygwin/XFree86 (Harold Hunt, Alan Hourihane).
-
-XFree86 4.0.99.3 (26 April 2001)
- 453. Loader fixups for Sparc's (Marc La France).
- 452. Fix dependencies for libGLU on Cygwin/XFree86 (Alan Hourihane).
- 451. Make xdm & xfs compile on Cygwin/XFree86 (Alan Hourihane).
- 450. Update Japanese localization of XDarwin.app's Preferences window
- (Toshimitsu Tanaka).
- 449. Don't build clients that require extension libraries unless those
- libraries are being built (#A.386, Scott A McConnell, David Dawes).
- 448. Fix the BuildXinerama test in Xserver/Imakefile (#4615, Harold Hunt).
- 447. Ignore MakeDllModules when DoLoadableServer isn't set (#4613,
- Guido Guenther).
- 446. Don't define the <Ctrl>T compose sequences in the iso8859-1 compose
- map by default (#4611, Mike Harris).
- 445. Allow the nls compose data files to be pre-processed (David Dawes).
- 444. Fix some problems introduced with the internationalisation of twm
- (#4607, Juliusz Chroboczek).
- 443. Fix dpsinfo so that the correct headers are included (#4606,
- Juliusz Chroboczek).
- 442. Fix mismatches between the way xlsfonts interprets font properties and
- the way they are defined in the XLFD spec (#4604, Jochen Voss).
- 441. Add entries for German iso-8859-15 locales (#4603,
- Philipp Matthias Hahn).
- 440. Cleanup build in Xserver/GL/mesa, making use of the earlier cleanups in
- the lib/GL build (David Dawes). #4602 is redundant as a result.
- 439. [SECURITY] Check for negative reply length/overflow in _XAsyncReply
- (Xlib) (#4601, Mike Harris).
- 438. New 'hu' xkb symbols file (#A.364, Peter Soos).
- 437. Trident driver fixes for PC98 platforms (#4612, Akio Morita).
- 436. Convert apm driver from cfb to fb (Alan Hourihane).
- 435. Fix makedepend for '//' comment parsing and symbols that contain
- expressions (Marc La France).
- 434. Fix a problem with the mga G400 2nd head going into power saver mode
- when it should be blanked, and enable DPMS for the 2nd head (#A.358,
- Craig Leres).
- 433. Fix a horizontal resolution problem that shows up with mga Xv (#A.365,
- Ewald Snel).
- 432. Work around a refresh rate problem when using custom modelines that
- have a refresh rate > 100Hz with the Matrox HAL library (#A.360,
- Ewald Snel).
- 431. XDarwin fixes:
- - Provide work around for kernel/driver issue on Darwin 1.3 that
- causes the kernel keymapping to be empty on Mac portables.
- - Command line -dpi option is no longer ignored.
- (Torrey Lyons).
- 430. Ensure that the X-TT module isn't built if the Xserver isn't being
- built (#4594, Chu-yeon Park).
- 429. Make xconsole try to reopen the /dev/xconsole pipe when it gets an EOF
- (#4593, Jeff King).
- 428. Prevent an infinite loop (or unpredictable behaviour) in xmodmap (#4592,
- Peter Maydell).
- 427. Add a font substitute for the zh locale (#4590, submitted by Branden
- Robinson).
- 426. Make the backspace key definitions for the xkb macintosh/us and
- dvorak layouts consistent with the default 'us' layout (#4588, 4589,
- Branden Robinson).
- 425. Update for the sessreg man page (#4587, Branden Robinson).
- 424. Add a font substitute for the ko locale (#4586, Changwoo Ryu).
- 423. Avoid using fileno() in xauth's signal handler, and write messages to
- stderr rather than stdout (#4585, submitted by Branden Robinson).
- 422. Fix nested comment warnings in dix/gc.c (#4584, Branden Robinson).
- 421. Include <stdlib.h> in two lbxutil files to get malloc/free prototypes
- (#4583, submitted by Branden Robinson).
- 420. Remove duplicate paragraph in xdm man page (#4582, Branden Robinson).
- 419. Fix line numbers in error messages when parsing .twmrc files (#4580,
- Topi Miettinen).
- 418. Fix backwards font glyphs in the ati/Mach64 driver for big endian
- platforms (#4579, Michael Dänzer).
- 417. Add a build-time option to xf86config to make it append the major version
- number to the config file name (David Dawes, prompted by #4577,
- Branden Robinson).
- 416. xf86config build fix for non-GNU make (Marc La France).
- 415. Build fix for Summa driver on SunOS/Sparc (Marc La France).
- 414. compiler.h cleanup (Marc La France).
- 413. More DependDefines, OS_DEFINES and EXT_DEFINES build fixes
- (Marc La France).
- 412. Fix installation of specs docs (#4575, Branden Robinson).
- 411. Make Cygwin/XFree86 call miSetPixmapDepth for RENDER extension
- (Alan Hourihane).
- 410. Xterm patch #155 (Thomas Dickey): correct change to return-type of
- in_put(), which caused problem with UTF-8 (fixed by Bruno Haible).
- 409. Some unobstrusive preparations for SunOS/Sparc (Marc La France).
- 408. Remove unnecessary libxf86_os link into Xnest & Xvfb (Marc La France).
- 407. Disable building of SuperProbe by default (Alan Hourihane).
- 406. Make OS_DEFINES available to all server Makefiles (Marc La France).
- 405. Add support to xman for parsing '\" <string> formatting hints.
- Also cleanup some of the vendor-specific definitions and fix
- processing of mandoc pages on FreeBSD (based on #4573,
- Branden Robinson, David Dawes).
- 404. Fix default mailbox selection in xbiff for Linux, add recognition of
- $MAIL, and update the man page accordingly (based on #4571,
- Branden Robinson).
- 403. Remove redundant PCI id definitions in the tdfx driver, and clean up
- the messages printed when the DRI can't be enabled because the bpp
- isn't supported (based on #4570, Branden Robinson and #4598,
- Antti Tapaninen). Also, re-enable soft booting.
- 402. Install the XftConfig file under $(CONFDIR), with a link from the
- usual place (based on #4569, Branden Robinson).
- 401. Update the Debian section on linux.cf (#4568, Branden Robinson).
- 400. Startx fixes/enhancements, including:
- - Fix argument processing.
- - Set XAUTHORITY.
- - Don't overwrite existing cookies, and remove ones added for this
- session when exiting.
- - Deallocate the VT that X was using.
- - Update the man page.
- (based on #4567, Branden Robinson, Henry T. So, Jr).
- 399. Implement two new driver-provided options in the common cursor code and
- use them to work around hardware bug that causes flickering Mach64
- hardware cursors (Marc La France).
- 398. Integrate SiS driver changes (Ademar De Souza Reis).
- 397. Initialize Elsa GloriaXXL (GLINT) framebuffer properly (Alan Hourihane).
- 396. Fix bug where XDarwin.app would not hide the X display when it was no
- longer the active application (Torrey Lyons).
- 395. Make XDarwin.app ignore .xserverrc file when started from the GUI so
- that it starts correctly (Torrey Lyons).
- 394. Cygwin updates (#4557, 4558, 4563, Suhaib Siddiqi).
- 393. Document the usage of the -server option in the xfsinfo man page (#4562,
- Mike Harris).
- 392. Fix xfs man page problem (#4561, Mike Harris).
- 391. Fix a crash that happens when a font encoding has no aliases and it is
- invoked using a non-canonical name (#4560, Takeshi Miyasaka).
- 390. Add imake/config support for distinguising big endian and little endian
- MipsArchitecture types (#4556, Florian Lohoff).
- 389. Add support to the mga driver for auto-detecting the display type
- (#4555, Stephane Duguay (Matrox)).
- 388. Savage driver updates, including:
- - Enable the Render extension.
- - Make the DGA mode setup look more like the other drivers.
- - First cut at Xvideo for the Savage4.
- - Add a "ShadowStatus" option, which is a reliable workaround for the
- scrolling hang that many experience.
- (#4554, Tim Roberts).
- 387. Enable wide character support for NetBSD 1.5P and later (#4553,
- Matthias Scheler).
- 386. Add offscreen image support to the i810 driver (for Xv), and fix
- physMemBase (#4552, Matthew Sottek).
- 385. Fix bad cut&paste update to the sunffb driver (#4551, David S. Miller).
- 384. Fix "DriDrivers" typo in the sparc section of xfree86.cf (#4550,
- David S. Miller).
- 383. Update UCS 75dpi and 100dpi fonts, including adding UCS versions of
- the UTBI and UTB fonts that were in the unnec_75dpi and unnec_100dpi
- directories. The other "unnec" fonts are also moved over (#4548,
- Markus Kuhn).
- 382. Make the v4l driver module keep searching for more devices if the first
- one can't do overlay (#4545, 4614, Gerd Knorr).
- 381. Bug fixes for Xv support using a Permedia3 chip (#4564, Sven Luther).
- 380. Xterm patches #151, #152, #153, #154 (Thomas Dickey):
- - improve select/paste of COMPOUND_TEXT and UTF8_STRING (Juliusz
- Chroboczek, Bruno Haible).
- - fixes for erase operations (Alexander V Lukyanov).
- - correct ifdef for bold overstriking when built to support UTF-8.
- - change resource corresponding to "-T" option to match Xt library's
- "-title", i.e., ".title" rather than "*title" so the command-line
- options are interchangeable as documented (Debian bug report #68843).
- - modify "RequestResize()" function to save/restore window manager hints
- (Debian bug report #79939).
- - improved error checking for input-method initialization.
- - minor fixes for terminfo entries.
- - various build/portability fixes.
- 379. XDarwin fixes:
- - Don't SetUID XDarwin X server. (The IOKit doesn't need it.)
- - Startup message reports correct display mode.
- - XDarwin.app is now installed in /Applications by default.
- - Update xinit server name list.
- - "make clean" now works for a non-root user.
- (Torrey T. Lyons)
- 378. Make XDarwin correctly handle color hardware cursors in Quartz mode
- (Gregory Parker).
- 377. Fixes to the XDarwin application:
- - Display menubar when started without a splash screen.
- - Query before quitting from Aqua when started with startx.
- (Torrey T. Lyons).
- 376. Update Japanese localization for XDarwin application (Toshimitsu Tanaka).
- 375. Fix byte ordering and static colormap issues with XDarwin server
- on x86 hardware (Rob Braun).
- 374. Fix problems with XDarwin hardware cursor support in Quartz mode
- (Gregory Parker).
- 373. Resync with DRI CVS trunk (VA Linux Systems).
- 372. Fix bug in XvMC protocol (Bob Paauwe).
- 371. Ensure NoInt10 is used for PC98 (Alan Hourihane).
- 370. Fix PC98 issues with the trident driver (#4547, Akio Morita).
- 369. Add a NoInt10 option to the int10 module, allowing it to be disabled
- per entity (Alan Hourihane).
- 368. Fixes to the XDarwin application:
- - X clients are now started correctly.
- - Shuts down cleanly.
- - Removed erroneous NSString releases in quartzCocoa.m.
- - Dragging with mouse button 3 or higher depressed produces events.
- (Christoph Pfisterer and Torrey Lyons)
- 367. Make the ramdac module for the IBM RGB640 DAC work at depth 15
- (Alan Hourihane).
- 366. Fix interference between acceleration and hardware cursors on Mach64
- variants (Marc La France).
- 365. Fix xload so it is functional on Darwin OS (Rob Braun).
- 364. Mac OS X specific fixes:
- - Fix typo in XDarwin startup program that could cause crash with
- many command line options.
- - Move Show/HideMenuBar() call to main thread so that XDarwin
- application displays a menu bar on the Mac OS X desktop.
- (Greg Parker).
- 363. XDarwin application fixes including:
- - Fix bugs causing XDarwin preferences to not be saved correctly.
- - When using system beep, turn off bell when beep volume is set to 0.
- (Christoph Pfisterer).
- 362. Fix building of dpsops.h and psops.h in correct order (Alan Hourihane).
- 361. Change xvmc.h to xvmcext.h to avoid case-(in)sensitive name clash with
- XvMC.h for Cygwin/XFree86 (Alan Hourihane).
-
-XFree86 4.0.99.2 (6 April 2001)
- 360. Fbdev driver updates, including:
- - Switch from shadowfb to mishadow.
- - Add RENDER extension support.
- - Add DGA support.
- - Fix SaveScreen function
- - Blank screen in ScreenInit so the former framebuffer contents aren't
- visible
- (#4544, Michel Dänzer).
- 359. Remove references to th_TH compose file from compose.dir (#4543,
- Theppitak Karoonboonyanan).
- 358. Fix for improper setting of the maxHValue limit in the tseng driver.
- This makes modes like 1152x864@24bpp possible (#A.355, Stanislav Brabec).
- 357. Fix a hw cursor related lockup that shows up with some mga G400
- 16MB OEM single head cards (#A.351, Ewald Snel).
- 356. Fix the XKB macintosh/it mapping (the accent-related keys were wrong)
- (#A.349, Andrea Ghirardini).
- 355. Add XKB descriptions for the extra keys on a Chicony internet
- keyboard (#A.356, John Gladkih).
- 354. Add support for the internal input device interface to mice on
- Solaris 8, and make it the default protocol ("VUID") (#A.340,
- Marcus Comstedt).
- 353. Add XKB descriptions for the extra keys on an IBM Rapid Access II
- keyboard (#A.332, Patrick D'Cruze).
- 352. Fix a typo in xvidtune (#A.327, Peter Breitenlohner).
- 351. Fix Linux/libc5 build problem in the bigfont extension code (#A.327,
- Peter Breitenlohner).
- 350. Fix typo in Chooser.ad (#A.327, Peter Breitenlohner).
- 349. Big endian and PowerPC support for the mga driver (#4540, Ani Joshi).
- 348. Big endian support for the tdfx driver (#4539, Ani Joshi,
- Nicolas Dimitrijevic).
- 347. Build the tdfx and imstt drivers on PowerPC platforms (#4538, Ani Joshi).
- 346. Add IMS (Integrated Micro Solutions) PCI data for the TwinTurbo128
- and TwinTurbo3D (#4537, Ani Joshi).
- 345. Fix some color and accel glitches in the imstt driver (#4536, Ani Joshi).
- 344. Add ISA I/O support for PowerPC Linux using the __NR_pciconfig_iobase
- syscall (#4535, Ani Joshi).
- 343. New Xwin server code from the Cygwin/XFree86 project. This version
- is more portable across Win32 platforms. Changes include:
- - Use fb and shadowfb, and use the faster of GDI blitter,
- DirectDraw blitter and DirectDraw4 blitter to update damaged
- regions. The video card's framebuffer is no longer mapped.
- - Works correctly at depths > 8, but colors are not correct at depth 8.
- - Uses the standard Win32 API messages for processing keyboard and
- mouse input rather than using DirectInput. This is more reliable.
- - Improved internal structure and coding conventions.
- - Builds completely from the XFree86 tree using gcc (the Visual C++
- compiled xf_dx.dll is no longer used).
- - The new server can run on machines that don't have DirectDraw/DirectX
- installed (or installed but not operable) by falling back to the
- GDI blitter. The best drawing interface is determined at startup,
- but this can be overriden with the -engine command line option.
- - The Xrender extension is now supported.
- - Command line option is available to run in full screen mode.
- (#4531, 4532, 4534, Cygwin/XFree86 project including Harold L Hunt II,
- Suhaib M Siddiqi, Dakshinamurthy Karra, Peter Busch).
- 342. v4l driver bug fixs: catch xalloc() failures, and set the depth
- correctly for the VIDIOCSPICT ioctl (#4530, Gerd Knorr).
- 341. Add a driver for VMware virtual SVGA devices. This is for use
- by X servers running under a VMware guest OS (#4529, VMware, Inc).
- 340. Remove Cygwin-specific #ifdef in Xserver/os/Waitfor.c, which fixes
- a crash (#4528, Suhaib Siddiqi).
- 339. Cygwin build fixes (#4527, Suhaib Siddiqi).
- 338. Updates to the "citron" input driver. It includes compatibility
- with the Winbond SIO chip (83977EF), and some new commands to
- communicate to the touch driver from an application program
- (via XChangeFeedbackControl) (#4526, Peter Kunzmann, Citron).
- 337. Updates to the "summa" input driver, including:
- - "Resolution" replaces "LPI" as option for setting resolution.
- - Fixed device reporting to give the actual tablet area size and
- resolution.
- - Tested and working with: SummaSketch3, Hitachi_1217D, a couple of
- others emulating the Summa protocol.
- - Reduce debug message verbosity.
- - Various cleanups.
- (#4525, Huver).
- 336. SunFFB driver bug fixes, including:
- - Be smarter about restoring Kernel framebuffer state.
- - Cure build errors when debug defines are enabled.
- - Do not enable DRI or DGA acceleration if NoAccel option is specified.
- (#4524, David S. Miller).
- 335. Mga G450 dual head support, (#4523, Luugi Marsan (Matrox) and
- David Woodhouse).
- 334. Fix missing xfree -> Xfree mapping in the Type1 font library code (#4521,
- Juliusz Chroboczek).
- 333. Make sure that an initialization assumption in parse_fontdata() in
- lib/X11/omGeneric.c is met (#4520, Jonathan Kamens).
- 332. Add checksum verification to detect monitors that give incorrect EDID
- data (#4517, Andrew C Aitchison).
- 331. Fix checking of LD_ELFDLOBJECT on big-endian systems (#4514,
- Guido Guenter).
- 330. Add an update.fonts target/rule for maintainer use to update
- the latin1 fonts in the source tree that are derived from the
- ISO10646-1 masters (David Dawes).
- 329. Update UCS misc fonts, which includes the addition of the missing
- 4 DEC VT100 graphics characters from Unicode 3.2 (#4533, Markus Kuhn).
- 328. Handle build-time generation of 8 bit fonts from the UCS versions,
- rework the way this is organised, and allow some better control over
- which fonts are built/installed (David Dawes).
- 327. Add UCS versions of most of the 75dpi and 100dpi bdf fonts, and generate
- 8-bit subsets of them. Also, remove the now-redundant latin2
- bdf font directories (#4512 Markus Kuhn).
- 326. Add support for Trident CyberBladeXP and CyberBladeXPm (mobile)
- (Alan Hourihane, Robert V Fleisig).
- 325. Add XKB descriptions for the extra keys on an IBM Rapid Access keyboard
- (#4510, Dennis Bjorklund).
- 324. Update Status and i810 docs to mention i815 support and FreeBSD support
- (#4509, Andrew C Aitchison, David Dawes).
- 323. Xprt fixes to make it closer to X.org version (Danny Backx).
- 322. Fix for reading PCI resource data on Linux/alpha (#4508,
- Ivan Kokshaysky).
- 321. Add XKB descriptions for the extra keys on a "Logitech Internet Keyboard"
- (#4505, Matthew Hand).
- 320. Build shared libGL and DRI client modules on Linux without PIC for
- performance reasons.
- 319. Updates to glxinfo (Brian Paul).
- 318. Add glxgears (Brian Paul).
- 317. glxinfo needs libGLU (Marc La France).
- 316. Rage128 fix to Cards database (Marc La France).
- 315. Minor fix to PCI resource overlap handling (Marc La France).
- 314. Loader code simplification and IA-64 cache flushes (Marc La France).
- 313. Workaround in the ATI driver for troublesome interaction between loader
- and compiler optimisation (Marc La France).
- 312. Warning fixes for `gcc -fno-builtin`, which appears to be the default on
- some systems (Marc La France).
- 311. Add glyph transformations to Xft (Tuomas J. Lukka)
- 310. Add XftCache creation to fonts/Type1 (Keith Packard)
- 309. Add Xmuu library for non-Xt/Xaw dependent applications (Jim Gettys)
- 308. Add i810 and Xv support to kdrive (Pontus Lidman)
- 307. Fix Radeon CPUToScreen acceleration on Alpha platforms (Jay Estabrook).
- 306. Fix bug in ServerLayout option handling when there's no ServerFlags
- section present (David Dawes).
- 305. Allow fb to access 16bit devices (Alan Hourihane).
- 304. XvImage support for GeForce chips in the nv driver (Mark Vojkovich).
- 303. XvMC build fix (Marc La France).
- 302. Fix recently introduced bug in xf86cfg (Marc La France).
- 301. Re-instate warning fixes clobbered by DRI merge (Marc La France).
- 300. Ignore disabled non-video PCI ROMs (Marc La France).
- 299. Hardware cursor implementation for Mach64 variants (William Blew,
- Ani Joshi, Marc La France).
- 298. Some endianness fixes in the ATI driver (incomplete) (Marc La France).
- 297. Fix MMIO ordering problems for Mach64 acceleration (Marc La France).
- 296. Fix ATI driver behaviour when it finds the LCD panel has been disabled
- on entry (Marc La France).
- 295. Fix ECP clock for GATOS (Vladimir Dergachev).
- 294. Undo part of CHANGELOG 36 (Marc La France).
- 293. Rework the building of libGL and the DRI drivers (David Dawes).
- 292. Update greek keyboard layout and compose map.
- (#4513, Katsaloulis Panagiotis)
- 291. Fix problems in Xnest when MouseKeys is enabled and patched it to
- use XKB to allow clients to change keyboard description and
- configuration whithout interfering with the "real" X server
- (Paulo César Pereira de Andrade).
- 290. Dvorak keymap fix (#A.343, J Phillips).
- 289. Some vesa driver updates, including:
- - Wrap CloseScreen().
- - Call xf86PrintModes().
- - Add error messages for when PreInit bails out for lack of modes.
- - Rework how the debugging information is printed.
- _ Avoid some build warnings.
- (David Dawes)
- 288. Make it possible to call xf86PrintModes() when there is no hsync or
- refresh data available, like from the vesa drivers (David Dawes).
- 287. Add a "cleanlinks" script for cleaning up dangling links in lndir-created
- shadow trees (David Dawes).
- 286. Resync with DRI CVS trunk (VA Linux Systems).
- 285. Make extension headers available when the extension is enabled but the
- extension's client library is disabled (David Dawes).
- 284. Make it possible to enable building selected extension libraries
- when BuildServersOnly is set, and allow independent control of
- building docs and clients (David Dawes).
- 283. Import latest Mesa 3.4.x branch.
- 282. Lower the default fifo threshold for PM3 chips (Alan Hourihane,
- Rafael Barbalho, 3DLabs).
- 281. Fix 3DLabs GLINT driver for use the Flat Panels, use the UseFlatPanel
- option. Tested with the SGI 1600SW and Permedia3 board (Alan Hourihane).
- 280. Fix glxinfo to query default display (Alan Hourihane).
- 279. Convert TGA driver to use fb (Alan Hourihane).
- 278. Fix XTRAP typo in miinitext.c (Damien Touraine).
- 277. Major updates to the XFree86(1) man page (David Dawes).
- 276. A new (perl) version of the mkhtmlindex script that works better than
- the shell version (David Dawes).
- 275. Fix the `make depend` scripts to accept -U flags and not require a blank
- in their -f flag (Marc La France).
- 274. Bump the video and input driver ABI minor numbers.
- 273. Add xf86SetRealOption() (Huver).
- 272. Change Xdarwin do that it processes all pending events instead of
- just the oldest one on ProcessInputEvents() call ,
- Quit Xdarwin cleanly, wether from the Xserve or from Cocoa front end,
- Fix a case typp which cases the Xdarwin server not to start if
- installed on a case sensitive file system like UFS.
- (#4504, #4507, #45011, Gregory Parker, Torrey T. Lyons).
- 271. Move Section DRI/Endsection into the DRI function to be consistant with
- all of the other sections. (Quentin Neill)
- 270. Made xf4bpp code moer 64bit clean (still doesn't work on Alphas)
- (Egbert Eich).
- 269. Removed disable/enable interrupt call on ia64 platforms.
- The machine instruction is privileged and not permitted in user space
- (Egbert Eich).
- 268. Improved mode setting in Trident driver; added code to ValidMode
- to reject any modes whose size is larger than the physical LCD
- size if LCD is enabled (Egbert Eich).
- 267. Modified error message in TDFX driver to give user a clue how
- to avoid error (Stefan Dirsch).
- 266. Fixed appearant typo in SMI driver (Egbert Eich).
- 265. Changed Savage driver to unmap memory when exiting PreInit() and
- maps it on every call to ScreenInit() (Egbert Eich).
- 264. Changed handling of failed vbe call in rage 128 driver.
- No the driver doesn't fail any more (Egbert Eich).
- 263. Integrate the currently Panix-specific keycodes into atKeynames.h,
- since they're not really Panix-specific (David Dawes).
- 262. Fix problem with a NULL pointer in Xv Xineramification (Benjamin Monate).
- 261. Bug fixes and improvements for mouse 3 button emulation state machine
- (Andrew Pimlott).
- 260. Updates for Hurd support (#A.324, Marcus Brinkmann).
- 259. Add call to setlocale() in xev (#A.322, Eugene B. Byrganov).
- 258. Add support fo the charset Big5HKSCS to the X-TrueType module, as
- well as some basic XLocale support for it (#A.321, Roger So).
- 257. Fix core dump in XqueueMousePreInit (#A.317, Fiel Cabral).
- 256. Allow the mga driver's "DigitalScreen" option to work for the first
- head (#A.297, Niels Gram Jeppesen).
- 255. Add zh_CN.GBK locale support (#A.293, Yong Li).
- 254. Fix a problem with the ThinkingMousePS/2 protocol handling of left
- movement (#A.292, Ian Remmler). (This has been in 3.3.x since 3.3.4.)
- 253. Make xdm Xinerama-aware so that it can avoid splitting login and
- chooser windows across physical screens (#A.276,
- Dmitry Yu. Bolkhovityanov).
- 252. Fix a resource allocation bug in the DBE code (#A.271, Bill Rugolsky).
- 251. Only enable Xv support for the 630 in the sis driver (#A.263, Nick Lamb).
- 250. Modify the sis driver to prefer 24bpp framebuffer layout. Perhaps not
- all support 32bpp? (#A.263, Nick Lamb).
- 249. Add missing byte to Intellimouse init string, which fixes problems
- that show up with some KVM switches (#A.258, Seung-Hyeon Rhee).
- 248. Some DRM module fixes for FreeBSD 5-current (#A.242, Andrew Atrens).
- 247. Fix xterm build on Solaris 2.5.1 (based on #A.282 from mark at zang.com).
- 246. Make the Linux/PPC "custom keycodes" choice a run-time option instead
- of a build-time option (#A.240, Franz Sirl).
- 245. Add support to splitting WC MTRR regions on Linux when the regions is
- not aligned on a size boudary (#A.238, _Usul John Obscurant).
- 244. Add Acecad support to the "summa" input driver (#A.237, Arpad Gereoffy).
- 243. Don't try to map 64K blit window aperture on older trident chips
- (Alan Hourihane).
- 242. V4L driver cleanups and Xineramification (#4502, Gerd Knorr).
- 241. Make the X server and the Mac OS X front end run in a single process.
- Other build fixes for Darwin (#4500, #4501, the XonX team).
- 240. Don't build xf86config under BuildServersOnly (Marc La France).
- 239. Potential fix for DGA apps that set colourmaps the normal way rather than
- through DGA (Mark Vojkovich, Marc La France, Pontus Lidman).
- 238. Make fstobdf generate correct ATTRIBUTES fields (Ishikawa Mutsumi).
- 237. Xt man page updates (Paul Vojta).
- 236. Plug kernel security hole in Linux int10 (Marc La France).
- 235. Fix Xnest build for newest gcc versions (Marc La France).
- 234. Fix typo in Xv Xinerama support (Gerd Knorr).
- 233. Fix a problem with multi-thread support on OpenBSD (released OpenBSD
- versions don't have getpwuid_r) (Matthieu Herrb)
- 232. Allow to compile on OpenBSD-current which has completly removed PCVT
- from its installation. (Matthieu Herrb)
- 231. Support for ThreadedX on FreeBSD (FreeBSD ports patch-xthread).
- 230. Updates for console-related FreeBSD system header changes as of 4.1-REL
- (FreeBSD ports patch-r, patch-s).
- 229. Don't leave free'd vrotate uninitialised in lib/X11/omGeneric.c
- (FreeBSD ports patch-q).
- 228. Protect #define HasPam in FreeBSD.cf (FreeBSD ports patch-d).
- 227. Fix border garbage for the G400 second head by backing out #4205
- (David Dawes).
- 227. Fix a typo in fonts/util/Imakefile (#4499, Juliusz Chroboczek).
- 226. Add a document describing the DPS code included in the tree, and
- pointers to web resources (#4498, Juliusz Chroboczek).
- 225. Use VBE to add runtime DDC support to the i810 driver (#4496,
- Andrew C. Aitchison).
- 224. DRM kernel module updates for FreeBSD (#4493, joe at cracktown.org).
- 223. Add support for the "Internet" keys of the Genius Comfy KB-16M keyboard
- (#4491, Kamil Toman).
- 222. Include three DPS sample clients:
- - dpsinfo: random info about the DPS extension;
- - dpsexec: interactive DPS ``executive'' (command-line);
- - texteroids: a demo of font support.
- (#4489, 4497, Juliusz Chroboczek).
- 221. Don't build the GLU library when not building GLX. This fixes
- a build failure when GLX is disabled (#4488, Juliusz Chroboczek).
- 220. Make the stub files that pswrap generates contain the same set of
- includes as the Adobe version, which fixes problems building
- standalone DPS clients (#4487, Juliusz Chroboczek).
- 219. Fix setxkbmap bugs, including:
- - Continue working if the appropriate root window property where the
- current xkb settings are saved can't be read or interpreted.
- - Make the -keymap option work.
- - Update the man page to explain how the "-option" option works.
- - Add primitive sanity checking for 'map name'.
- (#4482, Ivan Pascal).
- 218. Fix a server crash while reading DDC data from EDID2 capable monitors
- (#4481, Andrew C Aitchison).
- 217. Updates to Thai support, including:
- - Fix a bug combining characterw with Shift keys.
- - Remove the th_TH Compose file so that Thai XIM is/can be(?) activated
- without needing XSetLocaleModifiers().
- - A more precise context-sensitive input sequence check using
- XNStringConversionCallback added. This has been tested with
- xiterm+thai-1.04pre2. The implementation detail might be changed
- if found inconsistent with the X11 specification.
- (#4478, Theppitak Karoonboonyanan).
- 216. Update ucs2any.pl, and replace the special map-* files with the
- original mapping files from ftp.unicode.org. Changes include:
- - A bug has been fixed that caused sometimes the FONT property not
- to be updated correctly.
- - The FONTBOUNDINGBOX is now recalculated, which makes the script
- also suitable for proportional fonts.
- - The mapping table for the DEC VT100 graphic characters is now built
- into the script. This means the special map-* files are not necessary
- any more and they could be replaced with the original mapping files
- found on ftp://ftp.unicode.org/Public/MAPPINGS/
- - Whether the DEC VT100 graphic characters are added can be controlled
- with options +d/-d. Default is to add them for upright charcell fonts
- only.
- - Slightly improved warning messages.
- (#4472, Markus Kuhn).
- 215. Fix libGLU build problem on Cygwin (#4467, Suhaib M. Siddiqi).
- 214. Fix missing libX11 exported symbols for Cygwin (#4467,
- Suhaib M. Siddiqi).
- 213. Updates for Hurd support (#A.209, Marcus Brinkmann).
- 212. Fix some mis-placed mem_barrier's for Alpha platforms (Jay Estabrook).
- 211. Fix a Index/DAC register access in glint PM2v, PM3 driver.
- (#A.319, Romain Dolbeau).
- 210. Add Xv support to Permedia3 driver (#4480, #4486 Sven Luther).
- 209. Support for NVIDIA GeForce3 (Mark Vojkovich).
- 208. Allow GccWarningFlags overrides on Linux (Marc La France).
- 207. Fix a problem with xvinfo's listing of image formats
- (Giridhar Pemmasani).
- 206. Fix bug in XkbSetNamedDeviceIndicator (XkbSetNamedIndicator). This
- function can be used both for change state of specified indicator
- (on/off) and for change description (and so behavior) of indicator.
- Fix bug (in XkbGetPerClientControls). Typo where subroutine apply bit
- mask (that consist of bitwise OR of three separate masks) to value
- that have to be returned (#4474, Ivan Pascal).
- 205. Setxkbmap can crash X server if one specify some illegal string as
- 'xkb variant' name (#4471, Ivan Pascal).
- 204. In Grab mode XKB sends 'state' in key events without 'group info'
- (keyboard map layout) (#4469-4470, Ivan Pascal).
- 203. Rewrite the X-Video extension's Xineramification (Mark Vojkovich).
-
-XFree86 4.0.99.1 (19 February 2001)
- 202. Gamma correction and DirectColor visual support for NVIDIA RIVA TNT
- and newer chipsets (Mark Vojkovich).
- 201. IA64 fix for generic int10 code (Egbert Eich).
- 200. Redadding space as delimiter in locale.alias and locale.dir
- (Egbert Eich).
- 199. Modified memory debugger script to retieve backtrace information
- with an unmodified version of gdb (Egbert Eich).
- 198. Modified memory debugger to print out backtrace of call where
- a referenced freed pointer was once allocated (Egbert Eich).
- 197. Several more fixes for memory leaks and several "referenced freed"
- to keep memory debugger quiet (Egbert Eich).
- 196. Fixed "referenced freed" memory debugger message in xf8_24bpp code
- (Egbert Eich).
- 195. Add a new rule for building DRI (client) modules, so that only the
- relevant symbols are exported (#4454, Red Hat).
- 194. Fixed several memleaks in PCI bus code (Egbert Eich).
- 193. Added code to disable SIGIO when entering SETUP state and reenable
- it when leaving SETUP state (Egbert Eich).
- 192. Add type of option argument as comment to config file.
- (xf86cfg might need some fixing) (Egbert Eich).
- (Hopefully) fixed reordering of chips so primary comes first
- (Egbert Eich).
- 191. Fixed bug that caused server to crash when a DGA private colormap
- was freed as miSprite still had a pointer to this colormap
- (Egbert Eich).
- 190. Fixed savage driver for altered vbe functionality (Egbert Eich).
- 189. Moved bulk of generic VBE functionality from VESA driver into
- the vbe module (Egbert Eich).
- 188. Fixed some bugs in vesa driver (Egbert Eich).
- 187. Fixed memleaks in parser code as well as several referenced freed
- pointers which pollute output of memory debugger and obsucre debugging
- (Egbert Eich).
- 186. Fixed ChangeWindowAttributes() in cfb8_16 code (Egbert Eich).
- 185. Moved Linux specific typedef from shared/xf86AXP.h to linux-specific
- os-level code (Egbert Eich).
- 184. Added option to int10 softbooter to POST even primary device.
- 183. Fixed memory leak in linux int10 code (Egbert Eich).
- 182. Modified vm86 trap code not to fail on a #LOCK prefix byte
- (Egbert Eich).
- 181. Fixed memory leak in posix_tty.c (Egbert Eich).
- 180. Added support to generic driver to POST even primary devices
- (Egbert Eich).
- 179. Added support for more AXP chipsets that require sparse addressing
- to bsd os level (Egbert Eich).
- 178. Added missing symbols to C&T driver (Egbert Eich).
- 177. Fixed problems with Xv code in C&T driver (Egbert Eich).
- 176. Fixed a vertical and horizontal offsets on HiQV chips due to
- non-"standard" handling of H/VBlankEnd registers (Egbert Eich).
- 175. Removed code that sets a chipset into graphics mode when
- saving/restoring fonts in standard vga code. This causes problems
- on some trident chipsets (Egbert Eich). [EXPERIMENTAL!]
- 174. Moved KGA code that handles the H/VBlankEnd code that overscans remain
- invisible to separate functions. This way drivers have better control
- over these registers.
- 173. TGA driver fixes (Jay Estabrook).
- 172. Moved option processing to allow VGAClock option to be processed
- (Egbert Eich).
- 171. Added option to swap heads on a matrox G400 dual head (Stefan Dirsch).
- 170. Added handling of broken planemask support on different models of
- matrox G100 cards (Egbert Eich).
- 169. Fixed minor memory leak in ati driver (Egbert Eich).
- 168. Fixed resource registration in TDFX driver (Egbert Eich).
- 167. Set new modelines for Trident LCD modes (Egbert Eich).
- 166. Fixed handling of PreEnd Control register on Trident (Egbert Eich).
- 165. Fixed problem with Trident Blade Mono8x8Patterns (Egbert Eich).
- 164. Fixed clock division for CyberBlade E4 (Egbert Eich).
- 163. Removed last static symbols from Tseng driver (Egbert Eich).
- 162. Fixed handling of ICS5341 RAMDAC under 24bpp (Egbert Eich).
- 161. Fixed resource registration in rendition driver (Egbert Eich).
- 160. Attempt to fix various other issues on rendition - driver remains
- to be broken though (Egbert Eich)!
- 159. Fixed false linear size for NeoMagic 2380 (Egbert Eich).
- 158. Modified calulation of aperture size in NeoMagic driver to use the
- available video memory instead of the map size (Egbert Eich).
- 157. Added a delay to prevent rare cases of lockups when starting
- X on NeoMagic 2160 (Miles Lane).
- 156. Added DGA to Cirrus driver (Egbert Eich).
- 155. Missing symbols added to Cirrus driver (Egbert Eich).
- 154. Fixed acceleration on Alpine (Cirrus) driver. PIO and MMIO versions of
- the accelerator driver now support the same functionality (Egbert Eich).
- 153. Removed unneededed call to xfree() in ddc code (Egbert Eich).
- 152. -
- 151. Siliconmotion driver updates, including:
- - Color change/flash at 8bpp when switch back to desktop in rotation
- mode.
- - System hangs when enabling rotation in 24-bpp.
- - Overlay disappear in the virtual desktop when move the window.
- - Mouse pointer doesn't work properly in panning modes under rotation.
- - Garbage appears on desktop when click the Basic/Metal for the Theme
- Selector.
- - Added ZoomOnLCD option.
- - Desktop changes color when panning in 24-bpp mode.
- - CRT is off after exit X on DSTN 800x600.
- - Screen broken occurs in X when enable Rotation on DSTN 800x600.
- (#4463, Frido Garritsen).
- 150. Include <time.h> in Xos.h to get struct tm (based on #4464, Mike Harris,
- and H.J. Lu).
- 149. Add 1400x1050 60Hz and 75Hz to the default built-in modes (#4462,
- Tim Roberts).
- 148. Create the default modes source file from the mode definitions on
- systems that have perl (David Dawes).
- 147. Alias memset and memcpy to xf86memset and xf86memcpy in the loader,
- which should catch implicit compiler-generated calls to these functions
- (David Dawes).
- 146. Fix NV, Glint, ati and mga drivers for Alpha EV56 machines
- (Jay Estabrook).
- 145. Work around compiler-generated call to memcpy in the sis driver
- (David Dawes).
- 144. Fix the neomagic driver so that it saves/restores the palette (#4452,
- Ken Hornstein).
- 143. Fix a palette saving bug in the vgahw module (#4452, Ken Hornstein).
- 142. Fix a typo in Xfbdev.man (#4446, Juliusz Chroboczek).
- 141. Major updates to the savage driver, including:
- - DDC support
- - I2C support
- - XVideo YUV overlay support for Savage/MX and Savage/IX
- - DGA support
- - yanks Ani Joshi's depth/bitsPerPixel patch for searching the BIOS
- - fixes interactions with frame buffer and SVGATextMode consoles;
- VT switching now seems quite reliable for almost everyone
- - yanks unused options
- - adds new options for hacks to deal with the status register hangs
- - adds one special case memory configuration for Savage 4
- - adds support for doublescan modes (320x240 works)
- - adds LCD panel detection
- - fixes a panning bug at depth 24 (panning must be to even pixels)
- - adds a workaround for bugs in the latest ProSavage BIOSes
- (#4445, 4448, Tim Roberts).
- 140. Make 'X -configure' use the long monitor name when present in the
- DDC info (#4444, Andrew C. Aitchison).
- 139. Make glxinfo respect $DISPLAY (#4443, Meelis Roos).
- 138. Fix TrueType font problems in 4.0.2 (#4439, Juliusz Chroboczek).
- 137. Document the "DisplaySize" keyword in the XF86Config man page (#4438,
- Andrew C. Aitchison).
- 136. Update the i810 driver to set the UV vertical phase for the 4:2:0
- planar formats to account for the spatial relationship between the
- chroma and luma samples (#4436, Jonathan Bian).
- 135. Updates for Cygwin support (#4433, Suhaib M. Siddiqi).
- 134. Fix a bug in the fonts.sgml doc (#4432, Juliusz Chroboczek).
- 133. Fix the xdpyinfo so that it will build when the XKB extension isn't
- defined (#4422, Jim Gettys).
- 132. Fix the xdm greeter so that it will build when the XKB extension isn't
- defined (#4421, Jim Gettys).
- 131. Only build setxkbmap when building the XKB lib support (based on #4420,
- Jim Gettys).
- 130. Improve the mga driver messages when the HAL module isn't available
- (#4451, David Woodhouse).
- 129. Add G450 support to the mga driver (#4416, Luugi Marsan (Matrox),
- 4449, David Woodhouse).
- 128. Mga driver updates, including HAL cleanups, add a Crtc2Ram option,
- and merge with Matrox beta4 source (#4415, Antii Tapaninen, #4423,
- Simon Hosie).
- 127. Fix a rounding problem in the wacom driver that was causing some
- position instability (#4417, Hannes Eriksson).
- 126. Change Freetype2 compilation to pacify makedepend (Marc La France).
- 125. Added changes to il (Hebrew) xkb keyboard map (#4459, Tzafrir Cohen).
- Added new by (Belarusian) xkb keyboard map (#4460, Alexander Mikhailian).
- Small additions to fixes A.272 to allow autorepeat control of MouseKeys
- also in 'non-accelerated mode' (#4461, Ivan Pascal).
- 124. Add ATI Rage 128 PD support (#4455, ISHIKAWA Mutsumi).
- 123. Make modeline2c.pl script case-insensitive (#4453, Mike Harris).
- 122. Change ATI driver to detect panel dimensions of non-PC systems using an
- LT or LT Pro (Marc La France).
- 121. Fix misdetection of sparse I/O PCI bases and handling of unassigned PCI
- bases in ATI driver (Marc La France).
- 120. Extend libc wrapper's emulation of gettimeofday() and add emulation of PC
- and PC98 interval timers to int10 (Marc La France).
- 119. An attempt at fixing the handling of unassigned PCI resources by
- improving detection of them and forcing them to be relocated
- (Marc La France).
- 118. Make lndir ignore finder data files on Mac OS X (Matthieu Herrb).
- 117. -
- 116. -
- 115. Undo s3virge changes in 4.0.2 for Xv support on ViRGE chipsets since
- they caused problems with plain ViRGE cards. Xv is still supported
- for the ViRGE DX (#4414, 4430, Kevin Brosius).
- 114. Siliconmotion driver fixes:
- - 24bpp corruption
- - mouse cursor still showing after X-server shutdown
- (#4413, Frido Garritsen).
- 113. Change the Thai charset and locale description to a form agreed to
- by some Thai developers (#4412, Chanop Silpa-Anan).
- 112. [SECURITY] Fix temp files vulnerabilites in xman on systems with
- mkstemp(). (Matthieu Herrb).
- 111. Major improvement to the Xmaster UI on Mac OS X. (#4447, XonX team).
- 110. 8 bit DAC support for the NVIDIA Riva-128 (Mark Vojkovich).
- 109. Fix panning on Permedia3 (Alan Hourihane).
- 108. Enable wsmouse support on OpenBSD/i386 (Matthieu Herrb).
- 107. Xdarwin bug fixes and updates (#4440-4442, Torrey T. Lyons).
- 106. ATI driver Sparc compile fix (David S. Miller).
- 105. Implement BlockFills at 32bpp in the Permedia3 driver (Alan Hourihane).
- 104. Ensure PCI retry is off for Permedia3, and fix an over by 1 error on
- FIFO usage (Alan Hourihane).
- 103. Prevent glint driver from Seg faulting if mode pool is empty
- (Alan Hourihane).
- 102. Add FIFOSize to glint driver for overriding of the FIFO depending on
- the target chip being used (Alan Hourihane).
- 101. Major updates to the GLINT driver.
- - Add Dual-Headed Appian Jeronimo 2000 support (dual PM3's), it now
- shares heads as per MGA driver for G4xx dual head boards.
- - Faster Permedia3 WriteBitmap/WritePixmap accelerator functions.
- - Fix Scanline acceleration routines when MAX FIFO is reached.
- - Improved Gamma support.
- - Upload cursor and cursor colours for pm2v/pm3 during vertical retrace,
- which fixes r/b inversion and loss of video problems.
- - Fix pm2v/pm3 text restoration problems.
- - Re-arranged structure to accomodate multi-chips per screen.
- - Removed dualmx files and incorporated changes into standalone versions
- - Allow -configure to only configure VGA based Glint chips, works
- around multichip boards (for now).
- (Alan Hourihane).
- 100. Add XaaNoWriteBitmap and XaaNoWritePixmap options to XAA (Alan Hourihane).
- 99. Improve determination of primary adapter (Marc La France).
- 98. Fix PPC xf86sym.c compile problems (Marc La France).
- 97. Fix int10 option handling for drivers that call xf86CollectOptions()
- before calling int10 (Marc La France).
- 96. Properly detect unassigned MMIO address in ATI driver (Marc La France).
- 95. Fix default compilation on Sparc/Solaris (Marc La France).
- 94. Fix typo in Linux/Arm configuration (Marc La France).
- 93. By default, don't build libGLU on libc5 systems (Marc La France).
- 92. Fix HW cursor colors for pm2v/pm3 in the glint driver (Alan Hourihane).
- 91. Rework the memory detection code for Permedia3, now correctly detects
- boards which aren't 32MB (Alan Hourihane).
- 90. Write ScanlineCPUToScreen, ScanlineImageWrite functions for Permedia3
- which write directly to the FIFO, and remove obsolete functions
- (Alan Hourihane).
- 89. Fix ordering of writes in pm2v/pm3 ramdac functions in the glint driver,
- thus fixing the R/B inversion problems (Jay Estabrook).
- 88. Set the version strings in man pages dynamically (David Dawes).
- 87. Remove the XF86_VERSION string from xf86Version.h, leaving just
- the numerical values. All the version information is now derived
- from that single set of values (David Dawes).
- 86. [SECURITY] Fix temp vulnerabilities in Xaw/MultiSrc.c using the technique
- in patch #4279 (Branden Robinson). Fix temp file vulnerability in
- gccmakedep based on report from Alan Cox. Fix temp file vulnerability
- in Imake.rules, InstallManPageAliases (Matthieu Herrb).
- 85. Support vertical sub-pixel glyph rasterization in Xft
- (Keith Packard)
- 84. Allow xf86ClaimPciSlot to be called with a NULL GDevPtr, as it was
- previously (Alan Hourihane).
- 83. Fix clean rule in DRM build (Philip Willoghby).
- 82. If MouseKeys is switched on, then the mousekeys autorepeat. (fixes
- #272, Stephen Montgomery-Smith)
- 81. Ensure Video is unavailable when no acceleration available in the
- trident driver (Alan Hourihane).
- 80. Implement a distclean make target (Marc La France).
- NOTE: To correctly install this change, either `make Everything` or
- `rm xmakefile; make World`.
- 79. Preprocess all man pages to make sure that the references to pages
- in sections that are platform-dependent are correct. Also fixed some
- misc formatting problems found while doing that (David Dawes).
- 78. Ensure client side version checking in 3D drivers for Rage128 and
- Radeon chipsets (Alan Hourihane).
- 77. Nv driver update to fix the cursor for double scan modes, and to
- improve double scan mode handling in general (#4408, Csaba Halasz,
- Jarno Paananen).
- 76. Fix a twm segfault if it gets events for buttons > 5 (#4407, 4425,
- Nathan Hand).
- 75. Update the module subdirectory search list to include "multimedia/"
- (#4405, Vladimir Dergachev).
- 74. Small R6.5.1 merge update in Xlib (based on #4403, Bruno Haible).
- 73. Updates to the xprop utility, including:
- - Move to ANSI C, use const where possible.
- - Print WM_NAME and WM_ICON_NAME properties in the locale encoding.
- - Allow multiple "-remove" commands on the same command line.
- - Better error message when "-remove" is applied to a font.
- - New option "-set" that permits the changing of individual window
- properties.
- (#4402, Bruno Haible).
- 72. Remove schumacher-clean compatibility aliases, since the fonts are
- really ASCII and not iso8859-1 (#4401, Bruno Haible).
- 71. Allow drivers to provide their own substitute for the xf86I2CWriteRead
- function (#4399, Vladimir Dergachev).
- 70. Cirrus driver updates, including:
- - Add a call to fbPictureInit() in the Laguna driver.
- - Fix warning (missing a symbol from VBE) when starting the Alpine
- driver.
- - Fix MMIO acceleration for the CL-GD5480
- (#4395, Itai Nahshon).
- 69. Fix Neomagic 2200 screen corruption (Egbert Eich).
- 68. Disable RENDER extension support in the ATI(misc) driver when mibank
- and/or shadowfb is used (Marc La France).
- 67. Remove cfb & friends from the ATI driver (Marc La France).
- 66. Some additional ATI PCI IDs (Marc La France).
- 65. Make compilation of drivers produce the same object whether or not
- DPMS and DGA extensions are being built. Partial changes to do the same
- for RENDER (Marc La France).
- 64. Ensure `make depend` goes through the same set of subdirectories as
- `make all` does. Allows MakefileAdditions to contain depend rule(s)
- (Marc La France).
- 63. Move $(EXTRA_DEFINES) to the end of ALLDEFINES. Ditto for
- $(CXXEXTRA_DEFINES) and CXXDEFINES. Allows easier overrides at the
- subdirectory level (Marc La France).
- 62. Add a pre-clean phase to `make World` if xc/xmakefile already exists
- (Marc La France).
- 61. Import X.Org's X11R6.5.1 (David Dawes)
- 60. Change identification of Trident 8400(CyberBlade/i7) so that it is not
- a Cyber chipset (integrated Desktop version) (Alan Hourihane).
- 59. Use the wsmouse protocol in XFree86 -configure if wsmouse is available
- (Matthieu Herrb, lha at stacken.kth.se).
- 58. Sync Xdarwin with XonX version (#4428 Torrey T. Lyons):
- - add a working WarpCursor
- - add 15 bit pixel depth to the Quartz mode.
- 57. New version of Xmaster, a Mac OS X application that controls the
- X server (#4427, Torrey T. Lyons, Andreas Monitzer).
- 56. Add external CRT support for the Rage 128 Mobility (Kevin Martin
- and ATI).
- 55. Radeon DRI fixes (VA Linux Systems).
- - Re-enable freeing resources when the screen is destroyed (Kevin
- Martin)
- - Use screen-relative instead of window-relative coordiantes to
- calculate the tiled depth buffer offset address (Kevin Martin)
- - Fix texture upload at offset 0 bug. Quake 2 engine games use
- TexSubImage to update lightmaps and the like, and we were
- uploading the updates before the image had space in the texture
- heap allocated to it. (Gareth Hughes)
- - Add XF86Config file option to enable depth buffer moves (they
- are disabled by default since they are excuciatingly slow)
- (Kevin Martin)
- - Enable bus mastering in PCI config space for those systems that
- do not automatically have it enabled (Kevin Martin)
- - Remove AGP_CNTL register programming -- it was a holdover from
- the Rage 128 driver and is not needed on the Radeon (Kevin
- Martin)
- - Fix offscreen memory allocation calculation for textures (Kevin
- Martin)
- 54. Allow libGLU to be built (Craig Dunwoody, SGI, David Dawes,
- Alan Hourihane).
- 53. Import the GLU parts of ogl-sample.
- 52. Add an imake control for determining when xload should be installed
- set-gid (David Dawes).
- 51. Add some imake controls for installing Xkb and app-defaults files
- in the traditional location rather than under /etc/X11 (Red Hat does
- that) (David Dawes).
- 50. Add compressed man page functionality to the rules in Imake.rules,
- so it should be usable on most platforms (David Dawes).
- 49. Make acceleration work on the Trident Cyber9388 (Alan Hourihane).
- 48. - Various small changes to accomodate Mac OS X support and fix a
- problem people were having with uninitialized globals in X
- libraries,
- - Allow XFree86 to run on Mac OS X as a full screen client of
- CoreGraphics,
- - Add a Mac OS X application that controls the X server and feeds it
- events when running on Mac OS X. Currently must be built by
- ProjectBuilder (#4409, #4410, #4411, Torrey T. Lyons).
- 47. Fix Mach64 Mono 8x8 Pattern acceleration (Marc La France).
- 46. Experiment with setting the server's "vendor release" value from
- the information in xf86Version.h, and modify xdpyinfo to show the
- server version in an easily readable format (David Dawes).
- 45. Fix 1bpp colour map in vgaHW (Marc La France).
- 44. More IA64 loader fixes and make xf86sym.c compile again
- (Michael Madore, Marc La France).
- 43. Add missing symbols in vesa driver (Marc La France).
- 42. Fix multihead pointer problem on Rage 128 (Mark Vojkovich).
- 41. Resync with DRI CVS trunk (Kevin Martin, VA Linux Systems)
- - Add Radeon 3D driver (Kevin Martin and Gareth Hughes)
- - Improve Rage 128 3D driver support (Gareth Hughes)
- - Add fast AGP read/drawpixels support in MGA driver (Keith Whitwell)
- - Update DRI docs (Kevin Martin, Brian Paul)
- - Fix various bugs (Keith Whitwell, Brian Paul, Kevin Martin)
- 40. Rename fsinfo to xfsinfo to avoid a name clash with the fsinfo utility
- in the Berkeley automounter amd (Matthieu Herrb).
- 39. Invert NO_COMPILER_H_EXTRAS to prevent unintentional references to inx()/
- outx() on the likes of SunOS (Marc La France).
- 38. Change the os-support layer to only claim a bare minimum of I/O resources
- rather than a larger estimate (Marc La France).
- 37. Loader work: Fix handling of shared GOTs on IA-64 and Alpha's, and of
- PLT and OPD entries on IA-64; Cleanup debug messages and #if testing
- (Marc La France).
- 36. Extensive int10 rework to address lockups, spontaneous reboots and tight
- CPU loops on various architectures (Marc La France):
- - Use intialised BIOS to softboot primary adapters on non-PC's;
- - Fix endianness problems;
- - Move stack into its own page to prevent overwritting interrupt vectors;
- - Prevent (with a message) int10 from interfering with mainboard devices
- (i.e. RTC, keyboard, speaker, chipset, etc.);
- - Flesh out int 0x42 emulation on non-PC's;
- - Emulate BIOS data area on non-PC's;
- 35. Add missing symbols in i810 and sis drivers (Marc La France).
- 34. Optionally disable, at compile time, loader bug workarounds in ATI driver
- (Marc La France).
- 33. Prevent the Rage 128 and Radeon drivers from initialising an adapter more
- than once (Marc La France).
- 32. Move support for >64kB BIOS'es from int10 into the os-support/bus layer
- (Marc La France).
- 31. When retrieving PCI BIOS'es, only use another PCI base when a previous
- retrieval attempt fails (Marc La France).
- 30. Temporary kludge to not consider any adapter as primary if more than one
- candidate can be found (Marc La France).
- 29. Make deleted mode messages less fearsome (Marc La France).
- 28. Fix -configure to retrieve the correct set of options for ATI, C&T,
- Cirrus and NeoMagic adapters (Marc La France).
- 27. When removing PCI resource overlaps, always consider resources whose size
- can be accurately determined, whether active or not (Marc La France).
- 26. Real 4:2:0 YUV support for the Rage 128 (Mark Vojkovich).
- 25. Xinerama support for Render extension (Keith Packard).
- 24. Make some changes to the clock selection for trident driver
- (Alan Hourihane).
- 23. Switch savage driver to fb (+Render), correct maxHValue (Keith Packard).
- 22. Add font property caching in Xft (Keith Packard).
- 21. Xterm patch #150 (Thomas Dickey).
- 20. Fix 24/8 Overlay support on Permedia2v and Permedia3 chipsets
- (Alan Hourihane).
- 19. Add CyberStretch option to the trident driver for Cyber chipsets that
- allows Graphics modes to stretch to the full display (Alan Hourihane).
- 18. Xterm patch #149 (#4351, Thomas Dickey).
- 17. Fix Y offsets passed to pixmap cache when DRI disabled in R128 driver
- (Alan Hourihane).
- 16. Add BlockFills to Permedia3 (Alan Hourihane).
- 15. Fix pixmap cache when more than 16MB of memory on Permedia 3
- (Alan Hourihane).
- 14. Fix colourmap problems at depth15/16 on Permedia3 (Alan Hourihane).
- 13. Bump xc/programs/Xserver/GL/dri (libdri.a) version to 3.1.0 to
- correspond with the DRI backbuffer rewrite, and modify drivers accordingly
- (Alan Hourihane).
- 12. Enable ImageWrites on Rage128 and Radeon (Alan Hourihane).
- 11. Add DRIMoveBuffersHelper function to prevent code duplication in
- the drivers (Mark Vojkovich).
- 10. Bug fixes for endianness problems in Permedia3 driver
- (#4404, Sven Luther).
- 9. Add Appian Jeronimo 4x8Mb (PM2v) support to the glint driver
- (Alan Hourihane).
- 8. Add render support to i810 driver (Keith Packard with testing
- by Christien Bunting)
- 7. Switch misc (non-radeon, non-r128) ATI driver to fb (Keith Packard).
- 6. 3DFX driver changes (Mark Vojkovich).
- - fix some DGA issues.
- - 2D and 3D now share offscreen memory (much faster 2D now).
- - rewrite Xv support to use the video overlay.
- - add new Options "VideoKey" and "ShowCache".
- 5. Change xterm from simple face name to full Xft font name so
- that options can be provide (like minspace) (Keith Packard)
- 4. Add UTF-8 support to Xft (Keith Packard)
- 3. Add font/face sharing and a minumum vertical space option
- to Xft (Keith Packard)
- 2. Fix 64 bit DGA bug (Mark Vojkovich).
- 1. Rewrite DRI back buffer handling to minimize the impact on 2D
- performance (Mark Vojkovich).
- 0. Fix incorrect driverName fields in the cyrix, i810 and sis drivers.
- This was causing 'XFree86 -configure' to get the driver name wrong
- (David Dawes).
-
-XFree86 4.0.2 (18 December 2000)
-1211. Fix a problem introduced recently when using the "ps/2" protocol for
- mice on FreeBSD (David Dawes).
-1210. Disable DRI for tdfx when there's insufficient memory for textures
- (Alan Hourihane).
-1209. Rename the R6.4 INSTALL and RELNOTES docs at the top level of the source
- tree, and add a copy of the XFree86 RELNOTES.
-1208. Add Solaris 8/x86 key mappings for some more jp106 keys.
-1207. Fix wacom man page to match the driver (based on #4398, Akio Morita).
-1206. Install the iso8859-13 encoding file (#4397, Nerijus Baliunas).
-1205. Misc doc-related updates.
-
-XFree86 4.0.1Zc (15 December 2000)
-1204. Fix an Xlib memory overrun when the Xutf8TextPropertyToTextList function
- is used in a unibyte locale (#4394, Bruno Haible).
-1203. Fix the yen/backslash keys for Solaris 8/x86 with Japanese 106 keyboards
- (based on #4393, Takaaki Nomura).
-1202. Fix type mismatches in the r128 DRI driver on Alpha platforms (#4392,
- Gareth Hughes).
-1201. Fix build on Japanized version of Solaris 8 for x86 (#4390,
- Takaaki Nomura).
-1200. Remove some old XtOffset magic for the arm that affects building
- with gcc (#4388, Keith Packard).
-1199. Release notes updates (David Dawes, Egbert Eich, Mark Vojkovich,
- Robin Cutshaw, Keith Packard, Alan Hourihane, #4391, Kevin Brosius).
-1198. Revert the tdfx driver to something functionally close to the
- last known working version (4.0.1g) (David Dawes).
-
-XFree86 4.0.1Zb (14 December 2000)
-1197. New fonts document (#4386, 4387, Juliusz Chroboczek).
-1196. Status doc update for Trident (Alan Hourihane).
-1195. Update the R6.4 INSTALL and RELNOTES docs to include references at
- the top to the XFree86-specific docs (David Dawes).
-1194. Make it possible to install platform-specific man pages with most
- ix86 builds (David Dawes).
-1193. Add a short man page for the newport driver, update it's sample config
- file, and have the driver check user-supplied parameters (#4385,
- Guido Guenther).
-1192. Missing part of fix for FreeBSD sysmouse support (#4317, from FreeBSD
- ports collection).
-1191. Trident driver bug fixes (Alan Hourihane).
-1190. Make it possible to install hardcopy specs docs that we can't generate
- from source (David Dawes).
-1189. Set the HasPerl default correctly for LynxOS (#4384, Thomas Mueller).
-1188. Lots of Status doc updates (#4383, Branden Robinson).
-1187. Update some DebianMaintainer defaults in linux.cf (#4380,
- Branden Robinson).
-1186. Fix a segfault in the font path verification code in xfs (#4379,
- Charles C. Fu).
-1185. Rework and document the various MatroxHal imake parameters, and
- build in support for the mga_hal module by default for loadable server
- builds (David Dawes).
-1184. Fix sis driver corrupt display with more than 8MB of video memory (#4378,
- Can-Ru Yeou).
-1183. Fix xf86cfg build problem on systems that don't come with snprintf
- and/or regex (based on #4361, Thomas Mueller).
-1182. Fix siliconmotion driver screen restoration when a graphics vesafb mode
- is selected during boot up (#4377, Frido Garritsen).
-1181. Install and RELNOTES updates for Darwin (#4375, 4376, Torrey T. Lyons).
-1180. s3virge patch to get Xft/Xrender working (#4374, Kevin Brosius).
-1179. Improve aperture driver related error messages on OpenBSD
- (Matthieu Herrb).
-1178. Workaround for IA-64 loader bug (Marc La France).
-1177. Fix recognition of valid depth/fbbpp combinations in ATI driver
- (Marc La France).
-1176. Fix 1bpp in ATI driver (Marc La France).
-1175. Fix ATI DPMS support on panels by mimicking BIOS behaviour more closely
- (Marc La France).
-
-XFree86 4.0.1Za (12 December 2000)
-1174. Set defaults for Mesa's x86 CPU-specific asm options, and make it
- possible to build with MMX disabled for systems with older assemblers
- (David Dawes).
-1173. Fix some R128 DRI bugs:
- - Fix depth span functions (was causing rendering errors for windows
- not at (0,0)).
- - Don't use 32-bit depth buffers since they're not supported by Mesa.
- - Use subpixel offsets to fix coordinate rounding errors.
- (#4373, Gareth Hughes).
-1172. Reinstate the AllTarget for the rule to make html man pages
- (David Dawes).
-1171. Build all modules on Linux/mips, fixing Xnest build (#4372,
- Guido Guenther).
-1170. Update Permedia 3 README, Cards file, and glint section in the Status
- doc (#4371, Sven Luther).
-1169. Fix depth passed to the BIOS in the savage driver (affects depth 15)
- (#4369, Ani Joshi).
-1168. Update fbdev man page (#4368, Michel Daenzer).
-1167. Fix a problem with 32-bit depth buffers when using indirect rendering,
- by not advertising them in the mga driver (#4367, Brian Paul).
-1166. Update man page version strings, and convert some server/XFree86 man
- pages to cpp-processed files to make the references to pages in
- system-dependent sections correct (David Dawes).
-1165. Update the release notes for the i18n and Unicode support (#4366,
- Bruno Haible).
-1164. Document most of the environment variables that can influence libX11
- and libXt in the 'X' man page (#4365, Bruno Haible).
-1163. Update the ICCCM spec document to relfect the selection targets currently
- used in XFree86 (#4364, Bruno Haible).
-1162. Update the CTEXT spec document to reflect part of the current
- practice in XFree86 (#4363, Bruno Haible).
-1161. Augment SpecsDocDirs to reflect additional docs that have XFree86 changes
- (#4362, Bruno Haible).
-1160. Fix Xv library references in the xvinfo Imakefile (#4361,
- Thomas Mueller).
-1159. Fix a signed/unsigned error in the calculation of 16-bit displacements
- in x86emu (#4359, Tim Roberts).
-1158. Fix "noaccel" option in the tdfx driver when building without DRI
- (David Dawes).
-1157. Add Darwin documentation (Torrey T. Lyons).
-1156. Add Darwin bindist files and update Xinstall.sh (Matthieu Herrb).
-1155. Update bindist files for NetBSD 1.5 ELF (Matthieu Herrb).
-1154. Add DGA support to I128 driver (Robin Cutshaw).
-
-XFree86 4.0.1Z (8 December 2000)
-1153. Flesh out the wacom man page (#4358, Frederic Lepied).
-1152. Fix incorrect documentation for xf86UnMapVidMem() in README.OS-lib
- (#4357, Guido Guenther).
-1151. Update the newport driver to use the map/unmap functions provided by
- the os-support layer (#4356, Guido Guenther).
-1150. Bugfix to xf86UDelay() (Egbert Eich).
-1149. Added a sanity check to pciConvertRange2Host() (Egbert Eich).
-1148. Added more log messages to Linux APM code (Egbert Eich).
-1147. Added a sanity check to xf86ConfigPciEntity() (Egbert Eich).
-1146. Resync with DRI CVS trunk (tdfx driver updates) (Daryll Strauss).
-1145. Add -textmode mode option for xf86cfg, to run a ncurses interface, and
- add the "expert" interface, to provide more control over the config file.
- Updates to vesa driver, removed debug messages and fixed problem with
- console restoration in some S3 cards.
-1144. Merge tdfx 3D driver code (VA Linux).
-1143. Add support PPC support on Rage 128 and disable Int10 for PPC on
- Rage 128 (until the bug in PPC Int10 support is fixed) (Kevin Martin).
-1142. Install an alternative fonts.alias file that references the UCS-encoded
- fonts on systems without Perl (David Dawes).
-1141. Add CyberShadow Option back into Trident driver (Alan Hourihane).
-1140. Resync with DRI CVS trunk, including:
- - SSE support updates
- - DRI-specific full screen mode
- - Reduce the minimum space required for 3D on the Rage 128
- (VA Linux).
-1139. Fix a memory leak in the UTF-8 <--> CompoundText converter (#4354,
- Bruno Haible).
-1138. Add support for the selection target UTF8_STRING to libXaw (#4353,
- Bruno Haible).
-1137. Make Xlib's CompoundText converter ISO-2022 compliant (#4352,
- Bruno Haible).
-1136. Fix 2 wacom driver bugs (core dump on VT switching, and USB support)
- (#4350, Frederic Lepied).
-1135. Update the ClearlyU fonts to 1.8b. Changes include:
- - Cleaned up the Arabic glyphs so they don't look quite so juvenile.
- - Squared up the Hebrew glyphs so they match the style of the other
- scripts better.
- - Added many of the basic Hangul glyphs.
- - Brought the Cyrillic block in line with Unicode 3.0 and moved the
- extra glyphs into the PUA font in the 0xE4XX range.
- (#4349, Mark Leisher).
-1134. Update the savage driver to all I/O via MMIO, and add DPMS support
- (4347, Ani Joshi).
-1133. Change xfs to drop privs after daemonising so that the pid file can
- be written (#4346, Frederic Lepied).
-1132. Miscellaneous fixups to the trident driver (Alan Hourihane).
-1131. Add Xv support to the trident driver. Works for Blade and Image series
- chips, but zooming currently doesn't work on Image series.
- (Alan Hourihane).
-1130. Don't perform a software reset on the Graphics Engine for Trident
- Blade3D's and CyberBlade's (Alan Hourihane).
-1129. Fix typo in int10 for IA-64's (Marc La France).
-1128. Make PCI bridge information in the log more accurate (Marc La France).
-1127. Update ATI docs (Marc La France).
-1126. Another getValidBIOSBase() fix (Marc La France).
-1125. If the loader server dies from a signal during initialisation, print a
- list of undefined symbols (Marc La France).
-1124. Move Alpha MMIO definitions from xf86_OSproc.h to compiler.h
- (Marc La France).
-1123. Change update.docs rule for shadow tree friendliness (Marc La France).
-1122. Don't reference libc wrapper names directly in the newport driver
- (David Dawes).
-1121. Fix the fr_CH xkb Macintosh symbols file (#4345, Olaf Hering).
-1120. Revert the Estonian_Estonia.1257 change in patch #4297 because
- windows-1257 is a closer match to iso8859-13 than iso8859-15.
- Also add entries for the et_EE.ISO8859-1 locale (while not perfect for
- Estonian, it is commonly used) (#4344, Ville Hallik).
-1119. Change name of long Unicode keysyms from 6 to 8 hex digits, which
- matches conventional usage better (#4343, Ivan Pascal).
-1118. Make XF86VidModeSetViewPort() actually set the viewport to the
- X and Y coordinates specified as opposed to always setting it to (0,0)
- (#4342, Joe Moss).
-1117. Work around some build problems on SVR4.0 (#4341, Satoshi Kimura).
-1116. Compose characters for the Macedonian UTF-8 locale (#4338,
- Damjan Georgievski).
-1115. Fix build problems with the wacom driver on Linux 2.4 when building
- a static server (Frederic Lepied, David Dawes).
-1114. Changed name of server binary to call by xf86cfg back to "XFree86
- (Egbert Eich).
-1113. Modified handling of memory alloctaion in TDFX driver (Egbert Eich).
-1112. Attempt to fix the 'UseModes' directive in the Monitor section
- (Egbert Eich).
-1111. Added debugging output for BIOS base address search (Egbert Eich).
-1110. Changed neomagic driver to treat disable stretching for each mode
- individually (Egbert Eich).
-1109. Removed '-traditional' from cpp rule for makedpend. Required for
- new glibc header files (Ruediger Oertel).
-1107. Fix to make SuperProbe build again on ia64 (Andreas Schwab).
-1107. Attempt to fix int10 (Egbert Eich).
-1106. Modified blitter busy test to use the MMIO mapped registers on chips
- > CT69000 (Egbert Eich).
-1105. Attempt to improve dga support in C&T driver (Egbert Eich).
-1104. Moved ppc_flush_icache to compiler.h - hope this fixes build problems
- (Egert Eich).
-1103. changed cirrus driver to us fb instead of cfb (Egbert Eich).
-1102. Modularized HALlib for mga driver (Egbert Eich).
-1101. Added DGA support to tseng driver (Rainer Keller).
-1100. Added "framebuffer" bus type allowing resource control to take place
- outside of the server (Egbert Eich).
-1099. Added turkish keyboard layout (Togan Muftuoglu).
-1098. Fix Cyber9397/DVD acceleration problem (Alan Hourihane).
-1097. Resync with the DRI CVS trunk.
-1096. Fix alot of Rage 128 Xv bugs (Mark Vojkovich).
-1095. Fix XKB symbols for Swedish Macintosh keyboards (#4337, Olaf Hering).
-1094. Disable DRI on PPC (#4337, Olaf Hering).
-1093. Suppress xf86ReadBIOS debugging messages for BSD (#4336, Takaaki Nomura).
-1092. Silicon Motion driver update, includes bug fixes (#4335,
- Frido Garritsen, Silicon Motion, Inc.).
-1091. Updates to the dumpkeymap utility and its documentation (#4323,
- Eric Sunshine).
-1090. Enable 3D support for Rage 128 Mobility chips (Kevin Martin).
-1089. Add clip rectangles support to Render extension, Xrender and Xft.
- Make Xrender and Xft usable from c++.
- Fix a bunch of compiler warnings in Render extension code
- (Keith Packard)
-
-XFree86 4.0.1h (4 December 2000)
-1088. Fix key mapping for the '\' key on GB keyboards in Solaris 8.
-1087. Status doc updates for Neomagic an NVIDIA (#4334, Andrew C. Aitchison,
- Mark Vojkovich).
-1086. Updated Rage 128 DRI support from the DRI CVS (Gareth Hughes, VA Linux).
-1085. -
-1084. Bump the minor revisions of libXmu (UTF8_STRING) and libX11
- (Xutf8LookupString).
-1083. Fixes for all known bugs in the CompoundText parser and generator,
- including:
- * While adding a charset:
- - Adding a charset with two different escape sequences (e.g.
- ISO-8859-14) led to broken behaviour of the converter. Moreover
- the second added would have priority over the first added.
- - If an invalid escape sequence was detected by _XlcParseCharSet, it
- was still used when generating compound text.
- - Extended segment charsets with varying number of bytes per character
- were treated like those with 1 byte per character.
- - _XlcAddCT failed to copy its ct_sequence argument, thus leading to
- bugs when this argument was a dynamically allocated string.
- - Missing detection of different charsets having the same escape
- sequence.
- * Parsing Compound Text:
- - The functions _XlcParseCT and _XlcGetCTInfo did not perform range
- checks on the strings being parsed. Danger of core dump through
- out-of-bounds string access if a malicious client provides malformed
- text.
- - Builtin extended segment charsets were not recognized because the
- strncmp in _XlcGetCTInfo was returning false most of the time, due
- to the embedded length bytes.
- - Extended segment charsets in general would not be deactivated after
- the specified number of bytes.
- - In _XlcCheckCTSequence, extended segments with invalid embedded
- length bytes would lead to out-of-bounds string accesses as well.
- - Unrecognized escape sequences did not lead to a return value > 0.
- - Left-to-right and right-to-left indicators (starting with 0x9b) were
- just ignored, without leading to a return value > 0.
- - If the source string was larger than the intermediate buffer,
- multibyte characters could be split into pieces, leading to
- conversion errors.
- * Generating Compound Text:
- - The length embedded in an extended segment prefix was always wrong.
- - Long strings could give rise to extended segments with a length that
- doesn't fit in the allowed 14 bits.
- - After an extended segment, GL or GR designators would unnecessarily
- be repeated.
- - Bytes in the range 0x81..0x88, 0x8b..0x9a, 0x9c..0x9f in multibyte
- encodings could not be output, would be thrown away.
- - Byte 0x9b could not be output in the UTF-8 charset.
- * udcInf.c was generating invalid Compound Text (invalid length in
- extended segment).
- * lcConv.c: If in the indirect converter, the first step led to no
- output, the second step would still be called, possibly leading to
- out-of-bounds accesses.
- * lcUTF8.c: had knowledge about JISX0208.1983-0 but not about
- JISX0208.1990-0.
- (#4333, Bruno Haible).
-1082. Fix documentation for XSetOMValues() (#4332, Bruno Haible).
-1081. Fix namespace polution in <X11/Xlib.h> introduced with patch #4293
- (#4331, Bruno Haible).
-1080. Fix a bug in the newly introduced Xutf8LookupString() function that
- loses input not representable in the locale encoding (#4330,
- Bruno Haible).
-1079. Avoid four new gcc warnings about const in lcUTF8.c introduced by
- patch #4293 (#4329, Bruno Haible).
-1078. Fix some additional cases of confusing local typedef for wchar_t
- (#4328, Bruno Haible).
-1077. Fix some round-trip conversion errors in COMPOUND_TEXT -> UTF8_STRING ->
- COMPOUND_TEXT due to wrong tables introduced by patches #4214, 4215
- (#4327, Pablo Saratxaga).
-1076. Cygwin update for building Xrender DLL (#4326, Suhaib M. Siddiqi).
-1075. Fix an undefined SUBDIRS in xc/lib/GL/mesa/src/drv/Imakefile when
- compiling on something other than x86, alpha or sparc (#4325,
- Brian Paul).
-1074. Don't have the neomagic driver disable stretching when a mode that
- fills the panel is selected (#4324, Andrew C. Aitchison).
-1073. Fix a bug in Xlib's _XimLocalMbLookupString() that causes a crash when
- a zero keycode keypress event is received (#4322, HIBINO Kei).
-1072. NetBSD doesn't have perl in its default install (Matthieu Herrb).
-1071. Add Xft support to xditview with #ifdefs (Keith Packard)
-1070. Add a MIT-MAGIC-COOKIE-1 generator to startx for NetBSD 1.5 and OpenBSD
- and FreeBSD and make mkcookie support more generic (Matthieu Herrb).
-1069. Update OpenBSD and NetBSD docs (Matthieu Herrb).
-1068. Clean up r128_video.c again (Marc La France).
-1067. Fix ATI clock generator recognition when an adapter BIOS cannot be
- retrieved (Linus Torvalds).
-1066. Fix int10 and ATI driver for video BIOSes larger than 64kB
- (Marc La France).
-1065. Change xf86MatchDevice() to initialise its return pointer and clean up
- drivers accordingly (Marc La France).
-1064. Fix for bug in new imConv.c (#4318, Ivan Pascal).
-1063. Fix for FreeBSD sysmouse support (#4317, from FreeBSD ports collection).
-1062. Enable the ru_SU local entries for FreeBSD (based on patch from FreeBSD
- ports collection).
-1061. Driver for the S3 Savage family of chips (#4315, 4316, 4319-4321,
- Tim Roberts).
-1060. Add xkb definitions for the Logitech cordless keyboard (#4314,
- Michel Goraczko).
-1059. Add support for "unicode keysym" to XKeysymToString() and
- XStringToKeysym() (#4313, Ivan Pascal).
-1058. SiS driver updates, including:
- - Performance tuning for sis630
- - Support XV extension for sis630
- - Support Chrontel TV for sis630
- (#4312, Can-Ru Yeou).
-1057. Fix Xrender library to handle strings > 254 chars long.
- Change Xrender and Xft interfaces to use 'unsigned int'
- instead of 'unsigned long' for 32-bit glyph values.
- (Keith Packard)
-1056. Fix neomagic driver mangled acceleration test (#4309, 4310,
- Chip Salzenberg).
-1055. Add a rudimentary driver for the SGI Indy's newport cards (only
- 8-bit and non-accelerated so far) (#4308, Guido Guenther).
-1054. Fix a bug in rman that is provoked by the new dumpkeymap man page
- (David Dawes).
-1053. Updates to the dumpkeymap utility, and add documentation (including
- a man page) (#4307, Eric Sunshine).
-1052. Add -version and -showconfig options to the Darwin Xserver, and print
- the usual "XFree86" banner message (#4306, Torrey T. Lyons).
-1051. Fix i810 crash when running XFree86 -configure (#4305, Ryan Drake).
-1050. Linux APM fix, which fixes a problem that shows up with the neomagic
- driver after an APM suspend (#4304, 4311, Chip Salzenberg).
-1049. Correct maximum ranges for Wacom IV devices (#4303, Frederic Lepied).
-1048. Add preliminary support for USB input devices under Linux (wacom
- driver (#4303, MATSUMURA Namihiko).
-1047. Locale fixes/cleanups, including:
- - Cleanup garbage in XLC_LOCALES.
- - Add "use_stdc_env' to locales where it was absent.
- - Move non-standard charset descriptions from the lcCT.c table to
- the XLC_LOCALE files.
- (#4302, Ivan Pascal).
-1046. Make sure the correct "driverName" string is used in xf86Configure.c.
-1045. Fix some i810 driver problems when too little videoRam is specified
- (David Dawes).
-1044. Fix an i810 driver bug that prevents the DRI from being enabled
- after a server reset (Jeff Hartmann).
-1043. Add a "dri" config file option to the i810 driver that can be used
- to enable/disable the DRI (no other method works for statically
- linked servers) (David Dawes, from VA's 7.0.1).
-1042. Update the i810 driver to check the max available GART memory
- (Jeff Hartmann, David Dawes, from VA's 7.0.1).
-1041. Resync DRI code/drivers with the DRI CVS (VA Linux). Includes
- 3dfx driver updates (Daryll Strauss).
-1040. Fix a couple of clipping problems on the Trident CyberBlade/Blade3d
- chipsets (Alan Hourihane).
-1039. Fix a couple of Alpha related issues (Jay Estabrook).
-1038. Change Xft interface (again) to use new XftColor datatype for
- colors instead of XRenderColor. xterm and x11perf updated to
- match. (Keith Packard)
-1037. Fix an i810 init problem that resulted in the fallback to 2D failing
- for one case where there's insufficient memory to enable the DRI
- (David Dawes, from VA's 7.0.1).
-1036. Add support for printing a vendor-specific version string in the
- X server startup messages (David Dawes, from VA's 7.0.1).
-1035. Xwd workaround for a gcc bug (Red Hat's XFree86-4.0.1-xwd-gcc-workaround
- patch).
-1034. Fixes for sparc drivers, mostly to prevent accessing the hardware
- when the server doesn't have control of the VT (Red Hat's
- XFree86-4.0.1-ffb patch).
-1033. Use OS-provided interface for accessing PCI config space on Linux/ia64
- (based on Red Hat's XFree86-4.0.1-ia64-pci patch).
-1032. Use AsmDefines when processing the Sparc assembler code for cfb
- (based on Red Hat's XFree86-4.0-sparc-asmflags patch).
-1031. Add PAM authentication to the X server (based on Red Hat's
- XFree86-4.0-Xwrapper patch).
-1030. Add Slovenian and Romanian entries to XKB's keymap/xfree86 file
- (Red Hat's XFree86-4.0-si_xkb patch and XFree86-4.0-ro_xkb.patch).
-1029. Fix for PAM support in xdm SessionExit() (Red Hat's
- XFree86-4.0-pamsession patch).
-1028. XlibInt.c patch to avoid buffer overflow (Red Hat's
- XFree86-3.3.6-fixemacs patch).
-1027. Updates to xfs from Red Hat and Debian, including:
- - command line options to make xfs drop it's root privs (-droppriv
- and -user) - command line options to make xfs start as a daemon,
- and a build option to make this the default.
- - don't let a port option in the config file override the -port
- command line option
- - cleanup/fix syslogging
- (based on #4253, Topi Miettinen, Debian, and Red Hat's
- XFree86-4.0-xfsredhat patch).
-1026. Support for startx to set up the Xauth when starting an X server
- (based on Red Hat's XFree86-4.0-startx_xauth patch).
-1025. Fix an unaligned access on Alpha with the tdfx driver (Jay Estabrook).
-1024. Add detection for CyberBlade/Ai1 Socket A chipsets (Alan Hourihane).
-
-XFree86 4.0.1g (29 November 2000)
-1023. Fix small bug in lcGeneric.c (#4301, Ivan Pascal).
-1022. Rewrite Xft library for Render extension/core text and font management
- Change xterm to use new interface (Keith Packard).
-1021. s3virge driver updates, including Xv fixes for the ViRGE DX, disable
- GX2 color expansion until it's stable, GX2 Xv code (not enabled or
- working yet) (#4299, Kevin Brosius).
-1020. Siliconmotion driver (#4298, Frido Garritsen, Silicon Motion, Inc.).
-1019. Fix Estonian_Estonia.1257 entry in locale.alias (#4297, 4300,
- Nerijus Baliunas).
-1018. New Lithuanian XKB map (#4296, Nerijus Baliunas).
-1017. Fix a problem with the "xtt" font module introduced with recent
- changes to the "freetype" module (#4295, ISHIKAWA Mutsumi).
-1016. Fix the return value for the "indirect" converter in Xlib (#4294,
- Bruno Haible).
-1015. ANSI C cleanup of Xlib locale core code (#4293, Bruno Haible).
-1014. Optimize the i18n support for parsing resource files for the unibyte
- locales, and clean up pre-ANSI-C-isms and warnings (#4292, Bruno Haible).
-1013. Enhance the CompoundText <-> UTF-8 converter so that it understands
- the BIG5 encoding scheme used by Emacs (#4291, Bruno Haible).
-1012. Fix documentation and implementation of _XlcCompareISOLatin1 and
- _XlcNCompareISOLatin1 (#4290, Bruno Haible).
-1011. Add new Unicode-based APIs for internationalized text for Xlib (#4289,
- Bruno Haible).
-1010. Fix a minor Mesa lighting bug (#4288, Brian Paul).
-1009. Fix the glide driver's resolution of symbols from the glide library
- (#4281, Pontus Lidman).
-1008. Fix X server stalling forever with local font servers on Linux 2.4
- kernels (#4280, Branden Robinson).
-1007. Improve temp file handling in the Xaw library (#4279, Branden Robinson).
-1006. Add support for Rage 128 RG (#4277, Michael Mattice).
-1005. Modify XimGetCharCode() to use conversion from keysym to UCS and then
- from UCS to the appropriate charset specified in the locale description
- (#4276, Ivan Pascal).
-1004. Allow Unicode fonts to be used as UTF-8 locale native fonts (#4275,
- Ivan Pascal).
-1003. Fix abnt2/br XKB config (#4274, Paulo Cesar Pereira de Andrade).
-1002. Let the Darwin X server build on pure Darwin as well as Mac OS X systems
- (#4273, Torrey T. Lyons).
-1001. Patch to allow xdm to build on Darwin (#4273, Torrey T. Lyons).
-1000. Fix parser not dup'ing a string (#4272, Paulo Cesar Pereira de Andrade).
- 999. Improve direct fifo writes for the glint/permedia3 pixmapwrite hook
- when using FIFO disconnect (#4271, Sven Luther).
- 998. Fix a sprite problem with the "xwin" server (#4269, Suhaib M. Siddiqi).
- 997. Fix a confusing local typedef for "wchar_t' in xc/lib/X11/lcUTF8.c
- (#4268, Bruno Haible).
- 996. Allow ProjectVar to override "/var" when set (based on #4266,
- Bruno Haible).
- 995. Rework Trident Blade/CyberBlade acceleration (Alan Hourihane).
- 994. Make the CyberBlade/e4 (aka 9540) work (Alan Hourihane).
- 993. Updates to Big5 encodings for the TrueType font backends (#4265,
- Jacky Bryant).
- 992. Fixes for Thai (th_TH) locale support in Xlib (#4264,
- Theppitak Karoonboonyanan)
- 991. Fix a segv in Xnest caused by overflowing the pixmap formats array
- (based on #4262, Matthieu Herrb).
- 990. Fix an xdm problem that prevents the chooser from working (#4261,
- Matthieu Herrb).
- 989. Update the Cards file (#4260, Paulo Cesar Pereira de Andrade).
- 988. Update Macedonian xkb symbols, and add mk_MK.utf8 to locale.alias
- (#4258, 4259, Damjan Georgievski).
- 987. Safe tempfile handline for imake's probing of glibc version (based on
- #4257, Colin Phipps).
- 986. Fix typo in dvorak xkb symbols file, plus white space cleanup (#4256,
- Branden Robinson).
- 985. Fix typo in server startup message (#4255, Branden Robinson).
- 984. Make XOpenDisplay() bail out if the server claims that its vendor
- string is > 256 in length (#4254).
- 983. Add some useful default key bindings for the xdm login widget (#4252,
- Branden Robinson).
- 982. Change the default xdm Xaccess file to not allow any connections
- (#4252, Branden Robinson).
- 981. Set the default glyph caching mode to "CACHE_16_BIT_GLYPHS"
- (#4251, Branden Robinson).
- 980. Make the X server use the XAUTHORITY environment variable (if set)
- when the -authfile command line flag isn't given (#4250,
- Branden Robinson).
- 979. Add Debian-specific settings to linux.cf (#4249, Branden Robinson).
- 978. Rename Trident Cyber9540 to CyberBlade/e4 and make appropriate
- changes in driver (Alan Hourihane).
- 977. Fix Trident Cyber series to only detect SDRAM (Alan Hourihane).
- 976. Make xf86SoundKbdBell() available to modules (for citron driver)
- (Marc La France, #4270, Frederic Lepied).
- 975. Fix glide driver's check for glide library presence (Marc La France).
- 974. Add missing symbol references in r128 and s3virge drivers
- (Marc La France).
- 973. Fix int10 debugging and reading in all segments between 0x0C0000 and
- 0x0F0000 (Marc La France).
- 972. Fix typo in imake.c (Marc La France).
- 971. Turn off SGRAM optimization for Trident Blade chips, causes some
- problems. (Alan Hourihane).
- 970. Ignore various ".stab.*" sections for Solaris (Marc La France).
- 969. Fix ENXIO errors on Linux BIOS retrievals by removing restriction on
- several OSes that xf86ReadBIOS()'s Base be page-aligned (Marc La France).
- 968. Disable change 873. It causes device/monitor mismatches
- (Marc La France).
- 967. Change linux/int10 to intercept signals generated by the vm86() syscall
- rather than killing the server (Marc La France).
- 966. Reinstate DG/UX mmap() bug work-around in int10 (Marc La France).
- 965. Rage128 and Radeon fix for -configure (Marc La France).
- 964. Fix int10 woes with retrieving PCI BIOSes (Marc La France).
- 963. Allow modules to intercept signals that would otherwise kill the server
- (Marc La France).
- 962. Fix static Xvfb server build (Marc La France).
- 961. Some warning fixes (Marc La France).
- 960. Rage128 and Radeon #include changes to reduce recompilations
- (Marc La France).
- 959. Modify item no. 949 - only reset clipping for Cyber9382, Cyber9385 and
- ProVidia9682 (Alan Hourihane).
- 958. Added messages about modes rejected on lookup (Egbert Eich).
- 957. Attempt to fix DDC1 support on Neomagic (Egbert Eich).
- 956. Added Block/UnblockSIGIO() to DDC1 readout code (Egbert Eich).
- 955. Enabled virtual depth for a second head on a G400 multihead
- (this needs to be looked at) (Egbert Eich).
- 954. Added code to check if the PictureScreen structure was initialized
- before referencing it (Egbert Eich).
- 953. Modified xf86UDelay() to use Block/UnblockSIGIO and usleep()
- instead of gettimeofday() (Egbert Eich).
- 952. Modified xf86MatchPciInstances() to allow for chipset overrides
- even when called with no separate vendorID (Egbert Eich).
- 951. Changed Xvfb to use fb instead of cfb (Egbert Eich).
- 950. Moved a misplaced xfree() in the generic driver. Now more than
- one chipset can use this driver in a multihead setup (Egbert Eich).
- 949. Did some fixes for the Trident driver ie. fixed a LCD modeline,
- reset clipping register on all non 3D chips (Egbert Eich).
- 948. Added missing parts for AXP support to lnx_video.c (Egbert Eich).
- 947. Added bsr/bsf to x86emu (Jeff Wiedemeier).
-
-XFree86 4.0.1f (16 November 2000)
- 946. Add a dumpkeymap utility for Darwin (#4248, Eric Sunshine).
- 945. Fix a Darwin build problem with mkcfm, and get xdm closer to building
- (#4247, Torrey T. Lyons).
- 944. DDX for the Xdarwin server (#4246, Torrey T. Lyons).
- 943. Enable xdm/PAM support by default for FreeBSD versions with PAM.
- 942. Fix a problem where the X server thinks it has acquired a VT at startup
- before it has really been released. This is due to the ioctl()
- returning prematurely because of a pending signal (Jeff Hartmann).
- 941. Fix a problem with the PAM support in xdm that prevents
- pam_start_session() from ever being called (Takanori Saneto).
- 940. Enable PAM support for xdm on FreeBSD (#A.202, Jean-Marc Zucconi, and
- Takanori Saneto).
- 939. Fix xf86cfg build problem when BuildXinerama is set to NO (#A.200,
- Jean-Marc Zucconi).
- 938. gccmakedep has a typo which affects handling the -o and -O options
- (A.192, Ivan Zakharyaschev).
- 937. Specify the units for the dpms and rate commands in the xset man
- page (#A.191, John Heidemann).
- 936. Let makedepend ignore "//" style comments on all platforms, not
- just Win32, and fix a bug in that code that was causing the line
- after such comments to also be ignored (#A.189, Guenther Grau).
- 935. Update GNU/Hurd support (#A.188, Marcus Brinkmann).
- 934. Initial port of the ark driver to 4.x (#4242, Ani Joshi).
- 933. Wacom input driver update, including support for 38400 link speed
- and fix wrong advertisement of min/max values (#4241, Frederic Lepied).
- 932. Fix some parser problems, including:
- - parser does not write Modes section and UseModes keyword
- - the vscan value wasn't being used
- - make the XF86ConfModesPtr structure accessible from the
- XF86ConfMonitorPtr structure
- - allow xf86Parser.h to be included from in a C++ program
- (#4238, 4243-4245, Paulo Cesar Pereira de Andrade).
- 931. Fix the name of the Serbian xkb symbols file (rename from yu to sr)
- (#4237, Ivan Pascal).
- 930. Fix mkcfm bug (#4236, Juliusz Chroboczek).
- 929. Glint/permedia3 updates (#4235, 4238, Sven Luther).
- 928. Fix an SVR4 loader build problem introduced in 4.0.1d (#4234,
- Takaaki Nomura).
- 927. Fix a bug in fontenc that would cause a memory leak whenever an
- encoding would be declared in encodings.dir but not in the encoding
- file itself (#4233, Juliusz Chroboczek).
- 926. Make the freetype backend use the fontenc matrix encoding support,
- remove support for the defunct XAnti extension, and bump the version
- of the freetype backend to 1.1.8 (#4233, Juliusz Chroboczek).
- 925. Add proper support for matrix encodings in fontenc (including the
- new FIRSTINDEX keyword in encoding files), and bump the version of
- the font module ABI to 0.2 (#4233, Juliusz Chroboczek).
- 924. Fix a problem the vesa driver (#4232, Paulo Cesar Pereira de Andrade).
- 923. Fix problems building the C&T driver with DEBUG defined (#4231,
- Taketoshi Sano).
- 922. Remove lt_LT.ISO8859-1 entry from compose.dir (#4230, Nerijus Baliunas).
- 921. s3virge driver updates, including:
- - Stabilize GX2 support, reenable silken mouse
- - Enable MX fixes
- - Add support for the render extension
- - Enable BLT_BUG for ViRGE and VX chipsets
- (#4229, Kevin Brosius).
- 920. Don't initialize DRI when noaccel is specified in the tdfx driver
- (Alan Hourihane).
- 919. Make module ABI compatibility mismatches fatal by default, and
- add a command line option for making them non-fatal (David Dawes).
- 918. Changed SiS driver to use fb instead of cfb (Alan Hourihane).
- 917. Fix r128 and radeon driver source code formatting that was munged
- during ATI merge (Kevin Martin).
- 916. Update Markus Kuhn's UCS fonts, and add his scripts for extracting
- subsets of them to the build process (David Dawes).
- 915. Fix visual setting in ATI r128/radeon driver (Jeff Wiedemeier).
- 914. Alpha fix for xf86cfg (Alan Hourihane).
- 913. Resync DRI code/drivers with the DRI CVS (VA Linux).
- 912. Fix tdfx driver to register resources and remove some redundant code
- (Alan Hourihane).
-
-XFree86 4.0.1e (6 November 2000)
- 911. Fix the ksc5601.1987-0 encoding file (#4226, 4228, Pablo Saratxaga).
- 910. Update xdm/sessreg to write ":0" type entried in utmp on OpenBSD
- (#4225, Matthieu Herrb).
- 909. Fix for Xmu under NetBSD, which doesn't #define "unix" anymore (#4225,
- Matthieu Herrb).
- 908. Preliminary support for OpenBSD/powerpc (#4225, Tsubai Masanari,
- Matthieu Herrb).
- 907. Support for native WSCONS driver on NetBSD and OpenBSD (#4225,
- Tsubai Masanari).
- 906. Support for new OpenBSD 2.8 shared libs scheme (#4225, Matthieu Herrb).
- 905. Support for the OpenBSD ports tree (#4225, Marc Espie).
- 904. Update the list of layouts in the xfree86.lst file (#4224, Ivan Pascal).
- 903. Add an XKB map for Serbian (#4224, Milos Rancic).
- 903. New revision of the Bulgarian XKB map (#4224, Anton Zinoviev).
- 902. Change the Alt key definitions in the "group switcher" descriptions
- to not override the base Alt key mappings (#4223, Ivan Pascal).
- 901. Change XKB Mode_switch behavior description to not clear "locked
- group" (#4223, Ivan Pascal).
- 900. Create a root window property "XFree86_DDC_EDID2_RAWDATA" when
- suitable data is available (#4222, Andrew C. Aitchison).
- 899. Fix some typos/errors in the Latvian and Lithuanian entries in
- the locale.alias and locale.dir files (#4221, Nerijus Baliunas).
- 898. Fix two more bugs in xkbcomp: handling of 'keycode aliases', and
- copying of strings when copying structures (#4208, Ivan Pascal).
- 897. Added render extension support to tseng driver (Egbert Eich).
- 896. Fixed clock code in neomagic driver (Egbert Eich).
- 899. xf86Configure now uses the imake variable xf86ConfigFile (Egbert Eich).
- 898. xf86cfg has a new option for a server path (Egbert Eich).
- 897. xf86cfg can now handle more than one command line argument (Egbert Eich).
- 895. Added a delay to dac code in neomagic driver (Egbert Eich).
- 894. Changed shadowfb to use delayed updates in neomagic
- driver (Egbert Eich).
- 893. Rewrote ddc code in nv driver (Egbert Eich).
- 892. Rewrote ddc code in neomagic driver (Egbert Eich).
- 891. Fixed problems with enter/leave/closeScreen in nv
- driver (Egbert Eich).
- 890. Fixed a bug in the fixed modelines in trident driver (Egbert Eich).
- 889. Added reinitialization of blitter on enterVT in trident
- driver (Egbert Eich).
- 888. Fixed a typo which caused wrong register to be set in trident
- driver (Egbert Eich).
- 887. Added loader symbol handling to tseng driver (Egbert Eich).
- 886. Changed tseng driver to use fb instead of cfb (Egbert Eich).
- 885. Changed chips driver to use fb instead of cfb (Egbert Eich).
- 884. Added render extension support to chips driver (Egbert Eich).
- 883. Added render extension support to neomagic driver (Egbert Eich).
- 882. Added render extension support to nv driver (Egbert Eich).
- 881. Modified helper_mem.c to map everything between video bios and
- system bios on PC-like platforms (Egbert Eich).
- 880. Modified Linux mapVidMem() to map memory on page boundaries
- (Egbert Eich).
- 879. Changed BIOS_SIZE (Sys BIOS) from 0x10000 to 0xffff to make
- int10 work un DGUX (Takis Psarogiannakopoulos).
- 878. Fixed a bug in the argument list of the call to xf86ReadPciBIOS()
- from int10/pci.c (Egbert Eich).
- 877. Added simple sanity check to catch situation where DDC reads
- all 0 and therefore trivially has the correct checksum (Egbert Eich).
- 876. Changed i2c code to allow for longer rise/fall times on longer
- cables (Egbert Eich).
- 875. Removed limit on default visual for 4bpp (Egbert Eich).
- 874. Added macros to build nv driver on AXP (Jay Estabrook).
- 873. Changed -configure to use primary card as first card (Egbert Eich).
- 872. Changed generic vga driver to not unmap memory when switched away.
- 871. Fixed problem that caused APM support to be disabled on server
- reset (Egbert Eich).
- 870. Added support for newer sparse AXP systems (Egbert Eich).
- 869. Added support for MGA G100 PCI (Egbert Eich).
- 868. Add missing exported libXext Shm functions to loader (Alan Hourihane).
- 867. Change Rage 128 DRM driver name to what the r128 kernel module
- expects (Kevin Martin).
- 866. Fix newly merged "ati" driver probe to allow "r128" and "radeon"
- driver names in the XF86Config file for backwards compatibility
- (Kevin Martin).
- 865. Use vgaHW module to fix font save/restore in i128 driver (Robin Cutshaw).
- 864. Fixed (hopefully) a Xinerama problem with BE clients (Mark Vojkovich).
- 863. Modifications to GLw to allow it to build without Motif, and
- integrate it into the regular build process (#4142,
- Carlos A. M. dos Santos, David Dawes).
- 862. Import the GLw parts of SGI's ogl-sample (snapshot from 20001102)
- under xc/extras/ogl-sample.
- 861. Add support for SubSection in the Vendor Section of the config file
- (Stuart Anderson)
- 860. Fix a typo introduced in a recent update to the 'no' xkb symbols
- file (#4218, Pablo Saratxaga, 4219, Harald Nordgård-Hansen).
- 859. Parser symbol update (#4217, Paulo Cesar Pereira de Andrade).
- 858. Updates to iso8859-9e, microsoft_cp1251 charset handling, and
- add real support for microsoft_cp1255 and microsoft_cp1256 (#4214, 4215,
- Pablo Saratxaga).
- 857. Fix Sparc build problems linking xf86cfb with libloader that were
- related to various interdependencies (#4212, David S. Miller).
- 856. Allow generic XVideo adaptors (like v4l) to be initialised for
- the G400 crtc2 (#4211, Antti Tapaninen).
- 855. Update mga driver to check the chipset much earlier to prevent
- server hang when using g400 dual head + millennium 2, and some
- G200 PCI/warp cleanups (#4211, Antti Tapaninen).
- 854. Updates to the Macedonian xkb symbols (#4210, 4220, Damjan Georgievski).
- 853. Combine the ATI, Rage128 and Radeon drivers into one with multiple
- sub-modules (Marc La France).
- 852. Make BIOS accesses in the Rage128 and Radeon drivers independent of
- endianess and alignment (Marc La France).
- 851. Fix the claiming of XF86Config device sections by drivers, and change
- xf86MatchDevices() to only return unclaimed sections (Marc La France).
- 850. Fixed build problem in s3virge when XvExtension is not set (Stuart
- Anderson)
- 849. Add a message at the top of the server/log output for pre-release
- versions stating that they are unsupported (David Dawes).
- 848. Fix two problems in Imake.rules: have LinkBuildBinary create the
- used directory if it doesn't exist, and fix a missing ')' in
- the LinkConfFileLong (#A.187, Ivan Zakharyaschev).
- 847. Fix a libXt bug that affects multidisplay applications when Xt is
- built to use select(2) rather than poll(2) (#A.181, Antony Uspensky).
- 846. Add a -utime option to xclock that allows the digital clock to
- display the number of seconds since the Epoch (based on A.173,
- Kelsey Hudson).
- 845. Add symbols mappings for extra keys on the BTC 9000 keyboard (#A.167,
- Stefano Cavallari).
- 844. Fix twm's icon manager so that it is functional before an EnterNotify
- event is received in twm's event loop (#A.156, Jason Zwolak).
- 843. Update comments about standards for Estonian support, and add an
- entry for the Estonian keyboard layout to the xfree86.lst file
- (#A.155).
- 842. Fix for G400 crtc2 blank screen color (#4205, Antti Tapaninen).
- 841. Modify the mga/HALlib support to allow it to be selected at
- run-time. This allows a driver built with HALlib to be used with
- older hardware (like the Millennium, Millennium 2) (#4204,
- Antii Tapaninen).
- 840. Add config/imake support for Darwin (#4200, Torrey T. Lyons).
- 839. Add a driver for the citron touch screen (#4199, Peter Kunzmann).
- 838. Fix Html man page install problem (Robin Cutshaw).
- 837. Fix transparency problem with blits, add DDC2 for i128-II chipset
- in i128 driver (Robin Cutshaw).
- 836. Allow loader to be build if HasShm == NO (Marcus Brinkmann).
- 835. Allow the log file to be set in the config files (Stuart Anderson).
- 834. Fix Rage128/Radeon drivers to free correct scratch buffer on LeaveVT
- (Alan Hourihane).
- 833. Xterm patch #148 (#4213, Thomas Dickey).
- 832. Split ATI driver into two modules in preparation for merging in the
- r128 and radeon drivers (Marc La France).
- 831. Update the XFree86 -configure code to put the default font path
- in the Files section of the config file it generates (#4202,
- Paulo Cesar Pereira de Andrade).
- 830. Add write-combine support for IA-64 (Mark Vojkovich).
-
-XFree86 4.0.1d (27 October 2000)
- 829. Add code to the xf86config utility to get the list of XKB selections
- from the appropriate XKB files rather than having them hard-coded.
- Also allow XkbOptions to be set (#4209, Ivan Pascal).
- 828. -
- 827. Xterm patch #147 (#4207, Thomas Dickey).
- 826. Move the initialisation of pScrn->EnableDisableFBAccess into
- InitOutput(), which fixes an infinite loop problem that can show up
- on server resets (#4206, Joe Moss).
- 825. Make xf86cfg use the same config file search path as the X server
- (#4203, Paulo Cesar Pereira de Andrade).
- 824. -
- 823. Fix a bug in the vesa driver when finding the linear address for the
- card, some compile time warnings, faster code for handling colormap
- changes, and add DGA support (#4201, Paulo Cesar Pereira de Andrade).
- 822. Fix a typo in the mga driver that causes planemask problems with
- the PCI version of the G100 (#4198, Antti Tapaninen).
- 821. Add an option to the C&T driver to disable "TMED" (DSTN dithering
- scheme) (#A.172, Damir Anicic, #4196, 4197, David Bateman).
- 820. Pablo Saratxaga's i18n updates for XFree86 that are used in Mandrake 7.2.
- Includes various new and fixed xkb files, locale name additions and
- updates, and new support for various charset encodings (#4195,
- Pablo Saratxaga).
- 819. Improve Xaw 7 compatibility with version 6 in the form widget geometry
- management code. This should fix some problems seen with ghostview
- (#4194, Paulo Cesar Pereira de Andrade).
- 818. Build fixes for XFree86 on Cygwin (#4193, Suhaib Siddiqi).
- 817. Fix for missing symbol messages in int10 and cirrus driver
- (Marc La France).
- 816. Detect null windows of PCI-to-PCI bridges (Marc La France).
- 815. Update pciConfigRec's and pciVideoRec's when relocating PCI resources
- (Marc La France).
- 814. Fix handling of 64-bit PCI bases (Marc La France).
- 813. Fix cursor hide on i128 in multi-head mode (Robin Cutshaw).
- 812. Fix accel on i128 non-primary cards (Robin Cutshaw).
- 811. locale.alias fix for ko_KR.utf8 (#4190, Won-kyu Park).
- 810. Fix incorrect vtSema usage in neomagic driver DPMS code (#4184,
- Andrew C Aitchison).
- 809. Fix a 1-byte overflow in Xtrans.c (#4182, Aaron Campbell).
- 808. Enable building the loadable server for BSD/OS.
- 807. Fix the following xkbcomp bugs:
- - 'base group' keyword added to 'whichGroup' possible values list
- - 'groupsWrap' keyword removed from 'controls' possible values list
- - fix crash in processing files with unnamed sections
- - now keep 'per key group adjustment mode' in XKM file
- - now allow an empty 'key' description to be specified in an
- xkb_symbols file.
- (#4170, Ivan Pascal).
- 806. Add a "bcast" flag for mode lines, which is needed to display
- broadcast resolutions (#4169, Michel Danzer).
- 805. Fix compiler warnings when building the mga driver with or without
- the Matrox HALlib, add the digital/tv-out/tvstandard/cabletype
- options, missing files, and some cleanups (#4166, Antti Tapaninen).
- 804. Fix spelling from xvinfo (#4166, Antti Tapaninen).
- 803. Add support to twm for displaying multibyte strings on window titles,
- and make the twm config file reader 8-bit clean (#4165, 4168, 4180,
- Tomohiro Kubota).
- 802. Fix a tseng driver problem related to the usable amount of video memory
- (#4164, A.182, Randy McCaskill).
- 801. Add support for the new Render extension to the nv driver, and
- turn on fb support by default in the nv driver (#4161, Jarno Paananen).
- 800. Fix a typo that prevents DPS from being built statically (#4160,
- Juliusz Chroboczek).
- 799. Fix some xkbfile bugs in the .xkb files that it writes
- (two adjacent commas, no xkb_types section in xkb_layout) (#4159,
- Ivan Pascal).
- 798. Fix an xkbcomp bug that causes an infinite loop for some error
- message output (#4158, Ivan Pascal).
- 797. Fix XlcNONE usage in charset description (#4153, Ivan Pascal).
- 796. Fix a bug in XKB group adjustment (#4152, Ivan Pascal).
- 795. Fix some build problems that show up with the SVR4 C compiler
- (based on #4139, Takaaki Nomura).
- 794. Add two new XKB group switches (Alt+Shift and Menu key) (#4151,
- Ivan Pascal).
- 793. Fix HTML man page links when the man page suffix has more than one
- character (#4150, Bruno Haible, A.149, Serguei Ostrovskii).
- 792. Remove the old UTF-1 locale (it's not filesystems safe, deprecated
- for years, withdrawn from ISO standards, and nobody uses it) (#4147,
- 4149, Bruno Haible).
- 791. Replace multiple stub functions in libXThrStub by only one (#4141,
- Carlos A. M. dos Santos).
- 790. Fix some build problems that show up with glibc 2.1.3 where ctype.h
- sometimes (always?) depends on stdlib.h being included (#4134,
- Kevin Brosius).
- 789. Updates for building on BSD/OS 4.2 on UltraSparc (#4132, Kurt J. Lidl).
- 788. Default to linking the Xfont library into the X server statically
- (based on #4127, Kurt J. Lidl).
- 787. Update apNetBSD.shar for a kernel mmap interface change (#4124,
- Bernd Ernesti).
- 786. When the "auto" mouse protocol is specified, do the auto-detection
- whenever regaining control of the VT (based on #4120, Kazutaka Yokota).
- 785. Change the usage of the "Xinerama" config file option to be consistent
- with all the other ServerLayout/ServerFlags options, and document it
- in the XF86Config man page (#4118, Itai Nahshon).
- 784. Add I2C/DDC support to i128 driver (Robin Cutshaw).
- 783. Add non-GXcopy raster op support to cirrus driver (#4178, David Monniaux).
- 782. Use DlLibrary instead of referencing -ldl explicitly in xf86cfg
- (#4189, Matthieu Herrb).
- 781. Add S3 Virge XVideo support (preliminary) (#4186, Kevin Brosius).
- 780. Fix non-DRI build problem in r128 driver (#4188, Matthieu Herrb).
- 779. Add XLIB for OpenBSD/i386 dependency problem to xvinfo
- (#4187, Matthieu Herrb).
- 778. Update C&T driver, remove obsolete acceleration and use fb instead
- of cfb with USE_FB option (#4185, David Bateman).
- 777. Experimental XAA Render support in the MGA driver (Mark Vojkovich).
- 776. Preliminary XAA support for the Render extension (Mark Vojkovich).
- 775. Pass depth/bpp correctly, scan all fbdev devices, misc fbdev fixes.
- (#4179, Michel Danzer).
- 774. Add generic Vesa driver, fixes for xf86cfg plus changes to parser to
- reflect xf86cfg changes (#4174,#4175, Paulo Cesar Pereira de Andrade).
- 773. Loader fixes for Alpha. (Jay Estabrook).
- 772. Accelerated TGA2 32bpp for tga driver (Jay Estabrook).
- 771. Allow use of Compaq's Math Library on Alpha (currently for Mesa)
- (Alan Hourihane).
- 770. Update Tiny-X Xvesa server for standard VGA BIOS modes. (Keith Packard)
- 769. Added ATI Radeon driver, accelerated 2D only (for now) (VA Linux).
- 768. Fix depth24/32 issue in i128 driver (#4176, Andrew C Aitchison).
- 767. On IA-64's, build DRI and drm's if they would be built on IA-32's
- (David Mosberger).
- 766. Fix xf8_32wid build on Sparc's (Marc La France).
- 765. Fix MMIO macros for Sparc's (David S. Miller, Jakub Jelinek,
- Marc La France).
- 764. Sparc warning fixes (Marc La France).
- 763. Fix for decoded I/O and memory ranges of certain Sun PCI-to-PCI bridges
- (David S. Miller, Jakub Jelinek).
- 762. Force ATIAvoidCPIO to YES on Sparc's (Marc La France).
- 761. Minor fix for the ATI driver's printing of MMIO registers
- (Marc La France).
- 760. Minor fix for sunffb DGA support (Marc La France).
- 759. Remove unnecessary pointer<->long casts in tseng driver (Marc La France).
- 758. Re-align Sparc PCI support with that of other architectures
- (Marc La France).
- 757. mmap() /dev/fb instead of /dev/mem on Linux/Sparc (Marc La France).
- 756. Fix OS-reported PCI ranges on Linux/Sparc (David S. Miller,
- Jakub Jelinek).
- 755. Remove a dependency on word size in the determination of PCI resource
- sizes on Linux (Marc La France).
- 754. Permedia3 updates (#4177, 4183, 4192, Sven Luther).
- 753. Add Xv support to the r128 driver (Stuart Anderson/Vladmir Dergacheb)
- 752. Make VBE module log a message when the BIOS doesn't support any VESA
- extensions (Marc La France).
- 751. Fix int10 so that it rejects BIOS's that are not aligned on a 512-byte
- boundary (Marc La France).
- 750. Fix int10 for ISA adapters on Alpha's (Egbert Eich).
- 749. Fix for ATI ISA adapters on Alpha's or with -configure (Marc La France).
- 748. Fix stupid clock probe bug in ATI driver (Marc La France).
- 747. Reorganise ATI driver in preparation for futuure changes
- (Marc La France).
- 746. Formatting changes to hsync/vrefresh messages (Marc La France).
- 745. Fix spurious free() when using an ISA adapter (Marc La France).
- 744. Preliminary acceleration of the Render extension for Matrox G200/G400
- (Mark Vojkovich).
- 743. Fix ordering of drawable destruction in client-side DRI (Brian Paul).
- 742. Update Trident's text acceleration routines (Alan Hourihane).
- 741. Destroy unbound window info when a client destroys a context in
- the client-side DRI driver (Kevin Martin).
- 740. Make ATI driver's detection of Rage 128's more precise (Marc La France).
- 739. Reinstate BIOS checksum verification but make it non-fatal
- (Marc La France).
- 738. Don't set protection register on older trident chips
- Fixes Vertical line problem. (Alan Hourihane).
- 737. Add missing symbols for Solaris (incomplete) (Marc La France).
- 736. Add primitive support in xterm for Xft based fonts (Keith Packard)
- 735. Add new Xft library to hook FreeType 2 to Render (Keith Packard)
- 734. Added support for Number Nine I128 chipsets (Robin Cutshaw).
- 733. Added support for softbooting BIOSes on ia64 (Egbert Eich).
- 732. Fixed handling of XtMakeGeometryRequest() to test for parent
- belonging to subclass of composite class only if the widget
- itself is managed. This follows the specs more closely.
- (Keith Packard).
- 731. Changed handling of DDC read in r128 driver. Driver does not
- fail any more if vbe DDC reads don't succeed (Egbert Eich).
- 730. Fixed infinite loop when referencing the same mnitor section
- twice when using a Mode Section (Egbert Eich).
- 729. Fixed problem that caused SIGV in xf86GetValidBiosBase() (Egbert Eich).
- 728. Fixed macintosh us keyboard (Olaf Hering).
- 727. Added missing symbols to mga driver (Stefan Dirsch).
- 726. Fixed a ia64 loader problem that caused SIGV when PLT was present
- (Andreas Schwab).
- 725. Fixed ia64 build rules (Andreas Schwab).
- 724. Fix DGA library to only swap events for DGA 2.0 X servers
- 723. Fix locale parsing code in Xlib and Xt (Matthieu Herrb)
- 722. Fix X Test Suite to work on 800x600 screens (Keith Packard)
- 721. PCI chip ID updates to ATI driver (Marc La France).
- 720. Fix i810 driver for -probe and -configure (Marc La France).
- 719. Change message when default modes are deleted (Marc La France).
- 718. Fix Xinerama byte swapping bug (Marc La France).
- 717. IA-64 and Alpha fixes for pswrap, Mesa, DRI, Xpm, libX11, Xt, Xaw, Xmu,
- dps, Type1 fonts, cfb24, most output drivers, ELF loader, ramdac module,
- xf4bpp and xf86cfg (Marc La France).
- 716. Improve IA-64 support by removing a plethora of 32-bit'isms
- (Marc La France).
- 715. Default HasLinuxDoc to NO (Marc La France).
- 714. Lots of Neomagic driver fixes/enhancements (Mark Vojkovich).
- - Fix logic bug that kept HW cursor from being used.
- - Added support for gamma correction and DirectColor visuals.
- - Fixed some depth/bpp confusion (depth 15 works now).
- - Convert from cfb to fb.
- - Fix typo that kept the pixmap cache from being used.
- - Fixed DGA support.
- - Disable 8x8 pattern fills because they don't work.
- - Set correct virtual desktop size limits for 2160 and older chips.
- - Preliminary man page.
- - Enable burst modes by default.
- - Accelerate ImageWrite support for 2097/2160.
- 713. Fix some depth 32 problems in XAA (Mark Vojkovich).
- 712. Add Silken Mouse to Rage 128 driver (Alan Hourihane).
- 711. Resync DRI code/drivers with the DRI CVS (VA Linux).
- 710. Add glxinfo to programs list (#4138, Mark Paton).
- 709. Add LVDS support for SiS and fix copyright messages (#4136, Can-Ru Yeou).
- 708. Fix support for C&T 69030 (#4137, David Bateman).
- 707. Support Cirrus Logic 7548 chip (#4146, David Monniaux).
- 706. Fix typos in Xt man pages (#4156, Carlos Santos).
- 705. Fix libdps bug (#4154, Juliusz Chroboczek).
- 704. Xterm patch #146 (#4144, Thomas Dickey).
- 703. Xterm patch #145 (#4140, Thomas Dickey).
- 702. Fix 32bpp on the Permedia3 (Sven Luther).
- 701. Fix to xterm InsertChar() to handle cases where cur_col + n
- ends up past the end of the line (Andreas Schwab).
- 700. Added keyboard layouts for PowerMac (Olaf Hering).
- 609. Fixed Macintosh keyboard layouts (Olaf Hering).
- 608. Fixed build when BuildServer defined NO (Egbert Eich).
- 607. Fixes for C&T 69030 (David Bateman).
- 606. Fix for locale setting in Xlib and Xt using getlocale()
- from glibc5 (Egbert Eich).
- 605. Added handling of i5/686 and k6 compiler defines to Imake.cf
- (Philipp Thomas).
- 604. Added support for non-English locales in xload (Egbert Eich).
- 603. Fixed memory initialization in Xlib (Vladimir Nadvornik).
- 602. Fixed memory initialization in xdm (Egbert Eich).
- 601. Rudimentary S390 support (Ruediger Oertel, Bernhard Kaindl).
- 600. Enabled support for compressed xpm-files (Stefan Dirsch).
- 599. Added support for Czech querty keyboard (Jan Holesovsky).
- Some fixes for ia64 ().
- 598. Added CPU to Screen Color expansion to Neomagic driver (Egbert Eich).
- 597. Added support for hotkey display output switch for Neomagic
- driver (Egbert Eich).
- 596. Add "xvinfo" client for querying Xv adaptors (Mark Vojkovich).
- 595. Fix DGA support in the i810 driver (Mark Vojkovich).
- 594. Enlarge the i810 pixmap cache and have the YUV overlay use that memory
- rather than allocate dedicated memory for overlay data (Mark Vojkovich).
- 593. Add/fix support for the Rage 128 Mobility chips (M3/M4) (Kevin Martin).
- 592. Fix RegisterResources for multiple heads in glint driver
- (#4143, Berend Ozceri).
- 591. Update Permedia3's hw cursor to match the Permedia2v's they are
- the same (Alan Hourihane).
- 590. Fix glint driver to use colorKey rather than fixed value (Alan Hourihane).
- 589. Add ScreenToScreenCopies for Permedia3 (Alan Hourihane).
- 588. Add SilkenMouse support to the i810 driver (Mark Vojkovich).
- 587. Disable DRI acceleration in depth 15 on the i810 because it doesn't
- work (Mark Vojkovich).
- 586. Fix some ordering problems in the I810ScreenInit that broke the
- software cursor and backing store (Mark Vojkovich).
- 585. Convert the i810 driver from cfb to fb (Mark Vojkovich).
- 584. Fix some depth/bpp confusion in the i810 driver. Depth 15 works now
- (Mark Vojkovich).
- 583. Turn off visual ID matching in Xv (Mark Vojkovich).
- 582. Add the IA-64 ELF loader (Jakub Jelinek).
- 581. Add I420 and UYVY image formats to the i810 driver (#4135, Jonathan Bian).
- 580. Fix an Xaw problem with illegal aliases (#4133, Jakub Jelinek).
- 579. Set $(SHELL) to '/bin/sh -e' on Linux to allow builds/installs stop
- immediately on errors as on other platforms (Brandon Robinson).
- 578. Update i810 driver for -configure to work (Alan Hourihane).
- 577. Have Xv silently ignore client requests with zero sized primitives
- (Mark Vojkovich).
- 576. Disable gamma correction and DirectColor visuals on the i810 because
- they don't work (Mark Vojkovich).
- 575. Fix a bug in XAA's MSBFIRST color expansion support (Mark Vojkovich).
- 574. Allow the default i810 video overlay key to be changed from the
- XF86Config file (Mark Vojkovich).
- 573. Don't build DRM modules with a non-module Linux kernel (Marc La France).
- 572. Reinstate non-MMIO-only version of ATI driver for Alpha architecture
- (Marc La France).
- 571. Fix input event queueuing for 64-bit platforms (Marc La France).
- 570. IA-64 changes resulting from a source cross-check with Alpha support
- for 64-bit dependencies (Marc La France).
- 569. Fix in ATI drivber for DPMS support on panels (Marc La France).
- 568. I810 bugs fixes and enhancements relating to Xv (#4121, 4117, 4123,
- 4128, Jonathan Bian).
-
-XFree86 4.0.1c (28 August 2000)
- 567. Add support to xset for setting the keyboard repeat rate using XKB
- (A.119, A.126, Stephen Montgomery-Smith).
- 566. Various DRI-related 64-bit/IA-64 fixes (#A.134, David Mosberger).
- 565. Support for multithreaded libraries on NetBSD when used in conjunction
- with the GNU pth library (#4113, Chris Sekiya).
- 564. Add /usr/pkg/bin to NetBSD's DefaultUserPath (#4112, Bernd Ernesti).
- 563. Add a (Linux-specific) VESA driver for Keith's small X server (#4111,
- Juliusz Chroboczek).
- 562. Update Hungarian xkb maps (#A.145, Peter Soos).
- 561. Fix ATI driver bug that prevented the disabling of int10, ddc and vbe
- through options (Marc La France).
- 560. Improve libX11 behaviour when a server doesn't have XKB, allowing
- XKB-aware XLookupString features with servers without XKB (#4108,
- Ivan Pascal).
- 559. Fix a bug in xkbcomp'shandling of 'group compat' data (#4107,
- Ivan Pascal).
- 558. Fix an i810 driver problem doing XvImage with clipping (#4106, 4110,
- Jonathan Bian).
- 557. Add PCI info for devices found on the G4 Mac (#4105, Matthieu Herrb).
- 556. New XkbOptions for LED selection (#4101, Ivan Pascal).
- 555. Changes to XkbGetControls regarding ax_options (#4100, Ivan Pascal,
- based on A.125, Stephen Montgomery-Smith).
- 554. Changes to XkbSetControls regarding per_key_repeat (#4099, Ivan Pascal,
- based on A.124, Stephen Montgomery-Smith).
- 553. Fix MouseKeys acceleration (#4098, Ivan Pascal, based on A.112,
- Stephen Montgomery-Smith).
- 552. -
- 551. Man page for Xmark (#4097, Richard Braakman).
- 550. Fixes for Macintosh XKB data files (#4094, Ani Joshi).
- 549. Change VarDbDirectory to /var/lib on Linux to comply with FHS 2.1
- (#4093, Branden Robinson).
- 548. Include <sys/types.h> in agpgart.h (#4091, Branden Robinson).
- 547. Re-add installation of the micro font (#4090, Branden Robinson).
- 546. Fix the rstart/server script generation (#4088, 4089, Branden Robinson).
- 545. Allow mkhtmlindex.sh to work when the shell's -e flag is used (#4087,
- Branden Robinson).
- 544. Xterm patch #144 (#4109, Thomas Dickey).
- 543. Xterm patch #143 (#4104, Thomas Dickey).
- 542. Xterm patch #142 (#4102, Thomas Dickey).
- 541. Xterm patch #141 (#4085, Thomas Dickey).
- 540. Xterm patch #140 (Thomas Dickey).
- 539. Xaw bug fix (#4084, Paulo Cesar Pereira de Andrade).
- 538. Add support for the NeoMagic NM2230 MagicMedia 256AV+ to the neomagic
- driver (#4083, Andrew C Aitchison).
- 537. Fix generic Xom to select the same font for measuring text escapement
- as is used for drawing (#4082, Owen Taylor).
- 536. Resync DRI code/drivers with the DRI CVS (VA Linux).
- 535. Engine polling changes in r128 driver (David Mosberger).
- 534. Fix linear memory mapping in ATI driver (Marc La France).
- 533. Fix endianness problems in the ATI driver when accessing BIOS images
- (Marc La France).
- 532. Allow building Xptr, Xnest and Xvfb with MakeDllModules
- (Bill Nottingham).
- 531. Build DRI drivers on IA-64 (David Mosberger, Marc La France).
- 530. Use $(CC) instead of $(LD) when building modules (Bill Nottingham).
- 529. When building with MakeDllModules, generate both dynamic and static
- libraries (Bill Nottingham, Marc La France).
- 528. Fix detection problem with ramdac for Glint Permedia1's
- (Alan Hourihane).
- 527. Fix minor symbol resoltion problem in dlopen() loader (Marc La France).
- 526. Alpha changes that fell out of RadHat's IA-64 changes (Marc La France).
- 525. A merge of most of RedHat's IA-64 changes (Keith Fish, Stephane Eranian,
- Bill Nottingham, Marc La France):
- - Don't force static server build.
- - Fix NULL #define'ition for loader server.
- - Various #if-testing changes.
- 524. Fix the few problems that showed up with the integration of the cygwin
- support (Suhaib M. Siddiqi).
- 523. ATI driver changes (Marc La France):
- - Make ATIProbe() and ATIPreInit() optionally more verbose.
- - Fix compile problem on Alpha's.
- - Fix Mach64 hardware clipping bug.
- - Support transparency during Mach64 screen-to-screen copies.
- - Disable int10 interface in MMIO-only driver version.
- - Fix determination of MMIO base address for Mach64 GX, CX, CT, ET,
- VT and GT.
- - "Wake" up ATI VGA's before probing for them.
- - Other cosmetic changes.
- 522. Workaround for problems with static during palette changes on the
- MGA G400 (Mark Vojkovich).
- 521. Share common drm files between Linux and FreeBSD. This fixes
- DRI-related build problems on FreeBSD (David Dawes).
- 520. Add Romanian xkb symbols definitions (Cristian Gafton).
- 519. First cut at pushing the AGP GART interface into the os-support
- layer, with support for Linux and FreeBSD (David Dawes).
- 518. Fix SHM support in Xv that was broken in 4.0.1b (David Dawes)
- 517. Change the Solaris8/x86 keyboard handling to map the raw keycodes to
- the same keycodes that we use on other platforms, and remove the
- Solaris8/x86-specific XKB definitions (David Dawes).
- 516. Fix a problem in the fbdev driver where xf86DrvMsg() is called before
- the necessary pScrn fields have been initialised (Martin Dalecki).
- 515. Fix mga dri bug that caused some rendering corruption when the dri module
- was loaded (Mark Vojkovich).
-
-XFree86 4.0.1b (11 August 2000)
- 514. Fix the freetype font renderer's handling of True Type Collections
- (.ttc files) (based on #A.123, timecop at japan.co.jp).
- 513. Add PCI IDs for Silicon Motion, Inc (#A.122, Martin Dalecki).
- 512. Fix a problem with the sequence number not being byte-swapped
- for the reply to the DPMSCapable request (#A.120, Stephen Tse).
- 511. Fix input driver PreInit funtions to behave as expected by InitInput()
- (David Dawes).
- 510. Port the spaceorb input driver to 4.x (Guido Heumer).
- 509. Port the Summa input driver to 4.x (#A.116, Peter Schlaile).
- 508. Add a DigitalEdge input driver (#A.116, Peter Schlaile).
- 507. Remove obsolete PC98 code (#4081, Takaaki Nomura).
- 506. Fix PC98 keyboard problems (#4081, Osamu Tomita).
- 505. Imake support for building on Linux/arm32 (#4080, Andrew E. Mileski).
- 504. Fix a problem with restoring the PIXCONF register in the i810 driver
- (#4078, Jonathan Bian).
- 503. Fix a build problem with the sis dri driver Imakefile (#4076,
- Takaaki Nomura).
- 502. Add DPMS support to the fbdev driver (#4075, Ani Joshi).
- 501. Add DPMS support to the fbdevhw module (#4074, Ani Joshi).
- 500. Fix VGA detection bug with Mach64 integrated controllers
- (Marc La France).
- 499. Accelerated line support for the NV driver (Chas Inman, Mark Vojkovich).
- 498. Add GeForce2 support to the NV driver (Chas Inman).
- 497. Integrate Cygwin support. To compile, this requires Cygwin 1.0 or
- later with gcc 2.95.2 and Windows NT (#4073, Suhaib M. Siddiqi).
- 496. Add en_GB.ISO8859-15 to locale.dir (David Dawes)
- 495. Build int10 on all platforms and move ATI driver after r128 driver in
- compiled-in probe lists (Marc La France, Michael Madore).
- 494. Fix bug in parser code: addNewOption2() trunkates option list
- when an option is added that already exists (Egbert Eich).
- 493. Fix tmp file problem with makedepend scripts (based on report from
- Alan Cox).
- 492. ATI driver changes (Marc La France):
- - Fix resource relocation bug.
- - An attempt at fixing problems reported with Chrontel 8398's.
- - Workaround for Mobility BIOS bug that affected the driver's ability to
- restore the mode on server entry.
- - Fix SEGV that occurs with ATI adapter BIOS'es that do not support some
- flavour of VBE.
- - Allow the driver to tolerate the absence of an initialised adapter BIOS
- image and introduce XF86Config options for the information the driver
- would otherwise require from it.
- - Recognise more cases where a DFP panel might be in use.
- - Fix minor bug that occurred on xf86SetDepthBpp() failures.
- - Implement a compilation option that produces an MMIO-only version of
- the driver. Intended for non-Intel architectures. See the driver's
- Imakefile for details.
- 491. fixed handling of backwards compatibility in xvmode (Egbert Eich).
- 490. fixed changing mouse protocol with xf86misc extensions (Egbert Eich).
- 489. added code to sanitize uninitialized PCI config space
- base addresses (Egbert Eich).
- 488. Changed xf86xv.c to call StopVideo(exit=TRUE) even
- if StopVideo(exit=FALSE) has already been sent (Egbert Eich).
- 487. fixed core dump in C&T video driver when vt switching
- Changed C&T video driver to only register a block handler
- when StopVideo() is called with exit = TRUE (Egbert Eich).
- 486. Fixed Cirrus driver not segfault when termineated while
- switched away (Egbert Eich).
- 485. Neomagic driver: select sw cursor when screen stretching is
- enabled (Egbert Eich).
- 484. Neomagic driver: fixed problem with screen to screen copy
- on 2200 chipsets (Egbert Eich).
- 483. Neomagic driver: fixed 'white screen problem' by implementing
- a signal save delay routine (Egbert Eich).
- 482. r128 driver: Fixed colormap set problem when server is switched
- away (Egbert Eich).
- 481. r128 driver Added reinitialization of accel engine after vt switch.
- 480. fixed a fg/bg color problem in SiS driver (Egbert Eich).
- 479. attempt to address some problems with Cyber LCD chipsets in
- Trident driver (Egbert Eich).
- 478. tseng driver: Implemented correct MMIO handling (Egbert Eich).
- 477. tseng driver: made accel driver multi screen capable (Egbert Eich).
- 476. fixed vgaHW driver to use forground color for readability
- test of pallette registers. This prevents annoying flashing
- screen on server start (Egbert Eich).
- 475. added module/font/rgb path parameters to xf86cfg (Egbert Eich).
-
-XFree86 4.0.1a (2 August 2000)
- 474. i810 DRI updates (Jeff Hartmann).
- 473. i810 driver updates (H. J. Lu).
- 472. Save/restore the text mode colourmap for Solaris, to fix a blank
- screen problem on Solaris 8 after exiting the X server (#A.104,
- Richard Coley).
- 471. Patch for SuperProbe on Linux with devfs (#A.103, Adam J. Richter).
- 470. Enable BSD/gcc-2.95.2 workaround for BSD/OS 4.2 (#4072, Kurt Lidl).
- 469. Fix a problem with the header symlinks in Xserver/GL/mesa/include/GL
- (#4071, Matthieu Herrb).
- 468. Finish integrating the SiS DRI driver support (Can-Ru Yeou, SiS).
- 467. Change references to the Mesa source directory in Imakefiles to
- $(MESASRCDIR) (David Dawes).
- 467. Fix a typo an error in the example code in the XtAppAddInput man page
- (#4070, Carlos A. M. dos Santos).
- 466. Imstt driver updates, including moving from cfb to fb, fixing fbdev
- bugs and an accel blit bug, and a general cleanup (#4068, Ani Joshi).
- 465. Fix the installation path of the xditview bitmap (#4067,
- Carlos A. M. dos Santos).
- 464. Some xf86cfg fixes (#4065, 4068, Paulo Cesar Pereira de Andrade).
- 463. Fix some syntax errors in xkb config files and a size mismatch between
- two xkbcomp structures that were being masked one to another (#4063,
- Paulo Cesar Pereira de Andrade).
- 462. Fix a problem where the xkbcomp would read junk data from the server
- if SmartScheduleTimer() is called while writing to it (#4063,
- Paulo Cesar Pereira de Andrade).
- 461. Increase MAXVISUALSPERDEPTH further for Xnest so that it will work
- with GLX (#4062, Harald Koenig).
- 460. Xv overlay support for the Intel i810 chipset (#4061, Jonathan Bian,
- Matthew J Sottek, Intel).
- 459. Penmount touch panel input driver (#4060, Mayk Langer).
- 458. Fix the r128 SaveScreen function so that it doesn't touch the hardware
- when switched away (#4056, Benjamin Herrenschmidt).
- 457. Add support to xman for FreeBSD's /etc/manpath.config (#4055,
- Carlos A M dos Santos).
- 456. Update Xinstall.sh to handle the different behaviour of ldconfig
- 2.1.3 (used on SuSE 6.4) (#4058, Michael Rohleder).
- 455. Fix incorrect use of xf86{En,Dis}ableInterrupts() for ppc
- (Marc La France).
- 454. Add man pages for pcitweak and scanpci (David Dawes).
- 453. Fix problems with xkb "Internet" keyboard mapping support (David Dawes).
- 452. A few corrections to PIO and MMIO definitions affecting mips, arm32,
- powerpc architectures and QNX4 (Marc La France).
- 451. Minor int10 and VBE fixups (Marc La France).
- 450. For frequency options, don't clobber the old value before verifying the
- new one is valid (Marc La France).
- 449. Ensure xf86_ansic.h is always #include'd before compiler.h in code
- that can be compiled as a module (even for the static server). Generate
- an error if not (Marc La France).
- 448. Make linux/int10 module complain when SystemV IPC isn't configured
- into the kernel (Marc La France).
- 447. Add new offscreen frame bufffer manager functions for managing linear
- offscreen areas (Mark Vojkovich).
- 446. int10 fixes and remove checksum verification (Marc La France).
- 445. More message formatting changes for DDC (Marc La France).
- 444. Add missing xf86write symbol (Marc La France).
- 443. Fix open(, O_CREAT) emulation (Marc La France).
- 442. Fix Trident Cyber9320 > 8bpp modes (Alan Hourihane).
- 441. Allow memory mapping during probe phase (Marc La France).
- 440. Clean up os-support/dgux/dgux_video.c (Marc La France).
- 439. Fix int10 bug that prevented recognition of video BIOS'es that are part
- of the system BIOS (Marc La France).
- 438. MGA driver warning fix (Marc La France).
- 437. An update to change 425 (Marc La France).
- 436. More EDID formatting changes (Marc La France).
- 435. Fix bug that caused the relocation of PCI I/O bases assigned to multiples
- of 0x0100 (but not 0x0400) by the system BIOS (Marc La France).
- 434. Add ATI driver to Alpha, and experimentally, to ppc architectures. ppc
- support is still known to be incomplete (Marc La France).
- 433. For IA64, compile everything, except PEX, that is also compiled for IA32
- (Marc La France).
- 432. Fix Cyrix driver for -configure (Alan Hourihane).
- 431. Fix Glint PM3 memory detect when only 1MB of videoram (Alan Hourihane).
- 430. Fix DAC colour problem and blank out issue in glint driver
- (Alan Hourihane).
- 429. Add missing clock values to the trident driver (Alan Hourihane).
- 428. Fix Glint driver's SaveScreen function (#4057, Michel Danzer).
- 427. Convert MGA driver to use fb instead of cfb (Mark Vojkovich).
- 426. Rewrite MGA color expansion routines so that pci retries never occur
- (Mark Vojkovich).
- 425. Make ATI driver tolerate relocation of conflicting resources
- (Marc La France).
- 424. Make Mach64 FIFO handling available to GATOS (Marc La France).
- 423. Fix bug in Mach64 scissor handling (Marc La France).
- 422. Implement Mark Vojkovich's suggestions in the ATI driver
- (LSB ordering of monochrome data and host transfer burst modes)
- (Marc La France).
- 421. More fixes to ATI DSP register calculation (Marc La France).
- 420. ATI DGA support fixes for VGA Wonder capable adapters and the
- setting of the DGA_CONCURRENT_ACCESS flag (Marc La France).
- 419. Change imake to generate symbols for the GCC version used to
- compile it (Marc La France).
- 418. Fix xf1bpp/xf4bpp in trident driver and some planemask problems
- (Alan Hourihane).
-
-XFree86 4.0.1 (1 July 2000)
- 417. Update OpenBSD and NetBSD docs (#4053, Matthieu Herrb).
- 416. Fix segfault when destroying a GLX context (Kevin Martin).
- 415. Doc updates (Georgina Economou).
- 414. Fix some palette and fbdev problems, and add a missing break to the
- video memory type detection code for the r128 (#4043, Benjamin
- Herrenschmidt).
-
-XFree86 4.0Z (30 June 2000)
- 413. README updates (Georgina Economou).
- 412. Add some SiS DRI code, but currently disabled because the X server
- driver level support hasn't been integrated yet (Can-Ru Yeou, SiS).
- 411. Remove the PPC-specific assembly for load/stores from the r128 driver,
- and use the versions now provided in compiler.h, which are faster (#4051,
- Ani Joshi).
- 410. Fix the UTF-8 converters so that cut&paste works better in UTF-8 locales
- (#4049, Bruno Haible).
- 409. Complete the move of glx.h to xc/include/GL, and don't include
- Xmd.h in glx.h (#4048, Brian Paul).
- 408. Apm driver updates, including fixing 24/32 access, fixing an
- initialization bug, and some code cleanups (#4047, Loic Grenie).
- 407. Sparc/sbus updates: put sparcProm* in the correct header file, add
- xf86SbusSetOsHwCursorCmap sbus layer interface, and export symbols for
- this new interface and the sparcProm* interfaces in the loader (#4046,
- Jakub Jelinek).
- 406. Add cg3/cg14/tcx/bw2 drivers (sparc), and fix a few bugs in leo and
- cg6 drivers. Build these driver, plus the ati and glint drivers
- on Linux/sparc (#4046, Jakub Jelinek).
- 405. Fix Elite3D detection (#4045, David S. Miller).
- 404. Treat SBUS like ISA when assigning access control records, so now
- multi-head, Xinerama, etc works with SBUS drivers (#4045,
- David S. Miller).
- 403. SDK install updates (#4044, David Bateman).
- 402. Work around an odd problem with waitpid() in the code for auto-loading
- DRM kernel modules on Linux (#4042, Brian Paul).
- 401. Change the imake parameter for BSD/OS from BSD386Architecture to
- BSDOSArchitecture (#4041, Kurt Lidl).
- 400. Make the neomagic driver recognise the NM2380 chip, and treat it
- exactly like a NM2360 (#4041, Kurt Lidl).
- 399. Updates for compiling cleanly on BSD/OS 4.0.1, and to make the
- BSD/OS support less i386-centric (#4041, Kurt Lidl).
- 398. Disable SilkenMouse for the s3virge GX2 to avoid some lockup problems
- (#4039, Kevin Brosius).
- 397. Some mga DRI updates to improve stability (Jeff Hartmann).
- 396. Fix some DRI offscreen memory calculations in the Matrox driver
- (Mark Vojkovich).
- 395. IA64 workarounds - should compile and run right out of the box now
- (Mark Vojkovich).
- 394. LBX, X-TrueType and Xnest warning fixes (Marc La France).
- 393. Remove unused xf86MapDisplay() and xf86UnMapDisplay() os-support entry
- points (Marc La France).
-
-XFree86 4.0g (26 June 2000)
- 392. Fix a missing -I in sunffb/Imakefile (#4038, David S. Miller).
- 391. Some -misc-fixed-* BDF font updates, primarily expanding the 7x13
- set to include the same 8-bit variants as the 6x13 set, including
- a new oblique/italic version (#4037, Markus Kuhn).
- 390. Fix an endless loop in the UTF-8 converters (#4036, Bruno Haible).
- 389. Straighten out xfindproxy exit codes to match success/failer status;
- also change one instance where error message was printed to stdout
- (#4035, Huver).
- 388. With LBX enabled, the X server wasn't checking the proxy connection,
- and so fails the connection request without calling InvalidHost()
- (#4033, Huver).
- 387. xfwp doProcessWritables() closes connection, but then proceeds
- to reset client fd via FD_SET() (#4031, Huver).
- 386. Don't build a non-DRI libOSMesa (#4029, Takaaki Nomura).
- 385. Add generic DGA support to SiS driver (Alan Hourihane).
- 384. Add more support structure for Alpha/DRI (not enabled yet though)
- (Alan Hourihane).
- 383. Fix glXDestroyContext bug that caused Q3A to use old clip rect info
- when opening a new window (Kevin Martin).
- 382. Fix R128 3D driver clear problem which caused R128Pro cards to lock
- up, and fix dword count on ring-based vertex buffer code for PCI
- R128 cards (Gareth Hughes).
- 381. Possible fix for a problem introduced with item 332 that resulted
- in the first screen's config file data being used for all screens
- (Mark Vojkovich, David Dawes).
- 380. Add an imake parameter NothingOutsideProjectRoot that turns off
- installing links and config files, etc, outside of ProjectRoot
- (David Dawes).
- 379. Possible fix a problem with 'make install' on Linux when there is
- already a /usr/include/GL directory (David Dawes).
- 378. Fix a DGA-related crash when using multiple input devices with the
- DGA extension disabled (Matthieu Herrb).
-
-XFree86 4.0f (23 June 2000)
- 377. Suppress the use of a temporary directory to build man pages on
- OpenBSD, which fixes problems with some external programs (#4028,
- Matthieu Herrb).
- 376. Allow some linux/mips settings in linux.cf to be overriden (#4026,
- Guido Guenther).
- 375. Synchronize the pointer state before checking it in xf86CheckButton()
- (Paulo Cesar Pereira de Andrade).
- 374. s3virge driver fixes for noise and console corruptionn on the GX2 and
- MX (but they're commented out for the MX because it hasn't been tested
- yet) (#4027, Kevin Brosius).
- 373. Fixes for lib/GL Imakefiles (Marc La France).
- 372. Update DRI drivers sunffb,mga,i810,glint,r128,tdfx to check for
- DRIQueryVersion, overcomes an older libdri issue (Alan Hourihane).
- 371. Change tdfx driver to use fb instead of cfb (Alan Hourihane).
- 370. Make using libpthread optional for OpenBSD 2.7.
- 369. Fix a problem when calling XF86VidModeSwitchMode() when the switched
- screen is different from the one that has the pointer (#4024,
- Paulo Cesar Pereira de Andrade).
- 368. Bindist files for Linux/mips (#4023, Guido Guenther).
- 367. Allow XFree86 to compile on NetBSD-current and 1.5_ALPHA, which
- no longer use the pcvt console, but have a compatibility mode for it
- in wscons (#4021, Bernd Ernesti).
- 366. Add support for the iso8859-13 charset to Xlib (#4020, Bruno Haible).
- 365. Add ISO-8859-13 support to the UTF-8 converters, which is needed for
- Lithuanian UTF-8 locales (#4019, Bruno Haible).
- 364. Fix three bugs in the UTF-8 converters:
- - In an UTF-8 locale, keyboard input coming in as UTF-8 would not be
- accepted.
- - Incorrect handling of the "end of string" and "invalid byte sequence"
- situations.
- - A bug on platforms with sizeof(wchar_t) != sizeof(int).
- (#4018, Bruno Haible).
- 363. Enable building DRI support for FreeBSD 4.1 and higher.
- 362. Don't try to use kldload() on FreeBSD versions prior to 3.0 (#4016,
- Takaaki Nomura).
- 361. Some sunffb cleanups (#4015, David S. Miller).
- 360. Add DRI drawable index callback (#4015, David S. Miller).
- 359. Fix -configure option to print out fatal message and abort gracefully
- when pci data isn't entered into xf86PciInfo.h (Alan Hourihane).
- 358. Add generic DGA support to NeoMagic (not tested) (Alan Hourihane).
- 357. Add generic DGA support to i810 (not tested) (Alan Hourihane).
- 356. Fix GCC 2.96 complaints in big font extension and imstt driver
- (Steven King).
- 355. Fix remaining DRI III compile glitches (Marc La France).
- 354. Fix long standing bug with 3Dfx driver when DRI module isn't loaded.
- It complained about unresolved symbol called after 'Textures memory'
- output (Alan Hourihane).
-
-XFree86 4.0e (20 June 2000)
- 353. Fix a couple of acceleration problems in glint driver (Alan Hourihane).
- 352. Don't attempt to build the Sparc DRI drivers on ix86, and vice versa
- (David Dawes).
- 351. Fix a lib/GL build problem when the DRI isn't enabled (#4014,
- Nicholas J Brealey).
- 350. Fix location of dri module links in the xc/exports directory of the
- build tree.
- 349. Replace LoaderSymbol() with xf86LoaderCheckSymbol() in drivers.
- 348. Disable SmartScheduler on LynxOS 3.1 (#4013, Thomas Mueller).
- 347. Update Japanese PC98 docs (#4012, Isao Ohishi, Takaaki Nomura).
- 346. Add some S3/Diamond PCI IDs (#4011, Werner Leeb).
- 345. Update sbus support for recent bus infrastructure changes
- (David S. Miller)
- 344. Check for NULL pointers from item 332 (Alan Hourihane).
- 343. Xf86cfg updates (#4010, Paulo Cesar Pereira de Andrade).
- 342. Fix threads support in OpenBSD 2.7 and above (#4006, 4009,
- Carlos A M dos Santos).
- 341. UCS misc BDF fonts updates, including new oblique/italic versions
- (6x13O, 8x13O), Korean font covering all Hangul symbols (18x18ko)
- and many additional autogenerated ISO 8859 fonts to cover with
- 6x13 and 8x13 all the locale encodings suggested by the Li18nux
- specification (#4007, Markus Kuhn).
- 340. Add Linux/Sparc support for the DRI, and a DRI driver for Sun
- Creator3D hardware (#4004).
- 339. Fix DRI BusIDString length usage (#4003, David S. Miller).
- 338. Xterm patch #139 (#4002, Thomas Dickey).
- 337. Make the use of GlxDefines for libGL independent of BuildXF86DRI (#4001,
- David S. Miller).
- 336. Fix i810 build warnings (#4000, Jarno Paananen).
- 335. Fix an i810 build problem (Keith Whitwell, #4000, Jarno Paananen).
- 334. Fix a multihead problem with the mga driver (Mark Vojkovich).
- 333. Add support to the i810 driver for the i815 (Keith Whitwell).
- 332. Add infrastructure support for cards with multiple CRTCs (screens)
- per accelerator (PCI entity) (Jeff Hartmann and David Dawes).
- 331. Fix some Mesa problems (Brian Paul).
- 330. Rework patch for mapping drmAddMap on Alpha platforms
- (Bruce Stockwell/Compaq, Alan Hourihane).
- 329. Don't build Debuggable Library on Linux for the release (Alan Hourihane).
- 328. Don't build lib/GL/mesa/src/X86 on Alpha systems (Alan Hourihane).
- 327. xdm warning fix (Marc La France).
- 326. Make x11perf die gracefully when display cannot be opened
- (Marc La France).
- 325. Fix rendition driver compile glitch (Marc La France).
- 324. #ifdef out glitch in glint driver (Marc La France).
- 323. Preliminary DGA support in ATI driver (Marc La France).
- 322. Minor update to DESIGN and Status documents (Marc La France).
- 321. Fix DGA's reporting of vertical refresh rates to clients
- (Marc La France).
- 320. Make driver-provided Sync(), SetViewport() and GetViewport() DGA
- callbacks optional (Marc La France).
- 319. Fix XKB compile glitch (Marc La France).
- 318. Make imstt driver compile (Marc La France).
-
-XFree86 4.0d (16 June 2000)
- 317. Fix a typo in the xfree86 xkb keycodes file (#3999, Matthieu Herrb).
- 316. Fix some build problems when the DRI is not enabled (#3998,
- Matthieu Herrb).
- 315. Add missing Linux/mips config changes (#3997, Guido Guenther).
- 314. Fix for libICE DOS (Keith Packard).
- 313. FontInfo.c (lib/X11) needs to be built with the bigfont defines (#3996,
- Paulo Cesar Pereira de Andrade).
- 312. Disable the smart scheduler for SVR4.0 (based on #3916, Takaaki Nomura).
- 311. Add a check for PS/2 mice on Linux for the X server's -configure
- option (#3991, Paulo Cesar Pereira de Andrade).
- 310. Fix a problem mouse driver button flush was causing with Xaw menus
- (#3991, Paulo Cesar Pereira de Andrade, David Dawes).
- 309. Modify scanpci to print out card/subsys information, and add a few
- more entries to the pci data (David Dawes).
- 308. Fix r128_cursor.c build problem for big-endian machines (#3989,
- Thomas Mueller, #3994, Ani Joshi).
- 307. Update LynxOS docs (#3989, Thomas Mueller).
- 306. Add a few PPC compiler internal symbols to the loader's export list
- (#3989, Thomas Mueller).
- 305. Add crypt support to xdm for LynxOS (#3989, Thomas Mueller).
- 304. Add preliminary build support for LynxOS 3.1.0 (#3989, Thomas Mueller).
- 303. Add keysyms to complete the set for the Compaq SK2850 keyboard and
- the Microsoft Natural Keyboard Pro (David Dawes).
- 302. Add new keysyms for PDAs (#3985, 3987, 3988, Jim Gettys).
- 301. Xterm patch #138 (#3986, Thomas Dickey).
- 300. DRI megapatch III. This includes DRI enhancements, 3dfx fixes and
- updates, updates Mesa to the latest version, adds Intel i810, Matrox
- G200/G400, ATI Rage 128 and 3dfx Voodoo5 3D support, adds ATI Rage
- Mobility 2D support (disabled by default). (Precision Insight and
- VA Linux Systems).
- 299. Add a function to the X server that performs the same checks on
- command line arguments and environment variables as the Xwrapper
- from 3.3.x. This function is called very early from main()
- (David Dawes).
- 298. Fix for some Xlib problems that can show up when connecting to
- a rogue server (Keith Packard, with analysis by Chris Evans).
- 297. Increase MAXVISUALSPERDEPTH to 64 for Xnest so that it can handle
- GLX's visuals.
- 296. Add a Macedonian xkb symbols file (#A.96, Zlatko Trajceski).
- 295. Fix a buffer overflow with the -xkbmap X server flag (#A.91,
- Trevor Johnson).
- 294. Fix a rectangle fill problem that shows up with an AGP SiS 6326
- (A.81, A.83, Milivoj Savin).
- 293. Fix a problem in xcalc when the current locale uses a character
- other than "." for the decimal point (#A.63, Stanislav Brabec).
- 292. Allow some more parameters in linux.cf and lnxLib.rules to be
- redefined (#A.60, Stanislav Brabec).
- 291. Fix a typo in lib/Xss/Imakefile (#A.59, Stanislav Brabec).
- 290. Fix an xfs crash that shows up when many clients connect (#A.48,
- Remy Card).
- 289. Fix some man page build problems (#A.43, Ian Collier).
- 288. Fix xedit core dump (in Xaw) on Solaris, related to the bsearch()
- usage (#A.42, Ian Collier).
- 287. Add xkb mappings for the keycodes generated by the SysRq and Break
- keys, which are different from the keycodes generated when used as
- PrtScn and Pause (#A.29, Eric W. Biederman).
- 286. Fix problems when building on Solaris 2.6/sparc and Irix 6.5.5
- (#A.21, A.28, Sullivan N. Beck).
- 285. Fix a core dump in fstobdf when using 16 bit fonts (#A.25,
- Morten Storgaard Nielsen).
- 284. Clean up some of the messages printed by the neomagic driver
- (David Dawes).
- 283. Add support for the 2360 (256ZX) to the neomagic driver, and enable
- acceleration at depth 24 for this chip (#A.23, Gregory M Pomerantz).
- 282. Adjust the bigfont extension to not use SHM segments for fonts with
- a small glyph metric size, and fix a build problem on systems without
- shared memory (#3984, Bruno Haible).
- 281. Status doc updates (#A.9, Chris Smith, A.80, Ferenc Acs).
- 280. Fix memleak warning when doing realloc(NULL, size) (#A.7,
- Charles G Waldman).
- 279. xf86cfg fixes (#3983, Paulo Cesar Pereira de Andrade).
- 278. Add SilkenMouse support to the s3virge driver (#3982, Kevin Brosius).
- 277. Update Xv support in the glint driver and add the XvPutImage function
- for the Permedia 2 (#3926, Michael Schimek).
-
-XFree86 4.0c (13 June 2000)
- 276. Xterm patch #137 (#3976, Thomas Dickey).
- 275. Doc update for the chips driver (#3981, David Bateman).
- 274. Fix some problems building with the SDK (#3981, David Bateman).
- 273. Fix comments for the address matching algorithm in
- XauGetAuthByAddr() and XauGetBestAuthByAddr() (Keith Packard, based on
- #3939, Peter Runestig).
- 272. Handle setting SharedLibXdmGreet in the OS imake config files rather
- than having a complicated expression in the xdm Imakefile (#3980,
- Matthieu Herrb).
- 271. xdm updates from the OpenBSD team, including:
- - support for Kerberos IV authentication [enabled only in OpenBSD.cf,
- but could be enabled for other systems by setting HasdKrbIV]
- - use the arc4random(4) random number generator on OpenBSD
- - add a new resource "allowRootLogin", which can be used to disable
- root logins through xdm
- - log failed logins to syslogd [OpenBSD only, but could be enabled on
- other systems]
- - verify that the shell is valid using /etc/shells [OpenBSD only]
- - verify that the account hasn't expired [OpenBSD only, but could be
- enabled on other system that use the same passwd aging structure]
- (#3948, 3980, OpenBSD team, Matthieu Herrb).
- 270. Big/little endian MMIO_XX macros for ppc, and also PIO macros check
- that IOBase is mmapped before doing any accesses (#3979,
- Kostas Gewrgiou).
- 269. Preliminary driver for Integrated Micro Solutions TwinTurbo128
- (imstt) (#3978, Ani Joshi).
- 268. Fix broken czsk keymaps, and let the user directly select either
- Czech or Slovak keyboard in xf86config (#3975, Kamil Toman).
- 267. Implement DGA2 support with depth switching for ATI Rage 128 cards
- (#3974, Ove Kaaven).
- 266. Recent versions of FreeBSD have the xpg4 library folded into libc.
- 265. xf86cfg updates (#3973, Paulo Cesar Pereira de Andrade).
- 264. Xaw bug fixes (#3973, Paulo Cesar Pereira de Andrade).
- 263. Fix M-d and M-h key bindings in the Xaw Text widget (#A.87,
- Jonathan Kamens).
- 262. Fix some Xaw memory errors (#A.79, Jonathan Kamens).
- 261. Xman fixes/updates, including:
- - Fix a core dump in fclose()
- - Append the default search path when MANPATH ends in a ':'
- - Understand man pages that have a single line with a .so directive
- (#3969, 3973, Paulo Cesar Pereira de Andrade).
- 260. Resync nls Compose file with 3.3.6 (#3964, 3973,
- Paulo Cesar Pereira de Andrade).
- 259. Fix moving the pointer between screens when using MouseKeys, and fix
- some bugs in the xkbfile code (#3963, 3973,
- Paulo Cesar Pereira de Andrade).
- 258. Fix XC-SECURITY security bug (#3954, 3973,
- Paulo Cesar Pereira de Andrade).
- 257. Bigfont bug fix, which stops cvsup crashing (#3954, 3973,
- Paulo Cesar Pereira de Andrade).
- 256. Replace some bitswapping assembler code in XAA with faster C code
- (Mark Vojkovich).
- 255. Rendition driver updates, including:
- - add DirectColor support
- - add SilkenMouse support
- - documentation updates
- - some code cleanups
- (#3972, Dejan Ilic).
- 254. For v4l: don't advertise the XV_VOLUME attr if we're only going to
- return BadMatch on use (#3968, David Woodhouse).
- 253. Modify the I2C delay routine to use xf86getsecs (gettimeofday) instead
- of an uncalibrated loop (#3967, Andrew Aitchison).
- 252. Add some PCI ids to xf86PciInfo.h, and include some instructions
- about how to add new PCI data (#3966, Kevin Brosius).
- 251. Update documentation for Japanese PC98 (#3965, Satoshi Kimura,
- Akio Morita, Takaaki Nomura).
- 250. XIM patch (imInt.c) (#3962, Fuminori Hirayama).
- 249. Xterm patch #136 (#3960, Thomas Dickey).
- 248. Fix Imake.rules for building on Solaris 7 with gcc-2.95.2 (#3958,
- Nicholas Brealey).
- 247. Add basic support for the Linux/mips and mipsel architecture (#3957,
- 3970, Guido Guenther).
- 246. Disable reading the BIOS in the int10 code for Japanese PC98 (#3959,
- Isao Ohishi).
- 245. Add a "NoPciBurst" option to the Trident drive for Japanese PC98
- cards with the TGUi968x chip (#3955, Akio Morita).
- 244. Xterm patch #135 (#3951, Thomas Dickey).
- 243. Fbdev driver fix (#3953, Ani Joshi).
- 242. Xterm patch #134 (#3949, Thomas Dickey).
- 241. Import the mktemp() usage fixes for imake from the 3.3.x branch
- (#3947, Matthieu Herrb).
- 240. Rman updates, including:
- - minor reformating (make { and } match)
- - fix logic for parsing comments in man pages, which allows the
- copyrights to appear in the output html
- - a few changes based on weblint and tidy
- (#3946, Thomas Dickey).
- 239. Fix incorrect type for vgaIOBase in the neomagic driver (#3944,
- Ani Joshi).
- 238. Fix an Xlib build problem when the big-font extension is disabled
- (#3945, Mutsumi Ishikawa).
- 237. Xv v4l attribute handling bug fix (#3928, Gerd Knorr).
- 236. Fix some problems with the locale-dependent input processing in Xlib
- by:
- - removing unneeded to/from CTEXT conversion for characters coming
- from keyboard input
- - move "locale_code" and "keyboard charset" searching to the
- initialization step (XIM creation)
- - Fix some inconsistencies between memory allocation and freeing
- in XIM objects (imLcIm.c imThaiIm.c)
- (#3927, Ivan Pascal).
- 235. Update support for Appian J2000 board with dual PM3 chips, and
- add partial acceleration (#3977, Sven Luther).
- 234. Only claim other devices on the same card when gamma chip is used
- in the glint driver (Alan Hourihane).
- 233. Separate offscreen memory manager API from implementation to facilitate
- driver replacement of the default manager (Mark Vojkovich).
- 232. Add Option "TexturedVideo" to have the Matrox driver optionally use
- YUV textures instead of the video overlay for XvImage support
- (Mark Vojkovich).
- 232. Add Xv functions for allocating/freeing XvVideoAdaptorRecs to shield
- drivers from structure size changes (Mark Vojkovich).
- 231. Have XDGAQueryModes return no modes as being available instead of an
- error when DGA is not supported on the particular screen (Mark Vojkovich).
- 230. Fix xdm when PAM is not available (Marc La France).
- 229. Fix int10 bug on non-PC platforms (Marc La France).
- 228. Finish prototyping of DPS libraries. Fix argument promotions in
- pswrap. Fix yytext portability problem. Fix non-standard format
- in pswrap (#3941, #3942, Nomura Takaaki, Thomas Dickey).
- 227. Fixed FP chipset handling in Trident driver. LCD-CRT switching
- should work now (Egbert Eich).
- 226. Modified device detection on PCI bus to handle Host-to-PCI bridges
- better (Egbert Eich).
- 225. Fix i810 driver so it advertises 32bpp pixmaps in depth 24 like the
- rest of the drivers do (Mark Vojkovich).
- 224. Added a call ioperm() to to allow vm86 to execute in/out calls
- directly to avoid problems with certain notebook bioses (Egbert Eich).
- 223. Fixed mouse driver to flush pending button press events on
- protocol change (Egbert Eich).
- 222. Fixed DDC support and sync flags handling in trident driver
- (Egbert Eich).
- 221. Added PAM support to xdm, ANSIfied prototypes (Werner Fink).
- 220. Added ServerFlag to force the use of OS PCI config space
- support (Egbert Eich).
- 219. Fix Xv DDX stop overlaid stills/images when XvStopVideo() is called
- (Mark Vojkovich).
- 218. Have the Xv DDX send clients exposure events when windows containing
- overlaid data, which isn't actually in the framebuffer, are moved
- (Mark Vojkovich).
- 217. Fix ordering of calling DDC probe in VBE to respect NoDDC options
- (Alan Hourihane).
- 216. Fix VBE initialization in trident driver for DDC (Alan Hourihane).
- 215. Fix a typo in the glint driver (#3943, Michael Schimek).
- 214. Fix multithread bug in Xlib big font support (Mark Vojkovich).
- 213. Fix a window class initialization problem in Xinerama (Mark Vojkovich).
- 212. Fix some multithreading related problems in the Xv client library
- (Mark Vojkovich).
-
-XFree86 4.0b (23 May 2000)
- 211. Add support to the sunffb driver for multiple visuals on the same screen,
- overlays, double buffering and some other niceties (#3938,
- David S. Miller, Jakub Jelinek).
- 210. Make the modifier setting on Sun keyboards match what XFree86 expects
- (#3937, Jakub Jelinek).
- 209. Add unaccelerated support for the Sun CG6 (#3935, Jakub Jelinek).
- 208. Make the -configure option work with SBUS/UPA drivers, fix some
- bugs in the sbus layer, add support for ioctl based colormap setting,
- and fix leds on Sun keyboards (#3934, Jakub Jelinek).
- 207. Fix a parallel build problem in lib/dps (#3932, H. J. Lu).
- 206. Fix some build problems that show up with LynxOS x86 and PowerPC (#3929,
- Thomas Mueller).
- 205. Fix documentation files for the mutouch and elographics drivers,
- and build these drivers by default (#3935, Patrick Lecoanet).
- 204. Make the dga2 library use the device name provide by the driver rather
- than always using the default (3924, David S. Miller).
- 203. Fix a problem with the internal xalloc that shows up on Sparc (#3923,
- David S. Miller).
- 202. Fix a GLX visual problem that causes a crash at server shutdown
- (#3922, David S. Miller).
- 201. 8+32 framebuffer for hardware that uses window IDs (David S. Miller).
- 200. Fix a memory allocation in lbxproxy that can cause it to crash at
- startup (#3921, Peter Runestig, #A.46, Rob Clark).
- 199. Fix a problem with imake's handling of DefaultGccIncludeDir (#3920,
- Peter Runestig, #A.64, Stanislav Brabec).
- 198. lib/X11/imInt.c fix from the OpenMotif release notes (#3919).
- 197. Prototype and fix almost all compiler warnings fot he dps library
- and the related pswrap program (#3912, Thomas Dickey).
- 196. Fix for x-tt font cache corruption (#3911, H. J. Lu).
- 195. Ansi prototypes for the lbxusilt library and Xserver/lbx directory
- (#3908, Matthieu Herrb).
- 194. Fix some bugs in the cirrus lg driver (#3900, Itai Nahshon).
- 193. Accelerated driver for Sun Leo/ZX cards (#3899, 3936, Jakub Jelinek).
- 192. Fully accelerated driver for Sun FFB and AFB chips (#3898,
- Jakub Jelinek).
- 191. Generic SBUS and UPA support for XFree86 (#3897, Jakub Jelinek).
- 190. Fix building xf86cfg on systems where libxpm isn't linked in
- implicitly (#3903, Matthieu Herrb).
- 189. Update the fbdevhw stubs for an interface change (#3902, Matthieu Herrb,
- #3910, Bernd Ernesti).
- 188. Simplify the platform defines in servermd.h to make them more hardware
- dependent than OS dependent (#3913, Kurt Lidl).
- 187. Fix a bug in the search/replace dialog in the Xaw text widget (#3896,
- Paulo Cesar Pereira de Andrade).
- 186. Xterm patch #133 (#3894, Thomas Dickey).
- 185. Fixes for the Xaw TipWidget (#3893, Paulo Cesar Pereira de Andrade).
- 184. Change CTEXT from/to converters to allow processing of "C1" codes
- (0x80-0x9f) as ordinary characters for "non-standard" encodings
- (such as UTF-8) (#3891, Ivan Pascal).
- 183. Add "software" per-key auto-repeat disabling (#3889, Ivan Pascal).
- 182. Refix fog.c build problem on Alpha (#3888, Dave Gilbert).
- 181. Add some new things for the VidMode interface in xf86cfg (#3877,
- Paulo Cesar Pereira de Andrade).
- 180. Rework most of the look and feel of xf86cfg, and fix some bugs (#3877,
- 3886, 3892, Paulo Cesar Pereira de Andrade).
- 179. Add a ProjectRoot to Xaw rather than hard-coding it, so that the
- pixmap code can find pixmaps and bitmaps on non-standard installations
- (#3877, Paulo Cesar Pereira de Andrade).
- 178. Fix a bug in the DRI section parsing (David Dawes).
- 177. Add support for building shared libraries on BSD/OS (#3876, Kurt Lidl).
- 176. Add imake support for automatically determining the version for BSD/OS,
- and update bsdi.cf for the features relevant to the different versions
- (#3876, 3940, Kurt Lidl).
- 175. Xterm patch #132 (#3874, Thomas Dickey).
- 174. Fix rman-related build problems when building external applications
- (#3869, Matthieu Herrb, #3890, H. J. Lu).
- 173. Fix a typo in OpenBSD.cf (#3867, Matthieu Herrb).
- 172. Fix some build warnings (#3864, Ani Joshi).
- 171. Fix some BSDI typos in hw/sun (#3862, Kurt Lidl).
- 170. Fix r128 palette save/restore when VT switching (#3861, Ani Joshi).
- 169. Disable the X server's internal malloc by default (#3860, Keith Packard).
- 168. Make xdpyinfo and xf86dga fail gracefully when DGA is not enabled
- in the driver, but the extension is enabled (#3870, Andrew Aitchison).
- 167. Fix too many xfree calls in lbxproxy (#3907, Matthieu Herrb).
- 166. Fix uninitialized fd_set mask in lbxproxy (#3906, Matthieu Herrb).
- 165. Fix typo when printing HSync frequency when not a range
- (#3895, Andrew Aitchison).
- 164. Fix a window unmapping bug in the mioverlay code (Mark Vojkovich).
- 163. Attempt to improve memory detection reliability in the Matrox driver
- (Mark Vojkovich).
- 162. Fix possible SEGV in generic int10 module (Marc La France).
- 161. Fix *BSD aperture driver to allow for int10 (Bernd Ernesti,
- Marc La France).
- 160. Fix vesafb restore problem in ATI driver (Marc La France).
- 159. Fix a few more compilation glitches (Marc La France).
- 158. Fix DRM for gamma for single and dual MX chips (Alan Hourihane).
- 157. Fix Mesa for single and dual MX chips (Alan Hourihane).
- 156. Fix Mesa for multiple screen widths (Alan Hourihane).
- 155. Add DGA support to the glint driver.
- - Fix initialization of DRI when using single or dual MX's.
- - Fix register resources.
- - Turn on more acceleration for DualMX boards.
- - Fix DualMX boards displaywidth problems at >640 widths.
- - Fix depth15/16 for PM2v and PM3 chipsets (Alan Hourihane).
- 154. Use MMIO_xx macros in glint driver (#3904, Michel Danzer).
- 153. Fix lib/GL/mesa/src/X86/Imakefile for m4 (Alan Hourihane).
- 152. Fix m4 rules in Imake.tmpl (Alan Hourihane).
- 151. ATI documentation update (Marc La France).
- 150. Disable debugging messages from XF86-Misc extension (Marc La France).
- 149. Ensure XAA always respects user options that disable subsets of its
- primitives (Marc La France).
- 148. Bug fix in XAA's CPU-to-screen colour expansion (Marc La France).
- 147. Finish off XAA's CPU-to-screen colour expansion for 24bpp
- (Marc La France).
- 146. When matching adapters to XF86Config sections, the ATI driver will now
- look at the primary adapter before any other non-primary PCI adapters
- (Marc La France).
- 145. Ensure Mach64 acceleration is disabled when using the VGA CRTC
- (Marc La France).
- 144. Set a Mach64's scaler/overlay clock divider in preparation for a GATOS
- merge (Marc La France).
- 143. Make VBE use its own option instead of DDC's (a consequence of
- re-entrancy) (Marc La France).
- 142. Make option processing re-entrant in DDC, int10, VBE and XAA modules, and
- in the common layer (Marc La France).
- 141. Add Permedia3 support to the glint driver (Sven Luther).
- 140. Fix XvPutImage in the client libs so that it can use the BIG-REQUESTS
- extension (Mark Vojkovich).
- 139. Fixed xf4bpp for devPrivates in PixmapRec. (Egbert Eich).
- 138. Fixed laguna driver to map FB after the video RAM size is known
- (Egbert Eich).
- 137. Fixed xdm to give up to respawn Xservers if the server crashes
- more than once within 60 seconds (Egbert Eich).
- 136. Added VGA default clock option to generic driver (Egbert Eich).
- 135. Fixed CyberShadow option in Trident driver (Egbert Eich).
- 134. Fix bug where the cursor is not put back after a failed DGA mode
- initialization attempt (Mark Vojkovich).
- 133. Add a missing symbol "AllocateColormapPrivateIndex" (Mark Vojkovich).
- 132. Remove Intel 440BX-specific resources from os-support layer
- (Marc La France).
- 131. Change ATI driver to mark VGA resources as unused in operating state when
- appropriate (Marc La France).
- 130. Fix bug in the generation of default screen layout (Marc La France).
- 129. Include all resource attributes when printing them (Marc La France).
- 128. Fix compiled-in input driver list (Marc La France).
- 127. Allow driver access to resource manipulation functions (Marc La France).
- 126. Fix a DGA 2.0 crash that happened when bogus mode numbers were sent
- by the client (Lionel Ulmer).
- 125. Make a recent shm pixmap fix Xinerama aware (Mark Vojkovich).
- 124. Fix mode setting bug in ATI driver (Marc La France).
- 123. Add int10, DDC & VBE support to ATI driver
- (Andrew C Aitchison, Marc La France).
- 122. Allow driver to supply DDC module to VBE (Marc La France).
- 121. Attempt to fix cyrix driver (untested). (Egbert Eich)
- 120. Added support for 'inactive' devices. (Egbert Eich)
- 119. Fixed xf86misc extensions. (Egbert Eich)
- 118. Fixed design of xf86SetAccessFuncs(). Now all old access funcs
- are returned if the driver asks for them not only the one
- that is used in OPERATING state. (Egbert Eich)
- 117. Added a function LoadDrvSubModule() to allow drivers to load
- sub modules before a screen is allocated. (Egbert Eich)
- 116. Fixed lndir to handle trailing '/' on path correctly. (Egbert Eich)
- 115. Undefined i486/i586/i686 in Imake.cf. cpp might predefine
- them which might cause undesirable results. (Egbert Eich)
- 114. Updated x86emu. (Egbert Eich)
- 113. Fixed problems with xf86RegisterResources() if preregistered
- resources are not marked ResBios. Identical ranges are not considered
- to conflict with each other. (Egbert Eich)
- 112. Improved DDC information printout. (Egbert Eich)
- 111. Added NODDC options to vbe. (Egbert Eich)
- 110. Added fixes for Lynx OS. (Egbert Eich)
- Changed int10 code to always map/allocate entire 1Meg. (Egbert Eich)
- 109. Let int10 code try harder to locate a video bios to work
- around some system bios bugs. (Holger Veit, Egbert Eich)
- 108. Modified fbdevProbe() to return the name string representing
- the chipset. (Egbert Eich)
- 107. Minor fixes to i810 driver (Egbert Eich)
- 106. Fixed format of float numbers in C&T driver. (Jens Taprogge)
- 105. Added support for the NeoMagic 2360. (Gregory Pomerantz)
- 104. Add an xf86UnloadSubModule() entry (temporarily disabled)
- (Marc La France).
- 103. Fix missing symbol "ServerGrabCallback" (Mark Vojkovich).
- 102. Fix XAA problems with CPU-to-screen colour expansion (Marc La France).
- 101. For panel support in the ATI driver, add an entry to the monitor
- section's mode list for the panel's native resolution (Marc La France).
- 100. Fix depth24 acceleration problems with 300SX (Alan Hourihane).
- 99. Update glint driver for fb24_32 and ensure memset used in fb is
- xf86memset when using loader (Alan Hourihane).
- 98. By default, limit ATI 3DRage LTPro's to 200 MHz, instead of 230 MHz
- (Marc La France).
- 97. Remove some leftover INTERNAL_VS_EXTERNAL_PADDING stuff from the
- extensions (Mark Vojkovich).
- 96. Fix a NonTE text bug in XAA where zero-height primitives could be passed
- to the driver (Mark Vojkovich).
- 95. Add CPU-to-screen colour expansion acceleration for Mach64's
- (Kevin Martin, Marc La France).
-
-XFree86 4.0a (6 April 2000)
- 94. Major OS/2 resync (#3859, Holger Veit).
- 93. Fix some 'XFree86 -configure' problems when multiple cards (#3850,
- Paulo Cesar Pereira de Andrade).
- 92. New graphical config tool (xf86cfg) (#3850,
- Paulo Cesar Pereira de Andrade).
- 91. Fix a typo in Xinstall.sh that prevents moving config files to
- /etc/X11 from being optional (#3858, Richard Gooch).
- 90. Add lt_LT.ISO_8859-4 to locale.alias, and update the lt symbols for
- xkb (#3857, Ricardas Cepas).
- 89. Fix the return values of some "xkb action" filters (SetControls and
- RedirectKey) (#3854, Ivan Pascal).
- 88. Fix problems with using "radio group" number one in XKB keyboard
- descriptions (#3853, Ivan Pascal).
- 87. Fix MIT-SHM crash caused by incorrect reference tracking (#3851,
- Keith Packard).
- 86. Updates to allow a build on sparc-linux to succeed (#3849,
- Jakub Jelinek).
- 85. Fix GetImage in XY format in fb at 32bpp (#3848, Keith Packard).
- 84. Add support for 24/32 fb/pixmap format conversion to fb (#3847,
- Keith Packard).
- 83. Update the r128 driver to use fb and fb24_32, and disable
- transparency at 24bpp (#3846, Keith Packard).
- 82. Let the server continue when a font path element in the default path
- is found to be invalid (#3843, Keith Packard).
- 81. Fix parsing of the Group keyword in the DRI section of the config file
- (#3842, Stefan Dirsch, David Dawes).
- 80. Add support for YUV422, YV12, RGB15 and RGB16 XvImages to the C&T driver
- (#3840, David Bateman).
- 79. Change the config file Xkb* option priority. Now, if XkbKeymap is
- set it will be tried first. If a component is present it will override
- components computed from ruls/module/layout/etc (#3839, Ivan Pascal).
- 78. Fix an infinite loop problem that can show up in makedepend (#3838, A.10,
- Jeremy Buhler).
- 77. Fix Overlay support in the TI ramdac module (Alan Hourihane).
- 76. Fix mixup between TVP3026/3030 ramdacs in the ramdac module
- (Alan Hourihane).
- 75. Increase usage of ReadPixmap within XAA (Mark Vojkovich).
- 74. Allow the v4l driver to use offscreen YUV surfaces exported by the
- chipset drivers (Gerd Knorr).
- 73. Change xf86LoadModules() so that it doesn't quit at the first module
- that fails to load (David Dawes).
- 72. SIGIO doesn't work on Linux pipes, so diasble it for input devices
- which are pipes (#3835, Keith Packard).
- 71. Bring the SDK support up to date (#3834, David Bateman).
- 70. Fix an Xlib problem that causes an application crash when inputting
- cyrillic symbols with the koi8-r locale (and other locales with
- long esc-sequences) (#3833, Ivan Pascal, #A.15, Serguei Poliakov, #A.34,
- Stanislav Meduna, #A.40, Rimantas Plaipa, #A.74, Sergei Laskavy).
- 69. Fixes for S3 Trio3D/2X:
- - flickering for some cards (bad FIFO setting from bios).
- - workaround for 8MB ram (ramdac can access only 4MB).
- - adjust clock limits which have been too low.
- (#3832, Harald Koenig).
- 68. Fix v4l problem with a function being called after the module is
- unloaded (#3831, gbritton@light-brigade.mit.edu).
- 67. Fixes for the PPC icache flushing code (#3830, Kostas Gewrgiou).
- 66. Fix for /tmp race installing man pages on OpenBSD (#3829,
- Matthieu Herrb).
- 65. Fix problems building the Xsun and XsunMono servers on
- NetBSD-current/sparc (#3828, Matthieu Herrb).
- 64. Add a comment to site.def about how to move the /etc/X11 contents to
- a directory under ProjectRoot (#3827, R Horn).
- 63. Fix an Xaw bug that shows up when usingn c-mode with xedit on Linux
- (#3824, Paulo Cesar Pereira de Andrade).
- 62. Enable devfs support for the v4l driver (based on #3823,
- Christopher Sekiya).
- 61. Update for README.FreeBSD (#3822, Kazutaka Yokota).
- 60. Bump the video driver ABI minor version because of interface changes
- (now 0.2).
- 59. Disable SilkenMouse when IO/MEM resource sharing means that it cannot
- be reliably used (#382o, Keith Packard and Egbert Eich).
- 58. Fix DGA 1.0 compatibility for mouse events and SetViewport behaviour
- (#3820, Keith Packard).
- 57. Fix the Linux APM code so that the X server doesn't hang the machine
- on suspend (#3820, Keith Packard and Egbert Eich).
- 56. Fix problems that break Overlay support in the glint driver (#3818,
- Michel Dänzer).
- 55. Possible fix for AvailableOptions function and submodule loading
- for the cirrus driver (David Dawes).
- 54. Add an entry for the GeForce to the Cards file (#A.6, Oliver Lau).
- 53. Fix pswrap build problem when cross compiling (#3815, Jim Gettys).
- 52. Fix a typo in itsy.cf (#3814, Jim Gettys).
- 51. SiS driver fixes:
- - 630/540/300 display abnormal for all modes.
- - 630/540/300 cannot enter true color modes.
- - 530/620 1600x1200x8bpp display abnormal.
- (#3807, Can-Ru Yeou, SiS).
- 50. Fix a -configure crash in the nv driver (#3805, Jarno Paananen).
- 49. Rendition driver updates:
- - rename most v_ to verite_ to avoid potential namespace clashes.
- - add support for VBE DDC and "XFree86 -configure".
- - fix PROBE_DETECT issues.
- - Replace a number of ErrorF's with xf86DrvMsg to reduce noise
- when not requested. A number of debugging messages #ifdef'ed also.
- - Option "MTRR" reenabled. Was disabled when acceleration was debugged.
- (#3785, 3808, Dejan Ilic).
- 48. S3virge driver updates:
- - Revert WAITIDLE to cleanly abort a segfaulting imagewrite.
- - Start of GX2 fixes.
- - Add DDC monitor X -configure code.
- - Update copyrights
- (#3783, Kevin Brosius).
- 47. Update XSetWMProperties() to set the WM_LOCALE_NAME property (#3780,
- Peter Novodvorsky).
- 46. Xterm patch #131 (#3777, Thomas Dickey).
- 45. Add some xtest tests to cover some accelerated cases implemented by
- XAA, and fix some Linux/glibc build problems (#3767, Rik Faith).
- 44. Xineramification of XvImage support (Mark Vojkovich).
- 43. By default, cache writes to selected Mach64 MMIO registers and allow this
- cache to be disabled (Marc La France).
- 42. Add detection of Rage128 Mobility to ATI driver (Marc La France).
- 41. Fix a Xinerama GetImage bug that showed up in 24+32 (Mark Vojkovich).
- 40. Fix XAA transparent blits. They are broken in 4.0 (Mark Vojkovich).
- 39. Fix typo in mioverlay that broke resize gravity (Mark Vojkovich).
- 38. Fix PCI/AGP bridge I/O and memory window detection (Marc La France).
- 37. Add Mach64 solid zero-width line acceleration, except for 24bpp
- (Kevin Martin, Marc La France).
- 36. Add Mach64 mono 8x8 pattern fill acceleration (Kevin Martin,
- Marc La France).
- 35. Fix DDC bug (John McCorquodale).
- 34. Fix minClock and maxClock determination in ATI driver (Marc La France).
- 33. A first step at allowing -configure to deal with more than one device per
- driver (Marc La France).
- 32. ATI driver changes: Implement Mach64 engine restriction on virtual
- resolution; Add DPMS support; More DSP calculation fixes; Fix text
- mode restoration bug; Fix Mach64 screen blanking; Don't probe for
- previously claimed VGA compatibles; Fix device section matching for
- Mach64 controllers made by UMC foundry; Miscellaneous cleanups
- (Marc La France).
- 31. Add GLINT 300SX support to the glint driver (Alan Hourihane).
- 30. Remove the unused GLINT Delta code (for now) to re-implement as
- a chipset (like the gamma) from the glint driver (Alan Hourihane).
- 29. Add support for the TVP3026 ramdac to the ramdac module (Alan Hourihane).
- 28. Add support for building and installing HTML versions of the man
- pages (David Dawes).
- 27. Fix some limitation in rman so that it will handle our man pages
- correctly (David Dawes).
- 26. Import rman-3.0.8, for generating HTML versions of the man pages
- (David Dawes).
- 25. ATI fixes to Cards database (Marc La France).
- 24. Fix some man page formatting problems that show up on some platforms
- (David Dawes).
- 23. Fix an 8+24 bug that occured when shared memory pixmaps were used as
- tiles (Mark Vojkovich).
- 22. Support for the Trident CyberBlade/DSTN/i1 (Alan Hourihane).
- 21. Fix Xinerama problems that occured when screen zero was not at (0,0)
- (Mark Vojkovich).
- 20. Add untested support for Matrox SDRAM G400s (Mark Vojkovich).
- 19. Improve memory probing reliability in the Matrox driver (Mark Vojkovich).
- 18. Fix DESIGN doc and XF86Config man page information about the Screen
- entry format in the ServerLayout sections (David Dawes).
- 17. Add missing file permission flags to xf86shmget (Mark Vojkovich).
- 16. Workaround in 8+32 for applications that assume changes to window
- background pixmaps go into effect immediately (Mark Vojkovich).
- 15. Change loader search order to look in more specific subdirectories first,
- thereby avoiding loading 3.3.* module versions (Marc La France).
- 14. Remove the var-* bindist files for platforms that don't use Xvar.tgz
- (David Dawes).
- 13. No Xset.tgz, so remove the set-list bindist files (David Dawes).
- 12. Fix Xinstall's symlink testing for Solaris (/bin/sh's builtin doesn't
- recognise '-L') (David Dawes).
- 11. Update Xinstall.sh to handle the xkb/compiled directory properly in all
- cases, including when there is no Xvar.tgz tarball (David Dawes).
- 10. Add missing cs_CZ.ISO_8859-2 entries to locale.alias (#A.20,
- Cejka Rudolf).
- 9. Updates to Linux-ix86 bindist host.def file.
- 8. Fix installation of iso8859-{1,2,3} Compose files, and fix the czech
- entry in locale.alias (Charles Lopes, #A.62, Stanislav Brabec).
- 7. Fix some problems with layers forgetting that SwitchMode is an
- optional function (Mark Vojkovich).
- 6. Parser bug fix for hexadecimal numbers (Marc La France).
- 5. Fix scanpci (Marc La France).
- 4. DPMS #include fix (Marc La France).
- 3. Fix an event ordering problem in Xinerama (Mark Vojkovich).
- 2. Fix some clipping bugs in the Xv DDX (Mark Vojkovich).
- 1. Remove 24bpp shadowfb support from the NV driver since the hardware
- is not capable of 24bpp (Mark Vojkovich).
-
-XFree86 4.0 (8 March 2000)
-3972. Possible fix for a cirrus driver crash when using -configure
- (David Dawes).
-3971. R128 driver doc update (#3813, Ove Kaaven).
-3970. Update Unicode/ISO 10646 information in the release notes (#3812,
- Markus Kuhn).
-3969. Fix an apm driver crash when using -configure (#3811, Loic Grenie).
-3968. Release notes updates (David Dawes).
-3967. Major updates to the XF86Config man page (David Dawes).
-3966. Update the Cyrix driver documentation (#3810, Richard Hecker).
-3965. Update the APM driver documentation (#3809, Loic Grenie).
-3964. Fix a name clash in XF86OffscreenImageRec (Mark Vojkovich).
-
-XFree86 3.9.18Za (7 March 2000)
-3963. GCC/egcs bug workaround and other more minor ATI fixes (Marc La France).
-3962. Split HasGlide into HasGlide2 and HasGlide3 (David Dawes).
-3961. Enable known gcc optmisation work arounds by default (David Dawes).
-3960. Fix uninitialized screen function (RestackWindow) (#3806, Keith Packard).
-3959. Added DRI users guide documentation (Brian Paul and Kevin Martin).
-3958. Update the -misc-fixed-* BDF fonts. New glyphs have been added and
- some old ones fixed. 10x20.bdf and 9x15.bdf now also cover the
- ISO 8859-6 characters (Arabic), and 18x18ja.bdf covers now all
- characters necessary to display the full ISO-2022-JP-2 repertoire
- (#3799, Markus Kuhn).
-3957. Make sure the fbdevhw module is loaded by the glint driver when it
- is needed, and add some memory barriers to some register access macros
- (#3804, Michel Dänzer).
-3956. Update the glint driver man page and release notes (#3804,
- Michel Dänzer).
-3955. Remove some noisy messages from the mga driver (#3803, Mark Vojkovich).
-3954. The last segment in any zero-width polysegment drawing request to
- a window with more than one clipping rectangle gets dropped in the
- fb code (#3802, Keith Packard).
-3953. Fix the versions for which HasMTRRSupport is enabled for OpenBSD
- (#3800, Matthieu Herrb).
-3952. Fix some "ambiguous" else statements in some of the driver Probe()
- functions (David Dawes).
-3951. Don't make the VBEInit call in the chips driver dependent on the loader
- server (David Dawes).
-3950. Register vbe symbols as "referenced" with the loader in drivers that
- use them (David Dawes).
-3949. Fixed the unresolved VBE symbols in the r128 driver and a crash
- related to referencing vgahw symbols before the module is loaded
- (Kevin Martin).
-3948. Fix a -configure crash in the tdfx driver (David Dawes).
-3947. Fix a mouse driver bug that prevented the X server from seeing the
- mouse button 4 and above when three button emulation is enabled
- (#3773, Yoshihiko Sarumau, Kazutaka Yokota).
-3946. Add NO_GXCOPY to the s3virge driver's imagewrite flags, which fixes
- a crash (#3783, Kevin Brosius).
-3945. Fix a parser build problem for Interactive Unix, and update the
- docs (#3796, Michael Rohleder).
-3944. Fix the r128 hw cursor for big endian machines, and enable building
- the r128 driver for PPC (#3975, Kostas Gewrgiou).
-3943. Update lnxResource.c to allow builds to succeed on PPC platforms
- (#3795, Kostas Gewrgiou).
-3942. B&H Lucidux fonts (#3794, donated by Charles Bigelow, Kris Holmes
- from Bigelow and Holmes Inc, with hinting donated by Berthold Horn and
- Blenda Horn from Y&Y, Inc).
-3941. Doc update for the sis driver (#3793, R Horn).
-3940. Fix an xman build problem on LynxOS (#3792, Thomas Mueller).
-3939. Fix some 24-plane problems with the tga driver, and update the docs
- (#3789, Martin Lucina).
-3938. Rage 128 documentation update (Kevin Martin).
-3937. Fix an unresolved reference to VErrorF from the int10 module
- (David Dawes).
-3936. Reduce some of the noise in the server startup messages (David Dawes).
-3935. Static library objects don't use THREADS_CFLAGS (#3790, Matthieu Herrb).
-3934. Fix a fatal error related to shared memory pixmaps in Xinerama (#3788,
- Mark Vojkovich).
-3933. Fix IA64 build fixes (#3787, Mark Vojkovich).
-3932. Fill out the rendition man page (#3785, Dejan Ilic).
-3931. Update the s3virge man page (#3784, Kevin Brosius).
-3930. Fix the FreeBSD/alpha code to track changes made to the Linux memory
- mapping code (#3782, Doug Rabson).
-3929. Update email addresses for C&T driver authors (#3781, Nozomi Ytow).
-
-XFree86 3.9.18Z (3 March 2000)
-3928. Restrict the X server -configure option to root, and fix a crash
- when the server fails to read the first stage config file that it
- writes when run with this option (David Dawes).
-3927. Modify the parser's xf86WriteConfigFile() function to write the
- file using the real user id when the real and effective ids are
- different (David Dawes).
-3926. Fix a problem with VT switching disabling direct rendering 3D apps
- (Kevin Martin).
-3925. Add an imake parameter called XFree86Devel that can be set in host.def
- to enable devel-specific settings (like more verbose compiler warnings),
- and adjust GccWarningOptions to use this (David Dawes).
-3924. Various doc updates, and don't install out of date docs (David Dawes).
-3923. Fix a thread related problem in the Xv client library (Mark Vojkovich).
-3922. Fix a Xinerama problem with XShapeMask (Mark Vojkovich).
-3921. LynxOS documentation and bindist updates, and an os-support fix (#3779,
- Thomas Mueller).
-3920. Update the wacom input driver to suppor the PL400 model and the
- stroking pen on the Intuos model (#3778, Frederic Lepied).
-3919. -
-3918. -
-3917. Add prototypes for xman, and eliminate most of the compiler warnings
- (#3772, Thomas Dickey).
-3916. Xterm patch #130 (#3771, Thomas Dickey).
-3915. Fix a segfault in XAA caused by reading beyond shared memory bitmaps
- when hardware clipping is not available (Mark Vojkovich).
-3914. Update the mga man page (Mark Vojkovich).
-3913. A Q&D fix for GLX segment violation in loader server (Marc La France).
-3912. Add Mach64 screen-to-screen copy acceleration (Kevin Martin,
- Marc La France).
-3911. IA-64 fixes (Mark Vojkovich).
-3910. Add skeleton man pages for the video and input drivers that don't
- already have one (David Dawes).
-3909. Add man pages for the mouse, keyboard and void input drivers
- (David Dawes).
-3908. Enable building the "void" input driver by default (David Dawes).
-3907. Keep xf86RegisterRootWindowProperty from freeing data it didn't
- allocate (Mark Vojkovich).
-3906. Add an extra file name to the server config file search path --
- XF86Config-M, where M is the major version number (David Dawes).
-3905. DRI megapatch II. This includes DRI enhancements, 3dfx fixes and
- updates, updates Mesa to version 3.3 beta, adds new GLX dispatch
- code and adds i810 2D support (Precision Insight).
-3904. Add SERVER_OVERLAY_VISUALS root window property (Mark Vojkovich).
-3903. Remove unnecessary VGA CRTC unlock/relock in cyrix driver
- (Marc La France).
-3902. Fix ATI driver's 8514/A probe delay when one isn't present
- (Marc La France).
-3901. Changes to -configure: ATI driver interface; Move default monitor
- tolerances to xf86ValidateModes(); Let drivers decide on default depth
- and mode; Don't "special-case" VGA driver. (Marc La France)
-3900. Fix xc/lib/Imakefile for BuildServersOnly (Marc La France).
-
-XFree86 3.9.18b (29 February 2000)
-3899. Fix a bug in lnx_apm.c that causes fd 0 to be closed instead
- of the just opened /proc/apm (#3766, Kars de Jong).
-3898. Fix a SuperProbe build problem on UnixWare 7 (#3765, Thanh Ma).
-3897. Mouse doc updates (#3764, Kazutaka Yokota).
-3896. Speed up dashed lines and conic sections in fb, including changing
- mi to use PolyPoint instead of FillSpans for dashed arcs (#3763,
- Keith Packard).
-3895. Add shadowfb support to the rendition driver (#3762, Dejan Ilic).
-3894. Allow Rage128 driver to Probe DDC too (Alan Hourihane).
-3893. Allow i740 driver to Probe DDC (using vbe) for -configure, and remove
- one liner from tdfx driver to enable it too (Alan Hourihane).
-3892. Make GNU make -j workaround separately configurable (Marc La France).
-3891. Replace remaining occurrences of BuildXTT imake symbol with
- BuildXTrueType (Marc La France).
-3890. Fix some problems using the UTF-8 -locale:
- - Add proper side (GL/GR) handling to the UTF-8 locale
- - No more need to define ISO10646-1 in en_US.UTF-8. It is already
- defined in lcCT.c
- - The fontset loading routines would access invalid memory when
- not all fonts for a fontset were found
- (#3761, Bruno Haible).
-3889. Avoid spurious warnings from the XFree86-Bigfont extension (#3760,
- Bruno Haible).
-3888. Fix an error in the XtAppMainLoop() man page related to its return
- behaviour (#3759, Bruno Haible).
-3887. Make it possible for gcc to compile the Linux int10 module with -fPIC
- (#3758, Bruno Haible).
-3886. Fix typos in fontcacheP.h and RELNOTES (#3757, Bruno Haible).
-3885. Disable stripping programs when they are installed to make it
- easier to debug problems that may show up within libraries (#3756,
- Bruno Haible).
-3884. Add support for reading power management events for NetBSD and
- OpenBSD (#3755, Matthieu Herrb).
-3883. Update Xinstall.sh for NetBSD-current-ELF (#3754, Matthieu Herrb).
-3882. Update NetBSD and OpenBSD bindist files (#3753, Matthieu Herrb).
-3881. Apm driver update, including extending the Rush extension to allow
- initialisation of the Rush chip in a legal way (#3752, Loic Grenie).
-3880. Xterm patch #129 (#3751, Thomas Dickey).
-3879. Add DDC support to the tdfx driver via the vbe interface (#3750,
- Jarno Paananen).
-3878. Enable double scan and interlaced modes for the tdfx and nv drivers
- (#3750, Jarno Paananen).
-3877. Fix 8bpp initialisation problem with the rendition driver (#3749,
- Dejan Ilic).
-3876. Update the XThrStub library version with that in the 3.3.x branch,
- and enable thread-safe libraries for OpenBSD 2.6 and later (#3748,
- Matthieu Herrb).
-3875. Fix some REGION_BROKEN related stuff with the overlays (Mark Vojkovich).
-3874. Fix a bug with unaccelerated pixmap cache uploads when virtualX
- was larger than the displayWidth (Mark Vojkovich).
-3873. Xinerama changes (Mark Vojkovich).
- - extend the Xinerama protocol and change the version number to 1.1.
- - add a new client API in the "Xinerama" namespace with more
- functionality than the previous "PanoramiX" functions.
- - move Xinerama functions out of libXext and into libXinerama.a.
- - some Xinerama bug fixes.
-3872. Add a flags field to the XF86OffscreenImageRec (Mark Vojkovich).
-3871. Fix a malloc/free problem in Xnest on 64-bit platforms (David Dawes).
-3870. Update bindist definition files (David Dawes).
-3869. More installer updates (David Dawes).
-3868. Make -configure generate multihead configs (Alan Hourihane).
-
-XFree86 3.9.18a (25 February 2000)
-3867. Add a preliminary Install document (David Dawes).
-3866. Remove obsolete XF98 and XF68 definitions from xfree86.cf (David Dawes).
-3865. Fix some rendition driver problems (#3746, Dejan Ilic).
-3864. Add build-time support for using fb instead of cfb with the nv
- driver (#3744, Jarno Paananen).
-3863. Add missing xf86_ansic.h include for the nv driver, and avoid a
- gcc 2.96-generated memcpy call in Mesa (#3743, Jarno Paananen).
-3862. Glint driver updates:
- - removed obsolete NoWriteBitmap option
- - reworked pm2_accel.c (cleaned up swapping/mirroring, removed
- obsolete hacks)
- - fixed setting of mode sync flags
- - fixed PolySegmentThinSolidWrapper functions
- (#3742, Michel Dänzer).
-3861. Change the positioning of $(XF86INT10LIB) to fix some static server
- linking problems (#3741, Kevin Brosius).
-3860. Make xclock's -brief option off by default, and document it in the
- man page (#3740, Nozomi Ytow).
-3859. Improve the default converters set in libX11, and use it for all
- "one byte" locales (#3737, Ivan Pascal).
-3858. Some improvements to the generic converters set in libX11, including:
- - some converter optimization
- - actions that can be done once at initialization step moved to
- lcGeneric.c
- - converters from CharSet to MultiByte/WideChar added
- (#3731, Ivan Pascal).
-3857. Add a "showCurrent" resource for Xaw, which makes the list widget
- always show the selected item (#3728, Paulo Cesar Pereira de Andrade).
-3856. Use fb for the fbdev driver, and check if the fbdev modes are suitable
- for the monitor (#3709, Michel Dänzer).
-3855. Add support for finding VT devices for Linux kernels compiled with
- devfs (#3692, Christopher Sekiya).
-3854. Implmenent the Font Type font properties for the Speedo, Type 1 and
- TrueType backends (#3688, Juliusz Chroboczek).
-3853. Add an installation script (Xinstall.sh) for installing binary
- distributions (David Dawes).
-3852. Fix bitmap installation location for xditview (#3724, Harald Koenig).
-3851. Make -probe and -configure deal with vendor-supplied modules again
- (Marc La France).
-3850. Fix an exposure problem that occured in 8+32 mode when the root
- window was in depth 24 (Mark Vojkovich).
-3849. The MGA driver now recognizes a "VideoKey" option that sets the
- default video key for YUV overlays (Mark Vojkovich).
-3848. Add some missing cfbDrawableEnabled checks to the 8+32 and 24+32
- framebuffers (Mark Vojkovich).
-3847. Fix a segfault introduced by the workaround in 3546 below.
-3846. Fix big endian problems in XAA stipple code (Michel Dänzer).
-3845. Fix xf86MatchPciInstances() to not cause r128 to report detection of
- other ATI adapters to -probe (Marc La France).
-3844. Fix bug in xf86MatchDevices() with -probe or -configure (Marc La France).
-3843. More compilation fixups (Marc La France).
-3842. Make -probe and -configure use compiled-in driver lists. Make -configure
- work in the static server (Marc La France).
-3841. A second attempt at fixing DPS compilation (Marc La France).
-3840. Add DDC probing to the -configure option and enable it in the trident
- driver (Alan Hourihane).
-3839. Bring xditview over from the contrib dist.
-3838. Fix drm free list bug (Jeff Hartmann and Rik Faith, Precision Insight).
-3837. Remove deprecated keywords (Kevin Martin).
-3836. Support for YUV offscreen surfaces in Xv and have the MGA driver
- offer them (Mark Vojkovich).
-3835. Reorder generic Xv adaptor registration to allow V4L to use
- driver-managed YUV offscreen surfaces (Gerd Knorr).
-3834. Preliminary IA-64 support (Mark Vojkovich, Johannes Erdfelt).
-
-XFree86 3.9.18 (21 February 2000)
-3833. Bump the minor version number for libXaw since it has some symbols
- that are not present in 6.0.
-3832. Add a "xf86LoaderCheckSymbol" function and use this in drivers to
- check if the vgahw module is loaded before calling vgaHWFreeHWRec()
- (David Dawes).
-3831. Fix some build problems on Interactive Unix (#3739, Michael Rohleder).
-3830. Disable NetBSD aperture driver support by default (#3736,
- Matthieu Herrb).
-3829. Update OpenBSD and NetBSD docs (#3735, Matthieu Herrb).
-3828. Update the VideoBoard98 file (#3734, Isao Ohishi).
-3827. Fix 'X -scanpci' crash (David Dawes).
-3826. Fix the "ev56" gcc option (#3730, Keith Packard).
-3825. Fix some problems with the MMIO macro use of function pointers on
- Alpha (#3729, Keith Packard).
-3824. Fix a Mesa bug involving paletted textures and software rendering
- (#3727, Brian Paul).
-3823. Fix a glx bug involving glFlush() inside glXWaitGL() (#3727, Brian Paul).
-3822. Disable the 3DNow assembler code for now, to avoid problems with
- assemblers that don't recognise the instructions (Brian Paul).
-3821. Fix some problems with the Cards file (#3726,
- Paulo Cesar Pereira de Andrade).
-3820. Eliminate the double mappings added to the r128 driver work around
- earlier limitations, and add the fix necessary to make the R128
- work on an Alpha UP1000 box without hanging the AGP bus during fb
- rendering (#3720, Keith Packard).
-3819. Fix an int10 crash when the BIOS accessed memory beyond the first
- 8kbytes (#3722, Keith Packard).
-3818. Fix PCI memory regions on dense alpha (#3720, Keith Packard).
-3817. Fix an int10 module build problem on big endian machines (#3719,
- Kostas Gewrgiou).
-3816. Remove "lib" from the GLcore module name (David Dawes).
-3815. Set HasPoll to NO for Linux to work around a problem that Netscape
- has when libXt uses poll() instead of select() (#3718, Keith Packard).
-3814. Disable 24bpp fb rendering on big endian machines because it doesn't
- work yet (#3717, Keith Packard).
-3813. Fix an Xlib bug that causes freed memory to be accessed. This is
- exposed by Netscape (#3716, Keith Packard).
-3812. Fix a problem in glxUseXFont() when direct rendering (#3715, Brian Paul).
-3811. A rework of Kevin Martin's Mach64 acceleration. Only solid fills for
- now (Marc La France).
-3810. ATI Mobility fixes (Marc La France).
-3809. A new clock ordering has been reported for Mach32's. Treated as a
- different clock chip for now (Marc La France).
-3808. Build fixups (Marc La France).
-3807. Fix a bug in the code that checks for the presence of a core keyboard
- and pointer (David Dawes).
-3806. Remove unnecessary system headers from Xext/fontcache.c, which were
- causing unresolved symbols for the extmod module on Solaris
- (David Dawes).
-
-XFree86 3.9.17Z (17 February 2000)
-3805. Fix VT switch problem when using shadowfb with the ati driver
- (Marc La France).
-3804. Fix some typos in the mouse driver that affect some of the extended
- PS/2 protocols (Kazutaka Yokota).
-3803. Xterm patch #128 (#3713, Thomas Dickey).
-3802. Fix a crash in the XKB library code (#3712,
- Paulo Cesar Pereira de Andrade).
-3801. Set the right max clock for the Voodoo3 3000 (#3707,
- Yoann Vandoorselaere).
-3800. Fix various build problems (David Dawes).
-3799. Fix all other SaveScreen() functions, and add a helper xf86IsUnblank()
- that drivers can use to interpret the SaveScreen mode values
- (David Dawes).
-3798. Fix GLINTSaveScreen's use of the second argument (#3706, Michel Danzer).
-3797. Glint driver updates: register int10 module's symbols, and add a
- workaround to set the sync flags in supplied modes to make the HW
- cursor work with FBDev (#3650, Michel Danzer).
-3796. Indented xfree86 for better readability. (Egbert Eich)
-3795. Fixed int10 build rules (hope they are right now) (Egbert Eich)
-3794. Changed lnxResources.c to know about differences between ev4/5 and ev6.
- (Egbert Eich).
-3793. xf86pciBus.c restores old registration if attempt fo fix PCI
- registration fails. (Egbert Eich)
-3792. Removed sparse mapping from vidmem.c. (Egbert Eich)
-3791. Changed memory mapping for linux on Alpha:
- - removed separate mapping functions for sparse and dense.
- - allow for 32bit read/write to access memory directly without
- going thru a function call if Jensen support is not enabled
- (Egbert Eich)
-3790. Fix for dead keys in XKB Norwegian keyboards (#3702, 3703,
- Preston Brown).
-3789. Synced with latest Mesa 3.3 sources (Brian Paul, Precision Insight).
-3788. Bug fixes for DRI (Kevin Martin, Precision Insight).
-3787. Bug fixes for tdfx DRI driver (Daryll Strauss, Precision Insight).
-3786. Cleanups for the contrib programs recently moved into the main xc/
- tree (#3701, Bruno Haible).
-3785. Small lynx.cf fix (#3700, Thomas Mueller).
-3784. Initialise MMIO32 for r128 when using fbdev (#3699, Kostas Gewrgiou).
-3783. Avoid most lockups for Trio3D startup (s3virge driver) (#3698,
- Harald Koenig).
-3782. Fix unresolved and conflicting symbols in X-TT, and fix the broken
- BIG5 converter (#3697, Takuya Shiozaki).
-3781. Update README.fonts (#3696, Juliusz Chroboczek).
-3780. Add dot, line, arc accelerations for 24bpp in fb, and cleanup most
- warnings (#3695, 3711, Keith Packard).
-3779. Make it possible to build the r128 driver with support for fb
- (disabled by default) (#3693, Keith Packard).
-3778. Fix a problem with lnx_ev56 (#3693, Keith Packard).
-3777. Fix references to noPanoramiXExtension when Xinerama is not built
- (#3691, Christopher Sekiya).
-3776. Fix possible races in xauth and libXau (#3690, 3694, Colin Phipps).
-3775. Fix some Xv and PC-98 init bugs in the apm driver (#3689, Loic Grenie).
-3774. Fix SVR4.0 build problem in the cyrix driver (David Dawes).
-3773. Fix SVR4.0 build problems in the sis driver (#3687, Takaaki Nomura).
-3772. Change CppProgram to /usr/bin/cpp for FreeBSD.
-3771. DPS build fixes (#3686, Juliusz Chroboczek, David Dawes).
-3770. Back out the pMga->PointerMoved change.
-3769. Fix DRI/DRM code to build tdfx driver and turn off building MGA DRI
- support until the next code merge (Kevin Martin).
-3768. Attempt to first read the PLL parameters in the BIOS from PCI space,
- then fallback to 0xc0000, and then fallback to default PLL parameters
- in r128 driver (Kevin Martin).
-3767. Fix compiler warnings in r128 driver (Kevin Martin).
-
-XFree86 3.9.17f (12 February 2000)
-3766. Moved Alpha ev5/56 read dense functions to a separate file.
- (Egbert Eich)
-3765. Improved RAC support for asynchronous events (not yet enabled).
- (Egbert Eich)
-3764. Fixed a bug that prevented restoration of PCI registers after
- a VT switch. (Egbert Eich)
-3763. Fixed support for BIOS reading on multiple chipset cards. (Egbert Eich)
-3762. Separated stub functions from pcitweak. (Egbert Eich)
-3761. Rewrote scanpci to use libxf86_os.a. (Egbert Eich)
-3760. Improved server state notification callback handler to meet the
- needs of multi-head dri. (Egbert Eich)
-3759. Mga fix for pMga->PointerMoved init (#3684, Isao Ohishi).
-3758. Import FreeType 1.3.1 and X-TrueType 1.3, and incorporate the
- font cache extension (#3653, Akio Morita, X-TrueType team, Nozomi Ytow).
-3757. Add a stub for xf86OSPMOpen() for OS's that don't have their own
- (David Dawes).
-3756. Move the other XFree86-supported contrib programs to the main xc/
- tree (except for xditview) (David Dawes).
-3755. Add a dummylib that provides functions required by libxf86_os. This
- makes it easier for utilities (like scanpci and pcitweak) to use
- libxf86_os (Egbert Eich, David Dawes).
-3754. Some bug fixes and PC-98 enhancements for the apm driver (#3685,
- Loic Grenie).
-3753. GL build fix (#3683, Christopher Sekiya).
-3752. Xterm patch #127 (#3682, Thomas Dickey).
-3751. Cyrix MediaGX driver. Not very usable yet (#3681, Richard Hecker).
-3750. Add DPS libraries. Building these is disabled right now because
- some more work is needed on the Imakefiles and portability issues
- (#3645, 3680, Juliusz Chroboczek).
-3749. Fix the mga driver to work with the MGA 2064W on Alpha architectures
- (#3679, Doug Rabson).
-3748. Support for building XFree86 on FreeBSD/alpha (#3678, Doug Rabson).
-3747. Restore viewport correctly on VT switch for the s3virge, and clean
- up the logging messages (#3676, Kevin Brosius).
-3746. Don't try to program the keyboard repeat rate directly for Linux/98
- (#3675, Takaaki Nomura).
-3745. Update information about mouse support in 3.9.18 (#3673, 3674,
- Kazutaka Yokota).
-3744. Remove the "Extended PS/2 mouse protocol" class from the supported
- interfaces in FreeBSD, since they are already handled at the
- device driver level (#3672, Kazutaka Yokota).
-3743. Merge Kevin Hendricks fbdev/ppc patches in r128, fix wrong order
- in cursor init (#3671, Kostas Gewrgiou, Kevin Hendricks).
-3742. Fix a problem building xedit/realpath.c that shows up on Linux
- (#3670, Andrew Aitcheson).
-3741. Fix a build problem for lcUTF.c on Linux/libc5 (#3668,
- Andrew Aitcheson).
-3740. Make sure the cursor is positioned correctly after mode changes
- (#3667, Harald Koenig).
-3739. Add support for the SiS 630/540/300/530/620 to the SiS driver with
- hw acceleration. Support for the tvout function is included for
- the 630/540/300 (#3666, Can-Ru Yeou, SiS).
-3738. Fix some build problems with the apm driver on SVR4.0 (David Dawes).
-
-XFree86 3.9.17e (11 February 2000)
-3727. Move xman into the main xc/ tree.
-3726. The leak-tracing allocator now works on 64-bit machines, and update
- the server to allow the use of the leak-tracing allocator (#3665,
- Keith Packard).
-3725. Fix fb so that it works with 64-bit pointers and works on big-endian
- machines (#3665, Keith Packard).
-3724. r128 driver updates to work on Alpha UP1000 (ev6). The changes follow
- recommendations from Kevin Martin and Egbert to try to make them
- reasonable (#3665, Keith Packard).
-3723. Modify mfb, cfb and mi so that they now do all accesses 32-bits at
- a time instead of 64 (on 64-bit platforms). This eliminates image
- repadding in DIX (#3665, Keith Packard).
-3722. Bug fixes, comments and cosmetics for the input method code:
- - Add prefix "_Xim" to two input specific functions.
- - Remove buggy function ConvertUCS4toUTF8 (bug: UCS-4 never contains
- surrogates), and replace with simpler code. Based on a patch by
- Ivan Pascal.
- - Fix for _XimLookupMBText and _XimLookupWCText in multibyte locales
- Patch by Ivan Pascal.
- (#3664, Bruno Haible, Ivan Pascal).
-3721. Fix ugly code in _XlcCreateDefaultCharSet and add comments (#3663,
- Bruno Haible).
-3720. Introduce a UTF-8 locale, including conversion from/to compound text.
- This is not fully functional yet (#3662, Bruno Haible).
-3719. Resturcutre lib/X11/lcCt.c so that it is more understandable. Update
- the default_ct_data array. Fix bugs in _XlcCheckCTSequence and cstoct,
- and fix the UTF-8 introducing sequence (#3661, Bruno Haible).
-3718. Fix parsing of resource files so that it works better in multi-byte
- locales (#3660, Bruno Haible).
-3717. Add commens to the libX11 locale files, declare _XlcInitLoader and
- XlcConverter and a portability fix for dlopen() (#3659, Bruno Haible).
-3716. Fix an indentation problem in Xlib that was the origin of a malloc/free
- bug (#3658, Bruno Haible).
-3715. Fix a bug in the locale file parsing routines (#3657, Bruno Haible).
-3714. Create a locale en_US.UTF-8. This isn't fully functional yet, but
- parts of Xlib work with it (#3657, Bruno Haible).
-3713. Modify xman to search for man pages in a locale-specific directory
- first (#3652, Paulo Cesar Pereira de Andrade).
-3712. Have xedit use the BSD realpath() provided instead of the standard
- Linux one because the Linux one behaves differently (#3652,
- Paulo Cesar Pereira de Andrade).
-3711. Fix some typos in the Monitors and Cards files (#3652,
- Paulo Cesar Pereira de Andrade).
-3710. Disable SilkenMouse in the C&T driver until the memory transfer
- sync problem is solved (#3654, Nozomi Ytow).
-3709. -
-3708. Don't "normalise" module names in xf86LoadModules (David Dawes).
-3707. Apm driver updates, including updates to the xf86Rush extension (#3649,
- 3655, Loic Grenie).
-3706. Small cosmetic patch to glide driver (#3648, Loic Grenie).
-3705. Fix a bug in the way the BIOS mapping size is calculated in
- in the ReadBIOS functions (#3647, Loic Grenie).
-3704. Add ReputImage function to the Xv DDX to prevent flickering during
- window moves on some hardware (Loic Grenie).
-3703. Fix a bigfont extension build problem on Interactive UNIX (#3646,
- Michael Rohleder).
-3702. Fix a bigfont extension build problem on NetBSD and OpenBSD (#3644,
- Matthieu Herrb).
-3701. USB mouse support for *BSD (enabled for OpenBSD) (#3644, 3656,
- Matthieu Herrb).
-3700. Update README.fonts (#3643, Juliusz Chroboczek).
-3699. i810 driver and preliminary DRI support for i810 and mga (#3638,
- Keith Whitwell, Precision Insight).
-3698. 8+24 support upgraded to a non-destructive overlay (Mark Vojkovich).
-3697. Modify XAA to allow image rendering into DMA buffers (Mark Vojkovich).
-3696. Fix some SVR4.0 build problems (#3642, 3653, Satoshi Kimura).
-3695. Add XErrorDB entries for the DPS extension (#3639, Juliusz Chroboczek).
-3694. Fix a bigfont extension build problem on Linux/libc5 (#3637,
- Takaaki Nomura).
-3693. Extend the Mouse "ZAxisMapping" option so that it can accept
- (optionally) four arguments. The additional two are for mice that
- have two wheels or whose scroll device has two axes) (#3636, 3641,
- Kazutaka Yokota).
-3692. Add support for some new mice (Microsoft IntelliMouse Explorer,
- Genius NetScroll Mouse Optical, IBM ScrollPoint) and serial PnP
- IDs (A4 Tech 4D/4D+, MouseSystems SmartScroll, Logitech Cordless
- MouseMan Wheel, 8D Scroll mouse) to the mouse driver, and update
- the mouse documentation (#3636, 3640, 3641, Kazutaka Yokota).
-3691. Xterm patch #126 (#3635, Thomas Dickey).
-3690. Fix for the Japanese PC-98 with GA-RUSH/6PCI in the apm driver (#3634,
- Isao Ohishi).
-3689. Update man pages and server messages for -xf86config usage, and
- FatalError when an unsafe path is given by a non-root user (#3633,
- Mark Montague).
-3688. Add support for the Melco WHP-PS8 Permedia2-based card for Japanese
- PC-98 machines to the glint driver (#3354, Isao Ohishi).
-3687. Avoid segv in new Linux apm support (David Dawes, Michel Danzer).
-3686. Fix unresolved symbols in the linux int10 module and the GLcore module
- (David Dawes).
-3685. Add xkb support plus new (XFree86-specific) keysym names for the
- HP and Logitech iTouch "Internet" keyboards (David Dawes).
-3684. Fix a vbe-related build problem on Solaris (David Dawes).
-
-XFree86 3.9.17d (9 February 2000)
-3684. XKB could crash with keycodes larger than the range given in the
- keycodes file (David Dawes).
-3683. Allow the passing of all extended keycodes, which makes it possible
- to access keys on "Internet" keyboards (David Dawes).
-3682. Added support for saving/restoring access state during
- asynchronous events. Added code to make xf86EnableAccess()
- atomic for asynchronous events. (Egbert Eich)
-3681. Modified xf86EnterServerState() to avoid any unnecessary
- disabling of resources during state transition. (Egbert Eich)
-3680. Added function callback registration. Drivers can register
- callback functions to be notified of the start/end of a
- resource transition. (Egbert Eich)
-3679. Added support for OS specific Pci address windows. (Egbert Eich)
-3678. Added more debug traps to xalloc.c. Added support to peek/poke
- MMIO registers and fb addresses from a debugger. (Egbert Eich)
-3677. Changed resource registration to use CPU space addresses
- instead of BUS space addresses. Added flag to resource type
- to mark addresses in bus address space. (Egbert Eich)
-3676. Extended host2bus and bus2host address conversion for PCI
- addresses to PIO. (Egbert Eich)
-3675. Improved subset and intersect handling for resources ranges.
- (Egbert Eich)
-3674. Modified mapping of V_RAM in int10/generic.c. (Egbert Eich)
-3673. Updated INT10.HOWTO. (Egbert Eich)
-3672. Added support for VBE DDC read out to s3v driver. (Egbert Eich)
-3671. Added xf86SetDDCProperties() to glint, chips, neomagic, s3v
- and r128 driver. (Egbert Eich)
-3670. Fixed problems with virtual screen size != real screen size
- when using shadow fb in mga driver. (Egbert Eich)
-3669. Fixed handling of virtual != real screen in shadowfb. (Egbert Eich)
-3668. Prevent reinitialization of pMga->PointerMoved in mga_driver.c
- on server reset. (Egbert Eich).
-3667. Added int10 support to r128 driver. (Egbert Eich)
-3666. Attempt to make apm driver 64bit clean. (Egbert Eich)
-3665. Added options to swap x/y coordinates on mice. Useful when
- using rotate on notebooks. (Egbert Eich)
-3664. Modified memory mapping on AXP to map entire MMIO space
- at once. (Egbert Eich)
-3663. Fixed handling of sparsely mapped MMIO on AXP increasing
- performance considerably. (Egbert Eich).
-3662. Added non-barrier versions of MMIO_OUTxx. (Egbert Eich).
-3661. Added support for new AXPs that don't have sparse mapping.
- (Egbert Eich)
-3660. Separated high and low level handling in ModeInit() and
- Restore() in cirrus driver. (Egbert Eich)
-3659. Made chipset specific record subrecord of vendor record
- in cirrus driver. (Egbert Eich).
-3658. Made some improvements to acceleration code of Cirrus Alpine driver.
- (Egbert Eich)
-3657. Added support for 64-bit cursor for Cirrus Alpine. (Egbert Eich)
-3656. Fixed cirrus driver to handle MMIO access using MMIO_IN/OUTxx
- (Egbert Eich)
-3655. Fixed xf86HWCurs.c to handle 32-bit cursors on 64-bit machines
- correctly. (Egbert Eich)
-3654. Added rotate support to neomagic, s3v, chips and cirrus
- driver (Egbert Eich)
-3653. Added shadow fb support to s3v and cirrus driver (Egbert Eich)
-3652. Fixed sig11 problem after server reset caused by the new
- extension loading code. (Egbert Eich)
-3651. Attempted to fix build problems with int10 (Egbert Eich)
-3650. Added a baseclass/subclass override to xf86PciInfo.h.
- This override is evaluated in xf86pciBus.c (Egbert Eich)
-3649. Changed memory mapping in int10 support for Linux to use SYSV
- IPC shm instead of mapping /proc/self/mem (Egbert Eich)
-3648. Added APM support for portable systems. (Egbert Eich)
-3647. XFree86-Bigfont extension that provides efficient client access to
- the complete glyph metrics, using shared memory where possible/available
- or transmitting the data in a compressed format otherwise (#3626,
- Bruno Haible).
-3646. Update locale support for Celtic languages (Welsh, Irish, Scots, Manx
- and Cornish), and include a compose file for ISO-8859-14 (#3612,
- Alastair McKinstry).
-3645. Add a Slovenian xkb symbols file (#3629, Marko Samastur,
- Primoz Peterlin).
-3644. The new extension init code didn't handle server resets (#3628,
- Ebgert Eich).
-3643. xf86GetPciSizeFromOS() didn't close the file it opened (#3627,
- Loic Grenie).
-3642. Export frexp() and ldexp() to modules (#3624, 3631, Juliusz Chroboczek).
-3641. Fixes for CTEXT handling in Xlib:
- - rewrite CTEXT from/to converters for standard compliance
- - CTEXT parser now understands UTF-8 (and other DOC) sequences and
- performs only CTEXT sequence recognition
- - detailed charset information parsing moved to the procedure that
- adds 'charset object'
- - Some actions for preparing 'charset object' moved to lcCharSet.c
- (where it can be done easily)
- - XlcAddCT call added to XLC_LOCALE file parser to allow recognition
- of charsets that are described only in those files (ie, not
- in internal Xlib tables)
- (#3624, Ivan Pascal).
-3640. Convert the nv driver to use MMIO to access the VGA registers
- instead of normal I/O ports. Also riva_hw is updated to the
- same version as is in 3.3.6 (#3620, Jarno Paananen).
-3639. DRI and Mesa update (#3619, Brian Paul, Precision Insight).
-3638. Fix a problem with the tdfx driver that can result in a lockup
- (#3618, Nicholas Brealey).
-3627. Fix some PPC inline assembler in compiler.h (#3617, Kostas Gewrgiou).
-3626. Add support for the S3 Trio3D/2x and Trio3D chips to the s3virge
- driver (#3616, 3623, Harald Koenig).
-3625. Fix some build problems on Solaris 8 with gcc (#3615, Richard Coley).
-3624. Fix an Xserver core dump that can happen when xdmcp-related command
- line options have missing arguments (#3614, Harald Koenig).
-3623. Xterm patch #125 (#3611, Thomas Dickey).
-3622. Add a Type1 version of the cursor font (#3610, Juliusz Chroboczek).
-3621. Add Trident Cyber9540 detection (not tested) (Alan Hourihane).
-3620. Fix horizontal/vertical line drawing for r128 driver (Kevin Martin).
-3619. Update -probe option for all bus types (Alan Hourihane).
-3618. Fix primary card detection for -configure (Alan Hourihane).
-3617. Modularize the mouse driver (Alan Hourihane).
-3616. Fix Cyber9388 detection in trident driver (Alan Hourihane).
-3615. Implement some of the (installed) path restructuring that was
- discussed back in April 1999 (David Dawes).
-3614. Remove duplicated code in XKB and InputMethod processing (#3396,
- Ivan Pascal).
-
-XFree86 3.9.17c (30 January 2000)
-3613. Add DDC1 and DDC2 support to the NVIDIA driver (#3608, Jarno Paananen).
-3612. Make -configure multihead aware, add loading of all extension modules,
- setup Layout sections (Alan Hourihane).
-3611. XTextPropertyToTextList doesn't work if incoming XTextProperty has
- encoding field other than STRING or COMPOUND_TEXT (#3606, Ivan Pascal).
-3610. Fix a bug in the X11 generic converters that prevents them from
- converting the last character in a string (#3605, Ivan Pascal).
-3609. Fix a bug in _XOpenLC() that was causing unallocated memory to be
- freed (#3604, Ivan Pascal).
-3608. Xterm patch #124 (#3603, Thomas Dickey).
-3607. Fixes to the character set conversion tables (#3602, Bruno Haible).
-3606. Reduce the data section of libX11 by 30% by proper use of
- 'const' for tables (#3601, Bruno Haible).
-3605. Fix a bug in ConvertUCS4toUTF8() in libX11 (#3600, Bruno Haible).
-3604. Fix some fb macros that gcc accepted but which weren't legal ANSI C
- (#3599, Keith Packard).
-3603. Update micmap to allow the drivers to specify the r/g/b mask values
- (3598, Keith Packard).
-3602. Disable the cfbCopyPlane functions on big endian machines, and fix
- a cfb24 bug (#3597, David Bateman).
-3601. Add a CheckExtension() function that can be called to check if an
- extension has been initialised (David Dawes).
-3600. Allow extensions to specify which other extensions must be
- initialised first, and sort the initialisation order according to
- this information (David Dawes).
-3599. Force BIOS to be read from 0xc0000 for r128 driver (Kevin Martin).
-3598. Add a XXXAvailableOptions to DriverRec which allows passing available
- options back to the -configure option (Alan Hourihane).
-3597. Avoid PCI-PCI bridges with an unexpected header type, which avoids
- an infinite loop that can show up in the PCI bus enumeration code
- (Egbert Eich).
-3596. More compilation fixups (Marc La France).
-3595. Add '###' (Comment) line capability to the parser (Alan Hourihane).
-3594. Fix the laguna driver to return MOD_CLASS_NONE (Alan Hourihane).
-3593. Add the 'extmod' module to the -configure option (Alan Hourihane).
-3592. Modify the extension loading code so that he core server no longer
- needs to be aware of all extensions that can be loaded (David Dawes).
-3591. Remove XExtensionVersion from XPrint headers (Dirk Hohndel, from 3.3.5).
-3590. Fix a build problem with the static server related to the -configure
- option code (#3596, Takaaki Nomura).
-
-XFree86 3.9.17b (24 January 2000)
-3589. Add a rule to lnxdoc.rules for maintainers to use to update the
- formatted docs (David Dawes).
-3588. Add new -configure option to generate a clean XF86Config without the
- need for a config tool. But hopefully could be used with XF86Setup.
- (Needs some OS based updates - tested only on linux so far)
- (Alan Hourihane).
-3587. Fix 64 bit problem in the Xv client header files (Mark Vojkovich).
-3586. Change the default charset for et_EE from ISO8859-4 to ISO8859-15,
- which conforms with the upcoming standard EVS8:1999
- (http://www.eki.ee/itstandard/) (#3595, Ville Hallik).
-3585. Fix a bug in XKB's CapsLock handling for some non-Latin1 locales,
- and add support for ISO8859-15. Without this, CapsLock only affects
- Latin1 keysyms and has no effect on scaron and zcaron, for example
- (#3595, Ville Hallik).
-3584. Add Estonian keyboard support to XKB (#3595, Ville Hallik).
-3583. Hack to disable optimisation when building Xext/xf86vmode.c on FreeBSD
- 4.0 to avoid a compiler bug (David Dawes).
-3582. Disable the hardware cursor in the tdfx driver when the screen is
- too wide for the hardware to properly position the cursor on the
- right side of the screen (#3593, Scott Bertin).
-3581. Fix a typo in panoramiXprocs.c that shows up on SVR4.0 (#3592,
- Takaaki Nomura).
-3580. Xterm patch #123 (#3591, Thomas Dickey).
-3579. Add a "Status" document that lists and compares the driver status of
- 4.0 and 3.3.x (needs a lot more input) (David Dawes, plus contributions
- from the devel team).
-3578. Fix a problem with the EmulateTimeout line in the file generated
- by xf86config, and have xf86config create /etc/X11 if it doesn't
- already exist (David Dawes).
-3577. Put an OS-independent version of the int10 module/library in
- xfree86/int10, but still allow an OS-specific version to override
- it (David Dawes).
-3576. Import a minimal subset of the x86emu 0.6 distribution (David Dawes).
-3575. Register the required/referenced int10 symbols in the nv driver
- so that there are no warnings on platforms that don't have this
- module (David Dawes).
-3574. Don't probe for PC98 architecture on Solaris (David Dawes).
-3573. Fix some SVR4.0 build problems related to bzero() (David Dawes).
-3572. Rewrite the way Xinerama deals with events (Mark Vojkovich).
-3571. Fix VT switching problem in shadowfb (Marc La France).
-3570. Initialize DST_X_DIR and DST_Y_DIR for solid filled rects and for
- horizontal and vertical lines to fix line drawing problems, and
- initialize ScanlineCPUToScreenColorExpandFillFlags to fix font
- corruption problems in r128 driver (Kevin Martin and Rik Faith).
-3569. Fix BIOS reading problem with r128 driver (Kevin Martin).
-3568. Fix imake failure in Mesa Imakefile (Kevin Martin).
-3567. Change trident driver to use fb instead of cfb and make DDC1 info
- available to the primary card (Alan Hourihane).
-3566. Fix an XAA text corruption problem introduced by the endian fix
- in 3.9.17a (David Dawes).
-
-XFree86 3.9.17a (21 January 2000)
-3565. Update linux.cf to use the kernel header files on Debian rather than
- those packaged with the libc headers (#3544, Simon Richter).
-3564. Add an item to the default twm menu to open an xterm window (#3584,
- David Brownlee).
-3563. Update Spanish locales in xc/nls (#3583, Fernando Herrera).
-3562. Fix I2C/DDC for S3 ViRGE (#3582, Harald Koenig).
-3561. Update the fbdevhw module for some new cards (#3579, Kostas Gewrgiou).
-3560. Fix interpret_vdif.c for big endian machines (#3578, Kostas Gewrgiou).
-3559. Minor fix to DDC to find monitor descriptions in EDID v1.1 (#3576,
- Andrew Aitchison).
-3558. Allow silken mouse to work when building on Linux without DRI (#3574,
- Keith Packard).
-3557. Only do the kbdrate I/O on architectures that support it (#3573, 3581,
- Kostas Gewrgiou, Branden Robinson).
-3556. Fix XAA colour expansion for big-endian architectures (#3572,
- Kostas Gewrgiou).
-3555. Update QNX support (#3570, Frank Guangxin Liu).
-3554. Fix "controlization" in XLookupString for chars > 127 (#3569,
- Ivan Pascal).
-3553. Take advantage of FB speedups in Tiny-X (#3568, Keith Packard).
-3552. Speed up FB and do 32bit accesses instead of 64bit accesses
- (#3567, Keith Packard).
-3551. Eliminate saving the contents of the screen durint VT switching
- (#3562, Keith Packard).
-3550. Make using fb easier for driver writers (#3561, Keith Packard).
-3549. Fix TCP font server connections (#3560, Keith Packard).
-3548. Implement the "OverclockMem" option for the Millennium and Millennium
- II (#3558, Andrew Aitchison).
-3547. Speed up some FB performance problems (#3557, 3559, 3560, 3588, 3589,
- Keith Packard).
-3546. Work around a bad code generation bug in gcc 2.7.2.3 that shows up
- in XAA (#3550, Rik Faith).
-3545. Add a -brief option to xclock to show only hours and minutes when in
- digital mode (#3549, Keith Packard).
-3544. Fix some dead key problems with xkb symbols for Swiss French and
- Swiss German keyboards (#3546, Charles Lopes).
-3543. Add drm_poll to fix SIGIO problem in the drm kernel modules, and change
- drm to use /{proc,dev}/dri to avoid conflicts with /{proc,dev}/graphics
- (Rik Faith and Daryll Strauss).
-3542. Fix some fb/glint-realted static build problems (Marc La France).
-3541. Add 3.9.17 xterm information to the RELNOTES (#3541, Thomas Dickey).
-3540. Fix some 64-bit problems in the GLX code (#3539, Dave Gilbert).
-3539. Execute the GLINT delta code in the Probe for each instance of
- hardware found, not just the first one (#3534, Michael Rohleder).
-3538. Allow mesa to build on an Alpha (#3533, Matt Grossman).
-3537. Fix glint/Imakefile so that the correct fb.h is included, and rename
- the private fb.h file in fbdevhw so that it won't be mistakenly included
- instead of the one in Xserver/fb (David Dawes).
-3536. Fix some (unused) bad usages of InstallDynamicModule (David Dawes).
-3535. Make the Glint driver use the new fb module and fix correct operation
- for 24bpp support (Alan Hourihane).
-3534. Fix for various compilation glitches (Marc La France).
-3533. Fix some Segmentation faults with NULL pointers in xf86Config.c
- (Alan Hourihane).
-3532. Update some drivers to respect the PROBE_DETECT flag and update
- xf86DoProbe to print out the supported chipset list (Alan Hourihane).
-3531. Update Trident driver to fix Clock source for 9440 chips and allow
- linear framebuffer mapping for nommio (Alan Hourihane).
-3530. Fix fb for module compiling and ifdef fbcmap for now (Alan Hourihane).
-3529. Add Cyber9397 and Cyber9397DVD PCI ID detection to trident driver
- (Alan Hourihane).
-3528. Fix Multiple MX RegisterResources with RAC in glint
- driver (Alan Hourihane).
-3527. Update loader for Xinerama changes (Alan Hourihane).
-3526. Massive Xinerama rewrite (Mark Vojkovich).
- - Change the way it deals with resources.
- - Remove broken Xinerama code from the multibuf extension.
- - Add support for shared memory pixmaps.
- - Lessen Xinerama's impact on DIX.
-3525. Point and arc acceleration improvements for the NVIDIA driver
- (Mark Vojkovich).
-3524. MGA acceleration modifications to prevent pci retries during
- color expansions (Mark Vojkovich).
-
-XFree86 3.9.17 (31 December 1999)
-3523. Clean up bindist directories for the loader server (Robin Cutshaw).
-3522a. Fix return values in PsImageText8() and PsImageText16() (#3535,
- Takaaki Nomura).
-3522. Old-style DGA keyboard input fix (#3536, Keith Packard).
-
-XFree86 3.9.16Za (29 December 1999)
-3521. Fix HW cursor on rendition V2K (#3532, Dejan Ilic).
-3520. Sync wacom driver with 3.3 (Frederic Lepied).
-3519. Resolve missing symbol in TDFX driver (#3531, Dave Gilbert).
-3518. Allow TDFX driver to build on Linux-axp (#3530, Dave Gilbert).
-3517. Fix Linux-axp compile problem (#3529, Dave Gilbert).
-3516. Jumbo Tiny-X patch with Itsy support (#3527, Keith Packard).
-3515. Turn off debug messages in font client code (#3525, Keith Packard).
-3414. Allow colormap privates to be allocated before default colormap
- (#3524, Keith Packard).
-3413. Make Xserver/fb work with R6.3 server and with MSB cpu
- (#3523, Keith Packard).
-3412. Compress built-in fonts (#3522, Keith Packard).
-3411. Fix ct_driver for static server (#3521, Takaaki Nomura).
-3410. Fix the last Xaw user of XtOffset (#3520, Keith Packard).
-3409. FreeBSD-current compile fix (#3519, Eric Anholt).
-3408. Xterm patch #122. (#3517, Thomas Dickey).
-3407. Remove duplicate symbol from loader (#3516/3528,
- Jarno Paananen/Nicholas Brealey).
-
-XFree86 3.9.16Z (28 December 1999)
-3406. Temporary fix for building linux platform without glide (Robin Cutshaw).
-3405. Fix unresolved symbols for the loader (#3501, Matthieu Herrb).
-3404. Fix compiles on non-NetBSD systems (#3499, Matthieu Herrb).
-3403. Fix XKB XlookupString usage (#3511, Ivan Pascal).
-3402. Use ForceLatin1Lookup mode after XmbLookupString/XwcLookupString
- (#3510, Ivan Pascal).
-3401. Export symbols for SGI driver (#3505, Terence Ripperda).
-3400. Fix problem with compilation of static server on SVR4.0
- (#3497,3514 Takaaki Nomura).
-3399. Fix where using bitsPerPixel from screen pixmap to use drawable,
- fix default visual class search for fallback visual, fix pixmap
- privates allocation, change screen init sequence so that the
- calling function is responsible for init of backing store
- (#3495, Keith Packard).
-3398. Fix more problems between the X and font servers (#3493, Keith Packard).
-3397. Fix util/memleak to work on linux/x86 (#3492, Keith Packard).
-3396. Add DPS support hooks (#3491, Juliusz Chroboczek).
-3395. Add QNX4, Neutrino support (#3489, Frank Guangxin Liu).
-3394. Add ATI Rage 128 Pro PF support to r128 driver (#3488, Rik Faith).
-3393. AutoRepeat fix for xf86config (#3485, Harald Koenig).
-3392. Cirrus driver split for Laguna and Alpine (#3484, Derek Fawcus).
-3391. Mga_dac3026 rev A/B fixes (#3427, Mark Montague).
-3390. Jumbo font patch. This updates the bdf/misc fonts to the
- latest ISO versions (#3429+updates, Markus Kuhn).
-3389. Fix a problem with no Xv encodings being reported (Mark Vojkovich).
-3388. Update Xv driver interface docs (Mark Vojkovich).
-
-XFree86 3.9.16f (15 December 1999)
-3387. Fix posix compliance problem in Xserver/os/utils.c
- (Robin Cutshaw/Keith Packard).
-3386. Fix for os2_bios (#3483, Holger Veit).
-3385. Enhance DK keyboard support (#3481, Keld Simonsen).
-3384. Xv client library documentation (#3480, Mark Vojkovich).
-3383. Rendition microcode cleanup, accel fix, int10/ddc support,
- pixmap cache fix, doc update (#3479, Dejan Ilic/Marc Langenbach).
-3382. Reverse kbdrate patch (#3478, Harald Koenig).
-3381. Add Xv support to tga driver (#3473, Matt Grossman).
-3380. Add ViRGE/MX and BIOS probing to the s3virge driver (#3470,
- Harald Koenig).
-3379. Install NetBSD aperture driver in /usr/local until added to
- the core O/S (#3466, Matthieu Herrb).
-3378. Add QNX/Neutrino support (#3464, Frank Guangxin Liu).
-3377. DRI megapatch. This moves mesa to xc/extras, updates Mesa to
- version 3.2, adds full support and fifo code for 3dfx hardware,
- and updates the device driver to work with Linux 2.3 kernels
- (#3463, Daryll Strauss).
-3376. Fix dynamic loading on the alpha platform (#3459, Hannes Reinecke).
-3375. Add Xinerama option to the serverlayout section of the config file
- (#3458, Joe Moss).
-3374. Add accelerated line support, clean up accel code, and other fixes
- for the tga driver (#3453, Matt Grossman).
-3373. Restore colormap on exit in nv driver (#3452, Thomas Mueller).
-3372. Generalize the SIGIO way of reading input data (#3450, Frederic Lepied).
-3371. Fix missing quotes in Xt docs (#3443, Matthieu Herrb).
-3370. Add request bounds checking for xfs (#3449, Keith Packard).
-3369. Fix problem where font library fails to match bitmap instances
- (#3448, Keith Packard).
-3368. Change font client code to recover from font server hangs/crashes
- and reduce memory fragmentation (#3446, Keith Packard).
-3367. Allow MAXCLIENT to be any of 64, 128, 256, or 512 and adjust the
- resource allocation code as appropriate (#3445, Keith Packard).
-3366. Fix compile problems with Solaris 7 (#3437, Nicholas Brealey).
-3365. Add Riva TNT2 M64 to nv_driver (#3436, Jarno Paananen).
-3364. Add prototypes for Xserver/Xprint and fix various problems with
- Xprint (#3432, Thomas Dickey).
-3363. Add proper clock checking for VidMode extension, add SDK fixes for
- missing files, add SilkenMouse for C&T driver (#3424, David Bateman).
-3362. Sync v4l and glint drivers with the new Xv changes (Mark Vojkovich).
-3361. Add XvImage support to the MGA driver - G200/400 only (Mark Vojkovich).
-3360. Xv changes/additions (Mark Vojkovich)
- - XvImage support in the Xv DDX, DIX, client libs and header files.
- - Add min and max fields to the XvAttributes.
- - Reved Xv minor version.
- - Rewrote some of the way clipping is dealt with in the Xv DDX.
-3359. Fix nv driver rendering bugs (Mark Vojkovich).
-3358. Add MTRR support for LynxOS (#3419, Thomas Mueller).
-3357. Fix bad return in GLINTAdjustFrame (#3418, David Holland).
-3356. Fix some build problems with the rendition driver, including a general
- problem building the static server, and problems that show up on
- some OSs (David Dawes, #3418, David Holland).
-
-XFree86 3.9.16e (5 December 1999)
-3355. Fix a problem with the bitmap font module (#3421, Matthieu Herrb).
-3354. Misc. bug/typo fixes. (Egbert Eich)
-3353. Fixed scanpci to generate better output on Alphas (Harald Koenig,
- Egbert Eich)
-3352. Added initial VESA VBE support. This includes initialization
- and DDC. (Egbert Eich)
-3351. Added support for 64bit PCI devices (untested) (Egbert Eich.
-3350. Added support to read PCI memory and io ranges from kernel on
- Linux 2.3 (untested). (Egbert Eich)
-3349. introduced "#undef" before definitions in xf86_libc.h to keep
- gcc on Alpha quite. (Egbert Eich)
-3348. Added a function to check if any resource needs to share memory.
- Required for DGA. (Egbert Eich)
-3347. Added copyright messages to int10 code. Fixed int10 code to
- run on Alphas.
-3346. Changed some byte and word access to MMIO registers in drivers
- to use MMIO_READ/WRITE8/16(). Made attempt to make some drivers
- 64 bit (and Alpha!) clean: s3virge, chips, gling, neomagic.
- Fixed bugs in compiler.h. (Egbert Eich)
-3345. Made part of the code 64 bit clean. (Egbert Eich)
-3344. Cleanups in the C&T driver. (Egbert Eich)
-3343. Clearified meaning of VIDMEM_MMIO and VIDMEM_MMIO_32BIT. (Egbert Eich)
-3342. Added support for host-PCI bridges. (Egbert Eich)
-3341. Changed policy for removing resource overlaps.
- Removed a bug in findIntersect() (xf86Bus.c).
- Added function that enables/disables all resources of a given
- screen. Added a config file option to set overlap removal
- aggressiveness.(Egbert Eich)
-3340. Split xf86Bus.c into generic/pci/isa specific parts. (Egbert Eich)
-3339. Faster clocks for the G400 (Mark Vojkovich).
-3338. Fix bug in FB manager's ResizeArea function (Mark Vojkovich).
-3337. Pass positioning information for the obsolete ServerLayout format
- to the common layer, and update the DESIGN doc for the newer ServerLayout
- formats (David Dawes).
-
-XFree86 3.9.16d (19 November 1999)
-3336. Fx up new MMIO macros (#3337, Matt Grossman).
-3335. Clean up compiler warnings in lib/font/bitmap (#3411, Matt Grossman).
-3334. TGA fixes, add sync on green (#3410, Matt Grossman).
-3333. Fix NULL pointer dereference in libXaw (#3406, Christopher Sekiya).
-3332. Add Rage128 support (#3405, Rik Faith, funded by ATI).
-3331. Add MTRR support for NetBSD and OpenBSD. Add new NetBSD aperture driver
- (#3404, Matthieu Herrb).
-3330. Xterm patch #121 (#3402, Thomas Dickey).
-3329. Rendition driver bugfixes and alpha related cleanups (#3400,
- Dejan Ilic, Marc Langenbach, Egbert Eich).
-3328. Add void input device (ä3392, Frederic Lepied).
-3327. Changed the Xon serial option to be able to select xon/xoff for input,
- output or both. Add support for Graphire models. Change wacom init
- phase to use new Xoff option (#3391, Frederic Lepied).
-3326. Change the SwapAxes option to SwapXY in elographics/microtouch driver
- to match an already existing option in the Dynapro driver. Add a Focus
- class capability to the elographics driver (#3395, Patrick Lecoanet).
-3325. Update mouse rate handling (#3388, Harald Koenig).
-3324. Fix NULL pointer dereference in misprite.c (#3380, Edward Wang).
-3323. Add FBDev and ShadowFB support to glint driver. Add new option
- "NoWriteBitmap" (#3383, Michel Daenzer).
-3322. Update SuperProbe to handle S3 Savage4, Savage200 and clean up
- Trio3D/Savage3D detection (#3382,3384 Harald Koenig).
-3321. Add new framebuffer code and tiny X DDX architecture (#3379,
- Keith Packard).
-3320. Add DGA2 documentation (#3378, Mark Vojkovich).
-3319. Update XFree86 manpage wrt -bpp/-depth/-fbbpp (#3377, Andy Isaacson).
-3318. Make SuperProbe check primary cards, only (#3374, Harald Koenig).
-3317. Add SilkenMouse to *BSD (#3373, Matthieu Herrb).
-3316. Allow SilkenMouse to work if not all drivers of an OS support SIGIO
- (#3372, Keith Packard).
-3315. Fix a few problems in TGA driver and add support for backing store
- and SilkenMouse (#3371, Matt Grossman).
-3314. Add smarter scheduler (#3370, Keith Packard).
-3313. Xterm patch #120 (#3369, Thomas Dickey).
-3312. Enable xf86SetKbdRate function on Solaris 8 (#3364, David Holland).
-3311. Fix some bugs and add acceleration to Rendition server (#3360,
- Dejan Ilic).
-3310. Make raw DDC information available as properties in the root window
- (#3357, Andrew Aitchison).
-3309. Fix for xf86CreateRootWindow (#3355, Andrew Aitchison).
-3308. Add manpage for the chips driver (#3353, David Bateman).
-3307. Update contact info (#3352, Andrew van der Stock).
-3306. Add kbd rate support for Linux (#3363, Harald Koenig).
-3305. Update Portuguese XKB map (#3351, Joao Esteves, Francisco Colaco).
-3304. Fix text clipping in 3dfx driver (#3349, Henrik Harmsen).
-3303. Fix S3 ViRGE hw cursor (#3348, Harald Koenig).
-3302. Fix clipping in 3dfx driver (#3342, Daryll Strauss).
-3301. Enable SilkenMouse for 3dfx driver (#3341, Henrik Harmsen).
-3300. Enable SIGIO support on LynxOS (#3339, Thomas Mueller).
-3299. Get TRUE defined in sigio.c. Fix xterm compile problem on ISC
- (#3338, Michael Rohleder).
-3298. Correct DPMS suspend/standby modes for 3dfx driver (#3336,
- Henrik Harmsen)
-3297. Xterm patch #119 (#3335, Thomas Dickey).
-3296. ATI LCD changes to add interlaced mode support and near-final rework of
- mode validation (Marc La France).
-3295. Keep track of a mode's hsync and vrefresh rates used for monitor checks
- so they can be displayed by xf86PrintModes() (Marc La France).
-3294. Add sync polarities to VESA modes (Marc La France).
-3293. Fix VESA mode typos and some warnings (Marc La France).
-3292. Add GeForce/Quadro support to the NVIDIA driver (Chas Inman,
- Mark Vojkovich).
-3291. Fix a DGA colormap problem (Mark Vojkovich).
-3290. Disable the Double-Buffer extension in Xinerama mode since it
- doesn't work (Mark Vojkovich).
-3289. Fix XAA scanline color expansion routines to check the buffer address
- after the Subsequent function is called. This allows the driver to
- change buffers on-the-fly (Mark Vojkovich).
-3288. Update PCI device IDs for newer NVIDIA chipsets (Mark Vojkovich).
-3287. Add an 80 Hz sample rate option for PS/2 mice (Mark Vojkovich).
-3286. Remove ATI driver's meddling with LCD power management facilities
- (Marc La France).
-3285. Ensure miInitializeBanking() fails when a bank clip region cannot be
- allocated (Marc La France).
-3284. Static server fix for s3virge and nv drivers (Marc La France).
-3283. Map MMIO areas on ATI adapters (Marc La France).
-3282. Disable DirectColor and gamma support for the original ATI integrated
- controllers (Marc La France).
-3281. Linear aperture fixes for ATI 88800 and CT controllers (Marc La France).
-3280. Make LCD mode validation changes in ATI driver (CHANGELOG #3271)
- into a development option, restoring the previous behaviour by
- default (Marc La France).
-3279. When display subsection mode names run out without yeilding a valid mode,
- continue validation with the largest unvalidated modePool member, rather
- than the first (Marc La France).
-3278. Allow drivers to specify whether or not sync/refresh rates in monitor
- sections are optional and use this for ATI LCD support (Marc La France).
-3277. Replace xf86Exiting with its DIX counterpart, dispatchException's
- DE_TERMINATE bit (Marc La France).
-3276. NVIDIA driver changes (Mark Vojkovich):
- - Improved shadowfb support (screen rotation).
- - Improved acceleration (color expansion, lines).
- - Fixed some rendering correctness issues.
- - Full DGA 2.0 support including changing depth on the fly.
-3275. Make usage of hardware clipping in XAA more consistent (Mark Vojkovich).
-3274. Limit MGA driver to using 16 Meg of ram to workaround some hardware
- limitations (Mark Vojkovich).
-3273. Fix DGA event bug (Mark Vojkovich).
-3272. Mode validation changes (Marc La France).
- - Remove assumption that modes of the same name are also of the same
- size.
- - Even if Display subsection mode names include duplicates, no two names
- will ever match the same mode.
- - If the supplied mode names do not yield a usable mode (including the
- case where no names are supplied), scan the mode pool until a usable
- mode is found. This is a step towards allowing successful server
- runs with XF86Config's that specify no mode information whatsoever.
- - Implement minHeight and maxHeight checks.
- - Call the driver's ValidMode() for a final OK just before accepting a
- mode.
- - Free mode pool on xf86PruneDriverModes() calls.
- - Documentation updates.
- - Minor fixes to C&T and GLINT drivers.
-3271. ATI driver updates (Marc La France).
- - Disallow interlaced modes when scanline pitch exceeds hardware limits.
- - LCD support no longer depends on the mode on server entry.
- - Fix bug introduced by CHANGELOG entry 3245.
- - Re-lock adapters on ATIPreInit() failures.
- - Make default sync polarities consistent.
-3270. Trident updates for ISA cards and DGA support (Alan Hourihane).
-3269. mibank bug fixes (Marc La France).
-3268. Add -withrevinfo flag to lndir to allow shadowing of RCS, SCCS, CVS and
- CVS.adm directories (Marc La France).
-3267. SIGIO workaround for older Linux kernels (Marc La France).
-3266. Fix xalloc.c compilation failure with -DXALLOC_LOG (Marc La France).
-3265. Change ATIProbe() to use int 10 vector to locate the BIOS of VGA and
- VGA Wonder non-PCI adapters (Marc La France).
-3264. Make '-probe' work for static server and ATI driver (Marc La France).
-3263. #define _POSIX_C_SOURCE to 2 for Linux libc5 (Marc La France).
-
-XFree86 3.9.16c (13 October 1999)
-3262. Export SetCriticalEvent from DIX, it was an unresolved external in
- xf86dga2.c (#3326, Jarno Paananen).
-3261. Removes Alpha-specific MMIO-mappings from NVIDIA driver in the
- same fashion that was done in MGA-driver (#3326, Jarno Paananen).
-3260. Add SilkenMouse to NVIDIA and Glint drivers (#3326, Jarno Paananen).
-3259. Workaround for problem in xf86RegisterRootWindowProperty() code
- (Jarno Paananen).
-3258. DGA workaround for recent VTSwitch changes (#3325, Mark Vojkovich).
-3257. Out of memory fixes for the mi region code (#3323, 3324, Keith Packard).
-3256. "Silken Mouse" support (#3323, Keith Packard).
-3255. Modify the ati driver to temporarily ignore Rage 128s (#3322,
- Marc La France).
-3254. Fix offscreen memory handling for xf4bpp when VT switched away
- (Alan Hourihane).
-3253. xf4bpp, xf1bpp, ISA additions for the trident driver (Alan Hourihane).
-3252. Fix problem with cleanup after XAA offscreen pixmap allocation fails
- (Mark Vojkovich).
-3251. Fix missing USE_MMIO define in trident driver (Alan Hourihane).
-3250. Blade, image and trident updates for the trident driver (Alan Hourihane).
-3249. A very preliminary "-probe" mode for the X server (David Dawes).
-3248. Remove __alpha__ ifdefs from the mga and s3virge drivers by changing
- the way sparse MMIO access is handled (David Dawes).
-3247. Fix a WarpPointer bug introduced when "xineramifying" some dix code
- (Mark Vojkovich).
-3246. Move the BuildObjectFromLibrary rule into Imake.rules.
-3245. Fix text mode restoration when large modes are used in the ATI driver
- (#3318, 3321, Marc La France).
-3244. Rendition driver update, including skeleton HW cursor and accelerated
- support (#3317, Dejan Ilic, Marc Langenbach).
-3243. Change mode validation to allow drivers to modify a mode before it
- is checked against the monitor's constraints (#3316, Marc La France).
-3242. C&T driver fix (#3314, David Bateman).
-3241. Change the ati mode validation strategy for programmable clocks to best
- refresh (#3313, Marc La France).
-3240. Fix ATI Rage XL/XC & Mobility support so that it actually works this time
- (#3313, Marc La France).
-3239. Update the xfsft code to version 1.1.7 (#3310, Juliusz Chroboczek).
-3238. Remaining keyboard support for Solaris 8/x86, including keyboard beep,
- auto-repeat, keyboard LEDs, modifier keys (#3294, 3309, David Holland).
-3237. Add xf86RegisterRootWindowProperty() - a mechanism for drivers etc
- to add properties to the root window before the screen is created
- (#3307, Andrew Aitchison).
-3236. Fix two problems that may occur when some extension allocates a "font
- private index" while a font is already open (#3305, Bruno Haible).
-3235. Xterm patch #118 (#3303, Thomas Dickey).
-3234. Fix a typo in a dga header file (#3302, Mark Vojkovich).
-3233. Update rendition name info in scanpci (#3301, Dejan Ilic).
-3232. Getuid fix for scanpci (#3300, Marc La France).
-3231. This patch will avoid compilation warnings when GCC 3.0 comes out (#3299,
- Bruno Haible).
-3230. Fix some build warnings (#3298, Bruno Haible).
-3229. Fix for the DebuggableLibraries support (#3297, Bruno Haible).
-3228. Revert to always using bison instead of yacc on Linux (#3296,
- Bruno Haible).
-3227. Fix XAA flags checking for the ScanlineImageWrite function (#3293,
- Alan Hourihane).
-3226. Fix some problems wth the SiS 2x5 chipsets, and disable advertising
- support for the 201 and 202 chipsets (#3292, Juanjo Santamarta).
-3225. Call SoftReset for MGA cards on PC-98 machines (#3291, Isao Ohishi).
-3224. Use the int10 soft booter to get a non-primary voodoo3 card to work
- with the tdfx driver (#3290, Henrik Harmsen).
-3223. Fixes for the i740 and neomagic drivers (#3289, Jeff Hartmann).
-3222. Enable compiling ico on systems with pre-standard pthread API (e.g.,
- LynxOS), and fix a problem where a condition variable is used without
- holding the corresponding mutex (#3288, Thomas Mueller).
-3221. Add soft-booting capability to the glint and nv drivers (#3287,
- Jarno Paananen).
-3220. Xterm patch #117 (#3285, Thomas Dickey).
-3219. Fix xf8_32bpp's VT switching by restoring the previous
- xf86SaveRestoreImage() into it (#3284, Marc La France).
-3218. Remove duplicate symbol in misym.c (#3283, Alan Hourihane).
-
-XFree86 3.9.16b (27 September 1999)
-3217. Xterm patch #116 (#3280, Thomas Dickey).
-3216. Add new flags to the Xv adaptor type to indicate that it can be used
- to render into window or pixmaps and do video or stills (#3279,
- Mark Vojkovich).
-3215. Fix some MGA pci retry related corruption problems (#3278,
- Mark Vojkovich).
-3214. Attempt to autoprobe the memory on all MGA cards except the 2164
- (#3277, Mark Vojkovich).
-3213. APM driver updates, including bug fixes, 24bpp acceleration and
- improved Rush support (#3276, Loic Grenie).
-3212. Some DGA fixes (3275, Loic Grenie).
-3211. Fix and document the CMAP_LOAD_EVEN_IF_OFFSCREEN option for the common
- layer cmap code (#3274, Marc La France).
-3210. Some resource management speed improvements in Xinerama (#3273,
- Mark Vojkovich).
-3209. Fix an off-by-one error in shadowfb's EnterVT wrapper (#3272,
- Marc La France).
-3208. Fix ATI driver DAC handling for >8bpp TrueColor and add >8bpp
- DirectColor support (#3271, Marc La France).
-3207. Add a hardcopy version of the Xv specs (#3270, Mark Vojkovich).
-3206. Integration of a bug fix by David Woodhouse in the Microtouch
- driver. Correct a possible problem when configuring only one of
- the two devices supported by the driver (#3269, Patrick Lecoanet).
-3205. Update XF86Conf.man to reflect the current state of the input drivers
- (#3269, Patrick Lecoanet).
-3204. Add support for the ThruGlass touchscreens to the Microtouch driver
- (#3269, Andreas Micklei).
-3203. Add SwapAxes and PortraitMode options to the Elographics and
- Microtouch drivers (#3269, Patrick Lecoanet).
-3202. Port Microtouch and elographics drivers to the new module loading method
- (#3269, Patrick Lecoanet).
-3201. Rewrite the way Xinerama handles visibility events. Also fix some
- problems with CoordModePrevious primitives drawn on the root window
- (#3267, Mark Vojkovich).
-3200. Some Xaw and xedit updates. The html-mode code is removed from xedit
- (#3265, Paulo Cesar Pereira de Andrade).
-3199. Fix a problem with pScrn->rgbBits not being set in the correct place
- in the tdfx driver (#3264, Scott Bertin).
-3198. Update ATI info for `XFree86 -scanpci` (#3263, Marc La France).
-3197. ATI driver changes:
- - Rage XC & Rage XL fixes.
- - Preliminary Rage Mobility support.
- - Fix from Christian Lupien to disable TVOUT feature of 3D Rage
- adapters.
- - Work around vertical blending limitations with "shallow" modes by
- doublescanning (accelerator CRTC) or multiscanning (VGA CRTC) them.
- - Fix bug that did not map the VGA aperture for generic VGA support.
- (#3260, Marc La France).
-3196. Warning fixes in miscrinit.c (#3260, Marc La France).
-3195. Rework mibank for maintenance reasons (#3260, 3281, Marc La France).
-3194. VT switching changes, implementing a framework for framebuffer layers
- to be notified when an aperture is remapped at a different virtual
- address during EnterVT, and improved DDX-independence for mibank,
- and xf86SaveRestoreImage() no longer cares how the lower framebuffer
- layers access pixmap pixels (#3260, Marc La France).
-3193. Remove scanpci's redundant check for "root". It get in the way when
- setting its setuid bit (#3260, Marc La France).
-3192. Add several acceleration functions to the tdfx driver, and fix some
- compliance problems (#3259, Darryl Strauss).
-3191. i740 driver updates (#3256, Kurt Olsen).
-3190. Enable image writes in the nv driver for the TNT in 32 bit mode
- (#3255, Jarno Paananen, Neil Burch).
-3189. Remove the last global variables from the nv driver (#3255,
- Jarno Paananen).
-3188. Turn MGA soft reset stuff back on but modified so that it doesn't
- poll for fifos in case the PLLs aren't powered up (#3254,
- Mark Vojkovich).
-3187. Xterm patch #115 (#3253, Thomas Dickey).
-3186. Comment out some of the CacheBlit tiling code since the logic is not
- quite correct and it can get stuck in an endless loop in some cases
- (#3250, Mark Vojkovich).
-3185. Fix tseng 24 bpp mode (#3249, Egbert Eich).
-3184. Fix et4000W32p font corruption with ColorExpandScanline in modes > 8bpp
- (#3249, Egbert Eich).
-3183. Add Solaris 8 support (#3241, 3247, David Holland).
-3182. Fix some build problems in the Type1 code that show up on Solaris 8
- (#3241, David Holland).
-3181. Add an ISO8859-1 version of the "micro" font (#3246, Mark Montague).
-3180. Minor DDC code improvement: xf86PrintEDID() now returns pointer to
- monitor structure (#3245, Egbert Eich).
-3179. Problem with RAC wrapper (hopefully) fixed (#3245, Egbert Eich).
-3178. Neomagic ScreenToScreenCopy bug fix (#3245, Egbert Eich).
-3177. Initial INT10 module (Linux-only so far) (#3245, 3248, 3251, Egbert Eich).
-3176. Update the DRM Linux kernel module to match that in the Linux 2.3.18
- tree, and update libdrm and the DRI routines that use libdrm to reflect
- changes in the Linux kernel (#3244, Rik Faith).
-3175. Fix a WarpPointer bug in Xinerama (#3243, 3252, Mark Vojkovich).
-3174. Fix a seg fault when changing DGA mode (#3242, Loic Grenie).
-3173. Xterm patch #114 (#3240, Thomas Dickey).
-3172. Fix an XAA GC validation problem with Polygons for some fillStyles in
- some situations (#3239, Mark Vojkovich).
-3171. Fix an incorrect method for preallocating a color on the default map
- (#3237, Mark Vojkovich).
-3170. Fix a bad assumption in the XAA NonTE text rendering code (#3236,
- Mark Vojkovich).
-3169. An attempt to autodetect the G400 Max and set the max pixel clock
- appropriately (#3235, Mark Vojkovich).
-3168. Fix shadowfb problems when drawing is done while switched out (#3234,
- Marc La France).
-3167. Attempt to autodetect SDRAM in the MGA driver for the primary head
- (#3233, Mark Vojkovich).
-3166. Make Window->Pixmap copies in Xinerama less broken (#3232,
- Mark Vojkovich).
-3165. Fix a bug in the Xinerama ShmGetImage support added in the last alpha
- (#3230, Mark Vojkovich).
-3164. New cursor warping code. This implements the new way of specifying
- screen positions in the ServerLayout config file section (#3229,
- Mark Vojkovich).
-3163. Add a xf86CheckMTRR function which returns TRUE when changing the
- MTRR setting is supported and enabled (#3227, Alan Hourihane).
-3162. Resync SuperProbe and scanpci with the 3.3.x version (#3226,
- Marc La France).
-3161. Make 8+24 work on Matrox 2064w (Millennium I) with >4MB (#3224,
- Mark Montague).
-3160. Make xdpyinfo -ext XFree86-VidModeExtension print the current mode line
- (#3223, Andrew Aitchison).
-3159. Minor fix to Xnest Imakefile (#3222, Marc La France).
-3158. Make the wrapping or replacement of ScreenRec region code function
- pointers reliable when NEED_SCREEN_REGIONS is #define'd (#3221,
- Marc La France).
-3157. Remove ScreenRec region code function pointers (except BitmapToRegion)
- when the server is compiled with NEED_SCREEN_REGIONS #undef'ined
- (#3221, Marc La France).
-3156. Fix memory leak during resource broker initialisation (#3220,
- Marc La France).
-3155. During broker initialisation, use both system and non-system PCI
- resources to "trim" OS resources. Among other things, this allows the
- maximum memory limit to be bumped back up to 2G (#3220, 3282,
- Marc La France).
-3154. Temporarily allow a driver to register resources that only conflict with
- resources whose size the common layer has only estimated (#3220,
- Marc La France).
-3153. ATI driver updates, including:
- - Add option to display on the CRT interface whether or not a digital
- flat panel is detected.
- - Add support for ShadowFB (adapted from Henrik Harmsen).
- - Always read BIOS from legacy location for adapters found enabled on
- server entry.
- - Ensure the primary CRTC is always used for the CRT interface.
- - Fix determination of panel dimensions with older BIOS's.
- - Stop driver when panel dimensions cannot be determined.
- (#3219, Marc La France).
-3152. Thread-related updates to 'ico' (#3217, Carlos A M dos Santos).
-3151. Fix a build problem on 64-bit platforms introduced in 3.9.16a (#3216,
- Matt Grossman).
-
-XFree86 3.9.16a (6 September 1999)
-3150. Add support to the parser for a new way of specifying the screen
- positions (not made use of yet) (David Dawes).
-3149. Remove a spurious #endif in linux.cf (#3215, Jarno Paananen).
-3148. Add driver option VIDEO_OVERLAID_STILLS for the Xv DDX (untested)
- (#3214, Mark Vojkovich).
-3147. Comment out the MGASoftReset() call in the mga driver to fix a
- multi-head problem (#3213, Mark Vojkovich).
-3146. xman updates, including some app-defaults file tuning, change some
- widget names for better consistency, reformat the help file and
- update the man page (#3212, Carlos A M dos Santos)..
-3145. Add support for DG/ux systems to xload (#3212,
- Takis Psarogiannakopoulos).
-3144. App-defaults file updates for xcalc (#3212, Carlos A M dos Santos).
-3143. Fix some prototypes/casts in viewres (#3212, Carlos A M dos Santos).
-3142. Add an XtSetLanguageProc() call to all contrib programs except xman
- (#3212, Carlos A M dos Santos).
-3141. Fix a zero-height bug in the xaa text code (#3211, Mark Vojkovich).
-3140. ScreenToScreenColorExpansion bug fix for the G400 (#3210,
- Mark Vojkovich).
-3139. Xineramify ShmGetImage (#3209, Mark Vojkovich).
-3138. Rewrite PanoramiXGetImage so that it passes xtest (#3209,
- Mark Vojkovich).
-3137. Increase IMAGE_BUFSIZE to 64k (#3208, Mark Vojkovich).
-3136. Remove the "old input" code (David Dawes).
-3135. Fix a problem with xman that prevents it form recognising the
- XM_DELETE_WINDOW message when xman is run with the "topbox" disabled
- (#3207, Carlos A M dos Santos).
-3134. Prevent xkbcomp from overwriting writing through symlinks (#3206,
- Branden Robinson).
-3133. Use ncurses instead of termcap for Linux/libc6 (#3204, H.J. Lu).
-3132. Fix a build problem with the tdfx driver (#3203, Takaaki Nomura).
-3131. Add a clean rule to remove the automatically generated
- doc/sgml/index.sgml file (#3202, Marc La France).
-3130. Fix some build warnings (#3202, Marc La France).
-3129. Add missing files for the Rush extension (#3199, Loic Grenie).
-3128. Export the xf86InitFBManagerRegion symbol.
-
-XFree86 3.9.16 (31 August 1999)
-3127. Potential fix for a server crash when connecting from a byte-swapped
- client in Xinerama mode (based on #3196, Attila Fülöp).
-3126. Build xterm/resize with -lncurses on Debian (#3197, Attila Fülöp).
-3125. Allow inclusion of Xvlib.h into C++ code (#3195, Vladimir Dergachev).
-3124. Modify the ISO-8859-{6,7,10} to Unicode tables so that they agree with
- the tables found on ftp.unicode.org (#3172, Bruno Haible).
-3123. Some minor C&T bug fixes (#3194, David Bateman).
-3122. Xman update (#3174, Carlos A M dos Santos).
-3021. Import some xkb data file updates from 3.3.5.
-3020. Fix a build problem on Alpha platforms (#3191, Matt Grossman).
-3019. Allow driver SDK builds for the i740 driver (#3190, Daryll Strauss).
-3018. Allow driver SDK builds for the tdfx driver, and allow it to be built
- without DRI support (#3189, Daryll Strauss).
-
-XFree86 3.9.15d (29 August 1999)
-3017. 3Dfx driver for Banshee and Voodoo3 (#3188,
- Daryll Strauss/Precision Insight).
-3016. Fix a 24/32 GetImage problem (#3187, Mark Vojkovich).
-3015. Intel i740 driver (#3186, Precision Insight/Daryll Strauss).
-3014. Fix a planemask problem in 24bpp with the recently added MGA point
- speedups (#3185, Mark Vojkovich).
-3013. Some new and updated ISO 10646-1 fonts, including 5x7, 6x10, 6x13, 6x13B,
- 7x13, 7x13B, 7x14, 7x14B, 8x13, 8x13B, 9x15, 9x15B, 10x20, 9x18, 12x13ja,
- 18x18ja (#3184, Markus Kuhn, Robert Brady, Birger Langkjer,
- Constantine Stathopoulos).
-3012. Update the default xdm config file to disable listening for XDMCP
- requests (#3183, Matthieu Herrb).
-3011. Reinstate the code to stop DDC1 problems on secondary screens with
- the MGA driver (#3182, Andrew Aitchison).
-3010. Fix for the option handling in the glide driver (#3181, Henrik Harmsen).
-3009. NVIDIA doc update (#3179, Jarno Paananen).
-3008. Doc update for the C&T driver (#3176, David Bateman).
-3007. Update some of the bindist files (#3175, Michael Rohleder).
-3006. Fix a libXfont build problem that shows up on IUS (#3175,
- Michael Rohleder).
-3005. Xaw and xedit updates (#3174, 3180, Paulo Cesar Pereira de Andrade).
-3004. Add a new DebuggableLibraries imake parameter to allow libraries to
- be built with debugging symbols, and enable this by default for Linux
- (#3173, Bruno Haible).
-3003. Some Driver SDK build fixes (#3172, David Bateman).
-3002. Modify the MGA driver to fall back to DDC1 if DDC2 fails or is
- disabled (#3171, Andrew Aitchison).
-3001. Allow the -allowMouseOpenFail X server command line option to be
- recognised independently of the XFree86-Misc extension (#3170, Joe Moss).
-3000. Update NetBSD's and OpenBSD's aperture driver to remove a warning from
- xf86ReadBIOS() during xf86Config.c's PC98 detection on non-PC98 systems
- (#3169, Marc La France).
-2999. Disable setting the default gamma from the DDC data (#3168,
- Andrew Aitchison).
-2998. Update the microtouch input driver for "NEW_INPUT", and re-enable
- building it (#3178, David Woodhouse).
-2997. Back out the change in 3.9.15c that includes "non-system" resources
- in the RAC "system" resources list (#3167, Marc La France).
-2996. Update the RELNOTES for DDC (#3165, Andrew Aitchison).
-2995. Fix a problem with xf86ReadBIOS() on NetBSD/OpenBSD (#3164,
- Marc La France).
-2994. Add an XLC_LOCALE file for zh_TW.Big5 (#3163, Pablo Saratxaga).
-2993. Add dummy Compose files for encodings that don't already have them
- (#3163, Pablo Saratxaga).
-2992. APM driver updates. The Rush extension is now included in the driver
- (some files missing, so not enabled yet) (#3162, 3159, Loic Grenie).
-2991. Some fixes for the VidMode extension (#3161, Loic Grenie).
-2990. Update SuperProbe to recognise the APM AT3D chipset (#3160, Loic Grenie).
-2989. Some fixes for the nv driver (#3158, Jarno Paananen).
-2988. Fix a typo in ObjectFromAsmSource() in xf86.rules (#3157,
- Matthieu Herrb).
-2987. Add some NVIDIA cards to the Cards file (#3155, Jarno Paananen).
-2986. A quick hack to cut down on XAA pixmap cache thrashing that
- happens with some particular apps (#3154, Mark Vojkovich).
-2985. Update the tabtcvn file to include the full tcvn-5712 encoding, not
- only lowercase characters (#3153, Pablo Saratxaga).
-2984. Create the doc index list from information in the .sgml files
- (David Dawes).
-2983. Basic man page for the generic VGA driver (David Dawes).
-2982. Fix for lockup problem with Trident Image 975 (Alan Hourihane).
-
-XFree86 3.9.15c (22 August 1999)
-2981. Update NetBSD.cf to reflect NetBSD's switch from GNU malloc to FreeBSD's
- malloc (#3151, Bernd Ernesti).
-2980. Change xf86ReadBIOS() to reuse the fd for /dev/mem or /dev/xf86 from
- the other bsd_video.c functions in order to avoid the difficulty caused
- by the NetBSD aperture driver only allowing one open of /dev/xf86 at
- a time (#3150, Matthieu Herrb).
-2979. Add pre-R6.4 compatible entries to the NLS .dir and .alias files. This
- should make it possible for them to be used with older versions of Xlib.
-2978. Fix a typo in the MGA arc code that broke some arcs (#3149,
- Mark Vojkovich).
-2977. Fix a problem with cfb allocating too much space on the stack when
- clipping rects (#3148, Mark Vojkovich).
-2976. Add missing sync when uploading into the XAA pixmap cache (#3147,
- Mark Vojkovich).
-2975. Change XDGAFlush() to XDGASync() (#3146, Mark Vojkovich).
-2974. Add transparent DGA blits to the MGA driver, and enable the OverclockMem
- option for the G400 (#3145, Mark Vojkovich).
-2973. Update the common cursor code to keep virtual desktop panning from
- interfering with screen rotation (#3144, Mark Vojkovich).
-2972. Dynapro driver update: initialise the incoming packet state machine,
- and add a "SwapXY" option (#3142, David Woodhouse).
-2971. Fix a loader problem that shows up on Alpha/ELF platforms when there
- is a .sbss section (#3141, Hannes Reinecke).
-2970. Modify DDC for neomagic (#3139, Egbert Eich).
-2969. Add DDC support for the S3 ViRGE (DDC2 untested) (#3139, Egbert Eich).
-2968. Fix DDC2 support for MGA and C&T drivers (#3139, Egbert Eich).
-2967. Add a call to xf86SetPciVideo(NULL,NONE) after each probe (#3139,
- Egbert Eich).
-2966. Modified registration of the OS access windows (#3139, Egbert Eich).
-2965. Some Xaw and xedit fixes (#3138, Paulo Cesar Pereira de Andrade).
-2964. Next round of the font ansification and warning removal (#3135,
- Matthieu Herrb).
-2963. Fix ATI 18800-x detection problem (#3133, Marc La France).
-2962. Check for limitations on vertical blending in panel support for the ATI
- driver (#3133, Marc La France).
-2961. Update ATI driver to complain about bad BIOS data (#3133,
- Marc La France).
-2960. Man page corrections for the MGA driver (#3132, Mark Vojkovich).
-2959. Limit PCI BIOS apertures to 16MB as per the PCI 2.1 spec (#3131,
- Marc La France).
-2958. Assume a system has up to 1G of physical memory installed, rather than
- 2G (#3130, Marc La France).
-2957. Fix a bug in the handling for buggy VGA CRTCs (#3129, Marc La France).
-2956. Fix to build the mga driver with the driver SDK (#3128, David Bateman).
-2955. Xterm patch #113 (#3125, Thomas Dickey).
-2954. Port the XAA cfb copyplane functions, adding them to the cfb code
- (#3124, 3126, 3127, David Bateman).
-
-XFree86 3.9.15b (15 August 1999)
-2953. Improved point rendering performance for the MGA driver (#3123,
- Mark Vojkovich).
-2952. Xaw and xedit updates (#3122, Paulo Cesar Pereira de Andrade).
-2951. Remove the Latin2 Type1 fonts.
-2950. Change the RGB mask names in the DGA structures (#3120, Mark Vojkovich).
-2949. More acceleration and bug fixes for the NV driver (#3119,
- Jarno Paananen).
-2948. Change some things in the XAA color expansion code to facilitate
- rendering into DMA buffers (#3118, Mark Vojkovich).
-2947. Fix a 64 bit problem with the xf24_32bpp layer (#3117, Mark Vojkovich).
-2946. Modify XF86FlushInput() to work for non-tty devices, which is required
- for PS/2 mice with Linux 2.2.x kernels (#3114, Kazutaka Yokota).
-2945. Support for rotating the virtual desktop for the MGA driver using
- the shadowfb (#3113, 3116, Mark Vojkovich).
-2944. Fix a colormap problem with DGA when initialized from an 8+24 mode with
- the MGA driver (#3112, Mark Vojkovich).
-2943. Fix multihead on the MGA-2164W (#3111, Mark Vojkovich).
-2942. XAA speedups for planar copies in some cases (#3110, Mark Vojkovich).
-2941. Add a driver SDK which performs a similar function to the old LinkKit,
- but for the loadable server (#3105, David Bateman).
-2940. C&T doc update and xgamma man page update (#3105, David Bateman).
-2939. Add an option to the C&T driver to allow the user to select the
- transparency key when using the overlay (#3105, David Bateman).
-2938. Add DGA2 support to the C&T driver (#3105, David Bateman).
-2937. Fix a bug in the bitmap font code introduced in 3.9.15a (#3101,
- Juliusz Chroboczek).
-2936. Some TGA driver cleanups, including a SaveScreen function and code to
- disallow virtual desktops in a nicer way (#3100, Matt Grossman).
-
-XFree86 3.9.15a (1 August 1999)
-2935. Fix the RAC usage in the nv driver to allow multi-head to work
- (#3093, Itai Nahshon).
-2934. Reduce memory consumption of the bitmap font backends when using
- sparse fonts, which is important when using Unicode-encoded fonts
- (#3092, Juliusz Chroboczek).
-2933. Fix Option register initialisation in multi-head for MGA 2064/2164
- (#3089, Andrew Aitchison).
-2932. Convert the nv (NVIDIA) driver from 3.3.4 (#3078-3080, 3087,
- Jarno Paananen).
-2931. Add SuperProbe for NetBSD 1.4 wscons (#3083, Matthias Drochner).
-2930. Fix button and modifier key state problems in DGA (#3082,
- Mark Vojkovich).
-2929. Avoid a possible segmentation fault in "xsm" which, for example,
- occurs local hostname can't be resolved (#3073, Matthias Scheler).
-2928. ATI driver updates, including:
- - Add preliminary panel support.
- - Rework RAC interface.
- - PCI VGA's not on primary bus are now detected.
- - Fix bug when an adapter's VGA has been disabled.
- - Fix gamma support.
- (#3069, Marc La France)
-2927. Fix 8514/A pre-defined resource and pre-define VGA sparse I/O resources
- (#3069, 3081, Marc La France).
-2926. Fix a bug in the registration of background device BIOS'es (#3069,
- Marc La France).
-2925. Invert the meaning of ResMinimised bit into ResEstimated (#3069,
- Marc La France).
-2924. Allow drivers to print resource lists, and allow them to enable/disable
- adapters before creating bus slots for them (#3069, Marc La France).
-2923. Resync SuperProbe and scanpci with 3.3.x (#3069, Marc La France).
-2922. Add some missing man pages for the DGA and VidMode extensions (#3064,
- Joe Moss).
-2921. Some changes to the DGA and colormap layers to allow gamma changes
- during DGA mode (#3060, Mark Vojkovich).
-2920. Fix XIM segv error (#3033, 3051, Manabe Takashi).
-2919. Add a client state callback to the DGA extension so that the server side
- can be cleaned up when a DGA client exits (#3048, 3049, Mark Vojkovich).
-2918. Update the FreeBSD/mouse documentation (#3047, Kazutaka Yokota).
-2917. Fix an undocumented blitter constraint on the G200 (#3046,
- Mark Vojkovich).
-2916. Fix the MGA driver so that it can support changing depth on the fly
- in DGA mode. All depths are now offered to DGA clients regardless of
- what the screen's main depth is (#3045, Mark Vojkovich).
-2915. Fix a bug in the InstallGenManPageLong() rule in lynx.cf (#3043,
- Thomas Mueller).
-2914. Update ATI doc with info about a VGA/RAC problem (#3044,
- Andrew Aitchison).
-
-XFree86 3.9.15 (19 July 1999)
-2913. -
-2912. Fix a problem with the library spec in xgc/Imakefile (#3042,
- Thomas Mueller).
-2911. Add native 69030 support to the C&T driver (#3041, David Bateman).
-2910. Update release notes for the apm driver (#3040, Loic Grenie).
-2909. Fix a small bug in the color expands in the TGA driver (#3039,
- Matt Grossman).
-2908. Updates for the Japanese (PC98) docs (#3038, Takaaki Nomura).
-2907. Some Xaw and xedit updates (#3037, Paulo Cesar Pereira de Andrade).
-2906. Fix a problem with the VidMode extension (#3036, David Bateman).
-2905. Sample config file for Japanese PC98 architecture (#3035,
- Takaaki Nomura).
-
-XFree86 3.9Py (18 July 1999)
-2904. Add a visualClass to the XDGAMode request and a XDGACreateColormap
- request to DGA 2.0 so Colormaps can be created for XDGADevices
- without needing a corresponding visual (#3032, Mark Vojkovich).
-2903. Update the mmap versions of xf86ReadBIOS() to use a map size that
- fits the requested BIOS offset and length rather than using a fixed
- map size (David Dawes).
-2902. Xterm patch #112 (#3031, Thomas Dickey).
-2901. Change the colormap layer's LoadPalette function to take a Visual as
- an argument rather than just the Visual class (#3030, Mark Vojkovich).
-2900. Add some code to auto-detect Japanese PC98 systems (#3029,
- Takaaki Nomura).
-2899. Fix a casting problem in DefineSelf() that shows up on FreeBSD/alpha
- (#3028, Doug Rabson).
-2898. Fix a problem with the GMX2000 DRI support (#3034, Jens Owen).
-2897. Work around a problem in mfb that is caused by an optimiser bug
- in egcs-1.1.2 for the alpha (#3027, Doug Rabson).
-2896. Fix a problem that shows up in the s3virge driver after the recent
- vgahw module changes (David Dawes).
-2895. Add missing references to xf86MiscExt.c in common/Imakefile (#3025,
- Joe Moss).
-2894. Update for the apm driver so that it will work on a Japanese PC-98
- with GA-RUSH6/PCI(VoodooRUSH based video card) (#3024, Isao Ohishi).
-2893. ISO 10646-1 Japanese font (12x13ja.bdf) that covers a superset of
- CP1252 and JIS X 208, and which is suitable to be used together with
- 6x13 for bi-width Japanese text output (#3022, Markus Kuhn).
-2892. Refine the MouseMan+ (PS2++) protocol support (#3020, Kazutaka Yokota).
-2891. Fix problems with the wheels on some mice, including the OEM version of
- the Logitech FirstMouse+, are not recognized and the mouse cursor jumps
- around (#3020, Kazutaka Yokota).
-2890. Fix a problem building the X-TT modules on Solaris 7 (based on #3019,
- David Holland).
-2889. Fix a bug in Xaw/TextAction.c introduced in 3.9Pw (#3018,
- Paulo Cesar Pereira de Andrade).
-2888. ISO 10646-1 version of the 5x7 and 6x13B fonts, and an update for the
- 6x13 font (#3017, Markus Kuhn).
-2887. First part of the ansification of xc/lib/fonts. So far the bitmap,
- fc and fontfile directories have been done (#3016, Matthieu Herrb).
-2886. Fix default PC98 XKB setting (#3015, Akio Morita).
-2885. Remove the reference to VGADriverDoc in xfree86/Imakefile (#3015,
- Takaaki Nomura).
-2884. Fix a bug in Xaw/TextPop.c (#3014, Paulo Cesar Pereira de Andrade).
-2883. Man page update for xfontsel (#3013, Paulo Cesar Pereira de Andrade).
-
-XFree86 3.9Px (12 July 1999)
-2882. Updates to get XF86Setup to build again after the NewInput-related
- changes, and have XF86Setup print a short message stating that it
- isn't usable before exiting (#3012, Joe Moss).
-2881. Fix some compiler warnings in lib/Xext (#3011, Matt Grossman).
-2880. Fix a bug in the wacom driver that shows up when multiple wacom devices
- don't report the same valuators (#3010, Frederic Lepied).
-2879. Some updates to the PCI/RAC code (#3008, Egbert Eich).
-2878. Fix the acute and apostrophe mixup in the German xkb layout with the
- nodeadkey option, and add the EuroSign to AltGr+e (#3006, Markus Kuhn).
-2877. Add code to the mga driver to handle PC98 architecture machines
- (#3007, Takaaki Nomura).
-2876. Add a global (ServerFlags) "PC98" Option for the Japanese PC98
- architecture, and add a function xf86IsPc98() that drivers can call
- to check for this.
-2875. Fix a relocation problem in the ELF loader that shows up on 64-bit
- platforms when mapping unresolved symbols to LoaderDefaultFunc()
- (#3005, Doug Rabson).
-2874. Remove the original text version of the DESIGN doc from hw/xfree86.
-2873. Fix a glyph padding problem in XAA's nonTE text code that shows up on
- 64-bit platforms (Doug Rabson).
-2872. Rework the wacom driver's init phase (#3004, Frederic Lepied).
-2871. Add a 19200 speed option to the wacom driver for Airbrush tablets
- (#3004, Frederic Lepied).
-2870. Add support for transparent stipples to the tga driver (#3003,
- Matt Grossman).
-2869. Modify xfontsel to not show scaled fonts by default (#3002,
- Paulo Cesar Pereira de Andrade).
-2868. Some notes about xterm for the release notes (#3001, Thomas Dickey).
-2867. Some Xaw, Xmu and xedit updates (#2999, 3002,
- Paulo Cesar Pereira de Andrade).
-2866. Xterm patch #111 (#2998, Thomas Dickey).
-2865. Fix a "NoAccel" problem with the PM2 video support (#2997,
- Michael Schimek).
-2864. Update for lynx.cf (#2995, Thomas Mueller).
-2863. Fix a LynxOS macro clash with the cirrus driver, and fix a
- xf86UnmapVidMem() warning in the cirrus driver (#2995, Thomas Mueller).
-2862. Fix a problem on LynxOS where assert is unresolved in the static server
- (#2995, Thomas Mueller).
-2861. Fix a problme with vsnprintf being unresolved when building Xvfb
- and Xnest on some platforms (#2995, Thomas Mueller).
-2860. Remove the s3virge fifo_ changes introduced in 3.9Pu, update the
- DGA2 support and docs (#2994, Kevin Brosius).
-2859. Initial attempt to get the XFree86-Misc again (#2993, Joe Moss).
-2858. Remove XAASync() (#2992, Rik Faith).
-2857. Cleanup the TGA driver's hw cursor code, remove global variables in
- in the "accel" files, and fix up the RAC support (#2991, Matt Grossman).
-2856. Add partial support for color expands to the 8-bit TGA driver (#2991,
- Matt Grossman).
-2855. Re-enable DDC2 support in the MGA driver (#2989, Andrew Aitchison).
-2854. Add missing TIOC defines for Interactive Unix to xf86_OSlib.h (#2990,
- Michael Rohleder).
-2853. Don't register the Xqueue mouse handler for Interactive Unix (#2990,
- Michael Rohleder).
-2852. Don't include sys/mman.h in cidchar.c when USE_MMAP isn't defined
- (#2990, Michael Rohleder).
-2851. Disable BuildXF86DRI and BuildXF86DRIDriverSupport for Interactive Unix
- (#2990, Michael Rohleder).
-2851. Update the apm (Alliance ProMotion) driver (#2987, 2988, Loic Grenie).
-2850. Fix a problem with the xf86config screen configuration that was
- introduced with the removal of "32bpp" (#2986, Matthieu Herrb).
-2849. Add a DefaultDepth configuration page to xf86config (#2986,
- Matthieu Herrb).
-2848. Add the inputDevice examples from XF86Config.eg to config files
- generated by xf86config (#2986, Matthieu Herrb).
-2847. Modify the vgahw module to allow it to save/restore more than the
- standard number VGA CRTC, Sequencer, Graphics and Attribute registers
- (2985, 2996, Jeff Garzik).
-2846. Add DDC information to the release notes (#2984, Andrew Aitchison).
-2845. Change XDGAChangePixmapMode to return the X-Y position of the pixmap
- in case the server is not able to place it exactly where requested
- (#2983, Mark Vojkovich).
-2844. Fix some problems with unfavorable alignment of XAA offscreen pixmap
- (#2982, Mark Vojkovich).
-2843. Some XAA speedups for NonTE text in certain cases (#2981,
- Mark Vojkovich).
-2842. Rename the assembler files that need preprocessing from .s to .S,
- and adjust the imake rules accordingly.
-2841. A fix for xf86PciReadBios() (#2979, Egbert Eich).
-2840. Fix a problem with false detection of multi-function PCI devices (#2978,
- Loic Grenie).
-2839. Fix a problem with libXfont.a not being linked into exports/lib during
- the build phase (#2977, Thomas Mueller, 2990, Michael Rohleder).
-2838. Deal with OSes which don't have TIOCM ioctls in posix_tty.c (#2976,
- Thomas Mueller).
-2837. Fix the use of TIOCM_ in some calls to xf86SerialModem..() in mouse/pnp.c
- (#2976, Thomas Mueller).
-2836. Enable NEW_INPUT on LynxOS (#2976, Thomas Mueller).
-
-XFree86 3.9Pw (6 July 1999)
-2835. Fix for GetBlock() (#2974, Egbert Eich).
-2834. Remove the test for SHAREDIOCLASS when creating a pciAccessInfoRec for
- a device (#2974, Egbert Eich).
-2833. Modified BIOS ROM handling, doing validation only on demand (#2974,
- Egbert Eich).
-2832. Add a ChangeGamma function to the ScrnInfoRec, which allows drivers to
- optionally provide a function to do this instead of the default one
- provided by the colormap layer (#2972, Mark Vojkovich).
-2831. Sis driver memclock fixes (#2971, Bart Oldeman, Juanjo Santamarta).
-2830. Add snprintf() and vsnprintf() to libc emulation (#2970, Marc La France).
-2829. Increase array size in PciInfo data (#2970, Marc La France).
-2828. Add a LoaderRefSymbols() function (#2970, Marc La France).
-2827. When matching fixed clocks, prefer non-CLKDIV2 modes over CLKDIV2 modes
- (#2970, Marc La France).
-2826. Reinstate xf86GetPciConfigInfo() and some warning fixes (#2970,
- Marc La France).
-2825. Build libXext and libX11 client-side libraries when also building
- GLX, despite BuildServersOnly (#2970, Marc La France).
-2824. Update ATI doc (#2970, Marc La France).
-2823. ATI driver from 3.3.3.1 (rac interface is preliminary, no LCD panel
- or Rage 128 support yet) (#2970, Marc La France).
-2822. Fix Ukrainian_GHE_with_upturn double definition error (#2969,
- Peter Novodvorsky).
-2822. Updates to the xf86config utility for the 4.0 config file format
- (#2968, Matthieu Herrb).
-2821. Add default rules to allow easy compilation of .c files to assembler.
-
-XFree86 3.9Pv (4 July 1999)
-2820. Add a marked up (SGML) version of the DESIGN doc (David Dawes).
-2819. Remove the Alpha-specific Linux libc6 parts in linux.cf.
-2818. Add a "defs.ent" file for defining SGML entities that can be shared by
- other docs (David Dawes).
-2817. Import the mouse.sgml doc from 3.3.x, and update it for 4.0.
-2816. Remove support for the very old LinuxDoc tools.
-2815. Use SpecialCObjectRule() in favour of SpecialObjectRule().
-2814. Fix lots of 64-bit problems in XAA (#2967, Mark Vojkovich).
-2813. Add a new DGA request to allow switching the DGA pixmap from one the
- size of the framebuffer to one the size of the viewport that you
- can move around (#2966, Mark Vojkovich).
-2812. Make sure that all Xinerama heads have the same root window depth,
- and don't advertise backing store or save unders as being available
- unless it's available on all heads (#2965, Mark Vojkovich).
-2811. Some Xaw and xedit updates (#2964, Paulo Cesar Pereira de Andrade).
-2810. Some DRI updates (#2962, Rik Faith).
-2809. Fix a double-free problem in the mouse driver (#2959, Egbert Eich).
-2808. Add some debugging code to xalloc.c to detect and allow trapping of
- double xfree() calls (#2954, Egbert Eich).
-2807. Add Single GLINT MX support for Direct Rendering, which now allows
- ELSA Gloria XXL to take part in this (#2592, 2955, 2957, 2958,
- Alan Hourihane and #2960, Rik Faith).
-2806. Add ScanlineCPU function to the glint driver for PM2 when pci
- retries aren't used (#2952, Alan Hourihane).
-2805. Use mediumraw keyboard mode for LinuxPPC (#2946, Gerd Knorr).
-2804. Xterm patch #110 (#2943, Thomas Dickey).
-2803. Add CyberBlade/i7 (Socket 7), CyberBlade/i7 DSTN (Laptop Socket 7) and
- CyberBlade/i1 (Slot 1) support to the trident driver (#2940,
- Alan Hourihane).
-2802. Some new PCI ids for Cyberblades and Via MVP4 (#2939, Alan Hourihane).
-2801. Replace `__volatile__' in xf86drm.h with `volatile' (#2938,
- Takaaki Nomura).
-2800. Fix a problem with the umask not being reset in some cases in the
- xtrans code (#2936, Bill Nottingham).
-2799. Improve the latency associated with writing to the PCI config space,
- which is important for RAC to work efficiently (Egbert Eich).
-
-XFree86 3.9Pu (27 June 1999)
-2798. Xterm patch #109 (#2920, Thomas Dickey).
-2797. Xaw and xedit updates (#2932, 2933, Paulo Cesar Pereira de Andrade).
-2796. Make the "fifo_conservative" memory settings default for the s3virge
- accelerator (#2931, Kevin Brosius).
-2795. Preliminary DGA2 code for the s3virge driver (#2931, Kevin Brosius).
-2794. Updates to PI's DRI sample implementation, including:
- - Dynamic loading of the OpenGL client driver is implemented
- - 3D client death while holding the drawable lock does not cause deadlock
- - The kernel module works with Linux 2.2.x [x <= 10] and 2.3.y [y <= 8]
- - A better authentication mechanism has been implemented
- - XF86Config options for the DRI are supported
- (#2929, Precision Insight).
-2793. Add functions to the FBManager to query the largest size available and
- to purge all areas that aren't nailed down (#2928, Mark Vojkovich).
-2792. Fix some serious performance problems with Xinerama when the number
- of resource IDs becomes large (#2927, Carsten Haitzler).
-2791. Remove the significant RGB bits check from Xinerama visual eliminations
- (#2926, Mark Vojkovich).
-2790. Fix a typo in xmodmap and xstdcmap (#2924, Matthieu Herrb).
-2789. Fix the type of the OverclockMem Option in the MGA driver (#2922,
- Andrew Aitchison).
-2788. Fix PCI resource handling problems that were showing up with the
- glint driver (#2918, Egbert Eich).
-2787. Fix a problem building some Makefiles when JoystickSupport is enabled
- (#2917, Todd Fries).
-2786. Fix a typo in the RAC support for the glint driver (#2915, Jens Owen).
-2785. Fix a RAC-related build problem on 64-bit machines (#2913,
- Matt Grossman).
-2784. Some afb-related updates (#2911, Sven Luther).
-2783. Fix race condition in xinit (Nate Eldredge, Mark Montague).
-2782. Documentation for the new RAC code (Egbert Eich).
-2781. Fix some problems with the glide driver that can result in server crashes
- if there is a problem when it is starting up (David Dawes).
-2780. Install the X server signal handlers before xf86OpenConsole is first
- called. This makes sure that the VT is returned to text mode if the
- server crashes in the early stages of InitOutput() (David Dawes).
-2779. Fix xf86vsprintf() and xf86vfprintf().
-2778. Support for the different PLL reference clock used for HP's on-board
- G200s.
-2777. Disable building the Xanti extension (Mark Vojkovich).
-2776. Update the log file handling to catch most messages that are generated
- before the log file is actually opened (David Dawes).
-2775. Another fix for PM2 text restoration (Egbert Eich).
-
-XFree86 3.9Pt (20 June 1999)
-2774. First cut at converting the fbdev, sis, glide, neomagic and rendition
- drivers for the new RAC code (David Dawes).
-2773. Fix a PM2 lockup problem during GLINTSave, and fix a text mode font
- corruption problem (#2907, Egbert Eich).
-2772. Xterm patch #108 (#2906, Thomas Dickey).
-2771. Fix a problem with duplicate ShmCompletion events in Xinerama mode
- (#2905, Mark Vojkovich).
-2770. Add a XDGAKeyEventToXKeyEvent helper function to the DGA client library
- (#2904, Mark Vojkovich).
-2769. Fix some incorrect XAA GC validation checks (#2903, Mark Vojkovich).
-2768. Fix some XAA caching problems with shared memory pixmaps (#2903,
- Mark Vojkovich).
-2767. Wait for the fifo to clear out in the mga driver before returning to
- the client after any cpu->screen color expansion or image writes (#2901,
- Mark Vojkovich).
-2766. Don't use the BIOS info for the MGA G400 since we don't understand
- the format (#2901, Mark Vojkovich).
-2765. Fix some MGA bitblit problems when more than 16MB of memory is being
- used (#2901, Mark Vojkovich).
-2764. Set memory clocks to the bios defaults in the MGA driver, and add an
- Option "OverclockMem" to allow the previous settings to be used (#2901,
- Mark Vojkovich).
-2763. Xaw and xedit updates (see lib/Xaw/Changelog) (#2899,
- Paulo Cesar Pereira de Andrade).
-2762. Ansification and warning elimination in lib/xtrans (#2896,
- Matthieu Herrb).
-2761. Fix a glint scanline interleave bug introduced by the change in
- device scaning order in the new RAC code (#2890, Jens Owen).
-2760. Fix a dual head Xinerama crash that happens when running the xv program
- (#2889, Itai Nahshon).
-2759. Add v4l Xv support to the trident driver (#2877, Alan Hourihane).
-2758. Trident Image series and standard chipset acceleration fixes (#2877,
- Alan Hourihane).
-2757. Add more Blade3D acceleration to the trident driver (#2877,
- Alan Hourihane).
-2756. Fix for DPMS with the new RAC (Itai Nahshon).
-2755. RAC updates, including changing the way PCI resource validation works
- (Egbert Eich).
-2754. Update the TGA driver for the new RAC (#2886, Matt Grossman).
-2753. Fix a fatal event problem with DGA 2.0 (#2884, Mark Vojkovich).
-2752. Fix some macros in xf86str.h that conflict with system headers on some
- platforms (#2883, 2888, 2902, Matt Grossman).
-
-XFree86 3.9Ps (14 June 1999)
-2751. Some small RAC updates (Egbert Eich).
-2750. Direct Rendering Infrastructure from Precision Insight (#2871).
-2749. Fix a problem building xedit on SVR4.0 (missing strcasecmp).
-
-XFree86 3.9Pr (13 June 1999)
-2748. Xterm patch #107 (#2879, Thomas Dickey).
-2747. Cirrus driver updates, including support for generic (V4L) video
- adapters, fix depth 15 mode for the laguna chips and turn of the DAC
- when blanking the screen (#2878, Itai Nahshon).
-2746. Fix problems with the build of the 6.1-compatible Xaw shared library,
- and some optimizations and bug fixes for the Xaw and xedit (#2877,
- Paulo Cesar Pereira de Andrade).
-2745. Add functions (CreateFontRec and DestroyFontRec) for allocating and
- freeing FontRecs rather than having the size encoded in all of the
- renderer modules. Also, change the font private index handling to
- make all indices show up in all FontRecs (#2873, Mark Vojkovich).
-2744. Add ANSI prototypes for lib/XIE (#2870, Thomas Dickey).
-2743. Some preliminary work on adding afb support to the fbdev driver (#2869,
- Sven Luther).
-2742. Change the semantics of xf86ReadPciBIOS() to allow it to temporarily
- map an unmapped BIOS at the address assigned to another of the card's
- base address registers, and modify the MGA driver to make use of this
- (David Dawes).
-2741. Add some functions to the common layer to allow drivers to register
- input handling functions, and modify the pm2_video code to make use of
- this instead of the XInput code (David Dawes).
-2740. Trap for packed 24bpp on systems with 64-bit scanlines.
-2739. Fix the type of the "set_mckl" option in the s3virge driver (#2865,
- Harald Koenig).
-2738. Fix some s3virge palette problems in 8bpp mode (#2863, Harald Koenig).
-2737. Avoid clobbering CR55 in the s3virge HW cursor code (#2862,
- Harald Koenig).
-2736. Xterm patch #106 (#2861, Thomas Dickey).
-2735. Fix an incorrect test in I2CWriteBytes() in the i2c module (#2875,
- Ben Cahill).
-2734. Don't set YDSTORG for the non-WRAM Matrox cards (#2874, Mark Vojkovich).
-2733. Change the order of text-mode font restoration in the vgahw module
- (#2872).
-2732. XInput driver for Dynapro touch screens (#2859, 2860, 2867,
- David Woodhouse).
-2731. Enable support for extended PS/2 protocols on Solaris/x86 (#2857,
- Nicholas Brealey).
-2730. Fix the ZAxisMapping handling in the mouse driver (#2857,
- Nicholas Brealey).
-2729. Add a sixth valuator to the wacom driver to support the wheel of
- the airbrush and of the lens cursor (Frederic Lepied).
-2728. Convert the wacom driver to work with the new input code
- (Frederic Lepied).
-2727. Increase the MAXSCREENS value from 4 to 16 (Egbert Eich).
-2726. Add support to scanpci for printing out PCI-PCI bridge header
- information correctly (Egbert Eich).
-2725. New RAC (Resource Access Control) code (Egbert Eich).
-2724. Update the Solaris/x86 version of xf86ReadBIOS() to handle BIOSs located
- at high physical addresses (David Dawes).
-2723. An attempt at allowing the server to correct the /tmp/.X11-unix
- directory when it is possible to do so safely (David Dawes).
-2722. Re-enable screen->screen blts for the Trident Image3D, and fix a problem
- with mapping/unmapping memory with VT switching (David Dawes).
-2721. Fix a problem linking with libXfont when building the shared version
- is disabled (David Dawes).
-2720. Fix an Xlib problem introduced in 3.9Pq that shows up when X_LOCALE
- is defined (David Dawes).
-
-XFree86 3.9Pq (6 June 1999)
-2719. Change the parser's error message printing so that they will end
- up in the log file (David Dawes).
-2718. Add support for armscii-8, ibm-cp1133, mulelao-1, viscii1.1-1,
- tcvn-5712, georgian-academy, georgian-ps (not all complete yet)
- (#2843, Pablo Saratxaga).
-2717. Some fixes for the v4l driver that make it keep track of the video
- state correctly (#2854, Gerd Knorr).
-2716. Xterm patch #105 (#2853, Thomas Dickey).
-2715. Add defines to the Xaw code to make it possible to build a version
- of the shared library that is binary compatible with the standard 6.1
- version (#2849, Paulo Cesar Pereira de Andrade).
-2714. Xedit updates (see the Xaw Changelog for details) (#2849,
- Paulo Cesar Pereira de Andrade).
-2713. Bump the Xaw library major version (now 7.0), and enable the Xpm
- dependency by default (#2849, Paulo Cesar Pereira de Andrade).
-2712. Fix an Xmu build warning (#2849, Paulo Cesar Pereira de Andrade).
-2711. Some updates to the XAnti extension (#2851, 2852, Mark Vojkovich).
-2710. Update the scanline width choices used in the MGA driver to better
- match the capabilities of the different chips (#2850, Mark Vojkovich).
-2709. Add G400 support to the MGA driver (#2850, Mark Vojkovich).
-2708. Resync SuperProbe with 3.3.3.1e, and add ATI Rage XL & XC detection
- (#2847, Marc La France).
-2707. Fix for drivers/v4l/README (#2846, David Woodhouse).
-2706. Fixes for the big5.eten-0 and gb2312.1980-0 encoding files (#2840, 2841,
- 2846, Juliusz Chroboczek).
-2705. Use 8-bit I/O instead of 16-bit I/O in xf4bpp (better for older
- adapters), and some cleanups (#2838, Marc La France).
-2704. Fix RGB "masks" for depth <=8, and fix the formatting of the "Clocks"
- messages (#2838, Marc La France).
-2703. Remove assumption that PCI systems contain PCI video (#2838,
- Marc La France).
-2702. Add missing parsing of the ZAxisMapping option to the revised mouse
- driver (David Dawes).
-2701. Add a simple verification check for core-capable input devices
- (David Dawes).
-2700. Update the serial PnP mouse support for the revised mouse driver
- (David Dawes).
-
-XFree86 3.9Pp (30 May 1999)
-2699. Xterm patch #104 (#2836, Thomas Dickey).
-2698. Doc updates for the s3virge driver, and cleanup register debugging
- printouts (#2835, Kevin Brosius).
-2697. Rework the config file search algorithm, and allow "safe" relative
- paths to be specified by non-root users (David Dawes).
-2696. Close input devices while VT switched away (David Dawes).
-2695. Prevent the input device "PreInit" from being called in subsequent
- server generations (David Dawes).
-2694. Handle the Keyboard config information as an InputDevice section
- (but the keyboard driver isn't converted yet) (David Dawes).
-2693. Add basic accessEnable calls to the Tseng driver so that it will at
- least work single head with an ET6000 (David Dawes).
-2692. Fix Xinerama bugs related to the Shape extension (#2832, Mark Vojkovich).
-2691. Separate the pitch and virtual X increments (#2829, Marc La France).
-2690. Add some large encoding files for the `fontenc' layer (#2827,
- Juliusz Chroboczek).
-2689. A rewrite of the way Xinerama handles visuals (#2824, Mark Vojkovich).
-2688. Integrate the pointer acceleration patch from Kevin Brown (#2823,
- Frederic Lepied).
-2687. Make button mapping work for XInput "AlwaysCore" devices (#2823,
- Frederic Lepied).
-2686. Fix xtest failure with SiS TwoPointLine (#2821, Juanjo Santamarta).
-2685. Xlib support for KOI8-U (#2820, Aleksey Novodvorsky).
-2684. Fix a problems with the new mouse code looping by adding CLOCAL to
- the standard termios flags for xf86OpenSerial() (#2819, Matthieu Herrb).
-2683. New font document (#2818, Juliusz Chroboczek).
-2682. Fix the reworked "wsmouse" code for NetBSD (#2815, Matthieu Herrb).
-2681. Fix for `resize' on OpenBSD (#2814, Matthieu Herrb).
-2680. Add the `s' flag to ArCmd and ArAddCmd for SVR4 so that empty archives
- can be created (#2813, Nicholas Brealey).
-
-XFree86 3.9Po (23 May 1999)
-2679. Enable the new input code (NewInput) by default in xfree86.cf
- (David Dawes).
-2678. Add compatibilty support for interpreting "Pointer" sections as
- "InputDevice" sections in the reworked input device code (David Dawes).
-2677. Modify mkfontdir to handle duplicate encodings in a reasonable way
- when generating the encodings.dir file (#2812, Juliusz Chroboczek).
-2676. Xaw and xedit updates (see lib/Xaw/Changelog for details) (#2811,
- Paulo Cesar Pereira de Andrade).
-2675. Fix xinerama problems with clipmasks and stipple/tile offsets
- in GCs used on the root window (#2810, Mark Vojkovich).
-2674. Fix problems uploading to the pixmap cache in 8+32 mode when
- ImageWrites aren't available (#2809, Mark Vojkovich).
-2673. Ansify the Xv client library (#2808, Mark Vojkovich).
-2672. Add a XvQueryPortAttributes request to the Xv API/protocol and
- driver interface, with an example in the v4l driver, and update the
- documentation (#2808, Mark Vojkovich).
-2671. Fix some compiler warnings in the oldX and ICE libraries (#2807,
- Matt Grossman).
-2670. Fix a problem with the Type1 font handling that was introduced when the
- CID support was added (#2805, Ivan Bach).
-2669. Wacom driver update, including a fix for initialization problems with
- Wacom IV devices, and improved Wacom V device support (Lens cursor
- support) (#2803, Frederic Lepied).
-2668. Fix for some 8+32 xinerama problems (#2802, Mark Vojkovich).
-2667. Xkb fixes for PC98 (#2800, Akio Morita).
-2666. Xkb data files for a Macintosh keyboard (#2798, Sven LUTHER).
-2665. Some preliminary support for the "new" mouse driver for most OSs
- (David Dawes).
-2664. Prevent xf86LogInit() being called for subsequent server generations.
-
-XFree86 3.9Pn (16 May 1999)
-2663. Add a SetClientVersion request to the DGA extension (David Dawes).
-2662. Change DGA initialisation ordering in the MGA driver (#2796,
- Mark Vojkovich).
-2661. Turn off DGA pixmaps in xinerama since it insists on duplicating
- the rendering protocol on all heads despite the DGA pixmaps existing
- only on a single head (#2795, Mark Vojkovich).
-2660. Fix some xinerama problems with 8+32 overlays (#2795, Mark Vojkovich).
-2659. Add XAA acceleration for DGA pixmaps (#2795, Mark Vojkovich).
-2658. Add PCI IDs for new NVIDIA chipsets (#2794, Mark Vojkovich).
-2657. Change the default cursor colour in the app-defaults for editres
- (#2793, Paulo Cesar Pereira de Andrade).
-2656. Xedit updates, including a new Xedit-color.ad file, to show some of
- the new features of Xaw, and some improvements to the ispell interface
- (#2793, Paulo Cesar Pereira de Andrade).
-2655. Xaw updates, including some fixes, optimizations, and additional
- documentation (#2793, Paulo Cesar Pereira de Andrade).
-2654. Working mouse support with the new input device code (David Dawes).
-2653. Fix for sysv_video.c on Interactive UNIX (#2792, Michael Rohleder).
-2652. Fix handling of xkbcomp's -I flag (Stanislav Meduna).
-2651. CID updates (third submission) (#2769, Ivan Bach, SGI).
-2650. Kludge to allow a server with the glint driver to link without XInput
- (#2788, Marc La France).
-2649. Remove unused dacSpeeds field from the ScrnInfoRec (#2788,
- Marc La France).
-2648. Add an option to the colourmap code to allow a driver's LoadPalette()
- to be called even when switched out (#2788, Marc La France).
-2647. Add more reasons for rejecting a mode (#2788, Marc La France).
-2646. Factor in the log verbosity when reporting the verbosity to a driver
- (#2788, Marc La France).
-2645. Allow xf86GetClocks() to be called with NULL ProtectRegs() and
- BlankScreen() functions (#2788, Marc La France).
-2644. When deleting a screen, also free its mode lists and options (#2788,
- Marc La France).
-2643. Allow a driver to determine if -probeonly was specified (#2788,
- Marc La France).
-2642. Fix a large jump in changelog numbering that happened a little while
- ago (#2788, Marc La France).
-2641. Various warning and include fixes (#2788, Marc La France).
-2640. Xterm patch #103 (#2786, Thomas Dickey).
-2639. SiS driver updates, including fixing the SetMClk option, change solid
- lines from bresenham to two-point, correct a clippling bug, and change
- the verbose level of some messages (#2784, 2785, Juanjo Santamarta).
-2638. Fix a server loop that can happen when VT switching while a grab is
- in progress (#2782, Edward Wang).
-2637. Xterm patch #102 (#2778, Thomas Dickey).
-2636. Fix some spelling errors in Xlib.h (#2775, Itai Nahshon).
-2635. Add auto-detection of Debian to imake (#2774, Sven Luther).
-2634. SiS driver updates, including turning on solid line acceleration,
- remove GXCOPY_ONLY for Mono8x8 patterns, change mmio pointers to
- volatile to avoid optimization problems, use xaarop.h, fix offscreen
- memory init to avoid exceeding the accelerator's address range
- (#2772, Alan Hourihane).
-2633. Fix build problems with the v4l driver on some systems (based on #2771,
- Gerd Knorr, and a suggestion from David Woodhouse).
-2632. Xterm patch #101 (#2770, Thomas Dickey).
-2631. Fix some more Xinerarma bugs (#2766, 2768, Mark Vojkovich).
-2630. Fix the use of va_lists in the logging code (David Dawes).
-
-XFree86 3.9Pm (9 May 1999)
-2629. Clean up the handling of Alphas in the s3virge driver (#2767,
- Matt Grossman).
-2628. Fix a problem that can show up when a module is unloaded while another
- module has unaccounted for references to its symbols (Egbert Eich).
-2627. -
-2626. Finish DGA event support (#2765, Mark Vojkovich).
-2625. Xaw updates (including compatibility updates and a man page), xedit
- and editres updates (#2764, Paulo Cesar Pereira de Andrade).
-2624. Disable MIT-SHM in Xnest since it doesn't work (#2763, Wolfram Gloger).
-2623. Add hw clipping for the SiS 6326, and solid lines (disabled) (#2760,
- Juanjo Santamarta).
-2622. Cirrus driver updates (#2759, Itai Nahshon).
-2621. Fix complier warnings in lib/X11 (#2758, Matt Grossman).
-2620. Fix complier warnings in lib/Xau (#2757, Matt Grossman).
-2619. Update some of the font encoding translation files (#2756,
- Juliusz Chroboczek).
-2618. Fix some bugs in the font encoding support (#2756, Juliusz Chroboczek).
-2617. Update the Arabic24 BDF font to version 1.3 (#2754, Mark Leisher).
-2616. Xterm patch #100 (#2753, Thomas Dickey).
-2615. A start at the unification of input devices (David Dawes).
-2614. Change the MGA ImageWrite code to not use the image transfer window
- for simple cpu->framebuffer copies (#2738, Mark Vojkovich).
-2613. Add lseek and bsearch to the libc wrappers (and fix fseek), as needed
- by the CID font code.
-2612. Add missing file for CID fonts support, and fix a few module-related
- thing with it.
-
-XFree86 3.9Pl (3 May 1999)
-2611. Fix Xinerama bugs in GetImage and PolyRectangle (#2751, Mark Vojkovich).
-2610. Xterm patch #99 (#2750, Thomas Dickey).
-2609. Disable unneccessary C&T message (#2748, Nozomi Ytow).
-2608. Add some DGA event support (not working yet) (#2747, Mark Vojkovich).
-2607. Xaw and xedit updates including some compatibility updates and
- performance improvements (#2746, Paulo Cesar Pereira de Andrade).
-2606. Modify mkfontdir to create "encodings.dir" files (#2745,
- Juliusz Chroboczek).
-2605. Update the DESIGN doc for the new DGA driver interface (#2744,
- Mark Vojkovich).
-2604. Update the LynxOS vidmem code to use the new shared vidmem.c (#2743,
- Thomas Mueller).
-2603. -
-2602. Update TGA docs (#2737, Matt Grossman).
-2601. Fix a zero width problem that shows up in xaaSpans.c when hardware
- clipping is enabled (#2736, Alan Hourihane).
-2600. Add support for Adobe CID fonts (#2728, Ivan Bach, SGI).
-2599. Quick fix for cirrus driver problem introduced in 3.9Pk.
-2598. Fix a problem with pcitweak that was preventing it from working with
- buses other than bus 0 (David Dawes).
-2597. Update xfontsel to display appropriate glyphs for ISO10646 fonts
- (Mark Leisher).
-2596. Add support for building XF86Setup with ncurses on NetBSD and OpenBSD
- (#2734, Matthieu Herrb).
-2595. Fix vidmem map/unmap mismatch in the TGA driver (#2733, Matt Grossman).
-2594. A minor interlace improvement for the PM2 Xv driver (#2731,
- Michael Schimek).
-2593. Fix color expansion bug in the SiS driver (#2729, Juanjo Santamarta).
-2592. Major resync for OS/2 (#2727, 2732, 2735, Holger Veit).
-2591. Xterm patch #98 (#2726, 2730, Thomas Dickey).
-2590. Fix a build V4L driver build problem (#2725, David Woodhouse).
-2589. Xterm patch #97 (#2724, Thomas Dickey).
-2588. Move the VTInit and VTSysReq keywords from the Keyboard section to
- the ServerFlags section (as options) (David Dawes).
-2587. Remove the legacy ServerNumLock and "RightAlt", etc special key mapping
- support (David Dawes).
-2586. Add a new, more complete version of snprintf, vsnprintf for OSs that
- don't have it. This one is based on the "SIO" stdio-like package
- (David Dawes).
-2585. Add log file support, including separate log and stderr streams, and
- separate verbosity levels for each stream. Changed the -verbose option
- to accept an optional integer argument that specifies the verbosity
- level, add a -logverbose option and a root-only -logfile option
- (David Dawes).
-2584. Unify the "Overlay" options and "SetMclk" options, and remove the
- SetMClk Device section keyword (David Dawes).
-2583. Add a "frequency" option value type for use with options processed
- by xf86ProcessOptions(). This value type consists of a floating point
- number optionally followed by "Hz", "kHz" or "MHz" (David Dawes).
-
-XFree86 3.9Pk (25 April 1999)
-2582. Move the SVR4-specific handling of mapping memory areas which have
- read side-effects out of the drivers and into the os-support layer
- (David Dawes).
-2581. Fix unmap parameters for the SiS driver (David Dawes).
-2580. Fix unmap parameters for the glint driver (#2722, Alan Hourihane).
-2579. Fix the depth 24 visual initialisation (mask, offset) in the
- Rendition driver (#2720, Martin Cerveny).
-2578. Rework the use of inb/outb in the trident driver, replacing it with
- MMIO. Also, don't use the 0xBF000 range for the accelerator registers
- (#2719, Alan Hourihane).
-2577. Add a -screen option to the xgamma utility so that the gamma of each
- screen can be changed in Xinerama mode (#2717, Mark Vojkovich).
-2576. Fix all the known problems with the ispell support in xedit (#2716,
- Paulo Cesar Pereira de Andrade).
-2575. Xaw updates, including improved speed for FindPiece in AsciiSrc.c,
- add submenu support to the SimpleMenuWidget, add support for text
- justification to the TextWidget, add an overwrite mode to the
- TextWidget, make the TextWidget understand negative "multiply" values,
- add an indent action to the TextWidget, fix a bug in the undo code
- (#2716, 2721, Paulo Cesar Pereira de Andrade).
-2574. Pcitweak fix for LynxOS, and define NO_MMAP for pre 2.5.0 LynxOS
- releases (#2715, Thomas Mueller).
-2573. Fix for cirrus hardware cursor on (big endian) PowerPC platform
- (#2715, Thomas Mueller).
-2572. Experimental DDC support for the Matrox "G" series cards (#2713,
- Andrew Aitchison).
-2571. Fix a crash in the XAA fill code that happens when
- Mono8x8PatternFillFlags is set only to HARDWARE_PATTERN_PROGRAMMED_BITS,
- which affects the TGA driver (#2712, Matt Grossman).
-2570. Replace the default "fixed" (6x13) font with Markus Kuhn's ISO 10646-1
- version (#2711, Markus Kuhn).
-2569. Import Mark Leisher's ClearlyU BDF fonts (#2707, Mark Leisher).
-2568. Import Mark Leisher's Arabic24 BDF font (#2706, Mark Leisher).
-2567. Initial acceleration for the 24-plane TGA (#2710, Tim Rowley).
-2566. Fix clip bugs in the MGA driver (#2709, Mark Vojkovich).
-2565. Update the `xfsft' TrueType backend to version beta1.1.4. This includes
- updates to the `fontenc' interfaces (#2708, Juliusz Chroboczek).
-2564. Fix some #include problems with the rendition driver (#2704, Dejan Ilic).
-2563. Fix a syntax error in the `ru' symbols file (#2703, Peter Novodvorsky).
-2562. Update the xf86SetGamma and xf86SetDpi helpers to use DDC information
- when it is available, and update the MGA driver to make the DDC
- information available earlier in the PreInit phase (#2702,
- Andrew Aitchison).
-2561. Flesh out XF86Setup's config file read and write routines (#2701,
- Joe Moss).
-2560. Parser fixes (#2700, Joe Moss).
-2559. Remove the out of date references to the sparse map mem functions from
- the loader (#2699, Matt Grossman).
-2558. Color expansion for the SiS driver, and change the "NoTurboQueue" option
- to "TurboQueue" (#2696, Juanjo Santamarta).
-2557. Xterm patch #96, including improved logic for bold fonts, improved
- Unix98 PTY support, and modify initial-erase logic to ensure that the
- ttyModes resource overrides it (#2695, Thomas Dickey).
-2556. Some #include and warning fixes (#2693, Marc La France).
-2555. On an error, tell user to re-run the server >without< -quiet. This is
- generalized to allow the production of error messages to specify the
- minimum verbosity to be used before reporting a problem (#2693,
- Marc La France).
-2554. Make -depth 24 produce a more appropriate message when the driver
- doesn't support it (#2693, Marc La France).
-2553. Reinstate black & white colour options for 1bpp (#2693, Marc La France).
-2552. Fix a typo in XF86Conf.man (#2691, Itai Nahshon).
-2551. Fix the initialisation of some global flags when the config file has
- no ServerFlags section (David Dawes).
-
-XFree86 3.9Pj (18 April 1999)
-2550. Update SiS docs (#2690, Juanjo Santamarta).
-2549. Glide driver and documentation updates. Fix the "EXTERN_MODULE"
- usage, force the virtual size to be the display size, and add a
- GlideDevice Option to specify one of multiple cards (#2689,
- Henrik Harmsen).
-2548. Resync DPMS timeout code with the 3.3.x code, which fixes some problems
- (#2688, David Wragg).
-2547. Preliminary MTRR support for FreeBSD (3.2 and later) (David Dawes).
-2546. Separate the OS-independent and OS-dependent parts of the MapVidMem
- functions, and handle sparse mapping with a flag to MapVidMem instead
- of using a separate function (David Dawes).
-2545. Remove most LinkKit references.
-2544. Disable WC for the framebuffer for the Rendition V1K by default,
- because it appears to be causing lockups (Dejan Ilic).
-2543. Some fixes for the Rendition driver (Dejan Ilic).
-2542. Add HW cursor using the Bt485 ramdac to the DEC TGA driver (#2687,
- Matt Grossman).
-2541. More of the DGA 2.0 extension. Most of it is there now except for
- the events (#2686, Mark Vojkovich).
-2540. Imlement attributes for Audio (mute, volume) and implement
- QueryBestSize for the v4l driver (#2685, Gerd Knorr).
-2539. Fix hardware cursor code so that it works with the internal 64 bit
- scanlines used on Alpha platforms (#2679, Matt Grossman).
-2538. Export new DGA symbols from the loader (#2678, Alan Hourihane).
-2537. Update C&T driver to use independent clocks for FP/dual and CRT modes
- with HiQV chipsets (#2677, Egbert Eich).
-2536. Port of Precision Insight's NeoMagic driver to the new design
- (#2677, Egbert Eich).
-2535. Add a Linux kernel backbone to the Permedia 2 Xv driver (#2661+revisions,
- Michael Schimek).
-2534. Port of the rendition driver to the new design (#2674, Marc Langenbach).
-2533. Fix for the parser's printDeviceSection() function (#2673, Joe Moss).
-2532. Fix a bug in the handling of ZAxisMapping in the parser (#2672,
- Nicholas Brealey).
-2531. Enable mono 8x8 pattern fills for the SiS driver (#2670,
- Juanjo Santamarta).
-2530. Remove references to ru_SU in locale.alias (#2669, Aleksey Nowodworsky).
-2529. Fix a bug in xf86CollectOptions() that could cause a server crash.
-2528. Fix the problem causing the mouse acceleration to be done twice
- (#2671, Frederic Lepied).
-2527. Disable clipping in the trident driver for FillRectSolid because the
- driver gets passed zero values (#2681, Alan Hourihane).
-2526. Add Trident Blade3D support (#2681, Alan Hourihane).
-2525. Add Mono8x8 pattern for the Trident Image series (#2681, Alan Hourihane).
-2524. Fix trident screen glitches when mode switching (#2681, Alan Hourihane).
-2523. Some minor documentation-related cleanups. Doctools version 1.0.2 is
- now required to format the XFree86 docs.
-
-XFree86 3.9Pi (11 April 1999)
-2522. Fix a Linux/PPC loader relocation bug, and reenable building the
- loadable server by default for Linux/PPC (#2668, Gerd Knorr).
-2521. Fix a problem with non-terminated strings in the Xv library (#2665,
- Gerd Knorr).
-2520. Update the v4l driver -- fix open/close handling and add support for
- the XV_ENCODING attribute (#2665, Gerd Knorr).
-2519. Implement FBDevSaveScreen() (#2664, Gerd Knorr).
-2518. Enable shadowfb by default for the fbdev driver (#2664, Gerd Knorr).
-2517. Fix fbdev option handling (#2664, Gerd Knorr).
-2516. Fbdev documentation updates (#2664, Gerd Knorr).
-2515. Some more progress on the DGA 2.0 API/protocol (#2663, Mark Vojkovich).
-2514. Add ispell support to xedit (#2662, Paulo Cesar Pereira de Andrade).
-2513. Fix -DUSE_XPM handling in Xaw (#2662, Paulo Cesar Pereira de Andrade).
-2512. Some updates to the offscreen memory allocator and the i2c code
- (#2661, Michael Schimek).
-2711. Use the correct version of xf86Xinput.c (the wrong version was
- included in 3.9Ph) (Frederic Lepied).
-2710. Fix a pcitweak build problem on NetBSD (#2659, Isao Ohishi).
-2509. Add acceleration for the 8+16 mode of the C&T driver (#2658,
- David Bateman).
-2508. Add compatibility to the client-side of the VidMode extension so that
- it will work with 3.3.x servers (#2657, David Bateman).
-2507. Update 'ru' xkb symbols file (#2656, Aleksey Nowodworsky).
-2506. Add Trident 9525 ID to PCI info and trident driver (#2655,
- Alan Hourihane).
-2505. Cleanup some compiler warnings in mfb and mi (#2654, Alan Hourihane).
-2504. Added a glide driver. It currently only works with the loadable
- server (read the manpage before trying it) (#2653, Henrik Harmsen).
-2503. Update the Type1/latin2 fonts.* files to disable reencoding of the
- fonts while keeping the same XLFD names (#2652, Juliusz Chroboczek).
-2502. Fix some pcitweak build problems on Interactive UNIX (#2651,
- Michael Rohleder).
-2501. Xterm patch #95 (see xterm.log.html for details) (#2649, Thomas Dickey).
-2500. Fix typos in the VidMode extension that causes a protocol problem
- (#2648, 2657, David Bateman).
-2499. Reorder the visuals to put TrueColor before DirectColor so that broken
- clients (like Wabi) that assume the default visual is the first visual
- will work (2647, David Woodhouse).
-2498. Fix a problem with the ThinkingMousePS/2 protocol handling of left
- movement (#2392, Ian Remmler).
-2497. Fix an ISO8859-5 support bug in Xlib (Nikolai Saoukh).
-2496. Rework the GlxInitVisuals hooks with a more general wrapper-based
- mechanism (David Dawes).
-2495. Fix a XINERAMA bug in dix/events.c (Dirk Hohndel).
-
-XFree86 3.9Ph (5 April 1999)
-2494. Add code to XF86Setup for mode adjustment (like xvidtune), addition,
- and removal (#2646, Joe Moss).
-2493. Remove the use of the `dialog' program from XF86Setup, and add
- various curses routines and the start of a text mode user-interface
- (both curses & plain text). Also remove some obsolete Tk 4.0-specific
- code (#2645, Joe Moss).
-2492. Add code to XF86Setup to convert all of the config file sections
- to/from Tcl variables (#2644, Joe Moss).
-2491. Allow fbdev to handle non-page-aligned framebuffers correctly (#2643,
- Gerd Knorr).
-2490. Add RAC code to the fbdev driver (if there is a PCI BusID specified
- in the config file it will "check in" this into access control)
- (#2643, Gerd Knorr).
-2489. Cleanup in sysv_video.c (#2642, Michael Rohleder).
-2488. Update xedit's realpath.c for IUS (#2642, Michael Rohleder).
-2487. Add support for InputDevice sections to the parser (not used yet)
- (David Dawes).
-2486. A first cut at cleaning up the handling of memory mapping and client
- exit/crash in the DGA library (David Dawes).
-2485. Shadowfb support for the generic VGA driver at depths 4 and 1
- (Dirk Hohndel and Mark Vojkovich).
-2484. Fix the printMonitorSection and printDeviceSection functions in
- the parser (#2641, Joe Moss).
-2483. Change the s3virge chipset names, removing the slashes (#2640,
- Kevin Brosius).
-2482. Preliminary s3virge man page (#2640, Kevin Brosius).
-2481. Fix s3virge HW cursor (#2640, Kevin Brosius, Mark Vojkovich).
-2480. Remove some multiply defined variables in the cfb modules to avoid
- a problem on LynxOS PowerPC (#2639, Thomas Mueller).
-2479. Fix a crash in the new xedit code for listing files and directories
- (#2638, Paulo Cesar Pereira de Andrade).
-2478. Change the kill_ring code in TextAction.c to always end in a text block
- of zero length (#2638, Paulo Cesar Pereira de Andrade).
-2477. Add xpm pixmap support to Xaw (needs to be built with -DUSE_XPM
- for this), and if the xpm image has a mask, the widget will be
- automatically reshaped to the pixmap mask (#2638,
- Paulo Cesar Pereira de Andrade).
-2476. Add some PCI IDs for Creative Labs 3D Blaster Banshee PCI (#2637,
- Nicholas Brealey).
-2475. XAA pixmap->window and window->pixmap copy optimization (#2636,
- Mark Vojkovich).
-2474. Implement some attributes for the v4l module, and fix the clipping
- code (#2635, Gerd Knorr).
-2473. Incorporate 3.3.1 FIFO settings for the SiS driver based on memory
- bandwidth and pixel clock (#2632, Juanjo Santamarta).
-2472. SetMclk and FastVram options for the SiS driver (#2632,
- Juanjo Santamarta).
-2471. Fix some SiS mode switch problems (#2632, Juanjo Santamarta).
-2470. Imakefile fix for building the X server with BuildGlxExt=NO (#2631,
- Thomas Mueller).
-2469. Imakefile fixes for cxpm and sxpm (#2631, Thomas Mueller).
-2468. LynxOS resync, including removing the CrossCompile rule from lynx.cf,
- LynxOS sparc resync, remove SMEM warning for default verbose level,
- LynxOS support for chips driver util programs (#2631, Thomas Mueller).
-2467. Add man pages for the fbdevhw and fbdev modules (#2630, Gerd Knorr).
-2466. Add fb.h so that fbdevhw can be built on pre-2.2 Linux (#2630,
- Gerd Knorr).
-2465. Add support for generic Xv adaptors to the fbdev driver (#2629,
- David Woodhouse).
-2464. Fix X locale problem for Linux/libc6 introduced in 3.9Pg (#2628,
- Nozomi Ytow).
-2463. Fix VT switching problems with the 8+16 code (#2627, David Bateman).
-2462. Generic Xv support for the s3virge driver (#2626, David Woodhouse).
-2461. Add a permission notice to videodev.h (#2625, David Woodhouse).
-2460. Resync parts of the XInput DDX code with 3.3.x, including restoring
- the "Switch" device, RELATIVE_CHECK code, Elographics driver,
- Wacom driver, and Joystick driver (#2514, 2548, Frederic Lepied
- and Patrick Lecoanet).
-2459. Fix remaining build issued with the GLX/Mesa integration
- (Marc La France).
-2458. Some preliminary support code that the new RAC code may use
- (David Dawes).
-2457. Add a utility called `pcitweak' that can be used to read/write
- registers in the PCI config space from the command line (David Dawes).
-
-XFree86 3.9Pg (29 March 1999)
-2456. Fix an off-by-one clipping error in the XAA wide line code (#2624,
- Mark Vojkovich).
-2455. Add HW cursor support to the s3virge driver and make it the default
- (#2623, Kevin Brosius).
-2454. Add OS-specific subdirectories to the loader subdirectory search lists,
- and install OS-specific modules in such directories (David Dawes).
-2453. Set the screen numbering in multihead configurations based on the
- ordering of the Screen entries in the ServerLayout section,
- and allow an optional numerical argument to follow the Screen
- keyword to indicate a different ordering (David Dawes).
-2452. Fix some signedness discrepancies in the libc_wrapper code.
-2451. Add missing parts to the parser's printKeyboardSection routine (#2621,
- Joe Moss).
-2450. Finalising the DGA 2.0 driver interface (#2619, Mark Vojkovich).
-2449. Xterm patch #94 (#2618, Thomas Dickey).
-2448. Accelerated support for 8+16 overlays in XAA (untested) (#2617,
- Mark Vojkovich).
-2447. Some optimisations for the 8+32 and 24+32 layers (#2616, Mark Vojkovich).
-2446. Updates for IUS (Interactive Unix) (#2614, Michael Rohleder).
-2445. Update xf86config for the 4.0 config file format (#2613,
- Justin Bradford).
-2444. Update and clean up the Cards file (#2600, 2612, Justin Bradford).
-2443. When probing for a VGA, it's unnecessary to unlock its CRTC registers
- (#2611, Marc La France).
-2442. Remove xf86FreeBusSlots(), which is redundant, unused and incorrect
- (#2611, Marc La France).
-2441. Move the claiming of ISA resources from xf86Check???Slot() to
- xf86Claim???Slot() (#2611, Marc La France).
-2440. On Linux, define _GNU_SOURCE only compiling the xc/ source tree (#2611,
- Marc La France).
-2439. Remove uneeded s3virge files (#2615, Kevin Brosius).
-2438. "pci_burst" option updates for the s3virge driver (#2615, Kevin Brosius).
-2437. Fix missing accel flags and depth 24 problem with the s3virge driver
- from the Alpha patch (#2615, Kevin Brosius).
-2436. Make sure the size of offscreen pixmaps don't exceed the address space
- of the ViRGE (#2610, Mark Vojkovich).
-2435. Add a driver for video4linux frame grabber cards (#2609, Gerd Knorr,
- David Woodhouse).
-2434. Add support to the MGA driver so that it will use any available
- generic Xv adaptors (#2609, David Woodhouse).
-2433. Add xf86XVRegisterGenericAdaptor() and xf86XVListGenericAdaptors()
- functions for maintaining a list of Xv adaptors which are not tied
- to a particular screen (#2609, David Woodhouse).
-2432. Fix virtual screen panning with the SiS driver (#2608,
- Juanjo Santamarta).
-2431. Fix security problem with the creation of the /tmp/.X11-unix directory
- (#2607, Matthieu Herrb).
-2430. Update the 8+16 layer to get the color key from the new field in
- the ScrnInfoRec (#2605, Mark Vojkovich).
-2429. Complete the Xv config evaluation code in the PM2 Xv driver and the
- common layer (#2604, Michael Schimek).
-2428. Modify Xv DDX's clipping interface (#2604, Michael Schimek).
-2427. Fix a bug in the handling of Boolean options (#2603, Michael Schimek).
-2426. Have xf86ChangeGamma() update and install the default colormap
- when the currently installed colormap is not implemented by lookup
- (#2602, Mark Vojkovich).
-2425. Export StoreColors() (#2601, Mark Vojkovich).
-2424. Replace all Imakefile.obj files with Imakefile.inc because .obj is
- a reserved extension for object file on OS/2 (#2599, Holger Veit).
-2423. Update the Cards file parser to accept a new DRIVER line (#2598,
- Justin Bradford).
-2422. Fix getline clash in proxymngr and xsm (#2595, Dejan Ilic).
-2421. Fix colourmap on Permedia2, and fix GLINT SaveScreen to blank the
- display (#2594, 2596, Alan Hourihane).
-2420. Make fbdev work on Sparc Linux, and fix a few bugs in fbdevhw and
- fbdev (#2593, Jakub Jelinek).
-2419. Sparc Linux support for XFree86 (#2593, Jakub Jelinek).
-2418. Add DPMS support to the s3virge driver (#2592, Matt Grossman).
-2417. ppc_flush_icache() for Linux/PPC, required for the loader to work
- correctly (#2591, Gerd Knorr).
-2416. Linux/PPC loader fix (#2590, Stuart Anderson).
-2415. Modify the ramdac module and glint driver to use the ScrnInfoRec
- overlay fields (#2589, 2594, Alan Hourihane).
-2414. Add RTL ethernet and VIA APCI PCI devices to the ID list (#2588,
- Kevin Brosius).
-2413. Fix a problem with $(STD_CPP_DEFINES) that was introduced in 3.9Pf.
-2412. Add VESA default modes, small perl hack to create an initialized data
- structure from them, and the code to use those modes as default if no
- other modes with the same name are defined (Dirk Hohndel).
-
-XFree86 3.9Pf (21 March 1999)
-2411. Fix some malloc problems in xf86xv.c (#2587, Michael Schimek).
-2410. Fix building of Xprt, Xnest and Xvfb when doing a loader build
- (David Dawes).
-2409. Updates to s3virge driver to get it working under Linux/Alpha
- (#2586, Matt Grossman).
-2408. Fix getline() clash (#2585, Alan Hourihane).
-2407. Have the s3virge driver use the new XAA rop helper functions (#2584,
- Mark Vojkovich).
-2406. Add code to SuperProbe to detect the S3 Trio3D and Savage3D
- (2583, Eric Molitor).
-2405. Add some XAA helper functions that drivers can call for help
- converting X rops into MS rops (#2582, Mark Vojkovich).
-2404. Resync the overlay support in the glint driver (#2580, 2581,
- Mark Vojkovich).
-2403. Add support for changing the overlay color key to the MGA driver
- (#2579, Mark Vojkovich).
-2402. Preallocate the color key in the default colormap and set it to
- something already in the default man (black) so that AllocColor will
- never allocate it (#2578, Mark Vojkovich).
-2401. Use the color key field in the ScrnInfoRec for the overlay layers
- (#2578, Mark Vojkovich).
-2400. Preliminary loader support for Linux/PPC ELF objects (#2577 (2570),
- Stuart Anderson).
-2399. Fix some XAA offscreen pixmap problmes (#2576, Mark Vojkovich).
-2398. DGA fixes. Old apps should now run with the new driver interface,
- and event handling should work better than before (#2575,
- Mark Vojkovich).
-2397. Fix most remaining signed/unsigned and prototype warnings in the
- following directories: lib/Xaw, lib/Xmu, programs/xclipboard,
- programs/xconsole, programs/xmag, and programs/xvidtune (#2574,
- Thomas Dickey).
-2396. Restore the interface of XmuConvertStandardSelection() to use
- XPointer rather than XtPointer (#2574, Thomas Dickey).
-2395. Fix an malloc size bug in libICE (#2572, Christopher Sekiya).
-2394. Make MIT-SHM resource types non-static so that other extensions
- (like Xv) can access client shared memory segments (#2571,
- Mark Vojkovich).
-2393. First cut at altering the C&T user docs for 4.0 (#2569, David Bateman).
-2392. Fix a C&T problem affecting the colourmap setup for 1bpp modes, and some
- other minor C&T driver fixes (#2569, David Bateman).
-2391. Fix an buffer overflow in os/connection.c (#2568, Gerd Knorr).
-2390. Add support for Modes sections and the UseModes keyword for Monitor
- sections to the parser (#2567, Dirk Hohndel).
-2389. Fix xfree86.cf for Alpha (#2567, Dirk Hohndel).
-2388. Fix XAAFillPolygonStippled to obey the flag NO_TRANSPARENCY in
- Mono8x8PatternFill (#2566, Xavier Ducoin).
-2387. Only allow the shadowfb layer in the C&T driver when linear addressing
- is enabled (#2565 (2561), David Bateman).
-2386. Fix some problems with the xf8_16bpp layer, and allow it to work
- with depth 15 as well as 16 (#2565 (2561, 2562), David Bateman).
-2385. Implement TrueColor with PseudoColor Overlays (8+16) for the
- C&T driver for HiQV chipsets (#2565 (2561), David Bateman).
-2384. Add a -quiet option to xgamma (#2565 (2561), David Bateman).
-2383. Add TrueColor Gamma Correction for C&T HiQV chipsets (#2565 (2561),
- David Bateman).
-2382. Fix Permedia 2 HW cursor lockup (#2563, Alan Hourihane).
-2381. Initial XAA support for SiS530 and SiS620 (#2560, Xavier Ducoin).
-2380. Add SuperProbe for SiS (#2559, Xavier Ducoin).
-2379. Fix the InstalMultipleMan and InstallMultipleManSuffix rules for
- NetBSD and OpenBSD (#2558 (2557), Matthieu Herrb).
-2378. Add Cards entry for Number Nine FX Reality 772 (#2556, Harald Koenig).
-2377. Make XF86Setup build again (not fully functional yet) (#2555, Joe Moss).
-2376. Update the apm (Alliance Promotion) driver to the 4.0 interface (#2554,
- Loic Grenie, Henrik Harmsen).
-2375. Add some rules for driver/module man pages, and add a sample driver
- man page for the mga driver (David Dawes).
-2374. Update the Option Names section of xfree86/Registry (David Dawes).
-2373. Merge the OPTV_BOOLEAN and OPTV_TRI option classes, removing the
- latter. Update code affected by this (David Dawes).
-2372. Fix the BackingStore option.
-2371. Disable transparency for screen->screen copies for Trident Image for
- now.
-2370. Trident Image transparency update (#2564, Alan Hourihane).
-
-XFree86 3.9Pe (14 March 1999)
-2369. Fix problems debugging archive library modules on Linux with long
- member names (Paul Flinders).
-2368. Add new XAA clipping for Trident Image (#2553, Alan Hourihane).
-2367. Fix Trident save screen so that it blanks the display (#2553,
- Alan Hourihane).
-2366. Fix tranparency for the Trident Image cards (#2553, Alan Hourihane).
-2365. Remove the panmi and pandix directories, since they're no longer
- needed.
-2364. Add gamma correction to the C&T driver, but disabled because it doesn't
- work yet (David Bateman).
-2363. Add shadow fb support to the C&T driver (David Bateman).
-2362. Finish off the VidMode extension backward compatibility code
- (David Bateman).
-2361. Add SetGamma/GetGamma requests to the VidMode extension, and a client
- called 'xgamma' that makes use of them to allow the server's gamma
- correction to be changed dynamically (David Bateman).
-2360. Make the cursor layer smart enough to remove the cursor itself when
- DGA is activated (#2552, Mark Vojkovich).
-2359. Add some overlay-related entries to the ScrnInfoRec (#2550,
- Mark Vojkovich).
-2358. Some DGA fixes (#2550, 2551, Mark Vojkovich).
-2357. Set X_BYTE_ORDER from the imake config, and use it in place of
- the system's BYTE_ORDER (David Dawes).
-2356. Update copyright notices in the s3virge driver (#2546, Kevin Brosius).
-2355. Xterm patch #93 (#2546, Thomas Dickey).
-2354. Fix some minor fbdev problems in fbdevhw and the mga driver (#2545,
- Gerd Knorr).
-2353. Disable the loader for LinuxPPC because it doesn't work (#2545,
- Gerd Knorr).
-2352. Disable the Linux fbdevhw by default for versions older than 2.2
- (#2545, Gerd Knorr).
-2351. Xaw and xedit updates, including changes to Xaw to support latin*
- languages in the text code when not using the "international" resource
- (#2544, Paulo Cesar Pereira de Andrade).
-2350. Add 3D decoration and the ability to display an XPM pixmap in the xdm
- Login widget. A default pixmap made with the XFree86 logo is included
- (#2543, Amit Margalit, Caolan McNamara, Ivan Griffin, Matthieu Herrb).
-2349. Improve attribute scaling in the PM2 Xv driver (#2542, Michael Schimek).
-2348. Add an "acecad" mouse protocol so that an acecad tablet can be used
- with the standard mouse driver (#2541, Jeff Anton).
-2347. Include xf86_ansic.h in module build of xf86vmode.c (#2540,
- Matthieu Herrb).
-2346. Fix a server crash when no mode lines are specified in the Monitor
- section (#2539, Andreas Ehliar).
-2345. Resync SuperProbe with the 3.3.3.1 version (#2538, Marc La France).
-2344. Document -once server commad line option (#2538, Marc La France).
-2343. Add and document a -noreset server command line option to disable server
- resets when the last client connection is closed. This is useful for
- xtest'ing a server that is switched out (#2538, Marc La France).
-2342. More compiler warning fixups, including a re-integration of GLX for both
- static and loader builds (#2538, Marc La France).
-2341. On Linux, compile with _GNU_SOURCE so that declarations for snprintf &
- friends may be #include'd with <stdio.h> (#2538, Marc La France).
-2340. Fix the glint driver's use of resource control, which fixes problems
- using MGA/GLINT combinations in multi-head (#2537, Alan Hourihane).
-2339. Fix a problem building xrdb with SVR4.0's cc (#2536, Satoshi Kimura).
-2338. Fix a trident 24bpp bug (#2535, Alan Hourihane).
-2337. Fix Permedia 2V hardware cursor (#2534, Alan Hourihane).
-2336. Add the rest of the known EM_ machine type defines, and Sparc
- specific relocation defines to loader/elf.h (#2533, David Miller).
-2335. -
-2334. Disable MTRRs when unmapping memory (#2531, David Wragg).
-2333. Avoid the MTRR messages on systems with no MTRR support unless
- the "mtrr" option is specified or -verbose is used (#2531, David Wragg).
-2332. -
-2331. Fix some offscreen pixmap-related problems with XAA (#2497, 2549,
- Mark Vojkovich).
-
-XFree86 3.9Pd (9 March 1999)
-2330. Updates for Hurd port (#2528, UCHIYAMA Yasushi).
-2329. Fix some Solaris 7 build problems (#2530, Nicholas Brealey).
-2328. Add some more PCI entries (#2529, Nicholas Brealey).
-2327. Preliminary DGA support for the mga driver (#2527, Mark Vojkovich).
-2326. Fix some DGA bugs and turn on events in the DGA compatibility code
- (#2526, Mark Vojkovich).
-2325. Fix the memory units in the old DGA (#2525, Mark Vojkovich).
-2324. Allow drivers to limit the size of XAA offscreen pixmaps (#2524,
- Mark Vojkovich).
-2323. Fix the problem with XAA pixmap cache messages only being printed
- for the first screen (#2524, Mark Vojkovich).
-2322. Temporarily disable rops without a source in the s3virge driver,
- and add the ShowCache option (#2523, Mark Vojkovich).
-2321. Add XF86Config parser for VideoAdaptor configuration (#2521,
- Michael Schimek).
-2320. Fis Permedia DPMS bug and Permedia 2 hw cursor (#2521, Michael Schimek).
-2319. Move include/Xvlib.h to include/X11/extensions/, add missing
- XvPortNotify, and fix Xv DDX StopVideo deficiency (#2521,
- Michael Schimek).
-2318. More ansifications/gcc warning removal for the clients (#2520,
- Matthieu Herrb).
-2317. Implement backward compatibility for the server side of the VidMode
- extension, which relies on the new clients informing the server of
- their version (David Dawes).
-2316. Initial conversion of the VidMode extension for 4.0 (David Bateman).
-2315. Add DPMS support to the TGA driver (#2518, Matt Grossman).
-2314. Fix a bug in xaaInitAccel.c that affects disabling offscreen pixmaps
- (#2519, Andrew Aitchison).
-2313. Some SiS driver fixes/updates (#2517, Juanjo Santamarta).
-2312. Fix a server crash when assiging the primary device (#2516,
- Alan Hourihane).
-2311. Don't save/restore the VGA colourmap in the glint driver (#2515,
- Alan Hourihane).
-2310. Fix a problem of using freed data in xgc (#2512, Jeff Anton).
-2309. Make the server fail gracefully when it can't load its base modules
- (#2511, Alan Hourihane).
-2308. Fix a global declaration clash in panoramiXprocs.c (#2510,
- Alan Hourihane).
-2307. Fix installation of GLX man pages (based on #2509, Matthieu Herrb).
-2306. Update the Linux/ppc section of xfree86.cf (#2507, Gerd Knorr).
-2305. Add code to the mga driver for using the fbdevhw module (#2507, 2522,
- Gerd Knorr).
-2304. Add a fbdev module that provides a simple non-accelerated driver that
- works on top of fbdevhw (#2507, Gerd Knorr).
-2303. Add a fbdevhw module that provides the functions needed to access
- Linux framebuffer devices (#2507, Gerd Knorr).
-2302. Add a wrapper for mmap and munmap (#2507, Gerd Knorr).
-2301. Fix an XAA FillPoly problem that shows up with the noblank screen
- saver (#2513, Mark Vojkovich).
-2300. Fix some problems in XAA's 32->24bpp image conversion (Mark Vojkovich).
-2299. Fix padding in the xf24_32bpp layer (#2508, Mark Vojkovich).
-
-XFree86 3.9Pc (2 March 1999)
-2298. Preliminary work on new DGA event support (#2506, Mark Vojkovich).
-2297. Add rewrite of s3virge driver's accel code (#2505, Mark Vojkovich,
- Kevin Brosius).
-2296. Remove typos and inconsistencies between the Xv manual pages and
- the implementation (#2504, Michael Schimek).,
-2295. Ansification and gcc warning elimnation in xfwp, xhost, xieperf,
- xinit, xkbevd, xkbprint, xkbutils, xkill, xlogo (#2502, Matthieu Herrb).
-2294. Fix an MGA driver crash that shows up when running xtest (#2501
- Alan Hourihane).
-2293. Correctly indicate when the MGA driver auto-detects SDRAM cards
- (#2500, Alan Hourihane).
-2292. Add "noddc1" and "noddc2" options to the DDC layer to allow DDC to
- be disabled (#2499, Alan Hourihane).
-2291. Change PsAttVal.c (Xprt/PS) so that values other then {PostScript 2}
- can be put into xp-raw-formats-supported (#2498, Noah Roberts).
-2290. Fix a 'make includes' problem in lib/font that shows up on SVR4.
-2289. Integrate SGI's GLX and the Mesa core rendering library
- (#2492, Precision Insight, SGI, Mesa).
-2288. -
-2287. New DGA DDX layer (not finished yet) (#2495, Mark Vojkovich).
-2286. Backwards compatibility layer translating DGA 1.0 into the new DDX
- (#2494, Mark Vojkovich).
-2285. Disable old DGA support in the cirrus driver (#2493, Mark Vojkovich).
-2284. Ansification and gcc warning elimnation in xclipboard, xclock, xcmsdb,
- xconsole, xdm, xdpyinfo, xedit, xfd and xfindproxy (#2491,
- Matthieu Herrb).
-2283. Fix 8 plane TGA 8x8 pattern fill (#2490, Matt Grossman).
-2282. Fix pitch padding in the xf24_32bpp layer (#2489, 2496, Itai Nahshon).
-2281. Add DPMS support for the Cirrus Laguna chips (#2489, 2496, Itai Nahshon).
-2280. Add loader req/ref symbol lists to the cirrus module (#2489, 2496,
- Itai Nahshon).
-2279. Fix cirrus display corruption with acceleration and SW cursor
- (#2489, 2496, Itai Nahshon).
-2278. Add minimal 5430 support to the cirrus driver (#2489, 2496,
- Itai Nahshon).
-2277. Resync LynxOS support (#2486, Thomas Mueller).
-2276. Remove the driver for the never-released P3D chipset (#2285, Dejan Ilic).
-2275. Change xf86XVScreenInit's arguments so that it's easier to initialize
- the Xv DDX when adaptors come from multiple sources (#2484,
- Mark Vojkovich).
-2274. Ansification and gcc warning elimnation in x11perf and xauth
- (#2483, Matthieu Herrb).
-2273. Fix a backing store bug in the 24/32 layer, and add a local version
- of a 24->24bpp copy routine since the performance in cfb24 is too
- poor (#2481, Mark Vojkovich).
-2272. Add support for setting write-combining for the frame buffer memory,
- and disabling WC for MMIO memory via the PPro/PII MTRR facility
- provided in Linux 2.2 (#2480, 2503, David Wragg).
-2271. Xaw and xedit updates/fixes (#2479, Paulo Cesar Pereira de Andrade).
-2270. Add some more PCI data (#2478, Andrew Aitchison, #2489, 2495,
- Itai Nahshon).
-2269. Fix a bug in the KIO8-U encoding in fontenc.c (#2477,
- Juliusz Chroboczek).
-2268. Fix most of the warnings that show up when building on Digital Unix 4.0D,
- with the DEC C compiler.
-2267. Fix for Millennium II hardware cursor-related loss of sync problem
- that shows up with some revs of the 3026 ramdac (Trey Boudreau).
-2266. Update the setting of the option registers in G-type RAMDAC
- Matrox cards and add "no_ddc" flag (Dirk Hohndel, Michael
- Brown).
-
-XFree86 3.9Pb (20 February 1999)
-2265. Allow YaccCmd to be overridden in host.def (#2474-2476,
- Christopher Sekiya).
-2264. Implement null overscans in VGA, minor fixups to VGA generic
- default mode, re-add #ifndef's in VGA generic driver erroneously
- deleted in 3.9No (#2473, Marc LaFrance).
-2263. More MULTIBUFFER extension fixes (#2471, Marc LaFrance).
-2262. Add support for the Matrox G200 SDRAM cards; G100 SGRAM still
- doesn't work (Dirk Hohndel).
-2261. Support Linux PowerPC. Add Linux 2.2 PCI config space code
- (#2470, Gerd Knorr).
-2260. Remove gcc warnings in the clients and lib/FS (#2469, Matthieu Herrb).
-2259. Updates to the PCI database (Dirk Hohndel, David Monro).
-
-XFree86 3.9Pa (14 February 1999)
-2258. Use /dev/io to enable I/O access on FreeBSD instead of KDENABIO.
-2257. Correct some typos/grammatical problems with the DESIGN doc (Ivan Bach).
-2256. Fix a crash when PciAccInfo isn't initialized (#2468, Alan Hourihane).
-2255. Add SiS530 detection to the SiS driver. Clock programming,
- acceleration and hw cursor are not implemented, yet (Dirk Hohndel).
-2254. Fix some bugs related to hardware clipping of spans. XAA
- WideLine speedups when hardware clipping is available (#2467
- Mark Vojkovich).
-2253. Permedia2 clipping fixes, fix WritePixmap for non-GXcopy rasters
- (#2466, Alan Hourihane).
-2252. Add -scanpci option and a scanpci module to the server. Add tons
- of PCI2.1 subsystem ids to identify specifc cards; the PCI data
- base needs more work (Dirk Hohndel).
-2251. Remove obsolete xf86[GS]etDefaultColorVisualClass() and fix some
- small typos and comments; make type of BIOS, Memory and I/O
- bases consistent (#2460,2465 Marc LaFrance).
-2250. Add ScanlineCPUToScreen for TX/MX and older Permedia chipsets
- for when PCI retries are not enabled (#2459,2461,2462,2463
- Alan Hourihane).
-2249. Add 24/8 overlay support for 3Dlabs chipsets and switch to MMIO
- for vga access (#2459, Alan Hourihane).
-2248. Add 24/8 overlay support to IBM526 and IBM640 ramdacs, fix IBM640 hw
- cursor (#2458, Alan Hourihane).
-2247. Fix depth 24 support in TGA driver (#2456, Tim Rowley).
-
-XFree86 3.9P (7 February 1999)
-2246. Some TGA driver speedups and cleanups (#2454, Matt Grossman).
-2245. Fix a lock_display() prototype problem in Xlibint.h that shows up
- when building with -DXTHREADS.
-2244. Allow the driver to override XAA's assignment of Screen functions which
- access the framebuffer (#2453, Mark Vojkovich).
-2243. Fix mga overlay problems related to the software cursor and disable
- overlays for the G100 since it doesn't support planemasks (#2452,
- Mark Vojkovich).
-2242. Rectangle outline performance improvements for the shadow framebuffer
- (2451, Mark Vojkovich).
-2241. Update the ati driver code to include changes in 3.3.3.1. The driver
- is not buildable yet (#2450, Marc La France).
-2240. Add support for VT switching to the 8+16 layer (#2449, Mark Vojkovich).
-2239. Export xf86NewSerialNumber() (#2448, Mark Vojkovich).
-2238. Fix XAA pixmap cache in 24bpp when ImageWrites are not available and
- 32bpp pixmaps are used (#2447, Mark Vojkovich).
-2237. Improve performance for zero width arcs at 24bpp in the mga driver
- (#2446, Mark Vojkovich).
-2236. Optimise 24->32bpp transfers (#2445, Mark Vojkovich).
-2235. Xterm patch #92 (#2444, Thomas Dickey).
-2234. Fix some compiler warnings in libfont (#2443, Marc La France).
-2233. Make building the Speedo and Type1 font code optional (#2443,
- Marc La France).
-2232. Add DDC2 and Xv support for Permedia 2 to the glint driver (#2442,
- Michael Schimek).
-2231. Update the glint driver's clipping for the new XAA clip support
- (#2440, Alan Hourihane).
-2230. Add support for the ELSA Gloria-XXL with Glint Gamma chip (#2440, 2441,
- Alan Hourihane).
-2229. Fix some ANSI vs non-ANSI prototype mixing in the Speedo code.
-2228. Fix a bug setting the framebuffer pixmap format for depth 4 in
- xf86SetDepthBpp().
-2227. Fix some misuse of the VGA "Palette" enable/disable functions in the
- vgahw code, and clarify what they do. This fixes some display artefacts
- that were showing up when writing to the colourmap.
-
-XFree86 3.9Nz (1 February 1999)
-2226. Add an 8+16bpp dual framebuffer layer (#2425, Mark Vojkovich).
-2225. Add "ShadowFB" to the mga driver for experimenting with the shadowfb
- layer (#2439, Mark Vojkovich).
-2224. Some cleanups/fixes for Solaris 7 (#2437, David Holland).
-2223. Ansify (and remove gcc warnings from) the following clients: appres,
- bdftopcf, beforelight, bitmap and editres (#2436, Matthieu Herrb).
-2222. Eliminate cpp-related warnings about the "unix" symbol on NetBSD-current
- (#2434, Matthieu Herrb).
-2221. Fix a bug in Xaw's StripChart widget that shows up with xload
- (#2433, Matthieu Herrb).
-2220. Some initial code for supporting other SiS cards in the SiS driver
- (#2420, Juanjo Santamarta).
-2219. Allow static Xvfb to compile (#2432, Marc La France).
-2218. Fix ddc and chips Imakefiles (#2432, Marc La France,
- #2435, Matthieu Herrb).
-2217. Remove redundant BitsPerPixel macro definitions (#2432, Marc La France).
-2216. Remove some redundant rules from Xpm's Imakefile (#2432, Marc La France).
-2215. Fix some compiler warnings (#2432, Marc La France).
-2214. Allow the deprecated MultiBuffer extension to compile (#2432,
- Marc La France).
-2213. Fix problems building with XInput disabled (#2432, Marc La France).
-2212. Fix 'make clean' to remove lndir and revpath (#2432, Marc La France).
-2211. Add a new "shadowfb" layer that maintains a virtual framebuffer in
- system memory and tells the driver what parts of the videoram
- framebuffer need updating. This allows the use of write-only videoram
- framebuffers (#2431, 2438, Mark Vojkovich).
-2210. Fix some compilation problems on Alpha platforms caused by some
- inlines in complier.h being declared as extern instead of static
- (2430, Matt Grossman).
-2209. Remove the inconsistencies with numeric chipset tokens in the s3virge
- driver (#2428, Kevin Brosius).
-2208. Move the mga DDC code into the PreInit function, add I2C support
- (disabled and not working so far), and allow the driver to continue
- without DDC support if the DDC module is missing (#2427,
- Andrew Aitchison).
-2207. Fix a problem with xsm not acknowledging the SaveYourself message it
- sends clients with a SaveComplete message (#2426, Robert Bihlmeyer).
-2206. Update the mga driver to use the new XAA clipping (#2424,
- Mark Vojkovich).
-2205. Some enhancements to XAA's HW clipping handling, allowing clipping
- to be used for more than just lines (#2423, Mark Vojkovich).
-2204. Fix a problem with the previous cfb screen pixmap access fix (#2242,
- Mark Vojkovich).
-2203. Fix SiS 24bpp support (#2421, Alan Hourihane).
-2202. Fix SiS HW cursor, max clock and 16bpp support (#2418, Alan Hourihane).
-2201. Update the ramdac module's HW cursor support to handle hardware that
- requires nibble swapping (#2417, 2419, Alan Hourihane).
-2200. Make the fact that the XAA TE font rendering assembly code is disabled
- by default more obvious (#2416, David Bateman).
-2199. Fix VT switches in 8+32 mode (#2415, Mark Vojkovich).
-2198. Add common encoding support for the Speedo, Type1 and FreeType
- font backends (#2385, Juliusz Chroboczek).
-2197. Update lib/font/FreeType to xfsft-1.0.3 (#2385, Juliusz Chroboczek).
-2196. X-TT updates for our loader (X-TT team and Nozomi Ytow).
-2195. Import X-TrueType 1.2pre-19990125 (X-TT team).
-
-XFree86 3.9Ny (26 January 1999)
-2194. Some improvements to the XAA TE font rendering assembly code (note
- that this assembly code is disabled by default) (#2413, David Bateman).
-2193. Fix some places in cfb that were accessing the screen pixmap directly
- from the private (#2412, Mark Vojkovich).
-2192. Fix a FreeType build problem on 64-bit platforms (#2411, Alan Hourihane).
-2191. Fix a cfb24 build problem that shows up with egcs (#2410,
- Alan Hourihane).
-2190. Add DPMS, DDC1 and HW cursor support to the SiS driver, and fix panning
- in the SiS driver (#2409, Alan Hourihane).
-2189. Put copyright notices from the pandix/panmi code into the merged
- dix/mi versions (#2408, Alan Hourihane).
-2188. Update drivers to use the 24/32 conversion layer, and to default to
- a 24bpp framebuffer format when supported.
-2187. Make some refinements to the way the depth 24 pixmap format is set.
-2186. Replace the ModuleInit function with a ModuleData data object. This
- allows the loader to get the version and entry points from a module
- without first executing module code.
-2185. Unify the abiclass and abivendor fields of XF86ModuleVersionInfo,
- and add a moduleclass field.
-2184. Add a SaveRestoreImage field to the ScrnInfoRec to allow drivers to
- supply an alternative to the default.
-
-XFree86 3.9Nx (24 January 1999)
-2183. Prevent LoadSubModule() from passing absolute module paths and from
- providing its own module search path.
-2182. Import FreeType 1.2. This includes the FreeType library specific parts
- of #2385 from Juliusz Chroboczek.
-2181. Add a root-only -modulepath command line option to the X server.
-2180. Fix the VT switch screen restore bug introduced a few versions ago
- (#2406, Mark Vojkovich).
-2179. ND version of the SiS driver, currently only for the 6326 chip (#2404,
- 2405, 2407, Alan Hourihane).
-2178. xterm patch #91 (#2402, Thomas Dickey).
-2177. Add 32/24 support to the MGA driver (#2401, Mark Vojkovich).
-2176. Add 32bpp->24bpp conversion acceleration to XAA (#2400, Mark Vojkovich).
-2175. Add partial acceleration support to the TGA driver (#2399, 2403,
- Matt Grossman).
-2174. Fix an 8+32 layer bug introduced in 3.9Nw (#2398, Mark Vojkovich).
-2173. Add a 32/24 conversion layer. Pixmaps are still 24bpp internally,
- but the interfaces visible to clients are all 32bpp (#2397,
- Mark Vojkovich).
-2172. Fix trident driver panning at 24bpp (#2395, Alan Hourihane).
-2171. Add DDC1 and DDC2 (the latter not working yet) to the trident driver
- (#2395, Alan Hourihane).
-2170. Add MCLK override to the trident driver (#2395, Alan Hourihane).
-2169. Enable pixel multiplexing to the trident drive for high resolution
- 8bpp modes (#2395, Alan Hourihane).
-2168. Add clipping for the Trident 9682 and 9685 and Mono8x8 and CPUToScreen
- support for the 9685 (#2395, Alan Hourihane).
-2167. Add offscreen pixmap support for the Trident Image series (#2395,
- Alan Hourihane).
-2166. Fix some cfb24 problems that showed up after the previous changes
- (#2396, Nozomi Ytow).
-2165. Update the C&T HW cursor defaults to only disable them by default when
- necessary (#2394, David Bateman).
-2164. Add some sanity checking for the subdirs argument to LoadSubModule, etc.
-2163. Fix a bug in the verbose Mode handling in the parser that can result
- in an infinite loop when the "Mode" keyword is used incorrectly in
- a config file.
-2162. Add a global default module path to the loader, and a function that
- the common layer can call to set it.
-2161. LoadModule was ignoring the subdir list argument (Nozomi Ytow).
-2160. Add printing of subsystem ids to scanpci (Dirk Hohndel).
-
-XFree86 3.9Nw (17 January 1999)
-2159. Add functions for finding the pixmap format and pixmap bpp for a
- given depth, and fix a crash in xf86ValidateModes() caused by recent
- changes in this area.
-2158. Add an extra argument to LoadSubModule (and LoadModule) to allow the
- caller to optionally specify version and/or ABI requirements that
- the loaded module must meet for the load to complete successfully.
-2158. Add support to the loader for vendor-defined ABI classes. These classes
- are specified as a string. The main use is for third party modules that
- themselves load sub-modules (like X-TT).
-2157. Fix the MGA driver's handling of the "MGA_SDRAM" option. SDRAM cards
- are still not auto-detected though (#2391, Mark Vojkovich).
-2156. Add a screen->screen colour expansion bug workaround to the MGA driver,
- and enable the faster linear expansions instead of the planar ones
- (#2390, Mark Vojkovich).
-2155. Fix some depth/bpp issues in the SHM code (#2389, Mark Vojkovich).
-2154. Export some missing symbols for Alpha platforms (#2388, Alan Hourihane).
-2153. Fix a bug in determing the card type in the TGA driver (#2387,
- Alan Hourihane).
-2152. Fix a problem in ramdac/BT.c (#2386, Alan Hourihane).
-
-XFree86 3.9Nv (15 January 1999)
-2151. Fix cfb24 problems that show up with xtest (#2384, Nozomi Ytow).
-2150. Fix 64 pixel rounding of display width in the C&T driver (#2383,
- David Bateman).
-2149. Add an UnloadSubModule() function that can unload individual sub-modules
- without unloading sibilings.
-2148. Remove a lot of unnecessary casts of x*alloc().
-2147. Add a pciGetBaseSize() funtion to the PCI code.
-2146. Make our PCI code aware of the following 2.1 type 0 header fields:
- Cardbus CIS pointer and subsystem ids.
-2145. Remove the KEEP_BPP code, and fix problems with some drivers referencing
- the unused pixmapBPP ScrnInfoRec field.
-
-XFree86 3.9Nu (13 January 1999)
-2144. Fix a bug in PANORAMIX_FREE(), which was referencing just freed data.
-2143. Merge the pandix/panmi code into dix and mi, and enable building
- the Xinerama (panoramiX) extension by default (#2377-2381,
- Alan Hourihane).
-2142. Rework the handling of the depth/bpp/fbbpp options. The -bpp flag and
- related config file keywords are no longer used. New flags and options
- have been added to specify the server-wide depth 24 pixmap format.
- A "standard" set of pixmap formats is always advertised, so drivers
- using these don't need to worry about explicitly adding them.
-2141. Fix some sun_path overflows in xtrans.
-2140. Some panoramix fixups (#2376, Alan Hourihane).
-2139. Don't allow arbitrarily long display number strings to be passed on
- to xtrans by _X11TransConnectDisplay().
-2138. Update the parser and xf86Config.c to allow Options to be specified in
- the config file's ServerLayout section. Options in the ServerLayout
- section can override those in the ServerFlags section.
-2137. Update the parser and xf86Config.c to allow "Inactive" devices
- to be specified in the config file's ServerLayout section.
-2136. Import xpm version 3.4k.
-
-XFree86 3.9Nt (11 January 1999)
-2135. Fix 8+32 rendering bugs (#2374, Mark Vojkovich).
-2134. Update vgaHWddc1SetSpeed() to select the 25 MHz clock (#2373,
- Alan Hourihane).
-2133. Add support for a shared font library (#2364, Takuya SHIOZAKI).
-2132. Add ProfiledDepLibraryTarget, DebuggedDepLibraryTarget and
- SharedDepLibraryTarget rules to imake (#2364, Takuya SHIOZAKI).
-2131. Fix a typo in xf86Init.c (#2372, Nozomi Ytow).
-2130. Xaw and xedit updates (#2371, Paulo Cesar Pereira de Andrade).
-2129. Move the DDC call to before the mode initialisation in the mga driver
- (#2367, Alan Hourihane).
-2128. Fix a problem with the xkb dvorak layout (#2362, Tabman)
-2127. Fix an xsm crash (NULL dereference) when a client sets an SM property
- list to a length of zero (#2361, Robert Bihlmeyer).
-2126. Untested support for the Trident 939A/DVD (#2359, 2360, Alan Hourihane).
-
-XFree86 3.9Ns (3 January 1999)
-2125. Allow backing store to be controlled with a per-screen config file
- option (#2357, Mark Vojkovich).
-2124. Fix XAA so that the offscreen pixmaps are compatible with backing store
- (#2354, Mark Vojkovich).
-2123. Fix a bug in XAA's stipple to 8x8 pattern reduction code (#2352,
- Mark Vojkovich).
-2122. 8+32 overlay support for XAA (#2352, 2356, Mark Vojkovich).
-2121. Add TGUI9440 and Cyber9320 support to the trident driver (#2348,
- Alan Hourihane).
-2120. Fix a typo in xkbcomp/symbols/sun/Imakefile (#2337, Matthieu Herrb).
-2119. Mga driver updates for the new 8+32 overlay support (#2332, 2353,
- Mark Vojkovich).
-2118. New 8+32 overlay support (#2331, 2351, 2358, Mark Vojkovich).
-2117. Fix a bug in the xterm man page (#2333, Thomas Dickey).
-2116. Remove the -fno-strength-reduce option for OpenBSD and NetBSD (#2328,
- Matthieu Herrb).
-2115. Import regex for systems that don't have a Posix regex.
-2114. Add a LoaderListDir() function that can be used to list the available
- modules.
-2113. Modify LoadModule and LoadSubmodule to accept optional subdir and
- pattern lists, and use regular expressions for the module matching
- instead of prefix/suffix lists.
-2112. Add a "revpath" utility to xc/config/util to help in dealing with
- imake's use of relative paths. If this proves to be useful, it could
- be used more widely in imake's rules.
-2111. Install some classes of modules into subdirectories of the "modules"
- directory. The imake module install rules have been updated
- accordingly.
-
-XFree86 3.9Nr (20 December 1998)
-2110. Add support for the wscons console driver for NetBSD-current (#2326,
- Matthieu Herrb).
-2109. Remove cfbPuntCopyPlane from cfb (#2325, Mark Vojkovich).
-2108. Fix a build problem related to Xarch.h on NetBSD (#2322, Isao Ohishi).
-2107. Fix an XAA bug tha can result in a zero height when rendering TE text
- (#2321, Mark Vojkovich).
-2106. Fix an optimization bug in the new XAA rect and span code (#2319,
- Mark Vojkovich).
-2105. Accelerate CopyPlane on offscreen pixmaps (#2318, Mark Vojkovich).
-2104. Fix a 4bpp problem with the C&T driver and the new colourmap code
- (#2317, David Bateman).
-2103. Enable XAA offscreen pixmaps in the C&T driver (#2317, David Bateman).
-2102. ImageRead functions for some C&T HiQV chipsets (disabled) (#2317,
- David Bateman).
-2101. MMIO access to the registers for PCI C&T 69000 (#2317, David Bateman).
-2100. Cleanup code in mipushpxl.c (#2313, Thomas Mueller).
-2099. Fix MX/TX clipping bugs in the glint driver (#2312, Alan Hourihane).
-2098. xterm patch #90 (#2311, Thomas Dickey).
-2097. Export missing symbols for panoramiX (#2310, Alan Hourihane).
-2096. Initialise a number of Xlib/Xt data structures, correct a minor linker
- bug in OS/2 (#2026, Holger Veit).
-2095. Fix some realloc() usages (#2019, Matthieu Herrb).
-2094. Support for arc4random() in xdm/genauth.c (#2019, Michael Shalayeff).
-2093. Update mkfontdir to create an appropriate fonts.dir file when no
- fonts are found rather than doing nothing.
-2092. Replace void main() -> int main() for ANSI conformance (#2019,
- Matthieu Herrb).
-2091. Only allow the X server -nolock option when the real uid is root.
-2090. Some sanity checks on DISPLAY name (#2168, Kevin Vajk).
-2089. Fix an Xnest crash with too many visuals (#2019, Matthieu Herrb).
-2088. Swedish sun keyboard support in Xsun and xkb (#2019, Magnus Holmberg).
-2087. A quick attempt at neutralising a stack-buffer overflow problem in
- the Xprt server.
-2086. LP64 compiler warning fixes from the NetBSD xsrc tree (#2019,
- Ross Harvey).
-2085. Don't install lndir on OpenBSD (#2019, Matthieu Herrb).
-2084. Teach imake how to automatically determine the NetBSD architecture
- (#2180, Jason Thorpe).
-2083. Add local font directory (Dirk Hohndel).
-2082. LynxOS OS version detection for imake (#2039, Thomas Mueller).
-2081. Resync OpenBSD.cf (#2019, Matthieu Herrb).
-2080. Fix security problem by creating /tmp/.X11-unix with sticky bit (#2168,
- Kevin Vajk, David Dawes, Dirk Hohndel).
-2079. Make LinkVarDirectory handle DESTDIR (#2019, Matthieu Herrb).
-2078. Resync NetBSD.cf.
-2077. Some doc and nroff-related updates to the build system.
-2076. Update tk/tcl definitions in FreeBSD.cf and add support for building
- a.out compatibility libraries on FreeBSD/ELF systems.
-2075. Create host.def with sane defaults when none exists and when a cut-down
- source tree is detected.
-2074. Resync with 3.3.3 (items 2075-2096 above).
-2073. Fix an xset segfault (#2320, Itai Nahshon).
-
-XFree86 3.9Nq (13 December 1998)
-2072. Change the modversion field in the XF86ModuleVersionInfo struct into
- separate major, minor and patchlevel fields.
-2071. Initial DG/ux support (#2299, Takis Psarogiannakopoulos).
-2070. DDC1 support for TVP3026 based Matrox cards (#2309, Andrew Aitchison).
-2069. More rewrites of the way spans and rects are handles in XAA so that
- it never has to allocate any memory, thereby eliminating potential
- stack overflow problems (#2308, Mark Vojkovich).
-2068. MGA driver-provided FillCacheBltRects replacement, optimised for fastblt
- (#2307, Mark Vojkovich).
-2067. Choose MGA planar vs linear screen to screen colour expansion at runtime
- rather than at compile time (#2307, Mark Vojkovich).
-2066. Fix a build problem related to Xarch.h on OpenBSD (#2306,
- Matthieu Herrb).
-2065. Fix a typo in FreeBSD.cf that affects adding the runtime library
- search patch for 2.2.x (#2305, Keisuke Inoue).
-2064. Some enhanced XKB files for French-Canadian keyboards (#2204,
- Eric Moreau).
-2063. Fix an incorrect realloc in xmodmap (#2303, Alexander V. Lukyanov).
-2062. Fix depth 30 for the glint driver (#2297, Alan Hourihane).
-2061. Resync pandix and panmi, and fix some panoramix build problems
- (#2296, Alan Hourihane).
-2060. Enable offscreen pixmaps for the glint driver (#2295, Alan Hourihane).
-2059. Fix PC98 XKB (#2292, Hirofumi Nishizuka and #2300, Tetsuo Tsukamoto).
-2058. Fix some unresolved symbols (#2293, Michael Rohleder).
-
-XFree86 3.9Np (6 December 1998)
-2057. Some xedit updates (#2291, Paulo Cesar Pereira de Andrade).
-2056. Updates to the Xaw text code (#2291, Paulo Cesar Pereira de Andrade).
-2055. XAA doc updates (#2289, Mark Vojkovich).
-2054. Replace linear screen to screen colour expansions with planar ones
- in the MGA driver because there seems to be a hardware problem with
- the linear ones (#2288, Mark Vojkovich).
-2053. Enable offscreen pixmaps for the MGA driver (#2288, Mark Vojkovich).
-2052. Some misc XAA updates (#2287, Mark Vojkovich).
-2051. A non-trival rewrite of the way fills are done in XAA (#2287,
- Mark Vojkovich).
-2050. Add a LINEAR_FRAMEBUFFER flag to XAA so that the pixmap cache can
- be loaded without requiring a driver-supplied ImageWrite function
- (#2287, Mark Vojkovich).
-2049. Add fully accelerated offscreen pixmaps support to XAA (#2287,
- Mark Vojkovich).
-2048. Add a RemoveAreaCallback for the offscreen memory manager. Areas
- for which this is supplied are considered lower priority than ones
- that don't, and can be booted out when something of higher priority
- needs the space (#2286, Mark Vojkovich).
-2047. Remove the ScreenPtr passed to the offscreen memory manager's resize
- function since it is already available from the FbAreaPtr (#2286,
- Mark Vojkovich).
-2046. Change xf86SaveRestoreImage() so that it doesn't create a new
- screen pixmap but modifies the old one (#2285, Mark Vojkovich).
-2045. Add support to mi for pixmaps with non-zero origins (#2284,
- Mark Vojkovich).
-2044. Fix some Alpha compilation problems introduced in 3.9No (#2283,
- Alan Hourihane).
-2043. Fix an Xlib problem with _XimLookupMBText() when using KOI8-R
- (#2282, Alexander Kabaev).
-2042. Fix the pattern source address mask for the C&T HiQV chips, which
- was causing 8x8 pattern problems when using more than 2MB of video
- memory (#2281, Peter Wainwright).
-2041. Update the TGA and Trident drivers for the ramdac/cmap changes (#2277,
- Alan Hourihane).
-2040. Change the Permedia2 to use a direct LoadPalette rather than the
- ramdac module because of 16bpp difficulty with the TVP3026 (#2277,
- Alan Hourihane).
-2039. Remove the old cmap code from the ramdac module and use the new
- cmap layer instead (#2277, Alan Hourihane).
-2038. Fix os.h and misc.h so that system headers don't get included when
- building modules.
-2037. Make the X server read an Xauthority file using the real user id
- to avoid problems when it is located on an NFS-mounted filesystem.
- (as suggested by #2276, MIHIRA Sanpei Yoshiro).
-2036. Xdm patch to allow the "Willing to manage" test displayed in the chooser
- window to be generated from a program run on the target host. This
- allows information like number of users, load average, etc to be
- displayed (like CDE does) (#2275, Dick Snippe).
-2035. Fix a core dump problem in xauth when interrupted while attempting
- to lock the auth file. Also fix a potential problem with calling
- printf() from within a signal handler (#2274, BSDI/Jeff Polk).
-2034. Add DDC2 probing for Cirrus 5446/5480 and Laguna chipsets (#2273,
- Itai Nahshon).
-2033. Fix some possible memory corruption and some minor bugs in the new DDC
- code (#2271, 2272, Itai Nahshon).
-2032. Offscreen memory manager and colormap layer doc updates (#2270, 2290,
- Mark Vojkovich).
-2031. Some glint clipping fixes (#2269, Alan Hourihane).
-2030. New XInput code, including new drivers for the SpaceOrb and Magellan
- (#2243, Metro Link).
-2029. Fix mga YDstOrg start address adjustment after VT switching.
-2028. Fix cfb24 bitblt for non-trivial planemasks (Peter Wainwright).
-2027. Fix bad headers included when compiling cup.c for extmod module.
-2026. Fix a malloc/xfree mismatch in xtrans LocalInitTransports().
-2025. Add some documentation for DDC (#2259, Egbert Eich).
-2024. Fix a problem with recent VT switch changes.
-
-XFree86 3.9No (29 November 1998)
-2023. Fix the depth vs bpp mixup in miCreateScreenResources().
-2022. Resync the s3virge driver with most of the updates contained in 3.3.3.
- This includes GX2 and MX+ support and the set_mclk and set_lcdclk
- options (#2267, Kevin Brosius).
-2021. Update the cirrus, chips and tseng drivers to use the new colourmap
- layer (via vgaHWHandleColormaps).
-2020. Add support for automatically adjusting the overscan colour index to
- the new colourmap layer.
-2019. Disable backing store by default, and provide a "+bs" option to enable
- it from the command line. This may be done in a better way later.
-2018. Remove the per-depth cfb private indices added in 3.9Nn (#2265,
- Mark Vojkovich).
-2017. Build cfb with -DSINLGEDEPTH because we don't need the per-depth
- cfb Screen privates.
-2016. Fix problems with the allocation of the cfbScreenPrivateIndex
- parameters.
-2015. Remove the offscreen memory manager functions out of the ScrnInfoRec
- (#2266, Mark Vojkovich).
-2014. Update the s3virge driver to use the new colormap layer, which fixes
- the VT switch colormap problem (#2264, Kevin Brosius).
-2013. Disable s3virge trapezoid fills since they don't match cfb (#2264,
- Kevin Brosius).
-2012. Add an ImageWrite function for the s3virge driver, so the pixmap
- cache support now works (#2264, Kevin Brosius).
-2011. Turn off PCI_RETRY by default in the glint driver, and various other
- driver updates (#2263, Alan Hourihane).
-2010. Fix a glint driver bug in WritePixmap for TX/MX chipsets (#2263,
- Alan Hourihane).
-2009. Update the Alpha unaligned access inlines in compiler.h, based on
- similar code in the Linux kernel (#2240, Matti Aarnio).
-2008. Fix a typo in the C&T driver (#2262, Nozomi Ytow).
-2007. Enable building libraries and clients for for sparclinux (#2261,
- Christopher Sekiya).
-2006. Define _XOPEN_SOURCE for Linux (#2261, Christopher Sekiya).
-2005. Add the vga copy plane expansion patch to the vgafb code (#2021,
- Jens Owen).
-2004. -
-2003. Fix a bug in xaaStipple.c which can cause a blitter lockup.
-2002. Fix a C&T bug that causes memory corruption when not in linear mode
- (#2260, Egbert Eich).
-2001. Only disable C&T transparency blits for HiQV chips below 65550, and
- fix the display pitch when acceleration is enabled (#2260,
- David Bateman).
-2000. Conditionally enable ScreenToScreenColorExpandFills for C&T HiQV
- chips (#2259, 2260, Nozomi Ytow, Egbert Eich).
-1999. Reduce the timeout period for C&T blitter lockups and reset the reset-bit
- after blitter timeouts (#2260, Egbert Eich).
-1998. Add DDC1/2 support for the C&T driver (not tested) (#2260, Egbert Eich).
-1997. Add a DDC module with DDC1 and DDC2 support for EDID version 1.x,
- and untested VDIF support (#2259, 2260, Egbert Eich).
-1996. Fix a problem switching from VT back to X when displayPitch
- != displayWidth (#2260, Egbert Eich).
-1995. Some colormap layer optimisations (#2258, Mark Vojkovich).
-1994. Add some missing micmap symbols to the loader's export list (#2257,
- Alan Hourihane).
-
-XFree86 3.9Nn (22 November 1998)
-1993. Set the valid gamma range as macros rather than having it hard coded
- in various places.
-1992. Always refer to and store the gamma values as those of the monitor,
- not of the correction. This means that the values stored in the
- ScrnInfoRec are now the same as those entered in the config file and
- on the command line.
-1991. Fix the colormap layer's handling of static colormaps (#2255,
- Mark Vojkovich).
-1990. Add XAA acceleration for pixmap->window N deep planar copies (#2254,
- Mark Vojkovich).
-1989. Add an xf86ChangeGamma() function to the colormap layer (#2253,
- Mark Vojkovich).
-1988. Have NameCompare() check for NULL pointers (#2252, Rik Faith).
-1987. Port Mark Vojkovich's accelerated line code form Permedia 2 to TX
- and Permedia 1 chips (#2249, Alan Hourihane).
-1986. Fix mono 8x8 pattern problem for Permedia 1 (#2249, Alan Hourihane).
-1985. Fix glint crash in CloseScreen, and set rgbBits to 8 by default
- (#2249, Alan Hourihane).
-1984. Fix glint CRTC setting alignment when using 24bpp (#2249,
- Alan Hourihane).
-1983. Give all cfb private indices unique names so that cfb's for multiple
- depths can be loaded on the same screen (#2248, 2250, 2251,
- Mark Vojkovich).
-1982. xterm patch #89, including the completion of double-sized character
- support (#2247, Thomas Dickey).
-1981. Fix an MGA dashed line clipping bug (#2246, Mark Vojkovich).
-1980. S3virge driver updates, including som acceleration, reinstatement of
- config options and chip ID changes (#2245, Kevin Brosius).
-1979. Fix some RAC-related problems with the glint driver (#2244,
- Alan Hourihane).
-1978. Fix some 64-bit problems in some unused driver code (for reference)
- (#2242, Matti Aarnio).
-1977. Fix a 64-bit alignment problem in cfb8line.c (#2242, Matti Aarnio).
-1976. Fix a typo in Pclose() (#2242, Matti Aarnio).
-1975. Update some Linux-related Imake.cf settings (#2242, Matti Aarnio).
-1974. -
-1973. Cirrus 546x memory interleaving (#2235, Corin Anderson).
-1972. XAA and HW cursor support for the Cirrus 546x series (#2235,
- Corin Anderson).
-1971. Fix a cirrus 546x clock setting problem that was introduced in 3.9Nm
- and add a few more predefined dot clocks (#2234, #2235, Corin Anderson).
-1970. Move the generic one-installed-colormap colormap handling functions
- into micmap.c, remove the use of STATIC_COLOR, update other fb
- layers to use the micmap functions where appropriate and ensure
- that they initialise InstallColormap, UninstallColormap, StoreColors
- and ListInstalledColormaps in their ScreenInit functions. Also move
- the global InstalledMaps array into micmap.c.
-
-XFree86 3.9Nm (15 November 1998)
-1969. libXv fix (#2233, Michael Schimek).
-1968. Add support for building clients on NetBSD/vax 1.3H (#2231,
- Chris Sekiya).
-1967. Add an alternate init function for the framebuffer manager. The new
- one takes a region rather than a box which allows disconnected regions
- to be managed (#2230, Mark Vojkovich).
-1966. XAA pixmap cache fix (#2229, Mark Vojkovich).
-1965. Add support to XAA for filled rects via ImageWrites (#2227,
- Mark Vojkovich).
-1964. Preliminary "XAnti" extension for antialiasing (#2224, Mark Vojkovich).
-1963. Fix glint driver coordinates when offscreen (negative) when using
- colour expansion and the NEGATIVE_X stuff (#2221, Alan Hourihane).
-1962. Add PCI IDs for S3 Trio3D and Savage chips to scanpci and xf86PciInfo.h
- (#2220, Harald Koenig).
-1961. Add support to XAA for the caching of planar colour expansion data,
- including an example of how to use it in the mga driver (#2215,
- Mark Vojkovich).
-1960. Xaw and xedit updates (#2205, Paulo Cesar Pereira de Andrade).
-1959. Provide code to initialise cirrus memory config registers on non-primary
- cards using config file options (#2202, Itai Nahshon).
-1958. Initial code for Cirrus Laguna I2C/DDC support (#2202, Itai Nahshon).
-1957. Fix some cirrus initialisation errors and MCLK calculation (#2202,
- Itai Nahshon).
-1956. Synch the cir.h and lg.h files (#2202, Itai Nahshon).
-1955. For newer Cirrus Alpine chips, replace most I/O operations to calls
- to the vgahw I/O routines, and configure them for MMIO when available
- (#2202, Itai Nahshon).
-1954. Fix mga G100/200 planemask problem (#2198, Mark Vojkovich).
-1953. Update the mga driver to use the new colourmap layer (#2198,
- Mark Vojkovich).
-1952. A new colourmap layer (#2197, Mark Vojkovich).
-1951. Redo the lbx colourmap fix in a multihead friendly way (#2196,
- Mark Vojkovich).
-1950. Make the resource access updates to the glint driver to get it working
- again (#2177, Alan Hourihane).
-1949. Fix Cirrus 546x big screen modes, 32bpp modes (#2175, Corin Anderson).
-1948. Support for the Cirrus 5464 (5462 remains untested) (#2175,
- Corin Anderson).
-1947. Fix xf86ValidateModes() to make the maxHeight parameter optional
- as documented (#2174, Corin Anderson).
-1946. Acceleration for the trident 3DImage/Cyber9388/Cyber9397 chipsets,
- and accel updates for other trident chips (#2161, Alan Hourihane).
-1945. Implement I2C layer for the trident driver (#2161, Alan Hourihane).
-1944. Add TGUI96xx hardware cursor support (#2161, Alan Hourihane).
-1943. Add some xkb entries for 105 key international PC keyboards (#2157,
- Matthieu Herrb).
-1942. Enable mode switching for the ViRGE driver (#2156, Kevin Brosius,
- 2200, Joe Moss).
-1941. Add depths 15,16,24 to the preliminary ViRGE driver (#2156,
- Kevin Brosius).
-1940. Replace __syscall() with syscall() in Linux/Alpha PCI code (#2211,
- Matti Aarnio).
-
-XFree86 3.9Nl (1 November 1998)
-1939. xterm patch #88 (#2152, Thomas Dickey).
-1938. Fix some build problems that show up on SunOS 4.1.4.
-1937. Allow the driver to give XAA the definition of a full planemask,
- with a reasonable default set when it doesn't (#2150, Mark Vojkovich).
-1936. XAA optimisation: when fgPixel == bgPixel draw opaque stipples as
- solid rects (#2150, Mark Vojkovich).
-1935. Preliminary S3 ViRGE driver conversion (#2148, Kevin Brosius).
-1934. Fix a bug in the LBX extension's colourmap code (#2143, Mark Vojkovich).
-1933. Add base address size and type fields to PciVideoRec (#2141,
- Egbert Eich).
-1932. Change the PCIInfo entries for NeoMagic chips (#2141, Egbert Eich).
-1931. Some C&T driver updates (#2141, Egbert Eich).
-1930. Add support for the Cirrus 5465 (and 5464, 5462 -- untested)
- (#2140, Corin Anderson).
-1929. Make the vgahw module a little easier to use by setting its own
- defaults where appropriate.
-
-XFree86 3.9Nk (25 October 1998)
-1928. Some XAA GC validation bug fixes and optimisations. This includes
- wrapping pixmap rendering to determine when pixmap cache invalidation
- is required (#2126, Mark Vojkovich).
-1927. Backout the dix fb,bg planemask manipulation added in a previous version
- (#2125, Mark Vojkovich).
-1926. Fix an MGA fastblt bug (#2124, Mark Vojkovich).
-1925. Accelerate zero width arcs on MGA (only use for rops other than
- GXcopy and when PCI retries are enabled) (#2124, Mark Vojkovich).
-1924. Restore default-promotion to the Xdmcp library (#2103, Thomas Dickey).
-1923. Prototype/ansification cleanup for Xserver/XIE, xfs, fontlib, mkfontdir,
- and fix some bugs found along the way (#2103, Thomas Dickey).
-1922. Set HasPoll to YES for Linux with glibc2 (#2095, Kars de Jong).
-1921. Fix some MGA modeline problems and change the G200 MCLK to 143MHz
- (#2088, Radislaw Kapitan).
-1920. Move xedit from the contrib tree to the main tree.
-1919. Xaw and xedit updates (see the changelog in the Xaw directory for
- details) (#2083, Paulo Cesar Pereira de Andrade).
-1918. Add support for BSD 4.4 style long file names in ar archives to
- the loader (#2066, Matthieu Herrb).
-1917. Some GNU/Hurd config/build updates (#2057, UCHIYAMA Yasushi).
-1916. Do a soft reset for secondary MGA cards prior to probing for the
- video memory size (#2052, Radislaw Kapitan).
-1915. sigset_t isn't an integer type on NetBSD (and some other OSs) so
- don't try to print it in xdm (#2048, Matthieu Herrb).
-1914. NetBSD's preprocessor emits a warning when it sees '#ifdef unix',
- which makes imake noisy (#2048, Matthieu Herrb).
-1913. xterm patches 85, 86, 87 (see xterm.log.html for details) (#2043, 2056,
- 2097, Thomas Dickey).
-1912. Change "fcd8859-15" to "iso8859-15".
-1911. Some updates to the "dacG" mga reset code, and enable it by default
- since it helps initialising an inactive secondary G200 (#2032,
- Radoslaw Kapitan).
-
-XFree86 3.9Nj (11 October 1998)
-1910. Fix the 8+24 overlay's CopyWindow wrapper so that it works properly
- with "NoAccel" or without hardware planemasks (#2041, Mark Vojkovich).
-1909. Reenable planemasks for SDRAM G200s and disable for all G100 (#2040,
- Mark Vojkovich).
-1908. Add mga overlay support for the TVP3026 (#2040, Mark Vojkovich).
-1907. Ansifiy and remove most warnings from the Xdmcp library and xdm
- (#2038, Thomas Dickey).
-1906. xterm patch 84 (see xterm.log.html for details) (#2036,
- Thomas Dickey, Bjorn Helgaas).
-1905. Enhancements for xedit (#2028, 2033, Paulo Cesar Pereira de Andrade).
-1904. Patch to make editres work properly (#2028,
- Paulo Cesar Pereira de Andrade).
-1903. Xaw updates (see the changelog in the Xaw directory for details)
- (#2028, 2033, Paulo Cesar Pereira de Andrade).
-
-XFree86 3.9Ni (6 October 1998)
-1902. Fix miCreateDefColormap() for depth 1.
-1901. Update the "extmod" module of the new extensions.
-1900. Fix some font-related problems introduced by the R6.4 merge.
-1899. Update the cirrus driver for the recent i2c module changes (#2025,
- Itai Nahshon).
-1898. Initial XAA acceleration for the cirrus driver (#2025, Itai Nahshon).
-1897. Add some option code to do a soft reset when restoring the video state
- for the "dacG" part of the MGA driver (#2012, Uli Walther).
-1896. Add some TTF encoding files (#2013-2016, Juliusz Chroboczek).
-1895. Resync the FreeType server interface with Xfsft-1.0.2, including
- code to read encodings from plain text files (#2013-2016,
- Juliusz Chroboczek).
-1894. Add an "8plus24" option to the MGA driver that turns on overlays when
- in 32bpp mode. Support is there only for the 1064 and SGRAM G100/G200
- chips so far (#2024, Mark Vojkovich).
-1893. Fix an MGA dashed line bug (#2024, Mark Vojkovich).
-1892. Add an "mga_sdram" option that turns off block mode and disables
- planemasks (#2024, Mark Vojkovich).
-1891. Add SGRAM and NonTEText optimisations to the MGA driver (#2024,
- Mark Vojkovich).
-1890. Add XYPixmap support to XAA (#2023, Mark Vojkovich).
-1889. Preliminary support for depth 8 + 24 mode. Depth 8 currently uses
- 32bpp pixmaps. Support is included for destructive and non-destructive
- overlays and driver-chosen transparency key (#2022, Mark Vojkovich).
-1888. Update imake for cpp changes with egcs-1.1 and gcc-2.8.1 (#2017,
- David Wragg).
-1887. Fix XvQueryAdaptors() when more than one adaptor is present, and
- export xf86XVScreenInit() to drivers (#2018, Michael Schimek).
-1886. Updates/improvements to the I2C module (#2008, 2018, Michael Schimek).
-1885. Don't include standard system headers when building XIE as a module.
-1884. Cleanup Xlibint.h, which significantly reduces the level of compiler
- warnings, and also cleanup XIE's error.h (#2007, Thomas Dickey).
-1883. Add support for built-in driver modes (#2006, Egbert Eich).
-1882. Ansify and remove gcc warnings for imake, makedepend, lndir, makestrs,
- makekeys and mkg3states) (#2005, Matthieu Herrb).
-1881. Introduce a "generic" PCI device (pseudo vendor/devids) for use with
- the generic vga driver (#1994, Egbert Eich).
-1880. Fix some bugs in the C&T driver (#1994, Egbert Eich).
-1879. Fix an XAA bug with CPU_TRANSFER_PAD_QWORD handling (#1994, Egbert Eich).
-1878. Sanity fix: if all devices of a screen are of type none assume
- resource type NONE in xf86AddControlledResource() even if specified
- otherwise (#1994, Egbert Eich).
-1877. Added more support to the resource code for mono devices (for
- consistency) (#1994, Egbert Eich).
-1876. Add RAC wrappers to the sprite functions (#1994, Egbert Eich).
-1875. Reset xf86Resetting in xf86Init.c (#1994, Egbert Eich).
-
-XFree86 3.9Nh (5 October 1998)
-1874. Temporary workaround to avoid static server build problem introduced
- in 3.9Ng.
-1873. Import and merge in X11R6.4 and its first three public patches.
-
-XFree86 3.9Ng (27 September 1998)
-1872. Rewrite the XAA NonTE text code, fixing the handling of overlapping
- characters (#2002, Mark Vojkovich).
-1871. Fix an typo causing a CapNotLast line bug in XAA (#2002, Mark Vojkovich).
-1870. Some updates to the FreeBSD/ELF support, including auto-detection
- of the binary format.
-1869. Update the Type1 and Speedo fonts.scale files to take advantage
- of the recent ISO 8859-2 encoding updates (#1995, Juliusz Chroboczek).
-1868. Update drivers to use miCreateDefColormap instead of calling
- the ones in the fb-specific code, update mfbCreateDefColormap
- to call the mi version, and remove the xf4bpp version.
-1867. ANSI-related cleanups for the C&T driver, and make use of the
- LoaderRefSymobols() code to eliminate loader warnings (#1993,
- David Bateman).
-1866. Fix pixmap cache sizing for C&T DSTN systems (#1993, David Bateman).
-1865. Fix a typo that affected the memory probing for C&T 65550 sysems
- with 2MB of memory (#1993, David Bateman).
-1864. Let the C&T driver accept '-depth 15' (#1993, David Bateman).
-1863. Reintroduce DirectColor visual support for depth >8 for the
- Millennium I (#1992, Andrew Aitchison).
-1862. Fixes and cleanups for Linux/Alpha build problems (#1989, 2000,
- Andrew P. Lentvorski).
-1861. Make some changes to the vgahw MMIO handling for Alpha platforms.
-1860. Cleanup and simply some of the mga driver/dac/clock code (#1991,
- Radislaw Kapitan).
-1859. Enable mga TVP3026 interlaced cursor (#1991, Radislaw Kapitan).
-1858. Enable the Pseudo-DMA window for the G100 in the mga driver (#1991,
- Radislaw Kapitan).
-1857. Change some tables in the mga driver to 'const' to help make sure
- that they are not abused, and fix the code that was abusing them
- (#1991, Radislaw Kapitan).
-1856. Fix some G200 problems introduced in 3.9Nf (#1988, 1991, Mark Vojkovich,
- Radislaw Kapitan).
-1855. Fix static server problems caused by item 1851 (based on #1984, 1985,
- Takaaki Nomura).
-1854. xman improvements for NetBSD/OpenBSD (#1983, Matthieu Herrb,
- Ross Harvey).
-1853. C&T update for SuperProbe (#1981, Taketoshi Sano).
-
-XFree86 3.9Nf (20 September 1998)
-1852. Update the sample config file to be consistent with the updated format.
-1851. Add a mechanism to allow modules to tell the loader which symbols from
- from other modules it references, and which of those are essential.
- This makes it possible to eliminate unnecessary warnings about
- unresolved symbols, and to trigger a fatal error where appropriate.
-1850. More attempts towards a working G100 server (#1982, Dirk Hohndel).
-1849. Update the mga driver for use with the resource management code.
-1848. Fix some bugs and typos in the resource management code.
-1847. Rework the vgahw module, abstracting the register accesses and split up
- the save/restore parts.
-1846. Add '\n' to some of the messages in PEXExtensionInit().
-1845. Fix the mga driver's handling of the option register in mga_dac3026.c.
-1844. Trap reentrancy to the FatalError() function and call abort() when
- this happens.
-1843. Avoid a bug in SunPro C 4.2 (ix86) that shows up when building libPEX5
- (#1980, David Holland).
-1842. Fix a typo in Xserver/Imakefile (#1979, David Holland).
-1841. Have the Xv DIX layer trap zero size src and/or dest, returning
- BadValue (#1978, Mark Vojkovich).
-1840. Parially accelerated lines for the Permedia 2 (#1977, Mark Vojkovich).
-1839. Some formatting, bug fix updates to the C&T driver, and reintroduce
- the screen blanking during initialisation for the C&T drivers
- (#1976, David Bateman).
-1838. Update the C&T driver to use the RAC wrapper (#1976, Egbert Eich).
-1837. Add a Resource Access Control (RAC) wrapper module which allows
- colourmap, cursor and fb access to be wrapped when necessary in
- cases where memory and/or I/O resources are being shared (#1976,
- Egbert Eich).
-1836. Back out item 1823 (mi bank enable) (#1976, Ebgert Eich).
-
-XFree86 3.9Ne (13 September 1998)
-1835. Remove the OS dependence in the formatting of docs in xfree86/doc/sgml
- (which removes the need for the BuildAllDocs setting).
-1834. Update mi and dix cursor handling to avoid displaying empty cursors
- (#1972, Mark Vojkovich).
-1833. Update Xv docs (#1971, Mark Vojkovich).
-1832. Add return values to the Get/Put driver functions in the Xv DDX
- (#1970, Mark Vojkovich).
-1831. Some preliminary reorganisation of the MGA driver (#1969,
- Mark Vojkovich).
-1830. Update CURSOR.NOTES (#1968, Mark Vojkovich).
-1829. MGA driver should recognise 15 as a valid depth (#1967,
- Andrew Aitchison).
-1828. Experimental G100 support for the MGA driver, and fix clock PLL
- programming (#1966, Radislaw Kapitan).
-1827. Add support for the 9660, 9680 and 9682 chips to the new trident driver,
- and add some initial acceleration (#1963, Alan Hourihane).
-1826. Fix some planemask test problems at 16bpp with the C&T driver (#1962,
- Taketoshi Sano).
-1825. Fix a problem with QWORD_PAD in XAA (#1961, David Bateman).
-1824. Fix SuperProbe's detection of some C&T HiQV chipsets (#1960,
- Taketoshi Sano).
-1823. Update the mi banking code to enable resources as required (#1959,
- Egbert Eich).
-1822. Update the generic VGA driver to use the new resource control code
- (#1959, Egbert Eich).
-1821. Restructure the C&T driver, and fix the following:
- - CRT half-screen blanking
- - 1bpp mode
- - several SEGV problems
- - the long standing LCD blank problem
- (#1959, Egbert Eich).
-1820. Allow a Device section without a BusID be acceptable for the primary
- vga device when multiple heads are detected (#1959, Egbert Eich).
-1819. New resource management code, which should provide an improved
- infrastructure for handling multi-head configuration, particularly
- where resource sharing is required (#1959, Egbert Eich).
-1818. Fix problems with NonTE ImageText in XAA (#1958, Mark Vojkovich).
-1817. Fix the tseng driver's handling of cases when there is insufficient
- free memory for acceleration to be used (#1957, Koen Gadeyne).
-1816. Change the RELATIVE_CHECK() macro in xf86Xinput.c to fix a multi-head
- cursor problem (Chris Bare).
-1815. Update xf86ReadPciBIOS to set the decode enable bit while reading,
- and update the mga driver to use xf86ReadPciBIOS when appropriate.
-1814. Use mmap for reading the BIOS on more platforms because the
- lseek/read method doesn't work in many cases when the offset is
- greater than 2G.
-
-XFree86 3.9Nd (6 September 1998)
-1813. Preliminary port of the trident driver for the ND (the old version
- has been moved to the olddrivers directory (#1956, Alan Hourihane).
-1812. Document the offscreen memory managers new ResizeArea function
- (#1955, Mark Vojkovich).
-1810. Allow the FreeType code to be build as an X server font module.
-1809. Add Latin2 support to the Speedo and Type1 font code (#1792,
- Robert Wilhelm).
-1808. Updates to XFree86 specific parts of FreeType (#1792, 1933,
- Robert Wilhelm, Juliusz Chroboczek).
-1807. Add the base FreeType 1.1 distribution to /xc/extras/FreeType, and
- update the build procedure to get the source from there.
-1806. Map the pseudo-DMA transfer window used on newer MGA chips, and use
- it for solid rects and spans (#1953, Mark Vojkovich).
-1805. Fix C&T HiQV detection (#1952, Taketoshi Sano).
-1804. Add dashed line support to XAA, and update the mga driver to use it
- (#1951, 1953, 1954, Mark Vojkovich).
-1803. Lots of glint driver updates, including a memclock option to set the
- mclk, and some more XAA functions for the older Permedia chip (#1950,
- Alan Hourihane).
-1802. Use POSIX macro S_IS* instead of (((m)&S_IFMT)==S_IF*) and replace
- "u_long" with "unsigned long" (#1949, UCHIYAMA Yasushi).
-1801. Fix IBM hw cursor pixel ordering (#1948, Alan Hourihane).
-1800. Remove accel/tga and accel/glint directories that are no longer needed
- (#1947, Alan Hourihane).
-1799. Build support for FreeBSD/ELF (#1946, Doug Rabson, Joachim Kuebart,
- Ollivier Robert).
-1798. Xaw and Xmu fixes (#1945, Paulo Cesar Pereira de Andrade).
-1797. HW Bresenham line drawing support for Tseng W32p and ET6000
- (#1944, Koen Gadeyne).
-1796. Fix depth/bpp issues at depth 16 and depth 15 with the IBM support
- in the ramdac module (#1943, Alan Hourihane).
-1795. Change messages in xf86PruneMonitorModes() so that they appear at the
- default verbosity level (#1942, Egbert Eich).
-1794. Print out clock ranges or fixed clocks scaled by the mul/div factors
- (#1942, Egbert Eich).
-1793. MGA G200 support (#1941, Radislaw Kapitan).
-1792. Preliminary I2C module (#1940, Itai Nahshon).
-1791. Add config support for building XFree86 on Linux with DECnet transport
- (#1939, Eduardo Serrat).
-
-XFree86 3.9Nc (29 August 1998)
-1790. 24bpp (high res display problems) and 32bpp (horizontal stripe) fixes
- for the mga driver (#1715, 1716, Doug Merritt).
-1789. Take the mga driver's YDstOrg parameter into account when it passed the
- framebuffer start address to the cfbInitScreen functions. This fixes
- problems that can show up when using more than 4MB.
-1788. Fix an extraneous pixel drawn for some H/V two point lines with
- a Millennium I (Mark Vojkovich).
-1787. Make the BuildLinuxDoc* symbols default to YES when HasSgmlFmt is YES
- (Marc La France).
-1786. Add a resize function to the offscreen memory manager (#1937,
- Mark Vojkovich).
-1785. Fix C&T 69000 horizontal CRT overflow register settings (#1936,
- David Bateman).
-1784. Add some missing UnlockDisplay calls to lib/Xv/Xv.c (#1935,
- Thomas Mueller).
-1783. Fix colourmap save problem (#1935, Thomas Mueller).
-1782. Support for LynxOS 3.0.0 and LynxOS PowerPC fixes (#1935,
- Thomas Mueller).
-1781. An ND version of the Cirrus driver, currently for 5480 and 5446 chips
- only. The old driver has been moved to xfree86/olddrivers/cirrus
- for reference (#1932, 1938, Itai Nahshon).
-1780. Xterm updates:
- - add configure test to infer if xterm should be installed setuid
- based on previously installed xterm (reported by Stephen Marley).
- - integrate/extend patch by Jason Bacon to implement quasi-continuous
- mouse reporting.
- - correct control sequences transmitted by function keys F1 to F4
- when sunFunctionKeys resource is true (it was still using the
- VT100 control sequences).
- - modify handling of backarrow key so that the control modifier
- toggles the backspace/delete interpretation set by the
- backarrowKey resource.
- - limit the row and column values used to report mouse position.
- (#1931, Thomas Dickey).
-1779. Fix clockRanges alloction problem in the tseng driver (#1927,
- Koen Gadeyne).
-1778. Fix tseng banked accelerated mode, and disable ImageWrite in banked
- mode if it requires more than 8k (#1927, Koen Gadeyne).
-1777. Some initial ET4000W32p acceleration (#1927, Koen Gadeyne).
-1776. Fix 24 and 32bpp tseng modes for cards with programmable clocks
- (#1930, Koen Gadeyne).
-1775. Implement the pci_retry and Memclk options for the MGA driver (#1927,
- Mark Vojkovich).
-1774. Update the mga driver to use MMIO for everything (making use of the
- MMIO support in the vgahw module), and do its own colourmap handling
- (#1927, Mark Vojkovich).
-1773. Add a MMIO version of the vgahw code to the vgahw module (#1926, 1928,
- Mark Vojkovich).
-1772. Small Xv DDX udpate (#1925, Mark Vojkovich).
-1771. Update the C&T driver to use the new ClockMulFactor code (#1924, 1936,
- David Bateman).
-1770. Add a ROP_NEEDS_SOURCE option to XAA, as needed by the C&T driver
- (#1924, David Bateman).
-1769. Add support to the tga driver for 24 plane cards (#1923, Tim Rowley).
-1768. Resync the scale[] find_scale[] arrays in the bitmap font code, which
- got out of sync when gzipped font support was added (#1921 Doug Ridgway).
-1767. Fix incorrect #ifdef in sunKeyMap.c for Danish Type 5 Sun keyboards
- (#1919, Erik Bertelsen).
-1766. Move HW cursor support from the XAA module to the ramdac module,
- update drivers for this change, move IBM cursor code from the glint
- driver to the ramdac module, and intergrate the HW cursor code fir
- the IBM ramdacs using a new helper function in the ramdac module.
- (#1918, Alan Hourihane).
-1765. Fix some more compiler.h problems for AXP platforms (#1918,
- Alan Hourihane).
-
-XFree86 3.9Nb (20 August 1998)
-1764. Fix some memory leaks in Xlib that happen on realloc failures
- (#1914, ??)
-1763. Optimise the way C&T acceleration is handled by reorganising
- some of the graphics primitives, including caching foreground and
- background colours, and moving some operations from the Subsequent
- primitives to the Setup primitives (#1915, David Bateman).
-1762. Introduce HW cursor for the Permedia2 (but p2 and p2v dont' work
- yet), fixup pm2v_dac and pm2_dac register naming, and add reset
- logic to reset the accelerator (but not used yet) (#1912,
- Alan Hourihane).
-1761. Fix building in xfree86/common when XINPUT is not defined (Egbert Eich).
-1760. Fix problem compiling xf86_IlHack.c on Alpha platforms.
-1759. Add an option "ShowOverscan" to the vgahw module which makes the
- unblanked area of overscan clearly visible.
-1758. Adjust the builtin mode for the 8bpp generic vga driver to blank as
- much of the overscan area as possible.
-1757. Adjust the horizontal blank end value in the vgahw module to avoid
- excessive blanking for most chipsets when running in generic vga mode.
-1756. Tseng driver updates, including:
- - Add support for chips with a set of discrete clocks instead of a
- programmable clock.
- - use the new ClockRanges code to auutomatically select between pixmux
- and normal modes, and for 24bpp clock scaling.
- - add a replacement for vgaHWBlankScreen() that doesn't do a
- sequencer reset.
- - remove some old, unused code.
- (#1910, Koen Gadeyne).
-1755. Loader updates required for the updated gdb (#1908, Paul Flinders).
-1754. Add VSTATUS control char support to xterm (#1907, Robert Earl).
-1753. Update the register probing of the chipset for the C&T HiQV chips
- in SuperProbe and the C&T driver (#1904, David Bateman).
-1752. Add cached screen to screen colour expansion to the C&T driver
- (1904, David Bateman).
-1751. Add options to XAA to allow acceleration primitives to be disabled
- individually (#1903, David Bateman).
-1750. Add preliminary solid Bresenham and two point line support for XAA,
- and code to make use of it for the mga driver (#1900-1902,
- Mark Vojkovich).
-1749. Introduce Helper functions for ramdac module, Save/Restore/SetBpp,
- and update the glint and tga drivers to use them (#1899, 1913,
- Alan Hourihane).
-1748. Move IBM640 code from the glint driver intot he generic ramdac module
- (#1899, Alan Hourihane).
-1747. Add ClockMulFactor and ClockDivFactor fields to clockRanges to allow
- for scaling of clocks when doing mode validation (#1898, 1905,
- Koen Gadeyne, 1906, Itai Nahshon).
-1746. Add recognition of the Voodoo 2 to the PCI list (#1897, Koen Gadeyne).
-1745. Some editres, xedit and xgc updates (#1788, 1842,
- Paulo Cesar Pereira de Andrade).
-1744. Lots of Xaw/Xmu updates (including ansification of Xaw and Xmu) --
- see the Changelog in xc/lib/Xaw for further details (#1776, 1788, 1842,
- Paulo Cesar Pereira de Andrade).
-1743. Support for GNU/Hurd (#1895, UCHIYAMA Yasushi).
-1742. Remove the implicit assumption in some areas that O_RDONLY is 0
- (#1894, UCHIYAMA Yasushi).
-1741. Merge in Metro Link's version of the 64 bit select fixes for the
- X server and lbxproxy (#1893, Stuart Anderson).
-1740. Set DlLibrary to be empty for OpenBSD, and remove formatted man pages
- on 'make clean' for OpenBSD and NetBSD (#1892, Matthieu Herrb).
-
-XFree86 3.9Na (14 August 1998)
-1739. Rework the way the maximum number of server client connections
- is determined, and experimentally increase MAXCLIENTS to 256.
-1738. Enable mmap support in Xvfb for Linux (#1889, Douglas Ridgway).
-1737. Xv DDX layer for XFree86, and add documentation for it to the DESIGN
- doc (#1883, 1884, Mark Vojkovich).
-1736. Modify AddScreen() and AllocateScreenPrivateIndex() to initialise new
- screen devPrivates to zero.
-1735. Ansify the Xv server dix code (#1881, Mark Vojkovich).
-1734. XAA doc update (#1880, Mark Vojkovich).
-1733. Cache the fg, bg and planemask values in the MGA driver and only
- change them when needed (#1878, Mark Vojkovich).
-1732. Preliminary ImageRead support for the MGA driver (disabled) (#1879,
- Mark Vojkovich).
-1731. Preliminary ImageRead support (#1878, Mark Vojkovich).
-1730. Use accelerated ImageWrites for PutImage and BackingStore and SaveUnder
- pixmap restores (#1878, Mark Vojkovich).
-1729. Fix an XAA text rendering bug for rotated text (#1878, Mark Vojkovich).
-1728. Tseng driver updates:
- - Add DPMS support
- - Replace some Boolean options with Tristate options
- - Add ET4000W32p support and the ICS5341 16-bit ramdac support
- - 1bpp and 4bpp support added (1bpp doesn't work yet)
- - cleanup mode validation code
- (#1877, Koen Gadeyne).
-1727. Fix problems using ffs() in the X server on 64bit platforms
- (specifically Linux/Alpha) (#1876, Raphael Finkel).
-1726. Fix for palette problems with the BT ramdac support in the ramdac
- module (#1873, Alan Hourihane).
-1725. Export the symbols __remq and __remqu from the loader for Alpha
- platforms (#1872, Alan Hourihane).
-1724. Fix a 24/32bpp problem with the IBM code in the ramdac module
- (#1871, Alan Hourihane).
-1723. Change the way the depth/bpp/fbbpp values are selected form the
- command line and config file to prevent inconsistently mixing values
- from the two sources (#1868, Alan Hourihane).
-1722. Fix some XAA hw cursor problems:
- - Apply the HARDWARE_CURSOR_INVERT_MASK flag only after applying
- HARDWARE_CURSOR_AND_SOURCE_WITH_MASK
- - Fix the 1-bit interleaving code
- (#1867, Koen Gadeyne).
-1721. Remove all the (currently unused) colour expansion code from
- the old branch that replaced some XAA functions. This should no
- longer be necessary (#1866, Koen Gadeyne).
-1720. Add XAA hw cursor support for the ET6000 (#1866, Koen Gadeyne).
-1719. Fix some problems that showed up with the glint driver when
- using a P2 and TX500 card together (#1861, Dirk Hohndel).
-1718. Have the glint driver remove all but one mode since the chipset
- doesn't support panning (#1859, 1870, Alan Hourihane).
-1717. Update the loader to correctly identify dll ELF modules (#1858,
- Itai Nahshon).
-1716. Fix an infinite loop in the xf86Config code that can happen with a
- config file error (#1858, Itai Nahshon).
-1715. Resync the TGA driver with changes elsewhere (#1856, 1874,
- Alan Hourihane).
-1714. Glint driver updates, including:
- - HW cursor for IBM 526 and 640 ramdacs
- - Depth 30 support for the IBM 640
- - GLINT MX (ELSA Gloria XL) support
- - More acceleration for the TX/MX chipsets
- - Fixes for Alpha platforms
- - Major acceleration updates for Permedia, Permedia2, 500TX and MX chips
- - Permedia 2v cleanups
- (#1855, 1857, 1860, 1863, 1864, 1865, 1890, Alan Hourihane).
-1713. Add support for depth 30 to xf86SetWeight() (#1854, Alan Hourihane).
-1712. Reinstate the ONLY_LEFT_TO_RIGHT_BITBLT and ONLY_TWO_BITBLT_DIRECTIONS
- XAA options (#1853, Alan Hourihane).
-1711. Add support for the IBM 640 ramdac to the ramdac module (#1852,
- Alan Hourihane).
-1710. Add finer grained offscreen memory management for the accelerator
- to the Tseng driver to allow as many acceleration features to be
- enabled as can be supported by the available offscreen memory
- (#1851, Koen Gadeyne).
-1709. Add XAA scanline colour expansion, screen-to-screen colour expansion,
- 8x8 colour pattern fills, ImageWrite to the Tseng driver (#1851,
- Koen Gadeyne).
-
-XFree86 3.9N (2 August 1998)
-1708. Fix some XAA problems (#1850, Mark Vojkovich and Koen Gadeyne).
-1707. Rename some of the XAA colour expansion stuff, and update the XAA docs
- (#1848, 1849, Mark Vojkovich).
-1706. Tseng driver updates (#1847, Koen Gadeyne):
- Add Mclk support, replace globals in tseng_bank.c with entries
- in the TsengRec, remove redundant parameter passing, fix a potential
- bug in the ET6000 memory detection code, implement memory limit
- checking, fix a bug in the 555/565 handling, cleanup locking/unlocking
- code.
-1705. Some fine tuning of the way the extension modules are build.
-1704. Merge in the new design branch. A full changelog for the new design
- branch can be found in the CHANGELOG.ND file.
-1703. Font-related X server buffer overflow fixes (Robin Cutshaw).
-
-XFree86 3.9Ak (11 July 1998)
-1702. xterm patches 81 and 82. Fix Linux/Alpha build problems,
- utmp handling on Solaris, some terminfo nits, and improve
- cursor colour (#1794, 1797, Thomas Dickey).
-1701. Fix CloseScreen() related problems (#1793, Marc La France).
-1700. Close some sockets that xdm was leaving open when running new
- sessions (#1704, Matthieu Herrb).
-1699. Fix usleep problems with static servers on SVR4.
-1698. Fix a problem parsing "ModeLine" entries (#1779, Keldon Jones).
-
-XFree86 3.9Aj (04 July 1998)
-1697. PC98 fix for VT switching, VideoBoard98 update (#1766, Takaaki Nomura).
-1696. xterm patches 79 and 80. Fix for F1-F4 key handling, fg/bg pixel
- value with -flipPixels, scrollbar color, keypad handling, and
- various terminfo enhancements (#1758,1762 Thomas Dickey).
-1695. Lots of Xaw work. See xc/lib/Xaw/Changelog for details
- (#1660, 1673, 1678, 1686, 1701, 1738, 1752, 1755, 1765
- Paulo Cesar Pereira de Andrade).
-1694. Add the library security fixes (#1722).
-1693. Fix rendering errors in the generic bit expansion code (#1746,
- Jens Owen).
-1692. Fix problem in Oak clock setting routines (#1744, Kevin Buhr).
-1691. Clean up vga16 (remove unused code, remove vga16's mfb (vga2 is used
- instead), clean up vga16's external name space). Minor fix to ATI
- driver. (#1742, Marc LaFrance).
-1690. Fix macro expansion in xf86Config.c (#1730, Jens Maurer).
-1689. On Linux, default the use of special or internal malloc's to NO
- (instead of forcing it to NO). Allow CloseScreen to free wrapper
- private storage in most servers. Push out backing store initialisation
- to the callers of the various <framebuffer>ScreenInit()'s. Change
- m68k's XF68_FBDev to use backing store low-level functions to
- save/restore the screen during VT switches. Minor fixup to loader
- message. (#1719, Marc La France).
-1688. Fixes for 24bpp and 32bpp on Matrox Millenium II. This fixes the
- horizontal stripe for modes using > 4MB (#1715,1716, Doug Merritt).
-1687. Fix build problems on LynxOS and enable keyboard LEDs on LynxOS 2.5.1
- (1712, Thomas Mueller).
-
-XFree86 3.9Ai (05 June 1998)
-1686. Add rendition directory. This is not included in the build process, yet
- (#1707, Marc Langenbach).
-1685. Make glint compile on Alpha. Some xtest fixes for Alpha (#1705,
- Christian Worley).
-1684. xterm patch 77,78, convert to ANSI C (#1702,1706 Thomas Dickey).
-1683. Fix compile problems under OS/2 (#1693, Holger Veit).
-1682. Fix xmag segfault (#1675, Andy Sloane).
-1681. Fix build problem of the static servers on FreeBSD. Fix build problem
- on SVR4(incomplete). Update PC98 Card Database(#1691, Isao Ohishi,
- Takaaki Nomura).
-1680. Minor fix to ATI driver clock code. Fix vga16 for xtest-detected
- problems. Fix up vga16's pixmap printing when enabled by DEBUG. There's
- no need for XFree86LOADER specifics in mibitblt.c(#1690, Marc La France).
-1679. Fix hw cursor on CT65555 and fix loader problem (#1688,1689 Nozomi Ytow).
-1678. Fix freeing of names when removing modes (#1685, Matthieu Herrb).
-1677. Enable ImageWrite in 24 bpp for C&T HiQV (#1684,1687 Nozomi Ytow).
-1676. Fix unknown symbol type 1e message in a.out loader (#1683,
- Matthieu Herrb).
-1675. xterm patches 75 and 76. Fix for print-window function, minor cleanups,
- lots of fixes from other people (see xterm.log.html) (#1681,1682,
- Thomas Dickey).
-1674. Make vga16 use backing store functions to save/restore the screen on VT
- switches. Don't call xf86InvalidatePixmapCache when bpp is 1 or 4
- (#1680, Marc La France).
-1673. Change PIC code to print names of ALL devices capable of displaying
- video. Return pointer to the last card instead of the first (#1662,
- Dejan Ilic).
-1672. Add skeleton driver for Tritech Pyramid 3D (#1661, Dejan Ilic,
- Mark Vojkovich).
-1671. Check additional pci bus in scanpci (Robin Cutshaw).
-
-XFree86 3.9Ah (28 April 1998)
-1670. Xterm patch 74 fix define conflicts and update print support (#1674,
- T.E.Dickey).
-1669. Xterm patch 73 added print window facility, terminfo updates,
- conditional include cleanup, debugging trace enhancements, and
- HP-UX configure updates (#1672 T.E.Dickey).
-1668. Framebuffer fixes leaving valid GC on exit, fix for opaque types
- (#1669 Marc Aurele La France).
-1667. Add ELF support for AXP platform (#1666 Stuart Anderson).
-1666. PCI function fixes for AXP platform (#1665 Alan Hourihane).
-1665. SiS updates (#1664 Mike Chapman, Mitani Hiroshi).
-1664. Fix CompressAllFonts define use in X11.tmpl (#1663 Matthieu Herrb).
-1663. Xaw updates including more functions for diaplayLists, fixes
- for simpleMenuWidget, boxWidget, and panedWidget (#1660 Paulo Cesar
- Pereira de Andrade).
-1662. Xdm seg fault fix (#1658 Matthieu Herrb).
-1661. Tseng PIXMUX updates (#1656 Krajcsovits Gyorgy).
-1660. Mouse driver loop restructuring and additional packet data
- checks (#1654, Oyvind Aabling).
-1659. PANIX build fix for PC98 platform (#1653, Satoshi Kimura).
-1658. Sync loss on cursor change fix (#1650, Mark Vojkovich).
-1657. Driver line fix, unresolved symbol fix, remove loading of xaavga256
- at depths greater than 8, glint 24bpp fix (#1645-1649 Alan Hourihane).
-1656. More XF86Setup patches, P9000 symbol fix, PC98 Imakefile sync (#1644
- Takaaki Nomura).
-1655. Tseng doc, accel sync with 3.3.2, PIXMUX and misc fixes (#1641,1642
- Koen Gadeyne).
-1654. ISC fix for usleep and glint probe fix for DELTA (#1639,1640 Michael
- Rohleder).
-1653. Add FreeType code to lib/font/FreeType, but the build-related
- things haven't been done yet (David Turner, Robert Wilhelm,
- Werner Lemberg, Mark Leisher, Juliusz Chroboczek).
-1652. Xterm patch 72 activity notification enhancement (#1659, T.E.Dickey).
-1651. Xterm patch 71 buffer overflow fix (#1651, T.E.Dickey).
-1650. Sync I128 server acceleration with 3.3.2 (Robin Cutshaw).
-
-XFree86 3.9Ag (05 April 1998)
-1649. AGX ScrnInfoRec fix, fix compiler warnings for Xprt and loader,
- fix vgaCloseScreen problem, add new ScreenRec functions to
- set/get pixmaps and wrapper functions, VC switch to use
- low-level backing store functions (#1635, Marc Aurele La France).
-1648. xfree98/XF86Setup sync with 3.3.2 (#1632, Takaaki Nomura).
-1647. xfree86/XF86Setup sync with 3.3.2 (#1629,1634 Kazutaka Yokota).
-1646. Back out the following R6.4-related changes:
- #1169, 1170, 1342 -- version numbering changes,
- #1167 -- CUP extension,
- #1225, 1282, 1341 -- EVI extension,
- #1171-1178, 1198, 1246, 1305 -- Xinerama extension,
- #1165 -- Xt Resource Configuration Management.
-1645. XAA fixes for xf86bpp (#1633, Alan Hourihane).
-1644. More 3.3.2 syncs, PC98 sync, usleep problem with FreeBSD,
- SVR4.0 build problem fixes (#1631, Takaaki Nomura).
-1643. Kensinngton Thinking and Expert Mouse fix (#1630, Kazutaka Yokota).
-1642. S3 968 fix (#1628, Kazutaka Yokota).
-1641. Add DoImageWrite for Permedia2 and partial 24bpp acceleration to
- the glint server (#1627, Alan Hourihane).
-1640. ISC sync with 3.3.2 (#1625,1626, Michael Rohleder).
-1639. Xterm patch 70 including Imakefile fix for logging, "ich"
- restoration, cursor color fix, "-vb" arg fix, character-set
- rework, SS2/SS3 control fix, terminfo updates (#1624, T.E.Dickey).
-1638. Add loader symbol for miSetZeroLineBias (#1623, Mark Vojkovich).
-1637. Fix duplicate symbols in s3 server (#1621, Takaaki Nomura).
-1636. glint cleanup for XAA autoload modules (#1620, Alan Hourihane).
-1635. xf86Config fixes for svga and accel servers, extmod load for all
- depths (#1618,1619, Alan Hourihane).
-
-XFree86 3.9Af (28 March 1998)
-1634. Add 1024x600 to the identified video modes in the chips server
- (#1617, Nozomi Ytow).
-1633. Resync xfree98 with xfree86 and resync some PC98 files with 3.3.2
- (#1616, Takaaki Nomura).
-1632. Fix micro typo in chips.sgml (#1615, David Bateman).
-1631. Define defaults for XF86Config file locations. Have make World remove
- Makefile.bak files. Resync ScrnInfoRec's for the last time (Hope
- springs eternal). "Externalise" InstalledMaps in all XFree?? servers.
- Remove reference to DEFAULT_MODULE_PATH in static servers. Deal with
- some of the warnings produced by gcc by default. Resync ATI driver with
- the version found in XFree86 3.3.2. Fix loader bug in dealing with XAA.
- (#1614, Marc La France).
-1630. Don't abort a static server if the Driver statement in the Device
- section is missing (#1613, Kazutaka Yokota).
-1629. Fix typo in #1606 and improve printing of mouse related messages
- (#1613, Kazutaka Yokota).
-1628. Build fixes for static S3 and S3V servers (#1613, Kazutaka Yokota).
-1627. Re-add 8x8 trap fill support in XAA (#1612, Mark Vojkovich).
-1626. Add new text replacements to glint server, add packed data modes, tune
- fifo handling, fix drawing bugs and others (#1609,1611, Mark Vojkovich,
- Alan Hourihane).
-1625. Add mouse related 3.3.2 changes to XF86Setup (which still doesn't
- compile) (#1608,1610, Kazutaka Yokota).
-1624. Update xdpyinfo to reflect mouse code changes (#1607, Kazutaka Yokota).
-1623. Merge missing mouse code from 3.3.2 (#1606, Kazutaka Yokota).
-1622. Resync xterm, add missing patches from 3.3.2 (#1605, Thomas Dickey).
-
-XFree86 3.9Ae (22 March 1998)
-1621. Bring over some of the new mouse code from the 3.3.2 tree.
-1620. Link X11 apps against libxpg4 on FreeBSD to get multibyte locale
- support.
-1619. SVGA/chips. include support for the new 69000 chipset. Fix up the
- memory probing for the 65554, 65555 and 68554 chips. Add probing for
- the 64200, 64300 and 69000 chips to SuperProbe. Fix the memory probing
- for the 65554, etc in SuperProbe. Some docs updates (#1603,1604,
- David Bateman).
-1618. Fix Mach32 text restoration (#1601, Marc La France).
-1618. Add Rendition V2x00 to vgaPCI.h (#1598, Marc Langenbach).
-1617. xterm patches. improve test for highlightColor so that xterm does not
- attempt to use that unless it is different from the foreground and
- background colors. remove ich and ich1 from xterm and xterm-8bit
- terminfo descriptions. restore 1-pixel overlap of scrollbar border with
- left edge of window. add a configure option, --enable-logfile-exec.
- make the ALLOWLOGFILEEXEC code compile & run, if configured. minor
- documentation nits. correct the problem in xterm with utmp by removing
- the reset of setuid/setgid before the main event loop (#1525,1571,1599,
- Thomas Dickey).
-1616. Change s3/svga from using 8x8 pattern fills to 8x8 color expand fills.
- Add support for S3's type planar 8x8 pattern fills to XAA. Add support
- for S3's planar 8x8 fills to the XAA stippled trapezoid stuff
- (#1594,1595,1596,1597, Mark Vojkovich).
-1615. Ensure the correct message for lines at startup (#1591, Alan Hourihane).
-1614. Fix XAA to allow vertical lines using TwoPointLine (#1590,
- Alan Hourihane).
-1613. Change the xf86orect.c code to always use a hardware filled rect rather
- than a software one when drawing vertical lines (#1589, Mark Vojkovich).
-1612. Add MICROSOFT_ZERO_LINE_BIAS flag to xaa to indicate that the hardware
- uses MicroSoft's line bias rules rather than X's. Fix the end point
- sematics for two point lines. Add TiledFilled Rects via image write.
- Fix a problem with the CopyArea wrapper syncing when it shouldn't. Fix
- twopoint line problems with XAA dashed lines. Make sure we alway check
- for one rect situations when using XAA polygon code (#1575,1576,1577,
- 1578,1579,1580,1581, Mark Vojkovich).
-1611. Add new MGA acceleration, including image writes and 8x8 pattern trap
- fills. Go back to two point lines. Add solid filled span replacement.
- Make PCI retries off for mga by default (need Option "pci_retry" to turn
- them on). Make hardware cursor work better in doublescan modes. And
- turn hw cursor on by default (#1582,1583,1592 Mark Vojkovich).
-1610. Removes assumption that we have a Trapezoid function (#1573,
- Alan Hourihane).
-1609. Fix ImageWrite code at 15bpp by fixing xaa not to rely on xf86bpp, but
- use the accel structure (#1572, Alan Hourihane).
-1608. Fix problem building resize on BSDI, update manpages, add log
- xterm.log.html (#1490, Thomas Dickey).
-1607. Small patch to xterm's 8-bit terminal description (#1481, Thomas Dickey).
-1606. Move framebuffer ModuleInit functions to separate C source files.
- Another fixup to mono's ScrnInfoRec (#1474. Marc La France).
-1605. Loader updates (#1467, Stuart Anderson).
-1604. Ensure window and GC privates are aligned on a sizeof(long) boundary.
- Minor bug fix to mfb and afb framebuffers. Reinstate building of Xibm
- server. Move pRotatedPixmap, pCompositeClip, fExpose, freeCompClip from
- GC privates to the GC structure proper (in preparation for the banking
- mi wrapper) (#1442,1443,1444,1445,1588 Marc La France).
-1603. xterm fixes for configuration (#1437, Bjorn Helgaas).
-1602. Lots of SVGA/ATI updates. Enforce architectural limits on panning &
- scrolling. Duplicate recent XF86_Mach64 changes (Bus detection, Chipset
- detection adjustments, Support for 16MB linear apertures, maxClock
- settings). First swipe at supporting adapters whose VGA has been
- disabled. Save and restore more registers on mode
- entries/switches/exits. Colour map initialization changes to make use
- of uninitialized entries more obvious. Bug fix to DSP register
- calculation. Support 15, 16, 24 and 32bpp on integrated controllers.
- Remove dependence on TimingTab. Include VGA DAC registers in verbose
- output. Skip sparse I/O probes when PCI configuration space indicates a
- device has registered a block I/O base. Virtual X rounding adjustments
- for packed modes. Documentation updates (#1430, Marc La France).
-1601. Clean up ScrnInfo, make vgaCloseScreen call the framebuffer's
- CloseScreen() function, determine more pricely whether the virtual
- resolution fits in video memory, minor optimization of cfb's
- ImageGlyphBlt entry (#1428,1429, Marc La France).
-1600. Fix typo in mga.h (#1418, Tim Rowley).
-1599. Fix some baserom/_baserom confusion (#1407, Gary Barton/Concurrent).
-1598. More fixes from Metro Link and some updates for clients. Remove
- all but one copy of sdimple.c (#1405,1406, Craig Groeschel).
-1597. Remove unnecessary byte_reversed arrays (#1400, Craig Groeschel).
-1596. Add missing Xarch.h (#1399, Craig Groeschel).
-1595. Add no-listen keyword to xfs (#1397, Topi Miettinen).
-1594. Build fixes for PC98 static build (#1391,1396 Takaaki Nomura).
-1593. Build fixes to loader directory (#1388, Alan Hourihane).
-1592. Some Link Kit fixes (#1384, David Bateman).
-1591. Add zoom initialization and fix blits on T2R (Robin Cutshaw).
-1590. Add support for several new mice, including Kensington ThinkingMouse,
- ALPS GlidePoint, Genius NetScroll, Genius NetMouse, Genius NetMouse,
- ASCII MieMouse, Logitech MouseMan+, Logitech FirstMouse+ (#1380,
- Kazutaka Yokota).
-
-XFree86 3.9Ad (25 January 1998)
-1596. Fix two buffer overflow problems in the X server.
-1595. Fix some libXt VSW5 failures (#1347, 1359-1363, 1365, Kaleb Keithley,
- Arthur Barstow).
-1594. Change server's default vendor string and release (#1342,
- Kaleb Keithley).
-1593. Fix problem entering mode_shifted characters with xdm and XKB
- (#1340, Kaleb Keithley).
-1592. Bump SunOS 4.x libXext rev (#1339, Kaleb Keithley).
-1591. Pick up PCI multimedia/video devices and display devices of all
- subclasses (not just VGA) in vgaGetPCIInfo().
-1590. Reinstate Xserver/hw/ibm for reference purposes.
-1589. Cirrus and vga256 driver changes to support the PowerPC machines.
- (1357, Gary Barton/Concurrent).
-1588. Organize xf86_ansic.h/xf86_libc.h/xf86_OSlib.h, and de-mangle xf86*
- libc calls. Move Probe routine to the beginning of the ScrnInfoRec to
- match the vgaVideoChipRec. Make the mach32, mach64, mach8, i128, and
- ibm8514 servers loadable. Use one global byte_reversed array. When
- SetCursor is called with a null CursorPtr, turn the cursor off. Fix
- CapNotLast lines and segments in mach64 and xaa. Copy some code from
- Metro-X 3 to handle panning at 24 bpp on Mach64. Mask the correct
- number of pitch bits when updating the CRTC_OFF_PITCH register. Use
- xf86scanpci instead of vgaPCIInfo. Fix tseng driver DPMS bug. Declare
- and initialize xf86PixmapIndex. (#1356, Craig Groeschel/Metro Link).
-1587. Add xf86Serial functions (#1355, Chris Bare/Metro Link).
-1586. New config file parser, new functions for accessing xf86Info,
- handle an XQUEUE race condition, make sure XqueQaddr is initialized
- (1353, Stuart Anderson/Metro Link)
-1585. Build cleanups and fixes to cursor handling for multi screen layout
- (#1354, Craig Groeschel/Metro Link).
-1584. Add portable and extensible PCI support framework (#1352,
- Gary Barton/Concurrent).
-1583. Support PowerMAX_OS on Motorola/Concurrent PowerPC machines
- (#1351, Gary Barton/Concurrent).
-1582. .cf and Imakefile changes to use PpcArchitecture and PpcSvr4Architecture
- definitions for consistency (#1350, Gary Barton/Concurrent).
-1581. Fix 9397 detection in Trident driver (#1376, Alan Hourihane).
-1580. Add support for the DacSpeed entry to the Mach64 server (#1375,
- Kevin Martin).
-1579. Fix 16bpp for the Permedia 2 (#1373, Alan Hourihane).
-1578. Fix DPMS for Trident cards (#1372, Alan Hourihane).
-1577. Add Option "no_pci_retry" to option code and the MGA driver (#1370,1371,
- Mark Vojkovich).
-1576. Add back CyberCont that was removed from Trident driver in 3.9Ac by
- mistake (#1369, Alan Hourihane).
-1575. Fix ImageWrite code to not read beyond the end of the source in cases
- of bad alignment (#1368, Mark Vojkovich).
-1574. xterm updates (#1366,1378 Thomas Dickey) including:
- - change the terminfo entry so that rs1 does a hard reset
- - modify treatment of hard reset by the xterm program to reset the saved
- lines
- - correct hard reset by also resetting user-defined keys.
- - change the way highlihting is implemented
-1573. Fix PutImage to work with Rops other than GXcopy (#1364, Alan Hourihane).
-1572. Fix clipping in 16bpp on tgui chipsets, fix 32bpp and add transparency
- (#1345,1346,1349 Alan Hourihane).
-1571. Some updates to stub driver to reflect current layout (#1343,
- Dejan Ilic).
-1570. Change xdm config to explicitly specify the VT used on OpenBSD (#1337,
- Matthieu Herrb).
-1569. Build fix for P9x00 driver (#1336,1344 Takaaki Nomura).
-1568. Resync xaa/Imakefile for PC98 (#1335, Takaaki Nomura).
-
-XFree86 3.9Ac (11 January 1998)
-1567. Fix some VSW5 failures in libXt (#1333, Kaleb Keithley).
-1566. xterm updates (#1332, Thomas Dickey) including:
- - Add xterm support for blinking text. It doesn't actually cause the
- text to flash, but text with the blink attribute can be displayed in
- color, using new resources colorBL and colorBLMode.
- - Corrected a missing save-cursor in the handling of SGR 1048.
- - Flush the output of the transparent printing after each line.
- - Correct the modes that are affected by save/restore cursor.
- - Corrected placement of one of the XSync calls which had the
- side-effect of writing on the window border when the xterm was
- resizing from 132 to 80 columns.
- - 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).
-1565. Add detection of Intel TX chips and Pyramid 3D TR25202 to scanpci
- (#1330, Dejan Ilic).
-1564. Fix xtest related problems on MGA (related to syncing before reading)
- (#1329, 1334, Mark Vojkovich).
-1563. Possible fix for Millennium II crashing (#1328, Mark Vojkovich).
-1562. Add more careful checking of $HOME/.xsession in the default xdm
- Xsession script (#1327, Geoff Wing).
-1561. Fix uninitialised variables in decddx (#1326, Kaleb Keithley).
-1560. Fix a typo in the Xlib docs (#1325, Kaleb Keithley).
-1559. Add 8x8 pattern filled 1 rect polygons to XAA. Also included is
- an 8x8 pattern filled trapezoid function (#1324, 1331, Mark Vojkovich).
-1558. Add more conservative limits for when XAA uses trapezoid fills rather
- than spans (#1323, Mark Vojkovich).
-1557. Add transparent 8x8 pattern fills to s3/svga (#1322, Mark Vojkovich).
-1556. Xt (VSW5 failures): Xt11/XtCallConverter - Test Purposes 11, 12, 13
- (#1321, Kaleb Keithley).
-1555. Xt: XtMakeGeometryRequest doesn't emit error if parent != composite
- (#1320, Kaleb Keithley).
-1554. S3 (svga) ramdac fixes in IBMRGB52x_Init, TI_3020_3025_Init,
- NORMAL_PreInit, and ATT_409_498_Probe routines, including fixes for
- the use of the dacSpeeds array (#1319, Craig Groeschel/Metro Link).
-1553. Fixes for Permedia PM2 support to correct 32bpp, and improve things
- for 16bpp (#1318, Alan Hourihane).
-1552. P9x00 driver (#1317, Joerg Knura).
-1551. Allow xvidtune to be driven by the keyboard (#1315, via Kaleb Keithley).
-1550. Add missing exported symbols to Win32 DLLs (#1314, Kaleb Keithley).
-1549. Detect an extra Trident Cyber chip (#1313, Alan Hourihane).
-1548. Add timeouts to all Tseng "wait for something" functions (#1312,
- Koen Gadeyne).
-1547. Tseng driver documentation update (#1311, Koen Gadeyne).
-1546. Update xterm man page, configure script and related things (#1310,
- Thomas Dickey).
-1545. Add a version number to xterm, and make the -version and -help options
- used before attempting to open the display (#1310, 1316, Thomas Dickey).
-1544. Implement logic to permit xterm to work with proportional fonts.
- This is done by rendering the characters on a fixed pitch (#1310,
- Thomas Dickey).
-1543. Fix missing planemask in XAA function (#1309, Mark Vojkovich).
-1542. Fix XAA syncing inconsistencies (#1308, Mark Vojkovich).
-1541. Allow Trident 9397 and later 3D chipsets to work by not using
- acceleration (#1307, Alan Hourihane).
-1540. Fixes for older Trident Cyber series (#1307, Arthur Tateshi).
-1539. Fix includes for xfwp (#1306, Craig Groeschel/Metro Link).
-1538. Fix for large pixmaps in XINERAMA extension (#1305, Kaleb Keithley).
-1537. Xlib: XGetICValues fails for {preedit,status}Attributes
- (#1299, Kaleb Keithley).
-1536. Add locale and xkb files for Lithuanian (#1298, Ricardas Cepas).
-1535. Device updates for scanpci (Robin Cutshaw).
-1534. First cut at cleaning up the parallel make dependencies (Robin Cutshaw).
-
-XFree86 3.9Ab (29 December 1997)
-1533. Reorganize the acceleration code in the tseng driver. Fix tseng XAA init
- problem (#1303, Koen Gadeyne).
-1532. Add support for changing the MClk from the XF86Config file for
- W32p cards with ICS5341 RAMDAC and for the ET6000 family (#1302,
- Koen Gadeyne).
-1531. Add option to build xterm without tek4014 emulation. Add option to
- build xterm with default TERM value other than "xterm". Apply some
- minor bugfixes to OS/2 version. Fix configure help message and missing
- quotes in memmove/bcopy configure test (#1297, Thomas Dickey, Darren
- Heibert).
-1530. Add support for clock setting of the new trident chips (#1294,
- Alan Hourihane).
-1529. XAA vertical line speedup (#1293, Alan Hourihane).
-1528. Add panning for Permedia and Permedia 2 (#1292, Alan Hourihane).
-1527. Add a few more messages to tseng driver and clean up the use of
- the different bytes-per-pixel variables. Add "showcache" option
- (#1300,1301, Koen Gadeyne).
-1526. Fix XAA pixmap cache bug with 16bpp and RGB=555 or 32bpp (#1295,
- Walter Gadeyne).
-1525. Fix ImageWrite for Tseng (and re-enable it) (#1296, Koen Gadeyne).
-1524. Fix horizontal lines in Tseng driver (#1291, George Krajcsovits).
-1523. Support MUSIC MU9C4910 RAMDAC in Tseng driver (#1290, Koen Gadeyne).
-1522. Fix bad color in hardware linedraw for Tseng (#1290, Koen Gadeyne).
-
-XFree86 3.9Aa (20 December 1997)
-1521. Fix border colours for Trident server (#1289, Alan Hourihane).
-1520. Major update to Mach64 server. Proper identification of the different
- chips. Support for 16MB boards. Increased max DAC speed settings for
- newer chips. Support for AGP RagePro cards. Block write mode for
- RagePro chips. 1600x1200 mode support for VT and newer chips. Use the
- auxilliary register aperture on chips that support it. Use 16MB memory
- aperture on PCI Mach64s with integrated controllers.
- (#1288, Kevin Martin).
-1519. New code for the glint server. Preliminary support for the Permedia 2
- hardware cursor. Preliminary support for panning the display with
- multiple modelines for Permedia/Permedia 2. Fix ELSA Permedia 2 boards.
- Cleanup of glint_init.c. Fix DGA when using software cursor. Addition
- of code to not save VGA state if the VGA core is disabled.
- (#1285,1286,1287, Alan Hourihane).
-1518. Fix the "invalid depth" problem with packed 24 (#1284, Andrew Aitchison).
-1517. Fixes to finish keyboard layout (Johan Myreen).
-
-XFree86 3.9z (14 December 1997)
-1516. Fix loss of sync while panning problem and attempt to fix the occasional
- crashes of the Millennium II by restricting the MGACountRam function
- to test the first 8MB, only (#1280, Mark Vojkovich).
-1515. Fix XF86Setup to create a (symbolic) link of /usr/X11R6/bin/X when it
- doesn't exist (#1279, Matthieu Herrb).
-1514. Fix solid trap/rect fill bugain the mga server for the Millennium II
- that was hurting performance severely (#1277, Mark Vojkovich).
-1513. Reenable BitBlt accelerations for Millennium II (#1271, Mark Montague).
-1512. Fix mmap memory leak in IGS driver. ARM32/NetBSD specific fix for
- xf86MapInfoMap (#1265, Katrina Maffey).
-1511. Resync change 1474 for PC98 and fix a reference to usleep on SVR4
- (#1264, Takaaki Nomura).
-1510. Add BLK opaque color expansion for 2164 and change the mga code to use
- a lookup table for XFree->mga rop conversions (#1261, Mark Vojkovich).
-1509. Fix XAA hardware cursor support for BT485 ramdacs
- in the S3/SVGA server (#1260, Mark Vojkovich).
-1508. Fix VT switching hang in FreeBSD (#1259, Joerg Wunsch).
-1507. Enable MMIO / linear FB on Cirrus 7548. Experimental patch for screen
- expansion (640x480 on 800x600 LCD) which doesn't seem to work, yet
- (#1258, Achim Oppelt).
-1506. Fix gc validation (#1257,1262 Mark Vojkovich).
-1505. Fix SIGSEGV in xf86setup (Dirk Hohndel).
-1504. Extend XF86Setup to allow selecting the modes and the default color
- depth (Dirk Hohndel).
-1503. Fix build problem on Solaris 2.6/x86 with gcc 2.7.2.3.
-1502. Fix Solaris 2.x + gcc build problem in xfwp (#1272, Takaaki Nomura).
-1501. Xkb{Get,Set}PerClientControls missing from XKBlib.h (#1283,
- Kaleb Keithley).
-1500. BSD 4.4 sockets not handled correctly in xfwp/transport.c (#1276, 1281,
- Kaleb Keithley).
-1499. Local connection doesn't work for lbxproxy on AIX (#1275,
- Arthur Barstow).
-1498. Get fcntl flags in Xtrans before setting them (#1268, Kaleb Keithley).
-1497. Fix 'Xnest -query' on IBM (#1263, Kaleb Keithley).
-1496. Fix X server core dump after disconnecting from a font server
- (#1256, Arthur Barstow).
-1495. Xserver:Security Policy parsing code returns bogus value on suceess
- (#1254, M.S. Ramesh).
-1494. Install app-defaults in /var (#1253, Kaleb Keithley).
-1493. Some xfwp fixes (#1252, Arthur Barstow).
-1492. Fix some Win32 problems (#1251, 1255, Kaleb Keithley).
-1491. DPMS was missing from pandix main.c (#1246, Kaleb Keithley).
-1490. Solaris 2.x LOCALCONN updates (#1269 Kaleb Keithley).
-1489. DPMS updates (#1229, Kaleb Keithley).
-1488. KeyPress event doesn't use XKB state when GrabsUseXKBStateMask is set
- (#1227, Kaleb Keithley).
-1487. Add EVI (Extended Visual Information) server extension (#1225, 1282,
- Kaleb Keithley).
-1486. Fix some Xmb man pages and specs docs (#1220, 1270, Kaleb Keithley).
-1485. Plugin fixes (#1219, 1221, 1224, 1226, 1247, 1273, Kaleb Keithley).
-
-XFree86 3.9y (6 December 1997)
-1484. Fix some initialization problems in the xkb programs (#1233,
- Andreas Schwab).
-1483. Fix loader to resolve symbols properly in Xext (#1250, Robin Cutshaw).
-1482. Fix loader on Solaris and enable it for SVR4 (#1248,1249, Robin Cutshaw).
-1481. Fix some problems with T2R support (#1245, Robin Cutshaw).
-1480. Fix rfhcnt calculation and VT swithcing in mga driver. Allow DirectColor
- on Millennium II cards (#1241,1242,1243,1244, Mark Montague).
-1479. Potential fix for s3/svga cursor support for Ti ramdacs. Remove a
- mistake from the s3/svga acceleration code (#1237, Mark Vojkovich).
-1478. Switch the MGA driver over to XAA Hardware Cursor. Only support for
- TVP3026 is included (#1236,1239, Mark Vojkovich).
-1477. Add delayed syncing abd faster arcs ub 8bpp to mga driver (#1235,
- Mark Vojkovich).
-1476. Fix another SIGSEGV in xterm, where wrong assumptions about the type of
- widget passed to an action handler were made (#1234, Thomas Dickey,
- Arfst Ludwig).
-1475. Fix the wraparound problem with the Mach32 cursor and add another seven
- pixels to the possible width of the cursor (#1232, Bryan Feir).
-1474. Remove vga256/vgainit (#1231, Mark La France).
-1473. Fix a namespace collision in Mach8 server (#1230, Mark La France).
-1472. Fix SIGSEGV when some internal xterm buffers overflowed (#1228,
- Thomas Dickey).
-1471. Fix HiQV version of ImageWrite in the C&T driver (#1222,1223,
- David Bateman).
-1470. Yet another attempt to fix packing order for dashed lines (#1217,
- Mark Vojkovich).
-1469. Build fixes for Xext (#1216,1238 Takaaki Nomura).
-1468. Remove all references to the W32 server (but not the actual server code)
- (#1215, Koen Gadeyne).
-1467. Complete initial support for Permedia 2 and add some acceleration for it
- (Alan Hourihane).
-1466. Some more code for supporting the IBM RGB640 in the glint server
- (Dirk Hohndel).
-
-XFree86 3.9x (23 November 1997)
-1466. Updates for SCO (#1211, 1212, J. Kean Johnston).
-1465. Fix netscape plugin core dump when transfer is interrupted (#1209,
- Kaleb Keithley).
-1464. Registry updates (#1205, Kaleb Keithley).
-1463. Preliminary imake support for different Linux distributions (#1203,
- Kaleb Keithley).
-1462. Enable JIS, SJIS, EUC, etc. on X_LOCALE machines (#1201, Kaleb Keithley).
-1461. Linux and HP imake cf updated (#1200, Kaleb Keithley).
-1460. Updates to XINERAMA (#1198, Kaleb Keithley).
-1459. Make the DPMS extension a more "standard" item (ie, its library code
- is now in libXext) (#1197, Kaleb Keithley).
-1458. xload doesn't need libutil and libkvm on NetBSD and OpenBSD (#1189,
- Scott Reynolds).
-1457. Separate module-specific and non-module-specific Xserver/Xext code
- (#1149, Holger Veit).
-1456. OS/2 updates (don't use WIN32 file handling) (#1149, Holger Veit).
-1455. Clean up XAA calls in glint server (#1210, Alan Hourihane).
-1454. Adapt memory detection in I128 server to T2R (#1208, Robin Cutshaw).
-1453. Add DGA to glint server and get xvidtune to work with it (#1207,
- Alan Hourihane).
-1452. Cleanups and preliminary support for the Trident 3DImage975 and
- 3DImage985 (#1206, Alan Hourihane).
-1451. Add stipple acceleration to the tseng driver (#1192, Koen Gadeyne,
- Mark Vojkovich).
-1450. Add better text acceleration to the tseng driver (#1190, Koen Gadeyne).
-1449. Fix HiQV image writes (#1191, David Bateman).
-1448. Remove the need for the VideoMemSave buffers in glint server (#1196,
- Alan Hourihane).
-1447. Handle bogus base address in vgaPCIInfo for s3/svga (#1194, Mark
- Vojkovich).
-1446. Fix XF86Setup to work with Tcl/Tk 8.0 and improve support for future
- mouse protocols in XF86Setup (#1158,1159, Joe Moss).
-1445. Fix DGASetViewPort problem in S3 server (#1157, Harald Koenig).
-1444. Add -U flag to imake (#1156, Chris Demetriou).
-1443. First cut for I128 Revolution support (#1155, Robin Cutshaw).
-1442. Fix packing order for dashed lines (#1154, 1188, Alan Hourihane, Mark
- Vojkovich).
-1441. Fix joycal.c to work with Linux 2.1.x (#1153, Robin Cutshaw).
-1440. Fix ImageString xtest results. Call miImageGlyphBlt instead of
- cfbImageGlyphBlt8 (#1152, Alan Hourihane).
-1439. Add overlay support for the IBM RGB526 (disabled)(#1151, Mark Vojkovich).
-1438. Fix setting maxclock in s3/svga (#1151, Mark Vojkovich).
-1437. Print module version in plain text (#1150, Holger Veit).
-1436. Correct change 1390 (#1148, Takaaki Nomura).
-
-XFree86 3.9w (16 November 1997)
-1435. Remove some compiler warnings.
-1434. Fix lcPublic state_depend_encoding test in Xlib (#1181, Kaleb Keithley).
-1433. Fix buffer overrun in lib/X11/omGeneric.c (#1180, Kaleb Keithley).
-1432. Add new XINERAMA extension (#1171-1178, Kaleb Keithley).
-1431. Update man pages for X11R6.4 (#1169, 1170, Kaleb Keithley).
-1430. Add new CUP (Colormap Utilization) extension code (#1167,
- Kaleb Keithley).
-1429. Add resource configuration management code to libXt (#1165,
- Arthur Barstow).
-1428. Xkb{Get,Set}PerClientControls not implemented in Xlib (#1164,
- Kaleb Keithley).
-1427. Fix bug in lbxproxy's detection of synonymous server names (#1161,
- Arthur Barstow).
-1426. Various xfwp fixes and cleanups (#1103-1107, 1109, 1110, 1140-1144,
- 1160, 1162, 1163, 1166, 1168, 1179, Arthur Barstow).
-1426. Fix select prototype for HP/UX 10.x (#1102, Kaleb Keithley).
-1425. Fix a 64-bit nit in MakeRootTile (#1080, Kaleb Keithley).
-1424. Export weak symbols in elistgen.sun (#1078, Kaleb Keithley).
-1423. Put back the reference to the xfree68 directory in
- xkbcomp/symbols/Imakefile.
-1422. Add xkb support for some older HP keyboards (#1077, Kaleb Keithley).
-1421. Fix some typos in the iso8859-1 compose file (#1076,
- Niels Kristian Bech Jensen).
-1420. Xlib UTF support uses longs, but should use wchar_t (#1068,
- Kaleb Keithley).
-1419. HP/UX 10 config update (#1066, 1079, Kaleb Keithley).
-1418. Update lbxproxy to use the Xtrans library (#1060, Arthur Barstow).
-1417. Deal with gratuitous Xserver colormap flashing (#1059, Kaleb Keithley).
-1416. LBX-related updates to the Xserver (#1049, Kaleb Keithley).
-1415. Remove Xibm server from the source (#1048, Kaleb Keithley).
-1414. Remove xmh from the core tree (#1043, Kaleb Keithley). Note, only
- the entry for it in xc/programs/Imakefile is removed here so far, and
- we may want to move it into our supported contrib.
-1413. Update sgi.cf (#1042, Kaleb Keithley).
-1412. Fix inconsistency with the naming of general man pages and the sections
- they are installed in (#1040, Kaleb Keithley).
-1411. Fix xrx plug-in build problem on Solaris 2.6 (#1039, Kaleb Keithley).
-1410. Fix Xserver crash when using lbxproxy and xdm-auth-1 (#1038,
- Kaleb Keithley).
-1409. Fix an infinite loop in CreateVisual() in lbxproxy (#1034,
- Arthur Barstow).
-1408. locale.alias updates (#1032, Kaleb Keithley).
-1407. Misc very minor TOG updates (#1031, Kaleb Keithley).
-1406. Fix for MaxClients not being defined correctly in the Xserver
- (#1030, Sekhar Makkapati).
-1405. Fix an Xserver problem related to FreeCursor() in
- DisposeWindowOptional() (#1026, Kaleb Keithley).
-1404. Add setusercontext support to xdm for FreeBSD (#1025, Kaleb Keithley).
-1403. Use named pipes for local connections with Solaris 2.x (#1011, 1067
- Kaleb Keithley).
-1402. Fix lost support for non-standard encodings in Xlib (#1005,
- Kaleb Keithley).
-1401. Fix Xserver crash when colormap of copyfromparent given (#990,
- Sekhar Makkapati).
-1400. Make lbxproxy try another port when bind fails (#988, Arthur Barstow).
-1399. Remove the Xserver '-config' flag for OSs that don't have tight command
- line length restrictions (#987, Kaleb Keithley).
-1398. Remove some vararg cruft from the Appgroup library (#986,
- Kaleb Keithley).
-1397. Fix SecurityLookupIDByClass in Xserver (#1186, Sekhar Makkapati).
-1396. Fix for sample site.def (#1184, Sekhar Makkapati).
-1395. Fix references to LINE_MAX in Xos_r.h (#1182, Sekhar Makkapati).
-
-XFree86 3.9v (9 November 1997)
-1394. Add unrolled text code for the 9 pixel width fonts (#1147,
- Mark Vojkovich).
-1393. Fix planemask/transparency problems in tseng driver (#1146,
- Harald Nordgard Hansen).
-1392. Add Fire GL 3000 option for glint server (#1139, Bart van den Broek).
-1391. Remove unnecessary ARM32 code (#1138, Katrina Maffey).
-1390. Fix a crash in XCopyPlane after server reset (#1137, Katrina Maffey).
-1389. Add support for PS/2 Intellimouse (#1136, Tim Goodwin).
-1388. Add a PolyArc replacement for s3/svga in 8bpp when using a linear
- framebuffer. Add a stippled rect speedup for destinations less than 32
- pixels wide (#1135, Mark Vojkovich).
-1387. Add read speed benchmark and support for >8bpp modes to dga test
- program (#1134, Koen Gadeyne).
-1386. Fix dashed lines for vga256 (#1133, Alan Hourihane).
-1385. Enable trapezoid fill on mga (#1132, Radek Kapitan).
-1384. Fix ImageWriteFlags in trident driver (#1131, Alan Hourihane).
-1383. Fix wide line problem in the static server (#1129, Brian Wainscott).
-1382. Fix syncing problems with the scanline routines in XAA (#1128,
- Alan Hourihane).
-1381. Restructure glint server to call the AccelInit function in a sane
- manner (#1127, Alan Hourihane).
-1380. Add planemask support for the tridents and add hardware clipping for
- the Cyber chipsets. Add Cyber 9397 detection (#1126,1130, Alan Hourihane).
-1379. Fix a typo in vgaPCI.h (#1125, Alan Hourihane).
-1378. Fix a problem with setting the maximum clock value on s3 cards at depths
- other than 8bpp (#1123, Steve Forsythe).
-1377. Fix dashed lines for matrox driver (#1122, Radek Kapitan).
-1376. Use correct arguments to xf86ImageWrite when uploading cursor image to
- videoram. Units of pixels instead of bytes (#1120, Mark Vojkovich).
-1375. Fix s3/svga cursor location computation error (#1119, Mark Vojkovich).
-1374. Improve GC validation code in XAA (#1117,1118,1121, Mark Vojkovich,
- David Bateman).
-1373. Add accelerated color expansion for all color depths and for all
- W32-style chips (#1116, Koen Gadeyne).
-1372. Add Warpnext/Warpprev to twm (#1114, Benjamin Gras).
-1371. One more fix to restore changes to variable types made in change 1347.
- This should fix MouseSystem mice (#1111,1124,1145, Steve Forsythe,
- Andrew Aitchison).
-1370. Add missing pm_accel.c.
-1369. Add ImageWrite support to glint server (Alan Hourihane).
-
-XFree86 3.9u (1 November 1997)
-1368. Add support for I128 Revolution to scanpci and SuperProbe (#1108,
- Robin Cutshaw).
-1367. Compile fixes for ARM32/NetBSD (#1099, Katrina Maffey).
-1366. Change mga to use bresenham lines instead of two point (#1098,
- Radek Kapitan).
-1365. Add mga stipple code so that it is 256K pixels barrier sensible and
- even faster than current XAA stipple code (#1097, Mark Vojkovich,
- Radek Kapitan).
-1364. Move C&T hw cursor into XAA. Re-enable ImageWrite on C&T. Rewrite 32bpp
- HiQV code (should be almost usable) (#1096, David Bateman).
-1363. Get the ch8398 work in tseng driver at every color depth and any hibit
- setting (#1095, George Krajcsovits).
-1362. Changes to XAA hw cursor code to better support switching between hw
- and sw cursor (#1094, David Bateman).
-1361. Fix incorrect parenthesis placement caused by hand-applying part of
- change 1347 (#1092, Mark Vojkovich).
-1360. Resync PC98 Imakefiles (#1091, Takaaki Nomura).
-1359. Build fix for PANIX (#1090, Takaaki Nomura).
-1358. Fix a duplicate inclusion of <sys/termio.h> on ISC inside xterm/screen.c
- and update the help text for xterm to correspond with the appropriate
- commandline switches (#1089, Michael Rohleder).
-1357. Fix some incorrect type modifications in change 1347 (#1087,1088
- Alan Hourihane, Michael Rohleder).
-1356. Fix mga_xaarepl.c to compile with non-GNU cc (#1086, Robin Cutshaw).
-1355. Clean up vgaPCI.h for Trident (#1085, Alan Hourihane).
-1354. Fix a bug introduced in change 1222 (#1084, Koen Gadeyne).
-1353. Remove amiga/ataritt files from xkbcomp/symbols Imakefile (they have
- been moved to a subdir in change 1338) (#1083, Takaaki Nomura).
-1352. Update VideoBoard98 (#1081, Takaaki Nomura).
-1351. Add DO_NOT_BLIT_STIPPLES to the xf86AccelInfoRec.Flags (#1070,
- Marc Vojkovich).
-1350. More work for Permedia 2 support. Still doesn't work (Dirk Hohndel).
-1349. Split acceleration drivers for GLINT and Permedia. Get glint server
- to work (again) on Fire GL 1000 (Helmut Fahrion).
-1348. Get glint server to work on Fire GL 3000 (Bart van den Broek).
-
-XFree86 3.9t (26 October 1997)
-1347. Add support for ARM32 architecture and IGS CyberPro 2010 support
- (#1052, Digital Equipment Corporation).
-1346. Multi-display support for lbxproxy (#969-971, 977, 978, Arthur Barstow).
-1345. Remove some misleading 32-bit comments in Xlib (#967, Kaleb Keithley).
-1344. Additional symbols for Japanese 109 key keyboard (#962, Kaleb Keithley).
-1343. Faster bit counting algorithm for Xlib/Xt modifier code (#958,
- Kaleb Keithley).
-1342. XKB updates for hp ddx (#955, 956, Kaleb Keithley).
-1341. Fix Xaw Text Widget call to XtMalloc(0) (#954, Kaleb Keithley).
-1340. Updates to xrx plugins (#953, 957, 959-961, 963, Kaleb Keithley).
-1339. Use dump instead of nm in elistgen.sun (#922, Kaleb Keithley).
-1338. xkb updates (#920, Kaleb Keithley).
-1337. Fix imake's SPARCcompiler CCompilerMajorVersion detection (#919,
- Kaleb Keithley).
-1336. Updates related to xkbcomp install (#918, Kaleb Keithley).
-1335. General MS-Win lib fixes (#917, Kaleb Keithley).
-1334. xterm support for -lcurses on HPUX 10.2 (#914, 916, 952, Kaleb Keithley).
-1333. Fix incorrect mode name in xf86config.c.
-1332. Fix text restore problem on some Avance Logic cards (#1072, Thomas
- Dreibholz).
-1331. WriteBitmap code for MGA driver (#1069, Mark Vojkovich, Radek Kapitan).
-1330. Add a clean rule to remove XKB's .dir files. Add support for newer 3D
- Rage III adapters to SuperProbe, the Mach64 server and the ATI driver.
- Fix misuse of DirtyStartup define. Fix Mach64 mode restoration problems
- in ATI driver. Fix 8MB linear aperture problem in ATI driver. Fix
- typo's in drivers/s3* Imakefiles. Fix banking globals when a linear
- aperture is used. Retrofit 3.3.1 vgaPCI code into 3.9s. (#1065,
- Marc La France).
-1329. Add support for the Microsoft Intellimouse in the XFree86-Misc
- Extension and XF86Setup (#1063,1064, Takaaki Nomura, Joe Moss).
-1328. Add Scanline ImageWrite support to XAA (#1062, Alan Hourihane).
-1327. Missing Millennium II AGP fixes (#1058, Brian Wainscott).
-1326. XAA hw cursor fix. Delay cursor restoration until after the saved screen
- is restored (#1057, Mark Vojkovich).
-1325. Fix server to print the clock scale instead of effective clocks when
- using a clockchip (#1056, Krajcsovits Gyorgy).
-1324. Correct eraser/stylus detection in wacom driver (#1055, Frederic Lepied).
-1323. Fixes for APM driver. HW lines/HW clipping. ROP support. Text accel now
- uses PAD_DWORD. Bugfix for WaitForFifo() (lost serial interrupts) and
- ApmSync() (various errors). HW cursor now uses XAA interface. Combined
- write for many registers (x+y in one longword etc.) (#1054, Henrik
- Harmsen).
-1322. xterm fixes. Correct a minor placement problem with the right scrollbar.
- Implement a new set of control sequences for switching between the
- normal and alternate VT100 screens. Implement the alternate-screen menu
- entry (#1053, Thomas Dickey).
-1321. Add some reasonable limit for when a trapezoid fill is used rather than
- using spans (#1051, Mark Vojkovich).
-1320. Add bindist description files for an OpenBSD/sparc binary distribution
- (#1045, Todd Fries).
-1319. Some fixes and additions to the PCI databases (#1046,1050, Dejan Ilic).
-1318. Add 543x cirrus driver for PowerPC, fix some LynxOS related problems
- (#1044, Thomas Mueller).
-1317. Add support for ViRGE/GX2 to SuperProbe (Dirk Hohndel).
-1316. Add support for ViRGE/GX2 to SVGA and S3V server (#1041, Harald Koenig).
-
-XFree86 3.9s (15 October 1997)
-1315. Fix segmentation fault in glint driver when server is started with a
- card without GLINT/PERMEDIA chip (Stefan Dirsch).
-1314. Lots of fixes and additions to glint acceleration (Helmut Fahrion).
-1313. Fix problem with xterm hanging when opening a log file. Add
- right-scrollbar to xterm (#1037, Thomas Dickey, Michael Rohleder).
-1312. Add GD7555 to vgaPCI.h and fix XF98_SVGA (#1036, Shuichi Ueno).
-1311. Fix a bug with Qword pad support in ImageWrite (#1033, Mark Vojkovich).
-1310. Fix mystique driver and build problem on SVR4.0 (#1029, Takaaki Nomura,
- Isao Ohishi).
-1309. Fix SuperProbe to correctly detect memory on the Trident 9685 (#1023,
- Alan Hourihane).
-1308. Add hardware clipping and transparency for the trident chips that
- support it. Partially implement the 'set_mclk' option, not yet
- complete, remove the tgui_mclk_66 option, clean up the TV output for
- 9685 boards. Documentation updates (#1022, Alan Hourihane).
-1307. Add accelerated ImageWrite and a WriteBitmap replacement to the tseng
- driver (#1021, Mark Vojkovich, Koen Gadeyne).
-1306. Documentation update for tseng driver (#1020, Koen Gadeyne).
-1305. Clear disallowed flags in Options bitmap (#1019, Alan Hourihane).
-1304. Fix XAA hardware cursor for built-in S3 RAMDACs (#1018, Alan Hourihane).
-1303. Use trapezoid fills for some wide lines (#1017, Mark Vojkovich).
-1302. Fix colormap switching problem in svga/s3 (#1016, Mark Vojkovich).
-1301. Fix install problem with xkbcomp (#1014, Robin Cutshaw).
-1300. Fix lnx_jstk.c to work with 2.1.x joystick.h file (#1013, Robin Cutshaw).
-1299. Disable some HTotals in matrox driver that cause vertical stripes (#1010,
- 1015, Radek Kapitan).
-1298. Improve some bailout messages in tseng driver (#1009, Koen Gadeyne).
-1297. Suppress popen/pclose messages (#1008, Takaaki Nomura).
-1296. Initial support for Millennium II AGP (Dirk Hohndel).
-1295. Fixes to make glint server pass more of xtest (Alan Hourihane).
-
-XFree86 3.9r (30 September 1997)
-1294. Bug fixes to xterm. Change default resource of colorMode to true. Fix
- 'ech' control. Add resource boldColors and +pc / -pc. Add resource
- colorAttrMode. Fix conflict between colorULMode/colorBDMode versus ANSI
- colors. Correct two problems with the optional logging support. Various
- updates to configure-script macros (#1004, Thomas Dickey).
-1293. Make sure ImageWriteBase gets set with a default value (#1003,
- Alan Hourihane).
-1292. Replace mktemp() with mkstemp() in xrdb (#1002, Luke Mewburn).
-1291. Don't fail to start if there isn't enough memory for the hw cursor in
- tseng driver (#1001, Koen Gadeyne).
-1290. Fix the install problem with XF98_SVGA (#1000, Takaaki Nomura).
-1289. Add bresenham lines to tseng driver (#997, Koen Gadeyne).
-1288. Significantly accelerate clipped terminal font performance (#996,998,999,
- Andrew van der Stock, David Bateman).
-1287. Enable 24bpp for Trident TGUI 96xx (#995, Alan Hourihane).
-1286. Add support for the Trident ClearTV (#994, Alan Hourihane).
-1285. Remove INT64 from XAA text code (#993, Mark Vojkovich).
-1284. XAA hw cursor support for s3/svga. IBM cursor works, other RAMDAC
- cursors need to be implemented/verified. S3 builtin curser seems
- to work in 8bpp, but fails in other depths (#992, Mark Vojkovich).
-1283. Some fixes for Unixware 2.1.2 (#989, Steve Forsythe).
-1282. Fix the remaining line drawing problems for the CL-GD5428 and CL-GD754x
- chips (#985, Corin Anderson).
-1281. Fix build problem (982, Takaaki Nomura).
-1280. Add more acceleration for Permedia (this is partly producing drawing
- errors and needs much more testing) and remove Trapezoid bug in 500TX
- support of glint server (Helmut Fahrion).
-1279. Build fixes for XAA hw cursor and updates to glint XAA hw cursor (#983,
- 984, Alan Hourihane).
-1278. Better color depth support and cleanups for glint server (Helmut Fahrion).
-1277. Add initial support for Permedia 2 chip to glint server (Dirk Hohndel).
-1276. Add support for GLINT MX chip to glint server (Dirk Hohndel).
-1275. Add RIVA 128 to scanpci (Dirk Hohndel).
-
-XFree86 3.9q (19 September 1997)
-1274. Add XF98_SVGA server, update XF98Conf.cpp, VideoBoard98, fix mga driver
- for PC98 (#980,981, Michio "Karl" Jinbo, Shuichirou Urata).
-1273. Some fixes to glint server (Helmut Fahrion, Stefan Dirsch, Dirk Hohndel).
-1272. Fix for glint_dump_regs and disable accelerated lines for glint
- (Stefan Dirsch).
-1271. Add XAA hw cursor support and update trident and glint drivers to use it
- (#973-976,979, Alan Hourihane).
-1270. Several fixes to xterm: fix redraw errors after font changes or resizes,
- add sunKeyboard resource, correct fg/bg test in the control sequence
- that replies with the current SGR settings ((#972, Thomas Dickey).
-1269. Several fixes to the xterm standalone configure script (#972,
- Thomas Dickey).
-1268. Fix to pointer movement constraints (#968, Stuart Anderson).
-
-XFree86 3.9p (15 September 1997)
-1267. Disable Image Write for HiQV chips in C&T driver (#966, David Bateman).
-1266. Add stipple accelerated functions through the ScanlineScreenToScreen
- function (#965, Alan Hourihane).
-1255. Add ImageWrite support for the Laguna chips in cirrus driver (#964,
- Corin Anderson).
-1254. Disable the Xserver '-config' option when run set-uid.
-1253. Have the Xservers run xkbcomp under the real user's ID.
-1252. Fix xterm's default handling of the KP_Add key.
-1251. Fix Linux-axp xdm build problem.
-1250. Fix stripping of extension from module names (so that it works OK
- when there is a '.' in the module directory pathname).
-1249. Fix some problems in the trident driver with the 9685 programmable clock
- and disable the GE when too little memory is available (#950,
- Alan Hourihane).
-1248. Fix build problem with non gcc compilers (#948,949, Takaaki Nomura,
- David Bateman).
-1247. Fix some dangling references and max MClk value in matrox driver (#951,
- Dirk Hohndel).
-1246. Disable debugging messages in DirectColor support (Andrew Aitchison).
-1245. Fix saving video memory for glint server (Helmut Fahrion).
-
-XFree86 3.9o (9 September 1997)
-1244. Yet another fix for the problems around installing xkbcomp
- (Michael Rohleder, David Dawes, Dirk Hohndel).
-1243. Add more acceleration for 500TX to glint server (Alan Hourihane).
-1242. Add initial acceleration for Permedia to glint server (Dirk Hohndel).
-1241. Lots of cleanups and fixes to glint server (Stefan Dirsch, Helmut
- Fahrion, Dirk Hohndel).
-1240. Fix glint server problems on some ASUS motherboards (Stefan Dirsch).
-1239. Add Permedia support to glint server (Helmut Fahrion, Dirk Hohndel).
-1238. Several m68k related fixes (faster pic code, change Atari TT geometry),
- fixes to not reference the undefined variable XPROJECTROOT, some glibc
- updates (#947, Andreas Schwab).
-1237. Move some of the improvements that Mark Vojkovich made for the S3 stipple
- code back into XAA (#945, David Bateman).
-1236. Fix problem with HW cursor disappearing on Cirrus Laguna chips (#943,
- Corin Anderson).
-1235. Fix 24bpp XAA NonTE image text with RGB_EQUAL (#942, David Bateman).
-1234. Fix BIOS layout issues in matrox drivers. This might make Millennium
- Rev 3 cards work (#941, Andrew van der Stock).
-1233. Improve the performance of the 24bpp fills on the 6554x machines and
- hopefully implements a solid fill at 32bpp for the 6555x machines
- (untested). Some cosmetic changes (#940,944, David Bateman).
-1232. Turn off CPU_TRANSFER_BASE_FIXED in SVGA/S3 driver (#939, Mark Vojkovich).
-1231. Add the correct Enable/DisableIO Ports back into the glint driver (#938,
- Alan Hourihane).
-1230. Fix trident & mga driver for PC98. Fix XF98Conf.cpp. Resync PC98
- Imakefiles (#935, Takaaki Nomura).
-1229. Add accelerated Image Write to C&T driver. Attempted fix for the use
- of TMED DSTN dithering on the 65555 and 68554 chips. Small
- documentation patch (#934, David Bateman).
-1228. Fix XF86Setup to load XFree86-VidModeExtension (#932, Takaaki Nomura).
-1227. Fix MClk limits for matrox driver (#931, Andrew van der Stock).
-1226. Fix build problem on Solaris (#929, Matthieu Herrb).
-1225. Add DacSpeed to C&T driver (#930, David Bateman).
-1224. Disable acceleration for IMA bus chips in tseng driver (#928,
- David Bateman)
-1223. Turn Record extension into module and fix problems in XInput joystick
- module (#927,933, Matthieu Herrb).
-1222. Add support for the ch8398 and ch8398a clockchips to the tseng driver
- (#913,914 Gyorgy Krajcsovits).
-
-XFree86 3.9n (26 August 1997)
-1221. Lots of small fixes for xterm (#912, Thomas Dickey).
-1220. Add DirectColor visual to Matrox server (#911, Andrew Aitchison).
-1219. Disable 8x8 pattern tiling on W32 (not W32i/p) cards. Fix lowend W32p
- cards with IMA bus. Modify linear memory code (#910, Koen Gadeyne).
-1218. Fix locale in R6.3, Fix PC98 XKB, Remove xf86ClearIOPortList() and
- xf86AddIOPorts() from PEGC driver (#908, Takaaki Nomura, Isao Ohishi).
-1217. Remove xf86ClearIOPortList() and xf86AddIOPorts() (#907,909
- Matthieu Herrb).
-1216. Add ET6100 support to tseng driver (#906, Koen Gadeyne).
-1215. Add wide lines to XAA (#904, Mark Vojkovich).
-1214. Add Chrontel8391CalcClock function (#903, Gyorgy Krajcsovits).
-1213. Fix output of hex numbers in chip revision (#902, Dejan Ilic).
-1212. Add accelerated Bresenham lines to tseng driver at 8bpp (#901,
- Koen Gadeyne).
-1211. Xlib: XIMStringConversionRetrival should be XIMStringConversionRetrieval
- (#905, Kaleb Keithley).
-1210. Official fix for potential buffer overflow in XGetErrorDatabaseText
- (#900, Kaleb Keithley).
-1209. Fix typo in cde.rules (#899, Kaleb Keithley).
-1208. SGI threads patch update (#898, Kaleb Keithley).
-1207. Fix UNSHARED_CXXLIB for SPARCcompiler4.0 (#897, Kaleb Keithley).
-1206. Fix SPARCcompiler CCompilerMajorVersion (#896, Kaleb Keithley).
-1205. Parse junk from export lists better (#895, Kaleb Keithley).
-1204. Removes some dead or unused code in os-support (#893, Matthieu Herrb).
-1203. Remove xf86tmpnam() from libc_wrapper and rewrites xf86tmpfile() to
- use tmpfile() (#892, Matthieu Herrb).
-1202. Add a separate README.OpenBSD for 3.9 (#890, Matthieu Herrb).
-1201. Move most common extensions into a module (#889, Matthieu Herrb).
-1200. OpenBSD multi-architecture support (#888, Matthieu Herrb).
-1199. Disable disables broken software/hardware cursor switching in s3/svga
- (#887, Mark Vojkovich).
-1198. Some fixes for PC98. XF86Setup, mga driver, VideoBoards98, Cards98
- (#886, Takaaki Nomura, Takefumi Tsukada).
-1197. Acceleration fixes for Trident and accelerated ImageWrite (#883,884,885
- Alan Hourihane).
-1196. Bring the 3.3.1 Trident fixes into 3.9 (#882, Alan Hourihane).
-1195. Add incomplete Rendition detection code to SuperProbe (Dirk Hohndel).
-1194. Add Rendition detection to PCI code (#881, Marc Langenbach, Dirk Hohndel).
-1193. Fix to only build *.dir file for xkbcomp on make install (#880,
- Michael Rohleder).
-1192. Add ImageWrites for s3/svga (#879, Mark Vojkovich).
-1191. Rename dashed pattern flags (#878, Mark Vojkovich).
-1190. Add ImageWrite support for XAA (#877, Mark Vojkovich).
-1189. Add MGA2164 define to vgaPCI.h (#876, Takaaki Nomura).
-1188. Extend the frame buffer test in glint_dump_regs (Stefan Dirsch).
-
-XFree86 3.9m (13 August 1997)
-1187. Add printing support to xterm (#870, Thomas E. Dickey).
-1186. Fix denial of service attack through xdm double freeing memory (#875,
- Kaleb Keithley).
-1185. Fix Solaris build problem (#874, Takaaki Nomura).
-1184. Preliminary experimental support for the Millennium II (#852-857,
- Andrew Vanderstock).
-1183. Recognise the rev 3 Mystique, and hopefully set everything up
- correctly for it, change MMIO/fb mapping for Mystique rev >=3.
- (David Dawes)
-1182. Patches to both XAA and the Glint sources that enable the
- ScanlineScreenToScreen colour expansion (#873, Alan Hourihane).
-1181. Fix problem of xkbcomp not generating .dir files during install
- (#872, Kaleb Keithley).
-1180. Fix problem with possible denial of service attack using the X server
- (#867, Kaleb Keithley).
-1179. Update VidModes.sgml to latest version (#871, Eric Raymond).
-1178. Fix I128 support for AXP (#868, Robin Cutshaw).
-1177. Add planemask support to most XAA functions for all tseng chips
- (#869, Koen Gadeyne).
-1176. Fix text rendering for W32 at 16bpp, always determine bus type, fix
- bug in XAA color expansion (#865, Koen Gadeyne).
-1175. Fix ET6000 dram speed code, disable 32bpp on ics5301 ramdacs (#864,
- Koen Gadeyne).
-1174. Clean up RAMDAC handling in tseng driver, extend stg1702 support, and
- fix problems caused by treating unknown RAMDACs as AT&T compatible
- (#862, Koen Gadeyne).
-1173. Fix support for linear memory mode on W32p rev a&b (#861, Koen Gadeyne).
-1172. Fix ET6000 black screen problem (#861, Koen Gadeyne).
-1171. Changes to Amiga XKB code (#860, Bernd Ernesti).
-
-XFree86 3.9l (31 July 1997)
-1170. Fix parsing of DPMS parameters in config file.
-1169. Catch a NULL dereference in lib/X11/lcFile.c (#843, Dirk Hohndel).
-1168. Xterm support for compound text cut and paste (#836, Kaleb Keithley).
-1166. Fix some I128 problems reported with PPro CPUs (#834, Robin Cutshaw).
-1165. Disable C&T fill at 32bpp (#831, David Bateman).
-1164. Update VideoBoard98 file (#830, 842 Takaaki Nomura, Isao Ohishi).
-1163. Prevent re-allocation of cfb ScreenPrivateIndex for multi-head
- server (#829, Stuart Anderson).
-1162. Fix unintended changes in PCI code.
-1161. Fix handling of PS/2 protocol mice with OpenBSD (it doesn't translate
- to BusMouse protocol like NetBSD does) (#820, Matthieu Herrb).
-
-XFree86 3.9k (29 July 1997)
-1160. Several fixes to xterm. Correct an indexing error in the doublesize
- character logic. Correct the logic of ShowCursor when it is painting in
- a doublesize cell. Correct the behavior when switching to doublesize
- characters and back again. Add cbt (back_tab) to the terminfo
- description. Correct the logic for disabling xmc. Minor correction to
- positioning of underlines for small (e.g., 5x8 font size. Add more
- special-case tokens to the standalone configure script's imake-option
- filter. Add a '--enable-logging' option for the standalone configure
- script. Add check and ifdef's for the standalone configure script to
- allow for building on platforms with X11R6, which lacks Xpoll.h
- (#769,821, Thomas Dickey).
-1159. Preliminary support for Millennium on PC98 (#825, Shuichiro Urata,
- Takaaki Nomura).
-1158. update XKB for PC98 (#825, Isao Ohishi).
-1157. Support XF86Setup for PC98 (#825, Takaaki Nomura, Kazunori Ueno).
-1156. PC98 resync (#825, Michio "Karl" Jinbo).
-1155. Add common Imakefiles for some PC98 sub directories (#825,
- Michio "Karl" Jinbo).
-1154. Add code to fine tune memory access on ET6000 boards and cleanup some
- W32 specific code that would write to illegal registers on ET6000 cards
- (#818, Harald Nordgard Hansen).
-1153. Ensure accelerator CRTC registers are unlocked before writing them and
- horizontal & vertical syncs are not disabled on mode switches (#817,
- Marc La France).
-1152. Change xsetroot -mod option to count pixels from left to right within
- each 16-pixel slice, instead of right to left (#817, Marc La France).
-1151. Cleanup declarations for xf86Verbose, xf86ProbeOnly & xf86ProbeFailed,
- make VGABase XF86Config option recognized by more servers, HSkew wasn't
- being dealt with correctly in matching modes to clocks, fixup default
- mode for the generic VGA driver (#817, Marc La France).
-1150. Fix a few bugs in ATI driver, break it up in multiple files, add
- support for Mach64 accelerator CTRC, which now is used by default, and
- generic VGA (untested) (#817, Marc La France).
-1149. Fix build problem on Solaris (#810, Dirk Hohndel).
-1148. Re-enable LEFT_EDGE_CLIPPING_NEGATIVE for the HiQV chips and tidy up the
- ScreenToScreenColorExpand stuff (#808, David Bateman).
-1147. Enable the sw_cursor option and add support for the no_accel option (#806,
- Joe Moss).
-1146. Avoid source overruns in xf86DrawStippleScanline() and remove the
- restrictions on TRIPLE_BITS_24BPP, LEFT_EDGE_CLIPPING
- and LEFT_EDGE_CLIPPING_NEGATIVE_X (#805, David Bateman).
-1145. Allow keywords with underscores in XF86Setup (#802, Harald Koenig).
-1144. Explicitly enable hsync and vsync on Mach64 boards (#799, Marc La France).
-1143. Small fix for norwegian keyboard in xkb (#797, Harald Nordgard Hansen).
-1142. Add 32bpp to HiQV driver and get CopyArea and Solid Fills accelerated
- in 32bpp (#790,796, David Bateman).
-1141. Fix clock calculation on HiQV chips (#783, David Bateman).
-1140. Fix hardware clipping and get closer to a working 8x8pattern color expand
- (#781,811, Alan Hourihane).
-1139. Disable C&T HiQV ImageWrite (#780, David Bateman).
-1138. Change how patterns are packed for LINE_PATTERN_MSBFIRST_INCREASING
- (#779, Mark Vojkovich).
-1137. SVGA/S3 acceleration improvements (#778, Mark Vojkovich).
-1136. Fix xclock problem that shows up on Cirrus 542x chips
- (#777, Corin Anderson).
-1135. Small fix for C&T driver (#775,776 David Bateman).
-1134. Merge missing ViRGE code from 3.3* into 3.9* (#773, Harald Koenig).
-1133. Support for I128 DRAM cards (#816, Robin Cutshaw).
-1132. PCI updates required for the I128 server (#815, Robin Cutshaw).
-1131. Fix for Xt/Error.c (#813, Kaleb Keithley).
-1130. Make XF86Setup's keyword matching the same as the Xservers (ie,
- ignore '_', ' ', '\t' in keywords).
-1129. Tseng documentation update (#800, 803, Koen Gadeyne).
-1128. Update to imake's auto GCC PostIncDir detection for OpenBSD
- (#794, Matthieu Herrb).
-1127. Fix I128 problems (#792, 809, Robin Cutshaw).
-1126. Fix some errors in the symbols/th XKB file (Poonlap Veeratanabutr).
-1125. Don't use EXTRA_DEFINES in Xserver/xkb/Imakefile (#786, Kaleb Keithley).
-1124. Alternate way of fixing the "./" problem in Imake.rules
- (#785, Kaleb Keithley).
-1123. Install full path in dynamic libraries for SCO (#782, J. Kean Johnston).
-1122. Fix remaining problems with SCO OpenServer 5 support (#772,
- J. Kean Johnston).
-1121. Fix support for older I128 cards (#771, Robin Cutshaw).
-1120. Add detection for C&T 68554, and fix detection of the 65550 revision
- numbers (#770, David Bateman).
-1119. Fix STG170x support in tseng driver (#766, Koen Gadeyne).
-1118. Fix linkkit install problem in apm driver (#767, Holger Veit).
-1117. Add more resolutions to xf86config (#767, Holger Veit).
-1116. Add OS/2 diagnostic on network config (#767, Holger Veit).
-1115. Fix EditRes problems that show up on OS/2 (#767, Holger Veit).
-1114. Fix a problem in OS/2's imakesvc.cmd (#767, Holger Veit).
-1113. Fix lockup when the SVGA server dumps core with the MGA driver
- on some OSs.
-1112. Fix a bug in cfb24GetSpans which can cause a server crash
- (StarOffice will provoke this).
-1111. Fix the use of a C++ reserved word in xf86vmode.h.
-1110. Reset the DPMS state to ON when re-entering the server's VT.
-
-XFree86 3.9j (12 July 1997)
-1109. Process Xqueue events synchronously to avoid problems with
- accelerated servers.
-1108. Fix sqrt problems in miarc (#765, Harald Koenig).
-1107. Remove special Tk 4.0 support in XF86Setup and add C code to match the
- latest vidmode extension changes. Fix a minor bug in the DPMS code
- (#764, Joe Moss).
-1106. Several small fixes to Xserver/{dix,include,os/,PEX5} (#760-763,
- Craig Groeschel).
-1105. XKB fixes (#759, Stuart Anderson).
-1104. Fix uninitialized variable (verbose) in scanpci.c (#757, Thomas Mueller).
-1103. Add big endian version of PCI config structure (#757, Thomas Mueller).
-1102. Add cross compile definitions for LynxOS and add static vga server for
- LynxOS PowerPC (#757, Thomas Mueller).
-1101. Add bindist files for LynxOS (#756, Thomas Mueller).
-1100.
-1099. Add handling for AST onboard Mach32 card (#754, Bryan Feir).
-1098. Fix a problem in Imake.rules that shows up when using Motif.rules.
-1097. Fix MGA lockup on SVR4.0.
-1096. Add missing for Japanese "small TSU" character to the XKB
- symbols/jp file (#751, Shigehiko Sasaki).
-1095. Fix ET4000/W32i acceleration at 16 and 24bpp, and accelerate colour
- expansion at 16bpp and 24bpp for the W32p (#747, Koen Gadeyne).
-1094. Fix for I128 rev 2 chips (#746, Robin Cutshaw).
-1093. Fix typo in xf86_libc.h.
-
-XFree86 3.9i (6 July 1997)
-1092. Fix apm HW cursor problem at VT switch, and a problem with
- screen-to-screen bitblts (#745, Henrik Harmsen).
-1091. VidMode extensions updates, including adding a new function to
- return the available clocks, and how many more clocks can be programmed,
- add the HSkew parameter and some reserved fields (this introduces
- a protocol incompatibility), and fix a bug in the ValidateModeLine
- function's clock checking (#744, Joe Moss).
-1090. Add port probing to SuperProbe for the Alliance 6410, 6422 and AT24
- (#743, Joe Moss).
-1089. Add similar ET6300 detection to scanpci and vgaPCI.h.
-1088. Fix SuperProbe's ET6000 memory probe (#742, Koen Gadeyne).
-1087. Add detection for the ET6100 and ET6300 to SuperProbe (#742,
- Koen Gadeyne).
-1086. Some PCI video cards don't have the expected "IBM" string in the
- BIOS, so look for the "PCI" string too. Without this, scanning with
- -nopci fails for some cards (#741, Koen Gadeyne).
-1085. Possible fix for XWarpCursor() not working with the XInput
- xf86PostMotionEvent() function (#740, Michael Rohleder).
-1084. Add some "test-support" code to xterm, which is not enabled by
- default (#739, Thomas E. Dickey).
-1083. Fix ET4000W32p RAMDAC detection (backs out most of #717), make
- the tseng driver use DELAYED_SYNC, and an (unsuccessful) attempt
- to get CPU-to-screen colour expansion working (#737, Koen Gadeyne).
-1082. Add missing valuator initialisation to the OS/2, SCO and Xqueue
- MouseProc() functions. This fixes the mouse problems on those OSs
- (#736, 738, Holger Veit and Richard Coley).
-1081. Fix a misplaced va_end() in the recent XInput code which caused a core
- dump on OS/2 (#736, Holger Veit).
-1080. Fix SummaSketch bug that shows up with newer XInput code, add
- a missing conversion_proc, fix misplaced break, and add new config
- options to the SummaSketch subsection for ActiveArea and ActiveOffset
- (#735, Steven Lang).
-1079. Fix a problem with xterm's cursor colour versus the background, and
- remove a duplicate initialisation of the cursor's GC (#734,
- Thomas E. Dickey).
-1078. Fix XAA's bpp setting at 24bpp (#733, Mark Vojkovich).
-1077. Fix cpp script problem on AIX (#732, Kaleb Keithley).
-1076. Fix xhost core dump that can happen if no hosts are authorised
- (#731, Kaleb Keithley).
-1075. Glint driver updates (#729, 730, Alan Hourihane).
-1074. Move the solx86usleep() function out of solx86_init.c into a separate
- file, which should fix the problems addressed by #726.
-1073. Add ANSI-C wrappers (#724, Holger Veit).
-1072. Update recent config and libX11 changes for OS/2 (#724, Holger Veit).
-1071. Fix and enable ET4000W32i acceleration, and fix unmap bug in the
- ET6000 memory probe (#723, Koen Gadeyne).
-1070. Replace fdflush() in the Summa and AceCad drivers with tcflush
- (#722, Steven Lang).
-1069. SCO support updates (#721, J. Kean Johnston).
-1068. Add some more dead accents to the 'se' xkb layout (#718, Dejan Ilic).
-1067. Merge in TOG's X11R6.3 public patch 2.
-
-XFree86 3.9h (30 June 1997)
-1066. Don't call seteuid in the server when the real uid is root. This
- fixes a problem of not getting a core file under some FreeBSD versions.
-1065. Tseng driver cleanups (#717, Koen Gadeyne).
-1064. 'xset dpms 600 0 0' complains about 600 being greater than 0.
-1063. New XInput driver for the AceCad ADVANCEDigitizer (#716, Shane Watts).
-1062. Clean up some problems with the xf86 wrappers (#715, Matthieu Herrb).
-1061. New Xinput driver for MicroTouch TouchPen touch screen (#714,
- Patrick Lecoanet).
-1060. Changes for E281-2310 and fully compatible controllers in the
- Elographics driver (#714, Juergen P. Meier).
-1059. Elographics driver updates (#714, Patrick Lecoanet).
-1058. Fix ROP bugs in the svga/s3v driver (#713, Harald Koenig).
-1057. Fix a malloc/free bug which can cause the Xserver to crash when
- an lbxproxy terminates.
-1056. Change default compression level in lbxproxy (#710, Kaleb Keithley).
-1055. Xt/Error.c update (#708, Kaleb Keithley).
-1054. LibXext cleanups (#707, Kaleb Keithley).
-1053. Config updates (#706, Kaleb Keithley).
-1052. Add PreviousCandidate and MultipleCandidate keysyms (some new Japanese
- keyboards have these keys) (#705, Kaleb Keithley).
-1051. Fix some xterm bugs (#700, Thomas E. Dickey).
-1050. Initial part of implementing VT100 doublesize characters for xterm
- (#700, Thomas E. Dickey).
-1049. First stab at adding dlopen() style loader (#712, Matthieu Herrb).
-1048. Add further acceleration to the GLINT server (mostly disabled) (#711,
- Alan Hourihane).
-1047. Add support for I128 Series II Rev 2 chips (#704, Robin Cutshaw).
-1046. Additions to the apm driver. Add support for AT3D, acceleration for
- 8,16,32bpp (for AT3D and AT24, filled rectangles, screen-screen bitblts,
- host-screen color expansion bitblts for text). DPMS support, hardware
- cursor code (also in 8bpp), use programmable clock, set MCLK to 57.3
- MHz on AT3D, various bugfixes and cleanups (#702, Henrik Harmsen).
-1045. Fix problems with displaying card READMEs in XF86Setup (#701, Dirk
- Hohndel).
-1044. Add left-edge clipping to s3_newmmio. There's bug in both the scanline
- screen->screen and CPU->screen stipple fallback routines though. Both
- break certain patterns and the screen->screen bug is worse than the
- CPU->screen one (#694, Mark Vojkovich).
-1043. Enables the XInput modules from 3.2 to be loaded as modules in
- XF86_LOADER (#693, Matthieu Herrb).
-1042. Add code to have XAA check to see if a stipple can be reduced to an 8x8
- pattern before banishing it from the pixmap cache on account of it's
- size (#692, Mark Vojkovich).
-1041. Fix CapNotLast problem in dashed line code (#686, Mark Vojkovich).
-1040. Add stippled fill fallback for SVGA/S3 if the pixmap cache is too small
- (#685, Mark Vojkovich)
-1039. Fix for xf86initac,c so that drivers can specify their own WriteBitmap
- functions and fallbacks for non-cachable stippled fills. This also
- allows usage of both CPU->screen and scanline screen->screen color
- expansion instead of one or the other (#684, Mark Vojkovich).
-1038. Some Xlib fixes (#687-690, 695-699, Kaleb Keithley).
-1037. XKB updates (#674, 675, 709, Kaleb Keithley).
-1036. Config updates to make use of change 1033 (#673, Kaleb Keithley).
-1035. Fix a typo in the XKB symbols/hu file and add an entry for it in
- the rules/xfree86.lst file (Peter Soos).
-1034. Fix a bug in Xt/Error.c that can result in partially duplicated
- error/warning messages.
-
-XFree86 3.9g (20 June 1997)
-1033. Changes to imake to determine LinuxCLib*Version,
- LinuxBinUtilsMajorVersion and PostIncDir at build time (#673,
- Kaleb Keithley).
-1032. Fix SEGV in solx86's xf86MapVidMem() when called without first
- calling xf86LinearVidMem() (David Thompson).
-1031. Fix for pci detection code in S3 server (#683, Harald Koenig).
-1030. Fix problems with rop -1 in S3V server (#679,681,682, Huver Hu, Harald
- Koenig).
-1029. Fix cache expansion routine for HARDWARE_PATTERN_NOT_LINEAR (#680,
- Mark Vojkovich).
-1028. Add "no_split_xfer" option to S3 server (#678, Harald Koenig).
-1027. Fix bug in xterm. Logout records should contain '\0' as first char
- in user name (#676, Alex Belits).
-1026. Fix color problems on S3 cards with Ti3026 for SVGA/S3 (#671,
- Achim Oppelt).
-1025. Adapt code to future changes in NetBSD's (and OpenBSD's?) mmap
- semantics (#670, Matthieu Herrb).
-1024. Fix xterm's op termcap entry, and shorten the entry so it fits within
- the 1024 character limit.
-1023. Actually include changes 963-965.
-1022. Add accelerated server for cards based on 3DLabs GLINT chipsets. This
- server is known to work on Elsa GLoria L cards on most motherboards.
- It does not support any other cards at this time. This work was
- sponsored by S.u.S.E., Elsa, and SNI (Alan Hourihane, Stefan Dirsch,
- Dirk Hohndel).
-
-XFree86 3.9f (16 June 1997)
-1021. Fix some build problems with 3.9e.
-
-XFree86 3.9e (15 June 1997)
-1020. Add some more I128 acceleration, including pixmap cache, rectangle
- fills and line drawing (#669, Robin Cutshaw).
-1019. Fix a compile problem that shows up with GLX isn't enabled
- (#668, Frederic Lepied).
-1018. If the Wacom driver isn't supplied with a value for the Suppress
- option it is calculated to report motions according to the screen
- resolution (#668, Frederic Lepied).
-1017. Fix a bug in the XInput Wacom driver which prevented the eraser from
- working (#668, Frederic Lepied).
-1016. Add a virtual XInput device called "Switch" which sends extended
- motions when a different device sends a core event (with AlwaysCore
- enabled (#668, Frederic Lepied).
-1015. Fix behaviour of XInput relative devices. They send events with
- accumulated valuators not with valuators deltas (#668, Frederic Lepied).
-1014. XInput devices with AlwaysCore enabled send both core and extended
- events at the same time (#668, Frederic Lepied).
-1014. Move HP's HPkeysym.h (#667, Kaleb Keithley).
-1013. Fix a bad include in FS.h (#666, Arthur Barstow).
-1012. Add the mechanism to acknowledge the new DacSpeed[] values to the
- svga/s3 driver. Only the Trios use it so far (#665, Mark Vojkovich).
-1011. Fix(?) Truecolor depths for the Ti 3026/3030 ramdacs in the svga/s3
- driver (#665, Mark Vojkovich).
-1010. Fix a logic bug in the XAA code that checks to see if there is
- enough room for 8x8 patterns in the pixmap cache (#664,
- Mark Vojkovich).
-1009. Changes to vga256/vga to allow the NV1 driver to work without
- requiring any VGA functionality (#663, David McKay).
-1008. Resync the MGA driver with 3.3 (#660, Radoslaw Kapitan).
-1007. Lots of updates to the svga/ati driver (#659, Marc Aurele La France).
-1006. Update support for ATI Rage II+, Rage Pro in the Mach64 server, scanpci,
- and SuperProbe (#659, Marc Aurele La France).
-1005. Remove man pages for VGA16 and Mono servers (#659,
- Marc Aurele La France).
-1004. Fix duplicate target in drivers/s3/Imakefile (#658, Robin Cutshaw).
-1003. Fix some Xprt problems (#655-657, Kevin Samborn).
-1002. Fix some DPMS problems, including problems when the DPMS timeouts
- are smaller than the screensaver cycle time, and problems with the
- various DPMS setting not being re-initialised at server reset.
-1001. Fix an InfoRec initialisation problem in xfree68/fbdev (#652,
- Andreas Schwab).
-1000. Fix incorrect links created from nls/XLC_LOCALE to xc/exports
- (#652, Andreas Schwab).
- 999. Fix a flaw in a libX11 security fix (#652, Andreas Schwab).
- 998. Add libc 6 config for Linux/m68k to Linux.cf (#652, Andreas Schwab).
- 997. Allow depth-specific Dacspeeds to work for the tseng driver
- (#651, Koen Gadeyne).
- 996. Tseng driver cleanups (#650, Koen Gadeyne).
- 995. Allow xterm to start when /etc/termcap is missing, and fix some
- configure script nits (#649, Thomas E. Dickey).
- 994. Fix twm crash if interrupted during startup (#644, Wolfram Gloger).
- 993. Fontlib fixes (#636-640, 642, 646, 648, Arthur Barstow).
- 992. Add audit logging to xfwp (#623, Kaleb Keithley).
- 991. Sun/XKB keyboard fix (#621, Kaleb Keithley).
- 990. Update xrx defaults (#620, Kaleb Keithley).
- 989. Fontserver fixes (#613, 643, Arthur Barstow).
- 988. Imake config updates (#610-612, 614-617, 619, 624, Kaleb Keithley).
-
-XFree86 3.9d (10 June 1997)
- 987. Fix "xaa_no_color_exp" option for scanline-screen-to-screen color
- expansion (#629, Koen Gadeyne).
- 986. Add hint how to disable building Xprt to xf86site.def (#627, Koen
- Gadeyne).
- 985. Change Linux to use -D_REENTRANT (#644, Wolfram Gloger).
- 984. Fix C&T driver to be more strict about DClk and MClk limits for HiQV
- chips (#645, David Bateman).
- 983. Fix I128 server (#635, Robin Cutshaw).
- 982. Fix VT switching problems in mga driver (#634, Guy Desbief).
- 981. Fixes for xterm (missing part of install-rule, incorrect assignment for
- --enable-color-mode option, unexpected cursor color change while
- scrolling) (#632,633, Thomas Dickey).
- 980. Fix a problem where the Tseng memory mapped registers get cleared in
- vgaScreenInit() when it is clearing the screen as startup. This only
- happened for 8bpp with linear mode enabled (#630, OEyvind Aabling).
- 979. Avoid nested asm calls for SVR4.0 (#631, Takaaki Nomura).
- 978. Fix error messages when loading modules in the static server (#626,
- Matthieu Herrb).
- 977. Change svga/s3 into two separate modules s3_pio and s3_newmmio. This
- doesn't work with the static server at this point. Add linear
- addressing and 16/24(packed)/32bpp. Add pci_retry option. (#625,
- Mark Vojkovich).
- 976. Allow the ChipId and ChipRev values to be overridden from the XF86Config
- for the Mach64 server.
- 975. Fix some 1bpp and 4bpp problems (#609, Marc Aurele La France).
- 974. Changes to allow SuperProbe, Mach64 driver, scanpci and vgaPCI to
- detect the newer ATI 3D Rage II+ chips (#609, Marc Aurele La France).
- 973. Allow the server side of the multibuffer extension to compile (#609,
- Marc Aurele La France).
- 972. Continue removal of the XF86_VGA16 & XF86_Mono servers (#609,
- Marc Aurele La France).
- 971. Add some new keywords to xf86_Config.h (#608, Stuart Anderson).
- 970. Fix problem building the PC98 loader server (#607, Takaaki Nomura).
- 969. Fix xdm/Imakefile for OpenBSD (which doesn't have libcrypt)
- (#606, Matthieu Herrb).
- 968. Fix default value for xf86bpp (David Dawes, Dirk Hohndel).
- 967. Some cleanups to tseng driver, re-apply the STG1700 RAMDAC changes and
- re-introduce some 1/4bpp checks (#605, Koen Gadeyne).
- 966. Fix a few typos in tseng.sgml (#605, Koen Gadeyne).
- 965. Automagically select the correct protocol for PS/2 mice at startup
- with XF86Setup (#604, Dirk Hohndel).
- 964. Fix XF86Setup to follow links that point to non-existing files (so that
- it creates /var/X11R6/bin/X if necessary (#604, Dirk Hohndel).
- 963. Fix XF86Setup to allow reading the right README files for cards using
- the SVGA server (#604, Dirk Hohndel).
- 962. Fix small problem with installing the LinkKit (#603, Geert Uytterhoeven).
- 961. Fix 8x8 pattern cache size checking (#602, David Bateman).
- 960. Remove old (pre-XAA) acceleration from C&T driver (#601, David Bateman).
- 959. Two small fixes in C&T driver for "use_vclk1" option and ImageWrites
- (#600, David Bateman).
- 958. Add C&T 65555 detection to SuperProbe and SVGA server; treat it
- basically like a 65550 but attempts to use the TMED features (untested)
- (#600, David Bateman).
- 957. Fix build problems in tseng_driver.c (#599, David Bateman).
- 956. Fix XF86Setup build problem (#598, Takaaki Nomura).
- 955. Fix yet another fontserver problem (#597, Arthur Barstow).
- 954. Remove bogus changes to xc/Imakefile (Dirk Hohndel).
- 953. Fix incorrect define for DGA (Steve Kump).
-
-XFree86 3.9c (3 June 1997)
- 952. Fix a problem with the HW cursor being drawn in the overscan area
- with the svga/s3v driver and cleanup some of the register
- save/restore (#585, Harald Koenig).
- 951. Disable the banked-mode speedups for the Tseng driver when running
- in linear mode (#584, David Bateman).
- 950. Fix for CR53 not being restored unless xf86Verbose > 1 in the svga/s3v
- driver (#572, Sebastien Marineau).
- 720. Fix problems restoring some non-standard text modes for the Millennium
- (#571,573, Radoslaw Kapitan, #574, Ansgar Hockmann).
- 948. Fix svga/s3v panning at 24bpp (#570, Harald Koenig).
- 947. Fix S3V panning at 24bpp (#569, Harald Koenig).
- 946. Fix misleading messages in the svga/s3v driver when the SVGA server
- is started with a non-ViRGE S3 card (#568, Sebastien Marineau).
- 945. Alternate S3V 32<->24 bpp translation to avoid unaligned traps
- on Alpha platforms (#567, Harald Koenig).
- 944. Disable 8x8 pattern fill when less than 8 scanlines are available
- in the XAA pixmap cache (#566, David Bateman).
- 943. Fix a screen restore problem for the Mystique when the server is
- started with '-probeonly' (#559, Radoslaw Kapitan).
- 942. Turn the monitor back on after DPMS has done its thing for
- OSs where the input devices are not selectable (558, Jack Thomasson).
- 941. Fix some incorrect ROP definitions in the C&T driver (#557,
- David Bateman).
- 940. Fix some text font corruption for the S3 Trio64 (#549,554 Harald Koenig).
- 939. XF86Setup carddata updates (#547, Koen Gadeyne, #552, Matthieu Herrb).
- 938. Modify xon to use the fully qualified hostname on Linux (#544,
- Burchard Steinbild, Dirk Hohndel).
- 937. Exclude ROPs with no source from XAA CopyPlane functions (#538,
- David Bateman).
- 936. Mach32 updates, including accepting '-bpp 15' and increasing the
- 16bpp clock limit for the 68875 ramdac to 80MHz (#536, Bryan Feir).
- 935. PC98 doc updates (#535, Takaaki Nomura).
- 934. Fix for an S3V server problem at 16bpp introduced in change 650
- (#532, Huver Hu).
- 933. Further fix for Mystique problems when VT switching (#531,
- Radoslaw Kapitan).
- 932. Fix a blit bug with the ViRGE chip in the svga/s3v driver which
- shows up with xv rubber-banding (#529, Sebastien Marineau).
- 931. Fix a blank screen problem when switching back to the Xserver
- from a text VT with the Mystique (#520, Radoslaw Kapitan).
- 930. Some minor Tseng code cleanups (#519, Koen Gadeyne).
- 929. Add a timeout to the MGA Sync() function (#518, Radoslaw Kapitan).
- 928. Map only the amount of video memory present in the MGA driver
- rather than always 8MB (#516, Radoslaw Kapitan).
- 927. Disable the HW cursor in the tseng driver when entering DGA mode
- (#514, Koen Gadeyne).
- 926. Fix a S3V server text console corruption problem when running at 24bpp
- (#513, Kevin Brosius).
- 925. Update NetBSD/OpenBSD docs (#512, Matthieu Herrb).
- 925. Update Cirrus docs (#509, Harm Hanemaayer).
- 924. Change Tseng memory mapped registers to volatile (#507, Koen Gadeyne).
- 923. Disable Tseng 24bpp for CH8398 RAMDAC (#507, Koen Gadeyne).
- 922. Update docs to reflect change 643 (#507, Koen Gadeyne).
- 921. Re-enable Tseng 8bpp+linear+accel combination (#507, OEyvind Aabling).
- 920. Update mga docs (#502, #503, Radoslaw Kapitan).
- 919. Fix font and LUT corruption on VT switch for the svga/s3v driver
- (#497, Harald Koenig).
- 918. Fix some acceleration bugs in the TGUI driver (#495,496, Alan Hourihane).
- 917. Updates to the I128 server for Alpha platforms (#494, Robin Cutshaw).
- 916. Fix a Mystique colour problem when switching VTs (#488, Guy Desbief).
- 915. Fix a bug in Mystique memory detection (2MB was detected as 4MB)
- (#482, Radoslaw Kapitan).
- 914. Merge in simple dashed horizontal and vertical line drawing in the
- S3V server into s3line.c, and use this for 24/32bpp (#474, Huver Hu).
- 913. Modify the S3V server to advertise a 32 bits-per-pixel pixmap
- format to clients, and translate to/from packed 24bpp when accessing
- the framebuffer. This allows a lot of clients which didn't know
- how to handle the 24 bits-per-pixel pixmap format to work
- (#474, Huver Hu).
- 912. Start cleanup of depth/bitPerPixel usage in the SVGA server. xdpyinfo
- should now report the correct information (#472, Mark Vojkovich).
- 911. Change chiprounding from 128 to 64 in 8bpp for the Mystique, which
- allows 1600x1200x8 on 2MB boards (#467, Radoslaw Kapitan).
- 910. Position the tseng accel scratchpad area correctly (#461, Koen Gadeyne).
- 909. Fix a problem with the W32 server that causes it to hang with
- W32i cards (#456, Koen Gadeyne).
- 908. Save the initial state of bit 7 of CR58 in the S3, S3V servers and
- svga/s3v driver, and change the "ras_precharge" option to allow it
- to be turned on or off (#458, Harald Koenig).
- 907. Enable the clockchip in the tseng driver by default when a suitable
- RAMDAC/clockchip is found (#448, Koen Gadeyne).
- 906. Fix text mode restore with ViRGE (#443, Harald Koenig).
- 905. Add CH8398 probing to XF86_W32 (#439, Kurt Olsen).
- 904. Add STG1702 probing to XF86_W32 (#434, Stuart Lamble).
- 903. Fix blitbug widths in SVGA/S3V and S3V servers, enable the hardware
- cursor in doublescan mode in SVGA/S3V server, fix the 24bpp problem in
- SVGA/S3V server when mode switching (#432, Sebastien Marineau).
- 902. Disable 24bpp on the STG1700, new "default" linear memory base for W32p
- cards, fix STG170x problems (#430 Koen Gadeyne).
- 901. Add MODULEVENDORSTRING to the ModuleVersionInfo (#423, Stuart Anderson).
- 900. Finetuning for Miro 80SV support. Add "no_pci_disconnect" Option
- (for some Alpha boxes, Alphastation255 and UDB) (#416, Harald Koenig).
- 899. Fix several problems with the tseng driver. Don't allow pixmux modes
- in the VGA16 or MONO server (it doesn't work), disable the combination
- 8bpp + linear + acceleration, fix maximal pixel clock for W32p, fix
- cut'n'paste bug where CRTC 0x31 was restored incorrectly, update the
- XF86_SVGA manual pages (#414,415, Koen Gadeyne).
- 898. NetBSD and OpenBSD doc updates (#412, Matthieu Herrb).
- 897. LynxOS documentation updates (#411,537 Thomas Mueller).
- 896. LynxOS microSPARC fixes (#410, Thomas Mueller).
- 895. Small fixes for dacspeed and set_mclk code in the S3V server (#401,
- Harald Koenig).
- 894. Fix text mode restauration in S3V server (#400, Harald Koenig).
- 893. Some misc bug fixes (#395, Harald Koenig).
- 892. Change clock limits for S3 /DX and /GX chips to 170/170/135 based
- on information from S3 (#395, Harald Koenig).
- 891. Add detection and higher clock limits for MELCO S3 ViRGE card
- (#395, Harald Koenig).
- 890. Add set_mclk for S3V and S3/Trio64 (#395, Harald Koenig).
- 889. Add support for specifying DACSpeeds separately for 8/16/24/32bpp
- (#395, Harald Koenig).
- 888. Fix module handle leak in LoaderOpen (#393, Eric Nygren).
- 877. Add Mach8 and 8514 to loader server (#387,394, Hans Nasten).
- 876. More 68k loader updates (#380, Alan Hourihane).
- 875. Some updates to the S3 server (#374, Harald Koenig).
- 874. Fix some hangs on C&T 65550/65554 (#370, David Bateman).
- 873. Several OS/2 fixes: Add the creation of host.def if not present. Get
- errno declared correctly. Add missing commandline options (#403,405
- Holger Veit).
- 872. Fix a problem in the tseng driver which was causing it to fail at >8bpp
- with the STG1700 RAMDAC (#594, Koen Gadeyne).
- 871. Tseng doc updates (#594, Koen Gadeyne).
- 870. Enable shadow passwords by default for xdm on Linux-Elf.
- 869. Fix Xrm buffer overflow in Xprint ddx (#591, Kaleb Keithley).
- 868. Fix for incorrect handling of negative values in cfb (#586, Harald
- Koenig).
- 867. Fix for fontserver accessing NULL pointer (#587, Arthur Barstow).
- 866. A better fix for change 862 (#590, Kaleb Keithley).
- 865. Fix the incorrect resetting of the HW cursor hotx/hoty values at
- VT switch in most servers/drivers that support HW cursor
- (based on #582, OEyvind Aabling, #588, Dejan Ilic).
- 864. Fix for Xlib/Xt buffer overflows which can be triggered by long
- $LANG and related environment variables (#576, Alex Belits).
- 863. Cards db updates (#583, Dirk Hohndel, Harald Koenig).
- 862. Fix for NULL dereference in XtOpenApplication/XtAppInitialize.
- This also makes these functions behave as documented (ie, exit
- when the display open fails).
- 861. Some man page updates.
- 860. Refine change 856 to take into account that some forms of 8x8
- pattern fill only need one scanline in the XAA pixmap cache
- (#581, David Bateman).
- 859. Remove some unneeded <locale.h> includes in libXp and XKB (libX11)
- (#579, 580, Kaleb Keithley).
- 858. Fix a problem that can cause xfs to crash after running for a while
- (#578, Arthur Barstow).
- 857. Fix a problem with xfs that meant it could be killed by interrupting
- one of its clients (#575, Arthur Barstow).
- 856. Disable 8x8 pattern fill when less than 8 scanlines are available
- in the XAA pixmap cache (#566, David Bateman).
- 855. Fix some sgml problems in fbdev.sgml (#564, Matthieu Herrb).
- 854. Cards db updates (#548, Koen Gadeyne, #552, Matthieu Herrb,
- #555, Harald Koenig).
- 853. Make the TGA server us the same black/white pixel defaults as the
- others, and make it honour the flippixels flag (#551, Alan Hourihane).
- 852. Updates for the VGADriverDoc sample stub driver (#546, Harald Koenig).
- 851. Fix uninitialised variables in xeyes which can cause it to crash
- on Alpha platforms (#546, Harald Koenig).
- 850. Fix a problem where XAA calls accel text functions with a ROP that
- has no source by rechecking the text function when the ROP is changed
- in the gc (#543, David Bateman).
- 849. Fix an xterm autoconf problem (#541, Thomas E. Dickey).
- 848. Add support for ICD2061 programmable clock in the pvga1 driver,
- as used by Diamond Speedstar 24X cards (#539, Torsten Duwe).
- 847. Fix XAA cap style problem with thin lines that shows up with the
- MGA driver (#540, Radoslaw Kapitan).
- 846. Update the Cards db for ViRGE cards (#534, Sebastien Marineau).
- 845. PC98 doc updates (#530, Michio "Karl" Jinbo).
- 844. Implement the Get/SetViewPort() functions in the VidMode extension
- (these were already documented).
- 843. Fix some client/server protocol mismatches in some newer VidMode
- extension functions, and allow new clients to not fail with
- servers that don't have these fixes. The extension version has
- been bumped to 0.8.
- 842. Allow xconsole to handle regular files (it could in our R5-based
- releases, but this was lost when we moved to R6).
- 841. Updates of tgetent for terminfo vs termcap for resize (#527,
- Thomas E. Dickey).
- 840. Add aixterm-style 16 colour support to xterm (#527, Thomas E. Dickey).
- 839. Make sure the port number is printed in host byte order in Xserver
- AUTH warning messages (#525, Marc W. Eichin).
- 838. Stop xterm from setting the TERMCAP environment variable when
- using terminfo (#523, Mark W. Eichin).
- 837. Remove '.' from DefaultUserPath (#517, Per Fogelstrom).
- 836. Add more ET6000-based cards to the Cards db, and make ET6000 and
- ET4000w32i/p cards point to the SVGA server instead of the W32 server
- (#515, Koen Gadeyne).
- 835. Remove '-m486' from the default gcc options.
- 834. Add detection of other variants of the Cyber9385 to the trident
- driver and SuperProbe (Arthur Tateishi and Alan Hourihane).
- 833. Change the SVGA server to tell DGA clients that the memory available
- is InfoRec.videoRam rather than ChipLinearSize (which is often
- too large).
- 832. Cards db updates (#511, Harm Hanemaayer).
- 831. Fix LynxOS inconsistent TERMCAP use by xterm and resize ($504,
- Thomas Mueller).
- 830. Fix a duplicate declaration in imConv.c that shows up when building
- without XKB support, and remove a "Const" from the declaration
- (#505, David A. Koontz).
- 829. Remove all local symlinks for 'make clean' in lnxLib.rules.
- 828. Add an autoconf configuration script for xterm. This isn't used
- in the standard build process, but is useful when building xterm
- standalone (#500, Thomas E. Dickey).
- 827. Fix a problem in the RECORD server extension where the last ClientDied
- is never flushed (#498, Kaleb Keithley).
- 826. Fix array bounds problem in dixutils.c (#493, Kaleb Keithley).
- 825. Fix Xserver crash in SHAPE extension (#492, Kaleb Keithley).
- 824. Fix typos in NetBSD.cf and OpenBSD.cf (#491, Takaaki Nomura).
- 823. Update sun.cf with the version numbers of more recent Sun ProWorks
- compilers (#489, William Austin).
- 822. TOG fix for the lib/X11 -xrm buffer overflow (#487, Kaleb Keithley).
- 821. XInput doc updates (#486, Frederic Lepied).
- 820. Fix SuperProbe's memory size detection for the ATI 264VT-B, 264GT-B,
- 264LT and above, and fix SuperProbe's detection of the 264LT
- (#481, Marc Aurele La France).
- 819. New entries for the Monitors db (#478, collected by Andrew Vanderstock).
- 818. Enable building support for the NetBSD/OpenBSD/Solaris aperture
- drivers by default.
- 817. Have postinst.sh optionally install a link in /usr/bin to rstartd.
- 816. Change the name of the saved ids feature test macro in xterm to
- be more accurate.
- 815. Enable colour in the default XTerm app-defaults file, and include
- the colour-related resources there.
- 814. Update SOLX86 docs (#477, Matthieu Herrb).
- 813. Update the Xservers to check for /dev/xsvc before /dev/fbs/aperture
- on Solaris (#477, Matthieu Herrb).
- 812. Fix XAA stipple ScreenToScreen colour expansion, and fix a problem
- with stipples when ONLY_TRANSPARENCY is flagged (#476, David Bateman).
- 811. Fix Xlib ctstowcs parser mishandling charset escape sequences in
- COMPOUND_TEXT (#470, Kaleb Keithley).
- 810. Fix the -ar1 and -ar2 Xserver flags breaking XKB auto-repeat (#469,
- Kaleb Keithley).
- 809. Add a backward-compatibility option to disable the recent XtMalloc
- changes (#468, Kaleb Keithley).
- 808. Bump the revision number of SuperProbe (#462, Koen Gadeyne).
- 807. Add ICS5341 and ISC5301 SDAC/Gendac detection to SuperProbe (#462,
- Koen Gadeyne).
- 806. Fix negative offsets in pixmap during stipple fill (#460,
- Radoslaw Kapitan).
- 805. Fix the layout of the mouse protocol buttons in XF86Setup. XF86Setup
- now requires Tk version 4.1 or later (#459, Matthieu Herrb).
- 804. Install rstartd in /usr/X11R6/bin rather than in /usr/bin.
- 803. Fix a DGA addressing problem in the S3 server (#457, Mark Vojkovich).
- 802. Remove the part of the PCI config-type detection that seems to switch
- some Neptune-based machines from type 1 to type 2.
- 801. xtest update for OpenBSD (#455, Matthieu Herrb).
- 800. Only show Xinput initialisation messages once (#454, Matthieu Herrb).
- 799. Add support for the IntelliMouse protocol to xf86config and XF86Setup.
- 798. Fix a problem in the Xservers where the DPMS timer code can cause
- select() can get called with a negative timeout value (and get stuck
- in an infinite loop) (#453, Van Jacobson).
- 797. OS/2 updates (including docs) (#452, Holger Veit).
- 796. Doc updates (#450, Matthieu Herrb).
- 795. Fix the trident driver to make virtual resolutions work for the
- TGUI96xx/Cyber chips and make 32bpp available to these chips too.
- Also, update the clock code for these chips to allow higher
- resolutions (#386, Alan Hourihane).
- 794. Disable the svga/s3v register dumps except for xf86Verbose > 1.
- 793. Fix the svga/s3v driver Probe() to not falsely assume a ViRGE card
- is present in some circumstances.
- 792. Add some new entries for the ServerFlags section to allow some
- control of the code used to determine the PCI config type on
- Intel platforms.
- 791. Fix handling of the "line" parameter for the scroll-forw/scroll-back
- actions in xterm, and add entries to the XTerm app-defaults to
- use buttons 4 and 5 (as generated by the wheel on the IntelliMouse)
- for scrolling.
- 790. Add debugging messages to the PCI probe code. These are enabled
- when xf86Verbose > 2. Also, try scanpci's method of detecting PCI
- config type 1 when the other method fails.
- 789. Fix DeviceButtonMotion (#437, George Sachs).
- 788. Fix for SuperProbe dumping core on NetBSD (#433, Matthieu Herrb).
- 787. Fix fbdev.c and update documentation (#428, Geert Uytterhoeven).
- 786. mga/README updates (#419, Radoslaw Kapitan, #431, Guy Desbief).
- 785. xtest fixes, and updates for Linux (Harald Koenig).
- 784. MGA doc updates (#447, Guy Desbief).
- 783. Fix the Xt TopLevelShell's XtNiconic resource (Sekhar Makkapati).
- 782. Tseng doc updates (#445, Koen Gadeyne).
- 781. Tseng doc updates (#421, Harald Nordgard Hansen).
- 780. Change the behaviour of XtMalloc, XtCalloc and XtRealloc when
- Malloc0ReturnsNull is set to YES so that they conform to the
- Xt spec (#444, Kaleb Keithley).
- 779. Fix for buffer overflows in libX11's GetDatabase(). This can be
- used to exploit setuid programs linked against libX11
- (#442, Harald Nordgard Hansen).
- 778. Doc updates (#441, Takaaki Nomura).
- 777. Doc updates (#440, Thomas Mueller).
- 776. Modify some messages in the svga/s3v driver (#443, Harald Koenig).
- 775. Undo change 623; the post dividers were incorrect (#435, Marc Aurele
- La France).
- 774. Move the Tk/Tcl include dirs after all the others in the XF86Setup
- Imakefile to make sure they don't cause installed X headers to be
- incorrectly used.
- 773. Add CH8398 RAMDAC detection to SuperProbe (#418, Kurt Olsen).
- 772. Fix an error in xterm's vt220 emulation: the DECUDK is only supposed
- to be interpreted for _shifted_ function keys (#384, Thomas E. Dickey).
- 771. Patch to GLX comment/example in xf86site.def (#409, Henry Worth).
- 770. Improve handling of screen pitch for accelerated C&T driver (#407,
- David Bateman).
- 769. Add support for the Miro 80SV to the S3 server (#406, Harald Koenig).
- 768. Fix bmtoa, smproxy, twm, xsm and Xprint to use mkstemp, if available,
- to avoid the mktemp() race condition (#404, Matthieu Herrb).
- 767. Several updates XInput: Add always core feature to mouse driver. Add zone
- configuration for the wacom driver (TopX, TopY, BottomX, BottomY). Add
- KeepShape option for the wacom to respect the ratio of width/height
- |of the screen. Add multiple active zones on the same tablet. Add
- checks not to send core button events when multiple devices control the
- core pointer. Fix problem in the mouse driver not sending the button id
- in extended events. (#402, Frederic Lepied).
- 766. More modes for xf86config and XF86Setup database (#397, Koen Gadeyne).
- 765. Fix name of GLX stub library (#389, Henry Worth).
- 764. Renumber option flag definitions to allow more space in the various
- categories.
- 763. Fix problems with DGA on 4/8MB Millenniums (#390, Radoslaw Kapitan).
- 762. Fix Mystique display problems and dim text font after exit problems
- (#378,379, Guy Desbief).
- 761. Rewrite clock restoring procedure for mga driver (#385, Radoslaw Kapitan).
- 760. More modes for XF86Setup database (#372, Koen Gadeyne).
- 759. Fix typos in NetBSD.cf (#363, Takaaki Nomura).
- 758. Add a ModuleInit function to libxaa.a (#362, J. Kean Johnston).
- 757. Fix a NULL dereference in xf86Config.c on OSs that don't support
- dlopen() loading for the static servers (#361, Thomas Mueller).
- 756. Fix a problem with references to the GLX stub libraries in
- Xserver/Imakefile that affects building static servers
- (#361, Thomas Mueller).
- 755. Allow most of the extensions in Xext to be dynamically loaded (in
- a single module) (#360, Matthieu Herrb).
- 754. Allow the DBE extension to be dynamically loaded (#359, Matthieu Herrb).
-
-XFree86 3.9b (4 May 1997)
- 753. Add BuildPC98Servers as an easy way to enable/disable building
- all PC98 servers.
- 752. Build Xvfb by default to help pick up build problems.
- 751. Make 'makedepend' understand '-U' on the command line.
- 750. Some fix-trackers from TOG, includes:
- lib/Xi: missing error message (#352 -- we already had this fix)
- lib/X11: long font paths can garbage heap (#353)
- fix potential memory leak in xinput ProcXGetDeviceMotionEvents (#354)
- fix unmatched quotes in comments (and other stuff?!?) (#355)
- config updates (#356)
- lib/X11: when IMS dies the library closes all open IMs (#357)
- lib/X11: When doing XSetICValues and IMS returns ERROR, library core
- dump (#358).
- 749. Clean up the GLX for the static-linked servers (#351, Henry Worth).
- 748. Fix SCO Open Server build problem (#348, J. Kean Johnston).
- 747. Add an option to allow VClk1 to be used as the programmable clock
- with C&T 65550 and 65554 chips (#346 Daniel Bischof, Andreas Heitmann
- and Thomas Landgraf).
- 746. Remove trailing ',' at the end of InfoRec initialisations, which
- was hiding potential compiler warnings (#343, Koen Gadeyne).
- 745. Replace the ChipClockScaleFactor field with ChipClockMulFactor and
- ChipClockDivFactor to allow for non-integer factors required in
- some cases (#343, Koen Gadeyne).
- 744. Fix some 'make' problems that show up on NetBSD and OpenBSD, and clean
- up BSD 4.4 -specific make stuff in the config/cf directory
- (#342, #344, Matthieu Herrb).
- 743. Add better error/warning messages for the aperture driver code for
- NetBSD/OpenBSD (#341, Matthieu Herrb).
- 742. Block choosing interleave mode for the Mystique, and set maxPixelClock
- for the Mystique (#338, Radoslaw Kapitan).
- 741. Add ability to set MCLK for the mga driver in XF86Config (#338, #339,
- Radoslaw Kapitan).
- 740. Fix some problems with XAA DELAYED_SYNC and the software cursor and
- backing store -- new wrappers are added (#337, Sebastien Marineau).
- 739. Re-enable HW cursor for Millennium, and implement looping over
- MGAIdent when checking the Chipset (#336, Radoslaw Kapitan).
- 738. Remove some assumptions about burst modes from the C&T ImageWrite
- function (#335, David Bateman).
- 737. Matrox Mystique driver support, which should work fine with
- acceleration disabled (#334, Guy Desbief).
- 736. Fix for double-height MGA hw cursor when using interlaced modes
- (#333, Radoslaw Kapitan).
- 735. Explicit syncing of the blitter at the end of the C&T XAA primitives
- is no longer needed since delayed syncing is off by default
- (#332, David Bateman).
- 734. Use the source pitch for colour CPU to screen operations in the C&T
- driver (#332, David Bateman).
- 733. Fix writing the 16bpp planemask to the chip in the C&T driver
- (#332, David Bateman).
- 732. Stop reserving 1kb of video memory when the accelerator is disabled
- for the Tseng driver (#331, Stuart Lamble).
- 731. Fix Trident 96xx/Cyber series for snow on the screen and fix
- acceleration issues (#330, #349, Alan Hourihane).
- 730. C&T doc updates (#329, David Bateman).
- 729. Fix a bitblt bug for 8bpp, widths 49..56 in the s3v driver (#328,
- Sebastien Marineau).
- 728. Add filled trapezoid support to the s3v driver (#328,
- Sebastien Marineau).
- 727. Add caching of often-used ViRGE registers (#328, Sebastien Marineau).
- 726. Add hw cursor support for the SVGA s3v driver (#328, Sebastien Marineau).
- 725. Add a new kind of XAA pixmap cache slot which is used to hold mono
- 8x8 patterns for chips which have PROGRAMMED_BITS (#327,
- Sebastien Marineau).
- 724. Fix XAA pixmap cache invalidation after a VT switch (#327,
- Sebastien Marineau).
- 723. Fix lockup problem in SVGA s3v driver, and some cleanups (#326,
- Harald Koenig).
- 722. Fix MGA hw cursor not displaying after switching resolutions
- (#325, Radoslaw Kapitan).
- 721. Fix text colour problems for ViRGE/VX, a rectfill and bitblt bug
- for virtual width == 2048, and avoid some more bad hardware lines in
- the S3V server (#324, Harald Koenig).
- 720. Move chipset independent hw-cursor stub from mga_dac3026.c to
- mga_hwcurs.c (#322, Radoslaw Kapitan).
- 719. Fix a build problem in osPexFont.c, and add a ModuleInit function
- for libxf86cache.a (#321, Michael Rohleder).
- 718. Fix a 32bpp Millennium DAC initialisation typo (#318, Radoslaw Kapitan).
- 717. Loader support for m68k (#317, #323, Alan Hourihane).
- 716. Fix copyright and remove RCS idents in xf86_ldext.h (#316,
- Matthieu Herrb).
- 715. Fix some NonTE text problems, and back out change #690 (#315,
- David Bateman).
- 714. Add initialisation of GlxInitVisualsPtr to loadmod.c (#313, Henry Worth).
- 713. Don't build libX11 for BuildServers only unless building the Xnest
- server (#312, Marc Aurele La France).
- 712. Remove extraneous line in xf86text.c (#311, Harald Nordgard Hansen).
- 711. Restore changes accidentally backed out of xfree86.cf in 3.9a
- (includes #310, #313, #320, #326).
- 710. Open /dev/tty0 instead of /dev/console on Linux to find the first
- free VT.
-
-XFree86 3.9a (17 April 1997)
- 709. Add delayed syncing as an optional flag for XAA. This is now
- currently enabled only in the S3 driver (#308, Mark Vojkovich).
- 708. Several fixes to TE and NonTE fonts. The server now passes CH06
- drwimgstr, drwimgst16, drwstr, drwstr16, drwtxt and drwtxt16 xtest tests
- (#305,307, Sebastien Marineau).
- 707. Add Latin2 Type1 fonts (Peter Soos).
- 706. Add Latin2 bdf fonts (Petr Kolar).
- 705. Add SubsequentDashedTwoPointLine to XAA (#296, Mark Vojkovich).
- 704. Add a Hungarian XKB symbols file (Peter Soos).
- 703. Add support for Microsoft Intellimouse (#304, Thomas Vogler).
- 702. Add ViRGE/VX support to SVGA/S3V server; this isn't really working, yet
- (#299,301, Harald Koenig).
- 701. Add memory, FIFO, and PCI retry options to SVGA/S3V server (#293,300,
- Sebastien Marineau).
- 700. Add support for 15bpp and 32bpp to SVGA/S3V server. 32bpp only with
- very limited acceleration (#293,300, Sebastien Marineau).
- 699. Only build libX11 while doing BuildServersOnly if Xnest is enabled (295,
- Harald Koenig).
- 698. Disable color expansion with planemask at 24bpp in chips driver (#303,
- David Bateman).
- 697. Fix small bug in SVGA/S3 dash line code (#302, Mark Vojkovich).
- 696. Allow trident 96xx chips to restore text mode (#298, Alan Hourihane).
- 695. Fix virtual resolutions for trident driver at 24bpp (#298, Massimiliano
- Ghilardi).
- 694. TGUI driver updates for PC98 (#297, Akio Morita)
- 693. Fix building PC98 modules, resync PC98 Imakefile (#297, Takaaki Nomura).
- 692. Fix ch8398 ramdac command byte for 8bpp in tseng driver (#294,
- Krajcsovits Gyorgy).
- 691. Fix NonTE fonts in XAA (#292,309 David Bateman).
- 690. Disable XAA matchcommon logic to fix problem with grayed out fonts
- (#291, David Bateman).
- 689. Fix sis driver for 8x8 color expand pattern fill pattern flags and XAA's
- new synching policy (#290, Xavier Ducoin).
- 688. LynxOS updates (#289, Thomas Mueller).
- 687. Enable 1bpp and 4bpp for the chips driver (#288, David Bateman).
- 686. Jump version number to document that this is the branch working towards
- XFree86-4.0.
-
-XFree86 3.2At (14 April 1997)
- 685. Fix ImageText fallback (#287, David Bateman).
- 684. Some fixes for NonTE text. Add FixedBase support. Add TRIPLE_BITS24BPP
- support. Fix CPU_TRANSFER_PAD_QWORD problem. Fix possible loss of a few
- pixels at the end of NonTE text strings (#286, David Bateman).
- 683. Fix compile problem with USL compiler (#283, David Bateman).
- 682. Updates to mga_reg.h for Mystique (Guy Desbief).
- 681. Add ATT20C49x RAMDAC support for 16 and 24bpp modes to tseng driver.
- Make ET6000 hardware cursor use closest available color instead of
- refusing to change colors when it can't find an exact match. Fix
- another W32i linear mode bug. Change ET6000 pixel clock limits as per
- Tseng's recommendations (=much lower than we had before). fix a BUG in
- the ET4000 "standard set-of-clocks" code. Use ChipClockScaleFactor.
- (#282, Koen Gadeyne).
- 680. Fix and re-enable 8x8 pattern color expansion (!=24bpp) for Alpine cards
- Fix CPUToScreen color expansion for 24bpp mode, fix determining the BG
- color in 24bpp color expansion routines (#281,285, Corin Anderson).
- 679. Various Cirrus fixes and additions. Fix HAVE_546X() macro for Laguna
- support. Add support for CL-GD5480. Disable Alpine XAA color expansion
- code. Fix 32bpp Alpine mode bug. Overload {slow,med,fast}_dram options
- to set Rambus BCLK on Laguna chips. Remove Sync()'s in laguna_acl.c.
- Removed unnecessary, dead, and/or dumb code in cir_driver.c. Add clock
- values for 150MHz through 229MHz dot clocks. Set clock limits correctly
- for Laguna chips. (#280, Corey Anderson).
- 678. Fix problem in xf86gcmisc.c that could cause a segfault (#279,
- Mark Vojkovich).
- 677. Fix problems with NonTE text in XAA (#278, David Bateman).
- 676. Fix loader under SVR4.0.4 (lstat,fstat,mknod)(#277, Richard Coley).
- 675. Speedups for dashed lines in SVGA/S3 (#276, Mark Vojkovich).
- 674. Allow building Xnest with BuildServersOnly (#275, Marc Aurele La France).
- 673. Fix vga16 and banked vga2 without also breaking either of the loader or
- static servers. Remove obsolete directories and other extraneous junk.
- Remove mi's dependence on mfb. LoaderFixups is no longer needed. Add
- xf86InitViewport to the symbol table. Combine vga2/mfb & vga2/mfb.banked.
- (#274 Marc Aurele La France).
- 672. More layout cleanups in matrox driver (#273, Radek Kapitan).
- 671. Fix LinkKit to build loader (#272, Takaaki Nomura).
- 670. Fix some Alpha problems (#270, Robin Cutshaw).
- 669. Add MemClk field to all drivers (#270,271 Robin Cutshaw, Sebastien
- Marineau).
- 668. Fix server crashes in C&T driver caused by delayed syncing (#269, David
- Bateman).
- 667. Fix problems with PEX modules (#268, Takaaki Nomura).
- 666. Fix some problems in XAA benchmarks and Trident Cyber support (#266,267,
- Alan Hourihane).
- 665. Add Mystique to scanpci (#264, Guy Desbief).
- 664. Fix problems with delayed syncing (#263, Mark Vojkovich).
- 663. Fix LinkKit and cirrus driver (#262, Takaaki Nomura).
- 662. Fix I18N bug (#261, Nagao Tadaaki).
- 661. First steps to get loader on SCO (#260, J. Kean Johnston).
- 660. File structure changes for mga driver (#259, Radek Kapitan).
- 659. Add stubs to load GLX extension (#228,246, Henry Worth, Dirk Hohndel).
-
-XFree86 3.2As (09 April 1997)
- 658. Several fixes and enhancements for the cirrus driver. Fix the crash that
- showed up in 3.2A with MMIO on some chips at 16bpp. Enable the 8x8
- pattern fill code for different chips. Reorganize the BitBLT feature
- checks in the accelerated driver, and make it compatible with the new
- delayed syncing in XAA.Fix the > 85 MHz dot clock mode on the
- CL-GD5436/46. Detect all DRAM configurations that are possible on the
- CL-GD5446. Add code to handle the 7555 (no detection).
- (#258, Harm Hanemaayer).
- 657. Fix Bresenham line bug in trident/9440 driver (#257, Alan Hourihane).
- 656. Add trapezoid acceleration to tseng driver (disabled), disable W32 hw
- cursor, remove redundant warning message about "Wrong Cursor Color Tried"
- (#256, Koen Gadeyne).
- 655. Add mga dashed lines (#255, Andrew Vanderstock).
- 654. Add more flexible way of loading and initializing extensions (#253,
- Matthieu Herrb).
- 653. Fix bugs in the S3V server concerning rectfill with scan line width of
- 2048 and with lines (#251,252, Harald Koenig).
- 652. Add option "set_memclk" (#249, Sebastien Marineau).
- 651. Fix hangs in svga/s3v server, fix some bugs, add planemask support to
- most accelerated primitives and start accelerated lines (#249, Sebastien
- Marineau).
- 650. Fix XAA to force ROP to GXcopy for XDrawImageString (#249, Sebastien
- Marineau).
- 649. Change "unsigned long" to CARD32 in dashed line support (#248,
- Mark Vojkovich).
- 648. Add Matrox Mystique to vgaPCI.h (Guy Desbief).
- 647. Fix building XF98_EGC (#247, Takaaki Nomura).
- 646. Fix some problems with delayed syncing in the C&T driver (#245, David
- Bateman).
- 645. Add dashed line support for SVGA/S3 (#243, Mark Vojkovich).
- 644. Add dashed line support for XAA (#242,244, Mark Vojkovich).
- 643. Fix some fill problems in S3V server (#241, Harald Koenig).
- 642. Several fixes to C&T driver that rearrange code in XAA FillRect code to
- work around bug in HW cursor, add ImageWrite function, use the 8x8
- pattern where possible to simulate a planemask, add preliminary support
- for vga2 and vga16 and temporary fix for Syncing problems in new XAA code
- (#239, David Bateman).
- 641. Further LinkKit changes (#238, Takaaki Nomura).
- 640. Small fix for LinkKit (#237, David Bateman).
- 639. Fix twm double-frees (#236, John Hawkinson).
- 638. Include missing patch for change 601.
- 637. Update Compaq vgaVideoChipRec (1bpp,4bpp,15bpp,32bpp) (#234, Gerry Toll).
- 636. Fix Linkkit (#233, Takaaki Nomura).
- 635. Fix broken console restore for 4bpp driver (#232, Marc Aurele La France).
- 634. Add S3 chipset override code to SVGA/S3 server (#231, Harald Koenig).
- 633. Start converting XF86Setup to use the loader (#230, Joe Moss).
- 632. Correct DCLK limits for S3V server (#229, Harald Koenig).
- 631. Add STG1702 to SuperProbe (#227, Stuart Lamble).
- 630. Small fix for syncing in XAA color expansion (#225, Mark Vojkovich).
- 629. Resync PC98 server (#224, Takaaki Nomura).
- 628. Add stg1702 auto probing to the tseng driver (#223,#226, Stuart Lamble).
- 627. Fix 4bpp for PC98 (#222, Takaaki Nomura).
-
-XFree86 3.2Ar (28 March 1997)
- 626. Remove the old driver subdirectories.
- 625. Fix setting of CRTC[22] on VGA compatibles (#220, Marc Aurele La France).
- 624. Fix vga16 & banked vga2; don't remap *fb's endtab. Use the correct
- banking functions, displayWidth handling (#219, Marc Aurele La France).
- 623. Change Mach64 to use the known extended post-divider setting on the
- 3D Rage II (#218, Marc Aurele La France).
- 622. Lots of changes to the SVGA/ATI driver, including 3D Rage II support,
- memory type detection (#217, Marc Aurele La France).
- 621. Clean up internal allocator a bit, and make it log more information
- (when enabled) (#216, Marc Aurele La France).
- 620. Fix misuse of UseInstalled in the .cf files for BSD derivatives.
- Make LinkKit use the same default CCOPTIONS as the main build.
- Remove redundancy in svr4.cf (#215, Marc Aurele La France).
- 619. Add newer ATI chipsets to SuperProbe (#214, Marc Aurele La France).
- 618. Fix color expansion and pixmap cache in trident driver (#212,213,
- Alan Hourihane).
- 617. Change XAA to delay syncing (#211, Mark Vojkovich).
- 616. Fix OS/2 naming problem in Xserver Imakefile and XAA 8x8 pattern
- rotations and flag checking inconsistency (#210, Sebastien Marineau).
- 615. Add SVGA/S3V driver (#210, Sebastien Marineau).
- 614. Add Sigma Designs REALMagic to SuperProbe (#209, Harald Koenig).
- 613. Merge Trio64V2/Aurora64V+/PLATO changes into S3/SVGA driver (#208,
- Harald Koenig).
- 612. Fix building XF98_EGC (#207, Takaaki Nomura).
- 611. Add ImageWrite to s3/svga and prepare driver for upcoming XAA changes;
- the s3/svga server no longer does cursor blocking, users of Xqueue
- might have to use the Option "sw_cursor" (#206, Mark Vojkovich).
- 610. Fix 8 bit DAC handling in SVGA server (#205, Mark Vojkovich).
- 609. Add better support for linear memory on W32i cards (#204, Koen Gadeyne).
- 608. Add HORIZONTAL_TWOPOINTLINE to XAA (#203, Alan Hourihane).
- 607. Add autoloading of libxf86cache to Mach32 & Mach64 server and compile
- ServerInit() and ModuleInit() only for the LOADER (#202, Takaaki Nomura).
- 606. Add support for Cirrus CL-GD5464BD, CL-GD5465 (#201, Corin Anderson).
- 605. Documentation updates and improved memory bandwidth handling in tseng
- driver (#200, Koen Gadeyne).
- 604. ViRGE/DX support for S3V server (#199, Harald Koenig).
- 603. Some fixes to Trio64V+ & Trio64V2 (#198, Harald Koenig).
- 602. Recognize 1MB on ViRGE (using an illegal setting) (Alan Hourihane).
- 601. Fix and enhance handling of unresolved symbols in loader (#196, Harald
- Koenig).
- 600. Fixes and Additions for XF86Setup (#194,195, Joe Moss).
- 599. Fix SuperProbe for W32 chipsets (#191, Koen Gadeyne).
- 598. Fix building the static S3 server (#188-190, Harald Koenig).
- 597. Fix undefined symbols in the pex5 module (#187, Matthieu Herrb).
- 596. Fix autoloading modules in the S3 server for PC98 (#186,197 Takaaki
- Nomura).
-
-XFree86 3.2Aq (23 March 1997)
- 595. Fix building static XF86_S3 (#185, Harald Koenig).
- 594. Enable loader on OpenBSD (#184, Matthieu Herrb).
- 593. Add missing files for NV1 (change 591).
-
-XFree86 3.2Ap (22 March 1997)
- 592. Fix screen problems with C&T at 24bpp (#182, Nozomi Ytow).
- 591. Add NV1 acceleration (#181, David McKay).
- 590. Add Trio64V2 170/110/60MHz support to S3 server (#180, Harald Koenig).
- 589. Automagic loading of modules for old S3 server (#178,179 Harald Koenig).
- 588. Automagic loading of modules for PC98 servers (#177, Takaaki Nomura).
- 587. Fixes to blitter and hw cursor handling in C&T driver (#176, David
- Bateman, Egbert Eich).
- 586. Add Elsa handling to S3/SVGA and Trio64V2/DX/GX, ViRGE/DX/GX and PLATO/PX
- to SuperProbe, scanpci, S3, S3V and S3/SVGA servers (#174,175,
- Harald Koenig).
- 585. Build fix for Xprt, Xnest and Xvfb (#172, Takaaki Nomura).
-
-XFree86 3.2Ao (18 March 1997)
- 584. Fix/add IBM RGB528 support and add ELSA eeprom detection (only
- for IBM ramdacs right now) (#170, Harald Koenig).
- 583. Fix linking problem of XF86_LOADER for Linux/a.out (#170,171, Harald
- Koenig, Xavier Ducoin)
- 582. Fix several problems with loader and static server that were caused
- by change 567 (Dirk Hohndel).
- 581. Fix bad 400x300 mode line (#165, Koen Gadeyne).
- 580. Finer W32 chipset detection (#165, Koen Gadeyne).
- 579. Tseng documentation updates (#165, Koen Gadeyne).
- 578. Fix unresolved strlen in PEX and XIE (#164, Takaaki Nomura).
- 577. Fix changes of NEC480 to PEGC (#163, Michio "Karl" Jinbo).
- 576. Fix building of XF98_LOADER (#163,169, Michio "Karl" Jinbo,
- Takaaki Nomura).
- 575. Fix building of normal X servers for PC98 (#163, Takaaki Nomura).
- 574. Fix building P9000 module (#160, Takaaki Nomura).
- 573. Add S3/SVGA color expansion (#161, Mark Vojkovich).
- 572. Fix problems with "dac_8_bit" in svga server (#159, Mark Vojkovich).
- 571. Fix ET6000 hardware cursor (#158, Harald Nordgard Hansen).
- 570. Changes to NetBSD + BSD Elf library configuration (#157, Chris G.
- Demetriou).
- 569. Fix for the SVGA/S3 hardware cursor (Xavier Ducoin).
-
-XFree86 3.2An (15 March 1997)
- 568. Build fixes in order to get a clean compile on Linux and FreeBSD
- (not for PC98, though). The servers still don't work quite as
- they should.
-
-XFree86 3.2Am (12 March 1997)
- 567. First attempt to get a universal SVGA server that statically links
- in all drivers except those from the accel directory. Links ok and
- seems to work at >=8bpp, but has bit ordering problems for 1,4bpp.
- (David Dawes, Dirk Hohndel).
- 566. Fixes for Trident Cyber chipsets (#154,155, Alan Hourihane).
- 565. Fixes for OS/2 (more IHaveModules and drive letters in ModulePath),
- get Mach64 to work again (#153, Holger Veit).
- 564. Cleanups and improvements to tseng hw cursor code (#152, Koen Gadeyne,
- Harald Nordgard Hansen).
- 563. Add pci_retry option to tseng driver (#151, Dejan Ilic).
- 562. Change NEC480 to PEGC, resync of SuperProbe/Imakefile (#150, Takaaki
- Nomura).
- 561. Add hardware cursor to MGA driver (#149, Xavier Ducoin).
- 560. Make tseng driver handle 1/4/8bpp at runtime (#145, Koen Gadeyne).
- 559. Make apm driver loadable (#146, Joe Moss).
- 558. Fix some cross compilation problem for XAA on OS/2 (#144, Sebastien
- Marineau).
- 557. Fix some 24bpp problems for ViRGE and cfb (#144, Sebastien Marineau).
- 556. Move cursor area to top of vidmem for ViRGE (#144, Sebastien Marineau).
- 555. Really fix mono/Imakefile and fix PEX struct dirent problem (#143,
- Matthieu Herrb).
- 554. Add handling for S3-style 8x8 pattern fill to XAA; fix s3/svga
- accordingly (#141, Mark Vojkovich).
- 553. Fix OS/2 problems; disable cross compiling Xprt, Xvfb, Xnest (#140,
- Holger Veit).
- 552. Include some fix trackers, fixing problems with sunLib.tmpl, hp.cf,
- memory leak in xdm: xdmcp.c manage(), Imake.rules, zlib 1.0.4, AltGR
- not working in Xlib (#131,132,135-139).
- 551. Reapply change 536 for the new drivers (#130, Mark Vojkovich).
- 550. Enable loader for NetBSD and fix a few typos (#127-129, Takaaki Nomura).
-
-XFree86 3.2Al ( 7 March 1997)
- 549. Fix a.out loader for FreeBSD (#126, Takaaki Nomura).
- 548. Add the BT-848 to scanpci (#121, Dejan Ilic).
- 547. Change the way dynamic loading of vga2. vga16, vga256 modules is done
- (just one module per driver for all color depths, all the drivers are
- moved to xfree86/drivers) (#122-124, Alan Hourihane, Dirk Hohndel).
- 546. Add support for 3DLabs GLINT chipsets to scanpci and SuperProbe, start
- working on a 2D server for Elsa Gloria L (Dirk Hohndel, Stefan Dirsch).
-
-XFree86 3.2Ak ( 4 March 1997)
- 545. Make Mono drivers loadable and clean up some of XF86_LOADER; this
- change replaces some of the things done in change 537 (#119, H.J. Lu).
- 544. Fix char alignment in COFF loader as well (#120, Thomas Mueller).
- 543. Fix short alignment in COFF loader and add missing entry to SYMENT
- (#118, Michael Rohleder).
- 542. Build fix for libc_wrapper.c on ISC (#117, Michael Rohleder).
- 541. Add Module Version to Mach32 server (#117, Michael Rohleder).
- 540. Add smarter handling of unresolved symbols in the loader (#116,
- Sebastien Marineau).
- 539. Fix problem in OS/2 loader (#115, Sebastien Marineau).
- 538. Add module versioning and auto loading to S3V server (#114, Sebastien
- Marineau).
- 537. Change name of Screen Section to "XFree86".
- 536. Set correct clipping rectangle for SVGA/S3 (#112, Mark Vojkovich).
- 535. Fix a problem in trapezoid solid fill code (not sure if this fixes
- the problems that caused change 533 to be disabled) (#110,
- Mark Vojkovich).
- 534. Add 'Doublescan' support to MGA driver (#109, Radoslaw Kapitan).
- 533. Add trapezoid solid fill acceleration to MGA driver; disabled as it
- doesn't draw correctly at this point (#109, Radoslaw Kapitan).
- 532. Remove MgaAccelSwitch (#108, Radoslaw Kapitan).
- 531. Improve SolidFill speed on C&T65545/6/8 (#107, Nozomi Ytow).
- 530. Fix libc_wrapper.c build problem on SVR4 (#106, Takaaki Nomura).
- 529. Fix VGA16 driver (#105, Thomas Mueller).
- 528. Fix Compaq AVGA driver (#104, Ming Yu, Joseph Pfeiffer, Gerry Toll).
- 527. Add more comments to MGA driver (#103, Radoslaw Kapitan).
-
-XFree86 3.2Aj (28 February 1997)
- 526. Various build fixes for FreeBSD, NetBSD, Linux, Solaris (Dirk Hohndel).
- 525. Fixes for OS/2 loader and ar code (#100, Sebastien Marineau).
- 524. Updates to S3/SVGA driver (#99, Mark Vojkovich).
- 523. Add SubsequentFillTrapezoidSolid to XAA (#99, Mark Vojkovich).
- 522. First stab at getting VGA16 as loadable module; doesn't work, yet
- (Dirk Hohndel).
- 521. Add Mystique register definitions (#98, Guy Desbief).
- 520. Fix unresolved symbols with loadable ati driver (#96, Thomas Mueller).
- 519. Add module versioning (#97, Holger Veit).
- 518. LynxOS doesn't have vfscanf (#95, Thomas Mueller).
- 517. Fix 499 was missing. It is now included.
- 516. Remove bogus code in xf86frect.c (#93, Harm Hanemaayer, Harald Nordgard
- Hansen).
- 515. Build fixes for FreeBSD (#92, Takaaki Nomura).
- 514. Restructure RAMDAC handling in tseng driver and add 16/24bpp support
- for STG1703 (#91, Koen Gadeyne).
- 513. Tseng HW cursor state save/restore (#91, Dejan Ilic).
- 512. Disable HW cursor on et4000 (#91, Koen Gadeyne).
- 511. Fix et6000 memory probing (#91, Koen Gadeyne).
- 510. Fix handling of PCI probe in the tseng driver (#91, Koen Gadeyne).
- 509. Fix "double-magic" in libc_wrapper.c (#90, Holger Veit).
- 508. Fix for ET6000 HW cursor (#89, Harald Nordgard Hansen).
- 507. Fixes to MGA driver: remove "nolinear", allow overriding MMIO address
- as IoBase in XF86Config, remove obsolete files (#88, Radoslaw Kapitan).
-
-XFree86 3.2Ai (25 February 1997)
- 506. Fix libc_wrapper.c for LynxOS, where stdin/out/err isn't a valid
- initializer (#87, Thomas Mueller).
- 505. Updates to SiS driver: fix setting MemBase, allow some XAA functions
- in 8bpp even without linear mode, support DPMS (#86, Xavier Ducoin).
- 504. Disable the stream display fetch length control for Trio64V2
- (#85, Xavier Ducoin).
- 503. Update SuperProbe for sis86c202 and sis86c205 (#84, Xavier Ducoin).
- 502. Allow ModulePath to have multiple elements; use heuristic to find the
- module if only part of the exact filename is specified; allow subdirs
- of the module directory to be searched (Dirk Hohndel).
- 501. Change loader code so that ModuleInit is a magic function name that
- indicates the init function for a module. ServerInit now is the function
- used to get the initial ScrnInfoRec; change all modules to follow these
- naming conventions (Dirk Hohndel).
- 500. Fix missing fsetpos/fgetpos in ISC (#78, Michael Rohleder).
- 499. Fix elfloader to recognize .data1 and .rodata1 sections
- (#82, Steve Forsythe).
- 498. Add readdir family of functions to libc_wrapper (#81, Holger Veit).
- 497. Add crosscompilation support for OS/2 (#81, Holger Veit).
- 496. Add loadable module support for P9000 (#80, Erik Nygren).
- 495. Fix error message in loader (#79, Matthieu Herrb).
- 494. Workaround for a bug in 68k GNU binutils (#77, Geert Uytterhoeven).
- 493. Add new xf86_libc.h to make porting to the new style loader
- architecture easier. Adapt PEX5 using the new header file (Dirk Hohndel).
- 492. Fixes for a.out loader (#74-76, Matthieu Herrb).
- 491. More fixes for libc_wrapper.c (#73, Michael Rohleder).
-
-XFree86 3.2Ah (23 February 1997)
- 490. Some a.out loader updates for Linux/a.out (#72, Harald Koenig).
- 489. Add support for cross compilation of modules in the Imake rules
- (#71, Holger Veit).
- 488. Add a subset of xf86stdio functions to libc_wrapper.c (#71, Holger Veit).
- 487. Make the I128 driver loadable (#65,66,70, Robin Cutshaw).
- 486. Fix et4000 driver compile problems for vga2 and vga16
- (#69, Koen Gadeyne).
- 485. Fix 8x8 patterns for TGUI chips (#68, Alan Hourihane).
- 484. Fix direct reference to memset() (#67, Harald Nordgard Hansen).
- 483. Gnu parallel make update for loadable server (#64, H.J. Lu).
- 482. Include the summasketch support explicitly in xf86Xinput.c when
- not using dynamic modules (#63, Christer Nilsson).
- 481. Loader support for OS/2-style a.out (#62, Sebastien Marineau).
- 480. Fix nested asm calls in tseng_cursor.c (#61, Takaaki Nomura).
- 479. Add a timeout to the C&T blitter wait loop, and reset the blitter
- when this happens (#60, David Bateman).
- 478. Add missing imake patch for massaging the results of parse_utsname()
- (#57, Chris Demetriou).
- 477. Don't define DoLoadableServer yet for non-Intel Linux platforms.
- 476. Don't refer to the PEX init function in loadmod.c when PEXEXT isn't
- defined (as is the case on Alpha platforms) (#56, Alan Hourihane).
- 475. Fix references to usleep on SVR4 (#61, Takaaki Nomura).
- 474. Fix references to snprintf on SVR4 (David Dawes).
- 473. Fix some compile problems on FreeBSD (David Dawes).
-
-XFree86 3.2Ag (19 February 1997)
- 472. Fix Imakefiles and loader problems on OS/2 (#53, Sebastien Marineau).
- 471. Fix problems with ISC and the Mach32 module (#55, Michael Rohleder).
- 470. Fix Xnest and Xvfb when DoLoadableServer is YES (Dirk Hohndel).
- 469. Clear up multiplex support on 96xx and display error message when
- requested resolution exceeds available memory with the accelerator
- engine (#52, Alan Hourihane).
- 468. Let Trio64V2 use newmmio driver (#49, Tom Angert).
- 467. First cut for ET6000 hardware cursor (#48, Dejan Ilic).
- 466. Some xf86 wrappers (#47, Craig Groeschel).
- 465. Convert PEX and XIE to be loadable with the new style loader
- (Dirk Hohndel).
- 464. Clean up configuration files to distinguish old and new style
- loading of extensions (Dirk Hohndel).
- 463. Add DPMS support (off mode only) to the P9000 server
- (#9, Karl Anders Oygard).
- 462. Add PCI probing to the P9000 server (#9, Karl Anders Oygard).
- 461. Resync PC98 Imakefiles.
- 460. Enable the loadable server for LynxOS AT (#46, Thomas Mueller).
- 459. Better fix for XF86Setup compile problems (David Dawes).
-
-XFree86 3.2Af (17 February 1997)
- 458. Fix XF86Setup/Imakefile (#45, Harald Nordgard Hansen).
- 457. Fix xdm/Imakefile for ISC (Michael Rohleder).
- 456. Fix problem with S3V and W32 modules (Dirk Hohndel).
- 455. Move module rules from xf86.rules to Imake.rules, and when building
- a module, install a link to it in xc/exports/lib/modules/ (David Dawes).
- 454. Start Elf loader for Linux/Alpha; doesn't work, yet (#44, Alan Hourihane).
- 453. Hide cursor in S3/SVGA when DGA is active (#43, Mark Vojkovich).
- 452. a.out loader for module loading (#42, Matthieu Herrb).
- 451. Extend OS support layer to cover some libc functions and update all
- drivers to use the internal functions (Dirk Hohndel).
-
-XFree86 3.2Ae (16 February 1997)
- 450. Add -showunresolved flag to server.
- 449. Add sourceAddress option to xdm (#41, Christos Zoulas).
- 448. Fix cfb8line (#40, Jeff Anton).
- 447. Turn pixmap cache in SVGA/S3 server back on and switch over to XAA for
- lines and segments (#39, Mark Vojkovich).
- 446. Fix COFF header file (#38, Stuart Anderson).
- 445. Better XKB russian keyboard support (#36, Andrey A. Chernov).
- 444. Fix an X11R6.3 problem with SCO 5 build (#35, Alan Hourihane).
- 443. Fixes for Trio64V2 (#35, Tom Angert, Harald Koenig, Xavier Ducoin).
- 442. avoid nested asm calls which cause compile errors on PANIX(SVR4) (#31,
- Takaaki Nomura).
- 441. Resync LinkKit (#26, Takaaki Nomura).
- 440. Fix some build problems when not using the new loader code
- (on FreeBSD) (David Dawes).
- 439. Stop S3 and S3V server from overwriting CR11 (#30, Harald Koenig).
- 438. Fix banking code in S3/SVGA driver (#29, Thomas Mueller).
- 437. Fix DPMS code for C&T (#28, David Bateman).
- 436. Enable left edge clipping for HiQV chips (#28, David Bateman).
- 435. Stop C&T probe from printing out messages for non C&T chips (#28,
- David Bateman).
-
-XFree86 3.2Ad (14 February 1997)
- 434. Merge Metro Link loader code and make all SVGA drivers and S3, S3V
- server loadable (Metro Link, Dirk Hohndel).
- 433. Avoid installing CVS admin files when doing 'make install' for rstart
- (#25).
- 432. Resync xfree98/SuperProbe/Imakefile.
- 431. Fix for 'xset r rate' and XF86MiscSetKbdSettings() for some OSs (#24).
-
-XFree86 3.2Ac (12 February 1997)
- 430. Fix problem with system #define Control on LynxOS (Thomas Mueller).
- 429. FreeBSD 2.2 doesn't need libz (Takaaki Nomura).
- 428. Another attempt at left edge clipping for HiQV chips (still disabled
- by default) (David Bateman).
- 427. DPMS in C&T is now enabled even when no monitor is detect (David Bateman).
- 426. Additional fixes for 65530/35 linear addressing (untested) (Egbert Eich).
- 425. Fix for the 16/24 bpp corruption in RIGHT2LEFT blits in the C&T driver
- (Egbert Eich).
- 424. Fix LinkKit and XF98_TGUI server (Takaaki Nomura).
- 423. Reenable xsetpointer, xsetmode, xsetxkbmap in programs/Imakefile.
- 422. Encapsulate arguments in C&T header files (Nozomi Ytow).
- 421. Documentation updates for ET4000, mostly about 16/24/32bpp (Koen Gadeyne).
- 420. Fix VGA2 and VGA16 that were broken in 394/395 and reenable them
- (Koen Gadeyne).
- 419. Improved resolution switching and 24bpp handling in S3V (Kevin Brosius).
- 418. Matrox detection in SuperProbe (Alan Hourihane).
- 417. Fix bug in the Type1 font code (H.J. Lu).
- 416. Autoprobe Viper PCI and DPMI support for P9000 (Karl Anders Oygard).
- 415. Use fill rect solid for horizontal lines on S3 (Mark Vojkovich).
- 414. Add 8bit dac support to MGA (Mark Vojkovich).
- 413. Add make -j support for gnu make (H.J. Lu and Craig Groeschel).
-
-XFree86 3.2Ab (11 February 1997)
- 412. Some fixes for Linux/m68k (Geert Uytterhoeven).
- 411. Add XAA S3 driver to the SVGA server (Mark Vojkovich).
- 410. Add a flag argument to the ValidMode functions (Dirk Hohndel).
- 409. Implemented (but disabled) left edge clipping for color expansion for
- HiQV chips (David Bateman).
- 408. 8x8 mono pattern fills for HiQV chips (David Bateman).
- 407. DPMS support for C&T driver (David Bateman).
- 406. Scanpci for Alpha (Robin Cutshaw).
- 405. Fix clock clock limits for trident driver (Alan Hourihane).
- 404. 9420/9430 acceleration - not tested, only partial, too (Alan Hourihane).
- 403. DPMS support for the Trident driver (Alan Hourihane).
- 402. 24/32bpp support for Trident chipsets (Alan Hourihane).
- 401. Trident support for the Alpha platform (Alan Hourihane).
- 400. Add DPMS to et4000 driver of the SVGA server (Harald Nordgard Hansen).
- 399. Fixes and addition to the acceleration for W32 and ET6000 (Koen Gadeyne).
- 398. Chrontel RAMDAC support for W32 in SVGA server (Kurt Olsen).
- 397. Hardware Linedraw support for ET6000 and ET4000W32p (Koen Gadeyne).
- 396. Add memory bandwidth as a concept to the W32 RAMDAC code (Koen Gadeyne).
- 395. Move W32/ET6k clock setting functions into tseng_clock.c. This together
- with change 394 breaks the W32 server and the et4000 driver in the
- VGA2 and VGA16 server (all those are disabled by default for now)
- (Koen Gadeyne).
- 394. Move RAMDAC support from W32 server in SVGA server and added
- accelerated 16/24/32 bpp support for ET4000/W32p (Koen Gadeyne).
-
-XFree86 3.2Aa (10 February 1997)
- 393. Much additional acceleration for the HiQV chips (David Bateman).
- 392. Print the PCI retry setting in MGA server (Radoslaw Kapitan).
- 391. OpenBSD fixes (Matthieu Herrb).
- 390. Small fix for doc naming.
- 389. Fix 24bpp clock limit for ViRGE (Harald Koenig).
- 388. Fix 16bpp 6554x 8x8 pattern fill problem (David Bateman).
- 387. Fix core dump in C&T driver (Egbert Eich).
-
-XFree86 3.2A (28 January 1997)
- 386. Updates to the OS/2 pipe xtrans code (Sebastien Marineau).
- 385. Update the max clock for the TGUI ProVidia 968x (Alan Hourihane).
- 384. Disable memory interleaving before restoring the text font info
- for the MGA driver. This fixes font corruption that shows up
- in Alpha platforms (Jay Estabrook).
- 383. Fix some document formatting problems.
- 382. Enable MMIO by default for TGUI chips when acceleration is enabled.
- It can be disabled with the "no_mmio" option.
- 381. Fix problems with the Trident driver in 16-colour mode (Alan Hourihane).
- 380. Back out change 370 because it is obsoleted by change 373.
- 379. Fix 369 was missing, and is now included.
- 378. OS/2 updates (including documentation) (Holger Veit).
- 377. Add bitblt acceleration for 16 and 32bpp for the I128 server
- (Robin Cutshaw).
- 376. Tseng doc update (Koen Gadeyne).
-
-XFree86 3.2y (26 January 1997)
- 375. I128 accel fix (Robin Cutshaw).
- 374. Update Japanese version of documentation to 3.2 (Kazuyuki Okamoto).
- 373. Fix 8x8 pattern acceleration for ET6000 (Koen Gadeyne).
- 372. Fix an optimisation/volatile problem with the I128 accel code
- (Robin Cutshaw).
- 371. Fix the clearing of video memory in the SVGA server when the linear
- base address has been offset (Jay Estabrook).
- 370. Disable 8x8 pattern acceleration for ET6000 (Harald Nordgard Hansen).
- 369. Fix stippled/tiled lines (segments) (Harm Hanemaayer).
- 368. Update the LinkKit for recent I128 server changes (Takaaki Nomura).
- 367. Fix display of 8bit characters in xterm (when in VT100 mode)
- (Thomas E. Dickey).
- 366. m68k server updates (Geert Uytterhoeven).
- 365. Matrox doc updates (Andrew Vanderstock).
- 364. Update Mach64 docs (Kevin Martin).
- 363. Fix a ELSA Winner 2000PRO/X-8 initialisation problem that shows up
- after running a certain other X server (Harald Koenig).
- 362. Fix a PC98 TGUI problem when using XAA colour expansion (Kazunori Ueno).
-
-XFree86 3.2x (23 January 1997)
- 361. Remove some XAA debugging messages (David Bateman).
- 360. Preliminary I128 bitblt acceleration using XAA (Robin Cutshaw).
- 359. NetBSD doc updates (Matthieu Herrb).
- 358. Fix a problem with specifying the chipset as "et6000" with the W32
- server (Koen Gadeyne).
- 357. Fix for XAA bitmap problem which showed up with the C&T driver, and
- With this fixed, change 339 has been backed out (David Bateman).
- 356. Update clock limits for the PC98 TGUI server (Akio Morita).
- 355. PC98 documentation update (Akio Morita).
- 354. Tseng doc updates (Koen Gadeyne).
- 353. Add NO_PLANEMASK to the Tseng XAA colorexpansion flags (Koen Gadeyne).
- 352. LynxOS doc updates (Thomas Mueller).
- 351. Fix some unaligned access problems with pixmap data that show up on
- Alpha platforms (Jay Estabrook).
- 350. Fix a problem with passing the depth/weight specified on the
- server command line in some situations (Harald Koenig).
- 349. Add support for the S3 Aurora64V+ programmable clock, which is slightly
- different from the Trio64 (Harald Koenig).
- 348. Blank the screen before turning off the sync signals for the WD90C24
- DPMS support (Brad Bosch).
- 347. Change 341 was missing, and is now included.
- 346. Don't accelerate XAA functions which use source bitmap data when
- the rop is GXclear, GXnoop, and GXset (as well as GXinvert)
- (Harm Hanemaayer).
- 345. S3V doc updates (Kevin Brosius).
- 344. S3 doc updates (Harald Koenig).
- 343. Remove some experimental code in XF86Setup that was causing it
- to fail when starting the first server (Joe Moss).
-
-XFree86 3.2w (22 January 1997)
- 342. Update the xset man page for the DPMS additions.
- 341. Updates to TGUI acceleration, to hopefully fix some problems that
- show up with xtest (Alan Hourihane).
- 340. Add recognition of some other TGUI Cyber chipset codes (Alan Hourihane).
- 339. Enable 8x8 mono pattern fills for C&T 65545, and limit colour expansion
- to GXCOPY_ONLY to avoid some crashes when running things like
- xengine and xdvi (David Bateman).
- 338. Fix various Chips & Tech display problems for 6554x, 65550 and
- 64300 chips (Egbert Eich).
- 337. Fix some XAA-related xtest errors (Harm Hanemaayer).
- 336. Enable the "no_accel" flag for the ET6000 (Koen Gadeyne).
- 335. When the "et6000" chipset is specified, use the port-probed value
- for the membase rather than getting it from the PCI info (Koen Gadeyne).
- 334. Tseng documentation updates (Koen Gadeyne).
- 333. Cirrus documentation updates (Harm Hanemaayer).
- 332. Add README.SiS (Xavier Ducoin).
- 331. Temporary workaround for Mode_switch problems when using XKB and
- Latin1 charset (Matthieu Herrb).
-
-XFree86 3.2v (20 January 1997)
- 330. Added rules to use FreeBSD's sgmlfmt tool to format Linuxdoc/sgml
- docs -- but this needs more work.
- 329. Blank the screen before setting a DPMS mode (Leonard N. Zubkoff).
- 328. Fix sync disabling for DPMS for the S3 (and S3V) server (Robert Wilhelm).
- 327. Change the .name parameter of the S3V server to "S3V" (Kevin Brosius).
- 326. Improve S3V 24bpp mode switching (still has some problems)
- (Kevin Brosius).
- 325. Disable 32bpp for the S3V server (not supported) (Kevin Brosius).
- 324. Fix S3V aspect ratio problem at 24bpp (Kevin Brosius).
- 323. Fix rotation direction of 8x8 mono patterns in XAA (David Bateman).
- 322. XAA updates (see xaa/NOTES for details) (Harm Hanemaayer).
- 321. Another fix for 5446 clocks higher than 85 MHz (Harm Hanemaayer).
- 320. When a clocks line is specified in the XF86Config file for the
- cirrus driver, ignore it rather that insisting on its removal
- (Harm Hanemaayer).
- 319. Remove artificial limit for LCD dot clock for Cirrus 754x chips
- (Harm Hanemaayer).
- 318. Fix a problem with default cirrus MMIO operation (Harm Hanemaayer)
- 317. Improved acceleration support at 24bpp for the Ark driver
- (Harm Hanemaayer).
- 316. Ark documentation updates (Harm Hanemaayer).
- 315. Enable "slow_dram" in the tseng driver for cards below W32i
- (Koen Gadeyne).
- 314. Fix a tseng driver typo (missing braces) which was causing linear
- mode to incorrectly disable acceleration for the ET6000 (Dejan Ilic)
- 313. Fix a tseng driver bug which was causing a system hang because
- "fast_dram" wasn't completely disabled (Dejan Ilic).
- 312. Fix a tseng driver bug which causes a server crash when the chipset
- "et6000" is specified for the SVGA server (Koen Gadeyne).
- 311. Some more W32i accel code, but disabled because it doesn't yet
- work (Koen Gadeyne).
- 310. Fix for ET6000 24bpp MULBPP optimisation (Harald Nordgard Hansen).
- 309. Tseng documentation updates (Koen Gadeyne).
- 308. Cirrus documentation updates (Corin Anderson).
- 307. Updates for TGUI96xx hw cursor (8bpp, 16bpp), and PC98 TGUI card
- list (Akio Morita).
- 306. Fix build TGA compile problem and xdm build problem on Linux/Alpha
- (Robin Cutshaw).
-
-XFree86 3.2u (19 January 1997)
- 305. Only show the "extension not loaded" messages for the first
- server generation.
- 304. Don't allow DPMS to be switched if the Xserver's VT isn't active
- (Leonard N. Zubkoff).
- 303. Implement DPMS "off" support for the WD90C24, for LCD, CRT or both
- (Brad Bosch).
- 302. Add a missing DPMSExtension #ifdef in os/WaitFor.c (Corin Anderson).
- 301. Fix an XAA bug with mono patterns, SCREEN_ORIGIN, and PROGRAMMED_ORIGIN
- (Corin Anderson).
- 300. Implement monochrome pattern fill for Cirrus Laguna chips
- (Corin Anderson).
- 299. Disable "fast_dram" for the ET6000 because it can cause serious
- problems (Koen Gadeyne).
- 298. Disable "power saving" in the Tseng driver because the current
- way of doing it causes memory corruption (Koen Gadeyne).
- 297. Disable linear mode and acceleration for Tseng chips that have
- not been tested or which are not supported (Koen Gadeyne).
- 296. Add some code to treat the ET6000 slightly differently when the
- chipset is specified in the XF86Config file, to help the case
- when another (disabled) PCI video card is detected (Koen Gadeyne).
- 295. Use triple-buffering for colour expansion in the tseng driver
- (Koen Gadeyne).
- 294. Make some variables in the tseng driver static (Koen Gadeyne).
- 293. Remove some asm stuff in the tseng driver, and add a C optimised
- MULBPP calculation (Koen Gadeyne).
- 292. Disable XAA framebuffer concurrency in the tseng driver, which
- hides most of the text corruption problems (Koen Gadeyne).
- 291. Man page (DPMS) and documentation (MGA) updates (Leonard N. Zubkoff).
- 290. Fix invalid modelines in XF98Conf.cpp (Takaaki Nomura).
- 289. Add checking of mode size against video memory requirements to the
- Mach32 and Mach64 servers.
- 288. Fix GXnor and GXnand ROP definitions for the TGUI driver.
- 287. Update for Linux a.out libX11's jump_ignore (Harald Koenig).
- 286. Fix (?) TGA server link problem.
-
-XFree86 3.2t (18 January 1997)
- 285. Update W32 docs (Dirk Hohndel).
- 284. Recognise "noaccel" and "slow_dram" options in the ET4000 driver
- (Dirk Hohndel).
- 283. Fix problem with not truncating pixel values in the MGA driver
- (Dirk Hohndel).
-
-XFree86 3.2s (18 January 1997)
- 282. Fix a problem with xdm's sessreg and utmp on Linux (Leonard N. Zubkoff).
- 281. Fix a plane-enable bug for Cirrus 754x (Corin Anderson).
- 280. Don't use teblt code for depths other than 8 for Cirrus 754x
- chips (Corin Anderson).
- 279. Implement programmable pattern offset using XAA, add support for
- plane masks and fix sum bugs for Cirrus Laguna chips (Corin Anderson).
- 278. Don't check the PCI command FIFO for Cirrus Laguna chips
- (Corin Anderson).
- 277. Add XAA support to the SiS driver. The old code can be reverted
- to at runtime with the "noaccel" option (Xavier Ducoin).
- 276. Add recognition of XAA options as valid options for the SVGA
- server (Alan Hourihane).
- 275. Add "please report" messages when S3 Trio64V2, Trio64UV+ or
- Aurora64V+ chips are detected (Harald Koenig).
- 274. Add undocumented options to XF86Config to allow a numerical ChipID
- and ChipRev to be specified (used by the S3 and S3V servers)
- (Harald Koenig).
- 273. Attempt to fix false detection of RGB524 ramdac as RGB528
- (Harald Koenig).
- 272. Make sure x coordinate doesn't overflow into the y coordinate
- for some MGA operations (Xavier Ducoin and Radoslaw Kapitan).
- 271. Don't write high order CRTC vertical bits for Trident chips earlier
- than TGUI9440AGi (Alan Hourihane).
- 270. Fix an error in koi8-r charset switching code (Andrey Chernov).
- 269. Disable acceleration for TGUI Cyber chips (Alan Hourihane).
- 268. Fix register access in Cirrus 754x LCD size detection (Harm Hanemaayer).
- 267. Add support for the "no_stretch" option for Cirrus 754x chips
- (Harm Hanemaayer).
- 266. Enable MMIO by default for Cirrus 543x/4x chips, and add a "no_mmio"
- option to allow it to be disabled (Harm Hanemaayer).
- 265. Disable PCI burst mode on the TGUI by default, but allow it to be
- turned on with options (Alan Hourihane).
- 264. Update max clocks for the TGUI 96xx chips (Alan Hourihane).
- 263. Fix centre/stretch TGUI LCD problems (Alan Hourihane).
- 262. Add Option "tgui_mclk_66" to force MCLK to 66 MHz (Alan Hourihane).
- 261. Fix TGUI Cyber detection problems (Alan Hourihane).
- 260. Flush MGA "direct access read cache" in MgaSync(), which fixes
- problems reading directly from the framebuffer after accelerated
- operations (Radoslaw Kapitan).
- 259. XAA updates (see xaa/NOTES for details) (Harm Hanemaayer).
- 258. Updates for LynxOS 2.5.0 (Thomas Mueller).
- 257. Fix xterm text highlighting when the window it partly off-screen
- (Thomas E. Dickey).
- 256. Remove the GetSaver/SetSaver functionality from the client
- side of the XFree86-Misc extension, but leave dummy support in
- the server side for now to avoid breaking old clients
- (Leonard N. Zubkoff).
- 255. Implement hw-specific DPMS support for servers/drivers which already
- had an old implementation, adding support for Standby mode where
- possible, and adding a StandbyTime keyword for the XF86Config
- file (Leonard N. Zubkoff).
- 254. Fix some problems with the original DPMS extension behaviour
- (Leonard N. Zubkoff).
- 253. Possible speedup for S3V polypoint code (Harald Koenig).
- 252. Disable C&T 65550 acceleration features that weren't present
- in 3.2 (David Bateman).
- 251. Fix a C&T 24bpp pattern fill problem (David Bateman).
- 250. Make the XAA C&T code independent of the old acceleration code
- (David Bateman).
- 249. Recognise the Alliance AT24, but treat the same way as a 6442
- (Joe Moss).
- 248. Add detection for newer TGUI chipsets to SuperProbe (Alan Hourihane).
-
-XFree86 3.2r (14 January 1997)
- 247. Use some extra XAA flags in the MGA acceleration (Radoslaw Kapitan).
- 246. XAA updates (see xaa/NOTES for details) (Harm Hanemaayer).
- 245. Fix DAC register for > 85 MHz mode on Cirrus 5446 (Harm Hanemaayer).
- 244. Memory config fix for 2MB Cirrus 7543/8 and fix 754x LCD size detection
- (Harm Hanemaayer).
- 243. Fix a problem in Imake.rules that causes problems when using bash
- (Leonard N. Zubkoff).
- 242. Fix some server prototyping problems (Thomas E. Dickey).
- 241. Detect the Trio64UV+, Trio64V2 and Aurora64V+, and handle them
- as a Trio64V+ (Harald Koenig).
- 240. Add preliminary support for the ELSA Winner 2000PRO/X-8 (S3 968,
- IBM RGB528A, 8MB VRAM 250 MHz) (Harald Koenig).
- 239. Fix retrace waits in the MGA driver (Radoslaw Kapitan).
- 238. Enable CPUToScreen colour expansion for the TGUI driver (Alan Hourihane).
- 237. Add an options "lcd_center" to the TGUI driver for Cyber chips
- (Alan Hourihane).
- 236. Some S3V updates, including combining s3dline.c and s3dseg.c,
- moving planemask/colour conversion into a separate module,
- add FillSolid, improve speed of s3plypt.c, and enable some
- previously disable functions (Berry Dijk).
- 235. Updates for ISC support (Michael Rohleder).
- 234. Disable ExportLists for Solaris versions older than 2.5.
- 233. Fix for C&T 8x8 pattern fills (David Bateman).
- 232. LinkKit fix (SiS driver) (Takaaki Nomura).
- 231. Fix for XAA colour expansion when using FIXED_BASE (Koen Gadeyne).
- 230. ET6000 accel updates and optimisations (Koen Gadeyne).
- 229. Add code to the MGA driver to set MCLK based on the values
- stored in the BIOS and the memory size (Andrew E. Mileski).
-
-XFree86 3.2q (12 January 1997)
- 228. Make makedepend recognise #warning on all OSs (since we have it
- in shm.h).
- 227. Add Digital's DPMS server extension (no device-specific support yet).
- 226. Fix some compile problems on Solaris x86 2.4 with gcc (James Hawtin).
- 225. Add prelim support for LCD stretching with the TGUI Cyber chips
- (Alan Hourihane).
- 224. Add support for some blitter functions to the SiS driver (not XAA
- yet) (Xavier Ducoin).
- 223. Fix HW cursor problems in the SiS driver (Xavier Ducoin).
- 222. Add 15/16/24bpp support to the SiS driver (Xavier Ducoin).
- 221. Fix problems with linear mode in the SiS driver (Xavier Ducoin).
- 220. Programmable clock support for the SiS 205 (Xavier Ducoin).
- 219. TGUI acceleration updates (Alan Hourihane).
- 218. Add XAA support for the Chips & Technologies driver (David Bateman).
- 217. Support for 555 weighting in the MGA driver (Xavier Ducoin).
- 216. TGUI clock fix (Alan Hourihane and Massimiliano Ghilardi).
- 215. VGA server compiler warning fixes (Thomas E. Dickey).
- 214. LinkKit fixes (Takaaki Nomura).
- 213. XAA updates (see xaa/NOTES for details) (Harm Hanemaayer).
- 212. The item 203 fix was missing. It is included now.
- 211. Modify Cirrus 754x LCD size detection (Harm Hanemaayer).
- 210 Add support for pattern offset for the Cirrus 5446 (Harm Hanemaayer).
- 209. Fix non-MMIO operation for the Cirrus 5446 (Harm Hanemaayer).
- 208. Fix font cache problem introduced in 3.2p (Takaaki Nomura).
-
-XFree86 3.2p (8 January 1997)
- 207. XAA support for the Cirrus Laguna chips (Corin Anderson).
- 206. Modify the PF1-PF4 coding in the xterm termcap/terminfo, and add an
- interim xterm-vt220 description to accommodate the old and new styles
- (Thomas E. Dickey).
- 205. Combine the coding for foreground and background colours in xterm
- into a single byte (Thomas E. Dickey).
- 204. Some optimisations and transparent 8x8 pattern tiling for the ET6000
- driver (Koen Gadeyne)
- 203. Parallel make fix for lbxproxy (Robin Cutshaw).
- 202. LinkKit fixes (David Bateman).
- 201. Defining XF86ExpireServer to YES in host.def allows easy enabling
- of server expiry.
- 200. The item 176 fix was missing. It is included now.
- 199. Fix an Xlib problem with non-8859-1 locales (Kaleb Keithley).
- 198. Set default hsync and vsync polarity for the MGA driver in the same
- way as other servers (Leonard N. Zubkoff).
- 197. Fix sync polarity in MGA driver (Radoslaw Kapitan).
- 196. Add DGA support to the MGA driver (Mark Vojkovich).
- 195. Some xterm cleanups (Thomas E. Dickey).
- 194. Implement DECSTR (soft terminal reset) for xterm (Thomas E. Dickey).
- 193. Fix some unaligned accesses in cfb16SegmentSS1RectCopy() on Alpha
- (Harald Koenig).
- 192. 8x8 colour expand patterns for MGA (Radoslaw Kapitan).
- 191. Fix various compiler warnings in the S3 server (Thomas E. Dickey).
- 190. Fix TRANS_ENABLE definition for the TGUI driver (Alan Hourihane).
- 189. Fix a problem with the location of ident lines in the tclIndex file
- (Joe Moss).
-
-XFree86 3.2o (5 January 1997)
- 188. Add MIPS/Arc support to build the S3 server on OpenBSD (Per Fogelstrom).
- 187. Split OpenBSD config support out into a new OpenBSD.cf file
- (Matthieu Herrb).
- 186. Split the retrace wait out into a separate function in the S3
- server (Mark Vojkovich).
- 185. Fix a problem with FIFO setting for Mach64 chips with an
- integrated DAC (Kevin Martin).
- 184. Fix a pixmap corruption problem that shows up on Mach64 [CVG]T chips
- (Kevin Martin).
- 183. Disallow block write mode for [CVG]T Mach64 chips (Kevin Martin).
- 182. Fix a problem for Mach64 CT-D cards where the server writes to the
- wrong I/O address, possibly that of another PCI device (Kevin Martin).
- 181. Fix Rage II support in the Mach64 server (Kevin Martin).
- 180. Add preliminary XAA support for the TGA server (Alan Hourihane).
- 179. Don't compile Xprint/Xrm.c because it is already included in
- attributes.c (Holger Veit).
- 178. Various updates for OS/2 (Holger Veit).
- 177. Fix some typing problems in xf86expblt.c (Alan Hourihane).
- 176. Fix XAA crash for drivers that don't fill in the ServerInfoRec
- (Harm Hanemaayer).
- 175. Add DPMS support for the MGA driver (Leonard N. Zubkoff).
- 174. Add sync-on-green support to the MGA driver (Leonard N. Zubkoff).
- 173. Add support for display modes that require more than 4MB on
- Millennium cards (Leonard N. Zubkoff).
- 172. Enable acceleration support for the Trident 9320LCD chips
- (Alan Hourihane).
- 171. Add parallel make support for the lbxutil Imakefile (Robin Cutshaw).
- 170. Fix a problem with the Xmark script (Andrew E. Mileski).
-
-XFree86 3.2n (3 January 1997)
- 169. Fix some xaa build problems on some platforms.
- 168. Updates to NetBSD.cf, including auto-detection of ELF (Chris Demetriou).
- 167. Add I128 series II detection to scanpci and SuperProbe (Robin Cutshaw).
- 166. Fix a problem in sun.cf (Robin Cutshaw).
-
-XFree86 3.2m (2 January 1997)
- 165. Fix some problems creating Xserver links in XF86Setup (Dirk Hohndel).
- 164. Update to R6.3 public patch 1.
- 165. XAA updates (Harm Hanemaayer).
- 163. Fix problems with out-of-date cirrus_acl.c (Harm Hanemaayer).
- 162. Move all default settings from xf86site.def to xfree86.cf, and leave
- xf86site.def containing only commented out definitions.
- 161. Fix 'make install' problems in xkbcomp.
- 160. Fix some ZLIB problems.
-
-XFree86 3.2l (31 December 1996)
- 159. Tseng acceleration updates (Koen Gadeyne).
- 158. Add config support for using the system's standard version of libz
- when it exists (Chris Demetriou).
- 157. Add rules for ELF shared libraries on BSD (Chris Demetriou).
- 156. Recognise __alpha__ as AlphaArchitecture for NetBSD, and treat
- __alpha__ the same way as __alpha is various part of the code
- (Chris Demetriou).
- 155. Update NetBSD config file (Chris Demetriou).
- 154. Add code to dynamically recognise NetBSD versions in imake, and
- add defines to allow massaging of the information returned by
- uname Chris Demetriou).
- 153. Fix inconsistent usage of malloc/xalloc/Xalloc in the Xprt server.
- 152. Fix segfault at startup of clients linked with libICE on SVR4.0
- 151. Add detection for the 250MHz ramdac used on the PowerDoc Edition
- variant of the Matrox Millennium (Dirk Hohndel).
- 150. Fix some compile/cpp warnings (Marc Aurele La France).
- 149. Add support to makedepend for the '^' and '? :' operators
- (Marc Aurele La France).
- 148. Change GZIP to GZIPCMD in Makefiles because of a conflict with
- an environment variable used by gzip (Marc Aurele La France).
- 147. Fix make depend problem for xdm-shadow (Marc Aurele La France).
- 146. Update Linux a.out support for R6.3 (Harald Koenig).
- 145. Trident doc updates (Alan Hourihane).
- 144. TGUI solidfill updates (Alan Hourihane).
- 143. XC fixes.
-
-XFree86 3.2k (28 December 1996)
- 142. Fix a problem introduced in 3.2i which causes the S3 server to crashed
- for cards with a Ti3026.
- 141. Updates for GNU libc on Linux, and fix some compile warnings
- (H.J. Lu).
- 140. Updated Russian XKB layout (Andrey Chernov).
- 139. Workaround for KOI8-R problem in XmbLookupString(). The change
- is to XLC_XLOCALE/koi8-r (Andrey Chernov).
- 138. Fix some problems with the server build on Alphas (Jay Estabrook).
- 137. Avoid a server hang in the et4000 driver (Koen Gadeyne).
- 136. Add some more acceleration for ET4000 chips (Koen Gadeyne).
- 135. Fix server crash when chipset "et6000" is specified (Koen Gadeyne).
- 134. Cleanup of vgaHW.c (Marc Aurele La France).
- 133. In the vga2 server, use the bank size, not the aperture size, to
- decide between banked and non-banked support (Marc Aurele La France).
- 132. Fix to FIFO depth calculation in the Mach64 server
- (Marc Aurele La France).
- 131. Fix some problems with the width of the pixmap used by the VGA servers
- when the server's VT isn't active (Marc Aurele La France).
- 130. Major ati SVGA driver updates (Marc Aurele La France).
- 129. Fix Xserver/Imakefile problem that sometimes causes problems with
- cfb24 not being built (Marc Aurele La France).
- 128. Fix some compiler warnings (including a problem with the ScreenInfoRec
- initialisation in the I128 server) (Marc Aurele La France).
- 127. Updated PC98 TGUI support (Akio Morita).
- 126. Add MMIO support to the TGUI driver, and remove MCLK limits
- (Alan Hourihane).
- 125. Add pa, Sf, Sb capabilities to the xterm termcap.
- 124. Add Tcl interfaces for the new vidmode functions (Joe Moss).
- 123. Complete the implementation of XF86VidModeAddModeLine() (Joe Moss).
- 122. Some more s3init.c cleanups (Mark Vojkovich).
- 121. XC fixes.
- 120. More R6.3-related updates.
-
-XFree86 3.2j (26 December 1996)
- 119. Integrate X11R6.3 (pre-release) source base.
-
-XFree86 3.2i (20 December 1996)
- 118. Some general cleanups (Stuart Anderson, Dirk Hohndel).
-
-XFree86 3.2h (20 December 1996)
- 117. Fix a "void * used in arithmetic" warning in lnx_video.c.
- 116. Allow the XInput "AlwaysCore" feature to be controlled dynamically
- via an "integer feedback" (Frederic Lepied).
- 115. Fix TGUI clock programming problems (Alan Hourihane).
- 114. Fix clock scaling with ClockChip "cirrus" (Harm Hanemaayer).
- 113. Fix some compile problems on SVR4 (Takaaki Nomura).
-
-XFree86 3.2g (19 December 1996)
- 112. Separate the function prototypes out of xf86_OSlib.h (Stuart Anderson).
- 111. Fix for change 97 (which was causing a server startup problem)
- (Harald Koenig).
- 110. Enable accelerated copy plane for 24bpp in XAA.
- 109. Fix some compile problems related to the recent Cirrus changes.
-
-XFree86 3.2f (18 December 1996)
- 108. Enable the XAA driver for cirrus chips with a BitBLT engine and
- the driver for Laguna family chips (Harm Hanemaayer).
- 107. Modify the support for dot clocks > 85 MHz on the 5436/46
- (Harm Hanemaayer).
- 106. Fix 24bpp support for the CL-GD5430 (Harm Hanemaayer).
- 105. Add optimized support for the CL-GD5446 to the XAA driver
- (Harm Hanemaayer).
- 104. When a PCI cirrus chip is detected, enable linear addressing by default
- (Harm Hanemaayer).
- 103. Better LCD control settings for CL-GD754x for different LCD sizes,
- and improve 754x LCD type detection (Harm Hanemaayer).
- 102. Modify CRT FIFO threshold setting for the CL-GD7548 (Harm Hanemaayer).
- 101. Don't treat the CL-GD7543 as an Alpine-family chip (Harm Hanemaayer).
- 100. XAA updates (see the NOTES file in the xaa directory for details)
- (Harm Hanemaayer).
- 99. Support for sharing the core pointer between multiple XInput devices
- (Frederic Lepied).
- 98. XAA support for the ET6000 (Koen Gadeyne).
- 97. Fix an S3 server crash caused by an off-by-one access when displaying
- images (Harald Koenig).
- 96. Updates to LynxOS support for 2.5.0 (Thomas Mueller).
- 95. Add a "pc104" XKB layout for keyboards with the extra "Windows" keys
- (Joe Moss).
- 94. Fix for problem clearing "chordmiddle" flag from XF86Setup (Joe Moss).
- 93. Ti3026 clock programming updates for the MGA driver (Andrew E. Mileski).
- 92. A general s3init.c cleanup and modularization. This isolates
- ramdac register save/restore functions, and moves them into
- s3ramdacs.c (Mark Vojkovich).
- 91. Fix S3 server lockup due to vsync wait when power-saving mode is
- active (Xavier Ducoin).
- 90. PC98 LinkKit updates (Takaaki Nomura).
-
-XFree86 3.2e (12 December 1996)
- 89. Fix some TGUI clock programming problems (Massimiliano Ghilardi).
- 88. Disable <ctrl><alt><backspace> when in DGA mode (Mark Vojkovich).
- 87. Fix some XAA-related server link problems (Marc Aurele La France).
- 86. Fix some LinkKit problems (David Bateman and Takaaki Nomura).
- 85. Fix some more implicit typing in function declarations (Andreas Schwab).
- 84. Add some more ELSA cards to the Cards file (Harald Koenig).
- 83. Fix the ICS5342 clock limit (Harald Koenig).
- 82. Fix typos in the mga Alpha support.
- 81. Fix a typo in the XThrStub Imakefile (H.J. Lu).
- 80. Resync the PC98 Imakefiles (Takaaki Nomura).
-
-XFree86 3.2d (9 December 1996)
- 79. Updates to SCO Open Server 5 support (Tom Angert and J Kean Johnston).
- 78. Add support for Linux C library version 6 (GLIBC), and fix some
- prototype problems (H.J. Lu).
- 77. Add Alpha support for the mga driver (SVGA server), and generic
- driver (Mono/VGA2 server) (Jay Estabrook).
- 76. Fix s3ReadImageBanked() with a planemask (Harald Koenig).
- 75. Add fast bitblt support for the mga driver (Radoslaw Kapitan).
- 74. Allow probing of the Bt485 when an S3 968 is detected (Mark Vojkovich).
- 73. Fix an integer overflow in the S3V server when drawing long lines
- (Harald Koenig).
- 72. Add detection of the Alliance ProMotion chips to SuperProbe
- (Joe Moss).
- 71. XAA updates (including disabling non-TE text acceleration)
- (Harm Hanemaayer).
- 70. Fix pixmap support in XAA (Harm Hanemaayer and Alan Hourihane).
- 69. Update the device-specific XF86Config parsing support to report
- unknown keyword and options (Egbert Eich).
- 68. Add another check for the fb base address in the S3 server
- (Harald Koenig).
- 67. Fix some typos in the SuperProbe Imakefile (Harald Koenig).
- 66. Update the AXP/IO Jensen support (David Mosberger).
- 65. Add code to the S3 server to recognise the ELSA 1000PRO/X
- (Harald Koenig).
- 64. Fix an initialisation problem for Diamond ViRGE/VX cards, which
- causes a lockup (Harald Koenig).
- 63. Add support for the STREAMS processor to the S3V server (Kevin Brosius).
- 62. Fix a problem in xf86bench.c for OS/2 (Holger Veit).
- 61. Some mga line fixes (Radek Kapitan).
- 60. Chips & Technologies driver updates (includes support for the
- 64200 and 64300 WinGine series of chips, and the 65525 and 65535
- chips) (David Bateman and Egbert Eich).
- 59. Fix some problems with the new S3 probe code (Mark Vojkovich).
- 58. Allow xterm to output 8-bit characters in VT100 mode (Matthieu Herrb
- and Thomas Dickey).
- 57. Add a return value to XF86DGAGetVideo() (Mark Vojkovich).
- 56. Add missing write_mem_barrier definitions (Harald Koenig).
- 55. Fix some compile problems with 3.2c.
-
-XFree86 3.2c (24 November 1996)
- 54. Fix some potential buffer overflows in SuperProbe, and don't
- install it setuid root (Marc Slemko).
- 53. Add support for driver-specific parsing of the XF86Config file's
- Device section (Egbert Eich).
- 52. Fix S3 virtual resolution handling problem introduced in 3.2a
- (Mark Vojkovich).
- 51. Add a '-nolisten' flag to the X server to allow disabling of
- a transport type (Nathaniel D. Daw).
- 50. Update Imake.rules to do better error recovery for missing
- directory or Makefiles (Thomas E. Dickey).
- 49. Add REP (repeat) control for xterm (Thomas E. Dickey).
- 48. XAA updates (Harm Hanemaayer).
- 47. Add required changes for the PC98 servers to build using XAA
- (Takaaki Nomura).
- 46. Fix an unaligned access in cfb (Harald Koenig).
- 45. Add support for Alpha Jensen (EISA) using sparse memory MMIO
- (Martin Ostermann).
- 44. Add working "newmmio" support for AXP (Harald Koenig).
- 43. Add some memory barriers to the ViRGE server for AXP (Harald Koenig).
- 42. Reset the ViRGE (but not ViRGE/VX) GE while reading the BIOS to avoid
- text font corruption (Harald Koenig).
- 41. Change the S3 ViRGE default base address when PCI config registers
- can't be accessed (mainly for AXP) (Harald Koenig).
- 40. S3 ViRGE/VX fix (Harald Koenig).
- 39. Patch for mk68 servers (Geert Uytterhoeven).
- 38. Add detection for the S3 Aurora64V+ and Trio64UV+ (Harald Koenig).
- 37. Replace the truncated files in xterm/tektests with full versions
- (from color_xterm) (Thomas E. Dickey).
- 36. Add some more MGA line code (Andrew Vanderstock).
- 35. Add some MGA macros, especially for access type setting
- (Radoslaw Kapitan).
- 34. Add MGA screen-to-screen color expansion (not used yet)
- (Radoslaw Kapitan).
-
-XFree86 3.2b (20 November 1996)
- 33. Fix some compilation problems with 3.2a.
- 32. Fix DGA fb mapping for SVR4 (Richard Coley).
- 31. Fix Hercules mono driver text bug (H.J. Lu).
-
-XFree86 3.2a (18 November 1996)
- 30. Bump default FreeBSD version to 2.1.6.
- 29. TGUI driver updates for PC98 (Akio Morita).
- 28. Fix trident driver compile problem with VGA2 and VGA16 servers
- (Takaaki Nomura).
- 27. XAA support for the Trident driver (Alan Hourihane).
- 26. Add VT52 emulation to xterm (Thomas E. Dickey).
- 25. Fix a missing resets to groundstate in xterm (Denis Auroux and
- Thomas Dickey).
- 24. Improve overflow problem in XAA internal benchmarking
- (Akio Morita).
- 23. XAA support for the mga driver (Radoslaw Kapitan and the Matrox team).
- 22. XAA support for the Cirrus BitBLT and Laguna chips (but not enabled
- yet) (Harm Hanemaayer).
- 21. XAA support for the ARK driver (Harm Hanemaayer).
- 20. A new acceleration interface (XAA) for the SVGA server (Harm Hanemaayer).
- 19. S3V s3plypt.c changed to use GE, but is slower so still disabled
- (Harald Koenig).
- 18. Change the S3V GE reset to avoid lockups (Harald Koenig).
- 17. Add WaitIdle() at the end of S3V accel routines to avoid screen
- corruption from direct fb access while the GE is still active
- (Harald Koenig).
- 16. Remove unsupported option flags from the S3V server (Harald Koenig).
- 15. Allow large S3 cursors by switching to SW cursor when required
- (Harald Koenig).
- 14. Fix S3 frame buffer probing and memory leak (Harald Koenig).
- 13. Fix S3 ReadImage with a planemask (when ReadImageNoMem can't be used)
- (Harald Koenig).
- 12. S3 line and text fixes (Harald Koenig).
- 11. Fix DGA colourmap problems in the W32 server.
- 10. Fix a problem with realloc usage in xrdb for some older OSs
- (eg, SunOS 4.x) (Wolfgang Rupprecht).
- 9. Fix an xrdb malloc problem (Michael Lipp).
- 8. Fix xload problems on Solaris 2.5 (David Thompson).
- 7. Fix xload problem for most BSD OSs that was introduced in 3.2, and
- fix some problems in the BSDI-specific code (Matthieu Herrb).
- 6. Modify the external ClockProg support to allow for programmable
- clocks (ie, no clocks line) (Egbert Eich).
- 5. Fix W32p rev C and rev D PCI ids (Koen Gadeyne).
- 4. Fix a problem which causes a server crash on PANIX/PC98 when using
- the XFree86-Misc extension (Takaaki Nomura).
- 3. S3 server probe cleanup (Mark Vojkovich).
- 2. Fix XF86Setup compile problem on Solaris (Robin Cutshaw).
- 1. Patches for OS/2 support (Holger Veit).
-
-XFree86 3.2 (26 October 1996)
-1079. Fix a bug in xgc that can cause a SEGV (Takaaki Nomura).
-1078. README and FreeBSD doc updates (Takaaki Nomura).
-1077. RELNOTES updates, and some updates to the preinst and postinst scripts.
-1076. Tell xf86config about the S3V server.
-1075. Fix some typos in XF86Setup.
-1074. Fix a problem with XF86Setup that shows up when there is no
- <Xroot>/bin/X link present.
-1073. Fix a test restoration problem with the ali driver.
-1072. NetBSD and Solaris doc updates (Matthieu Herrb).
-1071. Cirrus doc updates (Harm Hanemaayer).
-1070. Prevent Oak probe from falsely detecting some Avance Logic chips.
-
-XFree86 3.1.2Zd (24 October 1996)
-1069. Fix a problem with the TGUI driver disabling linear mode when the
- OS doesn't support it.
-1068. Fix an image stipple problem in the S3, Mach8, Mach32 and 8514 servers
- (Harald Koenig).
-
-XFree86 3.1.2Zc (24 October 1996)
-1067. Mach64 doc updates (Kevin Martin).
-1066. Xvfb shouldn't depend on cfb24 (Geert Uytterhoeven).
-1065. Update contrib to R6.1.
-1064. C&T doc updates (David Bateman).
-1063. Fix an image stipple problem in the S3V server (Harald Koenig).
-1062. Doc updates (Takaaki Nomura).
-
-XFree86 3.1.2Zb (23 October 1996)
-1061. Fix some NV1 problems, including clock selection problems and
- pixel corruption problems (David McKay).
-1060. Fix some bad random() prototypes for Linux (Harald Koenig).
-1059. Fix NeqnCmd definition in NetBSD.cf (Matthieu Herrb).
-1058. Chips&Tech doc updates (David Bateman).
-1057. Cards db update for Chips&Tech (David Bateman).
-1056. Some updates to the "supported" contrib clients (Harald Koenig).
-1055. VGADriver doc updates (Stuart Lamble).
-1054. LynxOS doc updates (Thomas Mueller).
-1053. Fix a problem in mgaFillBoxSolid() (Radoslaw Kapitan).
-1052. Fix a serious probe bug in the MGA driver which causes a crash on
- non-PCI machines (Egbert Eich).
-1051. Fix a serious probe bug in the NV driver (David Bateman).
-
-XFree86 3.1.2Za (21 October 1996)
-1052. Some documentation updates (Dirk Hohndel).
-1051. A few cleanups that have no affect on function (Harald Koenig).
-1050. Fix a problem in XF86Setup (Harald Koenig).
-
-XFree86 3.1.2Z (20 October 1996)
-1049. Update XF86_SVGA man page (Harm Hanemaayer).
-1048. Update Linux README (Dirk Hohndel).
-1047. Fix some mono/4bpp problems introduced by recent ET6000 changes
- (Koen Gadeyne).
-1046. Updates to the Cards database (Harald Koenig).
-1045. Fix xdpyinfo core dump when the XInput extension is not available
- (Frederic Lepied).
-1044. Fix SuperProbe mis-detection of S3 ViRGE (Harald Koenig).
-1043. S3V README (Harald Koenig).
-1042. Resync some PC98 Imakefiles (Takaaki Nomura).
-1041. Update XF86Setup card list features, and add 1152x864 video modes
- (Harald Koenig).
-
-XFree86 3.1.2Gq (19 October 1996)
-1040. Some updates to use the native setlocale() in the GNU libc used
- by Linux/Alpha/ELF (Ulrich Drepper, Harald Koenig).
-1039. MGA README (Andrew Vanderstock and Dirk Hohndel).
-1038. Fix REQUIREDLIBS problem with dynamic xie.so (Alan Hourihane).
-1037. Update man page versions (Takaaki Nomura).
-1036. Add xf86VTSema checks to the MGA server, move blitter init to
- HWRestore, and wait for drawing engine before enter/leave VT
- (Radoslaw Kapitan).
-1035. TGA and Trident doc updates (Alan Hourihane).
-1034. Remove an unused TGA server file (Alan Hourihane).
-1033. Update to the Chips&Tech screen corruption fix (Egbert Eich).
-1032. Fix a typo in the Chips&Tech driver which prevents the "hw_clocks"
- option from working (David Bateman).
-1031. Move the SVGA 'mx' driver to after the 'chips' driver, because its
- probe causes problems for the chips driver. Also, fix a problem
- in the 'mx' probe where it writes to a register without first saving
- its contents.
-
-XFree86 3.1.2Gp (18 October 1996)
-1030. Fix the cursor colour not being correctly set in 15/16/32bpp modes
- on the CT, ET, VT and GT chips (Kevin Martin).
-1029. Change Mach64 block_write behaviour. Assume that block write mode is
- initialised by the BIOS, but still allow it to be turned on or off
- explicitly in the XF86Config (Kevin Martin).
-1028. Set the extended display FIFO LWM bit on the Mach64 CT-D (Kevin Martin).
-1027. Fix the retrace wait in mach64AdjustFrame() (Kevin Martin).
-1026. Delete Mach64 doublescan modes for chipsets that don't support any
- accelerated doublescan modes (Kevin Martin).
-1025. Set Mach64 display FIFO setting to the values supplied by ATI for
- various chipset/memory type/memory size/bpp combinations (Kevin Martin).
-1024. Fix some MGA accel problems (Radoslaw Kapitan).
-1023. FreeBSD and NetBSD doc updates (Takaaki Nomura).
-1022. Fix some Mach32 16bit font display problems (Bryan Feir).
-1021. Add support for the ICS1562 clockchip used by the DEC TGA (Harald
- Koenig).
-1020. Make WaitQueue wait for three more free slots than requested to
- allow a safety margin in case of coding bugs (the ViRGE will lock
- up the PCI bus when the FIFO is full) (Harald Koenig).
-1019. S3V fixes for some XTEST errors, and remove debug and unused code
- (Harald Koenig).
-1018. Preliminary support for the Trident Cyber 938x chipset (Alan Hourihane).
-1017. Update the max clock for the Cirrus 754x with LCD enabled, and
- deal more gracefully when a clock line is encountered (Harm Hanemaayer).
-1016. Add/implement XF86DGAGetViewPortSize() and add an extra argument
- to XF86DGAViewPortChanged() which indicates the number of pages
- being used when multi-buffering (Harm Hanemaayer).
-1015. Move the setting of the XF86DGADirectColormap flag into
- XF86DGAInstallColormap() so that apps which use this function but
- don't explicitly set the flag will work correctly.
-
-XFree86 3.1.2Go (17 October 1996)
-1014. Add xterm-r6 entries to the xterm termcap and terminfo files. These
- are compatible with the standard X11R6 version of xterm.
-1013. Chips&Tech driver updates, including: add an option to deal with
- LCD panel size problems, add an option to use an 18bit bus for some
- TFT laptops, allow imageblt to be disabled, support sync-on-green
- for the 65550, improve some screen scrambling problems, add DGA
- support, fix 24bpp acceleration problems, fix HW cursor colouring
- problems, update docs (Egbert Eich, David Bateman, Nozomi Ytow,
- Marc de Courville, Jens Mauer, Adam Sulmicki).
-1012. BlankDelay settings for ViRGE (non-VX) (Harald Koenig).
-1011. More S3V ROPs for planemask simulation for BLTs (not used yet)
- (Harald Koenig).
-1010. S3V fix for some image ops (Harald Koenig).
-1009. LynxOS microSPARC updates (Thomas Mueller).
-1008. OS/2 updates (Holger Veit and Sebastien Marineau).
-1007. TGA server updates, including disallow interlace modes, parse /proc/pci
- output to find the memory base address (Alan Hourihane).
-1006. Add a DGA flag (XF86DGADirectColormap) to control when the colourmap
- is in the exclusive control of XF86DGAInstallColormap(). This allows
- older DGA clients which don't use XF86DGAInstallColormap() to work
- as before.
-1005. Fix mmap in libXxf86dga for FreeBSD 1.1.5.
-1004. Fix a typo in xf86writepci() which causes it to return without doing
- anything (URATA Shuichiro).
-
-XFree86 3.1.2Gn (16 October 1996)
-1003. Fix a problem with the ospex Imakefile regarding the building of
- a non-shared library.
-1002. Increase the listen(2) backlog value in Xtranssock.c.
-1001. VidMode extensions updates (Joe Moss).
-1000. Add QueryDirectVideo and ViewPortChanged functions to the DGA
- extension (Harm Hanemaayer and Mark Vojkovich).
- 999. Fix a problem where parts of lines incorrectly appear black with the
- S3V server (Berry Dijk).
- 998. Fix some S3V problems that show up when running xtest (Harald Koenig).
- 997. Change MGAAdjustPitch to choose a pitch for which acceleration is
- possible (Ansgar Hockmann).
- 996. Fix some server compile warnings (Thomas E. Dickey).
- 995. Set HasPoll to YES for NetBSD 1.2 and OpenBSD. This solves the
- fundamental problem select has with the width of a fd_set
- (Matthieu Herrb).
- 994. Use modified ROPs and colour bit patterns to simulate the planemask
- where possible in the S3V line code (Harald Koenig).
- 993. Report the Wacom function/macro button as key events (Frederic Lepied).
- 992. Initial DSP programming of Mach64 VT-B and GT-B implemented, but not
- enabled yet (Kevin Martin).
- 991. Mach64 CT, ET, VT, GT clock programming changed to be more accurate.
- Previously it used integer arithmetic, now it uses floats (Kevin Martin).
- 990. Mach64 VT-B and GT-B extra clock divisors (3,6,12) implemented
- (Kevin Martin).
- 989. Fix Mach64 VT-B and GT-B memory detection (Kevin Martin).
- 988. Updates for LinkKit and SVR4 README files (Takaaki Nomura).
- 987. Add a MGAWAITFIFOSLOTS macro for use with accel functions
- (Andrew Vanderstock).
- 986. Fix for MGA line colour that works at all depths (Andrew Vanderstock).
- 985. Add a wait for retrace to the end of most Adjust functions when DGA
- mode is active (Mark Vojkovich and Harm Hanemaayer).
- 984. Fix a typo in XF86Setup, and change the vsync parameters of some
- of the default monitor types (Harm Hanemaayer).
- 983. ET6000 support for linear memory and 16/24/32bpp in the SVGA server
- (Koen Gadeyne).
- 982. OpenBSD no longer defines __NetBSD__ in their cpp (Matthieu Herrb).
- 981. OpenBSD/NetBSD doc updates (Matthieu Herrb).
-
-XFree86 3.1.2Gm (13 October 1996)
-980. Set foreground colour for MGA line code (Ansgar Hockmann).
-979. Add weight 555 support for the Cirrus 5464 (Corin Anderson).
-978. Fix Cirrus HAVE546X macro to detect the 5464 (Corin Anderson).
-977. Updates to Cirrus docs and Cards database (Corin Anderson).
-976. Add detection of the ARK2000MI to SuperProbe (Harm Hanemaayer).
-975. Cirrus updates, including fix MMIO for the Cirrus 5446, update some
- DAC register values, disallow clocks line and change max clock for
- LCD displays (Harm Hanemaayer).
-974. Add some sanity checks for potential VT problems in the cirrus and
- ARK drivers (Harm Hanemaayer).
-973. Fix for LynxOS microSPARC (Thomas Mueller).
-972. Update the LynxOS docs for 3.2 (Thomas Mueller).
-971. Change the various malloc/free calls in the XKB code to use the
- XkbMalloc/XkbFree equivalents (Joe Moss).
-970. Update the Wacom driver to support the new stylus with two side
- buttons. The second side button is reported as button 4
- (Frederic Lepied).
-969. Update the LinkKit to build the SVGA and I128 servers, and update the
- LinkKit README (Takaaki Nomura).
-968. DGA support for the W32 server (Koen Gadeyne).
-967. Resynch some PC98 Imakefiles (Takaaki Nomura).
-966. LinkKit updates for a PC98-only LinkKit (Takaaki Nomura).
-965. Add some missing bits to the MGA solid box fill patch (Radoslaw Kapitan).
-964. Fix a typo in SuperProbe that would result in incorrect chipset
- reporting for some Cirrus chips (Harm Hanemaayer).
-
-XFree86 3.1.2Gl (10 October 1996)
-963. PC98 doc updates (Michio "Karl" Jinbo).
-962. Add some solid box fills to the MGA driver (Radoslaw Kapitan).
-961. Cirrus and Ark doc updates (Harm Hanemaayer).
-960. Apply 959 to the Mach32 server.
-959. Ignore clipping boxes completely to the left of right of each glyph
- for the S3, Mach8 and 8514 servers (Hans Nasten).
-958. LinkKit fixes for PC98 (Takaaki Nomura).
-957. Fix Imakefile problem related to dynamic loading for PC98
- (Michio "Karl" Jinbo).
-956. ViRGE/VX update (Harald Koenig).
-955. Add power_saver support to the TGA server (Alan Hourihane).
-954. Some more line/seg updates for S3V (Harald Koenig).
-953. Fix some problems with the previous S3V planemask patch (Harald Koenig).
-952. Add code to read the MGA card information from the BIOS. This
- allows the RAMDAC type/speed to be determined (Andrew E. Mileski).
-951. Disable 24/32bpp for S3V server because it doesn't work yet.
-950. Driver for NVidia NV1 / SGS-Thomson STG2000 (David McKay).
-
-XFree86 3.1.2Gk (8 October 1996)
-949. Use cfb code in the S3V server when the planemask is non-trivial
- (Harald Koenig).
-948. More line/seg fixes for the S3V server (Harald Koenig).
-947. Fix XORing text (and other ROPs) for the S3V server (Harald Koenig).
-946. Force 1-cycle EDO mode for the ViRGE/VX (Harald Koenig).
-945. Disable the font and pixmap caches in the S3V server (not implemented).
-944. Apply 943 to the Mach32 and S3V servers.
-943. Ignore clipping boxes completely above or below the displayed text
- for the S3, Mach8 and 8514 servers. This improves performance
- when a window is partly covered by a shaped window (Hans Nasten).
-942. Resync PC98 Imakefiles, and update documentation (Michio "Karl" Jinbo).
-941. Some LinkKit changes to prevent conflicts between the xf86 and xf98
- linkkits when doing a combined build/install.
-940. Fix for keycodes/xfree98 (Takefumi Tsukada).
-939. LinkKit support for PC98 servers (Takaaki Nomura).
-938. Fix MGA 24bpp problems (Ansgar Hockmann).
-937. Fix a potential memory interleave problem and spurious warning messages
- in the Cirrus driver (Corin Anderson).
-
-XFree86 3.1.2Gj (6 October 1996)
-936. Build PEX, XIE as dynamically loaded modules by default where it is
- supported.
-935. Fix some S3gendac interface changes (Koen Gadeyne).
-934. Fix a lex warning for reconfig (Koen Gadeyne).
-933. Fix a ROP problem in the W32 solid fill code (Koen Gadeyne).
-932. Dynamic PEX, XIE extension support for Linux/ELF.
-931. 24bpp packed support for the MGA driver (Ansgar Hockmann).
-930. Fix the way the list of clocks is derived for the Cirrus driver
- (Harm Hanemaayer).
-929. Fix problems with 16bpp for a 1MB Cirrus 5434 (Harm Hanemaayer).
-928. Fix for xdm indirect query for ISC (Michael Rohleder).
-927. Remove virtual size check in the mach32ValidMode (Michael Rohleder).
-926. Fix a typo in lib/Xbsd (Michael Rohleder).
-925. Fix "nolinear" mode in the MGA driver (Radoslaw Kapitan).
-924. Add memory detection to the MGA driver (Radoslaw Kapitan).
-923. Update NetBSD/OpenBSD docs (Matthieu Herrb).
-922. Add OpenBSD/mips config support (Per Fogelstrom, Matthieu Herrb).
-921. Update OpenBSD version to 2.0 (Matthieu Herrb).
-920. Updates to the S3 ViRGE line code (Harald Koenig).
-919. Updated ViRGE/VX support (Harald Koenig).
-918. TGA server shouldn't report DGA support (Alan Hourihane).
-917. Alpha-related config updates (Harald Koenig).
-916. Updates to Cirrus probing in SuperProbe (Harm Hanemaayer).
-915. Fix a Cirrus bitmap overrun problem (Harm Hanemaayer).
-914. Fix Cirrus FIFO settings for 5436/5446 (Harm Hanemaayer).
-913. Fix Cirrus HW cursor colours at 32bpp (Harm Hanemaayer).
-912. Fix 24bpp support for Cirrus 54xx (Harm Hanemaayer).
-
-XFree86 3.1.2Gi (3 October 1996)
-911. SCO updates. SCO5 is now the only supported version (there are
- still problems to be resolved though) (J. Kean Johnston).
-910. LinkKit updates and related cleanups (Marc Aurele La France).
-909. Updated code to program the Ti3026 clock in the MGA server
- (Andrew E. Mileski).
-908. Preliminary S3 ViRGE/VX support (Harald Koenig).
-907. Fix S3 PCI read burst disable problem (Harald Koenig)
-906. Fix SuperProbe memory reporting for the S3 ViRGE, ViRGE/VX, and
- separately report off-screen memory (Harald Koenig).
-905. Fix MGA interleave and 32bpp problems (Radoslaw Kapitan).
-904. Fix a RD_MASK problem that shows with 928 cards (at least on some
- PC98 servers) (Michio "Karl" Jinbo, Harald Koenig).
-903. Allow xterm to be statically linked with libtermcap on Linux
- (Dirk Hohndel).
-902. Fix screen save/restore on VT switch for the TGA server (Alan Hourihane).
-901. Chips&Tech updates, including a fix for line acceleration
- problems (David Bateman).
-900. VidMode extension changes/enhancements (not complete yet) (Joe Moss).
-899. S3 ViRGE solid line code (Harald Koenig).
-898. S3 ViRGE updates, including using cfb calls for non-implemented
- functions (Harald Koenig).
-897. Fix for a line drawing problem in the Cirrus driver (Harm Hanemaayer).
-896. Ark driver updates, including fixes for FIFO settings, HW cursor at
- 16/32bpp, virtual panning at 24bpp, and enable BitBlt acceleration at
- 32bpp (Harm Hanemaayer).
-895. LynxOS microSPARC updates (Thomas Mueller).
-894. Add support for Japanese 106 key keyboards on PANIX. This is enabled
- with the 'panix106' keyword in the Keyboard section (Takefumi Tsukada).
-893. README.SVR4 update (Takaaki Nomura).
-892. ValidMode function for Mach32 (Bryan Feir).
-891. Fix a Mach32 problem with VT switch screen save/restore when the
- virtual width is less than 1024 (Bryan Feir).
-890. Updated NetBSD aperture driver (Matthieu Herrb).
-889. Allow the PEX and XIE server extensions to be built as dynamic modules
- (FreeBSD and NetBSD so far). (Matthieu Herrb).
-
-XFree86 3.1.2Gh (29 September 1996)
-888. Replace virtualX by displayWidth where appropriate in many SVGA drivers.
-887. Fix virtual width/pitch checking/setting for the MGA driver.
-886. Solid line acceleration for the MGA driver (Dirk Hohndel).
-885. Improve the way scanline pitch restrictions are implemented for the
- SVGA server.
-884. Set default W32 black/white pixel values the same as for the other
- servers.
-883. Fix some W32 stipple problems (Glenn Lai).
-882. Allow "mclk" as a synonym for "s3mclk" (Harm Hanemaayer).
-881. Adjust mode timings in the ARK driver when required for 24bpp operation
- and for HW cursor operation (Harm Hanemaayer).
-880. Some MGA driver cleanups.
-879. Fix selection of interleave mode for MGA (Ansgar Hockmann).
-878. Add "fifo_conservative" option for the ARK driver (Harm Hanemaayer).
-877. Possible fix for ICS5342 MCLK calculation in the Ark driver
- (Harm Hanemaayer).
-876. Fix max clocks when ClockChip "cirrus" is used (Harm Hanemaayer).
-875. XF86Setup updates (see XF86Setup/CHANGELOG for details) (Joe Moss).
-874. LCD code for Cyber9320 in PC98_TGUI server (X98 core team).
-873. Fix typos in pc98_tgui.{c,h} (X98 core team).
-872. PC98 Imakefile updates (X98 core team).
-871. PC98 documentation updates (X98 core team).
-870. New Chips&Tech accelerations, including: multiple depth ImageGlyph
- and PolyGlyph for 65545, 8bpp CopyPlane1to8 for 65545, 8bpp
- FillRectTransparentStippled32 and FillRectOpaqueStippled32 for 65545,
- modified simple BitBlt and Solid fill for 65550, stipple and tile
- functions for 65550 (Egbert Eich, Xavier Ducoin, David Bateman).
-869. Chips&Tech driver fixes, including: improve stability of
- suspend/resume, fix DSTN screens with 65550, reduce the size of
- MMIO regions, fix PCI burst mode, disable line acceleration because
- it can cause a server crash in rare circumstances (Egbert Eich,
- Xavier Ducoin, David Bateman).
-868. Make the Cirrus fifo options work for the 546x chips (Corin Anderson).
-867. Support for the Cirrus 5464 (Corin Anderson).
-866. Add a hook to the SVGA server to allow drivers to specify a display
- width (pitch) which is different from the virtual width. This
- is required for some Cirrus chipsets (Corin Anderson).
-865. 24bpp packed pixel Cirrus support (Harm Hanemaayer and Corin Anderson).
-864. Work around a problem on NetBSD/OpenBSD where dlsym() searches for
- the symbol in the whole executable rather than just in the modules
- specified (Matthieu Herrb).
-863. Add an X server and config/imake support for LynxOS microSPARC 2.4.0
- (Thomas Mueller).
-862. Remove stale fb shared memory before dying on LynxOS (Thomas Mueller).
-861. Work around a popen/pclose bug on LynxOS in the server XKB code
- (Thomas Mueller).
-860. Work around a bash problem on LynxOS which affects rstart/Imakefile
- (Thomas Mueller).
-859. Solid vertical and horizontal lines for the S3 ViRGE server (Berry Dijk).
-858. Fix max clock for TGA (Alan Hourihane).
-857. Fix for TGA VT switching problems (Alan Hourihane).
-856. Add code to detect the ViRGE/VX (Dirk Hohndel).
-
-XFree86 3.1.2Gg (26 September 1996)
-855. Preliminary support for the Matrox Millennium (MGA 2064W)
- (Radoslaw Kapitan, Andrew Vanderstock, Dirk Hohndel).
-
-XFree86 3.1.2Gf (25 September 1996)
-854. Mach32 documentation (Bryan Feir).
-853. Improve Mach32 ramdac probing in SuperProbe (Bryan Feir).
-852. Fix xf86writepci() prototype (Alan Hourihane).
-851. TGA server and documentation updates (Alan Hourihane).
-850. Fix missing argument in the QueryBestSize functions in the SVGA server
- (Harm Hanemaayer).
-849. Another fix for usage of XInput defines, and make initext depend on
- ICONFIGFILES (Marc Aurele La France).
-848. Improve reliability of detecting Mach64 cards in SuperProbe, the
- Mach64 server and the ati driver (Marc Aurele La France).
-847. Complete s3im.c for s3_virge (Harald Koenig).
-846. Fix s3_virge framebuffer detection (Harald Koenig).
-845. Fix s3_virge compile problems when using a compiler other than gcc.
-844. Missing patch to vgaCmap.c for item 842 (Harm Hanemaayer).
-
-XFree86 3.1.2Ge (24 September 1996)
-843. Add Trio/ViRGE clock support to the "s3_svga" driver. This is still
- incomplete, and for development use (Harald Koenig).
-842. Add vgaGetInstalledColormaps() and support for 8-bit colour components
- to the SVGA server (Harm Hanemaayer).
-841. ARK driver updates, including: fix problems with BitBlts at 24bpp,
- fix hw cursor at 8bpp, fix some ZoomDAC problems, and add support
- for 8-bit colour components (dac_8_bit) at 8bpp (Harm Hanemaayer).
-840. Fix some typos in compiler.h (Harald Koenig).
-839. Initial ViRGE s3im.c, and remove unneeded s3linear.h and bank switching
- (Harald Koenig).
-838. Fix some XInput and XKB defines (Marc Aurele La France).
-837. LinkKit fixes (Marc Aurele La France).
-836. Add ARK Logic chipset detection to SuperProbe (Harm Hanemaayer).
-835. Fix a typo in xkbcomp/symbols/de (Thomas Mueller).
-
-XFree86 3.1.2Gd (23 September 1996)
-834. Rename ViRGE driver from s3_generic to s3_virge (Dirk Hohndel).
-833. Don't reference uninitialised s3MmioMem in ViRGE server (Harald Koenig
- and Dirk Hohndel).
-832. Don't do S3 bug tests for 928 and earlier (Harald Koenig).
-831. ViRGE fixes, including BITBLT and text clipping (Harald Koenig).
-830. Updates to the Cards file for Cirrus and Ark (Harm Hanemaayer).
-829. xf86config updates, including 24bpp support, and making "virtual"
- optional (Harm Hanemaayer).
-828. Fix trident probe so that it restores all registers it touches
- (Harm Hanemaayer).
-827. ARK driver updates, including: auto-detect the ZoomDAC and print out
- the RAMDAC type, use DRAM bandwidth for CRT FIFO setting, don't allow
- 5-5-5 weight for 16bpp with 1000PV and ZoomDAC, and add sanity check
- for off-screen CopyWindow (Harm Hanemaayer).
-826. Fix a typo in the TGA server that could cause it to think it has found
- a valid mode (Alan Hourihane).
-825. Don't try to use -ldl for XF86Setup on non-ELF Linux (Harald Koenig).
-824. Add "slow_dram" option for the W32 server to fix some problems with
- older cards (Dirk Hohndel).
-
-XFree86 3.1.2Gc (22 September 1996)
-823. XKB data file updates for jp106/jp (Takaaki Nomura).
-822. S3 Virge server (preliminary version) (Harald Koenig).
-821. ARK driver updates, including basic BitBlt acceleration, improved
- ramdac support, experimental 24bpp support, and max dot clocks take
- the memory clock into consideration (Harm Hanemaayer).
-820. Minor xdm and xterm changes to allow them to compile on FreeBSD 1.1.5.
-819. Fix Trident probe in SuperProbe so that it doesn't corrupt ET6000
- display (Koen Gadeyne).
-818. Fix Sierra 1502X RAMDAC handling in the W32 server (Dirk Hohndel).
-817. TGA server for Alpha machines. Not accelerated at this stage
- (Alan Hourihane).
-816. SuperProbe update for ELSA Gloria (Harald Koenig).
-815. Fix/add 15/16bpp support for S3 805i with AT&T 20C498 (Hermann Lauer).
-814. Improve S3 clipped text performance (Harald Koenig).
-813. Fix a typo in xkbcomp/rules/xfree86 (Joe Moss).
-812. Add detection for the Cirrus 7548, and treat it like the other 754x
- chips (Harm Hanemaayer).
-811. Change xterm valid-response code in DECRQSS from 0 to 1 to match a
- real VT420 terminal (Thomas E. Dickey).
-810. Add a resource 'decTerminalID' to control the reporting level of
- xterm (e.g., VT100, VT220), and use it to implement/correct the
- DA1, DA2 and DECRPTUI reports (Thomas E. Dickey).
-809. Fix xterm restoration of color for bold/underline color mode
- (Thomas E. Dickey).
-
-XFree86 3.1.2Gb (15 September 1996)
-808. Update PC98 Imakefiles (Michio "Karl" Jinbo).
-807. Fixes for problems with the PC98 TGUI server (Michio "Karl" Jinbo).
-806. Fix/workaround to avoid DGAInstallColormap() being affected by
- window managers.
-805. Fix some problems related to the change in the xf86scanpci() interface.
-
-XFree86 3.1.2Ga (14 September 1996)
-804. Implement s3ValidMode() (Mark Vojkovich).
-803. Modify the ValidMode interface in preparation for some VidMode extension
- changes.
-802. Fix a problem with the XOpenDisplay buffer overflow fix (item 734 below)
- (X Consortium, Kaleb Keithley).
-801. Fix FIFO setting for Cirrus Alpine (543x, 5446) cards with 1MB
- (Harm Hanemaayer).
-800. Modify Cirrus asm code to allow PCI burst accesses (Harm Hanemaayer).
-799. Change default for MvCmd to 'mv -f'.
-798. Redo the xf86PCI code, based on that in FreeBSD-current.
-797. Update xf86PCI code to deal with PCI bridges and multi-function
- devices (Mihoko Tanaka).
-796. Fix a problem with the Sigma L-View driver (and presumably the same
- problem in the HGC1280 driver (Norbert Berzen).
-795. Add a "Sundeadkeys" XKB variant for European keyboards.
-794. Change the "es" XKB symbols to match a Spanish keyboard (Jon Tombs).
-793. Update Cards database.
-792. Fix panning problem with some Cirrus cards (Corin Anderson).
-791. Map the S3 MMIO area separately (Harald Koenig).
-790. Don't allow S3 newmmio to be selected for chips that don't support
- it (Harald Koenig).
-789. Fix for Linux/m68k frame buffer device (Geert Uytterhoeven).
-788. Fix detection of some SiS chips.
-787. Turn on 32-bit mode for TGUI chips. This allows PCI burst to be
- turned on by default. (Alan Hourihane).
-786. Disable 16bpp for the TGUI9320LCD since it doesn't work (Alan Hourihane).
-785. Fix ET6000 problems with the VGA16/Mono servers (Koen Gadeyne).
-784. Speedups for the W32 arc and teblt8 code (Glenn Lai).
-783. Fix W32 line-drawing using the wrong ROP for horizontal and vertical
- lines (Koen Gadeyne).
-782. Add a new xdm access control keyword "NOBROADCAST" to disable answering
- broadcasts from specified hosts (Kimmo Suominen).
-781. Make xf86config run the correct server by name rather than trying
- to run 'X' (Holger Veit).
-780. Change default "gb" XKB symbols (James Hawtin).
-779. Config and documentation updates for LynxOS (Thomas Mueller).
-778. Update XF86Setup's device list for LynxOS (Thomas Mueller).
-777. Fix compile problem when XINPUT isn't defined (James Hawtin).
-776. XF86Setup needs to be linked with -ldl on Solaris (James Hawtin).
-
-XFree86 3.1.2G (3 September 1996)
-775. Fixes for some NECS3 server problems (Naofumi Honda).
-774. Fix some XF86Setup typos.
-773. OS/2 updates (Holger Veit).
-
-XFree86 3.1.2Fc (3 September 1996)
-772. XF86Setup updates (see XF86Setup/CHANGELOG for details) (Joe Moss).
-771. PCI detection for the Alliance ProMotion 6422 (Kent Hamilton).
-770. Documentation updates (Dirk Hohndel, Matthieu Herrb).
-769. Updates for OpenBSD, including support for recent changes to the
- console drivers (Matthieu Herrb).
-768. Need rint() for ISC and Lynx (Michael Rohleder).
-
-XFree86 3.1.2Fb (1 September 1996)
-767. S3 support for the Diamond SS2410 RAMDAC (eriks).
-746. Fix resize on Linux (for terminfo) (Rik Faith).
-745. Updates to Cyrillic fonts (Andrey Chernov).
-
-XFree86 3.1.2Fa (31 August 1996)
-744. Fix xterm's handling of SGR 22, 24 and 25 in combination with colorUL
- and colorBD resources. Also noted & fixed reset of colored
- underline/bold with SGR 0 (Thomas E. Dickey).
-743. Fix a typo in the xterm termcap (Thomas E. Dickey).
-742. Don't allow the "fb_debug" option when newmmio is used (Harald Koenig).
-741. Make sure s3Port59/s3Port5A are initialised before s3Init() is called
- (Harald Koenig).
-740. Force 64MB alignment of linear FB, even when MemBase is given in
- the config file (Harald Koenig).
-739. Disable newmmio when "nolinear" is specified, or when linear memory
- mapping isn't available (Harald Koenig).
-738. Fix C&T driver printing out a line in its probe in cases where a
- C&T chip hasn't been detected.
-737. Driver for the Alliance ProMotion 6422 (Alliance Semiconductor, and
- Kent Hamilton).
-736. Make the Ark SVGA driver detect the ARK2000MT, and treat it as an
- ARK2000PV.
-735. Updates for SCO OpenServer 5 support (J. Kean Johnston).
-734. Fix for a buffer overflow problem in XOpenDislpay (libX11)
- (X Consortium, Kaleb Keithley).
-733. Some imake/config updates (Dirk Hohndel).
-732. Add a '-nolock' server command line option to disable the X server
- locking (Roger Wolff).
-731. Scanpci updates: Check general pci-pci bridges, add some more
- vendor and device IDs, and add a '-f' flag to print out the full
- information -- otherwise just print the vendor/device name
- (Mihoko Tanaka).
-730. Updates for ISC (Michael Rohleder).
-729. Fix typo in XF86Setup/mouse.tcl (Thomas Mueller).
-728. Fix malloc problem in TLI xtrans code (Joe Moss).
-727. Fix some WaitQueue problems with the S3 server (Naofumi Honda,
- Takaaki Nomura, Harald Koenig).
-726. Fix for display problem with Trio64V+ at 16bpp (Harald Koenig).
-725. Fix clock limit arrays for Cirrus 754x chip (Corin Anderson).
-724. Add a "DefaultColorDepth" keyword for the Screen section of the
- XF86Config (Dirk Hohndel).
-723. Fix problem using non-linear mode with TGUI chips (Alan Hourihane).
-722. Turn off PCI burst write by default for TGUI chips.
-
-XFree86 3.1.2F (27 August 1996)
-721. Update the QuickStart guide with details about using XF86Setup (Joe Moss).
-720. Some XF86Setup updates (Joe Moss).
-719. Avoid a possible malloc/free problem in the xtrans TLI code (Joe Moss).
-718. Some Linux a.out lib updates for libX11, libXt (Harald Koenig).
-717. Fix 32bpp S3 newmmio problem (Harald Koenig).
-
-XFree86 3.1.2Eo (26 August 1996)
-716. Disable 24bpp packed mode in S3 server because it doesn't work properly
- yet (Harald Koenig).
-715. Don't use newmmio S3 driver by default on Alpha architecture (or
- for ISC) (need to specify it explicitly in XF86Config) (Harald Koenig).
-714. Fix some incorrect printf-style arguments in xkbcomp (Thomas E. Dickey).
-713. Fix compiler warnings, including uninitialised variables, missing
- prototypes, etc (Thomas E. Dickey).
-712. XF86Setup updates (Joe Moss).
-711. Fix for some potential buffer overrun problems in libXt and libX11 that
- can lead to security holes.
-
-XFree86 3.1.2En (25 August 1996)
-710. Build/install the xkbui library regardless of whether XF86Setup is
- being built.
-709. Fix lots of compiler warnings and related problems when building on
- Alpha (Richard Henderson).
-708. Fix missing function prototype problem in libXi that causes problems
- on Alpha platforms (Richard Henderson).
-707. XF86Setup updates.
-
-XFree86 3.1.2Em (24 August 1996)
-706. Swap acute and apostrophe keys in de(nodeadkeys) (Michael Rohleder).
-705. ISC documentation updates (Michael Rohleder).
-704. Chips & Tech documentation update (Egbert Eich).
-703. Chips & Tech driver updates, including a fix for a 65545 PCI problem,
- and a hack/option for a suspend/resume problem (Egbert Eich).
-702. Major updates to XF86Setup (Joe Moss).
-701. Updates to the Cards database (various).
-700. ATI (SVGA) driver update (Marc Aurele La France).
-699. Cards file update for AGX (Henry Worth).
-698. Fix for a BIOS initialisation problem on some VideoLogic (S3) cards
- (Harald Koenig).
-697. Fix some 32bpp problems with S3 newmmio (Harald Koenig, Bernd Lind).
-696. Fix some PCI lockups when using S3 newmmio mode (Harald Koenig).
-
-XFree86 3.1.2El (23 August 1996)
-695. NetBSD/OpenBSD doc updates (Matthieu Herrb).
-694. Fix typo in rules/xfree86 (Joe Moss).
-693. Fix some virtual desktop scrolling bugs with the CL-GD5462 in the
- Cirrus driver (Corin Anderson).
-692. Set BSD (syscons/pcvt) keyboard to K_RAW after establishing the tty
- settings (was done in the opposite order) (Naofumi Honda).
-691. Fix PCVT_SUPPORT in BSD xf86KbdOn/Off functions (Naofumi Honda).
-690. Add correct handling of PCI connect/disconnect for the PC98 S3 968
- server (Naofumi Honda).
-689. Fix PCI probing for PC98 machines (Michio Jinbo).
-688. Fix mask used for TGUI fb address when membase is supplied (Michio Jinbo).
-687. Add an xterm option/resource to allow text selection to be shown
- differently -- ie, only highlight the characters selected when selecting
- beyond the end of a line (Thomas E. Dickey).
-686. Fix PCI base address for S3 868/968, and newmmio fixes (Harald Koenig).
-685. Fix problem with memory allocation in XKB that could cause the server
- to crash (Joe Moss).
-
-XFree86 3.1.2Ek (21 August 1996)
-684. Fixes for m68k support (Geert Uytterhoeven).
-683. Naming changes for m68k servers and config options (Geert Uytterhoeven).
-682. Update SuperProbe to identify the amount of memory for a 65550/54,
- and fix detection of 65545 (David Bateman).
-681. Fix for 65545 PCI problems in the C&T driver (Egbert Eich).
-680. resync os2_select.c (Holger Veit).
-
-XFree86 3.1.2Ej (20 August 1996)
-679. Fix install problem when xkbcomp is linked against shared libs.
-678. Prevent server exit if the mouse device is changed to something
- unsuitable (Joe Moss).
-677. XF86Setup updates (Joe Moss).
-676. Update XF86Config man page and sample XF86Config file for XKB changes
- (Joe Moss).
-675. LinkKit fixes (David Bateman).
-674. Chips & Tech driver updates (David Bateman and others?).
-673. xterm bug fixes (Thomas E. Dickey).
-672. PCI probe fix for S3 server (Harald Koenig).
-671. Support for new MMIO style for 868/968/Trio64V+, and MMIO support
- (with optimised use of memory barriers) for Alpha/AXP. This currently
- has problems at 32bpp (Bernd Lind, Harald Koenig).
-670. Use POSIX termios for xterm for all Linux systems (Richard Henderson).
-669. Generalise mmap access to DENSE I/O memory for Alpha (Richard Henderson).
-668. 32/64 bit cleanup, especially in server's XIE code (Richard Henderson).
-667. Config updates for Linux/Alpha (Richard Henderson).
-666. Updates for OS/2 (Holger Veit).
-665. Fix problems building XF86Setup with BuildServersOnly set to YES.
-
-XFree86 3.1.2Ei (18 August 1996)
-664. Fix some PC98 Imakefile problems (Michio "Karl" Jinbo).
-663. Linux/m68k support (Geert Uytterhoeven, Martin Schaller, Gary Henderson).
-662. Change the S3 server's handling of situations where mode choices
- cause problems. It is now less likely to exit in these situations.
-661. Add a -bestRefresh command line option to the X servers to change
- the mode selection to pick the mode with the best refresh rate when
- multiple modes of the same name are available.
-660. XF86Setup updates (see XF86Setup/CHANGELOG) (Joe Moss).
-
-XFree86 3.1.2Eh (14 August 1996)
-659. Update Cyrillic fonts (Andrey Chernov).
-658. Add support for the CL-GD5462 to the cirrus driver, and update
- documentation for recent cirrus driver changes (Corin Anderson).
-657. XF86Setup updates (Joe Moss).
-656. Fix some LynxOS-related typos in the config (Thomas Mueller).
-655. Add a man page for the DGA extension.
-
-XFree86 3.1.2Eg (14 August 1996)
-654 Update Japanese docs (Michio "Karl" Jinbo).
-653 Add XF98_GA968 server for GA-968V4/PCI(S3 968) (Michio "Karl" Jinbo).
-652. Bring the PC98 tree into sync with the main tree, and add XF86Setup
- (Michio "Karl" Jinbo).
-651. Fix problems with 32bpp sparse mode that were introduced in 3.1.2Eb.
- Need to check that this fix works OK with 24bpp packed mode.
-650. Fix some compiler warnings (Thomas E. Dickey).
-649. Mods to ct_driver.c so that it will compile on SVR4.0 (no nested
- asm calls, and work around a code generation problem).
-648. Fix some problems with mouse changes in 3.1.2Ef (Joe Moss).
-
-XFree86 3.1.2Ef (13 August 1996)
-647. ET6000 support for the SVGA and W32 servers. The support in the
- W32 server is accelerated (Koen Gadeyne).
-646. Add support to xterm for most vt220 and vt320 terminal features
- (Thomas E. Dickey).
-645. Support for I128 series II cards (Robin Cutshaw).
-644. Wacom driver updates (Frederic Lepied).
-643. Support for core motion history management through mi (Frederic Lepied).
-642. Improved integration of mouse with XInput (Frederic Lepied).
-641. Major updates to XF86Setup (Joe Moss).
-640. Update to latest version of XKB.
-639. Fix broken 32bpp sparse support in S3 server (there are still some
- problems though, and they are also seen with the Mach64 server).
-
-XFree86 3.1.2Ee (11 August 1996)
-638. Implement ech and ech1 terminal capabilities for xterm (Thomas E. Dickey).
-637. Add blinking cursor support for xterm (disabled for now)
- (Thomas E. Dickey).
-636. Fix a PEX font struct being freed twice (Richard Henderson).
-635. Make xterm tolerant of applications that allocate the whole colour map
- (by disabling colour mode if the ANSI colours are set with non fg/bg
- values) (Thomas E. Dickey).
-634. Allow ISO colour support to be #ifdef'd out in xterm. This allows
- xterm's memory usage to be significantly reduced when colorMode is not
- enabled (Thomas E. Dickey).
-633. Reduce flickering during resize for ReverseVideo in xterm
- (Thomas E. Dickey).
-632. Fix xterm core dump problem on IRIX 5.2 (Thomas E. Dickey).
-631. Update scanpci to detect the #9 I128 series II (Robin Cutshaw).
-630. Preliminary Mach32 ramdac support updates (Bryan Feir).
-629. Document new xterm control sequences (Thomas E. Dickey).
-628. Fix problem introduced in 3.1.2E with software cursor on some non-i386
- platforms (Thomas E. Dickey and Thomas Mueller).
-627. Support for SCO Open Server 5 (J. Kean Johnston).
-626. Add detection of the S3 ViRGE chip to SuperProbe (and scanpci), and
- use PCI probing for S3 chipset detection in SuperProbe where appropriate
- (Harald Koenig).
-625. Add detection of newly supported C&T chips to SuperProbe.
-624. Add a TextClock keyword for the XF86Config to fix problems restoring
- the text clock with the chips & tech driver (Egbert Eich).
-623. Updates for the LinkKit (Egbert Eich).
-622. Significantly improved driver for Chips and Technologies chipsets.
- Includes linear addressing (65530 and above), 16/24bpp (65540 and above),
- programmable clock support (65540 and above), HW cursor support (65545
- and above), BitBLT acceleration (65545/46 and 48), support for the
- 65546, 65548, 65550 and 65554 (Nozomi Ytow, Egbert Eich, Ken Raeburn,
- Xavier Ducoin and David Bateman).
-
-XFree86 3.1.2Ed (10 August 1996)
-621. Fix xterm colour translation problem (Michael Rohleder and
- Thomas E. Dickey).
-620. xterm termcap/terminfo fixes (Thomas E. Dickey).
-619. Add escape sequences to xterm that act like CDE ddterm's window
- operations (Thomas E. Dickey).
-618. Set the initial cleared screen colour correctly for the 8514 and Mach8
- servers to match the default black pixel value and the -flipPixels
- flag (Hans Nasten).
-617. Add support for LynxOS AT version 2.4.0, and client-only support for
- LynxOS microSPARC and PowerPC (Thomas Mueller).
-616. Config updates for OpenBSD and NetBSD 1.2 (Matthieu Herrb).
-615. Fix typo in trident driver, and update XFree86 man page (Alan Hourihane).
-614. Fix problems with Trio64V+ video blanking signal. Some undocumented
- options "trio64v+_bug1" to "trio64v+_bug3" have been added enable/disable
- parts of the code in case they are required later (Harald Koenig).
-613. Don't require SuperProbe to do the BIOS signature check for VGA cards
- when the PCI probe detects a VGA card (Koen Gadeyne).
-612. Add ET6000 detection to SuperProbe (Koen Gadeyne).
-611. Add PCI detection of ET6000 to scanpci and SVGA server (Koen Gadeyne).
-610. Update AGX documentation (Henry Worth).
-609. Add DGA support to the AGX server (Henry Worth).
-608. AGX server recognises "fast_vram" and "slow_vram" options as equivalents
- to "fast_dram" and "slow_dram" (Henry Worth).
-607. 8 bit/RGB DAC mode is now the default for the AGX server where supported
- (Henry Worth).
-606. Fix initialisation of the Bt481 for AGX-016 based Hercules dual-DAC
- Graphite cards (Henry Worth).
-605. Fix overscan colour correctly for the AGX server to match the change
- to the default black pixel value and the -flipPixels flag (Henry Worth).
-604. Update et4000w32.c for ChipHas24bpp in vgaVideoChipRec (Thomas E. Dickey).
-603. Prevent Xserver from exiting when a mouse device can't be opened and
- the '-allowMouseOpenFail' command line option is used (Joe Moss).
-602. Add CL-GD5446 detection to SuperProbe.
-601. Add support for CL-GD5446 to the cirrus driver (Corin Anderson).
-600. Add PCI detection of Cirrus CL-GD5446 to SVGA server and scanpci
- (Corin Anderson).
-599. Add a function XF86DGAForkApp() to the dga library, which causes
- the client to fork, with the parent remaining to clean up after the
- child exits (Jon Tombs).
-598. Add an InstallColormap function to the DGA extension (Jon Tombs).
-597. Fix broken DGA setviewport on SVGA servers (Jon Tombs).
-
-XFree86 3.1.2Ec (8 July 1996)
-596. XF86Setup fixes and updates (Joe Moss).
-595. Fix some build problems on Solaris due to the positioning of
- <stdlib.h> includes in xconsole and xwd (William Austin).
-594. Fix a make problem in xfree98/vga16/drivers (Takaaki Nomura).
-593. Add some minor features from ISO 6429 to xterm (Thomas E. Dickey).
-592. Fix for SiS clock programming, and implement HW cursor for SiS
- (Alan Hourihane).
-591. XInput support for SummaSketch tablets (Steven Lang).
-590. Improve the startup of the Wacom driver (Frederic Lepied).
-589. Fix an XInput bug with extended events reporting the wrong number
- of valuators (Frederic Lepied).
-588. Fix xterm's utmp usage for Solaris (Christos Zoulas).
-
-XFree86 3.1.2Eb (30 June 1996)
-587. Fix MMIO setting which causes problems with Trio64V+ cards in machines
- with PCI SCSI controllers (Harald Koenig).
-586. Auto-select the ICD2061A for Diamond Stealth 64 VRAM cards (when
- a Diamond BIOS, Bt485 and S3 964 are all detected).
-585. Fix a problem with the VGA16 server when Chipset "generic" is specified.
-584. Fix twm/gram.y and fonts/PEX/to_wfont.y problems that show up when
- using bison-1.25 (Matthieu Herrb).
-583. Move the beta expiry check code into a separate file, and add a command
- line option to allow the expiry date to be extended when a key is
- provided.
-582. Preliminary 24bpp packed support for some S3 cards (Harald Koenig).
-581. Add 24bpp (packed pixel) support for cfb (cfb24), and the required
- hooks for using it with the SVGA server (Shigehiro Nomura and
- NoZomi Ytow).
-580. Fix some xterm background colouring problems (Thomas E. Dickey).
-579. Allow the PCI burst to be separately turned on/off for read and write
- for the TGUI chips (Alan Hourihane).
-578. vgaHW.c fix (NoZomi Ytow).
-577. Fix for Mach64 block_write problems introduced in 3.1.2E (Kevin Martin).
-576. An alternate fix to the Makedirectories() rule, which causes only
- one 'sh -c' to be used (Marc Aurele La France).
-575. Some sanity checks for the trident driver (Alan Hourihane).
-574. Another HSkew fix for the ATI SVGA driver (Marc Aurele La France).
-573. Add 256 colour support to the SiS driver (Alan Hourihane).
-572. Fix a stdlib.h -related problem in xwd (Joe Moss).
-571. Fix a stdlib.h -related problem in xfs/os/utils.h (Takaaki Nomura).
-570. Add a new Xserver configuration utility -- XF86Setup (Joe Moss).
-569. Remove the "-noscale" flag from the Xserver usage message (Joe Moss).
-568. Fix session handling of xdm for *BSD (Peter Wemm).
-
-XFree86 3.1.2Ea (10 June 1996)
-567. xf86config.c update in preparation for the XF86Setup utility (Joe Moss).
-566. Fix some Mach64 problems in the SVGA ati driver (Marc Aurele La France).
-565. Fix the xf86GetClocks prototype (Marc Aurele La France).
-564. Fix MakeDirectories rule (Stephen Hocking).
-563. By default, don't change PCI burst settings for TGUI (Alan Hourihane).
-562. Fix interlaced modes for the SVGA ali driver (Thomas Graichen).
-561. xfs updates for OS/2 (Sebastien Marineau).
-560. Fix some TGUI problems introduced in 3.1.2E (Alan Hourihane).
-559. Fix problems with scanpci on NetBSD (Michio "Karl" Jinbo).
-558. Some cleanups/removal of compiler warnings (Christos Zoulas).
-557. Patch for compiling on BSD/OS 2.1 (Mike Bernson).
-556. Turn off the Xaw3d arrow scrollbar support in xterm by default (it
- causes xterm to suck CPU), and make it an option/resource
- (Thomas E. Dickey).
-555. Reinstate the "no_program_clocks" for TGUI9440 chips (Alan Hourihane).
-554. XInput updates, including motion history support for the joystick and
- elo devices, removing auto link speed detection for the elo -- it is
- now set with the LinkSpeed XF86Config option, and added acceleration
- handling for relative devices (Patrick Lecoanet and Frederic Lepied).
-553. Add VGA16 support to the ET3000 driver (Thomas Graichen).
-552. Fix for first button click in a xterm being mistaken for a double
- click (Kaleb Keithley).
-551. Fix for server crash on Alpha when using the logo screen saver
- (Manabe Takashi).
-550. xkb datafile updates, including more/better European keymaps, pc102
- geometry and keycodes (Stuart Anderson, courtesy Metro Link).
-549. Fix xterm problem on *BSD (VMIN initialisation) that would cause
- rlogin to fail (Matthieu Herrb).
-548. Fix problems when a dynamic module is specified with an absolute path.
-
-XFree86 3.1.2E (13 May 1996)
-547. Fix Trio64V+ problem with DAC entry#255 for color mode 0 (1 8bpp/DCLK)
- by only using color mode 8 (2 8bpp pixel/DCLK, CR67=10) (Harald Koenig).
-546. Added options to the S3 server to slow down DRAM and EDO DRAM access
- (Harald Koenig).
-545. Add inlined assembler code to do unaligned access on Alphas
- (Harald Koenig).
-544. Fix a font corruption problem for Alphas in cfb (Harald Koenig).
-543. Fix sample Xcms.txt colour entries (Harald Koenig).
-542. Fix some problems building the a.out DLL version of libX11
- (Harald Koenig).
-541. OS/2 updates (Sebastien Marineau).
-540. Fix(?) server crash on keyboard input when using DGA with XKB disabled.
-539. Install xterm termcap/terminfo files in lib/X11/etc for all OSs, not
- just SYSV/SVR4.
-538. Convert egc_asm.s to the portable assembler format so it can be built
- on SVR4 (Takaaki Nomura).
-537. Fix Mach64 ghostview scrollbar problem. This may also fix some font
- corruption problems seen in Netscape (Kevin Martin).
-536. Fix Mach64 ol[v]wm icon problem (Kevin Martin).
-535. Add Mach64 cursor in doublescan mode -- this still has problems
- (Kevin Martin).
-534. Add Mach64 doublescan mode for low resolution modes (only works so far
- for the VT chip) (Kevin Martin).
-533. Fix Mach64 264VT support in the Mach64 server (Kevin Martin).
-532. Update the xterm termcap and terminfo descriptions (Thomas E. Dickey).
-531. Fix an xterm bug where XmbLookupString is used even though an
- IM/IC isn't open/used (Kaleb Keithley).
-530. Fix a clock roll-over bug in xterm (Kaleb Keithley).
-529. Add some new locale aliases used by Solaris 2.5 and some other OSs
- (Kaleb Keithley).
-528. Fix some potential data overruns with long environment variables in
- libX11 and libXt which could create security holes in suid root
- programs like xterm (Kaleb Keithley).
-527. Fix makedepend's handling of long typed defines (eg, 1993L)
- (Kaleb Keithley).
-526. User alloca on UnixWare (Kaleb Keithley).
-525. Improved fix for removing compiled keymap files (Kaleb Keithley).
-
-XFree86 3.1.2Dj (12 May 1996)
-524. Disable POSIX_TERMIOS in xterm for FreeBSD versions prior to 2.1.
-523. Add a document for XInput (Frederic Lepied).
-522. Have the server remove the compiled keymap file when shutting down
- (Joe Moss).
-521. Fix problem of XkbListComponents() not listing anything in
- subdirectories (Joe Moss).
-520. Fix passing of button events for the Joystick (Frederic Lepied).
-519. NetBSD documentation updates (Matthieu Herrb).
-
-XFree86 3.1.2Di (11 May 1996)
-518. Modify xterm to revoke() its pty before opening it on *BSD
- (Matthieu Herrb).
-517. Fix xterm not sending SIGHUP to its children when it dies on *BSD
- (Matthieu Herrb).
-516. Fix some problems that were preventing extended Mouse devices from
- working.
-515. Add "Port" as a synonym for "Device" in the Pointer section.
-514. Fix Makefile dependencies for dynamically loaded XInput modules.
-513. Fix screen saver blanking for Mach64 CT at 16bpp and 32bpp.
-512. Remove the directory components from the XKB parameters in the sample
- XF86Config files, and from the XF86Config files generated by xf86config.
-511. Fix Mach64 memory mapping bug introduced in 3.1.2Dg.
-
-XFree86 3.1.2Dh (10 May 1996)
-510. Fix for some image problems on VGAWonder V3, V4 and V5 adapters
- (Marc Aurele La France).
-509. Enable TERMIOS for xterm on Linux/Alpha (Kazushige Goto).
-508. Make the "clkdiv2" option a valid option for most accelerated
- servers (Koen Gadeyne).
-507. Unified the global function names to use the xf86 prefix in the XInput
- code (Frederic Lepied).
-506. Add support for motion history for extended input devices (implemented
- for the Wacom driver) (Frederic Lepied).
-505. Oak documentation updates (Jorge Delgado).
-504. Fix compiler warnings introduced in 3.1.2Dg (Thomas E. Dickey).
-503. OS/2 updates (Sebastien Marineau and Holger Veit).
-502. Fix formatting of xtrans error messages (Holger Veit).
-501. S3 image fixes for Alpha (Harald Koenig).
-
-XFree86 3.1.2Dg (6 May 1996)
-500. X98 updates for PANIX(98) support (X98 core team).
-499. Allow halved clocks to be used with the VGA servers (Koen Gadeyne).
-498. Use same xlfd value rounding for alpha as for i386 (Harald Koenig).
-497. Support for Linux/Alpha (Jay Estabrook, Craig Ruff, Harald Koenig
- and others?).
-496. Fix autorepeating modifier keys (Kaleb Keithley).
-495. Fix nonMuxMaxClock for S3 864/868 (Harald Koenig).
-494. Make sure that imake, xinit and the XFree86 servers don't inherit
- a SIGCHLD signal handler of SIG_IGN (Marc Aurele La France).
-493. Fix default HSkew for ATI 28800 cards (Marc Aurele La France).
-492. Fix typo in SuperProbe/PCI.c (Holger Veit).
-491. Colour xterm fixes -- fixes inner border being painted with the wrong
- colour (Thomas E. Dickey).
-490. More X server prototyping fixes -- mostly for Xserver/Xext
- (Thomas E. Dickey).
-489. DGA support for the P9000 server (Erik Nygren).
-
-XFree86 3.1.2Df (15 April 1996)
-488. Changes to xf86Config.c in preparation for XF86Setup sharing this
- code (Joe Moss).
-487. Prevent SuperProbe from falsely detecting non-VGA PCI devices.
-486. Config/Imake support for building LBX (Holger Veit).
-485. OS/2 updates (Holger Veit and Sebastien Marineau).
-484. Add support for the I128 8MB board with the IBM528 RAMDAC (Robin Cutshaw).
-483. Add prototyping for Xserver/dix, and fix copyright notices in new
- header files (Thomas E. Dickey).
-482. Replace the vsync wait delays in the ICD2061A code with a 20ms usleep
- (Harald Koenig).
-481. Ensure that the S3 server clears the screen to black even when
- '-flipPixels' is used, and erase the S3 HW bug test patterns after
- completing the tests (Harald Koenig).
-480. Fix incorrect S3 HW cursor offset after VT switching (Harald Koenig).
-479. Fix SuperProbe's memory probing for S3 cards with more than 4MB,
- and add detection for the TVP3030 RAMDAC (Harald Koenig).
-478. Fix some S3 TVP3026 problems introduced in 3.1.2Dc (Harald Koenig).
-477. Add support to the S3 server for the ELSA Gloria-8 card (except the
- GLint 300SX 3D chip) (Harald Koenig).
-476. Fix for POSIX termios support in xterm (Matthieu Herrb).
-475. Add -li386 to ServerExtraSysLibs for NetBSD (Matthieu Herrb).
-474. Fix problems when XINPUT isn't defined (Kaleb Keithley).
-473. Fix for TGUI 9320 LCD support (Alan Hourihane).
-472. Imakefile updates for X98, and PCI detection added for TGUI9320
- (Michio "Karl" Jinbo).
-
-XFree86 3.1.2De (31 March 1996)
-471. Change the default HSkew calculation (Marc Aurele La France).
-470. Add detection of the ATI 264VT, 264VT2 and 264GT to the ati driver,
- SuperProbe, scanpci, and the Mach64 server (Marc Aurele La France).
-469. Fix the W32 server's reporting of the bits/rgb resolution (Koen Gadeyne).
-468. Add ICD2061A clockchip support to the W32 server (Koen Gadeyne and
- Peter Chang).
-467. Add support for PowerWindow968, Cyber9320 and TGUI9680 (X98 core team).
-466. Fixes for XF98_NEC480 on PANIX-PC98 (X98 core team).
-465. Remove X98 style version info from the server startup messages
- (X98 core team).
-464. Improve stability of the XF98_PWSK server (X98 core team).
-463. Add some missing XFreeXDGA #ifdefs (Kaleb Keithley).
-462. Fix problem of the XKB keymaps not getting loaded when using the
- Xqueue keyboard driver on SVR4 (Joe Moss).
-461. Add POSIX termios support to xterm, and use it for BSD Net/2
- derived systems. This removes the need for kernels on those systems
- to be compiled with COMPAT_43 in order to run xterm (Matthieu Herrb).
-460. Update the I/O enabling in the X servers and SuperProbe for
- NetBSD-current (Matthieu Herrb).
-459. Save the S3 cursor colour stack (CR4A/CR4B) (Harald Koenig).
-458. Add macro button support to the Wacom driver, and handle more than
- six valuators to post events (Frederic Lepied).
-457. Support for the Miro Magic S4 (S3 928 + Bt485). A known problem is
- that switching between pixmux an non-pixmux modes doesn't work
- (Bernd Strobel).
-456. Fix banked mono for the SiS driver (Alan Hourihane).
-455. X server prototype cleanups and fixes, particularly in the Xi code
- (Thomas E. Dickey).
-454. Possible fix for tvga9000 and tvga8900d problems (Alan Hourihane).
-
-XFree86 3.1.2Dd (17 March 1996)
-453. Include R6.1 public patch 1.
-452. Fix incorrect type in SuperProbe/PCI.c (Thomas E. Dickey).
-451. Fix a memory leak in xterm when switching fonts (Thomas E. Dickey).
-450. Fixes for mouse problems introduced in 3.1.2Dc (Joe Moss,
- Michael Rohleder, Takaaki Nomura).
-449. Man page for the VidMode extension (Joe Moss).
-448. Modify xterm to work properly with Xaw3d's arror scrollbars (based on
- Kaleb Keithley's R5 patch).
-447. Add tilt report for the Wacom device (Frederic Lepied).
-446. Deal with DAC/clock discrepancy for Mach64 in the ati driver
- (Marc Aurele La France).
-445. Reduce warnings in the ati driver when compiling with 'gcc -Wall'
- (Marc Aurele La France).
-444. Fix recognition of ATI extended VGA register I/O port number on some
- Mach32 Mach64 PCI adapters in the ati driver (Marc Aurele La France).
-443. Add nested prototypes to xf86_HWlib.h (Marc Aurele La France).
-442. Fix typo in IBM RGB514 programming for the Mach64 (Marc Aurele La France).
-441. Fix a problem with the Mach64 server incorrectly using Block I/O mode
- on some cards.
-
-XFree86 3.1.2Dc (11 March 1996)
-440. XKB updates from recent XC fix-tracker.
-439. Fix freeing a random pointer in the module code when an absolute
- path is given (Thomas E. Dickey).
-438. Updates to Ti3026 PLL parameter limits (Harald Koenig).
-437. Support for ELSA Winner 2000PRO/X rev G (Harald Koenig).
-436. Fix 'make clean' problems for PC98 (Takefumi Tsukada).
-435. OS/2 updates (Holger Veit).
-434. Remove DEVINTPTR ifdefs by renaming the entrypoints of the affected
- functions (Thomas E. Dickey).
-433. Fix for handling of long version strings in beta servers (Harald Koenig).
-432. Some XFree86-Misc cleanups (Joe Moss).
-431. Add an extended input device supporting mouse protocols. This shares
- code with the core mouse (Frederic Lepied).
-430. Fix the behaviour of ANSI colours in xterm when reverse video is used,
- and some other xterm updates (Thomas E. Dickey).
-429. Fix SEGV with ark driver when no Ramdac is given in the XF86Config.
-428. Avoid retrace wait for S3 HW cursor when DGA is active (Jon Tombs).
-
-XFree86 3.1.2Db (5 March 1996)
-427. Fix a problem where hw cursors get recoloured incorrectly.
-426. Fix another possible Trio32 font cache problem (Harald Koenig).
-425. Another S3 968 dashed line fix (Harald Koenig).
-424. Fix RecolorCursor problems for S3 hw cursors in RAMDACs and for
- sw cursor (Harald Koenig).
-423. Add a Japanese version of the FreeBSD README (Takefumi Tsukada).
-422. Fix for problems with XF86_WSNA server (X98 core team).
-421. Add a mapping for Pointer_EnableKeys to the XKB symbols/us map (Joe Moss).
-420. XC patch for XKB.
-419. Add code to the vidmode and misc extensions to print details of mode
- keyboard and mouse setting changes (Joe Moss).
-418. Add code to recognise extra keys on Digital LK201 PC keyboards
- (Basil Duval).
-417. Don't include Multibuffer support in xdpyinfo when it isn't included
- in the X servers (Joe Moss).
-416. Fix core dump when XInput debugging is enabled (Frederic Lepied).
-415. Fix implicit grab problem with Wacom input device (Frederic Lepied).
-414. Add an "allowMouseOpenFail" XF86Config and command-line option to allow
- the server to be started when no mouse can be initialised (Joe Moss).
-413. Updates for parallel make (Robin Cutshaw).
-412. Update xf86config for the I128 server (Robin Cutshaw).
-
-XFree86 3.1.2Da (3 March 1996)
-411. Add a preinst.sh script.
-410. Documentation updates.
-409. Fix for Linux/ELF rules (H.J. Lu).
-408. Always used extended I/O for SYSV/SVR4. This is required now for
- ISC (Michael Rohleder).
-407. Fix BootstrapCFlags in sun.cf for Solaris x86.
-406. Solaris fixes for SuperProbe and the Mach64 server (Robin Cutshaw
- and James Hawtin).
-405. Wacom bug fix (Frederic Lepied).
-404. Add support for writing to stdout for gccmakedep, which is required
- for NetBSD and FreeBSD (Matthieu Herrb).
-
-XFree86 3.1.2D (24 February 1996)
-403. Fix xterm SEGV if it cannot open an input method (Manabe Takashi).
-402. Update Linux/ELF SharedLibraryTarget() (H.J. Lu).
-401. Add a BinUtilsVersion parameter for Linux, and modify ExtraLoadFlags for
- Binutils versions 2.6.0.7 and later (H.J. Lu).
-400. Set CplusplusCmd to 'c++' for Linux, set YaccCmd to byacc when
- USE_BYACC is defined, and remove $(CBRT) from ServerExtraSysLibs
- (H.J. Lu).
-399. Fix installation of some SCO rules/cf files (H.J. Lu).
-398. Modify imake.rules to include Motif rules/tmpl files when BUILD_MOTIF
- is defined (H.J. Lu).
-397. Fix argument passing typo in SuperProbe (Thomas E. Dickey).
-396. Update Cards database (Joe Moss).
-395. Documentation updates (Holger Veit, Joe Moss).
-394. Fix xset/Imakefile for OS/2 (Holger Veit).
-393. Don't use the index/rindex macros with arguments for non-ANSI compilers.
-392. Uncomment xf86cleanpci() in vga.c.
-
-XFree86 3.1.2Ch (22 February 1996)
-391. Fix xset linking for Linux a.out (Harald Koenig).
-390. Disallow interlaced modes with the SiS driver (Alan Hourihane).
-389. Change SCO interface to allow for a 128K VGA aperture
- (Marc Aurele La France).
-388. Add support to the ati driver for Mach64 cards with a base address
- other than 0x2EC (Marc Aurele La France).
-387. Introduce a new XF86Config mode option called HSkew which sets bits
- 0x60 of CRTC[3] (Marc Aurele La France).
-386. Fix colour map problem on VGA Wonder V3 boards (Randall Hopper,
- Marc Aurele La France).
-385. Allow multiple "-verbose" command line flags to increase the verbosity
- level (Marc Aurele La France).
-384. Modify xf86scanpci() so that it will be able to deal with multi-headed
- servers in the future, add an xf86cleanpci() function to allow
- the PCI data to be freed after use, allow xf86scanpci() to be called
- more than once, and fix a problem with it not always returning with I/O
- permissions disabled (Marc Aurele La France).
-383. SuperProbe updates for Mach64 and PCI (Marc Aurele La France).
-382. OS/2 updates (Holger Veit).
-381. Keyboard/mouse parameter changes with XFree86-Misc can now be disabled,
- and these are only allowable by default for local client connections
- (Joe Moss).
-380. Only check/change relevant parameters with XFree86-Misc (Joe Moss).
-379. Add new/better protocol error messages for XFree86-Misc (Joe Moss).
-378. Man page for the XFree86-Misc library functions (Joe Moss).
-377. Add detection of the SiS 86C202 and 86C205 to SuperProbe and the SiS
- driver (Alan Hourihane).
-
-XFree86 3.1.2Cg (20 February 1996)
-376. Modify the handling of the XF86Config xkb options to allow the
- -xkbmap server flag to work (it overrides what is in the XF86Config).
- The XKBKeyMap XF86Config setting will now work too, and it overrides
- any other XKB settings given there.
-375. Fix for parts of a VT switch sequence getting passed to clients when
- XKB is enabled.
-374. NetBSD.cf update (Matthieu Herrb).
-373. Fix various cases of nested comment delimiters (Thomas E. Dickey).
-372. Config additions/updates for CLIX and for HP with GCC2 (Thomas E. Dickey).
-371. Fix RecolorCursor for HW cursor in AGX, Mach32, Mach64, P9000, I128,
- Cirrus, Ark and Trident server/drivers (untested).
-370. Fix xinit problem introduced in 3.1.2Cf.
-369. S3 dashed line fix, including an option "s3_968_dash_bug" to enable
- a workaround for a 968 bug. There is code to auto-detect this problem,
- so the option shouldn't need to be specified explicitly (Harald Koenig).
-368. Fix for RecolorCursor problem with S3 HW cursors. This problem is
- also present in other accel servers (Harald Koenig).
-367. Trident linear mode updates (Alan Hourihane).
-
-XFree86 3.1.2Cf (19 February 1996)
-366. S3 update for ELSA Winner1000 cards with the AT&T 20C409 Ramdac
- (Dirk Hohndel).
-365. PC98 updates, including a new xkbcomp/compat/pc98 description
- (X98 core team).
-364. SiS driver updated (Alan Hourihane).
-363. Work around an S3 968 dashed line bug (Harald Koenig).
-362. OS/2 updates, including a new OS/2 README (Holger Veit and
- Sebastien Marineau).
-361. ISC documentation updates (Michael Rohleder).
-360. NetBSD documentation updates (Matthieu Herrb).
-359. Trident driver updates (Alan Hourihane).
-
-XFree86 3.1.2Ce (18 February 1996)
-358. PC98 documentation (X98 core team).
-357. Fix a bug in the handling of the Wacom eraser as a third button
- (Frederic Lepied).
-356. Enable the Joystick driver for NetBSD (using a port of the FreeBSD
- joystick driver to NetBSD) (Matthieu Herrb).
-355. Allow XInput dynamic loading for NetBSD (Matthieu Herrb).
-354. Use the FreeBSD way of making dependencies in .depend files for NetBSD
- (Matthieu Herrb).
-353. Change the XInput Dynamic module loading to allow a ModulePath to
- be specified in the Files section of the XF86Config, and move the
- list of loadable modules into a Modules section in XF86Config
- (Frederic Lepied).
-352. Fix some glitches in xterm's colour behaviour (Thomas E. Dickey).
-351. Modify the xf86config utility to allow XKB information to be entered
- (Holger Veit).
-350. Fix Xserver prototyping problems (Thomas E. Dickey).
-349. Modify PCI code for PC98 (X98 core team).
-348. Add PC98 server for WSN-A2F (X98 core team).
-347. XKB description files for a Japanese 106 key keyboard (Takefumi Tsukada).
-346. Probe the VGA sis driver before the the cl64xx to avoid mis-probing
- (Alan Hourihane).
-345. Modify XF86VidModeGetAllModeLines() to allocate memory in one chunk
- so it can be freed later by the client (Joe Moss).
-344. Fix incorrect handling of S3RefClock when specified in the XF86Config
- (Harald Koenig).
-343. Clean up linear mode setup in the Trident Driver (Alan Hourihane).
-342. Disable PCI burst mode by default for the Trident driver
- (Alan Hourihane).
-341. Fix a problem restoring 16bpp modes with the Mach32 server on OS/2
- (Sebastien Marineau).
-340. Fix a problem that was preventing the tgui driver from working on
- some TGUI9440 cards (Alan Hourihane).
-
-XFree86 3.1.2Cd (12 February 1996)
-339. Fix library ordering for Linux a.out for xset, xdpyinfo and xvidtune
- (Harald Koenig).
-338. Add a version check to the XInput dynamic modules (Frederic Lepied).
-337. Fix keyboard LED initialisation. This usually shows up as a problem
- on *BSD where the NumLock LED is on when the server is started.
-336. Update Linux DLL jump files (Harald Koenig).
-335. PC98 updates, including XF98Conf, and the XKB nec geometry description
- (X98 core team).
-334. Automatically treat the PS/2 protocol the same as the busmouse protocol
- on NetBSD (since that's how NetBSD's PS/2 driver works).
-333. Add XInput dynamic loading support for FreeBSD 2.x.
-332. Fix problem with XInput on non-Linux/ELF systems.
-331. xterm fixes, including updates to allow building on R5
- (Thomas E. Dickey).
-330. Add to the docs a file containing a list of PC98 cards that are
- supported (X98 core team).
-329. Documentation updates for xterm (Thomas E. Dickey).
-328. Disable the TGUI HW cursor by default (Alan Hourihane).
-327. Add PCI support to SuperProbe (Alan Hourihane).
-
-XFree86 3.1.2Cc (10 February 1996)
-326. Merge in final form of R6.1.
-
-XFree86 3.1.2Cb (9 February 1996)
-325. XC fix-trackers to seq-4114 (mostly XKB).
-324. Xlib prototyping improvements/fixes (Thomas E. Dickey).
-323. OS/2 updates (Holger Veit and Sebastien Marineau).
-322. Allow the eraser button of a wacom stylus to act as a third button
- if the WacomEraser device isn't enabled (Frederic Lepied).
-321. Allow XInput device support to be dynamically loaded. This is for
- Linux only so far (Frederic Lepied).
-320. Major updates to the ati driver, including support for the newer
- Mach64 chips and clocks, preliminary support or pre- VGAWonder V3
- adapters and generic VGA. The default chipset name has been changed
- back to "ati" from "vgawonder" (Marc Aurele La France).
-319. Properly implement xf86DisableIOPrivs and xf86Disable/EnableInterrupts
- for Linux (Marc Aurele La France).
-318. ATI doc updates (Marc Aurele La France).
-317. Remove ati.test.c, and move the functionality into the ati driver
- (Marc Aurele La France).
-316. Remove the "undoc_clocks" option (Marc Aurele La France).
-315. Make all I/O ports in compiler.h unsigned short, and all values
- unsigned char/short/int (Marc Aurele La France).
-314. Updates Mach64 probing for SuperProbe (Marc Aurele La France).
-313. Make the Linux ELF/a.out default build the same as the system default
- (Marc Aurele La France).
-312. Delete unneeded cmd/sh files in xfree98/vga256 (X98 core team).
-311. Fix problems with XF98_WABS (X98 core team).
-310. update xfree98/etc/Imakefile, and remove the *.sed files and their
- related imake rules (X98 core team).
-309. XF98_WABEP server added (for Melco WAB-EP) (X98 core team).
-308. Trident driver updates including some clock probing fixes
- (Alan Hourihane).
-307. Fix 2MB Trio64 display error problem due to incorrect parameter
- calculation (Harald Koenig).
-
-XFree86 3.1.2Ca (5 February 1996)
-306. Improve S3 Diamond BIOS detection.
-305. XC fix-trackers to seq-4104 (mostly a new XKB snapshot).
-304. Don't include the compaq driver by default -- it is broken.
-
-XFree86 3.1.2C (31 January 1996)
-303. Allow the mouse parameters (except the device) to be changed with
- the XFree86-Misc extension. This causes a close/reopen of the the
- device (Joe Moss).
-302. Fix problem introduced with the server lock code which causes a delay
- at startup.
-301. Add some checking for the mouse baud rate given in the XF86Config
- (Joe Moss).
-300. Fix for the bright left border problem with some Trio64V+ cards
- (Harald Koenig).
-299. PC98 XKB support files (Kaleb Keithley, Toyonori Fujiura).
-298. Update German XKB symbols (Thomas Mueller).
-
-XFree86 3.1.2Bo (30 January 1996)
-297. Updates for XF98Conf.cpp (Takefumi Tsukada).
-296. Add an XF86Config option for disabling XKB (Kaleb Keithley).
-295. Further OS/2 support updates, including a working X server
- (Sebastien Marineau and Holger Veit).
-294. Documentation update for PC98 (Takefumi Tsukada).
-293. Improved prototyping for Xlib.h (Thomas E. Dickey).
-292. xterm updates, including mods to allow it to be built with X11R5
- (Thomas E. Dickey).
-291. Some XFree86-Misc extension updates (Joe Moss).
-290. GlidePoint updates (Jean-Christophe Hugly).
-289. Add XInput knowledge to xdpyinfo, and update the output format of
- xsetpointer (Frederic Lepied).
-288. NetBSD updates for scanpci now that console.h isn't included any more
- (Matthieu Herrb).
-287. XC fix-trackers to seq-4086 (xsm updates).
-286. xkb symbol addition for European-style keyboards (Kaleb Keithley).
-285. Possible fix for security problem related to the X server's lock files.
-
-XFree86 3.1.2Bn (28 January 1996)
-284. Fix reporting of the ATI68860 Rev C Ramdac with the Mach64 server.
-283. Support for ALPS GlidePoint. A tap on the pad is treated as a fourth
- button (Jean-Christophe Hugly).
-282. Improved XKB support for XFree86 servers (Kaleb Keithley).
-281. Prevent mode switching and VT switching when DGA is active (Jon Tombs).
-280. Don't include for syscons with NetBSD by default.
-279. NetBSD doc updates (Matthieu Herrb).
-278. XFree86-Misc extension updates, including more sanity checking (Joe Moss).
-277. Fix some length calculations in libXxf86vm (Joe Moss).
-
-XFree86 3.1.2Bm (26 January 1996)
-276. Remove (for now) the vertical retrace wait in the S3 SetViewPort.
-275. Updates TGUI support for SuperProbe (Alan Hourihane).
-274. TGUI driver updates (Alan Hourihane).
-273. Major updates to OS/2 support (Holger Veit).
-272. Update xdpyinfo for the latest XFree86-Misc changes, and update xset
- to allow the keyboard repeat parameters to be changed (Joe Moss).
-271. Add functions to the XFree86-Misc extension to allow getting and
- setting mouse and keyboard configuration (Joe Moss).
-270. Remove the low ICS5342 clock limit (Harald Koenig).
-269. Add an "XF98Config.cpp" from which a sample config file suitable for
- the X98 servers is generated (X98 core team).
-268. Update Imakefiles under hw/xfree98 (X98 core team).
-267. Fix for make dependency problem with BSD make and the XFree86 drivers
- subdirectories (Matthieu Herrb).
-266. X Consortium fix-trackers to seq-4084 (mostly XKB and doc updates).
-265. Allow the XInput debug level to be set from the XF86Config
- (Frederic Lepied).
-
-XFree86 3.1.2Bl (21 January 1996)
-264. Fix xterm IM problem if *inputMethod == "" (Kaleb Keithley).
-263. Xvfb fix for systems that have mmap, but not the MS_ASYNC flag for
- msync().
-262. XC fix-trackers to seq-4060 (some XKB and config updates).
-261. 6-bit/rgb fix for the I128 server (Robin Cutshaw).
-260. Update hw/xfree98 Imakefiles (Takefumi Tsukada).
-259. Add a GetAllModeLines function to the VidMode extension, and modify
- xdpyinfo to use it (Joe Moss).
-
-XFree86 3.1.2Bk (17 January 1996)
-258. Don't allow DGA operations which affect the server when it isn't on
- the active screen.
-257. Have XFree86-Misc report the power saver times in seconds rather
- than milliseconds (to be consistent with XGetScreenSaver).
-256. Modify xset to allow setting/viewing the power saver parameters via
- the XFree86-Misc extension.
-255. Modify the VidMode extension to disallow both mode switches and
- the locking/unlocking of mode switching when DontZoom has been set
- in the XF86Config.
-254. Only allow the DGA extension to accept local connections.
-253. Fix Home/End key support in xterm (Thomas Mueller).
-252. Add support for VT200 compatible cursor on/off to xterm (Thomas Mueller).
-251. Add support for the XFree86-Misc extension to xdpyinfo (Joe Moss).
-250. VidMode/xvidtune updates (Kaleb Keithley).
-249. XC fix-trackers to seq-4055 (mostly XKB fixes).
-248. Fix link ordering of new libraries (Thomas Mueller).
-247. Add some missing XKB #defines (Thomas Mueller).
-246. Fix typo in include/extensions/Imakefile (Thomas Mueller).
-
-XFree86 3.1.2Bj (16 January 1996)
-245. Remove the XExExt library, and replace it with individual libraries
- for each extension.
-244. Remove the GetSaver/SetSaver functions from the VidMode extension
- and add them to a new extension: XFree86-Misc.
-243. Cleanup VidMode extension code -- removing "vgahelp" references
- (Kaleb Keithley).
-242. Allow the write functions of the VidMode extension to be disabled
- for non-local clients (default), and all clients (Kaleb Keithley).
-241. XC fix-trackers to seq-4052 (new XKB snapshot).
-240. README.S3 updates (Paul Gortmaker).
-239. Do framebuffer address scan for all VLB Trio64 cards, not just those
- with > 1MB.
-238. Fix typo in trident driver (Alan Hourihane).
-237. Modify the I128 server to use xf86scanpci() rather than its own PCI
- probe (which didn't work for PCI config type 1 boards) (Robin Cutshaw).
-
-XFree86 3.1.2Bi (14 January 1996)
-236. Enable dynamic allocation of XInput devices to allow for multiple
- instances of the same device type. The Joystick2 device has been
- removed (Frederic Lepied).
-235. Fix typo in a recent xconsole fix (Michael Rohleder).
-234. Add POSIX build config option for ISC, and change the Vendor name to IUS
- (Interactive Unix System) (Michael Rohleder).
-233. Disable linear mode by default for non-PCI Trident cards (Alan Hourihane).
-232. Fix some compiler warnings in various parts of the source (Fred Appelman).
-231. Fix xterm compile problem with -DALLOWLOGGING (William Austin).
-230. Fix compile problem in resize for NetBSD (Matthieu Herrb).
-
-XFree86 3.1.2Bh (13 January 1996)
-229. Fix dga speed test problem when the bank size is less than 64k.
-228. Add DGA support to the Mach32 server (untested).
-227. Add SVGA-based servers for PC98 (Cirrus driver) (X98 core team).
-226. Update the Cirrus driver to use the vga PCI probe data (not tested).
-225. Include XC fix-trackers to seq-4035 (mostly fixes for Solaris 2.5
- build problems).
-224. Update xdpyinfo to print some info about XKB (Joe Moss).
-223. Fix(?) problem some people see with vertical lines / black screens
- with the Trident driver (Alan Hourihane).
-222. Update the Trident and SiS drivers to use the vga PCI probe data
- (Alan Hourihane).
-221. Define SetTtyGroup for Linux (Kevin Martin).
-
-XFree86 3.1.2Bg (12 January 1996)
-220. Fix cursor colour for TGUI 9660/9680 (Alan Hourihane).
-219. LynxOS fix for xterm's resize (Thomas Mueller).
-218. Write beta marker file as the user's real uid rather than as root.
-217. Fix DGA for SVGA cards using banked memory, and enable it for most
- SVGA drivers.
-216. Add a PCI probe to the VGA servers. The happens before the chipset
- probes, and may be disabled with the "no_pci_probe" option.
-215. Add 16bpp support for Trident 8900D, and some cleanups (Alan Hourihane).
-214. Add install.linkkit target to the top level Makefile.
-
-XFree86 3.1.2Bf (11 January 1996)
-213. Xinput updates, including: improved error handling, "Screen" option
- renamed to "ScreenNo" for consistency, new config options for the
- Wacom tablet, update to the Linux joystick support, and a fix
- for xsetmode (Frederic Lepied and Patrick Lecoanet).
-212. Fix core dump when exiting an X server started with XKB enabled.
-211. Update accelerated servers' use of miZeroClipLine().
-210. Include XC fix-trackers to seq-4031 (includes update of RECORD spec
- to version 1.13, some Xlib and xterm fixes, and preliminary ISO Latin-2
- compose support).
-209. Add code to detect the Trio32 BITBLT bug, and automatically enable
- the workaround when it is detected (Harald Koenig).
-208. Final changes for POSIXized ISC build (Michael Rohleder).
-207. Define NO_READAHEAD for ISC in xconsole (Michael Rohleder).
-206. Fix(?) Xalloca.h problem on Solaris 2.5.
-205. Fix missing XFreeDGA #ifdef in change 187 (Kaleb Keithley).
-
-XFree86 3.1.2Be (10 January 1996)
-204. Fix build with BuildServersOnly set to YES (Takefumi Tsukada).
-203. Major xterm cleanup (including prototyping), and fixes to the colour
- code (Thomas E. Dickey).
-202. PC98 EGC (16 colour) server added (X98 core team).
-201. Updates for LynxOS AT, including a workaround in the xkb clients
- for the fact that stdin/out/err isn't a valid initialiser
- (Thomas Mueller).
-200. Modify the dga test program to use GetTimeInMillis() (Tiago Gons).
-199. Fix merge problem in xconsole (Michael Rohleder).
-198. Initial changes to POSIXize the ISC build (Michael Rohleder).
-197. Fix a clash of symbols between libX11 and the X server's libxkb which
- shows up when building Xnest on ISC (Michael Rohleder).
-196. Fix XKB merge problem in xf86Events.c (Kaleb Keithley).
-195. Complete the logging code in xalloc (Pascal Haible).
-
-XFree86 3.1.2Bd (8 January 1996)
-194. Fix a build problem when BuildServersOnly is set to YES.
-193. Clean up the InstallManPageLong() run for NetBSD (Takefumi Tsukada).
-192. Modify ForceSubdirs() rule for NetBSD and FreeBSD so that it works
- with GNU make (Matthieu Herrb).
-191. Fix a Ti3026 clock problem that appears on SPEA 968+Ti3026 cards
- (Harald Koenig).
-190. Fix TGUI 9440 HW cursor problems (Alan Hourihane).
-189. Fix problems with the TGUI 9660/9680 support (Alan Hourihane).
-188. Fix 256-colour interlace problem with TGUI cards (Alan Hourihane).
-187. Fix for text mode restore problem when the DGA extension has been
- used with the SVGA server (Alan Hourihane).
-186. Set the Block I/O bit in the PCI userconfig register for Mach64 cards
- that report an I/O address range.
-
-XFree86 3.1.2Bc (7 January 1996)
-185. Update lnxLib.rules for new GNU elf tools which look for libname.so
- rather than libname.so.rev at link time (Helmut Geyer).
-184. Set default ProjectRoot back to /usr/X11R6.
-183. Include fix-trackers to seq-4024 (includes more a more recent XKB snap,
- some record updates, and some config and Xlib updates).
-182. Fix some merge problems.
-
-XFree86 3.1.2Bb (6 January 1996)
-181. Merge in X11R6.1 beta.
-180. Fix problems with the ARK/ICS5342 clock programming (Leon Bottou).
-179. Fix problem with Mach64 CT cards that incorrectly appear to be using
- block I/O.
-
-XFree86 3.1.2Ba (3 January 1996)
-178. Fix support for the old ET4000 in the et4000 driver.
-177. Fix problem with the SIS driver that can cause a server crash
- (Alan Hourihane).
-176. Modify linux config for building a.out binaries on Slackware 3.0.
-175. Fix Linux Joystick compilation problems.
-174. Doc updates.
-
-XFree86 3.1.2B (28 December 1995)
-173. Fix a problem with the ARK/ICS5342 clock programming (don't know if this
- completely fixes the clock programming problems).
-172. Don't do PCI probe in S3 server for PC98 (Takefumi Tsukada).
-171. Fix bank select problem with S3 911 cards when using DGA.
-
-XFree86 3.1.2Af (26 December 1995)
-170. Added README.DGA which gives a brief outline of the API for the DGA
- extension. This should be converted to man pages.
-169. Added a simple standalone program (joycal) to get the Joystick
- calibration coordinates.
-168. Modify the Joystick code to auto-detect the centre values at startup
- if they are not given the XF86Config (this assumes that the Joystick
- is centred when first enabled).
-167. Add XInput Joystick support for FreeBSD 2.x.
-166. Remove the strict membase checking for "orchid_p9000" in the P9000
- server so that the correct membase can be specified for some other
- types of P9000 cards which are not explicitly supported.
-165. Fix problem with the trident driver in the VGA16 server (Alan Hourihane).
-164. XF86Config(4/5) man page additions for the XInput section
- (Frederic Lepied).
-163. Update xfree98/Imakefile (Takefumi Tsukada).
-162. Remove the "no_ti3026_curs" option again.
-161. Updates for xdpyinfo's Imakefile and the Xinput code for ISC
- (Michael Rohleder).
-
-XFree86 3.1.2Ae (23 December 1995)
-160. A new document called QuickStart.doc which is a quick-start guide
- to XFree86 setup (Joe Moss).
-159. Add a PCI probe to the S3 server, and use the membase value reported
- when it is non-zero. This should help for some TrioV64+ cards.
-158. Move the DGA client-side helper functions into libXExExt.
-157. XInput support for XFree86. This includes device support for two
- Joysticks (Linux-only so far), Wacom tablet (Wacom IV protocol only),
- and Elographics touchscreen. Two utility programs are included.
- xsetpointer can be used to make an extended device the core pointer
- or to list the extended devices. xsetmode can be used to set a device
- in absolute or relative mode (Frederic Lepied and Patrick Lecoanet).
-156. Workaround for a hardware bug in some S3 Trio32 revisions which causes
- font corruption when using the font cache. This is currently enabled
- with the "trio32_fc_bug" Option (Harald Koenig).
-155. Logging support for the internal xalloc code (Pascal Haible).
-154. Fix the S3 server's detection of the Trio64V+.
-153. Fix problems building the PC98 code (Takefumi Tsukada).
-152. LynxOS support for the DGA extension (Thomas Mueller).
-151. Fix a problem were XListFonts() can return fewer font names than
- XListFontsWithInfo() (Manabe Takashi).
-150. Add knowledge of the XFree86-VidModeExtension, XFree86-DGA and LBX
- extensions to xdpyinfo (Joe Moss).
-149. Add a benchmark function to the dga test program. It is activated with
- the 'b' key (Koen Gadeyne).
-148. Change all servers to default to blackPixel = 0 and whitePixel = 1,
- and allow this default to be swapped with the -flipPixels server
- command line flag (Michael Rohleder).
-147. Restore the "no_ti3026_curs" option to the S3 server (Harald Koenig).
-146. Trident driver and documentation updates (Alan Hourihane).
-
-XFree86 3.1.2Ad (21 December 1995)
-145. Fix for incorrect usage of S3 PIX_TRANS writing (Takefumi Tsukada).
-144. PC98 support integrated into the main XFree86 source tree. The PC98
- code gets built under xc/programs/Xserver/hw/xfree98 (Takefumi Tsukada
- and the X98 team).
-
-XFree86 3.1.2Ac (17 December 1995)
-143. Modify the XDGA implementation in the server, and add support for it
- to the Mach64 server. Also, XDGA is now enabled for all OSs since there
- are now no OS-specific parts on the server side.
-142. Add "no_font_cache" and "no_pixmap_cache" options to allow the font
- cache and pixmap cache/expansion to be disabled in the S3 and Mach64
- servers.
-141. Fix positioning and shape of the Bt485 HW cursor for doublescan modes
- in the S3 server.
-140. Fix positioning of the HW cursor for interlaced and doublescan modes
- with the IBM RGB RAMDACs in the S3 server. The cursor shape still
- isn't correct though (Trent Piepho and R.E. Wolff).
-139. HW cursor support for the Trident 9660/9680 and 9430 -- not tested
- (Alan Hourihane).
-138. XFree86-DGA extension support for ISC SVR3 (Michael Rohleder).
-137. Fix for "XIOerror 11 (Resource temporarily unavailable)" errors while
- running xterm on ISC (Michael Rohleder).
-136. Major Trident driver updates, including HW cursor for 9440, and
- an option to use a set of fixed clocks instead of fully programmable
- clocks for the TGUI chips (Alan Hourihane).
-135. I128 updates (Robin Cutshaw).
-134. Mach64 support for ATI Extended VGA register location on PCI
- cards with block I/O (Kevin Martin).
-133. Clean up Mach64 software cursor support (Kevin Martin).
-132. "dac_8_bit" is now the default for supported RAMDACs in the Mach64
- server. 6-bit mode can be forced with the "dac_6_bit" option
- (Kevin Martin).
-131. Mach64 support for the ATI Graphics Pro Turbo 1600, including
- 1600x1200 mode support (Kevin Martin).
-130. Mach64 support for the IBM RGB514 RAMDAC (Kevin Martin).
-129. Mach64 support for the GX-F (GX rev 3) (Kevin Martin).
-128. Add new options "w32_interleave_on" and "w32_interleave_off" to
- the SVGA and W32 servers. They allow the desired mode to be
- forced for W32i and W32p cards (Dirk Hohndel).
-127. Full STG1703 support for W32 server (Dirk Hohndel).
-126. Fix some incorrect prototype ifdefs in xf86.h (Kaleb Keithley).
-125. Modify xterm to call XtSetLanguageProc() rather than setlocale()
- (Kaleb Keithley).
-124. Preliminary driver for the SIS 86C201 chipset (VGA2 and VGA16 only
- so far) (Alan Hourihane).
-123. Change the Mach64 aperture mapping to map the video memory and
- mmapped registers into two separate areas rather than mapping the
- entire 8MB aperture range.
-122. Use an 8MB aperture for all but ISA Mach64 cards since most of the
- newer Mach64 chips only support an 8MB aperture size.
-121. Fix typo in Mach64 server that was causing some RAMDACs to be incorrectly
- detected.
-120. Fix aperture address detection for VLB Mach64 cards.
-119. In the Mach64 server, set RAMDAC to 20C408 if the 20C408 clock type
- is detected, and same for STG1703.
-118. SIGWINCH support for xterm on ISC 4.x (Geoff Steckel).
-
-XFree86 3.1.2Ab (9 December 1995)
-117. FreeBSD support for the DGA extension.
-116. Split the DGA code out into a separate extension (called XFree86-DGA)
- (Kaleb Keithley).
-115. Fix some compiler warnings when compiling on LynxOS (Thomas Mueller).
-114. Fix some byte swapping problems in XFree86-VidModeExtension
- (Thomas Mueller).
-113. Add preliminary STG1703 support to the W32 server. No clock
- programming and no pixmux yet (Dirk Hohndel).
-112. Add new options "pci_burst_on" and "pci_burst_off" to SVGA and
- W32 server. They will allow to solve display problems on many
- ET4000/W32p based cards (Dirk Hohndel).
-111. Add new clock selection scheme to SVGA and W32 server, so that
- 32 clocks are used. The first 16 are the same as before, the
- second 16 use CS3 (Dirk Hohndel and Koen Gadeyne).
-110. Add STG1703 detection to SuperProbe for ET4000/W32 based cards (Dirk
- Hohndel).
-109. Fix extension version checking in xvidtune.
-108. Modify xterm to call XSupportsLocale() before initialising I18N
- support (William Volkman).
-107. Fix S3 support for clocks up to 135MHz in 8 bpp for S3 868 cards
- with ATT20C409 Gendac (e.g., Elsa Winner 1000AVI) (Dirk Hohndel).
-106. Fix S3 HW cursor handling for doublescan modes (Jon Tombs).
-105. Config and doc updates for NetBSD 1.1 (Matthieu Herrb).
-104. Preliminary (unaccelerated) I128 server code (Robin Cutshaw).
-103. Attempt to fix problem of Mach64 server mis-detecting the CH8398
- RAMDAC.
-102. Modify the Mach64 server to use the membase address it reads from
- the configuration registers.
-101. Fix cursor colour problem at 16, 32bpp with the Mach64 server.
-100. Support for the Mach64 CT.
-
-XFree86 3.1.2Aa (2 December 1995)
- 99. Fix for xterm behaving badly when TERM is set to "vt100" (Joerg Wunsch).
- 98. XDGA (direct graphics access) support added via the XFree86 VidMode
- extension. This is primarily intended for games support. Currently
- it is implemented only for Linux, and for the S3 and Cirrus drivers
- (Jon Tombs).
- 97. Fixes for Ti3026 loop clock calculation code (Dirk Hohndel).
- 96. Detection and preliminary support for the Elsa Winner2000PRO/X-2,4 Rev.G
- which has a S3-968, Ti3026, and ICS9161A clock chip. Clock doubling
- doesn't work yet (Dirk Hohndel).
- 95. Mach64 code cleanups and documentation updates (Kevin Martin).
- 94. Fix Mach64 pixmap cache bug which resulted in xcalloc being called
- with a negative size (Kevin Martin).
- 93. The state of the AT&T20C408 is now saved/restored by the Mach64 server.
- This should fix the dim screen problem when exiting from the server
- (Kevin Martin).
- 92. ClockChip and Ramdac can now be specified in the XF86Config for the
- Mach64 server (Kevin Martin).
- 91. Mach64 server ATI 18818/ICS 2595 clock chip programming now works
- (Kevin Martin).
- 90. Mach64 server now automatically programs a programmable clock chip
- when present. This can be overridden with the "no_program_clocks"
- Option. The "program_clocks" option has been removed (Kevin Martin).
- 89. Initial changes to allow for integration of the I128 server
- (Robin Cutshaw).
- 88. Avoid defining __USLC__ for MP/RAS in compiler.h (Kaleb Keithley).
- 87. If the server can't find an XF86Config file, print out the files it
- tried to open (Joe Moss).
- 86. Fix(?) display centering for the Cirrus 754x.
- 85. Fix text mode clock problem in ET4000/W32 server (Koen Gadeyne).
- 84. Remove the "-noscale" flag from the Xserver and xfs since it has
- been obsoleted by the ":unscaled" fontpath attribute.
- 83. Remove the RepeatedMiddle mouse option because it doesn't work
- properly (Jon Tombs).
- 82. Remove some casts in xf86MouseProtocol() to work around in the
- Metaware compiler/NCR assembler (Kaleb Keithley).
- 81. When the X server exits due to an unrecognised command-line option,
- print out the offending option (Joe Moss).
- 80. Remove '-lc_s' from ExtraLibraries for ISC (Michael Rohleder).
- 79. Add code to SuperProbe and the Cirrus driver to recognise the
- CL-GD7542 (and a guess for the CL-GD7541).
- 78. Fix RAMDAC probe problem introduced into the S3 server in 3.1.2e
- (Joe Moss).
-
-XFree86 3.1.2A (19 November 1995)
- 77. Added a Beta Report template form.
- 76. Update xf86config for some of the new Ramdacs.
- 75. Allow 'Ramdac "ibm_rgb526" to be recognised by the S3 server. It
- then treats it as an RGB524.
- 74. Modify the beta startup message usage so that it gets printed once
- for each different server started.
- 73. Fix for AGX-010 clock probing (Henry Worth).
-
-XFree86 3.1.2e (16 November 1995)
- 72. Updates to the Cards database.
- 71. S3 868 + AT&T 20C409 support (8/15/16/24bpp) without pixmux, and
- S3-868 + AT&T 20C499 support (untested) (8/15/16/24bpp, no pixmux).
- Pixmux support is enabled, but not functional (Dirk Hohndel).
- 70. Update SuperProbe to recognise AT&T 20C409 and AT&T 20C499 RAMDACs
- (Dirk Hohndel).
- 69. Allow attributes to be appended to elements of a font path. The
- attributes are introduced by a ':' character, and multiple attributes
- are separated by a ':'. Currently the attribute "unscaled" is
- supported for bitmap fonts, and this prevents them from being scaled.
- 68. Trident driver cleanups, and fixes for interlacing (Alan Hourihane).
- 67. LynxOS updates for using MetroLink Motif (Thomas Mueller).
- 66. Preliminary AT&T 20C409 support for the S3 server (not functional
- yet) (Dirk Hohndel).
- 65. W32 updates to Xserver and SuperProbe (Dirk Hohndel and Koen Gadeyne).
-
-XFree86 3.1.2d (12 November 1995)
- 64. Fix a typo in the iso8859-1 Compose file.
- 63. Add a '-noscale' flag to the Xserver and xfs to allow scaling of
- bitmap fonts to be disabled. The keyword DontScaleBitmapFonts
- in the ServerFlags section of the XF86Config file has the same affect.
- 62. Fix problem that prevents bitmap fonts from being scaled after
- running something like 'xset fp rehash'.
- 61. Add a Release Date to the X server startup messages.
- 60. Add a "RELNOTES" document to describe changes in beta releases.
- 59. Fix panning for ARK2000PV chips with 2MB of memory (Leon Bottou).
- 58. Support for ICS5342 programmable clock in the ARK driver (Leon Bottou).
- 57. Major updates to the Oak driver, including more accelerated functions
- for the OTI087 (Jorge Delgado).
- 56. Option "program_clocks" added for the Mach64 server to allow
- arbitrary clocks to be programmed for most clock chips. This
- currently doesn't work with the ATI18818/ICS2595 chips (Kevin Martin).
- 55. Mach64 server support for the AT&T 20C408 (Kevin Martin).
- 54. Fix problem of two undisplayed pixels with the CL-GD7543
- (Thomas Zerucha).
- 53. Add support for three button operation with some dual protocol mice
- when they are in Microsoft-compatible mode. The keyword to enable
- this is 'RepeatedMiddle' (Jon Tombs).
- 52. Fix 3 button emulation problem introduced in item 48 (Thomas Mueller).
- 51. Add support for '-crt /dev/ttyXX' command line option for the X
- servers for SCO. This is for compatibility with the native SCO X
- servers (Didier Poirot).
-
-XFree86 3.1.2c (5 November 1995)
- 50. Add expiry date and startup message for beta versions.
- 49. Fix problem using a LinkKit generated with BuildLBX set to YES.
- 48. Allow a real middle button event to be passed when 3 button mouse
- emulation is enabled (Thomas Wu).
- 47. Fix panning and some initial clock selection problems for TGUI9440
- cards (Alan Hourihane).
- 46. Support for the Cirrus CL-GD7543 (Thomas Zerucha).
- 45. Fix for instability problems with Cirrus programmable clock
- (Koen Gadeyne).
- 44. Fix memory overwrite problem in xterm which could be a security
- problem.
- 43. Merge in the X Consortium's public patch 13.
- 42. Define X_LOCALE for LynxOS for compatibility with Metrolink's
- Motif package (Thomas Mueller).
- 41. Update SuperProbe to recognise the Cirrus CL-GD7543.
- 40. The Trident driver now automatically selects the "tgui" clockchip
- when it detects a TGUI9440 (Alan Hourihane).
- 39. Remove the dependency on -lthread for UnixWare 2.x, while still
- allowing full MT support. This is done by adding a threads stub
- library with weak symbols (David Wexelblat).
-
-XFree86 3.1.2b (22 October 1995)
- 38. Updated Japanese docs, including SGML versions suitable for formatting
- with jlinuxdoc-sgml. These docs use EUC encoding (Kazuyuki Okamoto).
- 37. Preliminary support for the Trident TGUI9440 (Alan Hourihane).
- 36. Add an "AllowNullPasswd" resource to xdm to make it possible for xdm
- to login to accounts with a null password. This is set to "False"
- by default (Joerg Wunsch).
- 35. Use dynamically allocated strings in xrdb to avoid overruns that
- can occur otherwise (Joerg Wunsch).
- 34. Add ELSA Winner 2000PRO/X-8 to the S3 ELSA probe code (Dirk Hohndel).
- 33. Fix S3 probe of IBM RGB RAMDACs incorrectly identifying an RGB528
- or RGB528A as an RGB524 (Dirk Hohndel).
- 32. Fix incorrect memory probe for S3 964/968 (Dirk Hohndel).
- 31. Prelim pixmux support for ICS5341 RAMDAC in W32 server (Dirk Hohndel).
- 30. Support for ICS5341 programmable clock in W32 server (Dirk Hohndel).
- 29. Add RFC1700-conformant charset names for ISO-8859 locales to
- locale.alias.
- 28. Fix LynxOS video mapping problem that shows up when the "fb_debug"
- option is set in the S3 server (Thomas Mueller).
- 27. Fix reference to undeclared variable in os/xalloc.c for OSs which
- don't have MMAP_ANON or MMAP_DEV_ZERO defined (Thomas Mueller).
- 26. Fix W32 server core dump on LynxOS when run with '-probeonly'
- and no Clocks line in the XF86Config file (Thomas Mueller).
- 25. Fix reference to uninitialised string in Hercules mono driver
- (Paul Gortmaker).
-
-XFree86 3.1.2a (23 September 1995)
- 24. Fix HW cursor masks in Mach32 and Mach64 servers.
- 23. Add detection of C&T 65548 to SuperProbe.
- 22. Fix snow problems with WD90C24 when for clocks higher than MCLK
- (Brad Bosch).
- 21. Add XNLS support for KOI8-R (Andrey Chernov).
- 20. Fix problem with IBM ramdac and clockchip handling in xf86config.
- 19. Change XF86Config parsing to ignore '_' characters in keywords, and
- to ignore '_', ' ', and '\t' characters when comparing strings with
- StrCaseCmp() (ie, all strings except paths, Device/Monitor identifiers
- and Mode names).
- 18. Reduce nonMuxMaxClock to 80MHz (from 100MHz) for S3 864 with
- ATT498-compatible RAMDACs because it was too high for some cards.
- 17. Fix problem installing xterm on SunOS 4.x introduced in 3.1.2.
- 16. Set -fno-strength-reduce with -O2 for gcc2 to avoid a compiler bug.
- 15. Fix xvidtune/XF86VidMode problem when the Monitor Vendor and/or Model
- are not specified in the XF86Config file.
- 14. Colour support for xterm (David Wexelblat).
- 13. Fix usage of $LINES and $COLUMNS by xterm on SVR4 (David Wexelblat).
- 12. Fix xconsole for Unixware 2.0 (David Wexelblat).
- 11. Fix optimisation problem with inline asm on Unixware 2.0
- (David Wexelblat).
- 10. Improve subdir/lib dependence on systems using BSD 4.4. make
- (Matthieu Herrb)
- 9. Allow the Xserver to accept InvertVCLK, EarlySC and BlankDelay. It
- previously expected Invert_VCLK, Early_SC and Blank_Delay.
- 8. Fix problem selecting a StaticGray visual with the VGA16 server
- (Olivier De Smet).
- 7. Fix compile problem on FreeBSD 1.1.5 (David Bremner).
- 6. Change index and rindex macros in Xos.h when X_NOT_STDC_ENV is not
- defined.
- 5. Fix(?) alloca declaration in Xtos.h for Solaris 2.5.
- 4. Fix dependencies for 'make includes' to ensure that auto-generated
- headers exist before linking them to xc/X11 (David McCullough).
- 3. Change default InvertVCLK setting for the Hercules Terminator 64 Pro
- (Harald Koenig).
- 2. Update for lynx.cf (Thomas Mueller).
- 1. README updates.
-
-XFree86 3.1.2 (24 July 1995)
-235. Fix(?) scanpci compile problem with gcc on Solaris.
-234. Documentation updates.
-
-XFree86 3.1.1Z (22 July 1995)
-233. Code Freeze for 3.1.2.
-232. Fix an imake config problem on non-XFree86 platforms.
-231. xman update for Solaris 2.5 (William Austin).
-230. Cyrillic fonts with KOI8 encoding added (Cronyx Ltd, Serge Vakulenko,
- Andrey A. Chernov).
-229. Allow ndbm to be used for the rgb database on NetBSD for those
- who want it (Matthieu Herrb).
-228. Attempt to fix register corruption for Cirrus 5430/5434/5436 in
- SuperProbe.
-227. Remove -DUNIXCONN from the default SVR3 ConnectionFlags.
-226. Fix disappearing S3 hw cursor when switching modes with xvidtune
- (Harald Koenig).
-225. Sync-on-green support for the ELSA Winner 2000Pro/X (Harald Koenig).
-224. Add vendor options to S3 server (hercules, stb, genoa) (Harald Koenig).
-223. Documentation updates (Joe Moss, Harald Koenig, Matthieu Herrb).
-
-XFree86 3.1.1Dc (19 July 1995)
-222. Fix(?) server crash when the Cirrus driver auto-detects the linear
- fb address for PCI cards.
-221. Support for 964+IBM (Hercules Terminator 64) (Harald Koenig).
-220. Disable >8bpp for S3 911 and 924 because it won't work.
-219. Fix some auto-apply problems in xvidtune, and added a restore hot-key "R".
-
-XFree86 3.1.1Db (17 July 1995)
-218. Documentation updates.
-217. xvidtune updates.
-216. S3 parameter updates for STB 968 card, and update to the Trio64V
- probe (Harald Koenig).
-
-XFree86 3.1.1Da (16 July 1995)
-215. Replace xf86pci.c with the real scanpci.c (Robin Cutshaw).
-214. Updates to the code for the additional S3 mode parameters, including
- better default settings (Harald Koenig).
-
-XFree86 3.1.1D (15 July 1995)
-213. xterm fix for crash when inputMethod is set to kinput2 (Manabe Keishi).
-212. Code to detect the AT&T20C490, and Sierra 1148[234579] ramdacs
- (Joe Moss).
-211. Update the VidMode extension to handle extra mode-specific parameters,
- and update xvidtune for extra S3 parameters.
-210. Allow some S3 parameters to be set in the Display SubSection for
- individual modes.
-209. xf86config Cards database updates.
-208. Updates to README.WstDig for the 90C24 (Brad Bosch).
-207. Updates to LynxOS support, including support for version 2.2.1, and
- a README.LynxOS (Thomas Mueller).
-206. Support for the SC1148{2,3,4} ramdacs at 15bpp, and the SC1148{5,7,9}
- ramdacs at 15 and 16bpp in the S3 server (Joe Moss).
-205. Fix for problems with some WD90C24 TFT systems (Brad Bosch).
-
-XFree86 3.1.1Cd (12 July 1995)
-204. Allow for three verbosity levels for Xserver messages: -quiet, default,
- and -verbose (Marc Aurele La France).
-203. Make the LinkKit self-contained. Apart from Xnest, it no longer
- depends on the config files, headers, and utility programs being
- installed (Marc Aurele La France).
-202. Updates to xvidtune. The Show button now also sets the primary
- selection, better usage/error messages and exit codes, man page
- updates (Joe Moss).
-201. Updates for SCO -- mostly for lbx (David McCullough).
-200. Fix a cause for some S3 lockups (Harald Koenig).
-199. Updates/fixes and SVR4 support for new malloc code.
-
-XFree86 3.1.1Cc (8 July 1995)
-198. Merge in final form of XC fix-12.
-
-XFree86 3.1.1Cb (7 July 1995)
-197. Minor IBM RGB updates (Harald Koenig).
-196. MCLK detection for STG1703 (Harald Koenig).
-195. Add detection for new S3 Trio64V+ chip to the S3 server and
- SuperProbe (Harald Koenig).
-194. Fix some clashing option numbers (Harald Koenig).
-193. Preliminary STG1703 clock programming code.
-192. A new malloc for use by the Xserver. It is enabled by setting
- UseInternalMalloc to YES (Pascal Haible).
-191. Fix for threads lib problem on Unixware 2.0
-190. Support for the WD90C24 in the pvga1 driver (Bradley Bosch).
-
-XFree86 3.1.1Ca (5 July 1995)
-189. Don't enable HAS_MMAP for Xvfb on Linux (Marc Aurele La France).
-188. Code to detect the STG1703 RAMDAC in SuperProbe and the S3 server
- (Harald Koenig).
-187. A few AGX bug fixes (Henry Worth).
-186. More pre-fix-12 fix-trackers.
-
-XFree86 3.1.1C (3 July 1995)
-185. Manual page updates.
-184. Add extended power_saver support to the VGA and Mach64 servers.
- Suspend mode isn't currently supported by the VGA servers.
-183. Add entries for the SunFA_ dead accents to the iso8859-1 Compose file
- (Jon Tombs).
-182. Updates to IBM RGB52x in the S3 server, including fixing the
- 8bpp problem.
-181. Documentation updates (including a README.ark) (Harm Hanemaayer).
-180. Change the Mach64 server to ignore the Clocks line in the XF86Config
- unless the "no_bios_clocks" option is used (Kevin Martin).
-179. Fix font corruption with Mach64 server (seen when running Mosaic
- or Netscape) (Kevin Martin).
-178. Fixes for constant-metric fonts in AGX server (Henry Worth).
-
-XFree86 3.1.1Bi (2 July 1995)
-177. Improved "power_saver" for the S3 server, and modified XFree86-VidMode
- extension to allow its parameters to be set from a client.
-176. Fixes for AGX copyplane (Henry Worth).
-
-XFree86 3.1.1Bh (1 July 1995)
-175. Updates to AGX server. Includes reversing previous copyplane change,
- restoring the setting of membase for AGX chips, cleanup setting
- of the default planemask, and fixes to the agxIm routines + some
- speedups (Henry Worth).
-174. Some more pre-fix-12 fix-trackers.
-
-XFree86 3.1.1Bg (29 June 1995)
-173. Turn on "dac_8_bit" by default in the S3 server for RAMDACs that
- support it. Add "dac_6_bit" option to allow 6-bit mode to be selected.
- Also, complain when "dac_8_bit" is used for a RAMDAC that can't do it.
-172. Improve "power_saver" operation by adding a delay between turning off
- the video signal and the syncs (Bernhard Bender).
-171. Workaround for the NumLock modifier interfering with the xterm
- ctrl+btn menus.
-170. More pre-fix-12 fix-trackers. Mostly some libX11 and libXt fixes.
- Includes a workaround for the NumLock modifier interfering with
- Xaw pull-down menus.
-169. Preliminary support for the IBM RGB52x ramdacs in the S3 server
- (Harald Koenig).
-
-XFree86 3.1.1Bf (27 June 1995)
-168. Another stab at the ET4000/W32p mouse droppings fix (Glenn Lai).
-167. Back out some LBX fixes that won't be in fix-12.
-
-XFree86 3.1.1Be (25 June 1995)
-166. Some documentation updates.
-165. Fix a few LinkKit problems.
-164. Fix LBXProxyOnly build.
-
-XFree86 3.1.1Bd (24 June 1995)
-163. Add a BuildLBXProxyOnly Imake config option to allow building lbxproxy
- from a self-contained cut-down source tree.
-162. vtname was too short in Linux OS-dep code (similar change for LynxOS
- and SCO too) (Pascal Haible).
-161. Change uses of malloc/free in Xserver to xalloc/xfree (Pascal Haible).
-160. AGX documentation updates (Henry Worth).
-159. Fixes for AGX font rendering, and copyplane (Henry Worth).
-158. AGX font cache flushed by screensaver (Henry Worth).
-157. AGX screensaver for >8bpp (Henry Worth).
-156. pre-fix-12 fix-tracker: improvement to the Xt translation manager
- performance when high order modifiers are assigned. Also, change
- the servers to use Mod3 for Mode_switch instead of Mod5 to further
- improve this.
-155. Fix some UseGnuMalloc config stuff, and set this to YES by default
- for FreeBSD.
-154. Fix some problems with the VGA2 server, including crashes in banked
- mode, and incorrectly switching banks when bitblting in non-banked
- mode.
-
-XFree86 3.1.1Bc (21 June 1995)
-153. Fix for ET4000/W32p cards -- don't change the PCI burst setting.
- This should fix mouse droppings and missing characters in text mode
- for some cards (Glenn Lai).
-152. Fix AGX font corruption problem (Henry Worth).
-151. Disable 32bpp in AGX server by default -- it is too unstable
- (Henry Worth).
-150. XGA clock updates in AGX server (Henry Worth).
-149. EISA XGA probing in AGX server (Henry Worth).
-148. Better scratchpad and font cache support for XGAs in AGX server
- (Henry Worth).
-147. Font glyph blting for non-cached fonts with AGX server (Henry Worth).
-146. AGX font cache fixes (Henry Worth).
-145. pre-fix-12 fix-trackers, including:
- - LBX fixes and additional functionality
- - some xtrans and fontlib fixes
- - smproxy and xsm fixes
-144. Fix sessreg (WTMP, LASTLOG, but no UTMP) for *BSD.
-143. Allow 'UseGnuMalloc' to work on all platforms.
-
-XFree86 3.1.1Bb (17 June 1995)
-142. Config updates to make LinkKit more self-contained
- (Marc Aurele La France).
-141. Fix some problems with blocking stderr on BSD/OS 2.0 (Hans Nasten).
-140. Add auto-apply mode to xvidtune, and flesh out the xvidtune man
- page (Joe Moss).
-139. AGX font cache bug fixes, and fix font clipping problem (Henry Worth).
-138. Some more pre-fix-12 fix-trackers, including:
- - Xaw - removal of undocumented/broken INTERNAL selection mechanism
- - Fix makestrs problem with -earlyR6bc.
-
-XFree86 3.1.1Ba (14 June 1995)
-137. Fix AGX problem with vertically overlapping fonts (Henry Worth).
-136. Fix some mono (VGA2) problems that can lead to a server crash.
-135. New "VGAbase" keyword for XF86Config -- currently used only by the
- AGX server (Henry Worth).
-134. Fixes for XGA autoconfig code in the AGX server (Henry Worth).
-133. Documentation updates (Dirk Hohndel).
-132. Change default FreeBSD version in FreeBSD.cf to 2.0.5.
-131. Add a LockModeSwitch function to the VidMode extension, and modify
- xvidtune to use it.
-130. Force VTotal to be odd for interlaced modes.
-129. Fix default Vsync/Hsync polarity setting (Marc Aurele La France).
-128. Trap a failed 'cd' in 'make Makefiles'. This prevents the Makefile
- in the . directory being removed (and other potential problems) when
- one of the SUBDIRS directories is missing.
-127. Include some XC fix-trackers intended for fix-12. Main changes include:
- - Using -Xa for SVR4 compiles, and changing '#if __STDC__' to
- '#ifdef __STDC__'
- - Overhall tty setup in xterm -- should work better for Solaris now.
- - Fix SVR4 ABI problems with libXt strings.
-126. Recognise 'Ramdac "generic"' in W32 server (Glenn Lai).
-
-XFree86 3.1.1B (10 June 1995)
-125. Fix problem with dacspeed line in files generated by xf86config.
-
-XFree86 3.1.1Ad (8 June 1995)
-124. Rename the vgahelp client to xvidtune.
-123. Rename "VGAHelp" extension to our registered name
- "XFree86-VidModeExtension", and update API to use the XF86VidMode
- prefix instead of the "XVGAHelp"/"VGAHelp" prefix.
-122. Undef i386 in Imake.cf for i386Architecture systems.
-121. Fix(?) WTMP problem with xterm on SYSV and Linux.
-120. Mach64 documentation updates (Kevin Martin).
-119. Power_saver support for the Mach64 server (Kevin Martin).
-118. Autodetect when block write mode should be disabled for the Mach64
- server. A "block_write" option has been added to override this
- (Kevin Martin).
-117. Use "dead_*" keysyms instead of the DEC "D*" keysyms for the dead keys
- in the Linux keyboard code and Compose file.
-116. Use our registered name for the ModeLock keysym.
-
-XFree86 3.1.1Ac (6 June 1995)
-115. Vgahelp client enhancements (Jon Tombs).
-114. Fix core dump in fslsfonts when no fontserver is specified
- (Matthieu Herrb).
-113. Fix W32 problem introduced with modified SaveScreen code.
-112. Update "M" parameter calculation for Trio boards (Harald Koenig).
-
-XFree86 3.1.1Ab (2 June 1995)
-111. Preliminary support for the Cirrus 5436 (Harm Hanemaayer).
-110. PCI base address detection for the Cirrus driver (Harm Hanemaayer).
-109. Fix problem linking AGX server with the LinkKit (Stephen Kump).
-108. Support for LynxOS (Thomas Mueller).
-107. Update LinkKit to make it self-contained regarding X headers
- (Marc Aurele La France).
-106. Realtek SVGA driver. It works with the RTG3106, and possibly the
- RTG3103 and RTG3105 (Peter Trattler).
-105. Enable the s3MCLK option for the S3 805i, and fix some bugs relating to
- s3MCLK (Harald Koenig).
-104. Fix XF86Config problem when monitor and screen sections are interleaved.
-
-XFree86 3.1.1Aa (1 June 1995)
-103. Fix SiteIConfigFiles settings for the LinkKit (Marc Aurele La France).
-102. Fix gccmakedep problem with .s files.
-101. Updates to BSDI docs (Hans Nasten).
-100. Updates to Linux ELF config/rules (Orest Zborowski).
- 99. Check for 868 before 864 in S3 server (Harald Koenig).
- 98. Add rule for compiling/installing scanpci.
-
-XFree86 3.1.1A (28 May 1995)
- 97. vgawonder driver updates (including fix for VGA2 driver with Mach64)
- (Marc Aurele La France).
- 97. Small TVP3026 fix (Harald Koenig).
- 95. Fix keyboard LEDs not being turned off now that the initial lock state
- is ignored.
-
-XFree86 3.1.1h (26 May 1995)
- 94. Support for parallel make (on SVR4) (Robin Cutshaw).
- 93. Don't initialise the state of the lock keys based on their state
- prior to server startup.
- 92. Untested changes in the AGX server for AGX-010 support (Henry Worth).
- 91. Tested support in the AGX server for the XGA-2 at 8bpp and 16bpp
- (Henry Worth).
- 90. 16bpp and 32bpp support for the AGX server (Henry Worth).
- 89. Additional accelerations for the P9000 server (Henrik Harmsen and
- Chris Mason).
- 88. Fix some gamma correction problems in the S3 server (Harald Koenig).
- 87. More 968/868 fixes, including code to recognise the newer ELSA cards
- (Harald Koenig).
- 86. Further VGA16 scrolling fix (Stuart Anderson).
- 85. Fix problems with some 1MB P9000 cards (Erik Nygren).
- 84. Swap the black and white pixel values in the SVGA server's default
- colour map. This fixes a white line problem with some older
- VGA Wonder boards (Marc Aurele La France).
- 83. Move sequencer resets into the driver's SaveScreen function
- (Marc Aurele La France).
- 82. vgawonder and ati_test updates (Marc Aurele La France).
- 81. Handle "crippled" Mach32 and Mach64 chips in SuperProbe and the
- vgawonder driver (Marc Aurele La France).
- 80. Distinguish between different types of Mach64 chips in SuperProbe and
- the vgawonder driver (Marc Aurele La France).
- 79. Add defines to xf86Version.h for each part of the XFree86
- version numbers (Marc Aurele La France).
- 78. LinkKit updates to make it self-contained (Marc Aurele La France).
- 77. Memleak support for NetBSD, and add UseMemLeak Imake config
- parameter to allow compiling Xserver/os with memleak (Matthieu Herrb).
- 76. Update NetBSD aperture driver to support -current loadable kernel
- modules (Matthieu Herrb).
- 75. Don't try to do clock doubling for 964 + Bt485 at 32bpp.
-
-XFree86 3.1.1g (7 May 1995)
- 74. i386 BSD support for the memleak utility (Jeffrey Hsu).
- 73. Fix a scrolling corruption problem with multiple regions in the VGA16
- server (Stuart Anderson).
- 72. Modify VGA16 server to provide 4 visuals which can be selected
- using the standard -cc flag (Stuart Anderson).
- 71. Changes to allow XDMCP broadcasts on some transports when using
- STREAMSCONN (Stuart Anderson).
- 70. Updates for building on NCR SVR4/MP-RAS 3.0 (Stuart Anderson).
- 69. Some updates for ISC (Michael Rohleder).
- 68. Fix FillRect problem that causes a server crash for most accel servers
- when running at 16/32bpp and X isn't on the active VC (Harald Koenig).
- 67. Fix mach32 inline asm problem (outsw) that shows up with recent gcc
- versions.
- 66. Modify xterm to find all ptys on recent FreeBSD (Satoshi Asami).
- 65. Work around S3 Trio "white line" problem by swapping the default black
- and white pixel values.
-
-XFree86 3.1.1f (24 April 1995)
- 64. Remove ComplexProgramTargetNoMan rule, and use NormalProgramTarget
- instead.
- 63. Fix cirrus MMIO problem introduced in 3.1.1e, and allow 135MHz clocks
- for a wider range of CL-GD5434 revisions (Harm Hanemaayer).
- 62. Update to S3 HW cursor fix (Harald Koenig).
- 61. Preliminary support for S3 866 and 868 boards (tested with the
- ELSA Winner 1000AVI) (Harald Koenig).
- 60. Fix a problem with virtual resolution calculation in the Mach32 and
- Mach64 servers (when none is given in the XF86Config file)
- (David Holland).
-
-XFree86 3.1.1e (10 April 1995)
- 59. Fix problems that can lead to S3 crash/lockup when using HW cursor
- (Harald Koenig).
- 58. S3 Trio updates (Harald Koenig).
- 57. Fix return value of QueryBestSize() for HW cursors.
- 56. Fix cirrus display error when scrolling without BitBLT engine
- (Harm Hanemaayer).
- 55. Sanity check to prevent cirrus crash with negative size rectangle
- fill (Harm Hanemaayer).
- 54. Cirrus MMIO improvements, including support for 5429 (Harm Hanemaayer).
- 53. More balanced cirrus FIFO settings to resolve display refresh errors
- during drawing operations at high dot clocks (Harm Hanemaayer).
- 52. Support for clocks up to 135MHz for CL-GD5434 revision E and later
- (Harm Hanemaayer).
- 51. Fix memory leak in cirrus text drawing (Harm Hanemaayer).
- 50. Updates for Linux ELF support (H.J. Lu).
- 49. Fix mail directory path in xbiff.
- 48. Fix S3 interlace mode problem for boards with programmable clocks
- (Harald Koenig).
- 47. Fix core dump from vgahelp when started with no args (Christos Zoulas).
- 46. Fix 968 detection in SuperProbe, and add Ti3026 detection (Harald Koenig).
- 45. Preliminary S3 968 and Ti3026 support (Harald Koenig).
- 44. Added similar code for SYSV regarding I/O permission, but not enabled
- (yet) by default.
- 43. Modify Linux I/O permission code to use IOPL rather than TSS bitmap
- in all cases (Orest Zborowski and Harm Hanemaayer).
- 42. Fix lack of keysyms for numerical keypad when ServerNumLock is enabled
- on Linux (Orest Zborowski).
- 41. Update _SC_OPEN_MAX code.
- 40. Fix ALLOCATE_LOCAL() not using alloca() with gcc.
-
-XFree86 3.1.1d (21 March 1995)
- 39. Preliminary mode checking for the VGAHelp extension.
- 38. Add timeout for 3 button emulation (Mike Hench).
- 37. Reorganise Ti302x code to remove S3-specifics from common_hw
- (Robin Cutshaw).
- 36. General PCI probe code (Robin Cutshaw).
- 35. FreeBSD 1.1.5 has _SC_OPEN_MAX defined, but no sysconf().
-
-XFree86 3.1.1c (12 March 1995)
- 34. Updates for #9 GXE64Pro required due to changes in 3.1.1b (Hans Nasten).
- 33. Support for BSD/OS 2.0 (Hans Nasten).
- 32. Updates for OS/2, including work on the X server support (Holger Veit).
- 31. SVGA driver for the ARK 1000PV and 2000PV chipsets (Harm Hanemaayer).
- 30. Add predefs to makedepend for FreeBSD and NetBSD. This allows
- xf86_OSlib.h to be cleaned up a little.
- 29. Fix config rules for Sentinel build (David Wexelblat).
-
-XFree86 3.1.1b (8 March 1995)
- 28. Fix for byte swapped extension problem in lbxproxy (Dave Lemke).
- 27. Support for Unixware 2.0 (Robin Cutshaw and Kaleb Keithley).
- 26. Fix FIFO detection problem and bug reading BIOS video max modes in
- Mach64 server (Kevin Martin).
- 25. Support for Chrontel 8398 and STG1703 clock programming in the Mach64
- server (Kevin Martin).
- 24. Add "no_block_write" option to turn of block write mode in the Mach64
- server (Kevin Martin).
- 23. Add "override_bios" option to override the Mach64 server's BIOS mode
- checking (Kevin Martin).
- 22. Allow Membase to be given in XF86Config for the Mach64 server
- (Kevin Martin).
- 21. Fix bug in Mach64 ATI68860 RAMDAC code which causes noisy display
- (Kevin Martin).
- 20. Add support for STG1702, STG1703, ATI68875, CH8398 RAMDACs to Mach64
- server (Kevin Martin).
- 19. Post events for initial lock key state differently to avoid calling
- ProcessKeyboardEvents() before all the data it uses is initialised.
- 18. Fix and extend ISO8859-1 Compose file (Peter Dalgaard).
- 17. Update S3 SVGA driver so that it works with 3.1.1.
- 16. Fix 90C33 problem with 2MB cards when memory is not auto-probed.
- 15. Fix some ISC LOCALCONN problems (Michael Rohleder).
- 14. Put back some #9 GXE64Pro specific bits in S3 server.
- 13. Remove 1024 min virtual width restriction from Mach64 server
- (Kevin Martin).
- 12. Fix dashed line server hang problem for Mach32.
- 11. Add UseGnuMalloc to xf86site.def (only implemented for ISC so far).
- 10. Fix POSIX_SAVED_IDS typo in xterm (Christos Zoulas).
- 9. Fix problem of attempting to include the VGAHELP extension in Xnest.
-
-XFree86 3.1.1a (12 February 1995)
- 8. VGAHELP X server extension for tuning video modes (Kaleb Keithley).
- 7. Fix libfont problem that can cause xfs to get into a loop (Jason Venner).
- 6. Fix problem with TekHVC colours (Kaz Sasayama).
- 5. Fix merge problems in hw/sun.
- 4. Fix line clipping problem in Mach32 server (can affect font cache).
- 3. Fix font cache problem on 2MB Mach32 cards.
- 2. Add detection of Trident GUI9440 to SuperProbe (untested).
- 1. Fix some ISC problems (Michael Rohleder).
-
-
-XFree86 3.1.1 (30 January 1995)
-265. --- Code freeze ---
-264. Include final form of fix-11.
-
-XFree86 3.1.0Zg (29 January 1995)
-263. Include final form of fix-10.
-262. Fix some merge problems.
-
-XFree86 3.1.0Zf (28 January 1995)
-261. Merge in prelim version of XC fix-11.
-
-XFree86 3.1.0Ze (28 January 1995)
-260. Merge in prelim version of XC fix-10.
-
-XFree86 3.1.0Zd (28 January 1995)
-259. Merge in XC fix-09.
-258. Minor updates (mostly typographical) to smooth the fix-11 merge.
-257. Define X_LOCALE for Linux.
-
-XFree86 3.1.0Zc (27 January 1995)
-256. Doc updates.
-255. Minor hw/xfree86 updates for fix-11 (Kaleb Keithley).
-254. Merge in XC fix-08.
-
-XFree86 3.1.0Zb (26 January 1995)
-253. Rename some files under hw/xfree86 to avoid clashes when truncated to
- 8.3 type names as used on ISO9660 format CDROMs.
-
-XFree86 3.1.0Za (25 January 1995)
-252. Minor pixmux clock limit update for Trio64 (Harald Koenig).
-251. Merge in XC fix-07.
-250. Some documentation updates.
-
-XFree86 3.1.0Z (23 January 1995)
-249. Restore correct key maps for 84-key keyboard, but allow alternate (old)
- behaviour when "ServerNumLock" is set in the XF86Config.
-248. xf86config updates (Harald Koenig).
-247. Remove stripes when panning with Ti3025 (Harald Koenig).
-246. Enable linear fb probing for VLB Trio64 cards with > 1MB DRAM
- (Harald Koenig).
-245. Put blank delay values back to what they were for non-#9 Ti3025
- boards (Harald Koenig).
-244. Fix AGX fill problems and hangs when exiting with an AGX-016 under
- SVR4 (Henry Worth).
-243. Fix AGX font cache problem, and other updates/cleanups
- (Henry Worth).
-
-XFree86 3.1.0Ce (22 January 1995)
-242. Updates to vgawonder driver, including fix for 68800-6 memory probe,
- and a reworking of the clock matching code (Marc Aurele La France).
-241. Remove most BIOS dependencies in vgawonder probe code
- (Marc Aurele La France).
-240. Change ordering of Mach32 and Mach64 probing in SuperProbe, ati.test
- and the vgawonder driver to avoid hanging Mach32 boards. Also use
- a timeout in all WaitIdle loops in the probes (Marc Aurele La France).
-239. Minor #9 GXE64Pro updates (Hans Nasten).
-238. Allow LASTLOG to be independent of SYSV_UTMP in xterm -- so it will
- work for Linux (Helmut Geyer).
-
-XFree86 3.1.0Cd (21 January 1995)
-237. Improve positioning of pixmap expansion and font cache areas with
- the S3 server.
-236. Fix problem with Cirrus mono server crashing (Stephen Kump).
-235. Allow the "sw_cursor" option to work for the S3 server.
-234. Fix S3 HW cursor hot spot problem when no ViewPort entry is given in
- the XF86Config (Harald Koenig).
-233. Fix some S3 Trio64 8bpp+pixmux display errors (Harald Koenig).
-232. Fix #9 GXE64Pro problems introduced in 3.1.0Cc (Hans Nasten).
-231. SPEA auto-detection for their Trio64 cards (Norbert Distler).
-230. Possible fix for keymap problems with 84-key keyboards.
-229. Internationalisation support for xterm (Martin Forssén).
-228. Remove the need for a Virtual entry in the XF86Config for the Mach64
- server.
-
-XFree86 3.1.0Cc (20 January 1995)
-227. Add a check to the W32 server for invalid depths.
-226. Fix bug in PaintWindow in Mach32 and AGX servers (Stuart Anderson).
-225. Chrontel 8391 programmable clock support (Richard Burdick
- and Harald Koenig).
-224. S3 programmable clock code updates (Harald Koenig).
-223. Support for S3 Trio32 and Trio64 (Harald Koenig).
-222. Updates to S3 Ti3025 code for the Miro 40SV (Harald Koenig).
-221. Update xf86config to know about the latest clockchip changes
- (Harm Hanemaayer).
-220. Minor cirrus HW cursor patch (Harm Hanemaayer).
-219. Updates to OAK driver, including mapping the linear fb above 64MB
- (Jorge Delgado).
-
-XFree86 3.1.0Cb (19 January 1995)
-218. Fix XLOCAL parsing problem introduced in XC fix-06 (Steve Forsythe).
-217. Added a DocIndex (to use as a starting point for the HTML docs).
-216. README.Oak (Jorge Delgado).
-215. SuperProbe/kbd_mode updates for compiling with PCVT_SUPPORT
- (Joerg Wunsch).
-214. Fix for 90C31 acceleration problems.
-213. Don't use '-ansi -pedantic' for Solaris versions earlier than 2.4.
-
-XFree86 3.1.0Ca (18 January 1995)
-212. S3 update for SPEA Mercury P64 (Norbert Distler).
-211. Late LBX updates from the XC.
-210. Add a "no_imageblt" option for the Cirrus driver (Harm Hanemaayer).
-209. Support for 2:1 pixmux 8bpp RAMDACs on boards with fixed clock chips.
-208. S3 changes for the ICS5342 ramdac/clock (Harald Koenig).
-207. Fix problem in miZeroClipLine() which can cause a server hang
- (Harald Koenig).
-206. Fix register unlocking problem in S3 server (for Stealth 64 VRAM)
- (Harald Koenig).
-
-XFree86 3.1.0C (15 January 1995)
-205. Preliminary programmable clock support for the Mach64 server
- (Kevin Martin).
-204. Add accelerated line code for the P9000 server and fix/update some
- other accelerated code (Chris Mason).
-203. Allow XF86Config Videoram to override autodetection with the P9000
- server, and allow the "vram_128" option force recognition of
- 128kx8 VRAM (Erik Nygren).
-202. Change P9000 programmable clock operation to be consistent with other
- servers (Erik Nygren).
-201. Allow Cirrus MMIO for the 5429, and change on of the fixed clocks
- in the Cirrus programmable clock code (Harm Hanemaayer).
-
-XFree86 3.1.0Bf (14 January 1995)
-200. Preprocess Linux jump files, and allow libX11 to be built with XdmAuth
- (Orest Zborowski).
-199. Fix VTSema-related problem in s3bstore.c (Henry Worth).
-198. Merge in XC's pre-fix-07 LBX code.
-
-XFree86 3.1.0Be (12 January 1995)
-197. Include Japanese translations of some XFree86 3.1 docs (Kazuyuki Okamoto).
-196. Updates to SPEA detection code (Norbert Distler).
-195. Fix for ICS2595 initialisation problem (Norbert Distler).
-194. Some vgawonder driver fixes (Marc Aurele La France).
-193. Prevent xf86config from crashing when some fields are missing in
- the Cards database (Matthieu Herrb).
-192. Fix S3 cursor X position when the display address is not changed to
- avoid display errors.
-191. Set S3 M/N parameters depending on the MCLK value (which can be probed
- or set in XF86Config) (Harald Koenig).
-
-XFree86 3.1.0Bd (12 January 1995)
-190. Update cl64xx driver for modeRec changes.
-189. Merge in XC public fix-06.
-
-XFree86 3.1.0Bc (11 January 1995)
-188. Added a DontZoom keyword for the XF86Config "ServerFlags" section
- to disable the mode switching key sequences.
-187. Updates for ISC. Includes imake config support for the SVR3 mmap
- driver, updates to install.svr3, and patches for building lbxproxy
- (Michael Rohleder).
-186. Fix 864 + STG1700 8bpp pixmux for clocks between 67.5 and 95 MHz
- (Harald Koenig).
-185. Change VRAM timings for Diamond Stealth 64 VRAM (Harald Koenig).
-184. Set HSyncEnd overflow in S3 server when needed (Harald Koenig).
-183. Prevent C&T driver from pretending to support the 82c45x chipsets.
-182. Don't trap <ctrl><alt><bs> when DontZap is set.
-
-XFree86 3.1.0Bb (10 January 1995)
-181. Updates to linear fb code for OTI087, and allow the FIFO threshold
- to be set from XF86Config (Jorge Delgado).
-180. Add hooks for server/driver mode validation. This is currently used
- only by the NCR SVGA driver (Stuart Anderson).
-179. Fix for ET4000/W32 bank switching code in the SVGA et4000 driver
- (David Etherton).
-178. Similar hw cursor move fix for S3 server.
-177. Fix for Cirrus crash when the hw cursor is moved while in another VT
- (Harm Hanemaayer).
-176. Allow the "s3_964_bt485_vclk" to be used for the Diamond Stealth64 (VRAM).
- This requires the "diamond" option (Harald Koenig).
-175. Rewrite xlfd_round_double() to speed it up on machines with no
- hw floating point. This reduces server startup time on such machines
- (Harald Koenig).
-174. Reduce amount of floating-point calculation in icd2061a and S3 gendac
- clock code (Harald Koenig).
-173. Probe code to detect some SPEA boards and correctly set the clockchip
- (Norbert Distler).
-172. Allow Xservers to be built with only PCVT support on *BSD, and
- clean up the console driver probing for *BSD (Joerg Wunsch).
-
-XFree86 3.1.0Ba (8 January 1995)
-171. Change "ct5??" chips&tech names to "ct655??".
-170. Fix for Xnest (and Xvfb) not calling OsInitColors().
-169. Add support for relinking the Xnest server with the LinkKit.
-168. Modify vgawonder to probe clocks when -probeonly is used
- (Marc Aurele La France).
-167. Fix some cirrus line drawing problems and fix non-interlaced modes
- with vertical timings > 1024 (Harm Hanemaayer).
-166. Avoid use of the threads lib for SolX86 (David Holland).
-
-XFree86 3.1.0B (4 January 1995)
-165. Support for C&T 65540/45 added to the SVGA server (Régis Cridlig).
-164. Change cirrus programmable clock code to use a tested set of clock
- parameters when there is one close to the requested clock frequency
- (Harm Hanemaayer).
-163. Fix cirrus BitBLTs with height > 1024 for 543x (Harm Hanemaayer).
-162. Clock-related updates to the vgawonder driver (reject invalid clocks
- where possible) (Marc Aurele La France).
-161. Config updates (including installation of host.def and fix references
- to cl64xx driver in xf86site.def) (Marc Aurele La France).
-
-XFree86 3.1.0Ae (2 January 1995)
-160. Replace docs with the ascii versions generated from the sgml source.
-159. Major updates to xf86config(1), including the addition of a Cards
- database (Harm Hanemaayer).
-158. Check and reject invalid XF86Config depths for the VGA16 and Mono
- servers.
-157. Add an "s3_964_bt485_vclk" option to fix a problem with 964+Bt485.
- Also added code to detect the MIRO 20SV board revision (Harald Koenig).
-156. Add an S3Mclk entry to XF86Config to allow the MCLK value to be specified
- in order to aid the calculation of the optimal M parameter
- (Harald Koenig).
-155. Fix S3 linear fb check and allow membase to work for 864/964 boards
- (Harald Koenig).
-154. Move server lock code back into Xserver/os so that it gets used by
- Xnest and Xvfb.
-
-XFree86 3.1.0Ad (26 December 1994)
-153. Fix problems with DBLSCAN code introduced in 3.1.0Aa (Harm Hanemaayer).
-152. Support for adding LBX via the LinkKit.
-151. Fix some LinkKit config problems.
-150. Fix LinkKit Imakefile bug introduced in 3.1.0A.
-149. Support for SPEA Mercury P64 (Bt485 + 964) (Norbert Distler).
-148. Enable ICD2061A/SC11412 clockchip by default for S3 server if the
- the "SPEA_Mercury" option is given and Bt485 + 964/928 is detected
- (doesn't happen if an XF86Config entry for either ramdac or clockchip
- is present) (Norbert Distler).
-147. Fix for PCI Type 2 probe for I128 SuperProbe code (Robin Cutshaw).
-146. Major Cirrus update. Includes new acceleration using mmio (lines
- tilefill and rectangles), and more acceleration for 16/32bpp
- (Harm Hanemaayer).
-145. Fixes for AGX dashed line code (Henry Worth).
-144. Allow S3 server to put the cache in the area to the right of the screen
- when it is larger than the area below it (Leonard N. Zubkoff).
-
-XFree86 3.1.0Ac (20 December 1994)
-143. Imake template and rules for LinuxDoc-SGML formatting.
-142. Documentation converted to LinuxDoc-SGML (Gertjan Akkerman,
- Jayadev Billa, Matthieu Herrb, Michael Klemme).
-141. Re-enable SO_REUSEADDR code in Xtranssock.
-
-XFree86 3.1.0Ab (18 December 1994)
-140. Item 58. below (the patch didn't get included before).
-139. Add some sanity checking for horizontal timing parameters (including
- HTotal overflow for 864 with 24bpp, pixmux and HTotal > 1024)
- (Harald Koenig).
-138. Add check for 864 DCLK limit for 24bpp (Harald Koenig).
-137. Clean up of SDAC/GENDAC detection and related messages (Harald Koenig).
-136. Allow the following ramdac and clock chips to be specified by name:
- att21c498 (att20c498), ics5300 (s3_gendac), ics5342 (s3_sdac),
- ics9161a & dcs2824 (icd2061a). (Harald Koenig)
-135. OS/2 updates, including config updates, SuperProbe support and
- compile-time support for most of the Xserver (Holger Veit).
-134. Updated cl64xx driver, including support for the CL6440. Note, the
- driver name has changed from "cl6420" to "cl64xx" (Manfred Brands and
- Randy Hendry).
-133. Fix VT switch problem with the SVGA MX driver (Frank Dikker).
-132. Add PCI config type 1 support to I128 probe in SuperProbe (Robin Cutshaw).
-131. Update support for STB Pegasus (928 + Bt485), including 16bpp and
- 32bpp (Leonard N. Zubkoff).
-130. Fix pixmux clock check in Mach32 server (Alan Hourihane).
-129. Mods to allow XFree86 servers to compile with 'gcc -ansi -pedantic'
- on Solaris 2.x (David Holland).
-128. Fix stipple problem in S3 server.
-127. Fix for setuid-root xterm problem reading .Xauthority file on
- nfs-mounted filesystem (so far only for systems with POSIX_SAVED_IDS)
- (Christos Zoulas).
-126. Move server lock code into hw/xfree86 (Kaleb Keithley).
-125. Really fix Membase handling for S3 server and 805/928.
-124. Fix Mach32 probe problem.
-123. Fix SVR3 config problems (Michael Rohleder).
-
-XFree86 3.1.0Aa (11 December 1994)
-122. Fix default mapping for numpad keys. ServerNumLock should now not
- be required (for clients using R6 Xlib).
-121. DoubleScan modes are no longer specified with doubled vertical timings.
-120. Add extra timings fields to the ModeRec which are the CRTC values
- used by the hardware.
-119. Update oak driver to support linear mode for the oti-087 (Jorge Delgado).
-118. Fix '-DSTATIC_COLOR' problems (Hans Nasten).
-117. Fix typos which prevented Mach64 detection in SuperProbe from working
- (Marc Aurele La France).
-116. Allow XF86Config settings to override ELSA probe (Harald Koenig).
-115. Fix Membase handling for S3 server and 805/928.
-114. Make BSD console driver support selectable from imake.
-113. Fix some SVR4 config problems.
-
-XFree86 3.1.0A (5 December 1994)
-112. Mach64 pixmap cache fixes (Kevin Martin).
-111. Improve cirrus programmable clock handling (Harm Hanemaayer).
-110. Add code to SuperProbe to detect the #9 Imagine I128 (Robin Cutshaw).
-
-XFree86 3.1.0g (2 December 1994)
-109. Enable mmio for the Cirrus 543x (Harm Hanemaayer).
-108. Updates to xf86config (Harm Hanemaayer).
-107. Code for SuperProbe to successfully detect CL-GD543x (Harm Hanemaayer).
-106. Eliminate all references to "SYSV386". "-Di386" should be used instead,
- even in the BOOTSTRAPCFLAGS for SVR4 and SVR3 (Kaleb Keithley).
-105. Some typo changes to bring our code closer to what the XC has.
-
-XFree86 3.1.0f (1 December 1994)
-104. Eliminate references to SYSV386.
-103. Add check for usable linear fb for 864/964 boards.
-102. Detect and reject Mach64 boards whose ROM or VGA capability has been
- disabled (Marc Aurele La France).
-101. Experimental code in the vgawonder driver to reset Mach* boards. This
- is enabled with the "noaccel" option (Marc Aurele La France).
-100. Fix clashes with K_SCROLLLOCK and related symbols defined in newer
- Linux releases (Marc Aurele La France).
- 99. Change SuperProbe to detect the Mach64, and deal with ATI DAC classes
- 6 and 7, and recognise the ATI 28800-6 chip (Marc Aurele La France).
- 98. ISC 3.x and 4.x support (Michael Rohleder).
- 97. Add support for 640 and 800 line widths to AGX server (Henry Worth).
- 96. Fix cursor/screen scrolling problem for doublescan modes (Henry Worth).
- 95. Add missing XF86_Mach64.c file.
-
-XFree86 3.1.0e (27 November 1994)
- 94. Add missing install rule for gccmakedep.
- 93. Define CSRG_BASED for *BSD (Kaleb Keithley).
- 92. Code/prototype cleanup under hw/xfree86 (Kaleb Keithley).
- 91. Mach64 accelerated server (Kevin Martin).
-
-XFree86 3.1.0d (22 November 1994)
- 90. Updates to NetBSD aperture driver (Matthieu Herrb).
- 89. Bring back 'gccmakedep' from 2.x. Currently only use it when
- UseInstalled is true.
- 88. Support for additional keys on Microsoft ergonomic keyboard (may
- require support in the OS's console driver) (Kaleb Keithley).
- 87. Updates for SCO (David McCullough).
- 86. Don't require the Virtual size to be specified for the Mach32 server.
- 85. Allow virtual widths < 1024 for Mach32 server (currently untested).
- 84. Some preliminary support for ISC (SVR3) 4.x (Michael Rohleder).
- 83. ET4000/W32 server updates. Includes accelerated 32-bit opaque and
- transparent stipple, acceleration for cases where the planemask != 0xFF,
- and ramdac code changed to accommodate more ramdac types (Glenn Lai).
- 82. NetBSD support in hw/sun (Dennis Ferguson, Matthew Green, Matthieu
- Herrb).
- 81. Fix xterm hang-on-exit problem on SolX86 2.4 (David Holland).
- 80. Speedups for AGX constant-metric and non-overlapping characters
- (Henry Worth).
- 79. AGX accelerated dashed lines, and solid fills for arcs and polygons
- (Henry Worth).
- 78. Doublescan support for the AGX server (Henry Worth).
- 77. Update AGX server to delete unusable modes, and to allow the virtual
- width to be less than the display width (Henry Worth).
- 76. Fix typo in oak driver (which broke 067/077 support) (Jorge Delgado).
- 75. NetBSD updates, including SparcArchitecture support in imake config
- (Matthieu Herrb).
- 74. 32bpp support for SPEA Mercury (928+Bt485) (Norbert Distler).
- 73. Modify Linux kbd code to read the "high_keys" mapping (Takashi Manabe).
- 72. Fix RGBPath in XF86Config being ignored.
-
-XFree86 3.1.0c (6 November 1994)
- 71. Fix xload for FreeBSD 1.1.5 (Joerg Wunsch).
- 70. Modify S3 linear fb probe to handle the non-standard CR5A[6:7] address
- mapping used by some Diamond boards (including the Diamond Stealth Pro).
- Also, the 10 most significant bits of a specified MemBase value are
- now used (which leads to an incompatibility with previous usage)
- (Dick Streefland).
- 69. Fix clock matching and some other problems in vgawonder driver
- (Marc Aurele La France).
- 68. Reduce RAS to 6 MCLKs for SPEA Mercury (Norbert Distler).
- 67. Fix setting of CR65 for the SPEA Mercury -- fixes 1600 width at 8bpp
- and 1152 width at 16bpp (Norbert Dislter).
- 66. Change MCLK from 46MHz to 49MHz in the SC11412 clock code (Norbert
- Distler).
- 65. S3 code to detect 866/868/968/Trio32/Trio64 and treat them as
- an 864 (Harald Koenig).
- 64. Update SuperProbe to detect STG1700, S3 GENDAC and SDAC, ATT22C498,
- S3 Vision866, 868, 968, Trio32 and Trio64 (Harald Koenig).
- 63. Enforce 95MHz limit for 864 when no pixmux (eg, 16bpp) (Harald Koenig).
- 62. Increase pixmux cut-in point for ATT20C498 to 95MHz (Harald Koenig).
- 61. ATT22C498 detection and (untested) support (Harald Koenig).
- 60. New code for S3 SDAC/GENDAC detection, and enable the programmable
- clock when one of these is detected (Harald Koenig).
- 59. Fixes for S3 RAMDAC detection (STG1700 and SDAC) (Harald Koenig).
- 58. Fix ICD2061A code for clocks between 110MHz and 120MHz (Harald Koenig).
- 57. Chips & Technology SVGA driver (Jon Block, Mike Hollick, Régis Cridlig).
- 56. 16/32bpp support for #9 boards with Ti3020 ramdac (Robin Cutshaw).
- 55. Fix bsdi.cf problems with gcc options (Hans Nasten).
-
-XFree86 3.1.0b (30 October 1994)
- 54. 16/32bpp support for Elsa Winner2000Pro (964+Ti3020) (Dirk Hohndel).
- 53. Update to cirrus programmable clock code (Harm Hanemaayer).
- 52. Accelerated 16/32bpp bitblt for the Cirrus driver (Harm Hanemaayer).
- 51. The vgawonder driver will now attempt to determine what the board uses to
- generate clocks (Marc Aurele La France).
- 50. Allow mode flags to specify composite sync polarity (Marc Aurele
- La France).
- 49. ati.test and vgawonder driver updates (Marc Aurele La France).
- 48. Vgawonder driver will now attempt to use a default video mode (derived
- from the existing CRTC settings) when no modes are specified in the
- XF86Config (Marc Aurele La France).
- 47. Fix problem where clock probe could report high values as zero (Marc
- Aurele La France).
- 46. SVGA driver for Avance Logic Inc. ali2301, ali2302, ali2308 and
- ali2401 (Ching-Tai Chiu).
- 45. Enable linear aperture access for BSD/386 (Hans Nasten).
- 44. Some Linux xterm fixes (Orest Zborowski).
- 43. Fix Linux xdm groups setting problem (Orest Zborowski).
- 42. Allow Mach8 server to delete unsuitable modes (Hans Nasten).
- 41. Attempt at fixing FatalError() re-entrancy problems when aborting.
- 40. Add X server lock file code.
- 39. Modify PTS code in xtrans to remove an existing node at server startup
- (as happens with UNIXCONN).
- 38. Set debug level to 1 in xtrans (this should allow error messages to
- finally be seen).
- 37. Modify xtrans to use ErrorF() for debug/error messages within the
- X server.
- 36. Updates to the S3MNAdjust option -- including no longer using global
- variables (Harald Koenig).
- 35. Fix horizontal stripes when panning with an S3 805i (Harald Koenig).
- 34. Fix SDAC + pixmux patch (Harald Koenig).
- 33. Fix line-related crash problem when using linear addressing with
- the SVGA server (Harm Hanemaayer).
- 32. Fix Cirrus 5434 linear addressing text blt bug (Harm Hanemaayer).
- 31. Fix Cirrus 14-pixel font bug (Harm Hanemaayer).
- 30. Improve Cirrus probing (Harm Hanemaayer).
-
-XFree86 3.1.0a (21 October 1994)
- 29. Fix some missing globals in Linux libX11 (Orest Zborowski).
- 28. Fix for TCPCONN code's checking for an existing server.
- 27. Support for building ELF dynamic libs on Linux (Michael Riepe).
- 26. Fix gcc local label usage in vgaFasm.h (Adam Richter).
- 25. OS/2 client support (Holger Veit).
- 24. Fix some data initialisation problems in libX11 and libXt
- (Christos Zoulas).
- 23. Use '-ansi -pedantic' with GCC when building the core tree.
- 22. Changes to vgaFasm.h to allow compilation with 'gcc -ansi -pedantic'.
- 21. Revised OAK driver which includes OTI-087 support (Jorge Delgado).
- 20. Don't use -lmalloc for FreeBSD 1.1.5 -- it seems to cause some server
- crashes.
- 19. Change FreeBSD.cf to refer to the compiler as 'cc' instead of 'gcc'
- (Rich Murphey).
- 18. Work around some problems GNU make 3.62 has with the rstart Imakefile
- (Jim Tsillas).
- 17. Fix HW cursor problems after switching resolutions with the SVGA
- server (Harm Hanemaayer).
- 16. Fix I/O permission problem with AL2101 driver (Harm Hanemaayer).
- 15. Preliminary doublescan mode flag support (Harm Hanemaayer).
- 14. Accelerated transparent text for Cirrus 5426/8 (Harm Hanemaayer).
- 13. Cirrus programmable clock support (Harm Hanemaayer).
- 12. Cirrus accelerated image text for 16/32bpp (Harm Hanemaayer).
- 11. Fix Cirrus HW cursor colour map at 16/32bpp (Harm Hanemaayer).
- 10. Fix 16bpp VC switch lockup on Cirrus 5426 (Harm Hanemaayer).
- 9. Fix SDAC 15/16bpp setup and 8bpp pixmux clock selection (Harald Koenig).
- 8. New (faster) S3 stipple code (Hans Nasten).
- 7. Add the xf86config program to the source tree (Harm Hanemaayer).
- 6. Gamma correction support for Ti3025 (Hans Nasten).
- 5. Add code to set 170MHz Bt485/20C505 limits for 32bpp.
- 4. Fix incorrect clock limit for ATT20C490 + programmable clock.
- 3. Fix S3 co-ord overflow check for bpp > 8.
- 2. Fix to S3 server to support newer #9 GXE64Pro boards (Robin Cutshaw).
- 1. Documentation updates.
-
-XFree86 3.1 (29 September 1994)
-400. --- Code freeze ---
-399. Fix slow server death and VT switching problems with W32 server
- (Glenn Lai).
-398. Fix problem with the W32 server not being installed set-uid (Hans Nasten).
-397. Fix problem with LinkKit Imakefile (Matthieu Herrb).
-396. Documentation updates.
-
-XFree86 3.0Z (27 September 1994)
-395. Fix mouse access problem when server resets while not in the active VT
- (Orest Zborowski).
-394. Fix typo in pvga1 driver (Simon Cooper).
-393. Documentation updates.
-392. Disable MMIO for Cirrus -- doesn't work yet (Harm Hanemaayer).
-391. Workaround for Cirrus GRF corruption in SVGA probe (Harm Hanemaayer).
-390. Update colourmap/blanking for W32 server (Glenn Lai).
-389. Fix clock ordering problem for vgawonder driver (Marc Aurele La France).
-388. Fix typo in Mach32 server which prevents it from starting at 16bpp
- (Alan Hourihane).
-
-XFree86 3.0Fe (26 September 1994)
-387. Fix for S3 line drawing overwriting HW cursor storage.
-386. Include Monitors and Devices files which contain the Monitor and Device
- XF86Config sections that have been submitted (Gertjan Akkerman).
-385. Update Cirrus probing for 543x chips in SuperProbe (Harm Hanemaayer).
-384. Update ET4000/W32 probing for SuperProbe (Glenn Lai).
-383. 16bpp support for S3 GENDAC + 801/805 (Harald Koenig).
-382. Updates to S3 GENDAC code -- program best matching clock frequency
- (Harald Koenig).
-381. Fix most pixel shift problems for #9GXE64Pro (Hans Nasten and
- Robin Cutshaw).
-380. Don't allow the S3 "dac_8_bit" option to have any affect at 16/32bpp,
- and fix related problem when using the SC15025 RAMDAC.
-379. Fix problem with Spea Mercury (Norbert Distler).
-378. Documentation updates.
-377. Updates to SolX86 aperture driver config (David Holland).
-376. Don't write mouse speed setting commands when using a non-logitech
- protocols.
-
-XFree86 3.0Fd (25 September 1994)
-375. AGX documentation updates (Henry Worth).
-374. Fix for text-mode restore problem with AGX server (Henry Worth).
-373. Change name of XF86Vga256Drivers to XF86SvgaDrivers.
-372. Documentation updates.
-371. Enable 16bpp, 32bpp for 964+Bt485.
-370. Support for 16bpp and 32bpp on 964+Bt485 -- tested so far on
- Miro Crystal 20SV (Eddy Olk).
-369. Fix pixel wrapping for 964+Bt485 (Eddy Olk).
-368. Fix low-res mode support for GXE64Pro (Robin Cutshaw).
-367. Fix some depth 15 vs depth 16 code for the Ti3020 (Hans Nasten).
-366. Update W32 server (Glenn Lai).
-
-XFree86 3.0Fc (24 September 1994)
-365. Fix image shift at 32bpp on GXE64Pro (Hans Nasten).
-364. Only initialise TrueColor visual for 16/32bpp since DirectColor is
- not appropriate for the hardware.
-363. Man page updates.
-362. Fix installation problems with XF86Config man page.
-361. Disable some code in vgawonder driver that leads to problems with
- SuperProbe (Marc Aurele La France).
-360. Change clock ordering (in some cases) for vgawonder driver so it
- now depends only on the clock chip used (Marc Aurele La France).
-359. Fix S3 VT switching problem with #9 GXE64Pro (Robin Cutshaw).
-358. Added README.SOLX86 (David Holland).
-
-XFree86 3.0Fb (23 September 1994)
-357. Enable ICS2595 clockchip support.
-356. Enable 32bpp for Ti3025+964.
-355. Change font cache and pixmap expansion allocation policy for S3
- server. This allows better performance when there isn't much
- offscreen memory available (Hans Nasten).
-354. Fix for banked ImageFill for bpp>8 (Hans Nasten).
-353. Updates to XF86_Accel man page.
-352. Remove references to 'Xconfig' in source code.
-351. Updates for ICS2595 code (Norbert Distler).
-350. Enable 16bpp for Spea Mercury.
-349. VTSema fixes for AGX server (Henry Worth).
-348. Updated 16bpp/32bpp support for 928+Bt485 (Norbert Distler).
-347. Partial support for 16bpp/32bpp with 964+Bt485 (Steve Parker).
-346. Fix Ti3025 pll save/restore, and set MCLK to 54.8MHz to eliminate
- screen corruption (Hans Nasten).
-345. Fix for AGX tile SEGV (plus some cleanups) (Henry Worth).
-344. Update to solx86 aperture driver docs (David Holland).
-343. Fix problem with S3 mmio usage at 16bpp and 32bpp (Hans Nasten).
-342. Fix Mono VGA server crashes when compiled with gcc2.
-341. Updates to xterm for Linux to handle its UTMP style and lastlog
- (Helmut Geyer).
-340. Remove some dependencies on removed cfb.banked.
-339. Fix Mach32 SW cursor SEGV.
-338. Prevent "nomemaccess" being used for S3 864/964.
-337. Change FreeBSD.cf to use gnumalloc for FreeBSD 2.x (Rich Murphey).
-336. Set weights correctly for Cirrus 32bpp (Harm Hanemaayer).
-335. Fix signal handling in xinit for SVR4 (David Holland).
-
-XFree86 3.0Fa (21 September 1994)
-334. Fix problems with cirrus top/left edge handling with HW cursor
- (Simon Cooper).
-333. Fix GC problem causing S3 server crash at 16bpp and 32bpp.
-332. Added copyright to the output of reconfig.
-331. Fixes for vgawonder driver (Marc Aurele La France).
-330. Update README.ati and ati.test.c (Marc Aurele La France).
-329. Fix potential problem with transparent text for the cirrus 543x
- (Harm Hanemaayer).
-328. Fixes for ICS2595 clock code (Norbert Distler).
-327. Remove cfb.banked.
-
-XFree86 3.0F (20 September 1994)
-326. Fix problem building reconfig when BuildServersOnly is YES.
-325. Updates to README.FreeBSD (Rich Murphey).
-324. Fix P9000 problem starting at 16bpp (Erik Nygren).
-323. Fix AGX screen saver, and a flash that occurs when switching into
- XGA mode (Henry Worth).
-322. Preliminary support for the ICS2595 clock chip (not enabled yet)
- (Norbert Distler).
-321. Fix pixel shift problem with GXE64Pro at 8bpp and 16bpp (Robin Cutshaw).
-320. Change clock doubler transition to 80MHz for Ti3025 (Robin Cutshaw).
-319. Add README.Bsdi (Hans Nasten).
-318. Removed the need to specify the "elsa_w1000pro" and "elsa_w1000isa"
- Options.
-317. Remove "stealth64" and "miro_crystal20sv" Options -- they are no longer
- needed.
-
-XFree86 3.0Ec (19 September 1994)
-316. Fixes for Ti3025 support -- fixes problem with machine lockups, and
- adds preliminary 16bpp support (Robin Cutshaw).
-315. No longer allow 'Device' in the Keyboard section. Must now use
- 'Protocol'.
-314. Updates to Cirrus BitBLT and fix for tile fill bug (Harm Hanemaayer).
-313. Disable Cirrus top/left edge HW cursor handling -- problems when
- changing cursors near the edge.
-312. Fix another clock limit bug in S3 server.
-311. Disable Fresco by default.
-310. Updates to W32 server (Glenn Lai).
-
-XFree86 3.0Eb (18 September 1994)
-309. Updates to README.NetBSD (Matthieu Herrb).
-308. Fix Mode Flags error reporting in xf86Config.c.
-307. Fix sessreg for Linux and add an install rule for it (Leonard N. Zubkoff).
-306. Fix xdm support with shadow passwords for Linux (Leonard N. Zubkoff).
-305. Fix typo in bsdi.cf (Hans Nasten).
-304. Support for Ti3025/#9GXE64pro (Robin Cutshaw).
-303. Don't include s3_svga driver in SVGA server by default.
-
-XFree86 3.0Ea (17 September 1994)
-302. Update bsdi.cf so Gcc2 is default for versions 1.1 and later only
- (Hans Nasten).
-301. Fix mfb.banked so it will compile with gcc 1.4x (Hans Nasten).
-300. Remove old Xconfig code.
-299. Fix some SEGV after FatalError() problems in xf86Config.c.
-298. Set max clock to 67.5MHz for Mach32 at 16bpp.
-297. Support for P9000 screen blanking at 16bpp and 32bpp (Erik Nygren).
-296. Merge in XC public fix-05.
-295. Trap bpp > 8 in S3 server for Bt485 and Ti RAMDACs since it doesn't work.
-294. Fixes for various xf86Config.c bugs.
-293. Fix S3 clock limits when using clock doubling RAMDACs.
-292. Fixes to Ti3025 code to prevent lockups (Robin Cutshaw).
-291. Move S3 Bt485 probe to after the Ti3020/5 probe (Robin Cutshaw).
-290. Fix cirrus HW cursor behaviour at top and left edges (Simon Cooper).
-289. Set background colour mapping of Cirrus HW cursor correctly
- (Simon Cooper).
-288. Allow cirrus hardware cursor to be used when accel is turned off
- (Simon Cooper).
-287. Don't build shared lib for LBX on Linux (Orest Zborowski).
-286. Add README.Linux (Orest Zborowski).
-285. Fix P9000 cursor problems when VT switching (Erik Nygren).
-284. Update P9000 server to work with XF86Config (Erik Nygren).
-283. Fixes for Solaris 2.4 x86 build problems with reconfig and shm.c
- (Doug Anson).
-
-XFree86 3.0E (14 September 1994)
-282. Change the 'Device' entry in the Keyboard section of XF86Config to
- 'Protocol'.
-281. Update the M magic formula for S3 server (Harald Koenig).
-280. Disable TI3025 support in S3 server -- it is incomplete.
-
-XFree86 3.0Dl (13 September 1994)
-279. XF86Config(4/5) manual page.
-278. LinkKit support for the W32 server.
-277. Change HW cursor code to position cursor next to the top/left edges
- instead of disappearing (Harm Hanemaayer).
-276. Add code to the Cirrus driver to determine clock limits based on the
- available DRAM bandwidth (Harm Hanemaayer).
-275. Add an "S3MNAdjust" entry to the Device section of the XF86Config
- to allow tuning of the M and N parameters in the S3 server (Harald
- Koenig).
-274. Add a Gamma entry to the Monitor section in the XF86Config (Harald
- Koenig).
-273. Don't strip server binaries when installing.
-272. Set PLL limits in S3 server for S3 GENDAC and SDAC.
-
-XFree86 3.0Dk (11 September 1994)
-271. Add check for incorrect Modes line in XF86Config.
-270. Add some sanity checks to S3 server for supported depths.
-269. Fix SEGV during startup of VGA16 server.
-268. Support for HW cursor in the Cirrus driver (Simon Cooper).
-267. Fix LinkKit Imakefile for building SVGA server (Simon Cooper).
-266. Update lnxLib.rules for new dll tools (Orest Zborowski).
-265. Add code to the VGA servers to handle drivers (like tvga with 512k
- in 256 colour mode) which require scaling of the raw clock to give
- the pixel clock.
-264. Add code to the VGA servers to handle drivers (like the generic 256
- colour driver) which use only builtin modes.
-263. Fix bitPerRGB reported by the SVGA server.
-262. ET4000/W32 accelerated server (Glenn Lai).
-261. Fix for AGX rect tile and stipple code (Henry Worth).
-260. Add checks for the presence of Modes lines to servers that require them.
-259. S3 code to handle limits imposed by clock chips.
-258. Fix S3 pMode->SynthClock code (Harald Koenig).
-257. Fix S3 raw clock setting for SC15025 (Harald Koenig).
-256. Fixes for Mach32ImageStipple (Mike Bernson).
-255. Improve AGX support for the Hercules dual RAMDACs, provide
- better screen blanking at startup, and fix memory probe (Henry Worth).
-254. Add clockchip "ti3025" recognition (Hans Nasten).
-253. Fix xf86Config handling of ClockChip (Harald Koenig).
-252. Fix xf86Config handling of default colour weights (Harm Hanemaayer).
-251. P9000 updates (Erik Nygren).
-250. Fix SEGV problem in Mach32 font cache code.
-249. S3 code to handle clock/bpp/ramdac dependent raw-clock vs pixel clock
- scaling.
-
-XFree86 3.0Dj (8 September 1994)
-248. Fixed and enabled ImageRead in CopyArea for P9000 server (Chris Mason).
-247. Fixed xdm server restart problem with P9000 server (Erik Nygren).
-246. Added a sample XF86Config file that gets installed as
- $(LIBDIR)/XF86Config.eg.
-245. Change search method for XF86Config file. Only allow user-specified
- location when real-uid == 0. Also change -xconfig flag to -xf86config,
- and $XCONFIG to $XF86CONFIG.
-244. Fix reconfig's problem with "ps/2" (Orest Zborowski).
-243. External changes for W32 server (Glenn Lai).
-242. Change ELSA probe to check for BIOS signature first (Harald Koenig).
-241. Preliminary support for the Ti3025 & #9GXE64pro (Robin Cutshaw).
-
-XFree86 3.0Di (7 September 1994)
-240. Remove AGX server's dependence on VGA256 (Henry Worth).
-239. Fix display start address in vgawonder driver for Mach32 and Mach64
- boards (Marc Aurele La France).
-238. Fix clock probing in vgawonder driver for Mach64 boards
- (Marc Aurele La France).
-237. vgawonder driver now detects and rejects Mach32 boards without
- VGA Wonder functionality (Marc Aurele La France).
-236. Add ClockChip XF86Config keyword for programmable clock chips.
-235. Add a FIFO_MODERATE option for AGX server (Henry Worth).
-234. Limited support for Big-RAMDAC and dual-RAMDAC for 2MB Hercules
- Graphite cards (Henry Worth).
-233. Eliminate use of libvga256 in AGX server (Henry Worth).
-232. Convert AGX code to use the Ramdac keyword instead of Options (Henry
- Worth).
-231. Fix (?) ELSA probe code's register restoral.
-230. Auto-detection code for the NetBSD aperture driver (Matthieu Herrb).
-229. Change OpStipple interface in font code (Hans Nasten and Jon Tombs).
-228. Fix clock and register restoration in P9000 server (Chris Mason,
- Harry Langenbacher, Erik Nygren).
-227. Fix Orchid P9000 support (Harry Langenbacher).
-226. Fix BIOS Probe for Viper PCI (Bob Hollinger).
-225. 16bpp/32bpp support code for SVGA server. Cirrus 16bpp/32bpp support
- is now enabled (Harm Hanemaayer).
-224. Fix Mach32 cache problems (Mike Bernson).
-223. Fix Mach32 memory probe.
-222. xf86Config and reconfig bug fixes.
-
-XFree86 3.0Dh (4 September 1994)
-221. Added minimal reconfig(1) man page so that 'make install.man'
- doesn't fail.
-220. Combine Stealth64 and Miro Crystal 20SV code. This should fix
- some Stealth64 problems.
-219. Fix InstallManPageAliases rule for FreeBSD (Ernest Hua).
-218. 16bpp and 32bpp support for Cirrus driver -- still requires some changes
- to the SVGA server, so not enabled yet (Harm Hanemaayer).
-217. Fixes for Mach32 cache clipping problems (Mike Bernson).
-216. 32bpp S3 updates for ELSA cards (Harald Koenig).
-215. Updates to new XF86Config code.
-
-XFree86 3.0Dg (3 September 1994)
-214. Change over to new config file format -- XF86Config (Gertjan Akkerman).
-
-XFree86 3.0Df (31 August 1994)
-213. Amoeba support updates (Kees Verstoep).
-212. Fixes for Viper PCI support (Matt Thomas).
-211. MoveWindow acceleration for all depths on P9000, and acceleration
- now enabled by default (Chris Mason).
-210. P9000 updates. Includes updates to sysconfig code, Orchid and PCI
- support now enabled by default (Erik Nygren).
-209. SuperProbe and ModeDB updates (David Wexelblat).
-208. Support for the S3 805i and 16-bit RAMDACS (including ATT20C498,
- STG1700, SDAC) (Bernhard Bender).
-207. Support for the S3 SDAC with S3 864 (Bernhard Bender).
-206. Basic support for ET4000W32 chipsets in the VGA servers. Includes
- chipset detection and code to handle up to 4MB video memory (Harm
- Hanemaayer).
-205. Mach32 server modified to use generic cache code (Mike Bernson).
-204. Allow pixmap expansion for display widths <= 800 in S3 server.
-203. Updates for SCO (including 3.2.4 and international crypt support)
- (David McCullough).
-202. Use mi cursor for 32bpp on S3 928 because HW cursor is broken (Harald
- Koenig).
-201. Fix nomemaccess code in s3im.c (Harald Koenig).
-200. Code to auto-detect ELSA Winner cards, and automatically enable the
- icd2061a clock (Harald Koenig).
-199. Fix for 32bpp S3 font cache problems (Harald Koenig).
-198. Support for a linear addressing mode in the Cirrus driver (Harm
- Hanemaayer).
-197. Performance improvements for the "fastvga256" asm code (Harm Hanemaayer).
-196. Fix for Cirrus problem caused by pvga1 probe.
-195. Code added to S3, Mach8 and VGA servers to delete modes from the
- "Modes" line which would previously have caused the server to
- not start (Stuart Anderson). Note: the Mach32 server already had
- this code.
-
-XFree86 3.0De (20 August 1994)
-194. Add run-time check for SHM kernel support on FreeBSD and NetBSD.
-193. Updates to xload for Solx86 (David Holland).
-192. Fix NULL dereference in showfont (David Holland).
-191. xconsole and doc updates for NetBSD 1.0_BETA (Matthieu Herrb).
-190. Major Cirrus driver update. Includes faster solid, stipple and tile
- filling, improved text acceleration, blt in background, shadow I/O
- registers, optional MMIO support for 543x (Harm Hanemaayer).
-189. Support for the miroCRYSTAL 20SV (S3 964) (Eddy Olk).
-188. Preliminary 32bpp S3 support (Harald Koenig).
-187. Make TrueColor the default root visual for 15/16/24bpp S3 (Harald Koenig).
-186. Fix S3 16bpp for 1024x768 and 1152x900 and some panning problems
- (Harald Koenig).
-185. Fix tiling problem, and VT switch problems for S3 16bpp (Harald Koenig).
-184. Fix for Ti3020 ramdac support at >8bpp (Robin Cutshaw).
-183. AGX server fixes. Includes CopyPlane, (vga) save/restore, SC15021 CLUT
- access, scratchpad config. (Henry Worth).
-182. Merge in XC public fix-04.
-
-XFree86 3.0Dd (12 August 1994)
-181. Fix for unnecessary read-ahead in mfbblt, and remove the '-32' display
- width restriction (Pascal Haible, Gertjan Akkerman).
-180. Support for SGS/inmos STG1700 RAMDAC -- S3 server (Bernhard Bender).
-179. Performance improvements for AGX server (Henry Worth).
-178. More 15/16bpp fixes for S3 (Harald Koenig).
-
-XFree86 3.0Dc (11 August 1994)
-177. Various 15/16bpp S3 fixes (Jon Tombs, Harald Koenig).
-176. 16bpp support for ATT 20C490 (Jon Tombs).
-175. 16/24/32bpp code for SC15025 (Harald Koenig).
-174. Support for gamma correction in S3 server (Harald Koenig).
-173. Probe code for the SC15025 (S3 server and SuperProbe) (Harald Koenig).
-
-XFree86 3.0Db (6 August 1994)
-172. Patches for N.M value trimming (Harald Koenig).
-171. ATT20C498 and 864 support for 15/16/24bpp in S3 server (Harald Koenig).
-170. Ti3020 and Bt485 Ramdac support for 15/16/24bpp in S3 server
- (Robin Cutshaw).
-169. Fix problems building debugging libFS (Christos Zoulas).
-168. Remove XOR'd extended register addressing in S3 server.
-
-XFree86 3.0Da (3 August 1994)
-167. Use XOR'd extended register addresses for S3 server -- avoids clash
- with "COM4" I/O address (Jon Tombs).
-166. 16bpp S3 support (no ramdac initialisation yet) (Jon Tombs).
-
-XFree86 3.0D (1 August 1994)
-165. Fix for text restore problems with cl6420 driver (Manfred Brands).
-164. Change S3 screensaver code to do the same thing as the vga256 code
- (Bernhard Bender).
-163. Update Cirrus driver for vga256 changes (Harm Hanemaayer).
-162. Fixes for font scaling problems on SVR4 (David Wexelblat).
-161. Remove all of the old unused pixmap cache code (David Wexelblat).
-160. Use generic font cache code for S3 server (David Wexelblat).
-159. Native AGX code for Save/RestoreAreas, CopyWindow and PaintWindow
- (Henry Worth).
-158. Change AGX clock mappings -- see README.agx for details (Henry Worth).
-157. Update AGX server for vga256 changes (Henry Worth).
-156. Xtest fix for Linux (Erik Nygren).
-155. Speedup for cached text output in Mach8 and 8514 servers (Hans Nasten).
-154. Workaround for 6225 with LCD where full on white pixels cause display
- problems (Philip Homburg).
-153. Fix memory handling for Mach8 boards with the SVGA vgawonder driver
- (Marc Aurele La France).
-152. Fix some build problems on NCR SVR4 (Stuart Anderson).
-151. Fix problem which caused xjewel to lock up the S3 server when running
- in linear mode (Harald Koenig).
-150. xman support for gzip'd man pages.
-149. Fix LinkKit problems.
-148. Omit monitor ID check in 8514 server.
-147. Fix card ident problem with ati driver.
-146. Fix asm problem in new pvga1/bank.s.
-145. Fix programs/Imakefile error.
-
-XFree86 3.0Ce (24 July 1994)
-144. Alternate "SlowBcopy()" which avoids I/O (which causes problems on
- some cards) (Glenn Lai).
-143. Restore original mouse baud rate when exiting and VT switching (Harald
- Koenig).
-142. pvga1 driver updates. Includes 90C33 support for 2MB, and accel code
- updates (Bill Conn and Bill Morgart).
-141. Major updates to the SVGA ATI vgawonder driver. Includes support for
- 4MB, probe code to detect Mach8, Mach32 and Mach64 boards, RAMDAC
- detection, clock probe update to handle the clock chip used on Mach64
- boards, and fixes for V3, V4 and V5 boards (Marc Aurele La France).
-140. Support for BuildServersOnly option to build only the servers using
- a cut-down source tree (Gertjan Akkerman).
-139. Preliminary P9000 accelerated support (currently incomplete and
- disabled by default) (Chris Mason and Erik Nygren).
-138. Preliminary Viper PCI, Orchid P9000 support (currently disabled by
- default) (Erik Nygren).
-137. Replace the cfb.banked code with fb code which relies more on the
- standard cfb code. For further details see the file "Design" in
- xfree86/vga256/vga/ (Stuart Anderson).
-
-XFree86 3.0Cd (22 July 1994)
-136. Add dacspeed Xconfig keyword, and modify the S3 server to use it.
-135. Update contrib source to the XC's full release version.
-134. Fix pixel doubling problem on #9 GXE64 cards (Robin Cutshaw).
-133. Change '--print' to 'print-libgcc-file-name' in Linux config files
- for compatibility with gcc 2.6 (Orest Zbrowoski).
-
-XFree86 3.0Cc (19 July 1994)
-132. Make use of the Xconfig Ramdac keyword in the S3 server.
-131. Improved support for the ELSA W2000Pro (Dirk Hohndel).
-
-XFree86 3.0Cb (16 July 1994)
-130. Updated xc/bug-report for XC fix-03.
-129. Don't mark duplicate clocks as zero in VGA servers.
-128. Support for #9GXE64 in S3 server (Robin Cutshaw).
-127. Tiled pixmap/stipple expansion for the S3 server (David Wexelblat).
-126. Tiled pixmap/stipple expansion for Mach8 and 8514 servers (Hans Nasten).
-125. P9000 updates. Includes colour restoration fix, changes in Modes
- processing, and removal of banking support (Erik Nygren).
-124. 16 and 32 bpp TrueColor support for the P9000 server (Erik Nygren).
-123. Updates to AGX server. Includes font cache fixes, line fixes and
- some more tuning options (Henry Worth).
-122. Aperture driver for NetBSD (Matthieu Herrb).
-121. Added basic man page for beforelight (Rich Murphey).
-120. Swap order of libXExExt and libXext.
-119. Remove the temporary Mach32ShareCfb option.
-
-XFree86 3.0Ca (28 June 1994)
-118. NetBSD updates (Christos Zoulas).
-117. Various updates for Minix (Philip Homburg).
-116. Support for including the MIT-SCREEN-SAVER extension (David Holland).
-115. Fixes for AGX font cache code (Henry Worth).
-114. Banking support for P9000 (doesn't seem to work yet) (David Moews).
-113. Text restoration code for P9000 (Chris Mason).
-
-XFree86 3.0C (22 June 1994)
-112. Fix server crash when started with a lock key on.
-111. Recognise 864/964 PCI as capable of linear memory access.
-110. Fix ramdac access and clock probe problems with AGX server (Henry Worth).
-109. Support for Stealth 64 (S3 964 + Bt485) (Steven Parker).
-108. Fix for 4-pixel border problem with S3 864 pixmux (Harald Koenig).
-107. Allow the S3 SVGA driver to recognise the 864 and 964 (Harald Koenig).
-106. Improved 5434 support, and accelerated copyPlane1to8 for cirrus
- (Harm Hanemaayer).
-
-XFree86 3.0Bc (19 June 1994)
-105. Fix VT switch problem in 16bpp Mach32 when sharing cfb.
-104. Add framework for a ramdac Xconfig setting (like chipset).
-103. Reorganise mode/clock matching code (Marc Aurele La France).
-102. Fix server's client count problem after authorisation failure.
-101. Option "power_saver" to enable power-down mode on "green" monitors.
- So far this is implemented only for VGA (all depths) and S3 servers.
-100. Remove old "memaccess" S3 option.
- 99. Add Option "pci_hack" to work around a lockup problem reported with
- some 928-P cards.
- 98. Fix S3 928-P detection/reporting.
- 97. Don't allow S3 "nomemaccess" option for 864/964 chipsets.
- 96. Make cbrt a library -- removes the need for NeedCbrt on Linux
- (Marc Aurele La France).
- 95. Change ATI SVGA driver to Marc Aurele La France's version
- (includes support for Vga2 and Vga16).
- 94. Function prototyping for AGX, and prototype cleanup in vga16 (Stuart
- Anderson).
- 93. Fix (not complete?) problem with dual-headed servers.
-
-XFree86 3.0Bb (16 June 1994)
- 92. AGX server (Henry Worth).
- 91. Accelerated support for 90C33 (Bill Conn).
- 90. Use s3ImageWriteFunc to load S3 cursor.
- 89. Fix problems with SPEA Mercury for clocks > 120MHz (Norbert Distler).
- 88. Code to program S3 GENDAC clock (Clocks "s3gendac") (Jon Tombs).
- 87. Fix some build problems with lbx.
- 86. Build servers with -DAVOID_GLYPHBLT.
-
-XFree86 3.0Ba (11 June 1994)
- 85. Preliminary ELSA Winner 2000PRO support (S3 964) (Dirk Hohndel).
- 84. Updates to S3 864 support (Harald Koenig).
- 83. Merge in XC fix-02.
-
-XFree86 3.0B (6 June 1994)
- 82. bitblt fixes (including big memory leak) for 8514, Mach8, Mach32 and
- S3 servers (Tiago Gons).
- 81. line/seg fixes for 8514 and Mach8 servers (Tiago Gons).
- 80. Remove separate cfb libs for Mach32 (only compile-tested so far).
- 79. Restore hw/xfree86/etc directory.
- 78. Update bsdinst.sh for SVR4 (use /usr/ucb/install, and run 'mcs -d'
- as well as strip).
- 77. Cirrus driver updates (Harm Hanamaayer).
- 76. Mach support (Robert Baron).
-
-XFree86 3.0Ac (1 June 1994)
- 75. Amoeba fixes (Kees Verstoep).
- 74. Fixes for Mach32 dashed line/segment code (Mike Bernson).
- 73. Preliminary 90C33 support (Bill Conn).
- 72. NetBSD.cf updates, and README.NetBSD added (Matthieu Herrb).
- 71. Preliminary support for the ELSA Winner 1000PRO-VL-2 (Harald Koenig).
- 70. Add "weight" and "displayWidth" entries to ScrnInfoRec.
- 69. Banked vga2 server (Pascal Haible).
- 68. Font cache changes for the Mach8 and 8514 servers. This allows them
- to work without a font cache, and should allow their use with 512k
- Mach8 cards. (Hans Nasten)
- 67. Don't include XIE in the Mono and VGA16 servers (it doesn't handle
- bit-order != byte_order).
- 66. Add LinkKit and updated VGADriverDoc.
-
-XFree86 3.0Ab (28 May 1994)
- 65. Add support for gzip'd man pages on FreeBSD.
- 64. P9000 server (Erik Nygren).
- 63. Video7 SVGA driver (Craig Struble).
- 62. CL6420 SVGA driver (Manfred Brands).
- 61. Set default paths for xdm for *BSD (so {Give,Take}Console can find chown).
- 60. Add a hw/xfree86/doc directory, and start putting the docs back.
- 59. Fixes for Amoeba support (Kees Verstoep).
-
-XFree86 3.0Aa (22 May 1994)
- 58. Merge in XC public fix-01.
- 57. Updates to FreeBSD.cf.
- 56. Add xf86site.def which can optionally be included from site.def.
- 55. SCO support and some bug fixes (David McCullough).
- 54. Some initial untested S3 864/964 code (Harald Koenig).
- 53. Fix for bsdLib.tmpl.
- 52. STREAMSCONN fixes for xdm, chooser and Xserver XDMCP code (Stuart
- Anderson).
-
-XFree86 3.0A (15 May 1994)
- 51. SVGA driver for the AL2101 chipset (Paolo Severini).
- 50. SVGA driver for the MX68000 and MX68010 chipsets (Frank Dikker).
- 49. Updates to the Cirrus driver (Harm Hanemaayer). Includes code cleanup,
- mono support, improved handling of the 5430, 5434, and transparent
- text acceleration.
- 48. Preliminary code for detecting S3 864/964 and AT&T 20C498 (Harald Koenig).
- 47. Generic VGA256 driver -- works only at 320x200 (Harm Hanemaayer)
- 46. Fixes for vga2/mfb and vga16/mfb Imakefiles.
- 45. Include SuperProbe.
-
-XFree86 3.0d (8 May 1994)
- 44. Add missing files to vga2/mfb.
- 43. Set VendorString and VendorRelease up for XFree86.
- 42. Workaround for STREAMSCONN Xdmcp problems (Xserver and xdm).
- 41. 16 bit (directcolor) support for Mach32 (Craig Groeschel).
- 40. Minix 3886vm support (Philip Homburg).
-
-XFree86 3.0c (6 May 1994)
- 39. Fixes for Solaris X86 (Doug Anson).
- 38. No longer link the Mono and VGA16 servers with Xserver/mfb/libmfb.a.
- 37. Updates to the VGA16 code (Gertjan Akkerman). Includes banking support
- (old-style rather than the Xsvga method), staticcolor visual, oak
- driver enabled, added some missing files to vga16/mfb.
- 36. Fix Linux shared libs (Orest Zborowski)
- 35. Apollo mono driver (Hamish Coleman)
- 34. Support for dual-headed vga2+mono and vga16+mono servers (Pascal Haible).
- 33. Reorganisation of the mono server (Pascal Haible). Includes removing
- xfree86/bdm2, xfree86/hga2, and replacing them with xfree86/mono.
- 32. Fixes for PEX font compiler (from our 940327a snapshot).
- 31. Fix SIOCGIFCONF code in xdm and Xserver for SVR4 (with Lachman TCP)
- and FreeBSD. There are still xdm and chooser problems on SVR4.
-
-XFree86 3.0b (29 April 1994)
- 30. Add S3 driver to SVGA server.
- 29. Disable accelerated text blit for Cirrus 543x.
- 28. Reorder some of the Bt485 code, and get clock doubling working again
- without pixmux.
- 27. Fix image shift problem for pixmux on #9 cards (Robin Cutshaw).
- 26. Fix initialisation bug for Cirrus 62{2,3}5 cards (Harm Hanemaayer).
- 25. Remove 8514 monitor ID check in Mach8 server.
- 24. Fix for problem with compaq driver.
- 23. Add "no_bitblt" option for the cirrus driver.
- 22. Recognise the 5429 in the cirrus driver.
- 21. Disable interrupts while programming the ICD2061A.
- 20. sync-on-green support for the TI3020.
- 19. Move S3 clock doubler setting from icd2061ClockSelect() to s3Init().
- 18. Fix dac_8_bit for Bt485 cursor, and fix Bt cursor blanking problem.
- 17. S3 pixmux support for STB Pegasus, and cleanup of pixmux and icd code.
- (Leonard Zubkoff).
- 16. Change "fifo_conservative" setting for CLGD543x.
- 15. Don't reserve video memory for HW cursor on S3 when using a RAMDAC cursor.
- 14. Allow the "8clocks" option to force 9 clocks instead of 17 on WD90C3{0,1}
- cards.
- 13. Fix some DEALLOCATE_LOCAL problems in accel servers.
- 12. Support for Bt485 on #9 cards (Robin Cutshaw).
- 11. Fixes for Cirrus driver (Harm Hanemaayer).
- 10. Fix for text restore problem on some S3 cards (Jon Tombs).
- 9. Workaround for Mach32 detection problem on some platforms.
- 8. Fix incorrect usage of $(DESTDIR) in some lnxLib.rules.
- 7. Code to detect 928-P (Harald Koenig).
- 6. Fix cbrt() in mi/ so that it can handle negative arguments.
- 5. Fix for line clipping problem in cfb.banked (Glenn Lai).
-
-XFree86 3.0a (28 April 1994)
- 4. Add XFree86 server names to the list in xinit.
- 3. Set XawI18nDefines correctly for SVR4.0.
- 2. Update ncr.cf to pick up AllocateLocalDefines when building servers.
- 1. Fold in client/lib OS support not picked up by the XC.
-
-XFree86 3.0 (26 April 1994)
-
-
-$XFree86: xc/programs/Xserver/hw/xfree86/CHANGELOG,v 3.3156 2004/02/29 04:25:24 martin Exp $
-
-
-
-
-
diff --git a/hw/xfree86/doc/changelogs/CHANGELOG.ND b/hw/xfree86/doc/changelogs/CHANGELOG.ND
deleted file mode 100644
index 5f0d87780..000000000
--- a/hw/xfree86/doc/changelogs/CHANGELOG.ND
+++ /dev/null
@@ -1,418 +0,0 @@
-XFree86 3.9jw (31 July 1998)
-1327. Fix a crash in the chips driver when the chipset is specified in the
- config file (#1846, Taketoshi Sano).
-1326. Add more Pm2 acceleration and add DPMS support for all glint chips
- (#1844, Alan Hourihane).
-1325. Add 8x8 pattern trapezium fills, screen to screen colour expansion
- to the MGA driver, and fix a clipping bug with colour expansion
- (#1843, Mark Vojkovich).
-1324. Add Screen->Screen colour expansion to XAA (#1841, Mark Vojkovich).
-1323. Fix negative widths and heights in XAA's wide line code (#1840,
- Alan Hourihane).
-1322. Fix an XAA tiled rect alignment problem (#1839, David Bateman).
-1321. Fix XAA 8x8 mono for 24bpp.
-
-XFree86 3.9jv (24 July 1998)
-1320. Fix the BitsPerPixel() macro in cfb.h for 24bpp.
-1319. Update XAA docs (#1838, Mark Vojkovich).
-1318. Add colour expansion stipples to XAA (#1837, Mark Vojkovich).
-1317. Add a stipple replacement for the MGA driver that takes into account
- the 256K blit maximum per operation (#1836, Mark Vojkovich).
-1316. Fix C&T memory clock messages (#1834, David Bateman).
-1315. Add some new colour expansion code for older tseng chips (W32/W32i)
- (#1832, Koen Gadeyne).
-1314. Preliminary tseng XAA support (#1832, Koen Gadeyne).
-1313. Resync the tseng driver with the main branch version (#1832,
- Koen Gadeyne).
-1312. Some C&T updates (#1833, David Bateman).
-1311. Speed up GXcopy for XAAFillCacheBltRects (#1831, David Bateman).
-1310. Remove some code duplication in the C&T driver (#1830, David Bateman).
-1309. Add 8x8 colour and mono fills for 8bpp and 16bpp for all C&T chips
- and 8x8 mono fills at 24bpp for HiQV chips (#1830, David Bateman).
-1308. Fix problems with XAA 8x8 patterns (#1830, David Bateman).
-1307. Get 4bpp working with C&T chipsets, and add the ShowCache option to
- the C&T driver (#1829, David Bateman).
-
-XFree86 3.9ju (19 July 1998)
-1306. Calculate DPI from the DisplaySize entry in the Monitor section
- if present.
-1305. Implement "tri-state" options.
-1304. Move most of cfbcmap.c to mi.
-1303. Update the C&T driver for recent XAA ImageWrite changes, and fix
- some bugs in CHIPSHiQVWritePixmap (#1824, Nozomi Ytow).
-1302. Optimised horizontal and vertical lines for MGA (#1823, Mark Vojkovich).
-1301. Fix some XAA bugs (#1822, Mark Vojkovich).
-1300. Major updates to the XAA documentation (#1821, Mark Vojkovich).
-1299. Update XAA for the EnterVT type change (#1821, Mark Vojkovich).
-1298. Add scanline ImageWrites to XAA (#1821, Mark Vojkovich).
-1297. Make XAA Alpha friendly (#1821, Mark Vojkovich).
-1296. Set pScrn->vtSema to FALSE in ChipCloseScreen() after restoring the
- video hardware state.
-1295. Move xf86SetDpi() calls into PreInit().
-1294. Don't show module version info on subsequent loads.
-
-XFree86 3.9jt (18 July 1998)
-1293. Add IBM 528A to the ramdac module (#1820, Alan Hourihane).
-1292. Make it a fatal error when any AddScreen() call in XFree86's InitOutput()
- fails.
-1291. Change the type of EnterVT() from void to Bool, and make it a fatal
- error for this to fail.
-1290. Add a helper xf86SetBlackWhitePixels() to set the values according
- to the presence of the -flipPixels command line option.
-1289. Add xDpi and yDpi fields to the ScrnInfoRec, and a helper xf86SetDpi()
- to set them.
-1288. Allow a bus type prefix for BusID strings.
-1287. Remove the global xf86VTSema (David Bateman, David Dawes).
-1286. Complete the XAA 8x8 pattern caching (#1817, Mark Vojkovich).
-1285. Add a missing Millennium accel flag (#1816, Mark Vojkovich).
-1284. Make the CRTC blanking setting exact rather than allowing some unblanked
- overscan area (#1813, Koen Gadeyne).
-1283. Prelminary TGA (AXP only) driver (#1811, 1818, Alan Hourihane).
-1282. Prelminary Bt485 ramdac support for the ramdac module (#1809, 1815,
- Alan Hourihane).
-1281. OS-support and config updates for AXP (#1808, Alan Hourihane).
-1280. Add code to the ramdac module for initialising gamma correction
- (1807, Alan Hourihane).
-1279. Fix C&T HiQV PCI bus support (#1802, David Bateman and Nozomi Ytow).
-1278. Add HW cursor support for the Permedia2v (#1812, Alan Hourihane).
-1277. Remove most vgahw dependencies from the glint driver (#1810,
- Alan Hourihane).
-1276. Add preliminary support for the Permedia2v to the glint driver
- (#1800, 1810, Alan Hourihane).
-1275. Some C&T updates (#1791, 1796, Nozomi Ytow, David Bateman).
-1274. Reintegrate Harm's XAA SolidArc code (#1814, David Bateman).
-1273. Make sure assembler usage is set correctly for x86 when MakeDllModules
- is true (#1806, David Bateman).
-1272. Fix too little data being sent by the XAA BitmapScanline when the
- number of dwords sent was divisible by four (#1806, David Bateman).
-1275. Fix for the swapping of fg and bg in the XAA WriteBitmap primitives
- (#1806, David Bateman).
-1274. Add TRIPLE_BITS_24BPP code for the XAA WriteBitmap function (#1806,
- David Bateman).
-1273. Attempts at optimised 6 and 8 pixel drawTETextScanline functions
- in assembler (#1789, 1806, David Bateman).
-1272. Remove some redundant extern declarations (xf86Procs.h & xnest)
- (#1790, Marc La France).
-1271. xf4bpp now loads xf1bpp (#1790, Marc La France).
-1270. Make vgahw module load cfb (re: cfbExpandDirectColors()) (#1790,
- Marc La France).
-1269. Fix vgahw's saving/restoring of text modes, overscan handling
- and memory leaks (#1790, Marc La France).
-1268. Fix compilation warnings in libc wrapper (Marc La France).
-1267. Rewrite VGA generic driver (Marc La France).
-1266. Fix bug that nullified the driver's mode list when deleting the
- second-to-last mode (#1790, Marc La France).
-1265. Reduce verbosity level of the message that gets printed when
- a driver's ValidMode() rejects a mode (#1790, Marc La France).
-1264. Allow drivers to supply a default mode (#1790, Marc La France).
-1263. Allow for more than 4 (== MAXSCREENS) drivers to probe a system
- (1790, Marc La France).
-1262. Fix xf4bpp integration (#1790, Marc La France).
-1261. Implement -dpi flag and -flippixels flags (#1790, Marc La France).
-1260. Fix CLKDIV2 support (#1790, Marc La France).
-1259. Implement multiscanned modes (#1790, Marc La France).
-1258. Fix some depth/bitsPerPixel confusion (#1790, 1799, Marc La France).
-1257. Fix memory leaks in the MITSHM and dix pixmap code (#1790,
- Marc La France).
-1256. Fix a minor header problem in the Type1 code (#1790, Marc La France).
-
-XFree86 3.9js (12 July 1998)
-1255. Make sure DPMSEnabled gets set correctly.
-1254. Use a BlankScreen function with xf86GetClocks() that takes more
- appropriate arguments than SaveScreen.
-1253. Fix SEGV in TsengProbe() when there are no Tseng cards present.
-1252. Add caching of 8x8 patterns to XAA (#1787, Mark Vojkovich).
-1251. XAA updates, including TRIPPLE_BITS_24BPP, check QWORD padding in
- the font rendering, and an attempt at Pentium optimised assembler
- for 6 pixel wide TE font (#1785, David Bateman).
-1250. Fix an omission in xf86MatchPciInstances() (#1786, Kevin Martin).
-1249. Numerous C&T driver fixes and HW cursor support added (#1781-1783,
- David Bateman).
-1248. Add support for 1, 8, 16, 32 and 64 bit interleaves to the XAA
- hardware cursor code (#1780, David Bateman).
-1247. Fix a segfault in xf86DPMSInit() (#1780, David Bateman).
-1246. Some updates to the ramdac module (#1777, 1778, Alan Hourihane).
-1245. Add 500TX support to the glint driver (#1777, Alan Hourihane).
-1244. Fix parsing of ModeLine keyword (#1779, Keldon Jones).
-
-XFree86 3.9jr (5 July 1998)
-1243. Avoid mishandling 64-bit PCI base addresses, and "safely" avoid them.
-1242. Fix font modules so that clients can use the font libraries
- (#1774, Alan Hourihane, David Dawes).
-1241. Fix for XAA GC problems that show up when backing store is enabled
- (#1775, Mark Vojkovich).
-1240. Fix for xf86MatchPciInstances() (#1773, Alan Hourihane).
-1239. Unload drivers in InitOutput that end up not being used.
-1238. Make the ScrnInfoRec.privates persistent rather than per-generation
- data.
-1237. Remove the "requiredModules" field from the ScrnInfoRec and have the
- drivers load the modules they need explicitly. The loader and parts
- of the design have been updated to take this into account.
-1236. Remove refcount code added in change 1175, and fix problem with the
- preexisting refcount code not incrementing the count when modules
- are loaded second and subsequent times.
-1235. Add more info for LoaderPrint{Symbol,Address} functions (1772,
- Stuart Anderson).
-1234. Fix some Linux/Alpha loader problem (#1772, Stuart Anderson).
-
-XFree86 3.9jq (3 July 1998)
-1233. Loadable font modules (#1767, Alan Hourihane).
-1232. Add Option "ShowCache" to allow scrolling down to see part of the
- pixmap cache (#1770, Mark Vojkovich).
-1231. Fix MGA loss of sync problem when scrolling the desktop (#1770,
- Mark Vojkovich).
-1230. Add XAA cursor support to the MGA driver (#1770, Mark Vojkovich).
-1229. Have XAA wrap the EnterVT and LeaveVT functions so that it can
- invalidate the pixmap cache. Also further progress towards
- getting 8x8 patterns cached (#1769, Mark Vojkovich).
-1228. XAA cursor support. Only the TVP3026's style cursor data packing
- (ie. source and mask not interleaved) is supported at the moment
- (#1768, 1771, Mark Vojkovich).
-1227. Implement correct CRTC blanking timings (Koen Gadeyne).
-1226. Lots up updates to the Tseng driver (Koen Gadeyne).
-1225. Chips & Technologies driver converted to ND (#1761, David Bateman).
-1224. Ramdac/colourmap module. Support for IBM ramdac so far (#1759, 1760,
- Alan Hourihane).
-1223. Set the Crtc[HV]Adjusted flags more appropriately in
- xf86SetCrtcForModes() (#1757, David Bateman).
-1222. Change xf86MatchPciInstances() to work with drivers supporting chips
- from more than one vendor (#1753, 1754, Alan Hourihane).
-
-XFree86 3.9jp (27 June 1998)
-1221. Preliminary tseng driver (Koen Gadeyne).
-1220. Add the Xv extension (from the R5 contrib) (#1749, Mark Vojkovich).
-1219. Fix a rendering error in cfb's bit expansion code that can show
- up with a very complex clip mask (#1747, Jens Owen).
-1218. Allow XAA's pixmap cache to use smaller slots when the larger ones
- are not available (#1751, Mark Vojkovich).
-1217. Document the offscreen memory manager (#1747, Mark Vojkovich).
-1216. Fixes and temporary workarounds for mibank problems detected by xf4bpp
- (#1743, Marc La France).
-1215. Fix a XF68_FBDev typo (#1743, Marc La France).
-1214. Fix up cfb and mfb header files (#1743, Marc La France).
-1213. Fix up xf1bpp's integration into the new design (#1743, Marc La France).
-1212. Introduce xf4bpp, a port of vga16 to the new design (#1743,
- Marc La France).
-1211. Allow for zero to be a valid setting for chipID and chipRev. These
- are now initialised to -1 to indicate when they have not been set.
-
-XFree86 3.9jo (22 June 1998)
-1210. Add accelerated solid trapezoid fills to the MGA driver (#1740,
- Mark Vojkovich).
-1209. Add accelerated polygons and wide lines to XAA, and fix some pixmap
- cache problems (#1739, Mark Vojkovich).
-1208. Move the offscreen memory manager from XAA to xfree86/common
- (#1739, 1741, Mark Vojkovich).
-1207. Fix a typo in the glint driver (#1737, Alan Hourihane).
-1206. Resync the parser with the common layer data structures, removing
- some obsolete things and adding a few missing things.
-1205. Include the class/subclass/interface values in pciVideoRec.
-
-XFree86 3.9jn (21 June 1998)
-1204. Replace the "MAGIC" module init interface with the more general
- SetupProc/TearDownProc interface.
-1203. Fix some typos in the DESIGN doc (Koen Gadeyne).
-1202. Add some more acceleration to XAA, and support for it to the MGA
- driver (#1732, 1733, 1735, Mark Vojkovich).
-1201. Preliminary pixmap cache support and offscreen memory manager added
- to XAA (#1732, 1734, 1736, Mark Vojkovich).
-1200. Fix linepitch handling in the glint driver (#1731, Alan Hourihane).
-
-XFree86 3.9jm (15 June 1998)
-1199. Add preliminary infrastructure for different pixmap and framebuffer
- formats.
-1198. Start a module/driver name space registry.
-1197. Accelerated glint driver (#1725-1727, Alan Hourihane).
-1196. Resync the PCI IDs.
-1195. Update xf86GetPciInfoForScreen() and add a similar
- xf86GetIsaInfoForScreen().
-1194. Update DGA support code in the common layer.
-1193. Update DPMS support code in the common layer.
-1192. Reintroduce xf86GetClocks() as a helper.
-
-XFree86 3.9jl (9 June 1998)
-1191. Bring over the serial port functions (from Metro Link).
-1190. Bring over the os-support/pmax code.
-1189. Change the interface for xf86MatchPciInstances() to use separate
- lists of PCI chipset names and IDs.
-1188. Fix some build problems on SVR4.0 and Solaris.
-1187. Rename xf1bpp_mfb* entry points to xf1bpp (#1714, Marc La France).
-1186. Port some recent vga16 changes over to the nd branch (#1714,
- Marc La France).
-1185. Remove CloseScreen() and SaveScreen() from ScrnInfoRec's (#1714,
- Marc La France).
-1184. m68k's XF86_FBDev now uses low-level backing store functions
- during VC switches (#1714, Marc La France).
-1183. Push out backing store and banking wrapper initialisation to the
- to the callers of the various <framebuffer>ScreenInit()'s. This allows
- XAA to wrap screens after banking, but before backing store (#1714,
- Marc La France).
-1182. Allow screen wrappers to free their private data on server reset and
- termination (#1714, Marc La France).
-1181. Minimise the number of public globals in the common layer, and replace
- those the drivers need with functions to access their values.
-1180. Update the PCI code to match that on the main branch.
-
-XFree86 3.9jk (4 June 1998)
-1179. Change the Xserver binary name to "XFree86".
-1178. Add support for building a static Xserver.
-1177. Clean up some of the module Imake config stuff.
-1176. Fix generic vga driver probe crash.
-1175. Keep a reference count for loading modules and avoid loading the
- same module twice.
-1174. A first attempt at ABI versioning the modules and checking it
- in the loader.
-1173. Add a canonical naming for modules, without things like the "lib"
- prefix or "_drv" suffix.
-1172. Add the -layout and -screen options to allow a layout or screen section
- to be specified from the command line.
-1171. Make the interface in the xf86Find{Vendor,Layout} parser functions
- consistent with the others.
-
-XFree86 3.9jj (31 May 1998)
-1170. Add call to LoaderCheckUnresolved().
-1169. Add finding the correct Display subsection to the xf86SetDepthBpp()
- helper (David Dawes).
-1168. Some os-support layer cleanups (more required).
-1167. Add a new helper to simplify the driver Probe() code for PCI cards
- (David Dawes).
-1166. Remove some fields from the ScrnInfoRec.
-1165. Add a set of option handling functions and helpers to the common layer.
- These allow the option data structures to be opaque to the drivers
- (David Dawes).
-1164. Add xstrdup (Xstrdup) to os/utils.c, and treat xf86strdup the same way
- as xf86malloc in the libc wrappers.
-1163. Fix XAA 14 pixel width fonts (#1699, Mark Vojkovich).
-1162. Fix XAA CopyGC crash (#1698, Mark Vojkovich).
-
-XFree86 3.9ji (23 May 1998)
-1161. MGA Support for the new XAA code (#1697, Mark Vojkovich).
-1160. New XAA code (#1695, 1696, Mark Vojkovich).
-1159. Millennium 2 (inc AGP) support for the mga driver (#1697,
- Mark Vojkovich).
-
-XFree86 3.9jh (22 May 1998)
-1158. Fix 'Unknown symbol type 1e' messages in the a.out loader
- (#1683, Matthieu Herrb).
-1157. Loader updates, including Alpha and PowerPC support (#1467, 1666,
- Metro Link).
-1156. Add '-Wall' to gcc compile options
-1155. Add Xarch.h (#1399, Metro Link).
-1154. Resync libc/ansic wrappering.
-
-XFree86 3.9jg (3 May 1998)
-1153. Remove ilbm's call to miRegisterGCPrivateIndex(), which no longer
- exists (#1670, Marc La France).
-1152. Fix problems with mi generic functions in mibank (#1670,
- Marc La France).
-1151. Symbolically link xf86_ansic.h so osPexFont.c can #include it
- (#1670, Marc La France).
-1150. Fix opaque types in xf86_libc.h (#1670, Marc La France).
-1149. Fix a typo in mibank which makes miScanLineWidth() always fail.
-1148. Fix various missing symbols that show up when attempting to use
- non-dlopen modules.
-
-XFree86 3.9jf (18 April 1998)
-1147. Add xf1bpp framebuffer for use by vga2 and mono (i.e. hga2)
- drivers. This is just a copy of mfb compiled for the bitmapScanlinePad
- and bitmapBitOrder needed by these hardware framebuffers (#1636,
- Marc La France).
-1146. A mode that fails validation (for whatever reason) no longer
- affects the resulting virtual resolution (#1636, Marc La France).
-1145. miScanlineWidth() is now passed the hardware plane pixmap format
- rather than nBankBPP (the harware plane bpp) and nPixelBPP (the
- "total" bpp), and have xf86ValidateModes() call miScanLineWidth()
- to determine an appropriate line pitch for the virtual resolution
- requested (#1636, Marc La France).
-1144. Remove the helpers' concept of pixelArea as this can be derived
- from videoRam and bitsPerPixel, express pitchInc in bits, and
- pass apertureSize to mode validation helper (#1636, Marc La France).
-1143. Introduce the new mi banking wrapper (not yet used) (#1636,
- Marc La France).
-1142. Make each screen keep track of the pixmap formats and display-
- wide attributes it needs in its ScreenInfoRec. InitOutput()
- can then ensure consistency before adding the screens to the
- display (#1636, Marc La France).
-1141. Use low-level backing store functions to save/restore the
- screen during VC switches (doesn't work with vga16) (#1636,
- Marc La France).
-1140. Move a copy of the backing store low-level function pointers
- into the ScreenRec. This allows them to be wrapped (#1636,
- Marc La France).
-1139. Rename [GS]etRootPixmap screen entries to [GS]etScreenPixmap
- and add [GS]etWindowPixmap entries. Some may not be needed and
- can be removed later (#1636, Marc La France).
-1138. Remove cfbScreenInitLong() entries. They are not needed since the
- RGB ordering and masks can be fixed after calling cfbScreenInit()
- (#1636, Marc La France).
-1137. Fix the saving and restoring of PSZ #define in cfb??.h headers,
- add copyright notice to them, and get right Imakefile to include
- them in the link kit (#1636, Marc La France).
-1136. Fix oversight in 1133 (#1636, Marc La France).
-1135. Some include file fixes (#1539, Marc La France).
-
-XFree86 3.9je (14 February 1998)
-1134. Move framebuffer ModuleInit funtions into separate files (#1475,
- Marc La France).
-1133. Move the following GC privates to the GC structure proper:
- pRotatedPixmap, pCompositeClip, fExpose, freeCompClip. This is in
- preparation for the banking mi wrapper (#1451, Marc La France).
-1132. Minor bug fix to mfb and afb framebuffers (#1443, Marc La France).
-1131. Ensure window and GC privates are aligned on a sizeof(long)
- boundary (#1442, Marc La France).
-1130. Minor optimisation of cfb's ImageGlyphBlt entry, required for
- the new banking code (#1431, Marc La France).
-
-XFree86 3.9jd (1 February 1998)
-1129. Update the generic VGA driver for these changes (David Dawes).
-1128. Flesh out and update the design document, and add it to the source
- tree (in xc/programs/Xserver/hw/xfree86/DESIGN) (David Dawes).
-1127. Working non-accel MGA driver (Millennium I only) (David Dawes).
-1126. Update parser (from Metro Link).
-1125. Fill in some missing bits of infrastructure, and fix some bugs there
- (David Dawes).
-
-XFree86 3.9jc (16 January 1998)
-1124. A start at modifying non-accel MGA driver for new design (David Dawes).
-1123. Pick up multimedia/video PCI devices in xf86GetPCIVideoInfo()
- (David Dawes).
-1122. Fix some header usage and missing prototypes (David Dawes).
-1121. Continue filling in missing bits of the new design infrastructure
- (David Dawes).
-1120. Get the generic vga driver working (using dll modules on FreeBSD)
- (David Dawes).
-1119. Reorganise the vgahw module (David Dawes).
-
-XFree86 3.9jb (25 September 1997)
-1118. Continuation of 1117.
-
-XFree86 3.9ja (29 July 1997)
-1117. Start converting the generic vga driver to the new design (Dirk Hohndel,
- David Dawes).
-1116. Add flags to allow to build some modules as shared objects (Dirk Hohndel).
-1115. Fix dll loader to work on Linux (and re-fix it to work on FreeBSD
- again) (Dirk Hohndel, David Dawes).
-1114. Add helper functions for various stages of the server (David Dawes,
- Dirk Hohndel).
-1113. Add glue code to interface with new parser and create internal data
- structures (David Dawes, Dirk Hohndel).
-1112. Split up vga256/vga into vgahw and vgafb (Dirk Hohndel).
-1111. New parser for the config file (Stuart Anderson).
-1110. Start work on the new design.
-
-XFree86 3.9j (12 July 1997)
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-$XFree86: xc/programs/Xserver/hw/xfree86/CHANGELOG.ND,v 1.2 1998/07/31 10:41:14 dawes Exp $
diff --git a/hw/xfree86/doc/changelogs/CHANGELOG.R5 b/hw/xfree86/doc/changelogs/CHANGELOG.R5
deleted file mode 100644
index 5f8e03a19..000000000
--- a/hw/xfree86/doc/changelogs/CHANGELOG.R5
+++ /dev/null
@@ -1,1249 +0,0 @@
-XFree86 2.1.1 (4 May 1994)
- 36. Fix server crash on reset problem in Mach32 and S3 servers
- 35. Fix typos in apollo driver
- 34. Fix for Imake config problem on ISC 4.0
- 33. ET3000 memory probe fix for SuperProbe
- 32. Documentation updates
- 31. Some updates for NetBSD-current
-
-XFree86 2.1.0B (26 April 1994)
- 30. Disable accelerated text blit for Cirrus 543x
- 29. Reorder some of the Bt485 code, and get clock doubling working again
- without pixmux
- 28. Disable the PIXMUX_SWITCH_HACK stuff -- it doesn't seem needed any more
- 27. Fix image shift problem for pixmux on #9 cards (Robin Cutshaw)
- 26. Fix initialisation bug for Cirrus 62{2,3}5 cards (Harm Hanemaayer)
- 25. Remove 8514 monitor ID check in Mach8 server
- 24. Updates to the NetBSD README (Matthieu Herrb)
- 23. Hey Rocky, watch me unbreak the Compaq driver... This time for sure...
-
-XFree86 2.1.0Ab (16 April 1994)
- 22. Rewrite of ATI SVGA driver (Marc La France)
- 21. Add "no_bitblt" option for the cirrus driver
- 20. Recognise the 5429 in the cirrus driver
- 19. Disable interrupts while programming the ICD2061A
- 18. sync-on-green support for the TI3020
- 17. Move S3 clock doubler setting from icd2061ClockSelect() to s3Init()
- 16. Fix dac_8_bit for Bt485 cursor, and fix Bt cursor blanking problem
- 15. SuperProbe updates
-
-XFree86 2.1.0Aa (10 April 1994)
- 14. BDM2 apollo driver (Hamish Coleman)
- 13. S3 support for switching between pixmux and non-pixmux modes
- (Amancio Hasty)
- 12. S3 pixmux support for STB Pegasus, and cleanup of pixmux and icd code
- (Leonard Zubkoff)
- 11. Change "fifo_conservative" setting for CLGD543x
- 10. Updates for NetBSD-current, including bumping shared lib revs
-
-XFree86 2.1.0A (7 April 1994)
- 9. Don't reserve video memory for HW cursor on S3 when using a RAMDAC cursor
- 8. Allow the "8clocks" option to force 9 clocks instead of 17 on WD90C3{0,1}
- cards
-
-XFree86 2.1.0a (6 April 1994)
- 7. Fix some DEALLOCATE_LOCAL problems in accel servers
- 6. Support for Bt485 on #9 cards (Robin Cutshaw)
- 5. Fixes for Cirrus driver (Harm Hanemaayer)
- 4. Fix for text restore problem on some S3 cards (Jon Tombs)
- 3. Workaround for Mach32 detection problem on some platforms
- 2. Fix incorrect usage of $(DESTDIR) in some lnuxLib.rules and x386.cf rules
- 1. Code to detect 928-P (Harald Koenig)
-
-XFree86 2.1 (11 March 1994)
-151. OS README updates (affect individual OSs only)
-150. Fix AltGr handling for Linux (affects Linux only)
-149. Comment out the unused s3Save() and s3Restore() functions -- a typo in
- some unreachable code may cause problems with some compilers (should not
- affect any OSs)
-148. Linux compile-time fix for fonts/PEX/lex.l (affects Linux only)
-147. Late cirrus fix for large tiles
-146. Fix for LinkKit site.def and Imakefile (remove dbm references)
-
-XFree86 2.0Z (8 March 1994)
-145. Fix text/graphics mode switching for pixmux with SPEA Mercury. This
- code is now reasonably stable (interlace support is still absent though)
- (Norbert Distler)
-144. Fix for cirrus stipple fill when virtual width is not a multiple of 32
-143. Linux keyboard updates
-
-XFree86 2.0Ce (7 March 1994)
-142. Preliminary support for Bt485 pixel multiplexing on the SPEA Mercury
- card (Norbert Distler)
-141. More documentation updates
-140. SuperProbe updates (ATI and Weitek fixes)
-139. Fix for second MB cirrus BitBLT but -- BitBLT now turned back on for
- 2MB cards (Wolfgang Jung)
-
-XFree86 2.0Cd (6 March 1994)
-138. Default to building shared libs for FreeBSD
-137. Updates to cirrus driver: (Harm Hanemaayer)
- New Option flag "no_2mb_banksel" for cards that have 2MB in the form
- of 512kx8 DRAMS (4 chips)
- Disable BitBLT engine use when using more than 1MB because there
- are problems
- New text bitmap transfer code
-136. Documentation updates
-135. Fix mi/cbrt.c so it handles negative arguments.
-
-XFree86 2.0Cc (5 March 1994)
-134. Update x386/etc/console.h to current version
-133. Some documentation updates (including removing README.XS3)
-132. Updates to cirrus driver: (Harm Hanemaayer)
- New option flags "fifo_conservative" and "fifo_aggressive" to
- control the CRTC fifo threshold.
- Reduce clock limit for the 5420
- Remove accelerated PolyGlyphBlt -- it causes problems
-131. Modify pvga1 driver to detect the 90C24 and treat it as a 90C30
-130. Support for the SC15025 RAMDAC in 8-bit/RGB mode (requires
- the "sc15025" and "dac_8_bit" options) (Helmut Geyer)
-129. Fix vga colourmap save/restore when using a RAMDAC in 8-bit mode (Helmut
- Geyer)
-
-XFree86 2.0Cb (3 March 1994)
-128. Fix for "snow" problems on WD90C3x cards with 80MHz clock (Anders Bostrom)
-127. Fixes for compilation problems on Mach and ISC
-126. Support for 8-bit/RGB for the AT&T 20C490/491 ramdacs (S3 server).
- There is no auto-detect, so the "att_20c490_1" Option must be
- specified (together with the "dac_8_bit" Option)
-125. Added some sample patches from Gertjan Akkerman which document some
- useful changes which could me made to the VGA16 server (these are
- in x386/vga16/doc/).
-124. Fix Mach8 and Mach32 server hang when run on a card with no Mach chip
-123. Update xterm's terminfo file
-122. Install mit/config/README in lib/X11/config
-121. Modify Trident driver to recognise the 9000i, 9200CX, 9100B and 9420
- chipsets. The first is treated as a 9000, and the last three are
- treated as a 8900CL.
-
-XFree86 2.0Ca (2 March 1994)
-120. Fix CR60 setting for clocks > 100MHz (S3 server)
-119. Fix cirrus compilation on SVR4, and bsd_init.c typo
-118. Enable Home/End esc sequences for xterm on all OSs
-117. SuperProbe register unlock fixes
-
-XFree86 2.0C (1 March 1994)
-116. Allow the MIT-SHM extension to be disabled at run-time on BSD systems
- when kernel support for sysv-shm isn't present
-115. Enable Home/End esc sequences for xterm (Linux only -- should this be
- extended?)
-114. Set default xterm tty parameters to reasonable values (fixes problems
- seen when using xdm)
-113. gccmakedep fix (David McCullough)
-112. Special-case code for lines where this is one rectangle in the clip
- region -- for Mach32 (Craig Groeschel)
-111. Update to compaq probe code -- hopefully this will reduce the number
- of false positives
-110. Major updates to SuperProbe
-109. Cirrus driver patches
-
-XFree86 2.0Bb (27 February 1994)
-108. Removed experimental "cr60=..." options (S3), and made CR60=0xFF
- the default setting. The "dram_{slow,med,fast}" options still remain
- as un-documented options (just in case).
-107. Manual page updates
-106. Support for linear fb location on Mach32 PCI cards
-105. Include Solaris x86 "aperture driver" (Doug Anson and David Holland)
-104. Updated Thomas Wolfram's SVR3 mmap driver to version 2.2.3
-103. Allow the MemBase setting in Xconfig specify the high 5 bits of the
- 4MB aperture address for the Mach32 server, and the high 6 bits of
- the LAW address for the S3 server
-
-XFree86 2.0Ba (25 February 1994)
-102. Fix/speedup for window->pixmap part of CopyPlane() in the accel servers
-101. Fix bits per RGB reported for S3 server when using 8bpRGB
-100. Modify code for determining when pixel multiplexing is required for
- the S3 server, and restrict the DisplayWidth to either 1024 or 2048 when
- pixel multiplexing is used
- 99. Preliminary support for the SC11412 clock chip used on the SPEA Mercury
- (S3). Use 'Clocks "sc11412"' to select this (Norbert Distler)
- 98. "icd2061a" now uses the "icd2061a_slow" clock setting algorithm.
- The name "icd2061a_slow" will be dropped in the release after 2.1
- 97. Fixes for zero-width arcs for the VGA16 server (Gertjan Akkerman)
- 96. Support for David Holland's "aperture driver" for linear fbs on Solaris
- 95. Fix Solaris panic when no free VTs are available
- 94. Much-enhanced accelerated support for Cirrus chips (Harm Hanemaayer)
- 93. Support for up to 17 clocks on WD90C3x cards (Anders Bostrom)
- 92. Fix for Compaq avga driver
- 91. Keyboard updates to handle Linux' key remapping (Orest Zborowski)
- 90. README for Solaris (David Holland)
-
-XFree86 2.0B (21 February 1994)
- 89. Possible fix for Bt probe problem that some people see
-
-XFree86 2.0Ab (19 February 1994)
- 88. Combine DRAM and non-DRAM mach8 image assembler code into single files
- with #ifdefs
- 87. Fix for hga2 driver to prevent it from blanking MDA displays when
- swithching back to text mode
- 86. Code to explicitly recognise the *BSD PCVT console driver
- 85. Preliminary support for the S3 805i in interleaved mode
- 85. Fix for single-bank SVGA bitblt code (Giovanni Novelli)
- 84. Fix alu usage in mach32CopyArea() (Craig Groeschel)
- 83. Fix dash line support in Mach32 server (Mike Bernson)
-
-XFree86 2.0Aa (13 February 1994)
- 82. S3 "No_Bt485" and "No_Ti3020" options have been replaced by "Normal_DAC",
- and a "20C505" option has been added
- 81. ATI text restore fixes for Mach32 server (Ton van Rosmalen)
- 80. Planemask fixes for Mach32GetImage() (Craig Groeschel)
- 79. Prevent S3 Ti cursor from being turned on when the screen is blanked
- 78. No longer define __386BSD__ for BSD/386, NetBSD, FreeBSD. Change
- the FreeBSD define from -DFreeBSD to -D__FreeBSD__. Code outside
- ddx/x386 now uses the value of BSD (from <sys/param.h>) and for
- code below ddx/x386, __BSD__ is defined for all the x86 BSD OSs
- 77. Rewrite of Mach32 memory detection code (Mark Weaver)
- 76. Set clock-doubler cut-in to 67.5MHz for Bt485 and 90MHz for AT&T 20C505
- 75. Add ClearRTS option (some mice seem to need it)
- 74. Mach8 server now uses a 1024 line pitch (regardless of virtualX) for
- cards with 1MB
- 73. Support for bank switching with the VGA16 server. Staticgray and
- Grayscale visuals added to the VGA16 server (Gertjan Akkerman)
- 72. Slowed down image routines for DRAM based Mach8 cards (Hans Nasten)
- 71. Improvements to solx86 in/out assembler code, and removal of the
- broken ProworksMOption
-
-XFree86 2.0A (15 January 1994)
- 70. Increase Bt485 clock-doubler cut-in point from 67.5MHz to 90MHz. This
- should fix the "flashing pixel" problem many have reported
- 69. Mach8 font cache performance updates
- 68. Update assembler code and SuperProbe Makefile.std for the ProWorks
- compile on Solaris x86
- 67. Ti3020 probe code for SuperProbe (Robin Cutshaw)
- 66. Fix Mach32 server to recognise PCI cards
-
-XFree86 2.0g (9 January 1994)
- 65. Clock probe code for Mach32 server
- 64. Support for TI3020 ramdac for S3 server (Robin Cutshaw)
- 63. Fix server crash problem if reset occurs when VT switched away
- 62. Make accel servers honour the -dpi flag
- 61. Mach8 font cache updates
- 60. Support for the ProWorks compiler on Solarix x86
- 59. Add memory probe to SuperProbe (only for a couple of chipsets so far)
- 58. Support for display widths of 640, 800 and 2048 with S3 server
- 57. Generalise S3 HW cursor memory allocation -- fixes problems that showed
- up with some virtualY/displaywidth combinations, and will work for
- display widths < 1024
-
-XFree86 2.0f (27 December 1993)
- 56. Fix mach32RecolorCursor() SIGSEGV when VT switched away
- 55. Possible fix for cases where the S3 linear fb probe fails the first
- time the server is started but succeeds on subsequent times
- 54. Updates to Mach32 memory probe
- 53. Fixes for ATI SVGA save/restore code (Ton van Rosmalen)
- 52. Fix xman's handling of nroff bullets and bolding (Rich Murphey)
- 51. Mach8 font cache updates (Hans Nasten)
- 50. Mach32 HW cursor fixes (Mark Weaver)
- 49. Change "makedepend" for systems with gcc to use "gcc -M" (based on
- code from Hongjiu Lu). This is much slower than the other version,
- and maybe should be disabled by default for !UseInstalled
-
-XFree86 2.0e (18 December 1993)
- 48. SuperProbe updates (details in SuperProbe/ChangeLog)
- 47. Imake updates for NetBSD
- 46. Ramdac multiplexing for Mach32 cards with TLC34075 (and ATI68875?)
- ramdacs (Mike Bernson)
- 45. Imake changes to allow easy building of just the servers with a
- cut-down source tree
- 44. Fix ClearDTR -- now it clears *only* the DTR line
-
-XFree86 2.0d (11 December 1993)
- 43. Xconfig keyboard option: VTSysReq to enable SVR4-style VT switching
- sequence on Linux and *BSD+syscons
- 42. Solaris 2.x x86 support (David Holland, Doug Anson)
- 41. Accelerated dline and dseg for Mach32 (Mike Bernson)
- 40. Accelerated non-cache text code for Mach8 (Hans Nasten)
- 39. VirtualY limit removed for Mach8 (cache can be disabled)
- 38. Dynamic allocation for font cache for Mach8 (Hans Nasten)
- 37. New GetImage for Mach32 (Mike Bernson)
- 36. Support for linear fb on *BSD with mmapable /dev/mem
- 35. Preliminary support for 1152 width on Rev C 801 and Rev E 928, and
- 1600 width on Rev E 928 in S3 server
-
-XFree86 2.0c (3 December 1993)
- 34. Support for 8-bit/gun for Mach32 server (Craig Groeschel)
- 33. New GetImage() for Mach8 and 8514
- 32. Fix error message printed when no appropriate graphics sections are
- present in Xconfig
- 31. Add a "fb_debug" option to the S3 server
- 30. MemBase Xconfig parameter added to allow the fb base address to be
- specified. This is currently used only by some bdm2 drivers
- 29. Support added to bdm2 for Visa board (untested)
- 28. HGC-1280 now supported on both primary and secondary addresses
- 27. Sigma L-View driver tested and works now
- 26. Code from ATI to work around memory probing problems with some Mach32
- chips (untested)
- 25. Workaround for some 2MB DRAM ATI cards (eg, CLX). This allows the
- VideoRam amount specified in Xconfig to override the detected value
- 24. Support for NetBSD/FreeBSD shared libraries (John Brezak & ??)
- 23. Add option "intel_gx" to handle linear fb on Intel GX/Pro (Mach32)
- 22. Composite sync support for Mach8
- 21. Allow linear fb for EISA S3 cards
- 20. Fix s3RecolorCursor() SIGSEGV when VT switched away
-
-XFree86 2.0b (14 November 1993)
- 19. Add virtualY <= 896 check to Mach8 server
- 18. Restore settings for VGA aperture mapping if linear fb access fails for,
- S3. Also restore those registers at exit
- 17. Merge in MIT fix-26 (mainly xterm security patch)
- 16. Fix S3 interlaced modes with VTotal > 1025.
- 15. Hack for 1280x1024 on S3 801 with 110MHz clock
- 14. Composite sync support for Mach32 (Todd Pfaff)
-
-XFree86 2.0a (9 November 1993)
- 13. Speedup for aligned <=16 bit wide stipple ops for Mach8 and 8514
- 12. Fix NULL dereference when ModeDB is empty (Bill Metzenthen)
- 11. make mit/rgb consistent with the server's usage of it. showrgb can now
- read rgb.txt directly, and [sng]dbm is no longer required
- 10. Attempt to clean up strerror() vs sys_errlist[] usage outside ddx/x386
- 9. Disable saving the Tek screen to a file in xterm -- a quick hack to
- get around another security problem. An official X Consortium fix
- should be available soon
- 8. Fix vgaFasm.h so it works for gcc2 with '-traditional'
- 7. Fix clock probing problem in pvga1 driver
- 6. Fix typo in xf86_OSlib.h
- 5. Fix ClockProg informational message
- 4. Truncate clock values to MHz resolution when checking against the limit
- 3. Fix bug in LinkKit Imakefile
- 2. Fix malloc problem in the PEX font reader
- 1. Some documentation fixes
-
-XFree86 2.0 (24 October 1993)
-247. Documentation finalised
-246. Fix for VT switching problem with Mach32 server
-
-XFree86 1.9Za (23 October 1993)
-245. Documentation updates
-244. Fix bug in backing pixmap used for VT switching with the S3 server
-243. Fix typo which prevented nomemaccess being turned of when a localbus
- S3 card is used without linear fb mapping
-
-XFree86 1.9Z (18 October 1993)
-242. Code freeze for 2.0. Docs still not finished
-241. Disable linear fb mapping for BSD/386 since it doesn't appear to work
-240. Fix for dline bug in Mach8 and 8514 servers
-239. Updates to ati SVGA driver
-238. SCO doc updates
-237. Allow "nolinear" Option for Mach32 server
-
-XFree86 1.9Fe (17 October 1993)
-236. Fix S3 cursor problem when panning
-235. Mach32 HW cursor fixes
-234. Include Accel cards db
-233. Fix video mmap problem with *BSD
-
-XFree86 1.9Fd (17 October 1993)
-232. Add undocumented "showcache" Option for the S3 server
-231. Fix ALLOCATE_LOCAL/DEALLOCATE_LOCAL problem in S3 server
-230. Fix multi-screen I/O permission bug on SYSV
-229. SVR3 version of IOPL kernel patch (required for ISC 2.0.2)
-228. Get xload's compiled-in kernel name from <paths.h> for BSD
-227. Fix some compilation-related problems
-226. Sigma Lview driver doesn't work, so removed references to it
-225. DAC_MASK save/restore for 8514 server
-
-XFree86 1.9Fc (16 October 1993)
-224. Stipple and colour mapping fixes for vga16
-223. Fix for Mach8 VT switching problem
-222. Include README.Bsdi
-221. Fix SEGV in s3WarpCursor when VT not active
-220. Don't use kbd_mode for BSDI
-
-XFree86 1.9Fb (13 October 1993)
-219. Mach32 HW cursor colouring fixes (still not quite right)
-218. Change Mach8 clock probing to measure the divided-by-4 values only
-217. Correct fix for problems when some cards are in mono address mode
-216. Fix sync polarity problem with S3 server
-215. Update kbd_mode for syscons
-214. Add "memaccess" option (for S3) so that mem access can be forced on
- for localbus cards when the linear framebuffer can't be mapped
-
-XFree86 1.9Fa (9 October 1993)
-213. 1-pixel segments fix for Mach8
-212. Trap virtual screen sizes which are too large for Mach32
-211. Turn off Mach32 HW cursor if insufficient videoram
-210. Some documentation updates
-209. Move clock limit definitions so that they can be changed when using
- the LinkKit
-208. SuperProbe updates
-207. Fix mis-detection of ATI cards by the compaq driver
-206. Fix hard-coded path in xdpr script
-205. Print max clock before resolving modes
-204. Fix CRTC setting procedure for Mach32
-
-XFree86 1.9F (4 October 1993)
-203. Limit clock to 80MHz for Mach8 and Mach32
-202. Mach32 HW cursor fixes and mach32im cleanup
-201. Cleanup startup messages in Mach8 and Mach32 servers
-200. Disable xterm logging by default, and provide a safer(?) method of
- opening the log file
-
-XFree86 1.9Ed (2 October 1993)
-199. Support for Cirrus 62x5 chips (Prof. Hank Dietz)
-198. Clean up handling of 'volatile', etc for 'gcc -traditional'
-197. Merge Mach8 font cache fix into Mach32
-196. Default to probe for 4 clocks on pvga1 cards
-195. Remove implicit assumption that certain mouse protocols are only used
- by serial devices
-194. Updates/cleanups for bdm2 code
-193. Include SVR3 mmap and SCO dmmap drivers (in x386/etc)
-192. Change location of console.h to machine/ for FreeBSD
-191. Fix setting of AdmDir for *BSD
-190. Update GnuMalloc option. Now it enables use of GNU malloc for clients
- as well as the servers
-189. Patches for Amoeba
-188. Fix for OAK crash with SVGA server
-187. Fix for ATI SVGA restore problem
-186. HW cursor for Mach32 (Mike Bernson)
-185. Option checking in other accel servers
-
-XFree86 1.9Ec (1 October 1993)
-184. Option checking in S3 server
-183. Fix default colour visual handling for accel servers
-182. Add checking of clock limits
-181. Clean up s3Init()
-180. Fix to allow SVR3 shared libs to build when using gas
-
-XFree86 1.9Eb (29 September 1993)
-179. Updates to syscons support (requires lastest console.h -- which is now
- included in ddx/x386/etc)
-178. Fix for colourmap restoration problem with 8514/A cards
-177. Updates to Bt485 code
-
-XFree86 1.9Ea (28 September 1993)
-176. Man page updates
-175. Modify "number9gxe" option to use the Bt485's clock doubling for clocks
- higher than 67.5Mhz
-174. Alternate ICD clock selection code. Enable it with
- 'Clocks "icd2061a_slow"'
-173. site.def cleanup
-172. Fix Bt485 Cursor support
-171. Update syscons support
-170. Fix for S3 font cache server crash problem
-169. Fix for S3 xqueue problems when operating in linear mode
-168. Fix for S3 928 localbus problem
-167. Fix SuperProbe's graphics co-processor detection, and add code to detect
- Bt485 on S3 cards.
-166. Fix text problems in Mach8 and 8514 servers
-165. Image read/write fix for Mach32
-
-XFree86 1.9E (23 September 1993)
-164. Support for the syscons driver on *BSD (S|ren Schmidt)
-163. Get/PutImage speedups for S3
-162. Accelerated image text for non-cached fonts (S3)
-161. Image read/write speedups for Mach32
-
-XFree86 1.9Dc (22 September 1993)
-160. Hooks added for HW cursor support on SVGA cards
-159. Support for ISC 4.0
-158. Accel text functions for non-cached fonts (S3 server)
-157. Fix problems with vga sequencer not being turned off in the right places
-156. Support for dmmap driver for SCO
-155. Oak driver (from Steve Goldman)
-154. Updates for Minix
-
-XFree86 1.9Db (21 September 1993)
-153. Accelerated WD90C31 support (Mike Tierney)
-152. Updates to ImageStipple code for Mach8 and 8514
-151. Fix for memory leak in mi backing store (Amancio Hasty)
-150. Accelerated Cirrus support (Simon Cooper and Bill Reynolds)
-149. Accelerated dline for Mach8 and 8514 (from Tiago Gons)
-148. Fixes for localbus 928
-147. Modify server to use rgb.txt directly and create an internal hash table
- (from Thomas Roell)
-146. SuperProbe updates
-145. Fix cursor recolour problems in S3 server
-144. Use uname/gethostbyname for cases where SIOCGIFCONF fails
-
-XFree86 1.9Da (18 September 1993)
-143. ImageStipple speedup for Mach8 and 8514 (from Hans Nasten)
-142. Reorganise man page installation details for *BSD
-141. Fix various minor bugs
-
-XFree86 1.9D (15 September 1993)
-140. Use non-MAP_FIXED for mmap on Linux -- requires latest kernel
-139. dseg for S3
-
-XFree86 1.9Cf (14 September 1993)
-138. line updates for S3 (including dline)
-137. Support for Thomas Wolfram's mmap driver for SVR3
-136. Config changes to support NetBSD and FreeBSD
-135. Correct fix for SIOCGIFCONF on *BSD (from Mark Davies)
-134. Use Jerry Whelan's BSDselect() for SVR4 in libXt and libXbsd
-133. CopyPlane() for Mach32 server
-132. Include Berkeley str{,n}casecmp() in libXbsd
-131. Sigma LView driver for bdm2 (untested)
-130. OsMouse support for SCO (uses the SCO event driver)
-
-XFree86 1.9Ce (9 September 1993)
-129. Improve reliablilty of mmio code (thanks Thomas)
-128. Fix xdm-related server crash on Linux
-127. Support for 4MB aperture with EISA Mach32 cards
-126. CopyPlane() for 8514 server
-125. Fix "xfig" problem in accel servers
-124. Fix GetImage and PolyText in accel servers
-123. Fix problem with VT-switching and server reset
-122. Fix some more cfb.banked bugs
-
-XFree86 1.9Cd (5 September 1993)
-121. Fast image read/write for 8514 server
-120. Mmio support for 928 in S3 server
-119. Fixes for BT ramdac HW cursor (S3) (still doesn't work)
-118. CopyPlane() fixes for S3
-117. Speedup for PolyPoint() in Mach8 (and others)
-116. Fix for lines in accel servers -- now match cfb lines.
-115. CopyPlane()
-
-XFree86 1.9Cc (2 September 1993)
-114. Fix auto-repeat trapping of lock keys
-113. Support BT485 ramdac's HW cursor (S3 server) (doesn't work yet)
-112. Use mmap for BIOS access on SVR4
-111. Only protect page 0 for SVR4 when the -protect0 flag is given. It makes
- cores less useful
-110. bdm2 (banked dumb mono) fb/driver (from Pascal Haible)
-109. Fast image fill for Mach8 (from Hans Nasten)
-108. Update shared-lib version numbers for Linux
-107. Split bsdi os-support from 386BSD -- little code was common
-106. Modify s3Init() code to use vgaHWInit()
-
-XFree86 1.9Cb (28 August 1993)
-105. Fast image read/write for Mach8 (from Hans Nasten)
-
-XFree86 1.9Ca (28 August 1993)
-104. Default to NoMemAccess for S3 localbus cards on OSs that don't
- support linear videomem mapping
-103. Add QueryBestSize() for S3
-102. Protect page 0 for SVR4 (to help find NULL pointer dereferences)
-101. Fix ChordMiddle
-100. Fix some compilation problems with vga16
- 99. vga16 fix for OpaqueMove bug
- 98. Work around GNU make's "different" default dependency handling.
- Dependencies should now work reliably with GNU make.
- 97. Fast CopyPlane() for S3 server
- 96. Fix I/O port handling to deal with multiple screens
- 95. Mach8 updates
-
-XFree86 1.9C (25 August 1993)
- 94. Updated video mem <-> main mem copy code to get better performance on
- localbus cards
- 93. Alternate fix for xqueue with S3 (previous fix degraded performance too
- much)
-
-XFree86 1.9Be (25 August 1993)
- 92. SIOCGIFCONF fix for ISC in xdm
- 91. Mach support for mapping arbitrary video memory
- 90. Fix for performance problems in S3 server
-
-XFree86 1.9Bd (24 August 1993)
- 89. Updated version of Xconfig/probe info
- 88. Update libXt jump entries for Shm on Linux
- 87. Another S3 cursor update
- 86. Use mmap() for mapping framebuffer on SVR4
- 85. Localbus linear mapping for S3 (tested only on Linux)
-
-XFree86 1.9Bc (23 August 1993)
- 84. SuperProbe update
- 83. Improve picture stability when using high clocks (S3)
- 82. Get memory detection right for S3 911
- 81. Change localbus wait states for S3
- 80. Go back to the MAP_FIXED mmap for Linux, added xf86UnMapVidMem()
- 79. S3 cache updates and cursor changes
-
-XFree86 1.9Bb (21 August 1993)
- 78. Fix S3 server crash if it exits when its VT isn't active
- 77. Indicate where information in server startup messages comes from (ie
- whether from Xconfig or by probing, etc)
- 76. Fix ATI/Mach probing in SuperProbe
- 75. Fix S3 cursor "shadowing" in interlaced modes
- 74. Fix problems with the S3 server when using xqueue
- 73. 16-colour generic VGA server (from Gertjan Akkerman)
-
-XFree86 1.9Ba (18 August 1993)
- 72. Support for a Hitachi Puma Plus digitising tablet's 4-button puck
- (from Randy Terbush)
- 71. Mouse "ChordMiddle" option. This is for a 3-button mouse which
- generates left+right events when the middle button is used. This is
- for Microsoft protocol only (from Ted Goldblatt)
- 70. Reorganise the way SpeedUp options are handled so that the speedup code
- is only linked into the server when the appropriate chipset driver is
- included.
- 69. Fix inb/inw inlines for gcc without gas
- 68. Code to use memory to the right of the screen for caching (S3)
- 67. Various compilation-related fixes
-
-XFree86 1.9B (16 August 1993)
- 66. Fix memory leak on server reset
-
-XFree86 1.9Ai (16 August 1993)
- 65. Fix LinkKit
- 64. Cirrus driver was ignoring clocks when a VideoRam line is specified
- 63. Fix VT switching for Mach8 and ibm8514 servers
- 62. Fix server reset for S3 server
- 61. Fix problems in mach32ImageFill for virtual width != 1024
- 60. Text save/restore added to Mach32 server
-
-XFree86 1.9Ah (15 August 1993)
- 59. Updates to SuperProbe so it can detect the latest S3 chip revisions
- 58. VT switching support for the S3 server
- 57. Fix for S3 image write problems with screen width 1024 & 2MB videoram
-
-XFree86 1.9Ag (14 August 1993)
- 56. Another stipple fill fix in cfb.banked
- 55. S3 clock select fixes -- allows clock probing to work
- 54. Fix initialisation of miCacheFreeSlot
-
-XFree86 1.9Af (13 August 1993)
- 53. Allow programmable clocks to be specified with 'Clocks "prog_clk_type"'
- in Xconfig.
- 52. Virtual size fixes for S3
-
-XFree86 1.9Ae (13 August 1993)
- 51. Extended I/O and IOPL handling for BSDI.
- 50. Set virtual size for S3 if not given.
-
-XFree86 1.9Ad (13 August 1993)
- 49. Imake config updates
- 48. Created libxf86_hw in common_hw, and moved clock probe code there.
- 47. XF86_Mach8 and XF86_8514 compilable.
-
-XFree86 1.9Ac (12 August 1993)
- 46. S3 updates (diff15)
- 45. XF86_Mach32 compilable
-
-XFree86 1.9Ab (11 August 1993)
- 44. XF86_S3 compilable and runnable on Linux
- 43a Cirrus driver updates (including fix for line problem)
- 43. Fix problem in Xlib compose-key code that caused auto-repeat problems
- on some SVR4.
- 42. Keep /dev/console open for pccons on 386BSD to work around keyboard
- hanging problem (from Mark Weaver)
- 41. Fix for zero width horiz, vert lines with rop other than GXcopy, GXxor
- (from Mark Weaver)
-
-XFree86 1.9Aa (6 August 1993)
- 40. Include accel dirs (not compilable yet)
-
-XFree86 1.9A (4 August 1993)
- 39. Fix authorisation for LOCALCONN connections on SYSV.
- 38. OS-lib fixes
-
-XFree86 1.9e (1 August 1993)
- 37. Make the ET4000 Option "force_bits" standard behaviour
- 36. Fix problem of renderer config not being handled properly in the LinkKit
- 35. Update screen configuration handling to better suit multiple servers.
-
-XFree86 1.9d (29 July 1993)
- 34. Mach OS-lib fixes
-
-XFree86 1.9c (28 July 1993)
- 33. Lots of SCO patches (including fixing the bogus window problem, xterm,
- font server, PEX)
- 32. SuperProbe updates (includes identification of AT&T RAMDACs and
- detection of 8514/A and ATI Mach-xx chipsets)
- 31. Fix for bug in cfbgetsp.c
- 30. Include pixmap cache support in mi, mfb, cfb.
- 29. SVR3/ISC updates for gcc 2.4.5
- 28. Moved OS-specific parts of x386Io.c to the OS-lib
- 27. OS-lib fixes.
- 26. Converted the experimental ET4000 RCCONF code to an Option flag:
- "fast_dram"
- 25. Fix SIOCGIFCONF related problems in xdm, chooser and server/os/access.c
- on SVR4 and 386BSD (thanks to Ian Donaldson and Peter Wemm).
- 24. Support for easily adding multiple servers to server/Imakefile and
- the LinkKit
-
-XFree86 1.9b (13 July 1993)
- 23. Fix for interlaced support in the Cirrus driver
- 22. OS-library added to separate out OS-specifics under ddx/x386
- 21. Fix initialisation of supported pixmap formats
- 20. Fix for authorisation on streams connections for SVR3
- 19. Fix other line bugs (fLineH.s, suLine.s, suVHLine.s)
- 18. Really make the horizontal panning symmetric
- 17. Fix 2MB support on Cirrus 5426
- 16. Fix line bug in non-speedup code (fLineBres.s)
-
-XFree86 1.9a (3 July 1993)
- 15. Added support for BSDI's BSD/386 (from Hans Nasten)
- 14. SuperProbe updates for C&T chipsets
- 13. Make horizontal panning symmetric
- 12. Allow Cirrus driver to address 2MB on the 5426 cards (not tested)
- 11. Add ChipRounding to the vga ChipRec so that chip-specific rounding of
- virtualX can be handled properly
- 10. OSF/1 patches (Marc Evans)
- 9. Fix for xload problem on Linux
- 8. Fix for ATI text-mode font restore problem
- 7. Experimental code to set the RCCONF register on ET4000 cards (this is
- only used if Et4000SetRCConf is set to YES in site.def)
- 6. Allow "black" and "white" colours to be specified in Xconfig for the mono
- vga server
- 5. Fix Xconfig visual spec check for mono servers
- 4. Fixed some long file names (in extensions/lib/PEXlib, fonts/bdf/misc)
- 3. Fix xman bug introduced in 1.2Da
- 2. Fix bank-switching bug in cfbfillsp.c
- 1. Fix a couple problems that show up when using a XFree86 patched source
- tree on non-i386 systems
-
-XFree86 1.3 (5 June 1993)
-98. Updates to ncr driver
-97. NCR imake config changes
-96. Docs updated for gzip extension change ".z" -> ".gz"
-95. Experimental "force_bits" option flag for ET4000
-
-XFree86 1.2Da (2 June 1993)
-94. Modify xman to use groff instead of nroff for Linux
-93. Modify xload to use /proc/loadavg for Linux
-92. Change ownership of /dev/console and /dev/tty0 for Linux
-91. Added xmodmap.std to the etc dir which lists the default key map in a form
- that can be read by xmodmap(1)
-90. Various small SVR3 adjustments, and new README.SVR3
-89. Add a README for the LinkKit
-88. Support for banked mono in ET3000 driver (thanks to Joerg Wunsch)
-87. ET3000 probe changes
-86. README.Linux updates
-
-XFree86 1.2D (26 May 1993)
-85. Merge in MIT fix-25
-84. OSF/1 support is incomplete -- so remove references to it in the docs
-83. Add -keeptty flag to prevent server from detaching its controlling tty
- (useful when debugging)
-82. Include support for 77C22E in ncr driver
-81. Set bank 0 for save/restore in trident driver [removed]
-80. Workaround for mouse loss when VT switching on SCO
-79. Compile-time support for SCO 3.2.4
-78. Don't include PEX in mono server (even when BuildPex is set) because it
- only works for 8-bit PseudoColour
-77. Mach support for SuperProbe
-76. Various SVR3 shared lib fixes including fixes for AT&T SVR3.2, XDM auth
- support and fixes for initialisation problems that showed up with Motif.
-75. Ignore SIGHUP in xterm for ISC 2.2.1, 3.0
-74. rgb/Imakefile fix
-73. Imake.tmpl updates for ISC
-
-XFree86 1.2Cb (19 May 1993)
-72. Code to slow down DAC access
-71. Possible fix for font restore bug on Linux and 386BSD (works for some
- people, but not everyone)
-70. Merge in MIT fix-24
-69. Xosdefs.h mod for Mach
-68. Eliminate various compiler warnings with PEX
-67. Modify lndir to ignore directories called "CVS"
-66. Fix overscan restore problem when mode switching
-65. Fix a Cirrus-specific font/text restore problem
-
-XFree86 1.2Ca (16 May 1993)
-64. Fix for lndir to work with Linux (Gnu ls)
-63. Documentation updates
-62. Allow PEX to be turned on/off at link-time with the LinkKit
-61. Add "hibit_high" and "hibit_low" Option flags to handle some ET4000
- cards when the server is started from a high-res text mode
-60. Fix screen corruption when mode-resolving fails (problem was introduced
- in 1.2Bb)
-59. Fix to pvga1 driver for 90C11
-58. kbd_mode modified to be a no-op for codrv
-57. Imake.tmpl updates for SCO and OSF/1
-56. Remove need for <sys/ioctl_pc.h> with LinkKit on 386BSD
-
-XFree86 1.2C (8 May 1993)
-55. Modify Cirrus driver to set the reported clocks to the preset values
- rather than probing them. Probing can be forced with the "Probe_Clocks"
- Option flag.
-
-XFree86 1.2Bb (6 May 1993)
-54. Compatibility support for codrv 0.1.1 (run-time only)
-53. Merge in OSF/1 support (from Marc Evans)
-52. Merge in SCO support (from David McCullough)
-
-XFree86 1.2Ba (4 May 1993)
-51. SuperProbe updates (can now be compiled with a K&R compiler)
-50. Compaq driver (from Hans Oey)
-49. Merge codrv and pccons support so that a single server can support
- both
-48. Cirrus driver for CLGD542x cards (no accelerated support) (from Bill
- Reynolds)
-47. Allow inline'd macros to be disabled for debugging purposes (by compiling
- the video drivers with -DNO_INLINE)
-46. Print OS version in startup message
-
-XFree86 1.2B (19 April 1993)
-45. ET4000 text clock restoration modified -- maybe it will fix the problems
- when restoring to a high res text mode
-44. Sample SVGA driver stubs and documentation added
-43. Xconfig option to specify VGA BIOS base address (not all are at 0xC0000)
-42. Major rewrite of tvga driver. Now supports 8800CS, 8900B, 8900C, 8900CL,
- 9000 in all modes.
-41. Xconfig option to clear DTR after opening MouseSystems mouse (only for
- SYSV, Linux, 386BSD)
-40. Change server names. X386 -> XF86_SVGA, X386mono -> XF86_Mono.
-
-XFree86 1.2Aa (17 April 1993)
-39. SuperProbe will now find vga BIOS at addresses other than 0xC0000
-38. Support for building Linux shared libs (DLL version)
-37. Remove case-sensitivity of the Chipset option.
-36. Save and restore registers affected by clock probing
-35. Some more Xconfig validity checks
-34. Change 'Vendor' keyword in Xconfig to 'Option'
-33. Fix to make use of the RGBPath specified in Xconfig (this was pointed out
- by Greg Hartman back in Sept)
-32. Use XWINHOME to specify ProjectRoot at run-time
-31. PEX patches for Linux
-30. libX11 shared lib problem fixed (for SVR4)
-
-XFree86 1.2A (3 April 1993)
-29. More pvga1/wd driver tuning, added rudimentary support for 90c20
-28. Improve overscan handling
-27. modeDB.txt updates
-
-XFree86 1.2e (27 March 1993)
-26. Minix/Amoeba updates
-25. New et3000 probe (to prevent tvga8900CL being falsly detected as et3000)
-24. More interlace tuning for pvga1 and tvga8900 drivers
-23. SuperProbe
-22. XDMCP fixes for Linux (and others)
-
-XFree86 1.2d (24 March 1993)
-21. Added support for Minix-386 and Amoeba (from Kees Verstoep)
-
-XFree86 1.2c (20 March 1993)
-20. Merged in MIT fix-23
-19. Support for 9th clock on WD90Cxx chips
-18. NCR 77C22 driver (from Stuart Anderson)
-17. Allow multiple Clocks lines in Xconfig
-16. Changes to external clock program code to handle VT switching better
-15. ISC 2.0.2 support (from Aki Atoji)
-14. Include driver source instead of objects in LinkKit
-
-XFree86 1.2b (1 March 1993)
-13. Improved ISC support for xman
-12. Improved handling of overscan colour
-11. Make the server's -pn option the default (compile time configurable)
-10. Hga2 support for 386BSD and Mach
-9. pvga1 driver support for WD90C3x
-8. Portable assembler macros (from Greg Sharp)
-7. More flexible handling of Vendor strings in Xconfig
-6. Store clock resolutions to nearest 1kHz.
-5. Removed old SpeedUp version
-4. Changes in LinkKit to handle distributions built with PEX support
-
-XFree86 1.2a (20 February 1993)
-3. Xlib support for run-time selectable multiple LOCAL connection types
- for SVR3, SVR4
-2. Fix mapping problem when using codrv and a non-US keyboard mapping
-1. Fix for TVGA interlaced modes
-
-
-XFree86 1.2 (8 February 1993)
-74. README updates
-73. ATI driver updates
-72. Banked mono doesn't work on ET3000 -- so turned off for that driver
-71. Merged in MIT fix-22
-70. Changes so that XFree86 patched source will build on other platforms.
-
-XFree86 1.1F (1 February 1993)
-69. Add check for presence of "Modes" line in Xconfig
-68. Add assembler code for byte-order swapping in mfb
-67. More svr3 shlib "tuning"
-
-XFree86 1.1E (26 January 1993)
-66. Change to pvga1 driver to get correct clock ordering for 90C30
-65. Fix linux problem building liboldX
-64. server locking to prevent clobbering of local connection pipes
-63. xhost fix for LOCALCONN
-62. Add missing svr3 shlib patches
-
-XFree86 1.1D (24 January 1993)
-61. Removed SVR3 shlib stubs from clients
-
-XFree86 1.1Ce (23 January 1993)
-60. SVR3 shared lib support (from Thomas Wolfram)
-59. Added Hercules driver (from Davor Matic)
-58. Re-map scancodes for Codrv so that the keycodes the server sees are the
- same on all platforms
-57. Modify NumPad handling so that Shift works properly.
-
-XFree86 1.1Cd (13 January 1993)
-56. Commented out force VT disabling -- causes problems with Esix 4.0.3A
-55. Support for tvga9000 (from Gertjan Akkerman)
-54. Ignore FontPath in Xconfig when a FontPath is provided with the -fp option
-53. Support for new Linux VTs
-52. Turn off Alt-Sysreq-F (forced VT switch) by default for SYSV. Added an
- Xconfig option to prevent this disabling (AllowForceVT)
-51. X386keybd man page added
-50. mfb.banked fixes
-
-XFree86 1.1Cc (3 January 1993)
-49. tvga driver updates for banked mono
-48. Fixes to cfbblt, mfbblt for single-banked drivers
-
-XFree86 1.1Cb (1 January 1993)
-47. Added -verbose (default) and -quiet flags, and print out more information
- in verbose mode
-46. Improved banking for mfb.banked
-
-XFree86 1.1Ca (30 December 1992)
-45. cmfb code (from Davor Matic), and an experimental mfb.banked
-44. Flush mouse input after opening
-43. Fix problem starting X from within an X session
-
-XFree86 1.1C (23 December 1992)
-42. Added -probeonly option which causes the server to exit after the
- device probe stage.
-41. Merged in MIT fix-21
-40. Support for an external clock setting program
-39. Patches for Destiny (SVR4.2)
-
-XFree86 1.1Ba (17 December 1992)
-38. Merged in MIT fix-20
-37. Various improved error messages
-36. Improve accuracy of clock probing code -- add delay so VCO can
- stabilise before starting the measurement
-35. Store dot-clocks to .1MHz accuracy
-34. Make the server's -dpi option work
-33. Extend fontpath validation to the compiled-in default fontpath
-32. Increase server priority while probing for clocks
-31. Fixed KDSETRAD bug introduced in 1.1a (affected DELL)
-30. Bell support for pccons driver on 386BSD
-
-XFree86 1.1B (21 November 1992)
-29. Hack for ISC local connection on SVR4 with ACP (requires the ISC
- client binary to be edited)
-28. Added code to change IOPL on SYSV for extended I/O (including patch
- scripts for the SVR4 kernel)
-27. Merged in MIT fix-18 and fix-19
-26. Support for PS/2 mouse
-
-XFree86 1.1A (16 November 1992)
-25. Fix problems compiling with a non-ansi compiler.
-
-XFree86 1.1c (8 November 1992)
-24. Xconfig options to set default mapping of some special keys
-23. Code to validate the fontpath given in Xconfig
-22. Patches for Logitech Trackman/Mouseman (from Christian Ziemann)
-21. Updates for version 0.1.1 of Holger's co driver
-20. Fix for et3000 text mode restoration (from Holger Veit)
-19. Fix NumLock support -- use two sets of keycodes for num keypad
-18. Add Compose / Multi-key support to Xlib (from MIT contrib)
-17. Don't reset state of lock keys when starting the server
-16. Fix code for setting visual type from Xconfig
-
-XFree86 1.1b (21 October 1992)
-15. Xload support for Linux
-14. Use Xconfig.cpp to generate the sample Xconfig with paths consistent with
- the configuration.
-13. Allow multiple "FontPath" lines in Xconfig which are concatenated to build
- the FontPath.
-12. Blank and clear the screen during server startup
-11. Fix tegblt code for mono server (instead of the previous workaround)
-10. Fix non-32bit tiles and stipples for mono server with 8-bit scanlines
-9. Fix circle/ellipse drawing for mono server
-8. Use 8-bit bitmap scanlines for mono server (can now remove pixmap hack)
-7. Add check in server to see if euid==0. If not, exit with a warning.
-
-XFree86 1.1a (11 October 1992)
-6. Add a VTInit option to Xconfig to run a program on the VT during
- screen initialisation.
-5. Fix security holes in reading Xconfig files, and the undocumented
- -mono and -colour options.
-4. Use KDMKTONE for bell for systems that support it
-3. Allow 4 clocks for generic driver
-2. Mods to allow compile time selection of 128k display mapping for mono
- (this is experimental and may be removed)
-1. Holger's 386BSD co driver support (compile-time selectable)
-
-
-XFree86 1.1 (1 October 1992)
-70. Public release
-69. Set mailbox for 386bsd in Xaw
-
-XFree86 1.0Zb (30 September 1992)
-68. Mods to startx so that an absolute path is not required for a server
-67. Make the right-hand <ALt> key behave like Alt_R
-66. Updates to X386.man
-65. Add -mono and -colour (undocumented) options to server
-64. Look for Xconfig file in /etc before /usr/X386/lib/X11
-63. Print out Trident version in probe routine and add README.trident
-
-XFree86 1.0Za (27 September 1992)
-62. cfb.banked changes for Mach's BSD cpp.
-61. Add mkwhatis script for 386BSD
-60. Fix problems with xgc/lex.l
-59. Modify default keymap so Alt_L will work like both Meta_L and Alt_L.
-58. xload fixes for 386BSD
-57. Change config/x386config.sh for dumb BSD sh.
-
-XFree86 1.0Z (24 September 1992)
-56. Beta release (final for 1.1)
-55. Add ISC22, ISC30 defines
-
-XFree86 1.0Yb (21 September 1992)
-54. Included Thomas Eberhardt's updates to the compressed font code.
-53. Put Alan Hourihane's generic save/restore code into vgaHW.c
-52. Correction to xmh man page
-51. Support use of libdbm.a for ISC 3.0
-
-XFree86 1.0Ya (17 September 1992)
-50. Merge in Linux support (from Orest Zborowski)
-
-XFree86 1.0Y (14 September 1992)
-49. Beta release (second for 1.1)
-48. Removed FAS support on SVR4
-47. Changes to font and text save/restore
-
-XFree86 1.0Xc (12 September 1992)
-46. Fix xman scroll bug
-45. Update to ati driver to save more planes
-44. Single/double bank selection for drivers
-
-XFree86 1.0Xb (9 September 1992)
-43. Link Kit updates
-
-XFree86 1.0Xa (8 September 1992)
-42. Fix some Xconfig related problems
-41. Trident driver (256 colour and mono)
-40. Mono drivers for et3000, pvga1, gvga (untested)
-
-XFree86 1.0X (4 September 1992)
-39. Beta release
-38. Minor updates
-
-XFree86 1.0m (2 September 1992)
-37. Change name to XFree86
-36. Added link kit
-
-X386 1.2E 1.0l (30 August 1992)
-35. Added (experimental) ATI driver
-34. Changed configuration so that mono and colour servers can be built
- at the same time.
-X386 1.2E 1.0k (30 August 1992)
-33. Directory re-organisation
-
-X386 1.2E 1.0j (29 August 1992)
-32. Fix problem of server crashing while resetting
-
-X386 1.2E 1.0i (28 August 1992)
-31. Portability changes to vgaFasm.h (for cc and gcc-1.??)
-30. Added a -xconfig flag to specifiy the Xconfig file from the command line.
-29. Fixed problem with xdmauth accessing memory between 640k and 1M.
-28. Round down the specified virtual width to the nearest required multiple.
-27. Fix some bugs in the Xconfig parser.
-26. Added 'vga2' keyword for Xconfig so one file can be used for both the
- colour and mono servers.
-25. README's updated
-24. Minor speedup fix
-23. More server configuration changes
-
-X386 1.2E 1.0h (26 August 1992)
-22. cfb.banked updated for fix-17
-21. New SpeedUp code (works for any* virtual width)
-20. Monochrome VGA server
-19. Changes for compile-time selection of supported chipsets, and font
- renderers
-18. Updated X386.man, README.Mach
-17. Fix mouse map bug for logitech (and microsoft?).
-16. Merge in changes for Mach386 (from Robert Baron, Joel Jacobson)
-15. Merge in changes for 386BSD (from Rich Murphey, Amancio Hasty)
-
-X386 1.2E 1.0g (25 August 1992)
-14. Merged in MIT fix-17
-
-X386 1.2E 1.0f (4 August 1992)
-13. SpeedUp flag for Rectangle Stipple fills
-
-X386 1.2E 1.0e (4 August 1992)
-12. Extend the trapping of unexpected fatal signals beyond just SIGSEGV.
- The NoTrapSegV option has been changed to NoTrapSignals.
-
-X386 1.2E 1.0d (3 August 1992)
-11. Run mkfontdir in install directory rather than copying fonts.dir from
- the build directory.
-10. Merged in MIT fix-16
-
-X386 1.2E 1.0c (1 August 1992)
-9. Run 'mcs -d' on SVR4 shared libraries
-8. Merged in official Type1 font patch
-7. Merged in MIT fix-15
-6. Fixed malloc/free problems in lib/X/XcmsLRGB.c, clients/xdm/greet.c
-5. Merged in MIT fix-14
-
-X386 1.2E 1.0b (27 July 1992)
-4. Updated version of fFill.s
-3. Bug fixes (for stipple) from Jim (require GCC at the moment)
-
-X386 1.2E 1.0a (22 July 1992)
-2. Merged in MIT fix-13
-1. Fix problem with divide by zero when bell pitch was set to zero.
-
-
-X386 1.2E 1.0 (16 July 1992)
-97. First general release
-96. Define repz to be repe for gas.
-95. Update XdmConf.svr4 to read /etc/default/login to set ulimit, etc.
-
-X386 1.2E 0.2c (15 July 1992)
-94. Allow easy selection of ansi level when building non-core clients.
-93. Install and use sessreg (for xdm)
-92. .align changes for gas
-91. README and X386.man updates
-
-X386 1.2E 0.2b (11 July 1992)
-90. Mods to SpeedUp for gas (jcxz changes).
-89. Minor change to xdm/auth.c for ISC3.0
-88. Removed SVR4 Vendor defines.
-
-X386 1.2E 0.2a (8 July 1992)
-87. Added some missing cld's to gBitBlt.s
-86. Some portability changes to fFill.s
-85. VT release problem when using FAS/SVR4 really fixed this time.
-84. Moved libinetemul.a to lib/InetEmul; library now called libXinetem.a, and
- used in a similar way as libXbsd.a. Changes to top level Imakefile have
- been removed.
-83. Updates to README (building under ISC2.2, compiling clients)
-82. Include libXbsd.a in ExtraLibraries for SVR4/SYSV
-
-X386 1.2E 0.2 (3 July 1992)
-81. Second beta version
-80. et debug option removed
-
-X386 1.2E 0.1i (2 July 1992)
-79. Fixed VT release problem when using FAS/SVR4.
-78. Added warning about using xdmauth.
-77. Updated XdmConf.svr4 to handle different auth types
-76. Reorganisation of some compiler and assembler related options in x386.cf
-
-X386 1.2E 0.1h (27 June 1992)
-75. More portability changes to assembler code.
-74. Updates to modeDB, XdmConf.svr4
-
-X386 1.2E 0.1g (25 June 1992)
-73. Assembler portability changes from Jon Block.
-72. Change startup message from 'X Windows System' to 'X Window System'
-
-X386 1.2E 0.1f (20 June 1992)
-71. Fixed line problem when compiling with SVR4 'cc'.
-70. Changes to make source compile with Esix 3.2D, ISC 3.0 (without TCPCONN)
-
-X386 1.2E 0.1e (17 June 1992)
-69. Removed Glenn's wrapper comments from cfb.banked files.
-68. Added a debug flag to check operation of hiclock selection, and hopefully
- fixed the problem with that.
-67. Fixed PIC flag problem in sv4Lib.rules
-
-X386 1.2E 0.1d (13 June 1992)
-66. Xconfig is installed as Xconfig.sample so as not to overwrite a locally
- configured one.
-65. Use HasSdbm to determine use of -lsdbm for server and rgb.
-64. Made SpeedUp the default when appropriate, and added 'SpeedUp "none"' and
- 'NoSpeedUp' options.
-63. Updates to README, X386.man, modeDB.txt.
-62. Added a shar file with sample configuration files for xdm.
-61. Another setpgrp() change in xdm.
-60. Added command line option to specify which VT the server runs on.
-59. Changed default pointer map to the correct 1:1 map.
-58. Fixed bug in merge of SPEEDUP_TEGBLT8 which caused problems when that
- option was not selected.
-
-X386 1.2E 0.1c (7 June 1992)
-57. Remove some setpgrp() calls in xdm. This allows xdm to work with
- xqueue on Microport, Dell, AT&T versions.
-56. Default for server to open SCO Xsight connection for SVR4. SVR4.0.4
- supports this as part of its "Advanced Compatibility Package". The
- code doesn't appear to cause problems with versions of SVR4 without this
- (the feature just can't be used on them).
-
-X386 1.2E 0.1b (3 June 1992)
-55. Fixed bug in SPEEDUP_TEGBLT8 selection in vga.c
-54. Glenn's new cfbteblt8.c
-
-X386 1.2E 0.1a (30 May 1992)
-53. Fixed problem when switching VT away too quickly after switching back.
-52. Added Vendor defines for ISC SVR4 (ISC4), AT&T SVR4 (ATT4)
-
-X386 1.2E 0.1 (29 May 1992)
-51. First beta version
-
-X386 1.2E 0.0n (28 May 1992)
-50. Added README.X386-1.2E
-49. Introductory info added to modeDB.
-48. A few missed RCS Header lines.
-
-X386 1.2E 0.0m (26 May 1992)
-47. Added options to control building 75dpi, 100dpi, and large misc fonts.
-46. More updates to modeDB.
-45. Assembly changes for more pedantic 4.0.4 assembler.
-44. Moved site-specific defines from x386.cf to site.def
-43. Define usleep as the nap syscall for all SVR4 to avoid using libucb.a
-
-X386 1.2E 0.0l (23 May 1992)
-42. Added BuildType1 option
-41. Fixed ManDir and LibmanDir in site.def
-40. Added RCS Header lines to modified files
-
-X386 1.2E 0.0k (23 May 1992)
-39. Moved Glenn's and Jim's assembler routines into ddx/x386/enhanced
-38. Local connection added to X386.man
-37. Jim's update to cfbtileodd.c
-
-X386 1.2E 0.0j (21 May 1992)
-36. Updates to ModeDB.txt
-35. New fLineH.s from Jim
-34. New gLine.s from Glenn
-
-X386 1.2E 0.0i (19 May 1992)
-33. Fixed problem with setting mouse acceleration
-32. Prettied up startup message
-
-X386 1.2E 0.0h (16 May 1992)
-31. Removed SPEEDUP_TEGBLT8 from SPEEDUP_ALL -- it causes problems for some
- font rendering (characters coming out as solid filled blocks).
-30. Added Thomas Eberhardt's compressed bitmap font patches
-
-X386 1.2E 0.0g (15 May 1992)
-29. #undef'd SO_DONTLINGER in os/connection.c for SVR4 -- it is not properly
- defined for SVR4, and it removes the familiar startup error message.
-28. Changed SPEEDUP_VHLINE to SPEEDUP_LINE since it's not just for V, H lines
-27. Included Glenn's gLine.s
-26. Modified auto-detect HiClock code to use Thomas' method of making 16
- clocks available with ET4000. HiClock option has been removed since
- this change makes it obsolete. X386.man and Xconfig have been updated
- accordingly.
-25. Fix problem switching after SIGHUP is sent while VT switched away.
-24. Take x386Resetting out of os/utils.c and put it in x386Init.c
-23. Turn on screen saver before copying screen to pixmap when switching away
-22. Fixed typo in vga.c related to SPEEDUP_TEGBLT8
-
-X386 1.2E 0.0f (14 May 1992)
-21. Removed special handling of SIGSEGV when server is exiting.
-20. Take care of server exiting and resetting when VT is switched away.
-19. Copy screen to dummy pixmap when switching away, and copy it back when
- switching back. (The contents were of the dummy pixmap were previously
- ignored.) Masking window is no longer used.
-
-X386 1.2E 0.0e (13 May 1992)
-18. Add missing argument in call of GlennsFillBoxSolid -- hopefully fixes
- SIGSEGV problem.
-17. Added x386Version.h, CHANGELOG
-16. Added a couple of #undef's in cfbhrzvert.c
-15. Fold in public-patch-9 for cfb/cfbbresd.c into cfb.banked/cfbbresd.c
-14. casting for VGABASE in cfbbitblt.c
-13. #include fix in connection.c
-12. Disable building of FontServer in site.def
-
-X386 1.2E 0.0d (12 May 1992)
-11. Changes to gFillCopy.s, gVHLine.s to improve hseg100 performance.
-10. Change the way GCOps are initialised when SpeedUp is selected
-9. Add SpeedUp to cfbteblt8.c that assumes xdim=1024
-
-X386 1.2E 0.0c (10 May 1992)
-8. Allow SpeedUp Xconfig option to individually select various speedups
-
-X386 1.2E 0.0b (10 May 1992)
-7. Autodetect for HiClock option (not tested yet)
-6. Fix for cfbblt not setting read on dst for GC ops that require it
-5. Minor change in X386.man
-
-X386 1.2E 0.0a (09 May 1992)
-4. Reset screen saver timer for ForceScreenSaver(Reset)
-3. Reset screen saver when switching back
-2. Raise masking window when switching back so all windows get expose events
-1. Use dummy buffer for screen writes when VT is switched away
-
-X386 1.2E 0.0 (07 May 1992)
diff --git a/hw/xfree86/doc/man/.gitignore b/hw/xfree86/doc/man/.gitignore
new file mode 100644
index 000000000..d412e511b
--- /dev/null
+++ b/hw/xfree86/doc/man/.gitignore
@@ -0,0 +1,4 @@
+Xorg.1
+Xorg.1x
+xorg.conf.5
+xorg.conf.5x
diff --git a/hw/xfree86/doc/man/Xorg.man.pre b/hw/xfree86/doc/man/Xorg.man.pre
index b7fa990bb..c950e326b 100644
--- a/hw/xfree86/doc/man/Xorg.man.pre
+++ b/hw/xfree86/doc/man/Xorg.man.pre
@@ -1,7 +1,7 @@
.\" $XdotOrg: xserver/xorg/hw/xfree86/doc/man/Xorg.man.pre,v 1.3 2005/07/04 18:41:01 ajax Exp $
.TH __xservername__ __appmansuffix__ __vendorversion__
.SH NAME
-__xservername__ - X11R6 X server
+__xservername__ - X11R7 X server
.SH SYNOPSIS
.B __xservername__
.RI [\fB:\fP display ]
@@ -13,30 +13,26 @@ is a full featured X server that was originally designed for UNIX and
UNIX-like operating systems running on Intel x86 hardware. It now runs
on a wider range of hardware and OS platforms.
.PP
-This work was derived from
+This work was derived by the X.Org Foundation from the XFree86 Project's
.I "XFree86\ 4.4rc2"
-by the X.Org Foundation.
-The XFree86 4.4rc2 release was originally derived from
+release.
+The XFree86 release was originally derived from
.I "X386\ 1.2"
by Thomas Roell which was contributed to X11R5 by Snitily Graphics
-Consulting Service. The
-.B __xservername__
-server architecture includes
-among many other things a loadable module system derived from code
-donated by Metro Link, Inc. The current __xservername__ release is compatible
-with X11R6.6.
+Consulting Service.
.SH PLATFORMS
.PP
.B __xservername__
operates under a wide range of operating systems and hardware platforms.
The Intel x86 (IA32) architecture is the most widely supported hardware
-platform. Other hardware platforms include Compaq Alpha, Intel IA64,
+platform. Other hardware platforms include Compaq Alpha, Intel IA64, AMD64,
SPARC and PowerPC. The most widely supported operating systems are the
-free/OpenSource UNIX-like systems such as Linux, FreeBSD, NetBSD and
-OpenBSD. Commercial UNIX operating systems such as Solaris (x86) and
+free/OpenSource UNIX-like systems such as Linux, FreeBSD, NetBSD,
+OpenBSD, and Solaris. Commercial UNIX operating systems such as
UnixWare are also supported. Other supported operating systems include
LynxOS, and GNU Hurd. Darwin and Mac OS X are supported with the
-XDarwin(1) X server. Win32/Cygwin is supported with the XWin X server.
+XDarwin(__appmansuffix__) X server. Win32/Cygwin is supported with the
+XWin(__appmansuffix__) X server.
.PP
.SH "NETWORK CONNECTIONS"
.B __xservername__
@@ -119,13 +115,14 @@ one way, the highest precedence mechanism is used. The list of mechanisms
is ordered from highest precedence to lowest. Note that not all parameters
can be supplied via all methods. The available command line options
and environment variables (and some defaults) are described here and in
-the Xserver(1) manual page. Most configuration file parameters, with
-their defaults, are described in the __xconfigfile__(__filemansuffix__) manual
-page. Driver and module specific configuration parameters are described
-in the relevant driver or module manual page.
+the Xserver(__appmansuffix__) manual page. Most configuration file
+parameters, with their defaults, are described in the
+__xconfigfile__(__filemansuffix__) manual page. Driver and module specific
+configuration parameters are described in the relevant driver or module
+manual page.
.PP
-In addition to the normal server options described in the Xserver(1)
-manual page,
+In addition to the normal server options described in the
+Xserver(__appmansuffix__) manual page,
.B __xservername__
accepts the following command line switches:
.TP 8
@@ -385,7 +382,8 @@ options.
When this option is specified, the
.B __xservername__
server scans the PCI bus, and prints out some information about each
-device that was detected. See also scanpci(1) and pcitweak(1).
+device that was detected. See also scanpci(__appmansuffix__)
+and pcitweak(__appmansuffix__).
.TP 8
.BI \-screen " screen-name"
Use the __xconfigfile__(__filemansuffix__) file
@@ -426,6 +424,12 @@ Print out the server version, patchlevel, release date, the operating
system/platform it was built on, and whether it includes module loader
support.
.TP 8
+.B \-showDefaultModulePath
+Print out the default module path the server was compiled with.
+.TP 8
+.B \-showDefaultLibPath
+Print out the path libraries should be installed to.
+.TP 8
.BI \-config " file"
Read the server configuration from
.IR file .
@@ -502,13 +506,12 @@ for its initial setup.
Refer to the __xconfigfile__(__filemansuffix__) manual page for information
about the format of this file.
.PP
-Starting with version 4.4,
.B __xservername__
has a mechanism for automatically generating a built-in configuration
at run-time when no
.B __xconfigfile__
file is present. The current version of this automatic configuration
-mechanism works in three ways.
+mechanism works in two ways.
.PP
The first is via enhancements that have made many components of the
.B __xconfigfile__
@@ -517,14 +520,7 @@ reasonably deduced doesn't need to be specified explicitly, greatly
reducing the amount of built-in configuration information that needs to
be generated at run-time.
.PP
-The second is to use an external utility called getconfig(1), when
-available, to use meta-configuration information to generate a suitable
-configuration for the primary video device. The meta-configuration
-information can be updated to allow an existing installation to get the
-best out of new hardware or to work around bugs that are found
-post-release.
-.PP
-The third is to have "safe" fallbacks for most configuration information.
+The second is to have "safe" fallbacks for most configuration information.
This maximises the likelihood that the
.B __xservername__
server will start up in some usable configuration even when information
@@ -580,7 +576,7 @@ Client error message database.
.B __projectroot__/lib/X11/app-defaults/\(**
Client resource specifications.
.TP 30
-.B __projectroot__/man/man?/\(**
+.B __mandir__/man?/\(**
Manual pages.
.TP 30
.BI /etc/X n .hosts
@@ -638,7 +634,7 @@ __xservername__ was originally based on XFree86 4.4rc2.
That was originally based on \fIX386 1.2\fP by Thomas Roell, which
was contributed to the then X Consortium's X11R5 distribution by SGCS.
.PP
-__xservername__ is released by the X.org Foundation.
+__xservername__ is released by the X.Org Foundation.
.PP
The project that became XFree86 was originally founded in 1992 by
David Dawes, Glenn Lai, Jim Tsillas and David Wexelblat.
@@ -679,9 +675,9 @@ Orest Zborowski \fIorestz@eskimo.com\fP
.RE
.PP
__xservername__ source is available from the FTP server
-\fI<ftp://ftp.x.org/>\fP, and from the X.org
-server \fI<http://www.freedesktop.org/cvs/>\fP. Documentation and other
-information can be found from the X.org web site
+\fI<ftp://ftp.x.org/>\fP, and from the X.Org
+server \fI<http://gitweb.freedesktop.org/>\fP. Documentation and other
+information can be found from the X.Org web site
\fI<http://www.x.org/>\fP.
.SH LEGAL
diff --git a/hw/xfree86/doc/man/xorg.conf.man.pre b/hw/xfree86/doc/man/xorg.conf.man.pre
index 77d485665..8d52b2bcf 100644
--- a/hw/xfree86/doc/man/xorg.conf.man.pre
+++ b/hw/xfree86/doc/man/xorg.conf.man.pre
@@ -311,7 +311,6 @@ font path elements:
.I __projectroot__/lib/X11/fonts/misc/
.I __projectroot__/lib/X11/fonts/TTF/
.I __projectroot__/lib/X11/fonts/Type1/
-.I __projectroot__/lib/X11/fonts/CID/
.I __projectroot__/lib/X11/fonts/75dpi/
.I __projectroot__/lib/X11/fonts/100dpi/
.fi
@@ -326,7 +325,6 @@ The recommended font path contains the following font path elements:
.I __projectroot__/lib/X11/fonts/75dpi/:unscaled
.I __projectroot__/lib/X11/fonts/100dpi/:unscaled
.I __projectroot__/lib/X11/fonts/Type1/
-.I __projectroot__/lib/X11/fonts/CID/
.I __projectroot__/lib/X11/fonts/Speedo/
.I __projectroot__/lib/X11/fonts/75dpi/
.I __projectroot__/lib/X11/fonts/100dpi/
@@ -602,6 +600,13 @@ the keymap for a mapping to the
.B Terminate
action and, if found, use XKEYBOARD for processing actions, otherwise
the builtin handler will be used.
+.TP 7
+.BI "Option \*qAIGLX\*q \*q" boolean \*q
+enable or disable AIGLX. AIGLX is enabled by default.
+.TP 7
+.BI "Option \*qIgnoreABI\*q \*q" boolean \*q
+Allow modules built for a different, potentially incompatible version of
+the X server to load. Disabled by default.
.SH MODULE SECTION
The
.B Module
@@ -1074,7 +1079,7 @@ Include the set of modes listed in the
.B Modes
section called
.IR modesection-id.
-This make all of the modes defined in that section available for use by
+This makes all of the modes defined in that section available for use by
this monitor.
.TP 7
.BI "Mode \*q" name \*q
diff --git a/hw/xfree86/doc/sgml/DESIGN.sgml b/hw/xfree86/doc/sgml/DESIGN.sgml
index 84e4fad21..5beff653f 100644
--- a/hw/xfree86/doc/sgml/DESIGN.sgml
+++ b/hw/xfree86/doc/sgml/DESIGN.sgml
@@ -6436,7 +6436,6 @@ static PciChipsets ZZZPciChipsets[] = {
driver. This is required for the dynamically loaded version:
<p>
<code>
-#ifdef XFree86LOADER
static XF86ModuleVersionInfo zzzVersRec =
{
"zzz",
@@ -6450,7 +6449,6 @@ static XF86ModuleVersionInfo zzzVersRec =
MOD_CLASS_VIDEODRV,
{0,0,0,0}
};
-#endif
</code>
<p>
<item>Define a data structure to hold the driver's screen-specific data.
@@ -6508,9 +6506,7 @@ static const OptionInfoRec ZZZOptions[] = {
the driver to the main list of drivers.
<code>
-#ifdef XFree86LOADER
-
-static MODULESETUPPROTO(mgaSetup);
+static MODULESETUPPROTO(zzzSetup);
XF86ModuleData zzzModuleData = { &amp;zzzVersRec, zzzSetup, NULL };
@@ -6540,7 +6536,6 @@ zzzSetup(pointer module, pointer opts, int *errmaj, int *errmin)
return NULL;
}
}
-#endif
</code>
<sect2>GetRec, FreeRec
diff --git a/hw/xfree86/dri/Makefile.am b/hw/xfree86/dri/Makefile.am
index 6de88e2bb..68f1eaefa 100644
--- a/hw/xfree86/dri/Makefile.am
+++ b/hw/xfree86/dri/Makefile.am
@@ -7,13 +7,10 @@ libdri_la_CFLAGS = -I$(top_srcdir)/hw/xfree86/common \
-I$(top_builddir)/GL/include \
-I@MESA_SOURCE@/include \
-DHAVE_XORG_CONFIG_H \
- @SERVER_DEFINES@ \
- @MODULE_DEFINES@ \
- @LOADER_DEFINES@ \
- @DRIPROTO_CFLAGS@ \
+ @DIX_CFLAGS@ @DRIPROTO_CFLAGS@ \
@LIBDRM_CFLAGS@ \
@GL_CFLAGS@
-libdri_la_LDFLAGS = -module -avoid-version
+libdri_la_LDFLAGS = -module -avoid-version @LIBDRM_LIBS@
libdri_ladir = $(moduledir)/extensions
libdri_la_SOURCES = \
dri.c \
diff --git a/hw/xfree86/dri/dri.c b/hw/xfree86/dri/dri.c
index b58b670a2..5337f9a4a 100644
--- a/hw/xfree86/dri/dri.c
+++ b/hw/xfree86/dri/dri.c
@@ -1,4 +1,3 @@
-/* $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.
@@ -43,11 +42,13 @@ SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#include <unistd.h>
#include <string.h>
#include <stdio.h>
+#include <sys/ioctl.h>
#define NEED_REPLIES
#define NEED_EVENTS
#include <X11/X.h>
#include <X11/Xproto.h>
+#include "xf86drm.h"
#include "misc.h"
#include "dixstruct.h"
#include "extnsionst.h"
@@ -68,8 +69,9 @@ SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#include "glxserver.h"
#include "mi.h"
#include "mipointer.h"
+#include "xf86_OSproc.h"
-#if defined(XFree86LOADER) && !defined(PANORAMIX)
+#if !defined(PANORAMIX)
extern Bool noPanoramiXExtension;
#endif
@@ -82,6 +84,8 @@ static RESTYPE DRIDrawablePrivResType;
static RESTYPE DRIContextPrivResType;
static void DRIDestroyDummyContext(ScreenPtr pScreen, Bool hasCtxPriv);
+drmServerInfo DRIDRMServerInfo;
+
/* Wrapper just like xf86DrvMsg, but
without the verbosity level checking.
This will make it easy to turn off some
@@ -105,6 +109,7 @@ DRIDrvMsg(int scrnIndex, MessageType type, const char *format, ...)
va_end(ap);
}
+
Bool
DRIScreenInit(ScreenPtr pScreen, DRIInfoPtr pDRIInfo, int *pDRMFD)
{
@@ -135,14 +140,9 @@ DRIScreenInit(ScreenPtr pScreen, DRIInfoPtr pDRIInfo, int *pDRMFD)
* 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,
@@ -150,7 +150,6 @@ DRIScreenInit(ScreenPtr pScreen, DRIInfoPtr pDRIInfo, int *pDRMFD)
return FALSE;
}
}
-#endif
drmWasAvailable = drmAvailable();
@@ -578,6 +577,26 @@ DRICloseScreen(ScreenPtr pScreen)
}
}
+#define DRM_MSG_VERBOSITY 3
+
+static int dri_drm_debug_print(const char *format, va_list ap)
+{
+ xf86VDrvMsgVerb(-1, X_NONE, DRM_MSG_VERBOSITY, format, ap);
+ return 0;
+}
+
+static void dri_drm_get_perms(gid_t *group, mode_t *mode)
+{
+ *group = xf86ConfigDRI.group;
+ *mode = xf86ConfigDRI.mode;
+}
+
+drmServerInfo DRIDRMServerInfo = {
+ dri_drm_debug_print,
+ xf86LoadKernelModule,
+ dri_drm_get_perms,
+};
+
Bool
DRIExtensionInit(void)
{
@@ -999,6 +1018,10 @@ DRICreateDrawable(ScreenPtr pScreen, Drawable id,
pWin = (WindowPtr)pDrawable;
if ((pDRIDrawablePriv = DRI_DRAWABLE_PRIV_FROM_WINDOW(pWin))) {
pDRIDrawablePriv->refCount++;
+
+ if (!pDRIDrawablePriv->hwDrawable) {
+ drmCreateDrawable(pDRIPriv->drmFD, &pDRIDrawablePriv->hwDrawable);
+ }
}
else {
/* allocate a DRI Window Private record */
@@ -1007,13 +1030,13 @@ DRICreateDrawable(ScreenPtr pScreen, Drawable id,
}
/* Only create a drm_drawable_t once */
- if (drmCreateDrawable(pDRIPriv->drmFD, hHWDrawable)) {
+ if (drmCreateDrawable(pDRIPriv->drmFD,
+ &pDRIDrawablePriv->hwDrawable)) {
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;
@@ -1036,6 +1059,15 @@ DRICreateDrawable(ScreenPtr pScreen, Drawable id,
/* track this in case this window is destroyed */
AddResource(id, DRIDrawablePrivResType, (pointer)pWin);
}
+
+ if (pDRIDrawablePriv->hwDrawable) {
+ drmUpdateDrawableInfo(pDRIPriv->drmFD,
+ pDRIDrawablePriv->hwDrawable,
+ DRM_DRAWABLE_CLIPRECTS,
+ REGION_NUM_RECTS(&pWin->clipList),
+ REGION_RECTS(&pWin->clipList));
+ *hHWDrawable = pDRIDrawablePriv->hwDrawable;
+ }
}
else { /* pixmap (or for GLX 1.3, a PBuffer) */
/* NOT_DONE */
@@ -1820,6 +1852,11 @@ DRIClipNotify(WindowPtr pWin, int dx, int dy)
pDRIPriv->pSAREA->drawableTable[pDRIDrawablePriv->drawableIndex].stamp
= DRIDrawableValidationStamp++;
+
+ drmUpdateDrawableInfo(pDRIPriv->drmFD, pDRIDrawablePriv->hwDrawable,
+ DRM_DRAWABLE_CLIPRECTS,
+ REGION_NUM_RECTS(&pWin->clipList),
+ REGION_RECTS(&pWin->clipList));
}
/* call lower wrapped functions */
@@ -2082,3 +2119,71 @@ DRICreatePCIBusID(pciVideoPtr PciInfo)
PciInfo->device, PciInfo->func);
return busID;
}
+
+static void drmSIGIOHandler(int interrupt, void *closure)
+{
+ unsigned long key;
+ void *value;
+ ssize_t count;
+ drm_ctx_t ctx;
+ typedef void (*_drmCallback)(int, void *, void *);
+ char buf[256];
+ drm_context_t old;
+ drm_context_t new;
+ void *oldctx;
+ void *newctx;
+ char *pt;
+ drmHashEntry *entry;
+ void *hash_table;
+
+ hash_table = drmGetHashTable();
+
+ if (!hash_table) return;
+ if (drmHashFirst(hash_table, &key, &value)) {
+ entry = value;
+ do {
+#if 0
+ fprintf(stderr, "Trying %d\n", entry->fd);
+#endif
+ if ((count = read(entry->fd, buf, sizeof(buf))) > 0) {
+ buf[count] = '\0';
+#if 0
+ fprintf(stderr, "Got %s\n", buf);
+#endif
+
+ for (pt = buf; *pt != ' '; ++pt); /* Find first space */
+ ++pt;
+ old = strtol(pt, &pt, 0);
+ new = strtol(pt, NULL, 0);
+ oldctx = drmGetContextTag(entry->fd, old);
+ newctx = drmGetContextTag(entry->fd, new);
+#if 0
+ fprintf(stderr, "%d %d %p %p\n", old, new, oldctx, newctx);
+#endif
+ ((_drmCallback)entry->f)(entry->fd, oldctx, newctx);
+ ctx.handle = new;
+ ioctl(entry->fd, DRM_IOCTL_NEW_CTX, &ctx);
+ }
+ } while (drmHashNext(hash_table, &key, &value));
+ }
+}
+
+
+int drmInstallSIGIOHandler(int fd, void (*f)(int, void *, void *))
+{
+ drmHashEntry *entry;
+
+ entry = drmGetEntry(fd);
+ entry->f = f;
+
+ return xf86InstallSIGIOHandler(fd, drmSIGIOHandler, 0);
+}
+
+int drmRemoveSIGIOHandler(int fd)
+{
+ drmHashEntry *entry = drmGetEntry(fd);
+
+ entry->f = NULL;
+
+ return xf86RemoveSIGIOHandler(fd);
+}
diff --git a/hw/xfree86/dri/dri.h b/hw/xfree86/dri/dri.h
index 312e8a8bb..dca0edde8 100644
--- a/hw/xfree86/dri/dri.h
+++ b/hw/xfree86/dri/dri.h
@@ -1,4 +1,3 @@
-/* $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.
@@ -340,6 +339,8 @@ extern void DRIMoveBuffersHelper(ScreenPtr pScreen,
extern char *DRICreatePCIBusID(pciVideoPtr PciInfo);
+extern int drmInstallSIGIOHandler(int fd, void (*f)(int, void *, void *));
+extern int drmRemoveSIGIOHandler(int fd);
#define _DRI_H_
#endif
diff --git a/hw/xfree86/dri/drimodule.c b/hw/xfree86/dri/drimodule.c
index 427065d91..0e3d84eb8 100644
--- a/hw/xfree86/dri/drimodule.c
+++ b/hw/xfree86/dri/drimodule.c
@@ -39,8 +39,11 @@ SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#include "xf86Module.h"
#include "globals.h"
+#include "xf86drm.h"
static MODULESETUPPROTO(driSetup);
+drmServerInfo DRIDRMServerInfo;
+
static XF86ModuleVersionInfo VersRec =
{
"dri",
@@ -68,58 +71,23 @@ static ExtensionModule XF86DRIExt =
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
-};
-
_X_EXPORT 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);
- }
+ LoadExtension(&XF86DRIExt, FALSE);
} else {
if (errmaj) *errmaj = LDR_ONCEONLY;
}
+
+ drmSetServerInfo(&DRIDRMServerInfo);
+
/* Need a non-NULL return value to indicate success */
- return drm;
+ return 1;
}
diff --git a/hw/xfree86/dri/dristruct.h b/hw/xfree86/dri/dristruct.h
index 6dc86d5c4..340c59a2e 100644
--- a/hw/xfree86/dri/dristruct.h
+++ b/hw/xfree86/dri/dristruct.h
@@ -1,4 +1,3 @@
-/* $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.
diff --git a/hw/xfree86/dri/sarea.h b/hw/xfree86/dri/sarea.h
index 77c16e0ef..a0d6084f3 100644
--- a/hw/xfree86/dri/sarea.h
+++ b/hw/xfree86/dri/sarea.h
@@ -1,4 +1,3 @@
-/* $XFree86: xc/programs/Xserver/GL/dri/sarea.h,v 1.11 2002/10/30 12:52:03 alanh Exp $ */
/**
* \file sarea.h
* SAREA definitions.
@@ -34,7 +33,6 @@
* 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_
diff --git a/hw/xfree86/dri/xf86dri.c b/hw/xfree86/dri/xf86dri.c
index 4b0e35459..933cd3e18 100644
--- a/hw/xfree86/dri/xf86dri.c
+++ b/hw/xfree86/dri/xf86dri.c
@@ -1,4 +1,3 @@
-/* $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.
@@ -81,6 +80,7 @@ static DISPATCH_PROC(ProcXF86DRIDispatch);
static DISPATCH_PROC(ProcXF86DRIAuthConnection);
static DISPATCH_PROC(SProcXF86DRIQueryVersion);
+static DISPATCH_PROC(SProcXF86DRIQueryDirectRenderingCapable);
static DISPATCH_PROC(SProcXF86DRIDispatch);
static void XF86DRIResetProc(ExtensionEntry* extEntry);
@@ -142,6 +142,9 @@ ProcXF86DRIQueryVersion(
if (client->swapped) {
swaps(&rep.sequenceNumber, n);
swapl(&rep.length, n);
+ swaps(&rep.majorVersion, n);
+ swaps(&rep.minorVersion, n);
+ swapl(&rep.patchVersion, n);
}
WriteToClient(client, sizeof(xXF86DRIQueryVersionReply), (char *)&rep);
return (client->noClientException);
@@ -154,6 +157,7 @@ ProcXF86DRIQueryDirectRenderingCapable(
{
xXF86DRIQueryDirectRenderingCapableReply rep;
Bool isCapable;
+ register int n;
REQUEST(xXF86DRIQueryDirectRenderingCapableReq);
REQUEST_SIZE_MATCH(xXF86DRIQueryDirectRenderingCapableReq);
@@ -172,9 +176,14 @@ ProcXF86DRIQueryDirectRenderingCapable(
}
rep.isCapable = isCapable;
- if (!LocalClient(client))
+ if (!LocalClient(client) || client->swapped)
rep.isCapable = 0;
+ if (client->swapped) {
+ swaps(&rep.sequenceNumber, n);
+ swapl(&rep.length, n);
+ }
+
WriteToClient(client,
sizeof(xXF86DRIQueryDirectRenderingCapableReply), (char *)&rep);
return (client->noClientException);
@@ -377,6 +386,7 @@ ProcXF86DRICreateDrawable(
{
xXF86DRICreateDrawableReply rep;
DrawablePtr pDrawable;
+ int rc;
REQUEST(xXF86DRICreateDrawableReq);
REQUEST_SIZE_MATCH(xXF86DRICreateDrawableReq);
@@ -389,12 +399,10 @@ ProcXF86DRICreateDrawable(
rep.length = 0;
rep.sequenceNumber = client->sequence;
- if (!(pDrawable = (DrawablePtr)SecurityLookupDrawable(
- (Drawable)stuff->drawable,
- client,
- SecurityReadAccess))) {
- return BadValue;
- }
+ rc = dixLookupDrawable(&pDrawable, stuff->drawable, client, 0,
+ DixReadAccess);
+ if (rc != Success)
+ return rc;
if (!DRICreateDrawable( screenInfo.screens[stuff->screen],
(Drawable)stuff->drawable,
@@ -415,17 +423,17 @@ ProcXF86DRIDestroyDrawable(
REQUEST(xXF86DRIDestroyDrawableReq);
DrawablePtr pDrawable;
REQUEST_SIZE_MATCH(xXF86DRIDestroyDrawableReq);
+ int rc;
+
if (stuff->screen >= screenInfo.numScreens) {
client->errorValue = stuff->screen;
return BadValue;
}
- if (!(pDrawable = (DrawablePtr)SecurityLookupDrawable(
- (Drawable)stuff->drawable,
- client,
- SecurityReadAccess))) {
- return BadValue;
- }
+ rc = dixLookupDrawable(&pDrawable, stuff->drawable, client, 0,
+ DixReadAccess);
+ if (rc != Success)
+ return rc;
if (!DRIDestroyDrawable( screenInfo.screens[stuff->screen],
(Drawable)stuff->drawable,
@@ -446,7 +454,7 @@ ProcXF86DRIGetDrawableInfo(
int X, Y, W, H;
drm_clip_rect_t * pClipRects;
drm_clip_rect_t * pBackClipRects;
- int backX, backY;
+ int backX, backY, rc;
REQUEST(xXF86DRIGetDrawableInfoReq);
REQUEST_SIZE_MATCH(xXF86DRIGetDrawableInfoReq);
@@ -459,12 +467,10 @@ ProcXF86DRIGetDrawableInfo(
rep.length = 0;
rep.sequenceNumber = client->sequence;
- if (!(pDrawable = (DrawablePtr)SecurityLookupDrawable(
- (Drawable)stuff->drawable,
- client,
- SecurityReadAccess))) {
- return BadValue;
- }
+ rc = dixLookupDrawable(&pDrawable, stuff->drawable, client, 0,
+ DixReadAccess);
+ if (rc != Success)
+ return rc;
if (!DRIGetDrawableInfo( screenInfo.screens[stuff->screen],
pDrawable,
@@ -627,22 +633,35 @@ SProcXF86DRIQueryVersion(
}
static int
+SProcXF86DRIQueryDirectRenderingCapable(
+ register ClientPtr client
+)
+{
+ register int n;
+ REQUEST(xXF86DRIQueryDirectRenderingCapableReq);
+ swaps(&stuff->length, n);
+ swapl(&stuff->screen, n);
+ return ProcXF86DRIQueryDirectRenderingCapable(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 */
+ /*
+ * Only local clients are allowed DRI access, but remote clients still need
+ * these requests to find out cleanly.
+ */
switch (stuff->data)
{
case X_XF86DRIQueryVersion:
return SProcXF86DRIQueryVersion(client);
+ case X_XF86DRIQueryDirectRenderingCapable:
+ return SProcXF86DRIQueryDirectRenderingCapable(client);
default:
- return BadRequest;
+ return DRIErrorBase + XF86DRIClientNotLocal;
}
}
diff --git a/hw/xfree86/dummylib/Makefile.am b/hw/xfree86/dummylib/Makefile.am
index ab62a6b54..6299a1ff7 100644
--- a/hw/xfree86/dummylib/Makefile.am
+++ b/hw/xfree86/dummylib/Makefile.am
@@ -2,25 +2,16 @@
# libdummy-nonserver.a contains additional routines normally found in the
# server for use in building the utilities like scanpci & the config tools
-noinst_LIBRARIES = libdummy.a libdummy-nonserver.a
+noinst_LIBRARIES = libdummy-nonserver.a
INCLUDES = $(XORG_INCS)
-AM_CFLAGS = $(XORG_CFLAGS) @SERVER_DEFINES@ @LOADER_DEFINES@
+AM_CFLAGS = $(DIX_CFLAGS) $(XORG_CFLAGS)
if NEED_STRLCAT
STRL_SRCS = $(top_srcdir)/os/strlcat.c $(top_srcdir)/os/strlcpy.c
endif
-libdummy_a_SOURCES = getvalidbios.c getemptypci.c \
- pcitestmulti.c xf86allocscripi.c \
- xf86addrestolist.c xf86drvmsg.c xf86drvmsgverb.c \
- xf86getverb.c \
- xf86opt.c xf86screens.c xf86servisinit.c xf86verbose.c \
- #xf86errorf.c xf86errorfverb.c xf86msg.c xf86msgverb.c \
- #logvwrite.c verrorf.c xf86info.c xalloc.c fatalerror.c \
- #$(srcdir)/../os-support/shared/sigiostubs.c
-
libdummy_nonserver_a_SOURCES = \
fatalerror.c \
getvalidbios.c \
diff --git a/hw/xfree86/dummylib/dummylib.h b/hw/xfree86/dummylib/dummylib.h
index ca27e43d1..b70b5d0b4 100644
--- a/hw/xfree86/dummylib/dummylib.h
+++ b/hw/xfree86/dummylib/dummylib.h
@@ -1,4 +1,3 @@
-/* $XFree86: xc/programs/Xserver/hw/xfree86/dummylib/dummylib.h,v 1.1 2000/02/13 03:06:38 dawes Exp $ */
#ifdef HAVE_XORG_CONFIG_H
#include <xorg-config.h>
diff --git a/hw/xfree86/dummylib/getvalidbios.c b/hw/xfree86/dummylib/getvalidbios.c
index d7c613122..1d061d433 100644
--- a/hw/xfree86/dummylib/getvalidbios.c
+++ b/hw/xfree86/dummylib/getvalidbios.c
@@ -1,4 +1,3 @@
-/* $XFree86: xc/programs/Xserver/hw/xfree86/dummylib/getvalidbios.c,v 1.1 2000/02/13 03:06:38 dawes Exp $ */
#ifdef HAVE_XORG_CONFIG_H
#include <xorg-config.h>
diff --git a/hw/xfree86/dummylib/logvwrite.c b/hw/xfree86/dummylib/logvwrite.c
index 516380707..26868e7c8 100644
--- a/hw/xfree86/dummylib/logvwrite.c
+++ b/hw/xfree86/dummylib/logvwrite.c
@@ -1,4 +1,3 @@
-/* $XFree86: xc/programs/Xserver/hw/xfree86/dummylib/verrorfverb.c,v 1.2 2003/08/25 04:13:05 dawes Exp $ */
#ifdef HAVE_XORG_CONFIG_H
#include <xorg-config.h>
diff --git a/hw/xfree86/dummylib/xalloc.c b/hw/xfree86/dummylib/xalloc.c
index 7131dc5e6..b671d4dde 100644
--- a/hw/xfree86/dummylib/xalloc.c
+++ b/hw/xfree86/dummylib/xalloc.c
@@ -1,4 +1,3 @@
-/* $XFree86: xc/programs/Xserver/hw/xfree86/dummylib/xalloc.c,v 1.1 2000/02/13 03:06:39 dawes Exp $ */
#ifdef HAVE_XORG_CONFIG_H
#include <xorg-config.h>
diff --git a/hw/xfree86/dummylib/xf86addrestolist.c b/hw/xfree86/dummylib/xf86addrestolist.c
index 86b8d5243..32789ecbb 100644
--- a/hw/xfree86/dummylib/xf86addrestolist.c
+++ b/hw/xfree86/dummylib/xf86addrestolist.c
@@ -1,4 +1,3 @@
-/* $XFree86: xc/programs/Xserver/hw/xfree86/dummylib/xf86addrestolist.c,v 1.2tsi Exp $ */
#ifdef HAVE_XORG_CONFIG_H
#include <xorg-config.h>
diff --git a/hw/xfree86/dummylib/xf86drvmsg.c b/hw/xfree86/dummylib/xf86drvmsg.c
index 13c8c0bc5..b77948d0c 100644
--- a/hw/xfree86/dummylib/xf86drvmsg.c
+++ b/hw/xfree86/dummylib/xf86drvmsg.c
@@ -1,4 +1,3 @@
-/* $XFree86: xc/programs/Xserver/hw/xfree86/dummylib/xf86drvmsg.c,v 1.1 2000/02/13 03:06:40 dawes Exp $ */
#ifdef HAVE_XORG_CONFIG_H
#include <xorg-config.h>
diff --git a/hw/xfree86/dummylib/xf86drvmsgverb.c b/hw/xfree86/dummylib/xf86drvmsgverb.c
index 1320117fc..5ecd99e4d 100644
--- a/hw/xfree86/dummylib/xf86drvmsgverb.c
+++ b/hw/xfree86/dummylib/xf86drvmsgverb.c
@@ -1,4 +1,3 @@
-/* $XFree86: xc/programs/Xserver/hw/xfree86/dummylib/xf86drvmsgverb.c,v 1.1 2000/02/13 03:06:40 dawes Exp $ */
#ifdef HAVE_XORG_CONFIG_H
#include <xorg-config.h>
diff --git a/hw/xfree86/dummylib/xf86errorf.c b/hw/xfree86/dummylib/xf86errorf.c
index 41ebbee21..9834c613b 100644
--- a/hw/xfree86/dummylib/xf86errorf.c
+++ b/hw/xfree86/dummylib/xf86errorf.c
@@ -1,4 +1,3 @@
-/* $XFree86: xc/programs/Xserver/hw/xfree86/dummylib/xf86errorf.c,v 1.2 2000/05/31 07:15:05 eich Exp $ */
#ifdef HAVE_XORG_CONFIG_H
#include <xorg-config.h>
diff --git a/hw/xfree86/dummylib/xf86errorfverb.c b/hw/xfree86/dummylib/xf86errorfverb.c
index 398d0b3c3..94f030719 100644
--- a/hw/xfree86/dummylib/xf86errorfverb.c
+++ b/hw/xfree86/dummylib/xf86errorfverb.c
@@ -1,4 +1,3 @@
-/* $XFree86: xc/programs/Xserver/hw/xfree86/dummylib/xf86errorfverb.c,v 1.1 2000/02/13 03:06:41 dawes Exp $ */
#ifdef HAVE_XORG_CONFIG_H
#include <xorg-config.h>
diff --git a/hw/xfree86/dummylib/xf86msg.c b/hw/xfree86/dummylib/xf86msg.c
index 08cb5da80..ea5bb3560 100644
--- a/hw/xfree86/dummylib/xf86msg.c
+++ b/hw/xfree86/dummylib/xf86msg.c
@@ -1,4 +1,3 @@
-/* $XFree86: xc/programs/Xserver/hw/xfree86/dummylib/xf86msg.c,v 1.1 2000/02/13 03:06:42 dawes Exp $ */
#ifdef HAVE_XORG_CONFIG_H
#include <xorg-config.h>
diff --git a/hw/xfree86/dummylib/xf86msgverb.c b/hw/xfree86/dummylib/xf86msgverb.c
index ffad8c7cb..4467af9d5 100644
--- a/hw/xfree86/dummylib/xf86msgverb.c
+++ b/hw/xfree86/dummylib/xf86msgverb.c
@@ -1,4 +1,3 @@
-/* $XFree86: xc/programs/Xserver/hw/xfree86/dummylib/xf86msgverb.c,v 1.1 2000/02/13 03:06:42 dawes Exp $ */
#ifdef HAVE_XORG_CONFIG_H
#include <xorg-config.h>
diff --git a/hw/xfree86/dummylib/xf86opt.c b/hw/xfree86/dummylib/xf86opt.c
index e46c00b69..1b7bca9c6 100644
--- a/hw/xfree86/dummylib/xf86opt.c
+++ b/hw/xfree86/dummylib/xf86opt.c
@@ -1,4 +1,3 @@
-/* $XFree86: xc/programs/Xserver/hw/xfree86/dummylib/xf86opt.c,v 1.1 2000/02/13 03:06:42 dawes Exp $ */
#ifdef HAVE_XORG_CONFIG_H
#include <xorg-config.h>
diff --git a/hw/xfree86/exa/Makefile.am b/hw/xfree86/exa/Makefile.am
index 8e85e1ede..9eb2e1797 100644
--- a/hw/xfree86/exa/Makefile.am
+++ b/hw/xfree86/exa/Makefile.am
@@ -7,10 +7,22 @@ INCLUDES = \
-I$(srcdir)/../../../exa \
-I$(srcdir)/../../../miext/cw
-AM_CFLAGS = $(XORG_CFLAGS) @SERVER_DEFINES@ @MODULE_DEFINES@ @LOADER_DEFINES@
+AM_CFLAGS = $(DIX_CFLAGS) $(XORG_CFLAGS)
libexa_la_SOURCES = \
examodule.c
libexa_la_LIBADD = \
../../../exa/libexa.la
+
+include $(top_srcdir)/cpprules.in
+
+drivermandir = $(DRIVER_MAN_DIR)
+driverman_DATA = exa.$(DRIVER_MAN_SUFFIX)
+CLEANFILES = $(driverman_DATA) exa.man
+
+exa.$(DRIVER_MAN_SUFFIX): exa.man
+ -rm -f exa.$(DRIVER_MAN_SUFFIX)
+ $(LN_S) exa.man exa.$(DRIVER_MAN_SUFFIX)
+
+EXTRA_DIST = exa.man.pre
diff --git a/hw/xfree86/exa/exa.man.pre b/hw/xfree86/exa/exa.man.pre
new file mode 100644
index 000000000..ea41b90e4
--- /dev/null
+++ b/hw/xfree86/exa/exa.man.pre
@@ -0,0 +1,40 @@
+.\" shorthand for double quote that works everywhere.
+.ds q \N'34'
+.TH EXA __drivermansuffix__ __vendorversion__
+.SH NAME
+exa \- new 2D acceleration architecture for X.Org
+.SH DESCRIPTION
+.B EXA
+provides a simple API for video drivers to implement for 2D acceleration. It
+is a module loaded by drivers, and is not intended to be loaded on its own. See
+your driver's manual page for how to enable
+.B EXA
+.
+.PP
+The
+.B EXA
+architecture is designed to make accelerating the Render extension simple and
+efficient, and results in various performance tradeoffs compared to XAA. Some
+options are available for debugging performance issues or driver rendering
+problems. They are not intended for general use.
+.TP
+.BI "Option \*qEXANoComposite\*q \*q" boolean \*q
+Disables acceleration of the Composite operation, which is at the heart of
+the Render extension. Not related to the Composite extension. Default: No.
+.TP
+.BI "Option \*qEXANoUploadToScreen\*q \*q" boolean \*q
+Disables acceleration of uploading pixmap data to the freamebuffer. Default: No.
+.TP
+.BI "Option \*qEXANoDownloadFromScreen\*q \*q" boolean \*q
+Disables acceleration of downloading of pixmap data from the framebuffer.
+.B NOTE:
+Not usable with drivers which rely on DownloadFromScreen succeeding.
+Default: No.
+.TP
+.BI "Option \*qMigrationHeuristic\*q \*q" anystr \*q
+Chooses an alternate pixmap migration heuristic, for debugging purposes. The
+default is intended to be the best performing one for general use, though others
+may help with specific use cases. Available options include \*qalways\*q,
+\*qgreedy\*q, and \*qsmart\*q. Default: smart.
+.SH AUTHORS
+Authors include: Keith Packard, Eric Anholt, Zack Rusin, and Michel Dänzer
diff --git a/hw/xfree86/exa/examodule.c b/hw/xfree86/exa/examodule.c
index 0a7b361c8..4dce58fd8 100644
--- a/hw/xfree86/exa/examodule.c
+++ b/hw/xfree86/exa/examodule.c
@@ -47,11 +47,22 @@ static int exaXorgScreenPrivateIndex;
typedef enum {
EXAOPT_MIGRATION_HEURISTIC,
+ EXAOPT_NO_COMPOSITE,
+ EXAOPT_NO_UTS,
+ EXAOPT_NO_DFS,
} EXAOpts;
static const OptionInfoRec EXAOptions[] = {
- { EXAOPT_MIGRATION_HEURISTIC, "MigrationHeuristic", OPTV_ANYSTR, {0}, FALSE },
- { -1, NULL, OPTV_NONE, {0}, FALSE }
+ { EXAOPT_MIGRATION_HEURISTIC, "MigrationHeuristic",
+ OPTV_ANYSTR, {0}, FALSE },
+ { EXAOPT_NO_COMPOSITE, "EXANoComposite",
+ OPTV_BOOLEAN, {0}, FALSE },
+ { EXAOPT_NO_UTS, "EXANoUploadToScreen",
+ OPTV_BOOLEAN, {0}, FALSE },
+ { EXAOPT_NO_DFS, "EXANoDownloadFromScreen",
+ OPTV_BOOLEAN, {0}, FALSE },
+ { -1, NULL,
+ OPTV_NONE, {0}, FALSE }
};
static Bool
@@ -135,6 +146,26 @@ exaDDXDriverInit(ScreenPtr pScreen)
}
}
+ if (xf86IsOptionSet(pScreenPriv->options, EXAOPT_NO_COMPOSITE)) {
+ xf86DrvMsg(pScreen->myNum, X_INFO,
+ "EXA: Disabling Composite operation "
+ "(RENDER acceleration)\n");
+ pExaScr->info->CheckComposite = NULL;
+ pExaScr->info->PrepareComposite = NULL;
+ }
+
+ if (xf86IsOptionSet(pScreenPriv->options, EXAOPT_NO_UTS)) {
+ xf86DrvMsg(pScreen->myNum, X_INFO,
+ "EXA: Disabling UploadToScreen\n");
+ pExaScr->info->UploadToScreen = NULL;
+ }
+
+ if (xf86IsOptionSet(pScreenPriv->options, EXAOPT_NO_DFS)) {
+ xf86DrvMsg(pScreen->myNum, X_INFO,
+ "EXA: Disabling DownloadFromScreen\n");
+ pExaScr->info->DownloadFromScreen = NULL;
+ }
+
pScreen->devPrivates[exaXorgScreenPrivateIndex].ptr = pScreenPriv;
pScreenPriv->SavedEnableDisableFBAccess = pScrn->EnableDisableFBAccess;
diff --git a/hw/xfree86/fbdevhw/.gitignore b/hw/xfree86/fbdevhw/.gitignore
new file mode 100644
index 000000000..4c8446c75
--- /dev/null
+++ b/hw/xfree86/fbdevhw/.gitignore
@@ -0,0 +1,2 @@
+fbdevhw.4
+fbdevhw.4x
diff --git a/hw/xfree86/fbdevhw/Makefile.am b/hw/xfree86/fbdevhw/Makefile.am
index 9d79fa7f5..6a4a6e4e6 100644
--- a/hw/xfree86/fbdevhw/Makefile.am
+++ b/hw/xfree86/fbdevhw/Makefile.am
@@ -11,7 +11,7 @@ endif
INCLUDES = $(XORG_INCS) -I$(srcdir)/../i2c
-AM_CFLAGS = $(XORG_CFLAGS) @SERVER_DEFINES@ @MODULE_DEFINES@ @LOADER_DEFINES@
+AM_CFLAGS = $(DIX_CFLAGS) $(XORG_CFLAGS)
sdk_HEADERS = fbdevhw.h
diff --git a/hw/xfree86/fbdevhw/fbdevhw.h b/hw/xfree86/fbdevhw/fbdevhw.h
index cfc3fcdb6..741a4b341 100644
--- a/hw/xfree86/fbdevhw/fbdevhw.h
+++ b/hw/xfree86/fbdevhw/fbdevhw.h
@@ -1,4 +1,3 @@
-/* $XFree86: xc/programs/Xserver/hw/xfree86/fbdevhw/fbdevhw.h,v 1.11 2001/10/01 13:44:12 eich Exp $ */
#ifndef _FBDEVHW_H_
#define _FBDEVHW_H_
diff --git a/hw/xfree86/fbdevhw/fbdevhwstub.c b/hw/xfree86/fbdevhw/fbdevhwstub.c
index 80bccc8db..56ba92901 100644
--- a/hw/xfree86/fbdevhw/fbdevhwstub.c
+++ b/hw/xfree86/fbdevhw/fbdevhwstub.c
@@ -1,4 +1,3 @@
-/* $XFree86: xc/programs/Xserver/hw/xfree86/fbdevhw/fbdevhwstub.c,v 1.12 2001/10/28 03:33:55 tsi Exp $ */
#ifdef HAVE_XORG_CONFIG_H
#include <xorg-config.h>
diff --git a/hw/xfree86/fbdevhw/fbpriv.h b/hw/xfree86/fbdevhw/fbpriv.h
index a18b84345..4c08ec15d 100644
--- a/hw/xfree86/fbdevhw/fbpriv.h
+++ b/hw/xfree86/fbdevhw/fbpriv.h
@@ -2,7 +2,6 @@
* copyed from from linux kernel 2.2.4
* removed internal stuff (#ifdef __KERNEL__)
*/
-/* $XFree86: xc/programs/Xserver/hw/xfree86/fbdevhw/fbpriv.h,v 1.2 2000/01/21 02:30:02 dawes Exp $ */
#ifdef HAVE_XORG_CONFIG_H
#include <xorg-config.h>
diff --git a/hw/xfree86/getconfig/Makefile.am b/hw/xfree86/getconfig/Makefile.am
deleted file mode 100644
index acd1d9f17..000000000
--- a/hw/xfree86/getconfig/Makefile.am
+++ /dev/null
@@ -1,56 +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.
-#
-
-dist_bin_SCRIPTS = getconfig getconfig.pl
-
-getconfigdir = $(libdir)/X11/getconfig
-dist_getconfig_DATA = xorg.cfg cfg.sample
-
-include $(top_srcdir)/cpprules.in
-
-appmandir = $(APP_MAN_DIR)
-appman_PRE = getconfig.man
-appman_DATA = $(appman_PRE:man=@APP_MAN_SUFFIX@)
-
-filemandir = $(FILE_MAN_DIR)
-fileman_DATA = getconfig.$(FILE_MAN_SUFFIX)
-
-getconfig.$(FILE_MAN_SUFFIX): cfg.man
- -rm -f getconfig.$(FILE_MAN_SUFFIX)
- $(LN_S) cfg.man getconfig.$(FILE_MAN_SUFFIX)
-
-SUFFIXES += .$(APP_MAN_SUFFIX) .man
-
-.man.$(APP_MAN_SUFFIX):
- -rm -f $@
- $(LN_S) $< $@
-
-BUILT_SOURCES = $(appman_PRE)
-CLEANFILES = $(appman_PRE) $(appman_DATA) $(fileman_DATA) cfg.man
-
-EXTRA_DIST = cfg.man.pre getconfig.man.pre
diff --git a/hw/xfree86/getconfig/cfg.man.pre b/hw/xfree86/getconfig/cfg.man.pre
deleted file mode 100644
index 3996809ad..000000000
--- a/hw/xfree86/getconfig/cfg.man.pre
+++ /dev/null
@@ -1,137 +0,0 @@
-.TH getconfig __filemansuffix__ __vendorversion__
-.SH NAME
-getconfig - meta configuration files for getconfig(1)
-.SH SYNOPSIS
-.B \(**.cfg
-.SH DESCRIPTION
-.B getconfig
-is a programmatic interface that is used by the
-.B __xservername__
-server to get configuration information about video hardware when
-operating without an
-.B __xconfigfile__
-file.
-.PP
-This implementation of
-.B getconfig
-is written in perl. It processes rules from meta-configuration files.
-All meta-configuration files have a
-.I .cfg
-suffix.
-.PP
-Lines starting with a pound-sign (#) are comments, and are ignored.
-Blank lines that consist only of white space are also treated as comments
-and ignored.
-.PP
-The first non-comment line must be a signature string followed by
-the file format version number. The signature string is
-.PP
-.RS 4
-.nf
-"Xorg getconfig rules file.\ \ Version: "
-.fi
-.RE
-.PP
-The currently defined version is "1.0". Files that do not have the
-correct signature string are ignored.
-.PP
-The remaining non-comment lines define rules. The start of a new rule
-is indicated by a line with no leading white space. Subsequent lines
-making up a rule must be indented with white space. Logical lines within
-a rule may be split over multiple physical lines by using the usual
-continuation convention ('\e' at the end of the line). The first logical
-line of each rule is a perl expression. It may be any valid perl
-expression whose evaluated (with 'eval') result may be used as the
-argument to a perl 'if' statement. The second logical line should be
-the name of the __xservername__ video driver to use when the rule is true, and
-subsequent logical lines of each rule, if present, are additional
-configuration output for the video device's
-.B __xconfigfile__
-.B Device
-section. The driver name and additional lines of configuration information
-are written to standard output when the rule is chosen as the successful
-rule.
-.PP
-Pseudo rules consisting of perl expressions may be present in the file
-for the purpose of defining custom perl variables or setting the weight
-to use for the following rules. Pseudo rules are rules that consist of
-a single logical line only, and the are never candidates themselves for the
-successful rule.
-.PP
-Several perl variables are pre-defined, and may be used within rules.
-They include:
-.PP
-.RS 4
-.nf
-.BR "$vendor " "PCI vendor ID"
-.BR "$device " "PCI device ID"
-.BR "$revision " "PCI revision ID"
-.BR "$subsys " "PCI subsystem ID"
-.BR "$subsysVendor " "PCI subsystem vendor ID"
-.BR "$class " "PCI class"
-.BR "$XorgVersion " "Xorg version, as a 'v' string"
-.BR "$XorgVersionNumeric " "Xorg numeric version"
-.BR "$XorgVersionMajor " "Xorg major version"
-.BR "$XorgVersionMinor " "Xorg minor version"
-.BR "$XorgVersionPatch " "Xorg patch version"
-.BR "$XorgVersionSnap " "Xorg snap version"
-.BR "$weight " "current rule weight"
-.fi
-.RE
-.PP
-The
-.B $weight
-variable determines the weight of the rules as they are processed. The
-weight for subsequent rules may be set with a pseudo rule that sets or
-changes the value of
-.BR $weight .
-The default weight, and the weight used for built-in rules is 500. The
-meta-configuration files are processed in an unpredictable order. The
-weighting of the rules is used to determine their relative priority
-.PP
-After processing all of the rules, both built-in and those read from
-the meta-configuration files, the
-.B getconfig
-program chooses as the successful rule the last and highest weighted
-rule that evaluates to true.
-.SH FILES
-.I .cfg
-files located in the search path. The search path typically specified
-by the
-.B __xservername__
-server is:
-.PP
-.RS 4
-.nf
-.I /etc/X11
-.I __projectroot__/etc/X11
-.I <modulepath>
-.I __projectroot__/lib/X11/getconfig
-.fi
-.RE
-.PP
-where
-.I <modulepath>
-is the
-.B __xservername__
-server's module search path.
-.PP
-.TP 30
-.I __projectroot__/lib/X11/getconfig/xorg.cfg
-Default rules file that gets installed. This file doesn't contain any
-rules by default.
-.TP 30
-.I __projectroot__/lib/X11/getconfig/cfg.sample
-A sample rules file that gives some examples of what types of rules can
-appear in rules files.
-
-.SH "SEE ALSO"
-getconfig(1),
-__xservername__(__appmansuffix__),
-__xconfigfile__(__filemansuffix__).
-
-.SH AUTHORS
-The __xservername__ automatic configuration support and the
-.B getconfig
-interface was written by David H. Dawes, with the support of X-Oz
-Technologies for XFree86.
diff --git a/hw/xfree86/getconfig/cfg.sample b/hw/xfree86/getconfig/cfg.sample
deleted file mode 100644
index 93c98e4e2..000000000
--- a/hw/xfree86/getconfig/cfg.sample
+++ /dev/null
@@ -1,110 +0,0 @@
-# $DHD: xc/programs/Xserver/hw/xfree86/getconfig/cfg.sample,v 1.2 2003/09/23 05:12:07 dawes Exp $
-
-# Some sample Xorg getconfig rules file.
-
-#
-# The line below is the getconfig rules file signature, and must be the
-# first non-blank, non-comment line.
-#
-
-Xorg Project getconfig rules file. Version: 1.0
-
-#
-# Set the weight for the following rules. This should be set, otherwise
-# the previously set weight will get used, and you have no idea of knowing
-# what that might be.
-#
-
-$weight = 1000
-
-#
-# Rules. Rules consist of a condition (in perl code) followed by
-# a driver name and optionally some additional strings. The start of a
-# rule is indicated by a line with no leading white space. Subsequent
-# lines making up a rule must be indented. Logical lines may be split
-# over multiple physical lines by using the usual continuation '\'.
-#
-# Rules that are not followed by a driver name may be used to do other
-# things, like setting the weight as above.
-#
-
-#
-# Pre-defined variables include:
-#
-# $vendor PCI vendor ID
-# $device PCI device ID
-# $revision PCI revision ID
-# $subsys PCI subsystem ID
-# $subsysVendor PCI subsystem vendor ID
-# $class PCI class
-# $XorgVersion Xorg version, as a 'v' string.
-#
-# The Xorg version information is also available as the following:
-#
-# $XorgVersionNumeric
-# $XorgVersionMajor
-# $XorgVersionMinor
-# $XorgVersionPatch
-# $XorgVersionSnap
-#
-
-# Define a fake vendor ID for some sample rules.
-
-$novendor = 0x10000
-$nodevice = 0x10000
-
-$vendor == $novendor
- nodriver
- Option "xx"
- Videoram 1000
-
-# A rule with continued lines.
-
-$vendor == $novendor && \
-$device == $nodevice
- nodriver2
- Option \
- "yy"
-
-# Increase the weight of the following rules if the Xorg version is 4.3 or
-# higher.
-
-$weight++ if ($XorgVersion ge v4.3)
-
-$vendor == $novendor
- nodriver
- Option "yy"
-
-#
-# The weight can be changed at any times, and applies to rules that follow
-# until changed again.
-#
-
-$weight = 100
-
-$vendor == $novendor && $XorgVersion eq v4.3.2.1
- nodriver3
-
-$weight = 600
-
-#
-# The following two examples use some real values.
-#
-
-# Example: make the default depth 24 for Radeon R200 and RV200 cards.
-
-$vendor == 0x1002 && \
- ($device >= 0x5148 && $device <= 0x514F || \
- $device >= 0x5168 && $device <= 0x516C || \
- $device == 0x4242 || \
- $device >= 0x5157 && device <= 0x5158)
- ati
- Option "DefaultDepth" "24"
-
-
-# Example: enable DRI for MGA G400
-
-$vendor == 0x102b && $device == 0x0525
- mga
- Option "dri"
-
diff --git a/hw/xfree86/getconfig/getconfig b/hw/xfree86/getconfig/getconfig
deleted file mode 100644
index a9e2b3ef2..000000000
--- a/hw/xfree86/getconfig/getconfig
+++ /dev/null
@@ -1,43 +0,0 @@
-#!/bin/sh
-
-# $XdotOrg$
-
-#
-# 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>.
-#
-
-# A simple wrapper to execute the real getconfig program. So long as perl
-# is in $PATH, we don't need to know where it is this way.
-
-if echo $0 | grep / >/dev/null 2>&1; then
- DIR=`dirname $0`/
-fi
-
-exec perl ${DIR}getconfig.pl "$@"
diff --git a/hw/xfree86/getconfig/getconfig.man.pre b/hw/xfree86/getconfig/getconfig.man.pre
deleted file mode 100644
index 9faede134..000000000
--- a/hw/xfree86/getconfig/getconfig.man.pre
+++ /dev/null
@@ -1,98 +0,0 @@
-.TH getconfig 1 __vendorversion__
-.SH NAME
-getconfig - get configuration information for the __xservername__ server
-.SH SYNOPSIS
-.B getconfig
-.RI [ option
-.IR ... ]
-.SH DESCRIPTION
-.B getconfig
-is a programmatic interface that is used by the
-.B __xservername__
-server to get configuration information about video hardware when
-operating without an
-.B __xconfigfile__
-file.
-.PP
-This implementation of
-.B getconfig
-is written in perl. It processes a prioritized and ordered list of
-rules supplied internally and from meta-configuration files. The rules
-are in the form of perl expressions.
-.B getconfig
-writes to standard output the __xconfigfile__-style configuration data
-specified by the last highest priority rule that evaluates to true.
-Information about the format of the meta-configuration files can be
-found in the getconfig(__filemansuffix__) manual page.
-.SH OPTIONS
-.TP 8
-.BI \-I " search-path"
-Specify the search path to use for meta-config files.
-.I search-path
-is a comma-separated list of directories to search. Each directory in
-the search path is searched for files with a
-.I .cfg
-suffix. Each such file is opened and checked for a valid signature
-string. Rules are read from files with a valid signature string and
-appended to the list of rules to evaluate. If no search path is specified,
-only the internally supplied configuration rules will be used.
-.TP 8
-.B \-D
-Enable debugging output.
-.TP 8
-.B \-V
-Print out the version information and exit.
-.TP 8
-.BI \-X
-.BI __xservername__-version
-Specify the __xservername__ version in numeric (integer) form.
-.TP 8
-.BI \-b " subsys-id"
-Specify the PCI subsystem ID of the video device.
-.TP 8
-.BI \-c " class"
-Specify the PCI class of the video device.
-.TP 8
-.BI \-d " device-id"
-Specify the PCI devide ID of the video device.
-.TP 8
-.BI \-r " revision"
-Specify the PCI revision of the video device.
-.TP 8
-.BI \-s " subsysvendor-id"
-Specify the PCI subsystem vendor ID of the video device.
-.TP 8
-.BI \-v " vendor-id"
-Specify the PCI vendor ID of the video device.
-.SH FILES
-.I .cfg
-files located in the search path. The search path typically specified
-by the
-.B __xservername__
-server is:
-.PP
-.RS 4
-.nf
-.I /etc/X11
-.I __projectroot__/etc/X11
-.I <modulepath>
-.I __projectroot__/lib/X11/getconfig
-.fi
-.RE
-.PP
-where
-.I <modulepath>
-is the
-.B __xservername__
-server's module search path.
-
-.SH "SEE ALSO"
-getconfig(__filemansuffix__),
-__xservername__(__appmansuffix__),
-__xconfigfile__(__filemansuffix__).
-
-.SH AUTHORS
-The __xservername__ automatic configuration support and the
-.B getconfig
-interface was written by David H. Dawes, with the support of X-Oz
-Technologies for XFree86.
diff --git a/hw/xfree86/getconfig/getconfig.pl b/hw/xfree86/getconfig/getconfig.pl
deleted file mode 100644
index a540c686b..000000000
--- a/hw/xfree86/getconfig/getconfig.pl
+++ /dev/null
@@ -1,433 +0,0 @@
-#!/usr/bin/perl
-
-# $DHD: xc/programs/Xserver/hw/xfree86/getconfig/getconfig.pl,v 1.13 2003/09/23 05:12:07 dawes Exp $
-# $XdotOrg: $
-
-#
-# 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>.
-#
-
-
-#
-# This script takes PCI id information, compares it against an ordered list
-# of rules, and prints out the configuration information specified by the
-# last matching rule.
-#
-# This script is called by xf86AutoConfig().
-#
-
-# Command line processing.
-
-$GetconfigVersion = v1.0;
-
-$debug = 0;
-
-$myname = $0;
-$myname =~ s/.*\///;
-
-$signature = "Xorg Foundation getconfig rules file. Version: ";
-
-while (@ARGV[0] =~ /^-[A-Za-z]$/) {
- $f = shift;
- SWITCH: {
- if ($f eq "-D") {
- $debug = 1;
- last SWITCH;
- }
- if ($f eq "-I") {
- push(@searchPaths, split(/,/, shift));
- last SWITCH;
- }
- if ($f eq "-V") {
- printf STDERR "$myname: Version %vd.\n", $GetconfigVersion;
- exit 0;
- }
- if ($f eq "-X") {
- $XorgVersionNumeric = shift;
- if (!defined($XorgVersionNumeric)) {
- print STDERR "$myname: -X requires the Xorg version.\n";
- exit 1;
- }
- }
- if ($f eq "-b") {
- $subsys = oct(shift);
- if (!defined($subsys)) {
- print STDERR "$myname: -b requires the subsys id.\n";
- exit 1;
- }
- last SWITCH;
- }
- if ($f eq "-c") {
- $class = oct(shift);
- if (!defined($class)) {
- print STDERR "$myname: -c requires the class value.\n";
- exit 1;
- }
- last SWITCH;
- }
- if ($f eq "-d") {
- $device = oct(shift);
- if (!defined($device)) {
- print STDERR "$myname: -d requires the device id.\n";
- exit 1;
- }
- last SWITCH;
- }
- if ($f eq "-r") {
- $revision = oct(shift);
- if (!defined($revision)) {
- print STDERR "$myname: -r requires the device revision.\n";
- exit 1;
- }
- last SWITCH;
- }
- if ($f eq "-s") {
- $subsysVendor = oct(shift);
- if (!defined($subsysVendor)) {
- print STDERR "$myname: -s requires the subsysVendor id.\n";
- exit 1;
- }
- last SWITCH;
- }
- if ($f eq "-v") {
- $vendor = oct(shift);
- if (!defined($vendor)) {
- print STDERR "$myname: -v requires the vendor id.\n";
- exit 1;
- }
- last SWITCH;
- }
- }
-}
-
-printf STDERR "$myname: Version %vd.\n", $GetconfigVersion;
-
-if (defined($XorgVersionNumeric)) {
- $XorgVersionMajor = $XorgVersionNumeric / 10000000;
- $XorgVersionMinor = ($XorgVersionNumeric % 10000000) / 100000;
- $XorgVersionPatch = ($XorgVersionNumeric % 100000) / 1000;
- $XorgVersionSnapshot = $XorgVersionNumeric % 1000;
- $XorgVersion = chr($XorgVersionMajor) . chr($XorgVersionMinor) .
- chr($XorgVersionPatch) . chr($XorgVersionSnapshot);
-}
-
-if ($debug) {
- printf STDERR "$myname: Xorg Version: %d, %d.%d.%d.%d, %vd.\n",
- $XorgVersionNumeric, $XorgVersionMajor, $XorgVersionMinor,
- $XorgVersionPatch, $XorgVersionSnapshot, $XorgVersion;
-} else {
- printf STDERR "$myname: Xorg Version: %vd.\n", $XorgVersion;
-}
-
-
-# The rules here are just basic vendor ID to driver mappings.
-# Ideally this is all that would be required. More complicated configuration
-# rules will be provided in external files.
-
-# XXX This set of basic rules isn't complete yet.
-
-@rules = (
-
-# Set the weight for the built-in rules.
-['$weight = 500'],
-
-# APM
-['$vendor == 0x1142',
- 'apm'],
-
-# ARK
-['$vendor == 0xedd8',
- 'apm'],
-
-# AST
-['$vendor == 0x1a03',
- 'ast'],
-
-# ATI
-['$vendor == 0x1002',
- 'ati'],
-
-# Chips & Technologies
-['$vendor == 0x102c',
- 'chips'],
-
-# Cirrus
-['$vendor == 0x1013',
- 'cirrus'],
-
-# Intel
-['$vendor == 0x8086',
- 'i810'],
-['$vendor == 0x8086 && ($chipType == 0x00d1 || $chipType == 0x7800)',
- 'i740'],
-
-# Matrox
-['$vendor == 0x102b',
- 'mga'],
-
-# Neomagic
-['$vendor == 0x10c8',
- 'neomagic'],
-
-# Number Nine
-['$vendor == 0x105d',
- 'i128'],
-
-# NVIDIA
-['$vendor == 0x10de || $vendor == 0x12d2',
- 'nv'],
-
-# S3
-['$vendor == 0x5333 && ($device == 0x88d0 ||' .
- '$device == 0x88d1 ||' .
- '$device == 0x88f0 ||' .
- '$device == 0x8811 ||' .
- '$device == 0x8812 ||' .
- '$device == 0x8814 ||' .
- '$device == 0x8901)',
- 's3'],
-
-# S3 virge
-['$vendor == 0x5333 && ($device == 0x5631 ||' .
- '$device == 0x883d ||' .
- '$device == 0x8a01 ||' .
- '$device == 0x8a10 ||' .
- '$device == 0x8c01 ||' .
- '$device == 0x8c03 ||' .
- '$device == 0x8904 ||' .
- '$device == 0x8a13)',
- 's3virge'],
-
-# S3 Savage
-['$vendor == 0x5333 && ($device >= 0x8a20 && $device <= 0x8a22 ||' .
- '$device == 0x9102 ||' .
- '$device >= 0x8c10 && $device <= 0x8c13 ||' .
- '$device == 0x8a25 ||' .
- '$device == 0x8a26 ||' .
- '$device >= 0x8d01 && $device <= 0x8d04 ||' .
- '$device >= 0x8c2a && $device <= 0x8c2f ||' .
- '$device == 0x8c22 ||' .
- '$device == 0x8c24 ||' .
- '$device == 0x8c26)',
- 'savage'],
-
-# SIS
-['$vendor == 0x1039',
- 'sis'],
-
-# SMI
-['$vendor == 0x126f',
- 'siliconmotion'],
-
-# 3Dfx
-['$vendor == 0x121a',
- 'tdfx'],
-
-# 3Dlabs
-['$vendor == 0x3d3d',
- 'glint'],
-
-# Trident
-['$vendor == 0x1023',
- 'trident'],
-
-# Tseng Labs
-['$vendor == 0x100c',
- 'tseng'],
-
-# VIA
-['$vendor == 0x1106',
- 'via'],
-
-# VMware
-['$vendor == 0x15ad',
- 'vmware'],
-
-);
-
-# Reverse the search path list, since the later rules have higher priority
-# than earlier ones (weighting being equal).
-
-@searchPaths = reverse(@searchPaths);
-
-if ($debug) {
- $i = 0;
- for $path (@searchPaths) {
- print STDERR "$myname: Search path $i is: \"$path\".\n";
- $i++;
- }
-}
-
-print STDERR "$myname: ", $#rules + 1, " built-in rule", plural($#rules + 1),
- ".\n";
-
-for $path (@searchPaths) {
- while (<$path/*.cfg>) {
- @tmp = readRulesFile($_);
- if (defined(@tmp[0])) {
- push @rules, @tmp;
- }
- }
-}
-
-if ($debug) {
- $i = 0;
- for $r (@rules) {
- print STDERR "$myname: rule $i is: \'@$r\'.\n";
- $i++
- }
-}
-
-$i = 0;
-$e = 0;
-$weight = 0;
-$w = 0;
-for $r (@rules) {
- ($cond, $d, @o) = @$r;
- $result = eval $cond;
- if ($@) {
- print STDERR "$myname: Error evaluating rule $i \'$cond\': $@";
- $e++;
- }
- if ($debug) {
- print STDERR "$myname: rule $i \'$cond\' evaluates to \'$result\'.\n";
- }
- if ($result && defined($d) && $weight >= $w) {
- $driver = $d;
- @opts = @o;
- $w = $weight;
- }
- $i++;
-}
-
-print STDERR "$myname: Evaluated $i rule", plural($i),
- " with $e error", plural($e), ".\n";
-
-print STDERR "$myname: Weight of result is $w.\n";
-
-if ($debug) {
- if (defined($driver)) {
- print STDERR "$myname: Driver is \'$driver\'.\n";
- } else {
- print STDERR "$myname: No driver.\n";
- }
- if (defined(@opts)) {
- print STDERR "$myname: options are:\n";
- for $opt (@opts) {
- print STDERR "\t$opt\n";
- }
- } else {
- print STDERR "$myname: No options.\n";
- }
-}
-
-print "$driver\n";
-for $opt (@opts) {
- print "$opt\n";
-}
-
-exit 0;
-
-# Subroutines.
-
-sub readRulesFile {
- my ($file) = @_;
- my $signatureOK = 0;
- my @r, @tmp;
- my $line, $cont, $prevcont, $fileversion;
-
- undef @tmp;
- undef @r;
-
- if (open(RF, "<$file")) {
- $prevcont = 0;
- while (<RF>) {
- chop;
- $line = $_;
- next if ($line =~ /^#/);
- next if ($line =~ /^\s*$/);
- if (!$signatureOK) {
- if ($line =~ /^$signature(.*)$/) {
- $fileversion = $1;
- $signatureOK = 1;
- print STDERR
- "$myname: rules file \'$file\' has version $fileversion.\n";
- next;
- }
- }
- if (!$signatureOK) {
- print STDERR "$myname: file \'$file\' has bad signature.\n";
- close(RF);
- last;
- }
- $cont = 0;
- if ($line =~ s/\\\s*$//) {
- $cont = 1;
- }
- if (!$prevcont && $line =~ /^\S+/) {
- if (defined(@tmp[0])) {
- push(@r,[@tmp]);
- }
- undef @tmp;
- }
- if ($prevcont) {
- push(@tmp, pop(@tmp) . $line);
- } else {
- push(@tmp, $line);
- }
- $prevcont = $cont;
- }
- if (defined(@tmp[0])) {
- push(@r,[@tmp]);
- }
- if (!defined(@r[0])) {
- print STDERR "$myname: no rules in file \'$file\'.\n";
- } else {
- print STDERR "$myname: ", $#r + 1,
- " rule", plural($#r + 1),
- " added from file \'$file\'.\n";
- }
- } else {
- print STDERR "$myname: cannot open file \'$file\'.\n";
- }
-
- return @r;
-}
-
-sub plural {
- my ($count) = @_;
-
- if ($count != 1) {
- return "s";
- } else {
- return "";
- }
-}
-
diff --git a/hw/xfree86/getconfig/xorg.cfg b/hw/xfree86/getconfig/xorg.cfg
deleted file mode 100644
index a591bf32f..000000000
--- a/hw/xfree86/getconfig/xorg.cfg
+++ /dev/null
@@ -1,50 +0,0 @@
-# $XdotOrg: xc/programs/Xserver/hw/xfree86/getconfig/xorg.cfg,v 1.2 2004/04/23 19:54:01 eich Exp $
-
-# Base Xorg getconfig rules file.
-
-#
-# The line below is the getconfig rules file signature, and must be the
-# first non-blank, non-comment line.
-#
-
-Xorg Foundation getconfig rules file. Version: 1.0
-
-#
-# Set the weight for the following rules. This should be set, otherwise
-# the previously set weight will get used, and you have no idea of knowing
-# what that might be.
-#
-
-$weight = 1000
-
-#
-# Rules. Rules consist of a condition (in perl code) followed by
-# a driver name and optionally some additional strings. The start of a
-# rule is indicated by a line with no leading white space. subsequent
-# lines making up a rule must be indented. Logical lines may be split
-# over multiple physical lines by using the usual continuation '\'.
-#
-# Rules that are not followed by a driver name may be used to do other
-# things, like setting the weight as above.
-#
-
-#
-# Pre-defined variables include:
-#
-# $vendor PCI vendor ID
-# $device PCI device ID
-# $revision PCI revision ID
-# $subsys PCI subsystem ID
-# $subsysVendor PCI subsystem vendor ID
-# $class PCI class
-# $XorgVersion Xorg version, as a 'v' string.
-#
-# The Xorg version information is also available as the following:
-#
-# $XorgVersionNumeric
-# $XorgVersionMajor
-# $XorgVersionMinor
-# $XorgVersionPatch
-# $XorgVersionSnap
-#
-
diff --git a/hw/xfree86/i2c/Makefile.am b/hw/xfree86/i2c/Makefile.am
index 6e36f0cc8..e73fcaeb8 100644
--- a/hw/xfree86/i2c/Makefile.am
+++ b/hw/xfree86/i2c/Makefile.am
@@ -15,7 +15,7 @@ libi2c_la_SOURCES = xf86i2c.c xf86i2cmodule.c
INCLUDES = $(XORG_INCS)
-AM_CFLAGS = $(XORG_CFLAGS) @SERVER_DEFINES@ @MODULE_DEFINES@ @LOADER_DEFINES@
+AM_CFLAGS = $(DIX_CFLAGS) $(XORG_CFLAGS)
sdk_HEADERS = xf86i2c.h bt829.h fi1236.h msp3430.h tda8425.h tda9850.h tda9885.h uda1380.h i2c_def.h
diff --git a/hw/xfree86/i2c/bt829.h b/hw/xfree86/i2c/bt829.h
index 2c7c00d34..bca9d37de 100644
--- a/hw/xfree86/i2c/bt829.h
+++ b/hw/xfree86/i2c/bt829.h
@@ -82,8 +82,6 @@ int bt829_SetCC(BT829Ptr bt);
"bt829_SetOUT_EN", \
"bt829_SetP_IO"
-#ifdef XFree86LOADER
-
#define xf86_bt829_Detect ((BT829Ptr (*)(I2CBusPtr, I2CSlaveAddr))LoaderSymbol("bt829_Detect"))
#define xf86_bt829_ATIInit ((int (*)(BT829Ptr))LoaderSymbol("bt829_ATIInit"))
#define xf86_bt829_SetFormat ((int (*)(BT829Ptr, CARD8))LoaderSymbol("bt829_SetFormat"))
@@ -96,20 +94,4 @@ int bt829_SetCC(BT829Ptr bt);
#define xf86_bt829_SetOUT_EN ((void (*)(BT829Ptr, Bool))LoaderSymbol("bt829_SetOUT_EN"))
#define xf86_bt829_SetP_IO ((void (*)(BT829Ptr, CARD8))LoaderSymbol("bt829_SetP_IO"))
-#else
-
-#define xf86_bt829_Detect bt829_Detect
-#define xf86_bt829_ATIInit bt829_ATIInit
-#define xf86_bt829_SetFormat bt829_SetFormat
-#define xf86_bt829_SetMux bt829_SetMux
-#define xf86_bt829_SetCaptSize bt829_SetCaptSize
-#define xf86_bt829_SetBrightness bt829_SetBrightness
-#define xf86_bt829_SetContrast bt829_SetContrast
-#define xf86_bt829_SetSaturation bt829_SetSaturation
-#define xf86_bt829_SetTint bt829_SetTint
-#define xf86_bt829_SetOUT_EN bt829_SetOUT_EN
-#define xf86_bt829_SetP_IO bt829_SetP_IO
-
-#endif
-
#endif
diff --git a/hw/xfree86/i2c/fi1236.c b/hw/xfree86/i2c/fi1236.c
index ea37414b2..110563ed9 100644
--- a/hw/xfree86/i2c/fi1236.c
+++ b/hw/xfree86/i2c/fi1236.c
@@ -1,4 +1,3 @@
-/* $XdotOrg: xserver/xorg/hw/xfree86/i2c/fi1236.c,v 1.9 2006/02/10 22:00:25 anholt Exp $ */
#ifdef HAVE_XORG_CONFIG_H
#include <xorg-config.h>
@@ -99,6 +98,7 @@ xf86DrvMsg(f->d.pI2CBus->scrnIndex, X_INFO, "MT2032: Company code 0x%02x%02x, pa
}
/* might be buggy */
+#if 0
static void MT2032_shutdown(FI1236Ptr f)
{
CARD8 data[10];
@@ -124,6 +124,7 @@ I2C_WriteRead(&(f->d), (I2CByte *)data, 4, NULL, 0);
usleep(15000);
}
+#endif
static void MT2032_dump_status(FI1236Ptr f);
@@ -131,7 +132,7 @@ static void MT2032_init(FI1236Ptr f)
{
CARD8 data[10];
CARD8 value;
-CARD8 xogc;
+CARD8 xogc = 0x00;
MT2032_getid(f);
@@ -479,7 +480,7 @@ if(type==TUNER_TYPE_MT2032){
}
-CARD32 AFC_TimerCallback(OsTimerPtr timer, CARD32 time, pointer data){
+static CARD32 AFC_TimerCallback(OsTimerPtr timer, CARD32 time, pointer data){
FI1236Ptr f=(FI1236Ptr)data;
if(FI1236_AFC(f))return 150;
else {
@@ -517,7 +518,7 @@ void FI1236_tune(FI1236Ptr f, CARD32 frequency)
xf86DrvMsg(f->d.pI2CBus->scrnIndex, X_INFO, "Setting tuner band to %d\n", f->tuner_data.band);
- xf86DrvMsg(f->d.pI2CBus->scrnIndex, X_INFO, "Setting tuner frequency to %d\n", frequency);
+ xf86DrvMsg(f->d.pI2CBus->scrnIndex, X_INFO, "Setting tuner frequency to %d\n", (int)frequency);
if ((f->type == TUNER_TYPE_FM1216ME) || (f->type == TUNER_TYPE_FI1236W))
{
diff --git a/hw/xfree86/i2c/fi1236.h b/hw/xfree86/i2c/fi1236.h
index dbb154671..eda1c781c 100644
--- a/hw/xfree86/i2c/fi1236.h
+++ b/hw/xfree86/i2c/fi1236.h
@@ -90,6 +90,7 @@ typedef struct {
FI1236Ptr Detect_FI1236(I2CBusPtr b, I2CSlaveAddr addr);
void FI1236_set_tuner_type(FI1236Ptr f, int type);
void TUNER_set_frequency(FI1236Ptr f, CARD32 frequency);
+void FI1236_tune(FI1236Ptr f, CARD32 frequency);
int FI1236_AFC(FI1236Ptr f);
int TUNER_get_afc_hint(FI1236Ptr f);
void fi1236_dump_status(FI1236Ptr f);
@@ -99,8 +100,6 @@ void fi1236_dump_status(FI1236Ptr f);
"FI1236_set_tuner_type", \
"TUNER_set_frequency"
-#ifdef XFree86LOADER
-
#define xf86_Detect_FI1236 ((FI1236Ptr (*)(I2CBusPtr, I2CSlaveAddr))LoaderSymbol("Detect_FI1236"))
#define xf86_FI1236_set_tuner_type ((void (*)(FI1236Ptr, int))LoaderSymbol("FI1236_set_tuner_type"))
#define xf86_TUNER_set_frequency ((void (*)(FI1236Ptr, CARD32))LoaderSymbol("TUNER_set_frequency"))
@@ -108,15 +107,4 @@ void fi1236_dump_status(FI1236Ptr f);
#define xf86_TUNER_get_afc_hint ((int (*)(FI1236Ptr))LoaderSymbol("TUNER_get_afc_hint"))
#define xf86_fi1236_dump_status ((void (*)(FI1236Ptr))LoaderSymbol("fi1236_dump_status"))
-#else
-
-#define xf86_Detect_FI1236 Detect_FI1236
-#define xf86_FI1236_set_tuner_type FI1236_set_tuner_type
-#define xf86_TUNER_set_frequency TUNER_set_frequency
-#define xf86_FI1236_AFC FI1236_AFC
-#define xf86_TUNER_get_afc_hint TUNER_get_afc_hint
-#define xf86_fi1236_dump_status fi1236_dump_status
-
-#endif
-
#endif
diff --git a/hw/xfree86/i2c/i2c_def.h b/hw/xfree86/i2c/i2c_def.h
index 84b9c5d91..6e119e478 100644
--- a/hw/xfree86/i2c/i2c_def.h
+++ b/hw/xfree86/i2c/i2c_def.h
@@ -3,8 +3,6 @@
/* the following are a workaround for possible loader bug..
WATCH function types ! */
-#if XFree86LOADER
-
#define CreateI2CBusRec ((pointer (*)(void))LoaderSymbol("xf86CreateI2CBusRec"))
#define DestroyI2CBusRec ((pointer (*)(I2CBusPtr, Bool, Bool))LoaderSymbol("xf86DestroyI2CBusRec"))
#define I2CBusInit ((Bool (*)(pointer))LoaderSymbol("xf86I2CBusInit"))
@@ -13,17 +11,4 @@
#define I2CDevInit ((Bool (*)(I2CDevPtr))LoaderSymbol("xf86I2CDevInit"))
#define I2CProbeAddress ((Bool (*)(I2CBusPtr,I2CSlaveAddr))LoaderSymbol("xf86I2CProbeAddress"))
-#else
-
-#define CreateI2CBusRec xf86CreateI2CBusRec
-#define DestroyI2CBusRec xf86DestroyI2CBusRec
-#define I2CBusInit xf86I2CBusInit
-#define I2C_WriteRead xf86I2CWriteRead
-#define CreateI2CDevRec xf86CreateI2CDevRec
-#define I2CDevInit xf86I2CDevInit
-#define I2CProbeAddress xf86I2CProbeAddress
-
-#endif
-
-
#endif
diff --git a/hw/xfree86/i2c/msp3430.h b/hw/xfree86/i2c/msp3430.h
index 8726bacf5..1cb9b869d 100644
--- a/hw/xfree86/i2c/msp3430.h
+++ b/hw/xfree86/i2c/msp3430.h
@@ -105,22 +105,10 @@ void MSP3430SetSAP (MSP3430Ptr m, int mode);
"MSP3430SetVolume", \
"MSP3430SetSAP"
-#ifdef XFree86LOADER
-
#define xf86_DetectMSP3430 ((MSP3430Ptr (*)(I2CBusPtr, I2CSlaveAddr))LoaderSymbol("DetectMSP3430"))
#define xf86_ResetMSP3430 ((void (*)(MSP3430Ptr))LoaderSymbol("ResetMSP3430"))
#define xf86_MSP3430SetVolume ((void (*)(MSP3430Ptr, CARD8))LoaderSymbol("MSP3430SetVolume"))
#define xf86_MSP3430SetSAP ((void (*)(MSP3430Ptr, int))LoaderSymbol("MSP3430SetSAP"))
#define xf86_InitMSP3430 ((void (*)(MSP3430Ptr))LoaderSymbol("InitMSP3430"))
-#else
-
-#define xf86_DetectMSP3430 DetectMSP3430
-#define xf86_ResetMSP3430 ResetMSP3430
-#define xf86_MSP3430SetVolume MSP3430SetVolume
-#define xf86_MSP3430SetSAP MSP3430SetSAP
-#define xf86_InitMSP3430 InitMSP3430
-
-#endif
-
#endif
diff --git a/hw/xfree86/i2c/tda8425.h b/hw/xfree86/i2c/tda8425.h
index ec1908ba9..4abb4175f 100644
--- a/hw/xfree86/i2c/tda8425.h
+++ b/hw/xfree86/i2c/tda8425.h
@@ -34,20 +34,9 @@ void tda8425_mute(TDA8425Ptr t, Bool mute);
"tda8425_setaudio", \
"tda8425_mute"
-#ifdef XFree86LOADER
-
#define xf86_Detect_tda8425 ((TDA8425Ptr (*)(I2CBusPtr, I2CSlaveAddr,Bool))LoaderSymbol("Detect_tda8425"))
#define xf86_tda8425_init ((Bool (*)(TDA8425Ptr))LoaderSymbol("tda8425_init"))
#define xf86_tda8425_setaudio ((void (*)(TDA8425Ptr))LoaderSymbol("tda8425_setaudio"))
#define xf86_tda8425_mute ((void (*)(TDA8425Ptr, Bool))LoaderSymbol("tda8425_mute"))
-#else
-
-#define xf86_Detect_tda8425 Detect_tda8425
-#define xf86_tda8425_init tda8425_init
-#define xf86_tda8425_setaudio tda8425_setaudio
-#define xf86_tda8425_mute tda8425_mute
-
-#endif
-
#endif
diff --git a/hw/xfree86/i2c/tda9850.c b/hw/xfree86/i2c/tda9850.c
index e6afd8165..5b0c581ed 100644
--- a/hw/xfree86/i2c/tda9850.c
+++ b/hw/xfree86/i2c/tda9850.c
@@ -107,6 +107,6 @@ CARD16 tda9850_getstatus(TDA9850Ptr t)
{
CARD16 status;
-I2C_WriteRead(&(t->d), NULL, 0, &status, 2);
+I2C_WriteRead(&(t->d), NULL, 0, (I2CByte *)&status, 2);
return status;
}
diff --git a/hw/xfree86/i2c/tda9850.h b/hw/xfree86/i2c/tda9850.h
index 2c8ddcc6e..d5dec36fe 100644
--- a/hw/xfree86/i2c/tda9850.h
+++ b/hw/xfree86/i2c/tda9850.h
@@ -29,8 +29,6 @@ CARD16 tda9850_getstatus(TDA9850Ptr t);
"tda9850_mute", \
"tda9850_sap_mute"
-#ifdef XFree86LOADER
-
#define xf86_Detect_tda9850 ((TDA9850Ptr (*)(I2CBusPtr, I2CSlaveAddr))LoaderSymbol("Detect_tda9850"))
#define xf86_tda9850_init ((Bool (*)(TDA9850Ptr))LoaderSymbol("tda9850_init"))
#define xf86_tda9850_setaudio ((void (*)(TDA9850Ptr))LoaderSymbol("tda9850_setaudio"))
@@ -38,15 +36,4 @@ CARD16 tda9850_getstatus(TDA9850Ptr t);
#define xf86_tda9850_sap_mute ((void (*)(TDA9850Ptr, Bool))LoaderSymbol("tda9850_sap_mute"))
#define xf86_tda9850_getstatus ((CARD16 (*)(TDA9850Ptr))LoaderSymbol("tda9850_getstatus"))
-#else
-
-#define xf86_Detect_tda9850 Detect_tda9850
-#define xf86_tda9850_init tda9850_init
-#define xf86_tda9850_setaudio tda9850_setaudio
-#define xf86_tda9850_mute tda9850_mute
-#define xf86_tda9850_sap_mute tda9850_sap_mute
-#define xf86_tda9850_getstatus tda9850_getstatus
-
-#endif
-
#endif
diff --git a/hw/xfree86/i2c/tda9885.h b/hw/xfree86/i2c/tda9885.h
index a63b34764..46ae9fc0d 100644
--- a/hw/xfree86/i2c/tda9885.h
+++ b/hw/xfree86/i2c/tda9885.h
@@ -51,22 +51,10 @@ void tda9885_dumpstatus(TDA9885Ptr t);
"tda9885_setaudio", \
"tda9885_mute"
-#ifdef XFree86LOADER
-
#define xf86_Detect_tda9885 ((TDA9885Ptr (*)(I2CBusPtr, I2CSlaveAddr))LoaderSymbol("Detect_tda9885"))
#define xf86_tda9885_init ((Bool (*)(TDA9885Ptr))LoaderSymbol("tda9885_init"))
#define xf86_tda9885_setparameters ((void (*)(TDA9885Ptr))LoaderSymbol("tda9885_setparameters"))
#define xf86_tda9885_getstatus ((void (*)(TDA9885Ptr))LoaderSymbol("tda9885_getstatus"))
#define xf86_tda9885_dumpstatus ((void (*)(TDA9885Ptr))LoaderSymbol("tda9885_dumpstatus"))
-#else
-
-#define xf86_Detect_tda9885 Detect_tda9885
-#define xf86_tda9885_init tda9885_init
-#define xf86_tda9885_setparameters tda9885_setparameters
-#define xf86_tda9885_getstatus tda9885_getstatus
-#define xf86_tda9885_dumpstatus tda9885_dumpstatus
-
-#endif
-
#endif
diff --git a/hw/xfree86/i2c/uda1380.h b/hw/xfree86/i2c/uda1380.h
index acf96c556..95ad92b92 100644
--- a/hw/xfree86/i2c/uda1380.h
+++ b/hw/xfree86/i2c/uda1380.h
@@ -66,8 +66,6 @@ void uda1380_dumpstatus(UDA1380Ptr t);
"uda1380_getstatus", \
"uda1380_dumpstatus"
-#ifdef XFree86LOADER
-
#define xf86_Detect_uda1380 ((UDA1380Ptr (*)(I2CBusPtr, I2CSlaveAddr))LoaderSymbol("Detect_uda1380"))
#define xf86_uda1380_init ((Bool (*)(UDA1380Ptr))LoaderSymbol("uda1380_init"))
#define xf86_uda1380_shutdown ((void (*)(UDA1380Ptr))LoaderSymbol("uda1380_shutdown"))
@@ -77,17 +75,4 @@ void uda1380_dumpstatus(UDA1380Ptr t);
#define xf86_uda1380_getstatus ((void (*)(UDA1380Ptr))LoaderSymbol("uda1380_getstatus"))
#define xf86_uda1380_dumpstatus ((void (*)(UDA1380Ptr))LoaderSymbol("uda1380_dumpstatus"))
-#else
-
-#define xf86_Detect_uda1380 Detect_uda1380
-#define xf86_uda1380_init uda1380_init
-#define xf86_uda1380_shutdown uda1380_shutdown
-#define xf86_uda1380_setvolume uda1380_setvolume
-#define xf86_uda1380_mute uda1380_mute
-#define xf86_uda1380_setparameters uda1380_setparameters
-#define xf86_uda1380_getstatus uda1380_getstatus
-#define xf86_uda1380_dumpstatus uda1380_dumpstatus
-
-#endif
-
#endif
diff --git a/hw/xfree86/i2c/xf86i2c.c b/hw/xfree86/i2c/xf86i2c.c
index 9049fe4fd..53382a859 100644
--- a/hw/xfree86/i2c/xf86i2c.c
+++ b/hw/xfree86/i2c/xf86i2c.c
@@ -6,7 +6,6 @@
* (c) 1998 Gerd Knorr <kraxel@cs.tu-berlin.de>
*/
-/* $XFree86: xc/programs/Xserver/hw/xfree86/i2c/xf86i2c.c,v 1.14 2003/05/05 21:18:41 tsi Exp $ */
#ifdef HAVE_XORG_CONFIG_H
#include <xorg-config.h>
diff --git a/hw/xfree86/i2c/xf86i2c.h b/hw/xfree86/i2c/xf86i2c.h
index 81765e4a9..76d2ebf92 100644
--- a/hw/xfree86/i2c/xf86i2c.h
+++ b/hw/xfree86/i2c/xf86i2c.h
@@ -2,7 +2,6 @@
* Copyright (C) 1998 Itai Nahshon, Michael Schimek
*/
-/* $XFree86: xc/programs/Xserver/hw/xfree86/i2c/xf86i2c.h,v 1.10 2003/07/16 01:38:47 dawes Exp $ */
#ifndef _XF86I2C_H
#define _XF86I2C_H
diff --git a/hw/xfree86/int10/Makefile.am b/hw/xfree86/int10/Makefile.am
index f606f5e12..28e20d502 100644
--- a/hw/xfree86/int10/Makefile.am
+++ b/hw/xfree86/int10/Makefile.am
@@ -2,32 +2,43 @@ module_LTLIBRARIES = libint10.la
sdk_HEADERS = xf86int10.h
-EXTRA_CFLAGS = @SERVER_DEFINES@ @MODULE_DEFINES@ @LOADER_DEFINES@
+EXTRA_CFLAGS =
libint10_la_LDFLAGS = -avoid-version
-if INT10_VM86
-AM_CFLAGS = -D_PC -D_VM86_LINUX $(XORG_CFLAGS) $(EXTRA_CFLAGS)
-INCLUDES = $(XORG_INCS)
-libint10_la_SOURCES = \
+COMMON_SOURCES = \
helper_exec.c \
helper_mem.c \
pci.c \
xf86int10.c \
- xf86int10module.c \
+ xf86int10module.c
+
+if I386_VIDEO
+I386_VIDEO_CFLAGS = -D_PC
+endif
+
+if INT10_VM86
+AM_CFLAGS = $(I386_VIDEO_CFLAGS) -D_VM86_LINUX $(DIX_CFLAGS) $(XORG_CFLAGS) $(EXTRA_CFLAGS)
+INCLUDES = $(XORG_INCS)
+libint10_la_SOURCES = \
+ $(COMMON_SOURCES) \
$(srcdir)/../os-support/linux/int10/vm86/linux_vm86.c \
$(srcdir)/../os-support/linux/int10/linux.c
endif
if INT10_X86EMU
-AM_CFLAGS = -D_X86EMU -DNO_SYS_HEADERS -D_PC $(XORG_CFLAGS) $(EXTRA_CFLAGS)
+AM_CFLAGS = $(I386_VIDEO_CFLAGS) -D_X86EMU -DNO_SYS_HEADERS \
+ $(XORG_CFLAGS) $(EXTRA_CFLAGS) $(DIX_CFLAGS)
INCLUDES = $(XORG_INCS) -I$(srcdir)/../x86emu
-libint10_la_SOURCES = pci.c xf86int10module.c helper_exec.c helper_mem.c \
- xf86int10.c xf86x86emu.c generic.c x86emu.c
+libint10_la_SOURCES = \
+ $(COMMON_SOURCES) \
+ xf86x86emu.c \
+ generic.c \
+ x86emu.c
endif
if INT10_STUB
-AM_CFLAGS = -D_PC -D_VM86_LINUX $(XORG_CFLAGS) $(EXTRA_CFLAGS)
+AM_CFLAGS = $(I386_VIDEO_CFLAGS) -D_VM86_LINUX $(DIX_CFLAGS) $(XORG_CFLAGS) $(EXTRA_CFLAGS)
libint10_la_SOURCES = stub.c xf86int10module.c
endif
diff --git a/hw/xfree86/int10/generic.c b/hw/xfree86/int10/generic.c
index 69596d48e..d86372780 100644
--- a/hw/xfree86/int10/generic.c
+++ b/hw/xfree86/int10/generic.c
@@ -1,4 +1,3 @@
-/* $XFree86: xc/programs/Xserver/hw/xfree86/int10/generic.c,v 1.28 2003/09/08 14:25:30 eich Exp $ */
/*
* XFree86 int10 module
* execute BIOS int 10h calls in x86 real mode environment
@@ -63,12 +62,6 @@ static void UnmapVRam(xf86Int10InfoPtr pInt);
static void *sysMem = NULL;
xf86Int10InfoPtr
-xf86InitInt10(int entityIndex)
-{
- return xf86ExtendedInitInt10(entityIndex, 0);
-}
-
-xf86Int10InfoPtr
xf86ExtendedInitInt10(int entityIndex, int Flags)
{
xf86Int10InfoPtr pInt;
@@ -105,7 +98,7 @@ xf86ExtendedInitInt10(int entityIndex, int Flags)
base = INTPriv(pInt)->base = xnfalloc(SYS_BIOS);
pvp = xf86GetPciInfoForEntity(entityIndex);
- if (pvp) pInt->Tag = ((pciConfigPtr)(pvp->thisCard))->tag;
+ if (pvp) pInt->Tag = pciTag(pvp->bus, pvp->device, pvp->func);
/*
* we need to map video RAM MMIO as some chipsets map mmio
@@ -142,59 +135,12 @@ xf86ExtendedInitInt10(int entityIndex, int Flags)
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;
-#define CHECK_V_SEGMENT_RANGE(x) \
- if (((x) << 4) < V_BIOS) {\
- xf86DrvMsg(screen, X_ERROR, \
- "V_BIOS address 0x%lx out of range\n", \
- (unsigned long)(x) << 4); \
- goto error1; \
- }
- CHECK_V_SEGMENT_RANGE(cs);
- vbiosMem = (unsigned char *)sysMem - V_BIOS + (cs << 4);
- if (!int10_check_bios(screen, cs, vbiosMem)) {
- xf86DrvMsg(screen, X_ERROR,
- "No V_BIOS at specified address 0x%lx\n",
- (unsigned long)cs << 4);
- goto error1;
- }
- } 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 = MEM_RW(pInt,((0x10<<2)+2));
- CHECK_V_SEGMENT_RANGE(cs);
- vbiosMem = (unsigned char *)sysMem - V_BIOS + (cs << 4);
- if (!int10_check_bios(screen, cs, vbiosMem)) {
- cs = MEM_RW(pInt, (0x42 << 2) + 2);
- CHECK_V_SEGMENT_RANGE(cs);
- vbiosMem = (unsigned char *)sysMem - V_BIOS + (cs << 4);
- if (!int10_check_bios(screen, cs, vbiosMem)) {
- cs = V_BIOS >> 4;
- vbiosMem = (unsigned char *)sysMem - V_BIOS + (cs << 4);
- if (!int10_check_bios(screen, cs, vbiosMem)) {
- xf86DrvMsg(screen, X_ERROR, "No V_BIOS found\n");
- goto error1;
- }
- }
- }
+ if (! xf86int10GetBiosSegment(pInt, &bios,
+ (unsigned char *)sysMem - V_BIOS)) {
+ goto error1;
}
-
- xf86DrvMsg(screen, X_INFO, "Primary V_BIOS segment is: 0x%lx\n",
- (unsigned long)cs);
set_return_trap(pInt);
- pInt->BIOSseg = cs;
pInt->Flags = Flags & (SET_BIOS_SCRATCH | RESTORE_BIOS_SCRATCH);
if (! (pInt->Flags & SET_BIOS_SCRATCH))
@@ -202,54 +148,33 @@ xf86ExtendedInitInt10(int entityIndex, int Flags)
xf86Int10SaveRestoreBIOSVars(pInt, TRUE);
} else {
- BusType location_type;
+ const BusType location_type = xf86int10GetBiosLocationType(pInt,
+ &bios);
int bios_location = V_BIOS;
- int pci_entity;
-
- EntityInfoPtr pEnt = xf86GetEntityInfo(pInt->entityIndex);
+
reset_int_vect(pInt);
set_return_trap(pInt);
- 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:
- bios_location = bios.location.legacy;
- 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;
-
- xfree(pEnt);
-
switch (location_type) {
- case BUS_PCI:
+ case BUS_PCI: {
+ const int pci_entity = (bios.bus == BUS_PCI)
+ ? xf86GetPciEntity(bios.location.pci.bus,
+ bios.location.pci.dev,
+ bios.location.pci.func)
+ : pInt->entityIndex;
+
vbiosMem = (unsigned char *)base + bios_location;
- 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 (!(size = mapPciRom(pci_entity,(unsigned char *)(vbiosMem)))) {
xf86DrvMsg(screen,X_ERROR,"Cannot read V_BIOS (3)\n");
goto error1;
}
INTPriv(pInt)->highMemory = GET_HIGH_BASE(size);
break;
+ }
case BUS_ISA:
+ if (bios.bus == BUS_ISA) {
+ bios_location = bios.location.legacy;
+ }
vbiosMem = (unsigned char *)sysMem + bios_location;
#if 0
(void)memset(vbiosMem, 0, V_BIOS_SIZE);
diff --git a/hw/xfree86/int10/helper_exec.c b/hw/xfree86/int10/helper_exec.c
index 1809e2d95..d80de89cc 100644
--- a/hw/xfree86/int10/helper_exec.c
+++ b/hw/xfree86/int10/helper_exec.c
@@ -1,4 +1,3 @@
-/* $XFree86: xc/programs/Xserver/hw/xfree86/int10/helper_exec.c,v 1.26 2003/11/06 18:38:12 tsi Exp $ */
/*
* XFree86 int10 module
* execute BIOS int 10h calls in x86 real mode environment
@@ -470,7 +469,6 @@ Mem_wl(CARD32 addr, CARD32 val)
static CARD32 PciCfg1Addr = 0;
-#define TAG(Cfg1Addr) (Cfg1Addr & 0xffff00)
#define OFFSET(Cfg1Addr) (Cfg1Addr & 0xff)
static int
@@ -481,7 +479,7 @@ pciCfg1in(CARD16 addr, CARD32 *val)
return 1;
}
if (addr == 0xCFC) {
- *val = pciReadLong(TAG(PciCfg1Addr), OFFSET(PciCfg1Addr));
+ *val = pciReadLong(Int10Current->Tag, OFFSET(PciCfg1Addr));
return 1;
}
return 0;
@@ -495,7 +493,7 @@ pciCfg1out(CARD16 addr, CARD32 val)
return 1;
}
if (addr == 0xCFC) {
- pciWriteLong(TAG(PciCfg1Addr), OFFSET(PciCfg1Addr), val);
+ pciWriteLong(Int10Current->Tag, OFFSET(PciCfg1Addr), val);
return 1;
}
return 0;
@@ -513,7 +511,7 @@ pciCfg1inw(CARD16 addr, CARD16 *val)
}
if ((addr >= 0xCFC) && (addr <= 0xCFF)) {
offset = addr - 0xCFC;
- *val = pciReadWord(TAG(PciCfg1Addr), OFFSET(PciCfg1Addr) + offset);
+ *val = pciReadWord(Int10Current->Tag, OFFSET(PciCfg1Addr) + offset);
return 1;
}
return 0;
@@ -532,7 +530,7 @@ pciCfg1outw(CARD16 addr, CARD16 val)
}
if ((addr >= 0xCFC) && (addr <= 0xCFF)) {
offset = addr - 0xCFC;
- pciWriteWord(TAG(PciCfg1Addr), OFFSET(PciCfg1Addr) + offset, val);
+ pciWriteWord(Int10Current->Tag, OFFSET(PciCfg1Addr) + offset, val);
return 1;
}
return 0;
@@ -550,7 +548,7 @@ pciCfg1inb(CARD16 addr, CARD8 *val)
}
if ((addr >= 0xCFC) && (addr <= 0xCFF)) {
offset = addr - 0xCFC;
- *val = pciReadByte(TAG(PciCfg1Addr), OFFSET(PciCfg1Addr) + offset);
+ *val = pciReadByte(Int10Current->Tag, OFFSET(PciCfg1Addr) + offset);
return 1;
}
return 0;
@@ -569,14 +567,14 @@ pciCfg1outb(CARD16 addr, CARD8 val)
}
if ((addr >= 0xCFC) && (addr <= 0xCFF)) {
offset = addr - 0xCFC;
- pciWriteByte(TAG(PciCfg1Addr), OFFSET(PciCfg1Addr) + offset, val);
+ pciWriteByte(Int10Current->Tag, OFFSET(PciCfg1Addr) + offset, val);
return 1;
}
return 0;
}
CARD8
-bios_checksum(CARD8 *start, int size)
+bios_checksum(const CARD8 *start, int size)
{
CARD8 sum = 0;
@@ -685,3 +683,9 @@ xf86Int10SaveRestoreBIOSVars(xf86Int10InfoPtr pInt, Bool save)
xf86UnMapVidMem(pInt->scrnIndex,base - BIOS_SCRATCH_OFF ,pagesize);
}
#endif
+
+xf86Int10InfoPtr
+xf86InitInt10(int entityIndex)
+{
+ return xf86ExtendedInitInt10(entityIndex, 0);
+}
diff --git a/hw/xfree86/int10/helper_mem.c b/hw/xfree86/int10/helper_mem.c
index 65ffe3df5..c62377ca8 100644
--- a/hw/xfree86/int10/helper_mem.c
+++ b/hw/xfree86/int10/helper_mem.c
@@ -1,4 +1,3 @@
-/* $XFree86: xc/programs/Xserver/hw/xfree86/int10/helper_mem.c,v 1.25 2002/09/16 18:06:08 eich Exp $ */
/*
* XFree86 int10 module
* execute BIOS int 10h calls in x86 real mode environment
@@ -224,7 +223,7 @@ xf86HandleInt10Options(ScrnInfoPtr pScrn, int entityIndex)
}
Bool
-int10skip(void* options)
+int10skip(const void* options)
{
Bool noint10 = FALSE;
@@ -235,7 +234,7 @@ int10skip(void* options)
}
Bool
-int10_check_bios(int scrnIndex, int codeSeg, unsigned char* vbiosMem)
+int10_check_bios(int scrnIndex, int codeSeg, const unsigned char* vbiosMem)
{
int size;
@@ -262,7 +261,7 @@ int10_check_bios(int scrnIndex, int codeSeg, unsigned char* vbiosMem)
}
Bool
-initPrimary(void* options)
+initPrimary(const void* options)
{
Bool initPrimary = FALSE;
@@ -281,39 +280,33 @@ initPrimary(void* options)
* be used with extreme care.
*/
void
-xf86int10ParseBiosLocation(void* options,
+xf86int10ParseBiosLocation(const void* options,
xf86int10BiosLocationPtr bios)
{
- char *s;
- char *p;
- char *str = NULL;
-
- if (options)
- str = xf86GetOptValString(options,OPT_BIOS_LOCATION);
+ const char *p;
+ const char *str;
bios->bus = BUS_NONE;
- if (!str)
+
+ if ((options == NULL)
+ || ((str = xf86GetOptValString(options, OPT_BIOS_LOCATION)) == NULL)) {
return;
-
- s = xstrdup(str);
- p = strtok(s,":");
- if (xf86NameCmp(p,"pci") == 0) bios->bus = BUS_PCI;
- else
- if (xf86NameCmp(p,"primary") == 0) bios->bus = BUS_ISA;
+ }
- xfree(s);
-
- if (bios->bus == BUS_NONE) return;
+ if (strncasecmp(str, "pci", 3) == 0) {
+ bios->bus = BUS_PCI;
+ } else if (strncasecmp(str, "primary", 7) == 0) {
+ bios->bus = BUS_ISA;
+ }
+ else {
+ return;
+ }
- s = xstrdup(str);
- p = strchr(s, ':');
+ p = strchr(str, ':');
switch (bios->bus) {
case BUS_ISA:
- if (p)
- bios->location.legacy = atoi(++p);
- else
- bios->location.legacy = 0;
+ bios->location.legacy = (p != NULL) ? atoi(++p) : 0;
break;
case BUS_PCI:
if (p) {
@@ -332,8 +325,107 @@ xf86int10ParseBiosLocation(void* options,
default:
break;
}
- xfree(s);
}
+BusType
+xf86int10GetBiosLocationType(const xf86Int10InfoPtr pInt,
+ const xf86int10BiosLocationPtr bios)
+{
+ BusType location_type = bios->bus;
+
+ switch (location_type) {
+ case BUS_PCI:
+ xf86DrvMsg(pInt->scrnIndex,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(pInt->scrnIndex,X_CONFIG,"Overriding bios location: "
+ "Legacy:0x%x\n",bios->location.legacy);
+ else
+ xf86DrvMsg(pInt->scrnIndex,X_CONFIG,"Overriding bios location: "
+ "Legacy\n");
+ break;
+ case BUS_NONE: {
+ EntityInfoPtr pEnt = xf86GetEntityInfo(pInt->entityIndex);
+ location_type = pEnt->location.type;
+ xfree(pEnt);
+ break;
+ }
+ default:
+ break;
+ }
+
+ return location_type;
+}
+
+
+#define CHECK_V_SEGMENT_RANGE(x) \
+ if (((x) << 4) < V_BIOS) { \
+ xf86DrvMsg(pInt->scrnIndex, X_ERROR, \
+ "V_BIOS address 0x%lx out of range\n", \
+ (unsigned long)(x) << 4); \
+ return FALSE; \
+ }
+
+Bool
+xf86int10GetBiosSegment(xf86Int10InfoPtr pInt,
+ const xf86int10BiosLocationPtr bios, void * base)
+{
+ unsigned i;
+ int cs = ~0;
+ int segments[4];
+ const char * format;
+
+
+ if (bios->bus == BUS_ISA && bios->location.legacy) {
+ xf86DrvMsg(pInt->scrnIndex, X_CONFIG,
+ "Overriding BIOS location: 0x%x\n",
+ bios->location.legacy);
+
+ segments[0] = bios->location.legacy >> 4;
+ segments[1] = ~0;
+
+ format = "No V_BIOS at specified address 0x%lx\n";
+ } else {
+ if (bios->bus == BUS_PCI) {
+ xf86DrvMsg(pInt->scrnIndex, X_WARNING,
+ "Option BiosLocation for primary device ignored: "
+ "It points to PCI.\n");
+ xf86DrvMsg(pInt->scrnIndex, X_WARNING,
+ "You must set Option InitPrimary also\n");
+ }
+
+ segments[0] = MEM_RW(pInt, (0x10 << 2) + 2);
+ segments[1] = MEM_RW(pInt, (0x42 << 2) + 2);
+ segments[2] = V_BIOS >> 4;
+ segments[3] = ~0;
+
+ format = "No V_BIOS found\n";
+ }
+
+ for (i = 0; segments[i] != ~0; i++) {
+ unsigned char * vbiosMem;
+
+ cs = segments[i];
+
+ CHECK_V_SEGMENT_RANGE(cs);
+ vbiosMem = (unsigned char *)base + (cs << 4);
+ if (int10_check_bios(pInt->scrnIndex, cs, vbiosMem)) {
+ break;
+ }
+ }
+ if (segments[i] == ~0) {
+ xf86DrvMsg(pInt->scrnIndex, X_ERROR, format, (unsigned long)cs << 4);
+ return FALSE;
+ }
+
+ xf86DrvMsg(pInt->scrnIndex, X_INFO, "Primary V_BIOS segment is: 0x%lx\n",
+ (unsigned long)cs);
+
+ pInt->BIOSseg = cs;
+ return TRUE;
+}
diff --git a/hw/xfree86/int10/pci.c b/hw/xfree86/int10/pci.c
index 520df1495..7ef6328da 100644
--- a/hw/xfree86/int10/pci.c
+++ b/hw/xfree86/int10/pci.c
@@ -1,4 +1,3 @@
-/* $XFree86: xc/programs/Xserver/hw/xfree86/int10/pci.c,v 1.11 2001/10/01 13:44:13 eich Exp $ */
/*
* XFree86 int10 module
diff --git a/hw/xfree86/int10/stub.c b/hw/xfree86/int10/stub.c
index 35b74cd42..58b65782c 100644
--- a/hw/xfree86/int10/stub.c
+++ b/hw/xfree86/int10/stub.c
@@ -1,4 +1,3 @@
-/* $XFree86: xc/programs/Xserver/hw/xfree86/int10/stub.c,v 1.2 2000/02/12 03:39:57 dawes Exp $ */
/*
* XFree86 int10 module
* execute BIOS int 10h calls in x86 real mode environment
diff --git a/hw/xfree86/int10/xf86int10.c b/hw/xfree86/int10/xf86int10.c
index 303cf8925..d74643eaf 100644
--- a/hw/xfree86/int10/xf86int10.c
+++ b/hw/xfree86/int10/xf86int10.c
@@ -1,4 +1,3 @@
-/* $XFree86: xc/programs/Xserver/hw/xfree86/int10/xf86int10.c,v 1.10tsi Exp $ */
/*
* XFree86 int10 module
* execute BIOS int 10h calls in x86 real mode environment
diff --git a/hw/xfree86/int10/xf86int10.h b/hw/xfree86/int10/xf86int10.h
index 9e137df41..ec4fbd67f 100644
--- a/hw/xfree86/int10/xf86int10.h
+++ b/hw/xfree86/int10/xf86int10.h
@@ -1,4 +1,3 @@
-/* $XFree86: xc/programs/Xserver/hw/xfree86/int10/xf86int10.h,v 1.23 2002/04/04 14:05:51 eich Exp $ */
/*
* XFree86 int10 module
@@ -143,7 +142,7 @@ void dump_code(xf86Int10InfoPtr pInt);
void dump_registers(xf86Int10InfoPtr pInt);
void stack_trace(xf86Int10InfoPtr pInt);
xf86Int10InfoPtr getInt10Rec(int entityIndex);
-CARD8 bios_checksum(CARD8 *start, int size);
+CARD8 bios_checksum(const CARD8 *start, int size);
void LockLegacyVGA(xf86Int10InfoPtr pInt, legacyVGAPtr vga);
void UnlockLegacyVGA(xf86Int10InfoPtr pInt, legacyVGAPtr vga);
#if defined (_PC)
@@ -182,11 +181,16 @@ int setup_system_bios(void *base_addr);
void reset_int_vect(xf86Int10InfoPtr pInt);
void set_return_trap(xf86Int10InfoPtr pInt);
void * xf86HandleInt10Options(ScrnInfoPtr pScrn, int entityIndex);
-Bool int10skip(void* options);
-Bool int10_check_bios(int scrnIndex, int codeSeg, unsigned char* vbiosMem);
-Bool initPrimary(void* options);
-void xf86int10ParseBiosLocation(void* options,
+Bool int10skip(const void* options);
+Bool int10_check_bios(int scrnIndex, int codeSeg,
+ const unsigned char* vbiosMem);
+Bool initPrimary(const void* options);
+void xf86int10ParseBiosLocation(const void* options,
xf86int10BiosLocationPtr bios);
+BusType xf86int10GetBiosLocationType(const xf86Int10InfoPtr pInt,
+ const xf86int10BiosLocationPtr bios);
+Bool xf86int10GetBiosSegment(xf86Int10InfoPtr pInt,
+ const xf86int10BiosLocationPtr bios, void * base);
#ifdef DEBUG
void dprint(unsigned long start, unsigned long size);
#endif
diff --git a/hw/xfree86/int10/xf86x86emu.c b/hw/xfree86/int10/xf86x86emu.c
index 62a34e3aa..83663b0e6 100644
--- a/hw/xfree86/int10/xf86x86emu.c
+++ b/hw/xfree86/int10/xf86x86emu.c
@@ -1,4 +1,3 @@
-/* $XFree86: xc/programs/Xserver/hw/xfree86/int10/xf86x86emu.c,v 1.11 2001/04/30 14:34:58 tsi Exp $ */
/*
* XFree86 int10 module
* execute BIOS int 10h calls in x86 real mode environment
diff --git a/hw/xfree86/int10/xf86x86emu.h b/hw/xfree86/int10/xf86x86emu.h
index a7eb6d3c7..4af2dafb7 100644
--- a/hw/xfree86/int10/xf86x86emu.h
+++ b/hw/xfree86/int10/xf86x86emu.h
@@ -1,4 +1,3 @@
-/* $XFree86: xc/programs/Xserver/hw/xfree86/int10/xf86x86emu.h,v 1.1 2000/01/23 04:44:35 dawes Exp $ */
/*
* XFree86 int10 module
* execute BIOS int 10h calls in x86 real mode environment
diff --git a/hw/xfree86/loader/Makefile.am b/hw/xfree86/loader/Makefile.am
index 684087eae..206600214 100644
--- a/hw/xfree86/loader/Makefile.am
+++ b/hw/xfree86/loader/Makefile.am
@@ -1,13 +1,11 @@
noinst_LIBRARIES = libloader.a
-INCLUDES = $(XORG_INCS) -I$(srcdir)/../parser -I$(srcdir)/../vbe \
- -I$(srcdir)/../ddc -I$(srcdir)/../int10 -I$(srcdir)/../i2c \
- -I$(srcdir)/../fbdevhw -I$(srcdir)/../scanpci -I$(srcdir)/../xaa \
- -I$(srcdir)/../vgahw -I$(srcdir)/../ramdac -I$(srcdir)/../shadowfb \
- -I$(srcdir)/../dixmods/extmod -I$(srcdir)/../../../miext/cw \
- -I$(srcdir)/../../../miext/damage
+
+INCLUDES = $(XORG_INCS) -I$(srcdir)/../parser -I$(srcdir)/../dixmods/extmod \
+ -I$(srcdir)/../vbe -I$(top_srcdir)/miext/cw -I$(srcdir)/../int10 \
+ -I$(srcdir)/../ddc -I$(srcdir)/../i2c
#AM_LDFLAGS = -r
-AM_CFLAGS = -DIN_LOADER $(XORG_CFLAGS) @SERVER_DEFINES@ @LOADER_DEFINES@
+AM_CFLAGS = -DIN_LOADER $(DIX_CFLAGS) $(XORG_CFLAGS)
if XORG_LOADER_SPARC
SPARC_SOURCES = SparcMulDiv.S
@@ -15,10 +13,8 @@ endif
EXTRA_DIST = \
dlloader.h \
- hash.h \
loader.h \
loaderProcs.h \
- sym.h \
SparcMulDiv.S
libloader_a_SOURCES = \
@@ -34,5 +30,5 @@ libloader_a_SOURCES = \
fontsym.c \
misym.c \
xf86sym.c \
- hash.c \
+ sym.h \
$(SPARC_SOURCES)
diff --git a/hw/xfree86/loader/dixsym.c b/hw/xfree86/loader/dixsym.c
index 9ba50877e..32e0e4f68 100644
--- a/hw/xfree86/loader/dixsym.c
+++ b/hw/xfree86/loader/dixsym.c
@@ -1,7 +1,3 @@
-/* $XdotOrg: xserver/xorg/hw/xfree86/loader/dixsym.c,v 1.21 2006/03/24 20:50:13 fredrik Exp $ */
-/* $XFree86: xc/programs/Xserver/hw/xfree86/loader/dixsym.c,v 1.63 2003/12/03
- * 17:11:29 tsi Exp $ */
-
/*
* Copyright 1995-1998 by Metro Link, Inc.
*
@@ -99,7 +95,7 @@ extern int NumCurrentSelections;
/* DIX things */
-LOOKUP dixLookupTab[] = {
+_X_HIDDEN void *dixLookupTab[] = {
/* dix */
/* atom.c */
@@ -159,17 +155,21 @@ LOOKUP dixLookupTab[] = {
SYMFUNC(CompareTimeStamps)
SYMFUNC(CopyISOLatin1Lowered)
SYMFUNC(DeleteCallback)
+ SYMFUNC(dixLookupDrawable)
+ SYMFUNC(dixLookupWindow)
+ SYMFUNC(dixLookupClient)
+ SYMFUNC(dixLookupGC)
+ /* following are deprecated */
SYMFUNC(LookupClient)
SYMFUNC(LookupDrawable)
SYMFUNC(LookupWindow)
+ SYMFUNC(SecurityLookupDrawable)
+ SYMFUNC(SecurityLookupWindow)
+ /* end deprecated */
SYMFUNC(NoopDDA)
SYMFUNC(QueueWorkProc)
SYMFUNC(RegisterBlockAndWakeupHandlers)
SYMFUNC(RemoveBlockAndWakeupHandlers)
-#ifdef XCSECURITY
- SYMFUNC(SecurityLookupDrawable)
- SYMFUNC(SecurityLookupWindow)
-#endif
/* events.c */
SYMFUNC(CheckCursorConfinement)
SYMFUNC(DeliverEvents)
@@ -248,7 +248,6 @@ LOOKUP dixLookupTab[] = {
SYMVAR(globalSerialNumber)
SYMVAR(lastDeviceEventTime)
SYMVAR(monitorResolution)
- SYMVAR(permitOldBugs)
SYMVAR(screenInfo)
SYMVAR(serverClient)
SYMVAR(serverGeneration)
@@ -260,6 +259,8 @@ LOOKUP dixLookupTab[] = {
SYMFUNC(GetScratchPixmapHeader)
SYMFUNC(FreeScratchPixmapHeader)
/* privates.c */
+ SYMFUNC(AllocateExtensionPrivate)
+ SYMFUNC(AllocateExtensionPrivateIndex)
SYMFUNC(AllocateClientPrivate)
SYMFUNC(AllocateClientPrivateIndex)
SYMFUNC(AllocateGCPrivate)
@@ -287,10 +288,8 @@ LOOKUP dixLookupTab[] = {
SYMFUNC(LookupIDByType)
SYMFUNC(LookupIDByClass)
SYMFUNC(LegalNewID)
-#ifdef XCSECURITY
SYMFUNC(SecurityLookupIDByClass)
SYMFUNC(SecurityLookupIDByType)
-#endif
SYMFUNC(FindClientResourcesByType)
SYMFUNC(FindAllClientResources)
SYMVAR(lastResourceType)
@@ -533,6 +532,4 @@ LOOKUP dixLookupTab[] = {
SYMFUNC(RenderEdgeInit)
SYMFUNC(RenderLineFixedEdgeInit)
#endif
-
- {0, 0}
};
diff --git a/hw/xfree86/loader/dlloader.c b/hw/xfree86/loader/dlloader.c
index 835deda49..a0e867056 100644
--- a/hw/xfree86/loader/dlloader.c
+++ b/hw/xfree86/loader/dlloader.c
@@ -1,7 +1,4 @@
-/* $XFree86: xc/programs/Xserver/hw/xfree86/loader/dlloader.c,v 1.13 2003/10/15 16:29:02 dawes Exp $ */
-
/*
- *
* Copyright (c) 1997 The XFree86 Project, Inc.
*
* Permission to use, copy, modify, distribute, and sell this software
@@ -23,7 +20,18 @@
* WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN
* AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING
* OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
- * SOFTWARE. */
+ * SOFTWARE.
+ */
+
+/*
+ * Once upon a time, X had multiple loader backends, three of which were
+ * essentially libdl reimplementations. This was nonsense so we chucked
+ * it, but we still retain the factorization between loader API and
+ * platform implementation. This file is the libdl implementation, and
+ * currently the only backend. If you find yourself porting to a platform
+ * without working libdl - hpux, win32, some forsaken a.out host, etc. -
+ * make a new backend rather than hacking up this file.
+ */
#ifdef HAVE_XORG_CONFIG_H
#include <xorg-config.h>
@@ -36,82 +44,69 @@
#include <X11/Xos.h>
#include "os.h"
-#include "sym.h"
#include "loader.h"
#include "dlloader.h"
-#ifdef DL_LAZY
+#if defined(DL_LAZY)
#define DLOPEN_LAZY DL_LAZY
-#else
-#ifdef RTLD_LAZY
+#elif defined(RTLD_LAZY)
#define DLOPEN_LAZY RTLD_LAZY
-#else
-#ifdef __FreeBSD__
+#elif defined(__FreeBSD__)
#define DLOPEN_LAZY 1
#else
#define DLOPEN_LAZY 0
#endif
-#endif
-#endif
-#ifdef LD_GLOBAL
+
+#if defined(LD_GLOBAL)
#define DLOPEN_GLOBAL LD_GLOBAL
-#else
-#ifdef RTLD_GLOBAL
+#elif defined(RTLD_GLOBAL)
#define DLOPEN_GLOBAL RTLD_GLOBAL
#else
#define DLOPEN_GLOBAL 0
#endif
-#endif
#if defined(CSRG_BASED) && !defined(__ELF__)
-#define NEED_UNDERSCORE_FOR_DLLSYM
+#define DLSYM_PREFIX "_"
+#else
+#define DLSYM_PREFIX ""
#endif
-/*
- * This structure contains all of the information about a module
- * that has been loaded.
- */
typedef struct {
int handle;
void *dlhandle;
int flags;
} DLModuleRec, *DLModulePtr;
-/*
- * a list of loaded modules XXX can be improved
- */
+/* Hooray, yet another open coded linked list! FIXME */
typedef struct DLModuleList {
DLModulePtr module;
struct DLModuleList *next;
} DLModuleList;
-DLModuleList *dlModuleList = NULL;
+static DLModuleList *dlModuleList = NULL;
-void *
+static void *
DLFindSymbolLocal(pointer module, const char *name)
{
DLModulePtr dlfile = module;
void *p;
char *n;
-#ifdef NEED_UNDERSCORE_FOR_DLLSYM
- static const char symPrefix[] = "_";
-#else
- static const char symPrefix[] = "";
-#endif
+ static const char symPrefix[] = DLSYM_PREFIX;
- n = xf86loadermalloc(strlen(symPrefix) + strlen(name) + 1);
- sprintf(n, "%s%s", symPrefix, name);
+ n = malloc(strlen(symPrefix) + strlen(name) + 1);
+ if (strlen(symPrefix))
+ sprintf(n, "%s%s", symPrefix, name);
+ else
+ sprintf(n, "%s", name);
p = dlsym(dlfile->dlhandle, n);
- xf86loaderfree(n);
+ free(n);
return p;
}
+static void *global_scope = NULL;
-/*
- * Search a symbol in the module list
- */
void *
DLFindSymbol(const char *name)
{
@@ -124,78 +119,68 @@ DLFindSymbol(const char *name)
return p;
}
+ if (!global_scope)
+ global_scope = dlopen(NULL, DLOPEN_LAZY | DLOPEN_GLOBAL);
+
+ if (global_scope)
+ return dlsym(global_scope, name);
+
return NULL;
}
-/*
- * public interface
- */
void *
-DLLoadModule(loaderPtr modrec, int fd, LOOKUP ** ppLookup, int flags)
+DLLoadModule(loaderPtr modrec, int flags)
{
DLModulePtr dlfile;
DLModuleList *l;
int dlopen_flags;
- if ((dlfile = xf86loadercalloc(1, sizeof(DLModuleRec))) == NULL) {
- ErrorF("Unable to allocate DLModuleRec\n");
+ if ((dlfile = calloc(1, sizeof(DLModuleRec))) == NULL) {
+ ErrorF("Unable to allocate DLModuleRec\n");
return NULL;
}
dlfile->handle = modrec->handle;
if (flags & LD_FLAG_GLOBAL)
- dlopen_flags = DLOPEN_LAZY | DLOPEN_GLOBAL;
+ dlopen_flags = DLOPEN_LAZY | DLOPEN_GLOBAL;
else
- dlopen_flags = DLOPEN_LAZY;
+ dlopen_flags = DLOPEN_LAZY;
dlfile->dlhandle = dlopen(modrec->name, dlopen_flags);
if (dlfile->dlhandle == NULL) {
ErrorF("dlopen: %s\n", dlerror());
- xf86loaderfree(dlfile);
+ free(dlfile);
return NULL;
}
- l = xf86loadermalloc(sizeof(DLModuleList));
+ l = malloc(sizeof(DLModuleList));
l->module = dlfile;
l->next = dlModuleList;
dlModuleList = l;
- *ppLookup = NULL;
return (void *)dlfile;
}
void
-DLResolveSymbols(void *mod)
-{
- return;
-}
-
-int
-DLCheckForUnresolved(void *mod)
-{
- return 0;
-}
-
-void
DLUnloadModule(void *modptr)
{
DLModulePtr dlfile = (DLModulePtr) modptr;
DLModuleList *l, *p;
- /* remove it from dlModuleList */
+ /* remove it from dlModuleList. */
if (dlModuleList->module == modptr) {
l = dlModuleList;
dlModuleList = l->next;
- xf86loaderfree(l);
+ free(l);
} else {
p = dlModuleList;
for (l = dlModuleList->next; l != NULL; l = l->next) {
if (l->module == modptr) {
p->next = l->next;
- xf86loaderfree(l);
+ free(l);
break;
}
p = l;
}
}
dlclose(dlfile->dlhandle);
- xf86loaderfree(modptr);
+ free(modptr);
}
diff --git a/hw/xfree86/loader/dlloader.h b/hw/xfree86/loader/dlloader.h
index 6475291b5..8ae610f02 100644
--- a/hw/xfree86/loader/dlloader.h
+++ b/hw/xfree86/loader/dlloader.h
@@ -19,19 +19,15 @@
* PERFORMANCE OF THIS SOFTWARE.
*/
-/* $XFree86: xc/programs/Xserver/hw/xfree86/loader/dlloader.h,v 1.2 1998/07/25 16:56:14 dawes Exp $ */
-
#ifdef HAVE_XORG_CONFIG_H
#include <xorg-config.h>
#endif
#ifndef _DLLOADER_H
#define _DLLOADER_H
-extern void *DLLoadModule(loaderPtr, int, LOOKUP **, int flags);
-extern void DLResolveSymbols(void *);
-extern int DLCheckForUnresolved(void *);
+
+extern void *DLLoadModule(loaderPtr, int flags);
extern void DLUnloadModule(void *);
extern void *DLFindSymbol(const char *name);
-extern void *DLFindSymbolLocal(pointer module, const char *name);
#endif
diff --git a/hw/xfree86/loader/extsym.c b/hw/xfree86/loader/extsym.c
index 1a841ac9a..e09e9c084 100644
--- a/hw/xfree86/loader/extsym.c
+++ b/hw/xfree86/loader/extsym.c
@@ -1,6 +1,3 @@
-/* $XdotOrg: xc/programs/Xserver/hw/xfree86/loader/extsym.c,v 1.5 2004/09/14 23:21:22 gisburn Exp $ */
-/* $XFree86: xc/programs/Xserver/hw/xfree86/loader/extsym.c,v 1.9 2003/10/15 16:29:03 dawes Exp $ */
-
/*
*
* Copyright 1999-2003 by The XFree86 Project, Inc.
@@ -57,7 +54,7 @@ extern Bool XineramaRegisterConnectionBlockCallback(void (*func) (void));
extern int XineramaDeleteResource(pointer, XID);
#endif
-LOOKUP extLookupTab[] = {
+_X_HIDDEN void *extLookupTab[] = {
SYMFUNC(ClientSleepUntil)
@@ -79,6 +76,4 @@ LOOKUP extLookupTab[] = {
SYMVAR(XRT_COLORMAP)
SYMVAR(XRC_DRAWABLE)
#endif
-
- {0, 0}
};
diff --git a/hw/xfree86/loader/fontsym.c b/hw/xfree86/loader/fontsym.c
index 5daf82802..82d4b1cf8 100644
--- a/hw/xfree86/loader/fontsym.c
+++ b/hw/xfree86/loader/fontsym.c
@@ -1,4 +1,3 @@
-/* $XFree86: xc/programs/Xserver/hw/xfree86/loader/fontsym.c,v 1.14 2003/12/20 20:04:34 dawes Exp $ */
/*
* Copyright (c) 1998-2002 by The XFree86 Project, Inc.
*
@@ -46,7 +45,7 @@
#include "fontcache.h"
#endif
-LOOKUP fontLookupTab[] = {
+_X_HIDDEN void *fontLookupTab[] = {
SYMFUNC(TwoByteSwap)
SYMFUNC(FourByteSwap)
@@ -107,6 +106,4 @@ LOOKUP fontLookupTab[] = {
SYMFUNC(FontCacheInsertEntry)
SYMFUNC(FontCacheGetBitmap)
#endif
-
- {0, 0}
};
diff --git a/hw/xfree86/loader/hash.c b/hw/xfree86/loader/hash.c
deleted file mode 100644
index 393360f94..000000000
--- a/hw/xfree86/loader/hash.c
+++ /dev/null
@@ -1,356 +0,0 @@
-/* $XdotOrg: xc/programs/Xserver/hw/xfree86/loader/hash.c,v 1.3 2005/04/20 12:25:34 daniels Exp $ */
-/* $XFree86: xc/programs/Xserver/hw/xfree86/loader/hash.c,v 1.24 2003/11/17 22:20:40 dawes Exp $ */
-
-/*
- *
- * Copyright 1995-1998 by Metro Link, 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 Metro Link, Inc. not be used in
- * advertising or publicity pertaining to distribution of the software without
- * specific, written prior permission. Metro Link, Inc. makes no
- * representations about the suitability of this software for any purpose.
- * It is provided "as is" without express or implied warranty.
- *
- * METRO LINK, INC. DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
- * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
- * EVENT SHALL METRO LINK, INC. BE LIABLE FOR ANY SPECIAL, INDIRECT OR
- * CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
- * DATA OR PROFITS, WHETHER 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 "os.h"
-#include <X11/Xos.h>
-#undef abs
-#include <stdlib.h>
-#include "sym.h"
-#include "loader.h"
-#include "hash.h"
-
-#if defined(Lynx)
-#define MAXINT 32000
-#else
-#include <limits.h>
-#undef MAXINT
-#define MAXINT INT_MAX
-#endif
-
-/* Prototypes for static functions. */
-static unsigned int hashFunc(const char *);
-static itemPtr LoaderHashFindNearest(unsigned long);
-
-static itemPtr LoaderhashTable[HASHSIZE];
-
-#ifdef DEBUG
-static int hashhits[HASHSIZE];
-
-void
-DumpHashHits(void)
-{
- int i;
- int depth = 0;
- int dev = 0;
-
- for (i = 0; i < HASHSIZE; i++) {
- ErrorF("hashhits[%d]=%d\n", i, hashhits[i]);
- depth += hashhits[i];
- }
-
- depth /= HASHSIZE;
- ErrorF("Average hash depth=%d\n", depth);
-
- for (i = 0; i < HASHSIZE; i++) {
- if (hashhits[i] < depth)
- dev += depth - hashhits[i];
- else
- dev += hashhits[i] - depth;
- }
-
- dev /= HASHSIZE;
- ErrorF("Average hash deviation=%d\n", dev);
-}
-#endif
-
-static unsigned int
-hashFunc(const char *string)
-{
- int i = 0;
-
- while (i < 10 && string[i])
- i++;
-
- if (i < 5) {
-#ifdef DEBUG
- hashhits[i]++;
-#endif
- return i;
- }
-
-/*
- * Original has function
-#define HASH ((string[ i-4 ] * string[i-3] + string[i-2] ) & (HASHSIZE-1))
- */
-
-#define HASH ((string[i-5] * string[ i-4 ] + string[i-3] * string[i-2] ) & (HASHSIZE-1))
-
-#ifdef DEBUG
- hashhits[HASH]++;
-#endif
-
- return HASH;
-}
-
-void
-LoaderHashAdd(itemPtr entry)
-{
- int bucket = hashFunc(entry->name);
- itemPtr oentry;
-
- if ((oentry = LoaderHashFind(entry->name)) != NULL)
- LoaderDuplicateSymbol(entry->name, oentry->handle);
-
- entry->next = LoaderhashTable[bucket];
- LoaderhashTable[bucket] = entry;
- return;
-}
-
-void
-LoaderAddSymbols(int handle, int module, LOOKUP *list)
-{
- LOOKUP *l = list, *exports = NULL;
- itemPtr i, exportsItem = NULL;
- char *modname;
-
- if (!list)
- return;
-
- /*
- * First look for a symbol called <name>ExportedSymbols. If it exists,
- * only export the symbols that are listed in that array. Otherwise
- * export all of the external symbols.
- */
- modname = _LoaderHandleToCanonicalName(handle);
- if (modname) {
- char *exportname;
-
- exportname = xf86loadermalloc(strlen("ExportedSymbols") +
- strlen(modname) + 1);
- if (exportname) {
- sprintf(exportname, "%sExportedSymbols", modname);
- while (l->symName) {
- if (strcmp(l->symName, exportname) == 0) {
- exports = l;
- ErrorF("LoaderAddSymbols: %s: %s found\n", modname,
- exportname);
- break;
- }
- l++;
- }
- xf86loaderfree(exportname);
- }
- }
-
- /*
- * Allocate the exports list item first.
- */
- if (exports) {
- exportsItem = xf86loadermalloc(sizeof(itemRec));
- exportsItem->name = exports->symName;
- exportsItem->address = (char *)exports->offset;
- exportsItem->handle = handle;
- exportsItem->module = module;
- exportsItem->exports = NULL;
- LoaderHashAdd(exportsItem);
- }
-
- /*
- * Visit every symbol in the lookup table, tagging it with the
- * reference to the export list, if present.
- */
- l = list;
- while (l->symName) {
- if (l != exports) {
- i = xf86loadermalloc(sizeof(itemRec));
- i->name = l->symName;
- i->address = (char *)l->offset;
- i->handle = handle;
- i->module = module;
- i->exports = exportsItem;
- LoaderHashAdd(i);
- }
- l++;
- }
-}
-
-itemPtr
-LoaderHashDelete(const char *string)
-{
- int bucket = hashFunc(string);
- itemPtr entry;
- itemPtr *entry2;
-
- entry = LoaderhashTable[bucket];
- entry2 = &(LoaderhashTable[bucket]);
- while (entry) {
- if (!strcmp(entry->name, string)) {
- *entry2 = entry->next;
- xf86loaderfree(entry->name);
- xf86loaderfree(entry);
- return 0;
- }
- entry2 = &(entry->next);
- entry = entry->next;
- }
- return 0;
-}
-
-itemPtr
-LoaderHashFind(const char *string)
-{
- int bucket = hashFunc(string);
- itemPtr entry;
-
- entry = LoaderhashTable[bucket];
- while (entry) {
- if (!strcmp(entry->name, string)) {
- return entry;
- }
- entry = entry->next;
- }
- return 0;
-}
-
-static itemPtr
-LoaderHashFindNearest(unsigned long address)
-{
- int i;
- itemPtr entry, best_entry = 0;
- long best_difference = MAXINT;
-
- for (i = 0; i < HASHSIZE; i++) {
- entry = LoaderhashTable[i];
- while (entry) {
- long difference = (long)address - (long)entry->address;
-
- if (difference >= 0) {
- if (best_entry) {
- if (difference < best_difference) {
- best_entry = entry;
- best_difference = difference;
- }
- } else {
- best_entry = entry;
- best_difference = difference;
- }
- }
- entry = entry->next;
- }
- }
- return best_entry;
-}
-
-void
-LoaderPrintSymbol(unsigned long address)
-{
- itemPtr entry;
-
- entry = LoaderHashFindNearest(address);
- if (entry) {
- const char *module, *section;
-
-#if defined(__alpha__) || defined(__ia64__)
- ErrorF("0x%016lx %s+%lx\n", (unsigned long)entry->address,
- entry->name, address - (unsigned long)entry->address);
-#else
- ErrorF("0x%lx %s+%lx\n", (unsigned long)entry->address, entry->name,
- address - (unsigned long)entry->address);
-#endif
-
- if (_LoaderAddressToSection(address, &module, &section))
- ErrorF("\tModule \"%s\"\n\tSection \"%s\"\n", module, section);
- } else {
- ErrorF("(null)\n");
- }
-}
-
-void
-LoaderPrintItem(itemPtr pItem)
-{
- if (pItem) {
- const char *module, *section;
-
-#if defined(__alpha__) || defined(__ia64__)
- ErrorF("0x%016lx %s\n", (unsigned long)pItem->address, pItem->name);
-#else
- ErrorF("0x%lx %s\n", (unsigned long)pItem->address, pItem->name);
-#endif
- if (_LoaderAddressToSection((unsigned long)pItem->address,
- &module, &section))
- ErrorF("\tModule \"%s\"\n\tSection \"%s\"\n", module, section);
- } else
- ErrorF("(null)\n");
-}
-
-void
-LoaderPrintAddress(const char *symbol)
-{
- itemPtr entry;
-
- entry = LoaderHashFind(symbol);
- LoaderPrintItem(entry);
-}
-
-void
-LoaderHashTraverse(void *card, int (*fnp)(void *, itemPtr))
-{
- int i;
- itemPtr entry, last_entry = 0;
-
- for (i = 0; i < HASHSIZE; i++) {
- last_entry = 0;
- entry = LoaderhashTable[i];
- while (entry) {
- if ((*fnp) (card, entry)) {
- if (last_entry) {
- last_entry->next = entry->next;
- xf86loaderfree(entry->name);
- xf86loaderfree(entry);
- entry = last_entry->next;
- } else {
- LoaderhashTable[i] = entry->next;
- xf86loaderfree(entry->name);
- xf86loaderfree(entry);
- entry = LoaderhashTable[i];
- }
- } else {
- last_entry = entry;
- entry = entry->next;
- }
- }
- }
-}
-
-void
-LoaderDumpSymbols()
-{
- itemPtr entry;
- int j;
-
- for (j = 0; j < HASHSIZE; j++) {
- entry = LoaderhashTable[j];
- while (entry) {
- LoaderPrintItem(entry);
- entry = entry->next;
- }
- }
-
-}
diff --git a/hw/xfree86/loader/hash.h b/hw/xfree86/loader/hash.h
deleted file mode 100644
index 45617bd5f..000000000
--- a/hw/xfree86/loader/hash.h
+++ /dev/null
@@ -1,40 +0,0 @@
-/*
- *
- * Copyright 1995-1998 by Metro Link, 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 Metro Link, Inc. not be used in
- * advertising or publicity pertaining to distribution of the software without
- * specific, written prior permission. Metro Link, Inc. makes no
- * representations about the suitability of this software for any purpose.
- * It is provided "as is" without express or implied warranty.
- *
- * METRO LINK, INC. DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
- * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
- * EVENT SHALL METRO LINK, INC. BE LIABLE FOR ANY SPECIAL, INDIRECT OR
- * CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
- * DATA OR PROFITS, WHETHER 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/loader/hash.h,v 1.2.2.2 1998/07/04 13:32:45 dawes Exp $ */
-
-#ifdef HAVE_XORG_CONFIG_H
-#include <xorg-config.h>
-#endif
-
-#ifndef _HASH_H
-#define _HASH_H
-
-#include "loader.h"
-
-typedef struct _HashIterator {
- itemPtr pItem;
- int bucket;
-} HashIteratorRec, *HashIteratorPtr;
-
-#endif /* _HASH_H */
diff --git a/hw/xfree86/loader/loader.c b/hw/xfree86/loader/loader.c
index 49546ec81..ddd624c2a 100644
--- a/hw/xfree86/loader/loader.c
+++ b/hw/xfree86/loader/loader.c
@@ -1,5 +1,3 @@
-/* $XFree86: xc/programs/Xserver/hw/xfree86/loader/loader.c,v 1.71 2003/11/06 18:38:13 tsi Exp $ */
-
/*
* Copyright 1995-1998 by Metro Link, Inc.
*
@@ -71,39 +69,18 @@
#include <stdarg.h>
#include "os.h"
-#include "sym.h"
#include "loader.h"
#include "loaderProcs.h"
#include "xf86.h"
#include "xf86Priv.h"
-
#include "compiler.h"
-
-extern LOOKUP miLookupTab[];
-extern LOOKUP xfree86LookupTab[];
-extern LOOKUP dixLookupTab[];
-extern LOOKUP fontLookupTab[];
-extern LOOKUP extLookupTab[];
-
-/*
-#define DEBUG
-#define DEBUGAR
-#define DEBUGLIST
-#define DEBUGMEM
-*/
-
-int check_unresolved_sema = 0;
+#include "sym.h"
#if defined(Lynx) && defined(sun)
/* Cross build machine doesn;t have strerror() */
#define strerror(err) "strerror unsupported"
#endif
-#ifdef __UNIXOS2__
-void *os2ldcalloc(size_t, size_t);
-#endif
-
-#ifdef HANDLE_IN_HASH_ENTRY
/*
* handles are used to identify files that are loaded. Even archives
* are counted as a single file.
@@ -113,106 +90,6 @@ void *os2ldcalloc(size_t, size_t);
#define HANDLE_USED 1
static char freeHandles[MAX_HANDLE];
static int refCount[MAX_HANDLE];
-#endif
-
-#if defined(__sparc__) && defined(__GNUC__) && !defined(__FreeBSD__)
-# define SYMFUNCDOT(func) { "." #func, (funcptr)&__sparc_dot_ ## func },
-# if !defined(__OpenBSD__)
-# define SYMFUNCDOT89(func) { "." #func, (funcptr)&func ## _sparcv89 },
-# define DEFFUNCDOT(func) \
-extern void __sparc_dot_ ## func (void) __asm__ ("." #func); \
-extern void func ## _sparcv89 (void);
-# else
-# define SYMFUNCDOT(func) { "." #func, (funcptr)&__sparc_dot_ ## func },
-# define DEFFUNCDOT(func) \
-extern void __sparc_dot_ ## func (void) __asm__ ("." #func);
-#endif
-DEFFUNCDOT(rem)
-DEFFUNCDOT(urem)
-DEFFUNCDOT(mul)
-DEFFUNCDOT(umul)
-DEFFUNCDOT(div)
-DEFFUNCDOT(udiv)
-#ifdef linux
-static LOOKUP SparcV89LookupTab[] = {
- SYMFUNCDOT89(rem)
- SYMFUNCDOT89(urem)
- SYMFUNCDOT89(mul)
- SYMFUNCDOT89(umul)
- SYMFUNCDOT89(div)
- SYMFUNCDOT89(udiv)
- {0, 0}
-};
-#endif
-static LOOKUP SparcLookupTab[] = {
- SYMFUNCDOT(rem)
- SYMFUNCDOT(urem)
- SYMFUNCDOT(mul)
- SYMFUNCDOT(umul)
- SYMFUNCDOT(div)
- SYMFUNCDOT(udiv)
- {0, 0}
-};
-
-#ifdef linux
-#if defined(__GNUC__) && defined(__GLIBC__)
-#define HWCAP_SPARC_MULDIV 8
-extern unsigned long int _dl_hwcap;
-#endif
-
-static int
-sparcUseHWMulDiv(void)
-{
- FILE *f;
- char buffer[1024];
- char *p;
-
-#if defined(__GNUC__) && defined(__GLIBC__)
- unsigned long *hwcap;
-
- __asm(".weak _dl_hwcap");
-
- hwcap = &_dl_hwcap;
- __asm("": "=r"(hwcap):"0"(hwcap));
- if (hwcap) {
- if (*hwcap & HWCAP_SPARC_MULDIV)
- return 1;
- else
- return 0;
- }
-#endif
- f = fopen("/proc/cpuinfo", "r");
- if (!f)
- return 0;
- while (fgets(buffer, 1024, f) != NULL) {
- if (!strncmp(buffer, "type", 4)) {
- p = strstr(buffer, "sun4");
- if (p && (p[4] == 'u' || p[4] == 'd')) {
- fclose(f);
- return 1;
- } else if (p && p[4] == 'm') {
- fclose(f);
- f = fopen("/proc/cpuinfo","r");
- if (!f) return 0;
- while (fgets(buffer, 1024, f) != NULL) {
- if (!strncmp (buffer, "MMU type", 8)) {
- p = strstr (buffer, "Cypress");
- if (p) {
- fclose(f);
- return 1;
- }
- }
- }
- fclose(f);
- return 0;
- }
- }
- }
- fclose(f);
- return 0;
-}
-#endif
-#endif
/*
* modules are used to identify compilation units (ie object modules).
@@ -220,62 +97,9 @@ sparcUseHWMulDiv(void)
*/
static int moduleseq = 0;
-/*
- * GDB Interface
- * =============
- *
- * Linked list of loaded modules - gdb will traverse this to determine
- * whether it needs to add the symbols for the loaded module.
- */
-LDRModulePtr ModList = 0;
-
-/* Flag which gdb sets to let us know we're being debugged */
-char DebuggerPresent = 0;
-
-/* List of common symbols */
-LDRCommonPtr ldrCommons;
-int nCommons;
-
-typedef struct {
- int num;
- const char **list;
-} symlist;
-
-/*
- * List of symbols that may be referenced, and which are allowed to be
- * unresolved providing that they don't appear on the "reqired" list.
- */
-static symlist refList = { 0, NULL };
-
-/* List of symbols that must not be unresolved */
-static symlist reqList = { 0, NULL };
-
-static int fatalReqSym = 0;
-
/* Prototypes for static functions. */
-static int _GetModuleType(int, long);
static loaderPtr _LoaderListPush(void);
static loaderPtr _LoaderListPop(int);
- /*ARGSUSED*/ static char *
-ARCHIVEAddressToSection(void *modptr, unsigned long address)
-{
- return NULL;
-}
-
-/*
- * Array containing entry points for different formats.
- */
-
-static loader_funcs funcs[] = {
- /* LD_ELFDLOBJECT */
- {DLLoadModule,
- DLResolveSymbols,
- DLCheckForUnresolved,
- ARCHIVEAddressToSection,
- DLUnloadModule},
-};
-
-int numloaders = sizeof(funcs) / sizeof(loader_funcs);
void
LoaderInit(void)
@@ -287,20 +111,10 @@ LoaderInit(void)
xf86Msg(X_ERROR, "LD_BIND_NOW is set, dlloader will NOT work!\n");
}
- LoaderAddSymbols(-1, -1, miLookupTab);
- LoaderAddSymbols(-1, -1, xfree86LookupTab);
- LoaderAddSymbols(-1, -1, dixLookupTab);
- LoaderAddSymbols(-1, -1, fontLookupTab);
- LoaderAddSymbols(-1, -1, extLookupTab);
-#if defined(__sparc__) && !defined(__FreeBSD__)
-#ifdef linux
- if (sparcUseHWMulDiv())
- LoaderAddSymbols(-1, -1, SparcV89LookupTab);
- else
-#endif
- LoaderAddSymbols(-1, -1, SparcLookupTab);
-#endif
-
+ xf86MsgVerb(X_INFO, 2, "Loader magic: %p\n", (void *)
+ ((long)dixLookupTab ^ (long)extLookupTab
+ ^ (long)fontLookupTab ^ (long)miLookupTab
+ ^ (long)xfree86LookupTab));
xf86MsgVerb(X_INFO, 2, "Module ABI versions:\n");
xf86ErrorFVerb(2, "\t%s: %d.%d\n", ABI_CLASS_ANSIC,
GET_ABI_MAJOR(LoaderVersionInfo.ansicVersion),
@@ -322,16 +136,6 @@ LoaderInit(void)
if (osname)
xf86MsgVerb(X_INFO, 2, "Loader running on %s\n", osname);
-#if defined(linux) && \
- (defined(__alpha__) || defined(__powerpc__) || defined(__ia64__) \
- || ( defined __amd64__ && ! defined UseMMAP && ! defined DoMMAPedMerge))
- /*
- * The glibc malloc uses mmap for large allocations anyway. This breaks
- * some relocation types because the offset overflow. See loader.h for more
- * details. We need to turn off this behavior here.
- */
- mallopt(M_MMAP_MAX, 0);
-#endif
#if defined(__UNIXWARE__) && !defined(__GNUC__)
/* For UnixWare we need to load the C Runtime libraries which are
* normally auto-linked by the compiler. Otherwise we are bound to
@@ -354,188 +158,12 @@ LoaderInit(void)
#endif
}
-/*
- * Determine what type of object is being loaded.
- * This function is responsible for restoring the offset.
- * The fd and offset are used here so that when Archive processing
- * is enabled, individual elements of an archive can be evaluated
- * so the correct loader_funcs can be determined.
- */
-static int
-_GetModuleType(int fd, long offset)
-{
- return LD_ELFDLOBJECT;
-}
-
-static int offsetbias = 0; /* offset into archive */
-
-/*
- * _LoaderFileToMem() loads the contents of a file into memory using
- * the most efficient method for a platform.
- */
-void *
-_LoaderFileToMem(int fd, unsigned long offset, int size, char *label)
-{
-#ifdef UseMMAP
- unsigned long ret;
-
-# ifdef MmapPageAlign
- unsigned long pagesize;
- unsigned long new_size;
- unsigned long new_off;
- unsigned long new_off_bias;
-# endif
-# define MMAP_PROT (PROT_READ|PROT_WRITE|PROT_EXEC)
-
-# ifdef DEBUGMEM
- ErrorF("_LoaderFileToMem(%d,%u(%u),%d,%s)", fd, offset, offsetbias, size,
- label);
-# endif
-# ifdef MmapPageAlign
- pagesize = getpagesize();
- new_size = (size + pagesize - 1) / pagesize;
- new_size *= pagesize;
- new_off = (offset + offsetbias) / pagesize;
- new_off *= pagesize;
- new_off_bias = (offset + offsetbias) - new_off;
- if ((new_off_bias + size) > new_size)
- new_size += pagesize;
- ret = (unsigned long)mmap(0, new_size, MMAP_PROT, MAP_PRIVATE
-# ifdef __amd64__
- | MAP_32BIT
-# endif
- , fd, new_off);
- if (ret == -1)
- FatalError("mmap() failed: %s\n", strerror(errno));
- return (void *)(ret + new_off_bias);
-# else
- ret = (unsigned long)mmap(0, size, MMAP_PROT, MAP_PRIVATE
-# ifdef __amd64__
- | MAP_32BIT
-# endif
- , fd, offset + offsetbias);
- if (ret == -1)
- FatalError("mmap() failed: %s\n", strerror(errno));
- return (void *)ret;
-# endif
-#else
- char *ptr;
-
-# ifdef DEBUGMEM
- ErrorF("_LoaderFileToMem(%d,%u(%u),%d,%s)", fd, offset, offsetbias, size,
- label);
-# endif
-
- if (size == 0) {
-# ifdef DEBUGMEM
- ErrorF("=NULL\n", ptr);
-# endif
- return NULL;
- }
-# ifndef __UNIXOS2__
- if ((ptr = xf86loadercalloc(size, 1)) == NULL)
- FatalError("_LoaderFileToMem() malloc failed\n");
-# else
- if ((ptr = os2ldcalloc(size, 1)) == NULL)
- FatalError("_LoaderFileToMem() malloc failed\n");
-# endif
-# if defined(linux) && defined(__ia64__)
- {
- unsigned long page_size = getpagesize();
- unsigned long round;
-
- round = (unsigned long)ptr & (page_size - 1);
- mprotect(ptr - round,
- (size + round + page_size - 1) & ~(page_size - 1),
- PROT_READ | PROT_WRITE | PROT_EXEC);
- }
-# endif
-
- if (lseek(fd, offset + offsetbias, SEEK_SET) < 0)
- FatalError("\n_LoaderFileToMem() lseek() failed: %s\n",
- strerror(errno));
-
- if (read(fd, ptr, size) != size)
- FatalError("\n_LoaderFileToMem() read() failed: %s\n",
- strerror(errno));
-
-# if (defined(linux) || defined(__NetBSD__) || defined(__OpenBSD__) \
- || defined(__FreeBSD__)) && defined(__powerpc__)
- /*
- * Keep the instruction cache in sync with changes in the
- * main memory.
- */
- {
- int i;
-
- for (i = 0; i < size; i += 16)
- ppc_flush_icache(ptr + i);
- ppc_flush_icache(ptr + size - 1);
- }
-# endif
-
-# ifdef DEBUGMEM
- ErrorF("=%lx\n", ptr);
-# endif
-
- return (void *)ptr;
-#endif
-}
-
-/*
- * _LoaderFreeFileMem() free the memory in which a file was loaded.
- */
-void
-_LoaderFreeFileMem(void *addr, int size)
-{
-#if defined (UseMMAP) && defined (MmapPageAlign)
- unsigned long pagesize = getpagesize();
- memType i_addr = (memType) addr;
- unsigned long new_size;
-#endif
-#ifdef DEBUGMEM
- ErrorF("_LoaderFreeFileMem(%x,%d)\n", addr, size);
-#endif
-#ifdef UseMMAP
-# if defined (MmapPageAlign)
- i_addr /= pagesize;
- i_addr *= pagesize;
- new_size = (size + pagesize - 1) / pagesize;
- new_size *= pagesize;
- if (((memType) addr - i_addr + size) > new_size)
- new_size += pagesize;
- munmap((void *)i_addr, new_size);
-# else
- munmap((void *)addr, size);
-# endif
-#else
- if (size == 0)
- return;
-
- xf86loaderfree(addr);
-#endif
-
- return;
-}
-
-int
-_LoaderFileRead(int fd, unsigned int offset, void *buf, int size)
-{
- if (lseek(fd, offset + offsetbias, SEEK_SET) < 0)
- FatalError("_LoaderFileRead() lseek() failed: %s\n", strerror(errno));
-
- if (read(fd, buf, size) != size)
- FatalError("_LoaderFileRead() read() failed: %s\n", strerror(errno));
-
- return size;
-}
-
static loaderPtr listHead = (loaderPtr) 0;
static loaderPtr
_LoaderListPush()
{
- loaderPtr item = xf86loadercalloc(1, sizeof(struct _loader));
+ loaderPtr item = calloc(1, sizeof(struct _loader));
item->next = listHead;
listHead = item;
@@ -656,205 +284,35 @@ _LoaderModuleToName(int module)
return 0;
}
-/*
- * _LoaderAddressToSection() will return the name of the file & section
- * that contains the given address.
- */
-int
-_LoaderAddressToSection(const unsigned long address, const char **module,
- const char **section)
-{
- loaderPtr item = listHead;
-
- while (item) {
- if ((*section =
- item->funcs->AddressToSection(item->private, address)) != NULL) {
- *module = _LoaderModuleToName(item->module);
- return 1;
- }
- item = item->next;
- }
-
- return 0;
-}
-
-/*
- * Add a list of symbols to the referenced list.
- */
-
-static void
-AppendSymbol(symlist * list, const char *sym)
-{
- list->list = xnfrealloc(list->list, (list->num + 1) * sizeof(char **));
- /* copy the symbol, since it comes from a module
- that can be unloaded later */
- list->list[list->num] = xnfstrdup(sym);
- list->num++;
-}
-
-static void
-AppendSymList(symlist * list, const char **syms)
-{
- while (*syms) {
- AppendSymbol(list, *syms);
- syms++;
- }
-}
-
-static int
-SymInList(symlist * list, char *sym)
-{
- int i;
-
- for (i = 0; i < list->num; i++)
- if (strcmp(list->list[i], sym) == 0)
- return 1;
-
- return 0;
-}
-
-void
-LoaderVRefSymbols(const char *sym0, va_list args)
-{
- const char *s;
-
- if (sym0 == NULL)
- return;
-
- s = sym0;
- do {
- AppendSymbol(&refList, s);
- s = va_arg(args, const char *);
- } while (s != NULL);
-}
-
+/* These four are just ABI stubs */
_X_EXPORT void
LoaderRefSymbols(const char *sym0, ...)
{
- va_list ap;
-
- va_start(ap, sym0);
- LoaderVRefSymbols(sym0, ap);
- va_end(ap);
-}
-
-void
-LoaderVRefSymLists(const char **list0, va_list args)
-{
- const char **l;
-
- if (list0 == NULL)
- return;
-
- l = list0;
- do {
- AppendSymList(&refList, l);
- l = va_arg(args, const char **);
- } while (l != NULL);
}
_X_EXPORT void
LoaderRefSymLists(const char **list0, ...)
{
- va_list ap;
-
- va_start(ap, list0);
- LoaderVRefSymLists(list0, ap);
- va_end(ap);
-}
-
-void
-LoaderVReqSymLists(const char **list0, va_list args)
-{
- const char **l;
-
- if (list0 == NULL)
- return;
-
- l = list0;
- do {
- AppendSymList(&reqList, l);
- l = va_arg(args, const char **);
- } while (l != NULL);
}
_X_EXPORT void
LoaderReqSymLists(const char **list0, ...)
{
- va_list ap;
-
- va_start(ap, list0);
- LoaderVReqSymLists(list0, ap);
- va_end(ap);
-}
-
-void
-LoaderVReqSymbols(const char *sym0, va_list args)
-{
- const char *s;
-
- if (sym0 == NULL)
- return;
-
- s = sym0;
- do {
- AppendSymbol(&reqList, s);
- s = va_arg(args, const char *);
- } while (s != NULL);
}
_X_EXPORT void
LoaderReqSymbols(const char *sym0, ...)
{
- va_list ap;
-
- va_start(ap, sym0);
- LoaderVReqSymbols(sym0, ap);
- va_end(ap);
-}
-
-/*
- * _LoaderHandleUnresolved() decides what to do with an unresolved
- * symbol. Symbols that are not on the "referenced" or "required" lists
- * get a warning if they are unresolved. Symbols that are on the "required"
- * list generate a fatal error if they are unresolved.
- */
-
-int
-_LoaderHandleUnresolved(char *symbol, char *module)
-{
- int fatalsym = 0;
-
- if (xf86ShowUnresolved && !fatalsym) {
- if (SymInList(&reqList, symbol)) {
- fatalReqSym = 1;
- ErrorF("Required symbol %s from module %s is unresolved!\n",
- symbol, module);
- }
- if (!SymInList(&refList, symbol)) {
- ErrorF("Symbol %s from module %s is unresolved!\n",
- symbol, module);
- }
- }
- return (fatalsym);
}
-/*
- * Relocation list manipulation routines
- */
-
-/*
- * Public Interface to the loader.
- */
+/* Public Interface to the loader. */
int
LoaderOpen(const char *module, const char *cname, int handle,
int *errmaj, int *errmin, int *wasLoaded, int flags)
{
loaderPtr tmp;
- int new_handle, modtype;
- int fd;
- LOOKUP *pLookup;
+ int new_handle;
#if defined(DEBUG)
ErrorF("LoaderOpen(%s)\n", module);
@@ -910,36 +368,15 @@ LoaderOpen(const char *module, const char *cname, int handle,
freeHandles[new_handle] = HANDLE_USED;
refCount[new_handle] = 1;
- if ((fd = open(module, O_RDONLY)) < 0) {
- xf86Msg(X_ERROR, "Unable to open %s\n", module);
- freeHandles[new_handle] = HANDLE_FREE;
- if (errmaj)
- *errmaj = LDR_NOMODOPEN;
- if (errmin)
- *errmin = errno;
- return -1;
- }
-
- if ((modtype = _GetModuleType(fd, 0)) < 0) {
- xf86Msg(X_ERROR, "%s is an unrecognized module type\n", module);
- freeHandles[new_handle] = HANDLE_FREE;
- if (errmaj)
- *errmaj = LDR_UNKTYPE;
- if (errmin)
- *errmin = LDR_UNKTYPE;
- return -1;
- }
-
tmp = _LoaderListPush();
- tmp->name = xf86loadermalloc(strlen(module) + 1);
+ tmp->name = malloc(strlen(module) + 1);
strcpy(tmp->name, module);
- tmp->cname = xf86loadermalloc(strlen(cname) + 1);
+ tmp->cname = malloc(strlen(cname) + 1);
strcpy(tmp->cname, cname);
tmp->handle = new_handle;
tmp->module = moduleseq++;
- tmp->funcs = &funcs[modtype];
- if ((tmp->private = funcs[modtype].LoadModule(tmp, fd, &pLookup, flags)) == NULL) {
+ if ((tmp->private = DLLoadModule(tmp, flags)) == NULL) {
xf86Msg(X_ERROR, "Failed to load %s\n", module);
_LoaderListPop(new_handle);
freeHandles[new_handle] = HANDLE_FREE;
@@ -950,13 +387,6 @@ LoaderOpen(const char *module, const char *cname, int handle,
return -1;
}
- if (tmp->private != (void *)-1L) {
- LoaderAddSymbols(new_handle, tmp->module, pLookup);
- xf86loaderfree(pLookup);
- }
-
- close(fd);
-
return new_handle;
}
@@ -976,73 +406,14 @@ LoaderHandleOpen(int handle)
_X_EXPORT void *
LoaderSymbol(const char *sym)
{
- int i;
- itemPtr item = NULL;
-
- for (i = 0; i < numloaders; i++)
- funcs[i].ResolveSymbols(&funcs[i]);
-
- item = (itemPtr) LoaderHashFind(sym);
-
- if (item)
- return item->address;
- else
- return (DLFindSymbol(sym));
-}
-
-int
-LoaderResolveSymbols(void)
-{
- int i;
-
- for (i = 0; i < numloaders; i++)
- funcs[i].ResolveSymbols(&funcs[i]);
- return 0;
+ return (DLFindSymbol(sym));
}
+/* more stub */
_X_EXPORT int
LoaderCheckUnresolved(int delay_flag)
{
- int i, ret = 0;
- LoaderResolveOptions delayFlag = (LoaderResolveOptions)delay_flag;
-
- LoaderResolveSymbols();
-
- if (delayFlag == LD_RESOLV_NOW) {
- if (check_unresolved_sema > 0)
- check_unresolved_sema--;
- else
- xf86Msg(X_WARNING, "LoaderCheckUnresolved: not enough "
- "MAGIC_DONT_CHECK_UNRESOLVED\n");
- }
-
- if (!check_unresolved_sema || delayFlag == LD_RESOLV_FORCE)
- for (i = 0; i < numloaders; i++)
- if (funcs[i].CheckForUnresolved(&funcs[i]))
- ret = 1;
-
- if (fatalReqSym)
- FatalError("Some required symbols were unresolved\n");
-
- return ret;
-}
-
-void xf86LoaderTrap(void);
-
-void
-xf86LoaderTrap(void)
-{
-}
-
-_X_EXPORT void
-LoaderDefaultFunc(void)
-{
- ErrorF("\n\n\tThis should not happen!\n"
- "\tAn unresolved function was called!\n");
-
- xf86LoaderTrap();
-
- FatalError("\n");
+ return 0;
}
int
@@ -1068,10 +439,10 @@ LoaderUnload(int handle)
/* It is not a member of an archive */
xf86Msg(X_INFO, "Unloading %s\n", tmp->name);
}
- tmp->funcs->LoaderUnload(tmp->private);
- xf86loaderfree(tmp->name);
- xf86loaderfree(tmp->cname);
- xf86loaderfree(tmp);
+ DLUnloadModule(tmp->private);
+ free(tmp->name);
+ free(tmp->cname);
+ free(tmp);
}
freeHandles[handle] = HANDLE_FREE;
@@ -1088,12 +459,6 @@ LoaderDuplicateSymbol(const char *symbol, const int handle)
FatalError("Module load failure\n");
}
-/* GDB Sync function */
-void
-_loader_debug_state()
-{
-}
-
unsigned long LoaderOptions = 0;
void
diff --git a/hw/xfree86/loader/loader.h b/hw/xfree86/loader/loader.h
index 63e6715fa..46d4c3ed3 100644
--- a/hw/xfree86/loader/loader.h
+++ b/hw/xfree86/loader/loader.h
@@ -1,7 +1,4 @@
-/* $XFree86: xc/programs/Xserver/hw/xfree86/loader/loader.h,v 1.28 2003/11/06 18:38:14 tsi Exp $ */
-
/*
- *
* Copyright 1995-1998 by Metro Link, Inc.
*
* Permission to use, copy, modify, distribute, and sell this software and its
@@ -56,134 +53,19 @@
#ifndef _LOADER_H
#define _LOADER_H
-#include "sym.h"
-
#if defined(Lynx) && defined(sun)
#define const /**/
#endif
-#if (defined(__i386__) || defined(__ix86)) && !defined(i386)
-#define i386
-#endif
#include <X11/Xosdefs.h>
#include <X11/Xfuncproto.h>
#include <X11/Xmd.h>
-/* For LOOKUP definition */
-#include "sym.h"
-#define LD_UNKNOWN -1
-#define LD_ELFDLOBJECT 0
-#define LD_PROCESSED_ARCHIVE -1
-/* #define UNINIT_SECTION */
-#define HANDLE_IN_HASH_ENTRY
/* LoadModule proc flags; LD_FLAG_GLOBAL adds symbols to global
* namespace, default is to keep symbols local to module. */
#define LD_FLAG_GLOBAL 1
-#define TestFree(a) if (a) { xfree (a); a = NULL; }
-#define HASHDIV 10
-#define HASHSIZE (1<<HASHDIV)
-
-typedef struct _loader_item *itemPtr;
-typedef struct _loader_item {
- char *name;
- void *address;
- itemPtr next;
- int handle;
- int module;
- itemPtr exports;
-#if defined(__powerpc__)
- /*
- * PowerPC file formats require special routines in some circumstances
- * to assist in the linking process. See the specific loader for
- * more details.
- */
- union {
- unsigned short plt[8]; /* ELF */
- } code;
-#endif
-} itemRec;
-
-/* The following structures provide an interface to GDB (note that GDB
- has copies of the definitions - if you change anything here make
- sure that the changes are also made to GDB */
-
-typedef struct {
- char *name; /* Name of this symbol */
- unsigned int namelen; /* Name of this module */
- void *addr; /* Start address of the .text section */
-} LDRCommon, *LDRCommonPtr;
-
-typedef struct x_LDRModuleRec {
- unsigned int version; /* Version of this struct */
- char *name; /* Name of this module */
- unsigned int namelen; /* Length of name */
- void *text; /* Start address of the .text section */
- void *data; /* Start address of the .data section */
- void *rodata; /* Start address of the .rodata section */
- void *bss; /* Start address of the .bss section */
- LDRCommonPtr commons; /* List of commmon symbols */
- int commonslen; /* Number of common symbols */
- struct x_LDRModuleRec *next; /* Next module record in chain */
-} LDRModuleRec, *LDRModulePtr;
-
-extern char DebuggerPresent;
-extern LDRModulePtr ModList;
-extern LDRCommonPtr ldrCommons;
-extern int nCommons;
-
-/*
- * The loader uses loader specific alloc/calloc/free functions that
- * are mapped to either to the regular Xserver functions, or in a couple
- * of special cases, mapped to the C library functions.
- */
-#if !defined(PowerMAX_OS) && !(defined(linux) && (defined(__alpha__) || defined(__powerpc__) || defined(__ia64__))) && 0
-#define xf86loadermalloc(size) xalloc(size)
-#define xf86loaderrealloc(ptr,size) xrealloc(ptr,size)
-#define xf86loadercalloc(num,size) xcalloc(num,size)
-#define xf86loaderfree(ptr) xfree(ptr)
-#define xf86loaderstrdup(ptr) xstrdup(ptr)
-#else
-/*
- * On Some OSes, xalloc() et al uses mmap to allocate space for large
- * allocation. This has the effect of placing the text section of some
- * modules very far away from the rest which are placed on the heap.
- * Certain relocations are limited in the size of the offsets that can be
- * handled, and this seperation causes these relocation to overflow. This
- * is fixed by just using the C library allocation functions for the loader
- * to ensure that all text sections are located on the heap. OSes that have
- * this problem are:
- * PowerMAX_OS/PPC
- * Linux/Alpha
- * Linux/PPC
- * Linux/IA-64
- */
-#define xf86loadermalloc(size) malloc(size)
-#define xf86loaderrealloc(ptr,size) realloc(ptr,size)
-#define xf86loadercalloc(num,size) calloc(num,size)
-#define xf86loaderfree(ptr) free(ptr)
-#define xf86loaderstrdup(ptr) strdup(ptr)
-#endif
-
typedef struct _loader *loaderPtr;
-/*
- * _loader_funcs hold the entry points for a module format.
- */
-
-typedef void *(*LoadModuleProcPtr) (loaderPtr modrec, int fd, LOOKUP **, int flags);
-typedef void (*ResolveSymbolsProcPtr) (void *);
-typedef int (*CheckForUnresolvedProcPtr) (void *);
-typedef char *(*AddressToSectionProcPtr) (void *, unsigned long);
-typedef void (*LoaderUnloadProcPtr) (void *);
-
-typedef struct _loader_funcs {
- LoadModuleProcPtr LoadModule;
- ResolveSymbolsProcPtr ResolveSymbols;
- CheckForUnresolvedProcPtr CheckForUnresolved;
- AddressToSectionProcPtr AddressToSection;
- LoaderUnloadProcPtr LoaderUnload;
-} loader_funcs;
-
/* Each module loaded has a loaderRec */
typedef struct _loader {
int handle; /* Unique id used to remove symbols from
@@ -192,7 +74,6 @@ typedef struct _loader {
char *name;
char *cname;
void *private; /* format specific data */
- loader_funcs *funcs; /* funcs for operating on this module */
loaderPtr next;
} loaderRec;
@@ -205,54 +86,21 @@ typedef struct {
int extensionVersion;
int fontVersion;
} ModuleVersions;
-extern ModuleVersions LoaderVersionInfo;
+extern const ModuleVersions LoaderVersionInfo;
extern unsigned long LoaderOptions;
/* Internal Functions */
-
-void LoaderAddSymbols(int, int, LOOKUP *);
-void LoaderDefaultFunc(void);
void LoaderDuplicateSymbol(const char *, const int);
-
-#if 0
-void LoaderFixups(void);
-#endif
-void LoaderResolve(void);
-int LoaderResolveSymbols(void);
-int _LoaderHandleUnresolved(char *, char *);
-void LoaderHashAdd(itemPtr);
-itemPtr LoaderHashDelete(const char *);
-itemPtr LoaderHashFind(const char *);
-void LoaderHashTraverse(void *, int (*)(void *, itemPtr));
-void LoaderPrintAddress(const char *);
-void LoaderPrintItem(itemPtr);
-void LoaderPrintSymbol(unsigned long);
-void LoaderDumpSymbols(void);
char *_LoaderModuleToName(int);
-int _LoaderAddressToSection(const unsigned long, const char **,
- const char **);
int LoaderOpen(const char *, const char *, int, int *, int *, int *, int);
int LoaderHandleOpen(int);
-/*
- * File interface functions
- */
-void *_LoaderFileToMem(int fd, unsigned long offset, int size, char *label);
-void _LoaderFreeFileMem(void *addr, int size);
-int _LoaderFileRead(int fd, unsigned int offset, void *addr, int size);
-
-/*
- * object to name lookup routines
- */
+/* object to name lookup routines */
char *_LoaderHandleToName(int handle);
char *_LoaderHandleToCanonicalName(int handle);
-/*
- * Entry points for the different loader types
- */
+/* Loader backends. */
#include "dlloader.h"
-extern void _loader_debug_state(void);
-
#endif /* _LOADER_H */
diff --git a/hw/xfree86/loader/loaderProcs.h b/hw/xfree86/loader/loaderProcs.h
index 19752abe3..ecbd6762d 100644
--- a/hw/xfree86/loader/loaderProcs.h
+++ b/hw/xfree86/loader/loaderProcs.h
@@ -1,7 +1,4 @@
-/* $XFree86: xc/programs/Xserver/hw/xfree86/loader/loaderProcs.h,v 1.21 2003/10/15 16:29:04 dawes Exp $ */
-
/*
- *
* Copyright 1995-1998 by Metro Link, Inc.
*
* Permission to use, copy, modify, distribute, and sell this software and its
@@ -56,6 +53,7 @@
#ifndef _LOADERPROCS_H
#define _LOADERPROCS_H
+#undef IN_LOADER
#define IN_LOADER
#include "xf86Module.h"
#include <X11/fonts/fontmod.h>
@@ -78,9 +76,7 @@ typedef struct module_desc {
const XF86ModuleVersionInfo *VersionInfo;
} ModuleDesc, *ModuleDescPtr;
-/*
- * Extenal API for the loader
- */
+/* External API for the loader */
void LoaderInit(void);
@@ -107,13 +103,6 @@ ModuleDescPtr AddSibling(ModuleDescPtr head, ModuleDescPtr new);
void LoaderSetPath(const char *path);
void LoaderSortExtensions(void);
-void LoaderVReqSymLists(const char **, va_list args);
-void LoaderVReqSymbols(const char *, va_list args);
-void LoaderVRefSymLists(const char **, va_list args);
-void LoaderVRefSymbols(const char *, va_list args);
-
-void LoaderShowStack(void);
-void *LoaderSymbolHandle(const char *, int);
int LoaderUnload(int);
unsigned long LoaderGetModuleVersion(ModuleDescPtr mod);
diff --git a/hw/xfree86/loader/loadext.c b/hw/xfree86/loader/loadext.c
index 787538fd4..b7523289c 100644
--- a/hw/xfree86/loader/loadext.c
+++ b/hw/xfree86/loader/loadext.c
@@ -1,4 +1,3 @@
-/* $XFree86: xc/programs/Xserver/hw/xfree86/loader/loadext.c,v 1.8 2003/10/15 16:29:04 dawes Exp $ */
/*
* Copyright (c) 2000 by The XFree86 Project, Inc.
*
@@ -37,6 +36,10 @@
#include "misc.h"
#include "xf86.h"
+/*
+ * This should be static, but miinitext wants it. FIXME: make extension
+ * initialization not completely terrible.
+ */
ExtensionModule *ExtensionModuleList = NULL;
static int numExtensionModules = 0;
diff --git a/hw/xfree86/loader/loadfont.c b/hw/xfree86/loader/loadfont.c
index ba5b6fb43..94d31d6c1 100644
--- a/hw/xfree86/loader/loadfont.c
+++ b/hw/xfree86/loader/loadfont.c
@@ -1,4 +1,3 @@
-/* $XFree86: xc/programs/Xserver/hw/xfree86/loader/loadfont.c,v 1.4 2003/10/15 16:29:04 dawes Exp $ */
/*
* Copyright (c) 1998 by The XFree86 Project, Inc.
*
@@ -37,6 +36,7 @@
#include "misc.h"
#include "xf86.h"
+/* XXX this should be static, but xorgcfg needs it, nngh */
FontModule *FontModuleList = NULL;
static int numFontModules = 0;
diff --git a/hw/xfree86/loader/loadmod.c b/hw/xfree86/loader/loadmod.c
index 9c2f3a792..12f5dc9cc 100644
--- a/hw/xfree86/loader/loadmod.c
+++ b/hw/xfree86/loader/loadmod.c
@@ -1,7 +1,4 @@
-/* $XFree86: xc/programs/Xserver/hw/xfree86/loader/loadmod.c,v 1.73 2003/11/03 05:11:51 tsi Exp $ */
-
/*
- *
* Copyright 1995-1998 by Metro Link, Inc.
*
* Permission to use, copy, modify, distribute, and sell this software and its
@@ -73,7 +70,7 @@
#include <dirent.h>
#include <limits.h>
-extern int check_unresolved_sema;
+#define TestFree(a) if (a) { xfree (a); a = NULL; }
typedef struct _pattern {
const char *pattern;
@@ -93,7 +90,7 @@ static ModuleDescPtr doLoadModule(const char *, const char *, const char **,
const XF86ModReqInfo *, int *, int *,
int flags);
-ModuleVersions LoaderVersionInfo = {
+const ModuleVersions LoaderVersionInfo = {
XORG_VERSION_CURRENT,
ABI_ANSIC_VERSION,
ABI_VIDEODRV_VERSION,
@@ -102,17 +99,6 @@ ModuleVersions LoaderVersionInfo = {
ABI_FONT_VERSION
};
-#if 0
-void
-LoaderFixups(void)
-{
- /* Need to call LRS here because the frame buffers get loaded last,
- * and the drivers depend on them. */
-
- LoaderResolveSymbols();
-}
-#endif
-
static void
FreeStringList(char **paths)
{
@@ -129,6 +115,17 @@ FreeStringList(char **paths)
static char **defaultPathList = NULL;
+static Bool
+PathIsAbsolute(const char *path)
+{
+#ifdef __UNIXOS2__
+ return (*path == '/' || (strlen(path) > 2 && isalpha(elem[0]) &&
+ elem[1] == ':' && elem[2] == '/'));
+#else
+ return (*path == '/');
+#endif
+}
+
/*
* Convert a comma-separated path into a NULL-terminated array of path
* elements, rejecting any that are not full absolute paths, and appending
@@ -152,13 +149,7 @@ InitPathList(const char *path)
return NULL;
elem = strtok(fullpath, ",");
while (elem) {
- /* Only allow fully specified paths */
-#ifndef __UNIXOS2__
- if (*elem == '/')
-#else
- if (*elem == '/' || (strlen(elem) > 2 && isalpha(elem[0]) &&
- elem[1] == ':' && elem[2] == '/'))
-#endif
+ if (PathIsAbsolute(elem))
{
len = strlen(elem);
addslash = (elem[len - 1] != '/');
@@ -225,15 +216,15 @@ static const char *stdSubdirs[] = {
/*
* Standard set of module name patterns to check, in order of preference
* These are regular expressions (suitable for use with POSIX regex(3)).
+ *
+ * This list assumes that you're an ELFish platform and therefore your
+ * shared libraries are named something.so. If we're ever nuts enough
+ * to port this DDX to, say, Darwin, we'll need to fix this.
*/
static PatternRec stdPatterns[] = {
{"^lib(.*)\\.so$",},
- {"^lib(.*)\\.a$",},
{"(.*)_drv\\.so$",},
- {"(.*)_drv\\.o$",},
{"(.*)\\.so$",},
- {"(.*)\\.a$",},
- {"(.*)\\.o$",},
{NULL,}
};
@@ -403,23 +394,65 @@ FreeSubdirs(const char **subdirs)
}
static char *
-FindModule(const char *module, const char *dir, const char **subdirlist,
+FindModuleInSubdir(const char *dirpath, const char *module)
+{
+ struct dirent *direntry = NULL;
+ DIR *dir = NULL;
+ char *ret = NULL, tmpBuf[PATH_MAX];
+ struct stat stat_buf;
+
+ dir = opendir(dirpath);
+ if (!dir)
+ return NULL;
+
+ while ((direntry = readdir(dir))) {
+ if (direntry->d_name[0] == '.')
+ continue;
+ if ((stat(direntry->d_name, &stat_buf) == 0) && S_ISDIR(stat_buf.st_mode)) {
+ snprintf(tmpBuf, PATH_MAX, "%s/%s", dirpath, direntry->d_name);
+ if ((ret = FindModuleInSubdir(tmpBuf, module)))
+ break;
+ continue;
+ }
+
+ snprintf(tmpBuf, PATH_MAX, "lib%s.so", module);
+ if (strcmp(direntry->d_name, tmpBuf) == 0) {
+ ret = malloc(strlen(tmpBuf) + strlen(dirpath) + 2);
+ sprintf(ret, "%s/%s", dirpath, tmpBuf);
+ break;
+ }
+
+ snprintf(tmpBuf, PATH_MAX, "%s_drv.so", module);
+ if (strcmp(direntry->d_name, tmpBuf) == 0) {
+ ret = malloc(strlen(tmpBuf) + strlen(dirpath) + 2);
+ sprintf(ret, "%s/%s", dirpath, tmpBuf);
+ break;
+ }
+
+ snprintf(tmpBuf, PATH_MAX, "%s.so", module);
+ if (strcmp(direntry->d_name, tmpBuf) == 0) {
+ ret = malloc(strlen(tmpBuf) + strlen(dirpath) + 2);
+ sprintf(ret, "%s/%s", dirpath, tmpBuf);
+ break;
+ }
+ }
+
+ closedir(dir);
+ return ret;
+}
+
+static char *
+FindModule(const char *module, const char *dirname, const char **subdirlist,
PatternPtr patterns)
{
- char buf[PATH_MAX + 1], tmpBuf[PATH_MAX + 1];
+ char buf[PATH_MAX + 1];
char *dirpath = NULL;
char *name = NULL;
- struct stat stat_buf;
int dirlen;
const char **subdirs = NULL;
const char **s;
-#ifndef __EMX__
- dirpath = (char *)dir;
-#else
- dirpath = xalloc(strlen(dir) + 10);
- strcpy(dirpath, (char *)__XOS2RedirRoot(dir));
-#endif
+ dirpath = (char *)dirname;
if (strlen(dirpath) > PATH_MAX)
return NULL;
@@ -432,41 +465,15 @@ FindModule(const char *module, const char *dir, const char **subdirlist,
continue;
strcpy(buf, dirpath);
strcat(buf, *s);
- /*xf86Msg(X_INFO,"OS2DIAG: FindModule: buf=%s\n",buf); */
- if ((stat(buf, &stat_buf) == 0) && S_ISDIR(stat_buf.st_mode)) {
- int i;
-
- if (buf[dirlen - 1] != '/') {
- buf[dirlen++] = '/';
- }
-
- snprintf(tmpBuf, PATH_MAX, "%slib%s.so", buf, module);
- if (stat(tmpBuf, &stat_buf) == 0) {
- name = tmpBuf;
- break;
- }
-
- snprintf(tmpBuf, PATH_MAX, "%s%s_drv.so", buf, module);
- if (stat(tmpBuf, &stat_buf) == 0) {
- name = tmpBuf;
- break;
- }
-
- snprintf(tmpBuf, PATH_MAX, "%s%s.so", buf, module);
- if (stat(tmpBuf, &stat_buf) == 0) {
- name = tmpBuf;
- break;
- }
- }
+ if ((name = FindModuleInSubdir(buf, module)))
+ break;
}
+
FreeSubdirs(subdirs);
- if (dirpath != dir)
+ if (dirpath != dirname)
xfree(dirpath);
- if (name) {
- return xstrdup(name);
- }
- return NULL;
+ return name;
}
_X_EXPORT char **
@@ -730,19 +737,11 @@ CheckVersion(const char *module, XF86ModuleVersionInfo * data,
/* XXX Maybe this should be the other way around? */
if (min > reqmin) {
xf86MsgVerb(X_WARNING, 2, "module ABI minor version (%d) "
- "is new than that available (%d)\n", min, reqmin);
+ "is newer than that available (%d)\n", min, reqmin);
return FALSE;
}
}
}
-#ifdef NOTYET
- if (data->checksum) {
- /* verify the checksum field */
- /* TO BE DONE */
- } else {
- ErrorF("\t*** Checksum field is 0 - this module is untrusted!\n");
- }
-#endif
return TRUE;
}
@@ -756,13 +755,7 @@ LoadSubModule(ModuleDescPtr parent, const char *module,
xf86MsgVerb(X_INFO, 3, "Loading sub module \"%s\"\n", module);
- /* Absolute module paths are not allowed here */
-#ifndef __UNIXOS2__
- if (module[0] == '/')
-#else
- if (isalpha(module[0]) && module[1] == ':' && module[2] == '/')
-#endif
- {
+ if (PathIsAbsolute(module)) {
xf86Msg(X_ERROR,
"LoadSubModule: Absolute module path not permitted: \"%s\"\n",
module);
@@ -792,12 +785,7 @@ LoadSubModuleLocal(ModuleDescPtr parent, const char *module,
xf86MsgVerb(X_INFO, 3, "Loading local sub module \"%s\"\n", module);
- /* Absolute module paths are not allowed here */
-#ifndef __UNIXOS2__
- if (module[0] == '/')
-#else
- if (isalpha(module[0]) && module[1] == ':' && module[2] == '/')
-#endif
+ if (PathIsAbsolute(module))
{
xf86Msg(X_ERROR,
"LoadSubModule: Absolute module path not permitted: \"%s\"\n",
@@ -869,7 +857,6 @@ doLoadModule(const char *module, const char *path, const char **subdirlist,
int noncanonical = 0;
char *m = NULL;
- /*xf86Msg(X_INFO,"OS2DIAG: LoadModule: %s\n",module); */
xf86MsgVerb(X_INFO, 3, "LoadModule: \"%s\"", module);
patterns = InitPatterns(patternlist);
@@ -915,14 +902,8 @@ doLoadModule(const char *module, const char *path, const char **subdirlist,
* if the module name is not a full pathname, we need to
* check the elements in the path
*/
-#ifndef __UNIXOS2__
- if (module[0] == '/')
- found = xstrdup(module);
-#else
- /* accept a drive name here */
- if (isalpha(module[0]) && module[1] == ':' && module[2] == '/')
- found = xstrdup(module);
-#endif
+ if (PathIsAbsolute(module))
+ xstrdup(module);
path_elem = pathlist;
while (!found && *path_elem != NULL) {
found = FindModule(m, *path_elem, subdirlist, patterns);
@@ -1308,7 +1289,7 @@ LoaderErrorMsg(const char *name, const char *modname, int errmaj, int errmin)
msg = "module-specific error";
break;
default:
- msg = "uknown error";
+ msg = "unknown error";
}
if (name)
xf86Msg(type, "%s: Failed to load module \"%s\" (%s, %d)\n",
diff --git a/hw/xfree86/loader/misym.c b/hw/xfree86/loader/misym.c
index dc3cb5a85..46d6a024d 100644
--- a/hw/xfree86/loader/misym.c
+++ b/hw/xfree86/loader/misym.c
@@ -1,6 +1,3 @@
-/* $XdotOrg: xserver/xorg/hw/xfree86/loader/misym.c,v 1.9 2005/10/18 04:02:31 aplattner Exp $ */
-/* $XFree86: xc/programs/Xserver/hw/xfree86/loader/misym.c,v 1.38 2003/10/15 16:29:04 dawes Exp $ */
-
/*
*
* Copyright 1995,96 by Metro Link, Inc.
@@ -23,7 +20,6 @@
* TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
* PERFORMANCE OF THIS SOFTWARE.
*/
-
/*
* Copyright (c) 1997-2003 by The XFree86 Project, Inc.
*
@@ -87,7 +83,7 @@
extern miPointerSpriteFuncRec miSpritePointerFuncs;
-LOOKUP miLookupTab[] = {
+_X_HIDDEN void *miLookupTab[] = {
SYMFUNC(miClearToBackground)
SYMFUNC(miSendGraphicsExpose)
SYMFUNC(miModifyPixmapHeader)
@@ -195,8 +191,6 @@ LOOKUP miLookupTab[] = {
SYMFUNC(miSegregateChildren)
SYMFUNC(miHookInitVisuals)
SYMFUNC(miPointerAbsoluteCursor)
- SYMFUNC(miPointerGetMotionEvents)
- SYMFUNC(miPointerGetMotionBufferSize)
SYMFUNC(miOverlayCopyUnderlay)
SYMFUNC(miOverlaySetTransFunction)
SYMFUNC(miOverlayCollectUnderlayRegions)
@@ -220,6 +214,4 @@ LOOKUP miLookupTab[] = {
#ifdef DAMAGE
SYMFUNC(DamageDamageRegion)
#endif
-
- {0, 0}
};
diff --git a/hw/xfree86/loader/os.c b/hw/xfree86/loader/os.c
index 4274200c3..83fd24787 100644
--- a/hw/xfree86/loader/os.c
+++ b/hw/xfree86/loader/os.c
@@ -1,5 +1,3 @@
-/* $XFree86: xc/programs/Xserver/hw/xfree86/loader/os.c,v 1.4 2003/10/15 16:29:04 dawes Exp $ */
-
/*
* Copyright (c) 1999-2002 by The XFree86 Project, Inc.
*
@@ -35,9 +33,11 @@
/*
* OSNAME is a standard form of the OS name that may be used by the
- * loader and by OS-specific modules.
+ * loader and by OS-specific modules. OSNAME here is different from what's in
+ * dix-config.h
*/
+#undef OSNAME
#if defined(__linux__)
#define OSNAME "linux"
#elif defined(__FreeBSD__)
diff --git a/hw/xfree86/loader/sym.h b/hw/xfree86/loader/sym.h
index 5b34718d6..e708a92f9 100644
--- a/hw/xfree86/loader/sym.h
+++ b/hw/xfree86/loader/sym.h
@@ -1,7 +1,4 @@
-/* $XFree86: xc/programs/Xserver/hw/xfree86/loader/sym.h,v 1.6 2000/10/24 00:06:55 anderson Exp $ */
-
/*
- *
* Copyright 1995,96 by Metro Link, Inc.
*
* Permission to use, copy, modify, distribute, and sell this software and its
@@ -30,21 +27,15 @@
#ifndef _SYM_H
#define _SYM_H
-/*
- * This structure is used to pass in symbol information that is being
- * added to the symbol table.
- */
-
-typedef void (*funcptr) (void);
-
-typedef struct {
- char *symName;
- funcptr offset;
-} LOOKUP;
+extern void *dixLookupTab[];
+extern void *extLookupTab[];
+extern void *fontLookupTab[];
+extern void *miLookupTab[];
+extern void *xfree86LookupTab[];
-#define SYMFUNC( func ) { #func, (funcptr)&func },
-#define SYMFUNCALIAS( name, func ) { name, (funcptr)&func },
-#define SYMVAR( var ) { #var, (funcptr)&var },
-#define SYMVARALIAS( name, var ) { name, (funcptr)&var },
+#define SYMFUNC( func ) &func,
+#define SYMFUNCALIAS( name, func ) &func,
+#define SYMVAR( var ) &var,
+#define SYMVARALIAS( name, var ) &var,
#endif /* _SYM_H */
diff --git a/hw/xfree86/loader/xf86sym.c b/hw/xfree86/loader/xf86sym.c
index 32fe012ad..1cb7dae08 100644
--- a/hw/xfree86/loader/xf86sym.c
+++ b/hw/xfree86/loader/xf86sym.c
@@ -1,7 +1,4 @@
-/* $XFree86: xc/programs/Xserver/hw/xfree86/loader/xf86sym.c,v 1.242 2003/10/27 20:51:16 herrb Exp $ */
-
/*
- *
* Copyright 1995,96 by Metro Link, Inc.
*
* Permission to use, copy, modify, distribute, and sell this software and its
@@ -73,7 +70,6 @@
# include "xf86Xinput.h"
#endif
#include "xf86OSmouse.h"
-#include "xf86OSKbd.h"
#include "xf86xv.h"
#include "xf86xvmc.h"
#include "xf86cmap.h"
@@ -241,7 +237,7 @@ extern unsigned short ldw_brx(volatile unsigned char *, int);
/* XFree86 things */
-LOOKUP xfree86LookupTab[] = {
+_X_HIDDEN void *xfree86LookupTab[] = {
/* Public OSlib functions */
SYMFUNC(xf86ReadBIOS)
@@ -283,7 +279,6 @@ LOOKUP xfree86LookupTab[] = {
SYMFUNC(xf86SerialModemClearBits)
SYMFUNC(xf86LoadKernelModule)
SYMFUNC(xf86OSMouseInit)
- SYMFUNC(xf86OSKbdPreInit)
SYMFUNC(xf86AgpGARTSupported)
SYMFUNC(xf86GetAGPInfo)
SYMFUNC(xf86AcquireGART)
@@ -293,10 +288,8 @@ LOOKUP xfree86LookupTab[] = {
SYMFUNC(xf86BindGARTMemory)
SYMFUNC(xf86UnbindGARTMemory)
SYMFUNC(xf86EnableAGP)
- SYMFUNC(xf86SoundKbdBell)
SYMFUNC(xf86GARTCloseScreen)
#ifdef XINPUT
- /* XISB routines (Merged from Metrolink tree) */
SYMFUNC(XisbNew)
SYMFUNC(XisbFree)
SYMFUNC(XisbRead)
@@ -359,9 +352,6 @@ LOOKUP xfree86LookupTab[] = {
SYMFUNC(xf86RegisterStateChangeNotificationCallback)
SYMFUNC(xf86DeregisterStateChangeNotificationCallback)
SYMFUNC(xf86NoSharedResources)
-#ifdef async
- SYMFUNC(xf86QueueAsyncEvent)
-#endif
/* Shared Accel Accessor Functions */
SYMFUNC(xf86GetLastScrnFlag)
SYMFUNC(xf86SetLastScrnFlag)
@@ -375,6 +365,9 @@ LOOKUP xfree86LookupTab[] = {
SYMFUNC(xf86AllocateEntityPrivateIndex)
SYMFUNC(xf86GetEntityPrivate)
+ /* xf86cvt.c */
+ SYMFUNC(xf86CVTMode)
+
/* xf86Configure.c */
SYMFUNC(xf86AddDeviceToConfigure)
@@ -506,7 +499,7 @@ LOOKUP xfree86LookupTab[] = {
SYMFUNC(xf86AddModuleInfo)
SYMFUNC(xf86DeleteModuleInfo)
-#if defined(__sparc__) && !defined(__OpenBSD__)
+#if (defined(__sparc__) || defined(__sparc)) && !defined(__OpenBSD__)
/* xf86sbusBus.c */
SYMFUNC(xf86MatchSbusInstances)
SYMFUNC(xf86GetSbusInfoForEntity)
@@ -628,6 +621,7 @@ LOOKUP xfree86LookupTab[] = {
SYMFUNC(xf86XVAllocateVideoAdaptorRec)
SYMFUNC(xf86XVFreeVideoAdaptorRec)
SYMFUNC(xf86XVFillKeyHelper)
+ SYMFUNC(xf86XVFillKeyHelperDrawable)
SYMFUNC(xf86XVClipVideoHelper)
SYMFUNC(xf86XVCopyYUV12ToPacked)
SYMFUNC(xf86XVCopyPacked)
@@ -698,22 +692,15 @@ LOOKUP xfree86LookupTab[] = {
/* xf86Xinput.c */
#ifdef XINPUT
SYMFUNC(xf86ProcessCommonOptions)
- SYMFUNC(xf86IsCorePointer)
SYMFUNC(xf86PostMotionEvent)
SYMFUNC(xf86PostProximityEvent)
SYMFUNC(xf86PostButtonEvent)
SYMFUNC(xf86PostKeyEvent)
SYMFUNC(xf86PostKeyboardEvent)
- SYMFUNC(xf86GetMotionEvents)
- SYMFUNC(xf86MotionHistoryAllocate)
SYMFUNC(xf86FirstLocalDevice)
- SYMFUNC(xf86eqEnqueue)
SYMFUNC(xf86ActivateDevice)
-/* The following segment merged from Metrolink tree */
SYMFUNC(xf86XInputSetScreen)
SYMFUNC(xf86ScaleAxis)
- SYMFUNC(xf86XInputSetSendCoreEvents)
-/* End merged segment */
#endif
#ifdef DPMSExtension
SYMFUNC(DPMSGet)
@@ -746,7 +733,6 @@ LOOKUP xfree86LookupTab[] = {
SYMFUNC(xf86ReadPciBIOS)
/* Loader functions */
- SYMFUNC(LoaderDefaultFunc)
SYMFUNC(LoadSubModule)
SYMFUNC(DuplicateModule)
SYMFUNC(LoaderErrorMsg)
@@ -1150,9 +1136,6 @@ LOOKUP xfree86LookupTab[] = {
SYMVAR(xf86DummyVar3)
#endif
-#ifdef async
- SYMVAR(xf86CurrentScreen)
-#endif
/* predefined resource lists from xf86Bus.h */
SYMVAR(resVgaExclusive)
SYMVAR(resVgaShared)
@@ -1178,6 +1161,4 @@ LOOKUP xfree86LookupTab[] = {
/* Pci.c */
SYMVAR(pciNumBuses)
-
- {0, 0}
};
diff --git a/hw/xfree86/os-support/Makefile.am b/hw/xfree86/os-support/Makefile.am
index 789767430..e5a71c00a 100644
--- a/hw/xfree86/os-support/Makefile.am
+++ b/hw/xfree86/os-support/Makefile.am
@@ -1,14 +1,10 @@
-if DRI
-DRI_SUBDIRS=drm
-endif
-
SUBDIRS = bus @XORG_OS_SUBDIR@ misc $(DRI_SUBDIRS)
-DIST_SUBDIRS = bsd bus drm misc linux lynxos solaris sysv sco usl
+DIST_SUBDIRS = bsd bus misc linux lynxos solaris sysv sco usl hurd
sdk_HEADERS = xf86_OSproc.h xf86_OSlib.h xf86_ansic.h xf86_libc.h \
- assyntax.h xf86OSKbd.h xf86OSmouse.h
+ assyntax.h xf86OSmouse.h
-EXTRA_DIST = int10Defines.h xf86OSpriv.h README.OS-lib xf86drm.h
+EXTRA_DIST = int10Defines.h xf86OSpriv.h README.OS-lib
# to get the grouping semantics right, you have to glom these three together
# as one library, otherwise libtool will actively defeat your attempts to
@@ -19,6 +15,8 @@ libxorgos_la_LIBADD = @XORG_OS_SUBDIR@/lib@XORG_OS_SUBDIR@.la \
bus/libbus.la \
misc/libmisc.la
+AM_CFLAGS = $(DIX_CFLAGS)
+
xorgos.c:
touch $@
@@ -27,5 +25,4 @@ DISTCLEANFILES = xorgos.c
# FIXME: These don't seem to be used anywhere
EXTRA_DIST += \
shared/bios_devmem.c \
- shared/inout.S \
- shared/kbd.c
+ shared/inout.S
diff --git a/hw/xfree86/os-support/assyntax.h b/hw/xfree86/os-support/assyntax.h
index 13cc2f3e0..b50313607 100644
--- a/hw/xfree86/os-support/assyntax.h
+++ b/hw/xfree86/os-support/assyntax.h
@@ -1,4 +1,3 @@
-/* $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__
diff --git a/hw/xfree86/os-support/bsd/Makefile.am b/hw/xfree86/os-support/bsd/Makefile.am
index ae89a6bf6..099240467 100644
--- a/hw/xfree86/os-support/bsd/Makefile.am
+++ b/hw/xfree86/os-support/bsd/Makefile.am
@@ -50,24 +50,20 @@ ARCH_SOURCES = \
endif
# FIXME: NetBSD Aperture defines (configure.ac)
-AM_CFLAGS = -DUSESTDRES $(XORG_CFLAGS) @SERVER_DEFINES@ @LOADER_DEFINES@
+AM_CFLAGS = -DUSESTDRES $(XORG_CFLAGS) $(DIX_CFLAGS)
INCLUDES = $(XORG_INCS)
libbsd_la_SOURCES = \
- $(srcdir)/../shared/at_scancode.c \
$(srcdir)/../shared/libc_wrapper.c \
$(srcdir)/../shared/posix_tty.c \
$(srcdir)/../shared/sigio.c \
- $(srcdir)/../shared/std_kbdEv.c \
$(srcdir)/../shared/stdPci.c \
$(srcdir)/../shared/vidmem.c \
bsd_VTsw.c \
bsd_init.c \
- bsd_io.c \
- bsd_kbd.c \
- bsd_KbdMap.c \
bsd_mouse.c \
+ bsd_bell.c \
$(ARCH_SOURCES) \
$(AGP_SOURCES) \
$(APM_SOURCES) \
@@ -80,7 +76,6 @@ libbsd_la_SOURCES = \
EXTRA_DIST = \
bsd_apm.c \
bsd_jstk.c \
- bsd_kbd.h \
bsd_kqueue_apm.c \
bsdResource.c \
memrange.h \
diff --git a/hw/xfree86/os-support/bsd/alpha_video.c b/hw/xfree86/os-support/bsd/alpha_video.c
index 518deaa1e..5052b7862 100644
--- a/hw/xfree86/os-support/bsd/alpha_video.c
+++ b/hw/xfree86/os-support/bsd/alpha_video.c
@@ -1,4 +1,3 @@
-/* $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>
diff --git a/hw/xfree86/os-support/bsd/arm_video.c b/hw/xfree86/os-support/bsd/arm_video.c
index bdc2e0a2b..4a3d5ca52 100644
--- a/hw/xfree86/os-support/bsd/arm_video.c
+++ b/hw/xfree86/os-support/bsd/arm_video.c
@@ -1,4 +1,3 @@
-/* $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>
diff --git a/hw/xfree86/os-support/bsd/bsdResource.c b/hw/xfree86/os-support/bsd/bsdResource.c
index 0ecd6f64f..37749c913 100644
--- a/hw/xfree86/os-support/bsd/bsdResource.c
+++ b/hw/xfree86/os-support/bsd/bsdResource.c
@@ -1,4 +1,3 @@
-/* $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 */
diff --git a/hw/xfree86/os-support/bsd/bsd_KbdMap.c b/hw/xfree86/os-support/bsd/bsd_KbdMap.c
deleted file mode 100644
index d225c1f38..000000000
--- a/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/hw/xfree86/os-support/bsd/bsd_VTsw.c b/hw/xfree86/os-support/bsd/bsd_VTsw.c
index d97782dc6..00591d135 100644
--- a/hw/xfree86/os-support/bsd/bsd_VTsw.c
+++ b/hw/xfree86/os-support/bsd/bsd_VTsw.c
@@ -1,4 +1,3 @@
-/* $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>
diff --git a/hw/xfree86/os-support/bsd/bsd_axp.c b/hw/xfree86/os-support/bsd/bsd_axp.c
index 00b928a5e..51ffef148 100644
--- a/hw/xfree86/os-support/bsd/bsd_axp.c
+++ b/hw/xfree86/os-support/bsd/bsd_axp.c
@@ -1,4 +1,3 @@
-/* $XFree86: bsd_axp.c,v 1.2 2002/10/29 23:19:13 herrb Exp $ */
#ifdef HAVE_XORG_CONFIG_H
#include <xorg-config.h>
diff --git a/hw/xfree86/os-support/bsd/bsd_bell.c b/hw/xfree86/os-support/bsd/bsd_bell.c
new file mode 100644
index 000000000..b7a0c486e
--- /dev/null
+++ b/hw/xfree86/os-support/bsd/bsd_bell.c
@@ -0,0 +1,86 @@
+/*
+ * 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.
+ *
+ */
+
+#ifdef HAVE_XORG_CONFIG_H
+#include <xorg-config.h>
+#endif
+
+#if defined (SYSCONS_SUPPORT) || defined (PCVT_SUPPORT)
+#include <sys/kbio.h>
+#endif
+
+#include <termios.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
+
+_X_EXPORT void
+xf86OSRingBell(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
+ }
+ }
+}
diff --git a/hw/xfree86/os-support/bsd/bsd_ev56.c b/hw/xfree86/os-support/bsd/bsd_ev56.c
index 62952a343..b2141192e 100644
--- a/hw/xfree86/os-support/bsd/bsd_ev56.c
+++ b/hw/xfree86/os-support/bsd/bsd_ev56.c
@@ -1,4 +1,3 @@
-/* $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>
diff --git a/hw/xfree86/os-support/bsd/bsd_init.c b/hw/xfree86/os-support/bsd/bsd_init.c
index 4d883a2be..eb6d85053 100644
--- a/hw/xfree86/os-support/bsd/bsd_init.c
+++ b/hw/xfree86/os-support/bsd/bsd_init.c
@@ -1,4 +1,3 @@
-/* $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>
diff --git a/hw/xfree86/os-support/bsd/bsd_io.c b/hw/xfree86/os-support/bsd/bsd_io.c
deleted file mode 100644
index 6e288d43f..000000000
--- a/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
-
-_X_EXPORT 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/hw/xfree86/os-support/bsd/bsd_jstk.c b/hw/xfree86/os-support/bsd/bsd_jstk.c
index bc99f2914..b5b91b0c7 100644
--- a/hw/xfree86/os-support/bsd/bsd_jstk.c
+++ b/hw/xfree86/os-support/bsd/bsd_jstk.c
@@ -23,7 +23,6 @@
/* 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>
@@ -36,9 +35,7 @@
#include <machine/joystick.h>
#include <fcntl.h>
-#ifdef XFree86LOADER
#include "misc.h"
-#endif
#include "xf86.h"
#define JS_RETURN sizeof(struct joystick)
@@ -174,7 +171,6 @@ xf86JoystickGetState(int fd, int *x, int *y, int *buttons)
return 1;
}
-#ifdef XFree86LOADER
/*
* Entry point for XFree86 Loader
*/
@@ -184,5 +180,4 @@ bsd_jstkModuleInit(pointer *data, INT32 *magic)
*magic = MAGIC_DONE;
*data = NULL;
}
-#endif
/* end of bsd_jstk.c */
diff --git a/hw/xfree86/os-support/bsd/bsd_kbd.c b/hw/xfree86/os-support/bsd/bsd_kbd.c
deleted file mode 100644
index 4b4ba3af3..000000000
--- a/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;
-}
-
-_X_EXPORT 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/hw/xfree86/os-support/bsd/bsd_kbd.h b/hw/xfree86/os-support/bsd/bsd_kbd.h
deleted file mode 100644
index c042d88bf..000000000
--- a/hw/xfree86/os-support/bsd/bsd_kbd.h
+++ /dev/null
@@ -1,5 +0,0 @@
-/* $XFree86: xc/programs/Xserver/hw/xfree86/os-support/bsd/bsd_kbd.h,v 1.1 2002/10/11 01:40:34 dawes Exp $ */
-
-extern void KbdGetMapping(InputInfoPtr pInfo, KeySymsPtr pKeySyms,
- CARD8 *pModMap);
-
diff --git a/hw/xfree86/os-support/bsd/bsd_kqueue_apm.c b/hw/xfree86/os-support/bsd/bsd_kqueue_apm.c
index 5215d54e4..0a0434f2a 100644
--- a/hw/xfree86/os-support/bsd/bsd_kqueue_apm.c
+++ b/hw/xfree86/os-support/bsd/bsd_kqueue_apm.c
@@ -1,4 +1,3 @@
-/* $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.
*
diff --git a/hw/xfree86/os-support/bsd/bsd_mouse.c b/hw/xfree86/os-support/bsd/bsd_mouse.c
index f54c7d7a5..21fe1ff18 100644
--- a/hw/xfree86/os-support/bsd/bsd_mouse.c
+++ b/hw/xfree86/os-support/bsd/bsd_mouse.c
@@ -1,4 +1,3 @@
-/* $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.
diff --git a/hw/xfree86/os-support/bsd/i386_video.c b/hw/xfree86/os-support/bsd/i386_video.c
index 8668396e0..f4ea3f5c9 100644
--- a/hw/xfree86/os-support/bsd/i386_video.c
+++ b/hw/xfree86/os-support/bsd/i386_video.c
@@ -1,4 +1,3 @@
-/* $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>
diff --git a/hw/xfree86/os-support/bsd/libusb/data.c b/hw/xfree86/os-support/bsd/libusb/data.c
index 0ac1a63bc..df5a9d2f6 100644
--- a/hw/xfree86/os-support/bsd/libusb/data.c
+++ b/hw/xfree86/os-support/bsd/libusb/data.c
@@ -25,7 +25,6 @@
* 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>
diff --git a/hw/xfree86/os-support/bsd/libusb/descr.c b/hw/xfree86/os-support/bsd/libusb/descr.c
index 2306d2f58..bbcb55853 100644
--- a/hw/xfree86/os-support/bsd/libusb/descr.c
+++ b/hw/xfree86/os-support/bsd/libusb/descr.c
@@ -25,7 +25,6 @@
* 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>
diff --git a/hw/xfree86/os-support/bsd/libusb/parse.c b/hw/xfree86/os-support/bsd/libusb/parse.c
index feff9779a..c68ccb524 100644
--- a/hw/xfree86/os-support/bsd/libusb/parse.c
+++ b/hw/xfree86/os-support/bsd/libusb/parse.c
@@ -25,7 +25,6 @@
* 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>
diff --git a/hw/xfree86/os-support/bsd/libusb/usage.c b/hw/xfree86/os-support/bsd/libusb/usage.c
index f909ee691..a8a5f650e 100644
--- a/hw/xfree86/os-support/bsd/libusb/usage.c
+++ b/hw/xfree86/os-support/bsd/libusb/usage.c
@@ -25,7 +25,6 @@
* 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>
diff --git a/hw/xfree86/os-support/bsd/libusb/usb.h b/hw/xfree86/os-support/bsd/libusb/usb.h
index 69ef79a62..fedd3e545 100644
--- a/hw/xfree86/os-support/bsd/libusb/usb.h
+++ b/hw/xfree86/os-support/bsd/libusb/usb.h
@@ -25,7 +25,6 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*/
-/* $XFree86: xc/programs/Xserver/hw/xfree86/os-support/bsd/libusb/usb.h,v 1.1 2000/02/11 18:06:51 dawes Exp $ */
#define _DIAGASSERT(e) assert(e)
diff --git a/hw/xfree86/os-support/bsd/libusb/usbvar.h b/hw/xfree86/os-support/bsd/libusb/usbvar.h
index cb0bf33ec..db2cae171 100644
--- a/hw/xfree86/os-support/bsd/libusb/usbvar.h
+++ b/hw/xfree86/os-support/bsd/libusb/usbvar.h
@@ -25,7 +25,6 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*/
-/* $XFree86: xc/programs/Xserver/hw/xfree86/os-support/bsd/libusb/usbvar.h,v 1.1 2000/02/11 18:06:51 dawes Exp $ */
struct report_desc {
unsigned int size;
diff --git a/hw/xfree86/os-support/bsd/ppc_video.c b/hw/xfree86/os-support/bsd/ppc_video.c
index d53f615bb..ae65c8f15 100644
--- a/hw/xfree86/os-support/bsd/ppc_video.c
+++ b/hw/xfree86/os-support/bsd/ppc_video.c
@@ -1,4 +1,3 @@
-/* $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>
diff --git a/hw/xfree86/os-support/bsd/sparc64_video.c b/hw/xfree86/os-support/bsd/sparc64_video.c
index dfd5d9f54..0cb9d4d56 100644
--- a/hw/xfree86/os-support/bsd/sparc64_video.c
+++ b/hw/xfree86/os-support/bsd/sparc64_video.c
@@ -1,4 +1,3 @@
-/* $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>
diff --git a/hw/xfree86/os-support/bus/460gxPCI.c b/hw/xfree86/os-support/bus/460gxPCI.c
index 255dfa12f..44ee97687 100644
--- a/hw/xfree86/os-support/bus/460gxPCI.c
+++ b/hw/xfree86/os-support/bus/460gxPCI.c
@@ -1,4 +1,3 @@
-/* $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.
*
diff --git a/hw/xfree86/os-support/bus/460gxPCI.h b/hw/xfree86/os-support/bus/460gxPCI.h
index 65a19b2f0..2905d4787 100644
--- a/hw/xfree86/os-support/bus/460gxPCI.h
+++ b/hw/xfree86/os-support/bus/460gxPCI.h
@@ -1,4 +1,3 @@
-/* $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.
*
diff --git a/hw/xfree86/os-support/bus/Makefile.am b/hw/xfree86/os-support/bus/Makefile.am
index 308a01b31..fba6e5421 100644
--- a/hw/xfree86/os-support/bus/Makefile.am
+++ b/hw/xfree86/os-support/bus/Makefile.am
@@ -53,6 +53,6 @@ libbus_la_SOURCES = Pci.c Pci.h $(PCI_SOURCES) $(PLATFORM_PCI_SOURCES) \
INCLUDES = $(XORG_INCS)
-AM_CFLAGS = $(XORG_CFLAGS) @SERVER_DEFINES@ @LOADER_DEFINES@
+AM_CFLAGS = $(XORG_CFLAGS) $(DIX_CFLAGS)
EXTRA_DIST = $(sdk_HEADERS)
diff --git a/hw/xfree86/os-support/bus/Pci.c b/hw/xfree86/os-support/bus/Pci.c
index 15006e179..b80371d83 100644
--- a/hw/xfree86/os-support/bus/Pci.c
+++ b/hw/xfree86/os-support/bus/Pci.c
@@ -1,4 +1,3 @@
-/* $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
*
@@ -21,6 +20,8 @@
* pciSetBitsByte() - Write an 8 bit value against a mask
* pciTag() - Return tag for a given PCI bus, device, &
* function
+ * pciDomTag() - Return tag for a given PCI domain, 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
@@ -615,6 +616,12 @@ pciTag(int busnum, int devnum, int funcnum)
return(PCI_MAKE_TAG(busnum,devnum,funcnum));
}
+_X_EXPORT PCITAG
+pciDomTag(int domnum, int busnum, int devnum, int funcnum)
+{
+ return(PCI_MAKE_TAG(PCI_MAKE_BUS(domnum,busnum),devnum,funcnum));
+}
+
#if defined(PCI_MFDEV_SUPPORT)
Bool
diff --git a/hw/xfree86/os-support/bus/Pci.h b/hw/xfree86/os-support/bus/Pci.h
index a91c6b27d..7cc882d36 100644
--- a/hw/xfree86/os-support/bus/Pci.h
+++ b/hw/xfree86/os-support/bus/Pci.h
@@ -1,4 +1,3 @@
-/* $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
*
@@ -120,7 +119,7 @@
/* by xf86scanpci */
#if defined(sun) && defined(SVR4) && defined(sparc)
# define MAX_PCI_BUSES 4096 /* Max number of PCI buses */
-#elif defined(__alpha__) && defined (linux)
+#elif (defined(__alpha__) || defined(__ia64__)) && defined (linux)
# define MAX_PCI_DOMAINS 512
# define PCI_DOM_MASK 0x01fful
# define MAX_PCI_BUSES (MAX_PCI_DOMAINS*256) /* 256 per domain */
@@ -259,7 +258,7 @@
# endif
#elif defined(__ia64__)
# if defined(linux)
-# define ARCH_PCI_INIT linuxPciInit
+# define ARCH_PCI_INIT ia64linuxPciInit
# define INCLUDE_XF86_MAP_PCI_MEM
# elif defined(FreeBSD)
# define ARCH_PCI_INIT freebsdPciInit
diff --git a/hw/xfree86/os-support/bus/Sbus.c b/hw/xfree86/os-support/bus/Sbus.c
index 22d84be17..c864e3385 100644
--- a/hw/xfree86/os-support/bus/Sbus.c
+++ b/hw/xfree86/os-support/bus/Sbus.c
@@ -20,7 +20,6 @@
* IN AN ACTION 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>
diff --git a/hw/xfree86/os-support/bus/altixPCI.c b/hw/xfree86/os-support/bus/altixPCI.c
index 010f6619a..7a72ec6e7 100644
--- a/hw/xfree86/os-support/bus/altixPCI.c
+++ b/hw/xfree86/os-support/bus/altixPCI.c
@@ -41,13 +41,14 @@ static pciDevice *get_dev_on_bus(unsigned int segnum, unsigned int busnum)
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;
+ unsigned int parent_busnum, parent_nodombus, busnum = pdev->busnum;
+ unsigned int nodombus = PCI_BUS_NO_DOMAIN(PCI_BUS_FROM_TAG(pdev->tag));
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);
+ nodombus);
if (readlink(bridge_path, bridge_target, strlen(bridge_target)) < 0) {
perror("failed to dereference bridge link");
@@ -56,7 +57,9 @@ static void get_bridge_info(pciBusInfo_t *bus_info, pciDevice *pdev)
}
sscanf(bridge_target, "../../../devices/pci%04x:%02x", &parent_segnum,
- &parent_busnum);
+ &parent_nodombus);
+
+ parent_busnum = PCI_MAKE_BUS(parent_segnum, parent_nodombus);
/*
* If there's no bridge or the bridge points to the device, use
diff --git a/hw/xfree86/os-support/bus/axpPci.c b/hw/xfree86/os-support/bus/axpPci.c
index 660f008e1..9acc4ab5b 100644
--- a/hw/xfree86/os-support/bus/axpPci.c
+++ b/hw/xfree86/os-support/bus/axpPci.c
@@ -1,4 +1,3 @@
-/* $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
*
diff --git a/hw/xfree86/os-support/bus/e8870PCI.c b/hw/xfree86/os-support/bus/e8870PCI.c
index 65b0c0474..8e0f95ac0 100644
--- a/hw/xfree86/os-support/bus/e8870PCI.c
+++ b/hw/xfree86/os-support/bus/e8870PCI.c
@@ -1,4 +1,3 @@
-/* $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.
*
diff --git a/hw/xfree86/os-support/bus/e8870PCI.h b/hw/xfree86/os-support/bus/e8870PCI.h
index 9efa0ed6d..89726270a 100644
--- a/hw/xfree86/os-support/bus/e8870PCI.h
+++ b/hw/xfree86/os-support/bus/e8870PCI.h
@@ -1,4 +1,3 @@
-/* $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.
*
diff --git a/hw/xfree86/os-support/bus/freebsdPci.c b/hw/xfree86/os-support/bus/freebsdPci.c
index 2868dafa7..61cb405a8 100644
--- a/hw/xfree86/os-support/bus/freebsdPci.c
+++ b/hw/xfree86/os-support/bus/freebsdPci.c
@@ -1,4 +1,3 @@
-/* $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
*
diff --git a/hw/xfree86/os-support/bus/ix86Pci.c b/hw/xfree86/os-support/bus/ix86Pci.c
index b091ec425..fd7bdf6c8 100644
--- a/hw/xfree86/os-support/bus/ix86Pci.c
+++ b/hw/xfree86/os-support/bus/ix86Pci.c
@@ -1,4 +1,3 @@
-/* $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
*
diff --git a/hw/xfree86/os-support/bus/linuxPci.c b/hw/xfree86/os-support/bus/linuxPci.c
index 0714c9cea..03388f1ff 100644
--- a/hw/xfree86/os-support/bus/linuxPci.c
+++ b/hw/xfree86/os-support/bus/linuxPci.c
@@ -1,4 +1,3 @@
-/* $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
*
@@ -55,6 +54,7 @@
#include "xf86Priv.h"
#include "xf86_OSlib.h"
#include "Pci.h"
+#include <dirent.h>
/*
* linux platform specific PCI access functions -- using /proc/bus/pci
@@ -74,6 +74,7 @@ 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 int linuxPciHandleBIOS(PCITAG Tag, int basereg, unsigned char *buf, int len);
+static Bool linuxDomainSupport(void);
static pciBusFuncs_t linuxFuncs0 = {
/* pciReadLong */ linuxPciCfgRead,
@@ -84,7 +85,13 @@ static pciBusFuncs_t linuxFuncs0 = {
/* pciAddrBusToHost */ linuxPpcBusAddrToHostAddr,
#else
/* pciAddrHostToBus */ pciAddrNOOP,
+/* linuxTransAddrBusToHost is busted on sparc64 but the PCI rework tree
+ * makes it all moot, so we kludge it for now */
+#if defined(__sparc__)
+/* pciAddrBusToHost */ pciAddrNOOP,
+#else
/* pciAddrBusToHost */ linuxTransAddrBusToHost,
+#endif /* __sparc64__ */
#endif
/* pciControlBridge */ NULL,
@@ -111,6 +118,8 @@ static pciBusInfo_t linuxPci0 = {
/* from lnx_pci.c. */
extern int lnxPciInit(void);
+static Bool domain_support = FALSE;
+
void
linuxPciInit()
{
@@ -121,6 +130,9 @@ linuxPciInit()
we'll need a fallback for 2.0 kernels here */
return;
}
+#ifndef INCLUDE_XF86_NO_DOMAIN
+ domain_support = linuxDomainSupport();
+#endif
pciNumBuses = 1;
pciBusInfo[0] = &linuxPci0;
pciFindFirstFP = pciGenFindFirst;
@@ -132,13 +144,14 @@ linuxPciInit()
static int
linuxPciOpenFile(PCITAG tag, Bool write)
{
- static int lbus,ldev,lfunc,fd = -1,is_write = 0;
- int bus, dev, func;
+ static int ldomain, lbus,ldev,lfunc,fd = -1,is_write = 0;
+ int domain, bus, dev, func;
char file[64];
struct stat ignored;
static int is26 = -1;
- bus = PCI_BUS_FROM_TAG(tag);
+ domain = PCI_DOM_FROM_TAG(tag);
+ bus = PCI_BUS_NO_DOMAIN(PCI_BUS_FROM_TAG(tag));
dev = PCI_DEV_FROM_TAG(tag);
func = PCI_FUNC_FROM_TAG(tag);
if (is26 == -1) {
@@ -148,30 +161,41 @@ linuxPciOpenFile(PCITAG tag, Bool write)
is26 = 1;
}
- if (fd == -1 || (write && (!is_write))
+ if (!domain_support && domain > 0)
+ return -1;
+
+ if (fd == -1 || (write && (!is_write)) || domain != ldomain
|| bus != lbus || dev != ldev || func != lfunc) {
- if (fd != -1)
+ if (fd != -1) {
close(fd);
+ fd = -1;
+ }
if (is26)
- sprintf(file,"/sys/bus/pci/devices/0000:%02x:%02x.%01x/config",
- bus, dev, func);
+ sprintf(file,"/sys/bus/pci/devices/%04x:%02x:%02x.%01x/config",
+ domain, bus, dev, func);
else {
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);
+ sprintf(file, "/proc/bus/pci/%04x:%02x", domain, bus);
+ if (stat(file, &ignored) < 0) {
+ if (domain == 0)
+ sprintf(file, "/proc/bus/pci/%02x/%02x.%1x",
+ bus, dev, func);
+ else
+ goto bail;
+ } else
+ sprintf(file, "/proc/bus/pci/%04x:%02x/%02x.%1x",
+ domain, 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);
+ sprintf(file, "/proc/bus/pci/%04x:%04x", domain, bus);
+ if (stat(file, &ignored) < 0) {
+ if (domain == 0)
+ sprintf(file, "/proc/bus/pci/%04x/%02x.%1x",
+ bus, dev, func);
+ else
+ goto bail;
+ } else
+ sprintf(file, "/proc/bus/pci/%04x:%04x/%02x.%1x",
+ domain, bus, dev, func);
}
}
if (write) {
@@ -186,7 +210,8 @@ linuxPciOpenFile(PCITAG tag, Bool write)
fd = open(file,O_RDONLY);
is_write = FALSE;
}
-
+ bail:
+ ldomain = domain;
lbus = bus;
ldev = dev;
lfunc = func;
@@ -421,7 +446,7 @@ xf86GetPciHostConfigFromTag(PCITAG Tag)
*
* Please keep this table in ascending vendor/device order.
*/
-static struct pciSizes {
+static const struct pciSizes {
unsigned short vendor, device;
unsigned long io_size, mem_size;
} pciControllerSizes[] = {
@@ -444,9 +469,12 @@ static struct pciSizes {
};
#define NUM_SIZES (sizeof(pciControllerSizes) / sizeof(pciControllerSizes[0]))
-static unsigned long
-linuxGetIOSize(PCITAG Tag)
+static const struct pciSizes *
+linuxGetSizesStruct(PCITAG Tag)
{
+ static const struct pciSizes default_size = {
+ 0, 0, 1U << 16, (unsigned long)(1ULL << 32)
+ };
pciConfigPtr pPCI;
int i;
@@ -454,48 +482,58 @@ linuxGetIOSize(PCITAG Tag)
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;
+ if ((pPCI->pci_vendor == pciControllerSizes[i].vendor)
+ && (pPCI->pci_device == pciControllerSizes[i].device)) {
+ return & pciControllerSizes[i];
+ }
}
}
- return 1U << 16; /* Default to 64K */
+ /* Default to 64KB I/O and 4GB memory. */
+ return & default_size;
}
-static void
+static __inline__ unsigned long
+linuxGetIOSize(PCITAG Tag)
+{
+ const struct pciSizes * const sizes = linuxGetSizesStruct(Tag);
+ return sizes->io_size;
+}
+
+static __inline__ void
linuxGetSizes(PCITAG Tag, unsigned long *io_size, unsigned long *mem_size)
{
- pciConfigPtr pPCI;
- int i;
+ const struct pciSizes * const sizes = linuxGetSizesStruct(Tag);
- *io_size = (1U << 16); /* Default to 64K */
- *mem_size = (unsigned long)(1ULL << 32); /* Default to 4G */
+ *io_size = sizes->io_size;
+ *mem_size = sizes->mem_size;
+}
- /* 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;
+static Bool
+linuxDomainSupport(void)
+{
+ DIR *dir;
+ struct dirent *dirent;
+ char *end;
+
+ if (!(dir = opendir("/proc/bus/pci")))
+ return FALSE;
+ while (1) {
+ if (!(dirent = readdir(dir)))
+ return FALSE;
+ strtol(dirent->d_name,&end,16);
+ /* entry of the form xx or xxxx : x=[0..f] no domain */
+ if (*end == '\0')
+ return FALSE;
+ else if (*end == ':') {
+ /* ':' found immediately after: verify for xxxx:xx or xxxx:xxxx */
+ strtol(end + 1,&end,16);
+ if (*end == '\0')
+ return TRUE;
}
}
-}
+ return FALSE;
+}
_X_EXPORT int
xf86GetPciDomain(PCITAG Tag)
@@ -506,7 +544,7 @@ xf86GetPciDomain(PCITAG Tag)
pPCI = xf86GetPciHostConfigFromTag(Tag);
if (pPCI && (result = PCI_DOM_FROM_BUS(pPCI->busnum)))
- return result;
+ return result + 1;
if (!pPCI || pPCI->fakeDevice)
return 1; /* Domain 0 is reserved */
@@ -532,9 +570,7 @@ linuxMapPci(int ScreenNum, int Flags, PCITAG Tag,
xf86InitVidMem();
- pPCI = xf86GetPciHostConfigFromTag(Tag);
-
- if (((fd = linuxPciOpenFile(pPCI ? pPCI->tag : 0,FALSE)) < 0) ||
+ if (((fd = linuxPciOpenFile(Tag ,FALSE)) < 0) ||
(ioctl(fd, mmap_ioctl, 0) < 0))
break;
@@ -591,7 +627,6 @@ linuxMapPci(int ScreenNum, int Flags, PCITAG Tag,
#define MAX_DOMAINS 257
static pointer DomainMmappedIO[MAX_DOMAINS];
-static pointer DomainMmappedMem[MAX_DOMAINS];
static int
linuxOpenLegacy(PCITAG Tag, char *name)
@@ -648,34 +683,29 @@ xf86MapDomainMemory(int ScreenNum, int Flags, PCITAG Tag,
ADDRESS Base, unsigned long Size)
{
int domain = xf86GetPciDomain(Tag);
- int fd;
+ int fd = -1;
+ pointer addr;
/*
* 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,
+ if (Base >= 1024*1024)
+ addr = linuxMapPci(ScreenNum, Flags, Tag, Base, Size,
PCIIOC_MMAP_IS_MEM);
-
- if ((fd = linuxOpenLegacy(Tag, "legacy_mem")) < 0)
- return linuxMapPci(ScreenNum, Flags, Tag, Base, Size,
+ else if ((fd = linuxOpenLegacy(Tag, "legacy_mem")) < 0)
+ addr = linuxMapPci(ScreenNum, Flags, Tag, Base, Size,
PCIIOC_MMAP_IS_MEM);
+ else
+ addr = mmap(NULL, Size, PROT_READ|PROT_WRITE, MAP_SHARED, fd, Base);
-
- /* 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");
- }
+ if (fd >= 0)
+ close(fd);
+ if (addr == NULL || addr == MAP_FAILED) {
+ perror("mmap failure");
+ FatalError("xf86MapDomainMem(): mmap() failure\n");
}
-
- close(fd);
- return (pointer)((char *)DomainMmappedMem[domain] + Base);
+ return addr;
}
/*
@@ -739,7 +769,7 @@ xf86ReadDomainMemory(PCITAG Tag, ADDRESS Base, int Len, unsigned char *Buf)
struct stat st;
dom = PCI_DOM_FROM_TAG(Tag);
- bus = PCI_BUS_FROM_TAG(Tag);
+ bus = PCI_BUS_NO_DOMAIN(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",
@@ -918,7 +948,7 @@ int linuxPciHandleBIOS(PCITAG Tag, int basereg, unsigned char *buf, int len)
int sofar = 0;
dom = PCI_DOM_FROM_TAG(Tag);
- bus = PCI_BUS_FROM_TAG(Tag);
+ bus = PCI_BUS_NO_DOMAIN(PCI_BUS_FROM_TAG(Tag));
dev = PCI_DEV_FROM_TAG(Tag);
func = PCI_FUNC_FROM_TAG(Tag);
sprintf(file, "/sys/bus/pci/devices/%04x:%02x:%02x.%1x/rom",
@@ -948,3 +978,106 @@ int linuxPciHandleBIOS(PCITAG Tag, int basereg, unsigned char *buf, int len)
}
return 0;
}
+
+#ifdef __ia64__
+static PCITAG ia64linuxPciFindFirst(void);
+static PCITAG ia64linuxPciFindNext(void);
+
+void
+ia64linuxPciInit()
+{
+ struct stat st;
+
+ linuxPciInit();
+
+ if (!stat("/proc/sgi_sn/licenseID", &st) && pciNumBuses) {
+ /* Be a little paranoid here and only use this code for Altix systems.
+ * It is generic, so it should work on any system, but depends on
+ * /proc/bus/pci entries for each domain/bus combination. Altix is
+ * guaranteed a recent enough kernel to have them.
+ */
+ pciFindFirstFP = ia64linuxPciFindFirst;
+ pciFindNextFP = ia64linuxPciFindNext;
+ }
+}
+
+static DIR *busdomdir;
+static DIR *devdir;
+
+static PCITAG
+ia64linuxPciFindFirst(void)
+{
+ busdomdir = opendir("/proc/bus/pci");
+ devdir = NULL;
+
+ return ia64linuxPciFindNext();
+}
+
+static struct dirent *getnextbus(int *domain, int *bus)
+{
+ struct dirent *entry;
+ int dombus;
+
+ for (;;) {
+ entry = readdir(busdomdir);
+ if (entry == NULL) {
+ *domain = 0;
+ *bus = 0;
+ closedir(busdomdir);
+ return NULL;
+ }
+ if (sscanf(entry->d_name, "%04x:%02x", domain, bus) != 2)
+ continue;
+ dombus = PCI_MAKE_BUS(*domain, *bus);
+
+ if (pciNumBuses <= dombus)
+ pciNumBuses = dombus + 1;
+ if (!pciBusInfo[dombus]) {
+ pciBusInfo[dombus] = xnfalloc(sizeof(pciBusInfo_t));
+ *pciBusInfo[dombus] = *pciBusInfo[0];
+ }
+
+ return entry;
+ }
+}
+
+static PCITAG
+ia64linuxPciFindNext(void)
+{
+ struct dirent *entry;
+ char file[40];
+ static int bus, dev, func, domain;
+ PCITAG pciDeviceTag;
+ CARD32 devid;
+
+ for (;;) {
+ if (devdir == NULL) {
+ entry = getnextbus(&domain, &bus);
+ if (!entry)
+ return PCI_NOT_FOUND;
+ snprintf(file, 40, "/proc/bus/pci/%s", entry->d_name);
+ devdir = opendir(file);
+ if (!devdir)
+ return PCI_NOT_FOUND;
+
+ }
+
+ entry = readdir(devdir);
+
+ if (entry == NULL) {
+ closedir(devdir);
+ devdir = NULL;
+ continue;
+ }
+
+ if (sscanf(entry->d_name, "%02x . %01x", &dev, &func) == 2) {
+ pciDeviceTag = PCI_MAKE_TAG(PCI_MAKE_BUS(domain, bus), dev, func);
+ devid = pciReadLong(pciDeviceTag, PCI_ID_REG);
+ if ((devid & pciDevidMask) == pciDevid)
+ /* Yes - Return it. Otherwise, next device */
+ return pciDeviceTag;
+ }
+ }
+}
+#endif
+
diff --git a/hw/xfree86/os-support/bus/netbsdPci.c b/hw/xfree86/os-support/bus/netbsdPci.c
index 7dbbfdec7..ee52c89cc 100644
--- a/hw/xfree86/os-support/bus/netbsdPci.c
+++ b/hw/xfree86/os-support/bus/netbsdPci.c
@@ -1,4 +1,3 @@
-/* $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.
*
diff --git a/hw/xfree86/os-support/bus/ppcPci.c b/hw/xfree86/os-support/bus/ppcPci.c
index 3e5ea3187..49c1a2a39 100644
--- a/hw/xfree86/os-support/bus/ppcPci.c
+++ b/hw/xfree86/os-support/bus/ppcPci.c
@@ -1,4 +1,3 @@
-/* $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
*
diff --git a/hw/xfree86/os-support/bus/sparcPci.c b/hw/xfree86/os-support/bus/sparcPci.c
index 5e0ef5b18..5dd6b9369 100644
--- a/hw/xfree86/os-support/bus/sparcPci.c
+++ b/hw/xfree86/os-support/bus/sparcPci.c
@@ -1,4 +1,3 @@
-/* $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.
*
diff --git a/hw/xfree86/os-support/bus/xf86Pci.h b/hw/xfree86/os-support/bus/xf86Pci.h
index 69254ce8c..c444a0cd1 100644
--- a/hw/xfree86/os-support/bus/xf86Pci.h
+++ b/hw/xfree86/os-support/bus/xf86Pci.h
@@ -1,4 +1,3 @@
-/* $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
*
@@ -767,6 +766,7 @@ 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);
+PCITAG pciDomTag(int domnum, 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,
diff --git a/hw/xfree86/os-support/bus/xf86Sbus.h b/hw/xfree86/os-support/bus/xf86Sbus.h
index 21b05cba4..cff5e808a 100644
--- a/hw/xfree86/os-support/bus/xf86Sbus.h
+++ b/hw/xfree86/os-support/bus/xf86Sbus.h
@@ -20,7 +20,6 @@
* IN AN ACTION 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>
diff --git a/hw/xfree86/os-support/bus/zx1PCI.c b/hw/xfree86/os-support/bus/zx1PCI.c
index b6a33d27c..d83bc9116 100644
--- a/hw/xfree86/os-support/bus/zx1PCI.c
+++ b/hw/xfree86/os-support/bus/zx1PCI.c
@@ -1,4 +1,3 @@
-/* $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.
*
diff --git a/hw/xfree86/os-support/bus/zx1PCI.h b/hw/xfree86/os-support/bus/zx1PCI.h
index 2795b4459..f2b279382 100644
--- a/hw/xfree86/os-support/bus/zx1PCI.h
+++ b/hw/xfree86/os-support/bus/zx1PCI.h
@@ -1,4 +1,3 @@
-/* $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.
*
diff --git a/hw/xfree86/os-support/drm/Makefile.am b/hw/xfree86/os-support/drm/Makefile.am
deleted file mode 100644
index 8270f4304..000000000
--- a/hw/xfree86/os-support/drm/Makefile.am
+++ /dev/null
@@ -1,20 +0,0 @@
-libdrm_la_LTLIBRARIES = libdrm.la
-libdrm_la_CFLAGS = -I$(top_srcdir)/hw/xfree86/common \
- -I$(top_srcdir)/hw/xfree86/dri \
- -I$(top_srcdir)/hw/xfree86/os-support \
- -I$(top_srcdir)/hw/xfree86/os-support/bus \
- -I$(top_srcdir)/hw/xfree86/os-suport/shared/drm/kernel \
- -I$(top_srcdir)/GL/glx \
- -I$(top_srcdir)/GL/include \
- -DHAVE_XORG_CONFIG_H \
- @LIBDRM_CFLAGS@ \
- @SERVER_DEFINES@ \
- @LOADER_DEFINES@
-libdrm_la_LDFLAGS = -module -avoid-version
-libdrm_ladir = $(moduledir)/@XORG_OS@
-libdrm_la_SOURCES = \
- xf86drm.c \
- xf86drmHash.c \
- xf86drmRandom.c \
- xf86drmSL.c \
- drmmodule.c
diff --git a/hw/xfree86/os-support/drm/drmmodule.c b/hw/xfree86/os-support/drm/drmmodule.c
deleted file mode 100644
index 8d2b4bc12..000000000
--- a/hw/xfree86/os-support/drm/drmmodule.c
+++ /dev/null
@@ -1,57 +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>
- */
-
-#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}
-};
-
-_X_EXPORT XF86ModuleData drmModuleData = { &VersRec, drmSetup, NULL };
-
-static pointer
-drmSetup(pointer module, pointer opts, int *errmaj, int *errmin)
-{
- return (void *)1;
-}
diff --git a/hw/xfree86/os-support/drm/xf86drm.c b/hw/xfree86/os-support/drm/xf86drm.c
deleted file mode 100644
index a4663048b..000000000
--- a/hw/xfree86/os-support/drm/xf86drm.c
+++ /dev/null
@@ -1,2326 +0,0 @@
-/**
- * \file xf86drm.c
- * User-level interface to DRM device
- *
- * \author Rickard E. (Rik) Faith <faith@valinux.com>
- * \author Kevin E. Martin <martin@valinux.com>
- */
-
-/*
- * Copyright 1999 Precision Insight, Inc., Cedar Park, Texas.
- * Copyright 2000 VA Linux Systems, Inc., Sunnyvale, California.
- * All Rights Reserved.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the "Software"),
- * to deal in the Software without restriction, including without limitation
- * the rights to use, copy, modify, merge, publish, distribute, sublicense,
- * and/or sell copies of the Software, and to 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/os-support/linux/drm/xf86drm.c,v 1.36 2003/08/24 17:35:35 tsi Exp $ */
-
-#ifdef HAVE_XORG_CONFIG_H
-#include <xorg-config.h>
-#endif
-
-#ifdef XFree86Server
-# include "xf86.h"
-# include "xf86_OSproc.h"
-# define _DRM_MALLOC xalloc
-# define _DRM_FREE xfree
-# ifndef XFree86LOADER
-# include <sys/mman.h>
-# endif
-#else
-# define _DRM_MALLOC malloc
-# define _DRM_FREE free
-#endif
-
-#include "drm.h"
-#include <stdio.h>
-#include <stdlib.h>
-#include <unistd.h>
-#include <string.h>
-#include <ctype.h>
-#include <fcntl.h>
-#include <errno.h>
-#include <signal.h>
-#include <sys/types.h>
-#include <sys/stat.h>
-#define stat_t struct stat
-#include <sys/ioctl.h>
-#include <sys/mman.h>
-#include <sys/time.h>
-#include <stdarg.h>
-
-/* No longer needed with CVS kernel modules on alpha
-#if defined(__alpha__) && defined(__linux__)
-extern unsigned long _bus_base(void);
-#define BUS_BASE _bus_base()
-#endif
-*/
-
-/* Not all systems have MAP_FAILED defined */
-#ifndef MAP_FAILED
-#define MAP_FAILED ((void *)-1)
-#endif
-
-#include "xf86drm.h"
-
-#if defined(__FreeBSD__) || defined(__FreeBSD_kernel__)
-#define DRM_MAJOR 145
-#endif
-
-#ifdef __NetBSD__
-#define DRM_MAJOR 34
-#endif
-
-# ifdef __OpenBSD__
-# define DRM_MAJOR 81
-# endif
-
-#ifndef DRM_MAJOR
-#define DRM_MAJOR 226 /* Linux */
-#endif
-
-#ifndef DRM_MAX_MINOR
-#define DRM_MAX_MINOR 16
-#endif
-
-#ifndef makedev
- /* This definition needs to be changed on
- some systems if dev_t is a structure.
- If there is a header file we can get it
- from, there would be best. */
-#define makedev(x,y) ((dev_t)(((x) << 8) | (y)))
-#endif
-
-#define DRM_MSG_VERBOSITY 3
-
-/**
- * Output a message to stderr.
- *
- * \param format printf() like format string.
- *
- * \internal
- * This function is a wrapper around vfprintf().
- */
-static void
-drmMsg(const char *format, ...)
-{
- va_list ap;
-
-#ifndef XFree86Server
- const char *env;
- if ((env = getenv("LIBGL_DEBUG")) && strstr(env, "verbose"))
-#endif
- {
- va_start(ap, format);
-#ifdef XFree86Server
- xf86VDrvMsgVerb(-1, X_NONE, DRM_MSG_VERBOSITY, format, ap);
-#else
- vfprintf(stderr, format, ap);
-#endif
- va_end(ap);
- }
-}
-
-static void *drmHashTable = NULL; /* Context switch callbacks */
-
-typedef struct drmHashEntry {
- int fd;
- void (*f)(int, void *, void *);
- void *tagTable;
-} drmHashEntry;
-
-void *drmMalloc(int size)
-{
- void *pt;
- if ((pt = _DRM_MALLOC(size))) memset(pt, 0, size);
- return pt;
-}
-
-void drmFree(void *pt)
-{
- if (pt) _DRM_FREE(pt);
-}
-
-/* drmStrdup can't use strdup(3), since it doesn't call _DRM_MALLOC... */
-static char *drmStrdup(const char *s)
-{
- char *retval = NULL;
-
- if (s) {
- retval = _DRM_MALLOC(strlen(s)+1);
- strcpy(retval, s);
- }
- return retval;
-}
-
-
-static unsigned long drmGetKeyFromFd(int fd)
-{
- stat_t st;
-
- st.st_rdev = 0;
- fstat(fd, &st);
- return st.st_rdev;
-}
-
-static drmHashEntry *drmGetEntry(int fd)
-{
- unsigned long key = drmGetKeyFromFd(fd);
- void *value;
- drmHashEntry *entry;
-
- if (!drmHashTable) drmHashTable = drmHashCreate();
-
- if (drmHashLookup(drmHashTable, key, &value)) {
- entry = drmMalloc(sizeof(*entry));
- entry->fd = fd;
- entry->f = NULL;
- entry->tagTable = drmHashCreate();
- drmHashInsert(drmHashTable, key, entry);
- } else {
- entry = value;
- }
- return entry;
-}
-
-/**
- * Compare two busid strings
- *
- * \param first
- * \param second
- *
- * \return 1 if matched.
- *
- * \internal
- * This function compares two bus ID strings. It understands the older
- * PCI:b:d:f format and the newer pci:oooo:bb:dd.f format. In the format, o is
- * domain, b is bus, d is device, f is function.
- */
-static int drmMatchBusID(const char *id1, const char *id2)
-{
- /* First, check if the IDs are exactly the same */
- if (strcasecmp(id1, id2) == 0)
- return 1;
-
- /* Try to match old/new-style PCI bus IDs. */
- if (strncasecmp(id1, "pci", 3) == 0) {
- int o1, b1, d1, f1;
- int o2, b2, d2, f2;
- int ret;
-
- ret = sscanf(id1, "pci:%04x:%02x:%02x.%d", &o1, &b1, &d1, &f1);
- if (ret != 4) {
- o1 = 0;
- ret = sscanf(id1, "PCI:%d:%d:%d", &b1, &d1, &f1);
- if (ret != 3)
- return 0;
- }
-
- ret = sscanf(id2, "pci:%04x:%02x:%02x.%d", &o2, &b2, &d2, &f2);
- if (ret != 4) {
- o2 = 0;
- ret = sscanf(id2, "PCI:%d:%d:%d", &b2, &d2, &f2);
- if (ret != 3)
- return 0;
- }
-
- if ((o1 != o2) || (b1 != b2) || (d1 != d2) || (f1 != f2))
- return 0;
- else
- return 1;
- }
- return 0;
-}
-
-/**
- * Open the DRM device, creating it if necessary.
- *
- * \param dev major and minor numbers of the device.
- * \param minor minor number of the device.
- *
- * \return a file descriptor on success, or a negative value on error.
- *
- * \internal
- * Assembles the device name from \p minor and opens it, creating the device
- * special file node with the major and minor numbers specified by \p dev and
- * parent directory if necessary and was called by root.
- */
-static int drmOpenDevice(long dev, int minor)
-{
- stat_t st;
- char buf[64];
- int fd;
- mode_t devmode = DRM_DEV_MODE;
- int isroot = !geteuid();
-#if defined(XFree86Server)
- uid_t user = DRM_DEV_UID;
- gid_t group = DRM_DEV_GID;
-#endif
-
- sprintf(buf, DRM_DEV_NAME, DRM_DIR_NAME, minor);
- drmMsg("drmOpenDevice: node name is %s\n", buf);
-
-#if defined(XFree86Server)
- devmode = xf86ConfigDRI.mode ? xf86ConfigDRI.mode : DRM_DEV_MODE;
- devmode &= ~(S_IXUSR|S_IXGRP|S_IXOTH);
- group = (xf86ConfigDRI.group >= 0) ? xf86ConfigDRI.group : DRM_DEV_GID;
-#endif
-
- if (stat(DRM_DIR_NAME, &st)) {
- if (!isroot) return DRM_ERR_NOT_ROOT;
- mkdir(DRM_DIR_NAME, DRM_DEV_DIRMODE);
- chown(DRM_DIR_NAME, 0, 0); /* root:root */
- chmod(DRM_DIR_NAME, DRM_DEV_DIRMODE);
- }
-
- /* Check if the device node exists and create it if necessary. */
- if (stat(buf, &st)) {
- if (!isroot) return DRM_ERR_NOT_ROOT;
- remove(buf);
- mknod(buf, S_IFCHR | devmode, dev);
- }
-#if defined(XFree86Server)
- chown(buf, user, group);
- chmod(buf, devmode);
-#endif
-
- fd = open(buf, O_RDWR, 0);
- drmMsg("drmOpenDevice: open result is %d, (%s)\n",
- fd, fd < 0 ? strerror(errno) : "OK");
- if (fd >= 0) return fd;
-
- /* Check if the device node is not what we expect it to be, and recreate it
- * and try again if so.
- */
- if (st.st_rdev != dev) {
- if (!isroot) return DRM_ERR_NOT_ROOT;
- remove(buf);
- mknod(buf, S_IFCHR | devmode, dev);
-#if defined(XFree86Server)
- chown(buf, user, group);
- chmod(buf, devmode);
-#endif
- }
- fd = open(buf, O_RDWR, 0);
- drmMsg("drmOpenDevice: open result is %d, (%s)\n",
- fd, fd < 0 ? strerror(errno) : "OK");
- if (fd >= 0) return fd;
-
- drmMsg("drmOpenDevice: Open failed\n");
- remove(buf);
- return -errno;
-}
-
-
-/**
- * Open the DRM device
- *
- * \param minor device minor number.
- * \param create allow to create the device if set.
- *
- * \return a file descriptor on success, or a negative value on error.
- *
- * \internal
- * Calls drmOpenDevice() if \p create is set, otherwise assembles the device
- * name from \p minor and opens it.
- */
-static int drmOpenMinor(int minor, int create)
-{
- int fd;
- char buf[64];
-
- if (create) return drmOpenDevice(makedev(DRM_MAJOR, minor), minor);
-
- sprintf(buf, DRM_DEV_NAME, DRM_DIR_NAME, minor);
- if ((fd = open(buf, O_RDWR, 0)) >= 0) return fd;
- return -errno;
-}
-
-
-/**
- * Determine whether the DRM kernel driver has been loaded.
- *
- * \return 1 if the DRM driver is loaded, 0 otherwise.
- *
- * \internal
- * Determine the presence of the kernel driver by attempting to open the 0
- * minor and get version information. For backward compatibility with older
- * Linux implementations, /proc/dri is also checked.
- */
-int drmAvailable(void)
-{
- drmVersionPtr version;
- int retval = 0;
- int fd;
-
- if ((fd = drmOpenMinor(0, 1)) < 0) {
-#ifdef __linux__
- /* Try proc for backward Linux compatibility */
- if (!access("/proc/dri/0", R_OK)) return 1;
-#endif
- return 0;
- }
-
- if ((version = drmGetVersion(fd))) {
- retval = 1;
- drmFreeVersion(version);
- }
- close(fd);
-
- return retval;
-}
-
-
-/**
- * Open the device by bus ID.
- *
- * \param busid bus ID.
- *
- * \return a file descriptor on success, or a negative value on error.
- *
- * \internal
- * This function attempts to open every possible minor (up to DRM_MAX_MINOR),
- * comparing the device bus ID with the one supplied.
- *
- * \sa drmOpenMinor() and drmGetBusid().
- */
-static int drmOpenByBusid(const char *busid)
-{
- int i;
- int fd;
- const char *buf;
- drmSetVersion sv;
-
- drmMsg("drmOpenByBusid: Searching for BusID %s\n", busid);
- for (i = 0; i < DRM_MAX_MINOR; i++) {
- fd = drmOpenMinor(i, 1);
- drmMsg("drmOpenByBusid: drmOpenMinor returns %d\n", fd);
- if (fd >= 0) {
- sv.drm_di_major = 1;
- sv.drm_di_minor = 1;
- sv.drm_dd_major = -1; /* Don't care */
- drmSetInterfaceVersion(fd, &sv);
- buf = drmGetBusid(fd);
- drmMsg("drmOpenByBusid: drmGetBusid reports %s\n", buf);
- if (buf && drmMatchBusID(buf, busid)) {
- drmFreeBusid(buf);
- return fd;
- }
- if (buf) drmFreeBusid(buf);
- close(fd);
- }
- }
- return -1;
-}
-
-
-/**
- * Open the device by name.
- *
- * \param name driver name.
- *
- * \return a file descriptor on success, or a negative value on error.
- *
- * \internal
- * This function opens the first minor number that matches the driver name and
- * isn't already in use. If it's in use it then it will already have a bus ID
- * assigned.
- *
- * \sa drmOpenMinor(), drmGetVersion() and drmGetBusid().
- */
-static int drmOpenByName(const char *name)
-{
- int i;
- int fd;
- drmVersionPtr version;
- char * id;
-
- if (!drmAvailable()) {
-#if !defined(XFree86Server)
- return -1;
-#else
- /* try to load the kernel module now */
- if (!xf86LoadKernelModule(name)) {
- ErrorF("[drm] failed to load kernel module \"%s\"\n",
- name);
- return -1;
- }
-#endif
- }
-
- /*
- * Open the first minor number that matches the driver name and isn't
- * already in use. If it's in use it will have a busid assigned already.
- */
- for (i = 0; i < DRM_MAX_MINOR; i++) {
- if ((fd = drmOpenMinor(i, 1)) >= 0) {
- if ((version = drmGetVersion(fd))) {
- if (!strcmp(version->name, name)) {
- drmFreeVersion(version);
- id = drmGetBusid(fd);
- drmMsg("drmGetBusid returned '%s'\n", id ? id : "NULL");
- if (!id || !*id) {
- if (id) {
- drmFreeBusid(id);
- }
- return fd;
- } else {
- drmFreeBusid(id);
- }
- } else {
- drmFreeVersion(version);
- }
- }
- close(fd);
- }
- }
-
-#ifdef __linux__
- /* Backward-compatibility /proc support */
- for (i = 0; i < 8; i++) {
- char proc_name[64], buf[512];
- char *driver, *pt, *devstring;
- int retcode;
-
- sprintf(proc_name, "/proc/dri/%d/name", i);
- if ((fd = open(proc_name, 0, 0)) >= 0) {
- retcode = read(fd, buf, sizeof(buf)-1);
- close(fd);
- if (retcode) {
- buf[retcode-1] = '\0';
- for (driver = pt = buf; *pt && *pt != ' '; ++pt)
- ;
- if (*pt) { /* Device is next */
- *pt = '\0';
- if (!strcmp(driver, name)) { /* Match */
- for (devstring = ++pt; *pt && *pt != ' '; ++pt)
- ;
- if (*pt) { /* Found busid */
- return drmOpenByBusid(++pt);
- } else { /* No busid */
- return drmOpenDevice(strtol(devstring, NULL, 0),i);
- }
- }
- }
- }
- }
- }
-#endif
-
- return -1;
-}
-
-
-/**
- * Open the DRM device.
- *
- * Looks up the specified name and bus ID, and opens the device found. The
- * entry in /dev/dri is created if necessary and if called by root.
- *
- * \param name driver name. Not referenced if bus ID is supplied.
- * \param busid bus ID. Zero if not known.
- *
- * \return a file descriptor on success, or a negative value on error.
- *
- * \internal
- * It calls drmOpenByBusid() if \p busid is specified or drmOpenByName()
- * otherwise.
- */
-int drmOpen(const char *name, const char *busid)
-{
-#ifdef XFree86Server
- if (!drmAvailable() && name != NULL) {
- /* try to load the kernel */
- if (!xf86LoadKernelModule(name)) {
- ErrorF("[drm] failed to load kernel module \"%s\"\n",
- name);
- return -1;
- }
- }
-#endif
-
- if (busid) {
- int fd;
-
- fd = drmOpenByBusid(busid);
- if (fd >= 0)
- return fd;
- }
- if (name)
- return drmOpenByName(name);
- return -1;
-}
-
-
-/**
- * Free the version information returned by drmGetVersion().
- *
- * \param v pointer to the version information.
- *
- * \internal
- * It frees the memory pointed by \p %v as well as all the non-null strings
- * pointers in it.
- */
-void drmFreeVersion(drmVersionPtr v)
-{
- if (!v) return;
- if (v->name) drmFree(v->name);
- if (v->date) drmFree(v->date);
- if (v->desc) drmFree(v->desc);
- drmFree(v);
-}
-
-
-/**
- * Free the non-public version information returned by the kernel.
- *
- * \param v pointer to the version information.
- *
- * \internal
- * Used by drmGetVersion() to free the memory pointed by \p %v as well as all
- * the non-null strings pointers in it.
- */
-static void drmFreeKernelVersion(drm_version_t *v)
-{
- if (!v) return;
- if (v->name) drmFree(v->name);
- if (v->date) drmFree(v->date);
- if (v->desc) drmFree(v->desc);
- drmFree(v);
-}
-
-
-/**
- * Copy version information.
- *
- * \param d destination pointer.
- * \param s source pointer.
- *
- * \internal
- * Used by drmGetVersion() to translate the information returned by the ioctl
- * interface in a private structure into the public structure counterpart.
- */
-static void drmCopyVersion(drmVersionPtr d, const drm_version_t *s)
-{
- d->version_major = s->version_major;
- d->version_minor = s->version_minor;
- d->version_patchlevel = s->version_patchlevel;
- d->name_len = s->name_len;
- d->name = drmStrdup(s->name);
- d->date_len = s->date_len;
- d->date = drmStrdup(s->date);
- d->desc_len = s->desc_len;
- d->desc = drmStrdup(s->desc);
-}
-
-
-/**
- * Query the driver version information.
- *
- * \param fd file descriptor.
- *
- * \return pointer to a drmVersion structure which should be freed with
- * drmFreeVersion().
- *
- * \note Similar information is available via /proc/dri.
- *
- * \internal
- * It gets the version information via successive DRM_IOCTL_VERSION ioctls,
- * first with zeros to get the string lengths, and then the actually strings.
- * It also null-terminates them since they might not be already.
- */
-drmVersionPtr drmGetVersion(int fd)
-{
- drmVersionPtr retval;
- drm_version_t *version = drmMalloc(sizeof(*version));
-
- /* First, get the lengths */
- version->name_len = 0;
- version->name = NULL;
- version->date_len = 0;
- version->date = NULL;
- version->desc_len = 0;
- version->desc = NULL;
-
- if (ioctl(fd, DRM_IOCTL_VERSION, version)) {
- drmFreeKernelVersion(version);
- return NULL;
- }
-
- /* Now, allocate space and get the data */
- if (version->name_len)
- version->name = drmMalloc(version->name_len + 1);
- if (version->date_len)
- version->date = drmMalloc(version->date_len + 1);
- if (version->desc_len)
- version->desc = drmMalloc(version->desc_len + 1);
-
- if (ioctl(fd, DRM_IOCTL_VERSION, version)) {
- drmMsg("DRM_IOCTL_VERSION: %s\n", strerror(errno));
- drmFreeKernelVersion(version);
- return NULL;
- }
-
- /* The results might not be null-terminated
- strings, so terminate them. */
-
- if (version->name_len) version->name[version->name_len] = '\0';
- if (version->date_len) version->date[version->date_len] = '\0';
- if (version->desc_len) version->desc[version->desc_len] = '\0';
-
- /* Now, copy it all back into the
- client-visible data structure... */
- retval = drmMalloc(sizeof(*retval));
- drmCopyVersion(retval, version);
- drmFreeKernelVersion(version);
- return retval;
-}
-
-
-/**
- * Get version information for the DRM user space library.
- *
- * This version number is driver independent.
- *
- * \param fd file descriptor.
- *
- * \return version information.
- *
- * \internal
- * This function allocates and fills a drm_version structure with a hard coded
- * version number.
- */
-drmVersionPtr drmGetLibVersion(int fd)
-{
- drm_version_t *version = drmMalloc(sizeof(*version));
-
- /* Version history:
- * revision 1.0.x = original DRM interface with no drmGetLibVersion
- * entry point and many drm<Device> extensions
- * revision 1.1.x = added drmCommand entry points for device extensions
- * added drmGetLibVersion to identify libdrm.a version
- * revision 1.2.x = added drmSetInterfaceVersion
- * modified drmOpen to handle both busid and name
- */
- version->version_major = 1;
- version->version_minor = 2;
- version->version_patchlevel = 0;
-
- return (drmVersionPtr)version;
-}
-
-
-/**
- * Free the bus ID information.
- *
- * \param busid bus ID information string as given by drmGetBusid().
- *
- * \internal
- * This function is just frees the memory pointed by \p busid.
- */
-void drmFreeBusid(const char *busid)
-{
- drmFree((void *)busid);
-}
-
-
-/**
- * Get the bus ID of the device.
- *
- * \param fd file descriptor.
- *
- * \return bus ID string.
- *
- * \internal
- * This function gets the bus ID via successive DRM_IOCTL_GET_UNIQUE ioctls to
- * get the string length and data, passing the arguments in a drm_unique
- * structure.
- */
-char *drmGetBusid(int fd)
-{
- drm_unique_t u;
-
- u.unique_len = 0;
- u.unique = NULL;
-
- if (ioctl(fd, DRM_IOCTL_GET_UNIQUE, &u)) return NULL;
- u.unique = drmMalloc(u.unique_len + 1);
- if (ioctl(fd, DRM_IOCTL_GET_UNIQUE, &u)) return NULL;
- u.unique[u.unique_len] = '\0';
-
- return u.unique;
-}
-
-
-/**
- * Set the bus ID of the device.
- *
- * \param fd file descriptor.
- * \param busid bus ID string.
- *
- * \return zero on success, negative on failure.
- *
- * \internal
- * This function is a wrapper around the DRM_IOCTL_SET_UNIQUE ioctl, passing
- * the arguments in a drm_unique structure.
- */
-int drmSetBusid(int fd, const char *busid)
-{
- drm_unique_t u;
-
- u.unique = (char *)busid;
- u.unique_len = strlen(busid);
-
- if (ioctl(fd, DRM_IOCTL_SET_UNIQUE, &u)) {
- return -errno;
- }
- return 0;
-}
-
-int drmGetMagic(int fd, drm_magic_t * magic)
-{
- drm_auth_t auth;
-
- *magic = 0;
- if (ioctl(fd, DRM_IOCTL_GET_MAGIC, &auth)) return -errno;
- *magic = auth.magic;
- return 0;
-}
-
-int drmAuthMagic(int fd, drm_magic_t magic)
-{
- drm_auth_t auth;
-
- auth.magic = magic;
- if (ioctl(fd, DRM_IOCTL_AUTH_MAGIC, &auth)) return -errno;
- return 0;
-}
-
-/**
- * Specifies a range of memory that is available for mapping by a
- * non-root process.
- *
- * \param fd file descriptor.
- * \param offset usually the physical address. The actual meaning depends of
- * the \p type parameter. See below.
- * \param size of the memory in bytes.
- * \param type type of the memory to be mapped.
- * \param flags combination of several flags to modify the function actions.
- * \param handle will be set to a value that may be used as the offset
- * parameter for mmap().
- *
- * \return zero on success or a negative value on error.
- *
- * \par Mapping the frame buffer
- * For the frame buffer
- * - \p offset will be the physical address of the start of the frame buffer,
- * - \p size will be the size of the frame buffer in bytes, and
- * - \p type will be DRM_FRAME_BUFFER.
- *
- * \par
- * The area mapped will be uncached. If MTRR support is available in the
- * kernel, the frame buffer area will be set to write combining.
- *
- * \par Mapping the MMIO register area
- * For the MMIO register area,
- * - \p offset will be the physical address of the start of the register area,
- * - \p size will be the size of the register area bytes, and
- * - \p type will be DRM_REGISTERS.
- * \par
- * The area mapped will be uncached.
- *
- * \par Mapping the SAREA
- * For the SAREA,
- * - \p offset will be ignored and should be set to zero,
- * - \p size will be the desired size of the SAREA in bytes,
- * - \p type will be DRM_SHM.
- *
- * \par
- * A shared memory area of the requested size will be created and locked in
- * kernel memory. This area may be mapped into client-space by using the handle
- * returned.
- *
- * \note May only be called by root.
- *
- * \internal
- * This function is a wrapper around the DRM_IOCTL_ADD_MAP ioctl, passing
- * the arguments in a drm_map structure.
- */
-int drmAddMap(int fd,
- drm_handle_t offset,
- drmSize size,
- drmMapType type,
- drmMapFlags flags,
- drm_handle_t * handle)
-{
- drm_map_t map;
-
- map.offset = offset;
-/* No longer needed with CVS kernel modules on alpha
-#ifdef __alpha__
- if (type != DRM_SHM)
- map.offset += BUS_BASE;
-#endif
-*/
- map.size = size;
- map.handle = 0;
- map.type = type;
- map.flags = flags;
- if (ioctl(fd, DRM_IOCTL_ADD_MAP, &map)) return -errno;
- if (handle) *handle = (drm_handle_t)(unsigned long)map.handle;
- return 0;
-}
-
-int drmRmMap(int fd, drm_handle_t handle)
-{
- drm_map_t map;
-
- map.handle = (void *)(unsigned long)handle;
-
- if(ioctl(fd, DRM_IOCTL_RM_MAP, &map)) return -errno;
- return 0;
-}
-
-/**
- * Make buffers available for DMA transfers.
- *
- * \param fd file descriptor.
- * \param count number of buffers.
- * \param size size of each buffer.
- * \param flags buffer allocation flags.
- * \param agp_offset offset in the AGP aperture
- *
- * \return number of buffers allocated, negative on error.
- *
- * \internal
- * This function is a wrapper around DRM_IOCTL_ADD_BUFS ioctl.
- *
- * \sa drm_buf_desc.
- */
-int drmAddBufs(int fd, int count, int size, drmBufDescFlags flags,
- int agp_offset)
-{
- drm_buf_desc_t request;
-
- request.count = count;
- request.size = size;
- request.low_mark = 0;
- request.high_mark = 0;
- request.flags = flags;
- request.agp_start = agp_offset;
-
- if (ioctl(fd, DRM_IOCTL_ADD_BUFS, &request)) return -errno;
- return request.count;
-}
-
-int drmMarkBufs(int fd, double low, double high)
-{
- drm_buf_info_t info;
- int i;
-
- info.count = 0;
- info.list = NULL;
-
- if (ioctl(fd, DRM_IOCTL_INFO_BUFS, &info)) return -EINVAL;
-
- if (!info.count) return -EINVAL;
-
- if (!(info.list = drmMalloc(info.count * sizeof(*info.list))))
- return -ENOMEM;
-
- if (ioctl(fd, DRM_IOCTL_INFO_BUFS, &info)) {
- int retval = -errno;
- drmFree(info.list);
- return retval;
- }
-
- for (i = 0; i < info.count; i++) {
- info.list[i].low_mark = low * info.list[i].count;
- info.list[i].high_mark = high * info.list[i].count;
- if (ioctl(fd, DRM_IOCTL_MARK_BUFS, &info.list[i])) {
- int retval = -errno;
- drmFree(info.list);
- return retval;
- }
- }
- drmFree(info.list);
-
- return 0;
-}
-
-/**
- * Free buffers.
- *
- * \param fd file descriptor.
- * \param count number of buffers to free.
- * \param list list of buffers to be freed.
- *
- * \return zero on success, or a negative value on failure.
- *
- * \note This function is primarily used for debugging.
- *
- * \internal
- * This function is a wrapper around the DRM_IOCTL_FREE_BUFS ioctl, passing
- * the arguments in a drm_buf_free structure.
- */
-int drmFreeBufs(int fd, int count, int *list)
-{
- drm_buf_free_t request;
-
- request.count = count;
- request.list = list;
- if (ioctl(fd, DRM_IOCTL_FREE_BUFS, &request)) return -errno;
- return 0;
-}
-
-
-/**
- * Close the device.
- *
- * \param fd file descriptor.
- *
- * \internal
- * This function closes the file descriptor.
- */
-int drmClose(int fd)
-{
- unsigned long key = drmGetKeyFromFd(fd);
- drmHashEntry *entry = drmGetEntry(fd);
-
- drmHashDestroy(entry->tagTable);
- entry->fd = 0;
- entry->f = NULL;
- entry->tagTable = NULL;
-
- drmHashDelete(drmHashTable, key);
- drmFree(entry);
-
- return close(fd);
-}
-
-
-/**
- * Map a region of memory.
- *
- * \param fd file descriptor.
- * \param handle handle returned by drmAddMap().
- * \param size size in bytes. Must match the size used by drmAddMap().
- * \param address will contain the user-space virtual address where the mapping
- * begins.
- *
- * \return zero on success, or a negative value on failure.
- *
- * \internal
- * This function is a wrapper for mmap().
- */
-int drmMap(int fd,
- drm_handle_t handle,
- drmSize size,
- drmAddressPtr address)
-{
- static unsigned long pagesize_mask = 0;
-
- if (fd < 0) return -EINVAL;
-
- if (!pagesize_mask)
- pagesize_mask = getpagesize() - 1;
-
- size = (size + pagesize_mask) & ~pagesize_mask;
-
- *address = mmap(0, size, PROT_READ|PROT_WRITE, MAP_SHARED, fd, handle);
- if (*address == MAP_FAILED) return -errno;
- return 0;
-}
-
-
-/**
- * Unmap mappings obtained with drmMap().
- *
- * \param address address as given by drmMap().
- * \param size size in bytes. Must match the size used by drmMap().
- *
- * \return zero on success, or a negative value on failure.
- *
- * \internal
- * This function is a wrapper for unmap().
- */
-int drmUnmap(drmAddress address, drmSize size)
-{
- return munmap(address, size);
-}
-
-drmBufInfoPtr drmGetBufInfo(int fd)
-{
- drm_buf_info_t info;
- drmBufInfoPtr retval;
- int i;
-
- info.count = 0;
- info.list = NULL;
-
- if (ioctl(fd, DRM_IOCTL_INFO_BUFS, &info)) return NULL;
-
- if (info.count) {
- if (!(info.list = drmMalloc(info.count * sizeof(*info.list))))
- return NULL;
-
- if (ioctl(fd, DRM_IOCTL_INFO_BUFS, &info)) {
- drmFree(info.list);
- return NULL;
- }
- /* Now, copy it all back into the
- client-visible data structure... */
- retval = drmMalloc(sizeof(*retval));
- retval->count = info.count;
- retval->list = drmMalloc(info.count * sizeof(*retval->list));
- for (i = 0; i < info.count; i++) {
- retval->list[i].count = info.list[i].count;
- retval->list[i].size = info.list[i].size;
- retval->list[i].low_mark = info.list[i].low_mark;
- retval->list[i].high_mark = info.list[i].high_mark;
- }
- drmFree(info.list);
- return retval;
- }
- return NULL;
-}
-
-/**
- * Map all DMA buffers into client-virtual space.
- *
- * \param fd file descriptor.
- *
- * \return a pointer to a ::drmBufMap structure.
- *
- * \note The client may not use these buffers until obtaining buffer indices
- * with drmDMA().
- *
- * \internal
- * This function calls the DRM_IOCTL_MAP_BUFS ioctl and copies the returned
- * information about the buffers in a drm_buf_map structure into the
- * client-visible data structures.
- */
-drmBufMapPtr drmMapBufs(int fd)
-{
- drm_buf_map_t bufs;
- drmBufMapPtr retval;
- int i;
-
- bufs.count = 0;
- bufs.list = NULL;
- bufs.virtual = NULL;
- if (ioctl(fd, DRM_IOCTL_MAP_BUFS, &bufs)) return NULL;
-
- if (!bufs.count) return NULL;
-
- if (!(bufs.list = drmMalloc(bufs.count * sizeof(*bufs.list))))
- return NULL;
-
- if (ioctl(fd, DRM_IOCTL_MAP_BUFS, &bufs)) {
- drmFree(bufs.list);
- return NULL;
- }
- /* Now, copy it all back into the
- client-visible data structure... */
- retval = drmMalloc(sizeof(*retval));
- retval->count = bufs.count;
- retval->list = drmMalloc(bufs.count * sizeof(*retval->list));
- for (i = 0; i < bufs.count; i++) {
- retval->list[i].idx = bufs.list[i].idx;
- retval->list[i].total = bufs.list[i].total;
- retval->list[i].used = 0;
- retval->list[i].address = bufs.list[i].address;
- }
-
- drmFree(bufs.list);
-
- return retval;
-}
-
-
-/**
- * Unmap buffers allocated with drmMapBufs().
- *
- * \return zero on success, or negative value on failure.
- *
- * \internal
- * Calls munmap() for every buffer stored in \p bufs and frees the
- * memory allocated by drmMapBufs().
- */
-int drmUnmapBufs(drmBufMapPtr bufs)
-{
- int i;
-
- for (i = 0; i < bufs->count; i++) {
- munmap(bufs->list[i].address, bufs->list[i].total);
- }
-
- drmFree(bufs->list);
- drmFree(bufs);
-
- return 0;
-}
-
-
-#define DRM_DMA_RETRY 16
-
-/**
- * Reserve DMA buffers.
- *
- * \param fd file descriptor.
- * \param request
- *
- * \return zero on success, or a negative value on failure.
- *
- * \internal
- * Assemble the arguments into a drm_dma structure and keeps issuing the
- * DRM_IOCTL_DMA ioctl until success or until maximum number of retries.
- */
-int drmDMA(int fd, drmDMAReqPtr request)
-{
- drm_dma_t dma;
- int ret, i = 0;
-
- /* Copy to hidden structure */
- dma.context = request->context;
- dma.send_count = request->send_count;
- dma.send_indices = request->send_list;
- dma.send_sizes = request->send_sizes;
- dma.flags = request->flags;
- dma.request_count = request->request_count;
- dma.request_size = request->request_size;
- dma.request_indices = request->request_list;
- dma.request_sizes = request->request_sizes;
- dma.granted_count = 0;
-
- do {
- ret = ioctl( fd, DRM_IOCTL_DMA, &dma );
- } while ( ret && errno == EAGAIN && i++ < DRM_DMA_RETRY );
-
- if ( ret == 0 ) {
- request->granted_count = dma.granted_count;
- return 0;
- } else {
- return -errno;
- }
-}
-
-
-/**
- * Obtain heavyweight hardware lock.
- *
- * \param fd file descriptor.
- * \param context context.
- * \param flags flags that determine the sate of the hardware when the function
- * returns.
- *
- * \return always zero.
- *
- * \internal
- * This function translates the arguments into a drm_lock structure and issue
- * the DRM_IOCTL_LOCK ioctl until the lock is successfully acquired.
- */
-int drmGetLock(int fd, drm_context_t context, drmLockFlags flags)
-{
- drm_lock_t lock;
-
- lock.context = context;
- lock.flags = 0;
- if (flags & DRM_LOCK_READY) lock.flags |= _DRM_LOCK_READY;
- if (flags & DRM_LOCK_QUIESCENT) lock.flags |= _DRM_LOCK_QUIESCENT;
- if (flags & DRM_LOCK_FLUSH) lock.flags |= _DRM_LOCK_FLUSH;
- if (flags & DRM_LOCK_FLUSH_ALL) lock.flags |= _DRM_LOCK_FLUSH_ALL;
- if (flags & DRM_HALT_ALL_QUEUES) lock.flags |= _DRM_HALT_ALL_QUEUES;
- if (flags & DRM_HALT_CUR_QUEUES) lock.flags |= _DRM_HALT_CUR_QUEUES;
-
- while (ioctl(fd, DRM_IOCTL_LOCK, &lock))
- ;
- return 0;
-}
-
-/**
- * Release the hardware lock.
- *
- * \param fd file descriptor.
- * \param context context.
- *
- * \return zero on success, or a negative value on failure.
- *
- * \internal
- * This function is a wrapper around the DRM_IOCTL_UNLOCK ioctl, passing the
- * argument in a drm_lock structure.
- */
-int drmUnlock(int fd, drm_context_t context)
-{
- drm_lock_t lock;
-
- lock.context = context;
- lock.flags = 0;
- return ioctl(fd, DRM_IOCTL_UNLOCK, &lock);
-}
-
-drm_context_t * drmGetReservedContextList(int fd, int *count)
-{
- drm_ctx_res_t res;
- drm_ctx_t *list;
- drm_context_t * retval;
- int i;
-
- res.count = 0;
- res.contexts = NULL;
- if (ioctl(fd, DRM_IOCTL_RES_CTX, &res)) return NULL;
-
- if (!res.count) return NULL;
-
- if (!(list = drmMalloc(res.count * sizeof(*list)))) return NULL;
- if (!(retval = drmMalloc(res.count * sizeof(*retval)))) {
- drmFree(list);
- return NULL;
- }
-
- res.contexts = list;
- if (ioctl(fd, DRM_IOCTL_RES_CTX, &res)) return NULL;
-
- for (i = 0; i < res.count; i++) retval[i] = list[i].handle;
- drmFree(list);
-
- *count = res.count;
- return retval;
-}
-
-void drmFreeReservedContextList(drm_context_t * pt)
-{
- drmFree(pt);
-}
-
-/**
- * Create context.
- *
- * Used by the X server during GLXContext initialization. This causes
- * per-context kernel-level resources to be allocated.
- *
- * \param fd file descriptor.
- * \param handle is set on success. To be used by the client when requesting DMA
- * dispatch with drmDMA().
- *
- * \return zero on success, or a negative value on failure.
- *
- * \note May only be called by root.
- *
- * \internal
- * This function is a wrapper around the DRM_IOCTL_ADD_CTX ioctl, passing the
- * argument in a drm_ctx structure.
- */
-int drmCreateContext(int fd, drm_context_t * handle)
-{
- drm_ctx_t ctx;
-
- ctx.flags = 0; /* Modified with functions below */
- if (ioctl(fd, DRM_IOCTL_ADD_CTX, &ctx)) return -errno;
- *handle = ctx.handle;
- return 0;
-}
-
-int drmSwitchToContext(int fd, drm_context_t context)
-{
- drm_ctx_t ctx;
-
- ctx.handle = context;
- if (ioctl(fd, DRM_IOCTL_SWITCH_CTX, &ctx)) return -errno;
- return 0;
-}
-
-int drmSetContextFlags(int fd, drm_context_t context, drm_context_tFlags flags)
-{
- drm_ctx_t ctx;
-
- /* Context preserving means that no context
- switched are done between DMA buffers
- from one context and the next. This is
- suitable for use in the X server (which
- promises to maintain hardware context,
- or in the client-side library when
- buffers are swapped on behalf of two
- threads. */
- ctx.handle = context;
- ctx.flags = 0;
- if (flags & DRM_CONTEXT_PRESERVED) ctx.flags |= _DRM_CONTEXT_PRESERVED;
- if (flags & DRM_CONTEXT_2DONLY) ctx.flags |= _DRM_CONTEXT_2DONLY;
- if (ioctl(fd, DRM_IOCTL_MOD_CTX, &ctx)) return -errno;
- return 0;
-}
-
-int drmGetContextFlags(int fd, drm_context_t context, drm_context_tFlagsPtr flags)
-{
- drm_ctx_t ctx;
-
- ctx.handle = context;
- if (ioctl(fd, DRM_IOCTL_GET_CTX, &ctx)) return -errno;
- *flags = 0;
- if (ctx.flags & _DRM_CONTEXT_PRESERVED) *flags |= DRM_CONTEXT_PRESERVED;
- if (ctx.flags & _DRM_CONTEXT_2DONLY) *flags |= DRM_CONTEXT_2DONLY;
- return 0;
-}
-
-/**
- * Destroy context.
- *
- * Free any kernel-level resources allocated with drmCreateContext() associated
- * with the context.
- *
- * \param fd file descriptor.
- * \param handle handle given by drmCreateContext().
- *
- * \return zero on success, or a negative value on failure.
- *
- * \note May only be called by root.
- *
- * \internal
- * This function is a wrapper around the DRM_IOCTL_RM_CTX ioctl, passing the
- * argument in a drm_ctx structure.
- */
-int drmDestroyContext(int fd, drm_context_t handle)
-{
- drm_ctx_t ctx;
- ctx.handle = handle;
- if (ioctl(fd, DRM_IOCTL_RM_CTX, &ctx)) return -errno;
- return 0;
-}
-
-int drmCreateDrawable(int fd, drm_drawable_t * handle)
-{
- drm_draw_t draw;
- if (ioctl(fd, DRM_IOCTL_ADD_DRAW, &draw)) return -errno;
- *handle = draw.handle;
- return 0;
-}
-
-int drmDestroyDrawable(int fd, drm_drawable_t handle)
-{
- drm_draw_t draw;
- draw.handle = handle;
- if (ioctl(fd, DRM_IOCTL_RM_DRAW, &draw)) return -errno;
- return 0;
-}
-
-/**
- * Acquire the AGP device.
- *
- * Must be called before any of the other AGP related calls.
- *
- * \param fd file descriptor.
- *
- * \return zero on success, or a negative value on failure.
- *
- * \internal
- * This function is a wrapper around the DRM_IOCTL_AGP_ACQUIRE ioctl.
- */
-int drmAgpAcquire(int fd)
-{
- if (ioctl(fd, DRM_IOCTL_AGP_ACQUIRE, NULL)) return -errno;
- return 0;
-}
-
-
-/**
- * Release the AGP device.
- *
- * \param fd file descriptor.
- *
- * \return zero on success, or a negative value on failure.
- *
- * \internal
- * This function is a wrapper around the DRM_IOCTL_AGP_RELEASE ioctl.
- */
-int drmAgpRelease(int fd)
-{
- if (ioctl(fd, DRM_IOCTL_AGP_RELEASE, NULL)) return -errno;
- return 0;
-}
-
-
-/**
- * Set the AGP mode.
- *
- * \param fd file descriptor.
- * \param mode AGP mode.
- *
- * \return zero on success, or a negative value on failure.
- *
- * \internal
- * This function is a wrapper around the DRM_IOCTL_AGP_ENABLE ioctl, passing the
- * argument in a drm_agp_mode structure.
- */
-int drmAgpEnable(int fd, unsigned long mode)
-{
- drm_agp_mode_t m;
-
- m.mode = mode;
- if (ioctl(fd, DRM_IOCTL_AGP_ENABLE, &m)) return -errno;
- return 0;
-}
-
-
-/**
- * Allocate a chunk of AGP memory.
- *
- * \param fd file descriptor.
- * \param size requested memory size in bytes. Will be rounded to page boundary.
- * \param type type of memory to allocate.
- * \param address if not zero, will be set to the physical address of the
- * allocated memory.
- * \param handle on success will be set to a handle of the allocated memory.
- *
- * \return zero on success, or a negative value on failure.
- *
- * \internal
- * This function is a wrapper around the DRM_IOCTL_AGP_ALLOC ioctl, passing the
- * arguments in a drm_agp_buffer structure.
- */
-int drmAgpAlloc(int fd, unsigned long size, unsigned long type,
- unsigned long *address, drm_handle_t *handle)
-{
- drm_agp_buffer_t b;
-
- *handle = DRM_AGP_NO_HANDLE;
- b.size = size;
- b.handle = 0;
- b.type = type;
- if (ioctl(fd, DRM_IOCTL_AGP_ALLOC, &b)) return -errno;
- if (address != 0UL) *address = b.physical;
- *handle = b.handle;
- return 0;
-}
-
-
-/**
- * Free a chunk of AGP memory.
- *
- * \param fd file descriptor.
- * \param handle handle to the allocated memory, as given by drmAgpAllocate().
- *
- * \return zero on success, or a negative value on failure.
- *
- * \internal
- * This function is a wrapper around the DRM_IOCTL_AGP_FREE ioctl, passing the
- * argument in a drm_agp_buffer structure.
- */
-int drmAgpFree(int fd, drm_handle_t handle)
-{
- drm_agp_buffer_t b;
-
- b.size = 0;
- b.handle = handle;
- if (ioctl(fd, DRM_IOCTL_AGP_FREE, &b)) return -errno;
- return 0;
-}
-
-
-/**
- * Bind a chunk of AGP memory.
- *
- * \param fd file descriptor.
- * \param handle handle to the allocated memory, as given by drmAgpAllocate().
- * \param offset offset in bytes. It will round to page boundary.
- *
- * \return zero on success, or a negative value on failure.
- *
- * \internal
- * This function is a wrapper around the DRM_IOCTL_AGP_BIND ioctl, passing the
- * argument in a drm_agp_binding structure.
- */
-int drmAgpBind(int fd, drm_handle_t handle, unsigned long offset)
-{
- drm_agp_binding_t b;
-
- b.handle = handle;
- b.offset = offset;
- if (ioctl(fd, DRM_IOCTL_AGP_BIND, &b)) return -errno;
- return 0;
-}
-
-
-/**
- * Unbind a chunk of AGP memory.
- *
- * \param fd file descriptor.
- * \param handle handle to the allocated memory, as given by drmAgpAllocate().
- *
- * \return zero on success, or a negative value on failure.
- *
- * \internal
- * This function is a wrapper around the DRM_IOCTL_AGP_UNBIND ioctl, passing
- * the argument in a drm_agp_binding structure.
- */
-int drmAgpUnbind(int fd, drm_handle_t handle)
-{
- drm_agp_binding_t b;
-
- b.handle = handle;
- b.offset = 0;
- if (ioctl(fd, DRM_IOCTL_AGP_UNBIND, &b)) return -errno;
- return 0;
-}
-
-
-/**
- * Get AGP driver major version number.
- *
- * \param fd file descriptor.
- *
- * \return major version number on success, or a negative value on failure..
- *
- * \internal
- * This function is a wrapper around the DRM_IOCTL_AGP_INFO ioctl, getting the
- * necessary information in a drm_agp_info structure.
- */
-int drmAgpVersionMajor(int fd)
-{
- drm_agp_info_t i;
-
- if (ioctl(fd, DRM_IOCTL_AGP_INFO, &i)) return -errno;
- return i.agp_version_major;
-}
-
-
-/**
- * Get AGP driver minor version number.
- *
- * \param fd file descriptor.
- *
- * \return minor version number on success, or a negative value on failure.
- *
- * \internal
- * This function is a wrapper around the DRM_IOCTL_AGP_INFO ioctl, getting the
- * necessary information in a drm_agp_info structure.
- */
-int drmAgpVersionMinor(int fd)
-{
- drm_agp_info_t i;
-
- if (ioctl(fd, DRM_IOCTL_AGP_INFO, &i)) return -errno;
- return i.agp_version_minor;
-}
-
-
-/**
- * Get AGP mode.
- *
- * \param fd file descriptor.
- *
- * \return mode on success, or zero on failure.
- *
- * \internal
- * This function is a wrapper around the DRM_IOCTL_AGP_INFO ioctl, getting the
- * necessary information in a drm_agp_info structure.
- */
-unsigned long drmAgpGetMode(int fd)
-{
- drm_agp_info_t i;
-
- if (ioctl(fd, DRM_IOCTL_AGP_INFO, &i)) return 0;
- return i.mode;
-}
-
-
-/**
- * Get AGP aperture base.
- *
- * \param fd file descriptor.
- *
- * \return aperture base on success, zero on failure.
- *
- * \internal
- * This function is a wrapper around the DRM_IOCTL_AGP_INFO ioctl, getting the
- * necessary information in a drm_agp_info structure.
- */
-unsigned long drmAgpBase(int fd)
-{
- drm_agp_info_t i;
-
- if (ioctl(fd, DRM_IOCTL_AGP_INFO, &i)) return 0;
- return i.aperture_base;
-}
-
-
-/**
- * Get AGP aperture size.
- *
- * \param fd file descriptor.
- *
- * \return aperture size on success, zero on failure.
- *
- * \internal
- * This function is a wrapper around the DRM_IOCTL_AGP_INFO ioctl, getting the
- * necessary information in a drm_agp_info structure.
- */
-unsigned long drmAgpSize(int fd)
-{
- drm_agp_info_t i;
-
- if (ioctl(fd, DRM_IOCTL_AGP_INFO, &i)) return 0;
- return i.aperture_size;
-}
-
-
-/**
- * Get used AGP memory.
- *
- * \param fd file descriptor.
- *
- * \return memory used on success, or zero on failure.
- *
- * \internal
- * This function is a wrapper around the DRM_IOCTL_AGP_INFO ioctl, getting the
- * necessary information in a drm_agp_info structure.
- */
-unsigned long drmAgpMemoryUsed(int fd)
-{
- drm_agp_info_t i;
-
- if (ioctl(fd, DRM_IOCTL_AGP_INFO, &i)) return 0;
- return i.memory_used;
-}
-
-
-/**
- * Get available AGP memory.
- *
- * \param fd file descriptor.
- *
- * \return memory available on success, or zero on failure.
- *
- * \internal
- * This function is a wrapper around the DRM_IOCTL_AGP_INFO ioctl, getting the
- * necessary information in a drm_agp_info structure.
- */
-unsigned long drmAgpMemoryAvail(int fd)
-{
- drm_agp_info_t i;
-
- if (ioctl(fd, DRM_IOCTL_AGP_INFO, &i)) return 0;
- return i.memory_allowed;
-}
-
-
-/**
- * Get hardware vendor ID.
- *
- * \param fd file descriptor.
- *
- * \return vendor ID on success, or zero on failure.
- *
- * \internal
- * This function is a wrapper around the DRM_IOCTL_AGP_INFO ioctl, getting the
- * necessary information in a drm_agp_info structure.
- */
-unsigned int drmAgpVendorId(int fd)
-{
- drm_agp_info_t i;
-
- if (ioctl(fd, DRM_IOCTL_AGP_INFO, &i)) return 0;
- return i.id_vendor;
-}
-
-
-/**
- * Get hardware device ID.
- *
- * \param fd file descriptor.
- *
- * \return zero on success, or zero on failure.
- *
- * \internal
- * This function is a wrapper around the DRM_IOCTL_AGP_INFO ioctl, getting the
- * necessary information in a drm_agp_info structure.
- */
-unsigned int drmAgpDeviceId(int fd)
-{
- drm_agp_info_t i;
-
- if (ioctl(fd, DRM_IOCTL_AGP_INFO, &i)) return 0;
- return i.id_device;
-}
-
-int drmScatterGatherAlloc(int fd, unsigned long size, drm_handle_t *handle)
-{
- drm_scatter_gather_t sg;
-
- *handle = 0;
- sg.size = size;
- sg.handle = 0;
- if (ioctl(fd, DRM_IOCTL_SG_ALLOC, &sg)) return -errno;
- *handle = sg.handle;
- return 0;
-}
-
-int drmScatterGatherFree(int fd, drm_handle_t handle)
-{
- drm_scatter_gather_t sg;
-
- sg.size = 0;
- sg.handle = handle;
- if (ioctl(fd, DRM_IOCTL_SG_FREE, &sg)) return -errno;
- return 0;
-}
-
-/**
- * Wait for VBLANK.
- *
- * \param fd file descriptor.
- * \param vbl pointer to a drmVBlank structure.
- *
- * \return zero on success, or a negative value on failure.
- *
- * \internal
- * This function is a wrapper around the DRM_IOCTL_WAIT_VBLANK ioctl.
- */
-int drmWaitVBlank(int fd, drmVBlankPtr vbl)
-{
- int ret;
-
- do {
- ret = ioctl(fd, DRM_IOCTL_WAIT_VBLANK, vbl);
- vbl->request.type &= ~DRM_VBLANK_RELATIVE;
- } while (ret && errno == EINTR);
-
- return ret;
-}
-
-int drmError(int err, const char *label)
-{
- switch (err) {
- case DRM_ERR_NO_DEVICE: fprintf(stderr, "%s: no device\n", label); break;
- case DRM_ERR_NO_ACCESS: fprintf(stderr, "%s: no access\n", label); break;
- case DRM_ERR_NOT_ROOT: fprintf(stderr, "%s: not root\n", label); break;
- case DRM_ERR_INVALID: fprintf(stderr, "%s: invalid args\n", label);break;
- default:
- if (err < 0) err = -err;
- fprintf( stderr, "%s: error %d (%s)\n", label, err, strerror(err) );
- break;
- }
-
- return 1;
-}
-
-/**
- * Install IRQ handler.
- *
- * \param fd file descriptor.
- * \param irq IRQ number.
- *
- * \return zero on success, or a negative value on failure.
- *
- * \internal
- * This function is a wrapper around the DRM_IOCTL_CONTROL ioctl, passing the
- * argument in a drm_control structure.
- */
-int drmCtlInstHandler(int fd, int irq)
-{
- drm_control_t ctl;
-
- ctl.func = DRM_INST_HANDLER;
- ctl.irq = irq;
- if (ioctl(fd, DRM_IOCTL_CONTROL, &ctl)) return -errno;
- return 0;
-}
-
-
-/**
- * Uninstall IRQ handler.
- *
- * \param fd file descriptor.
- *
- * \return zero on success, or a negative value on failure.
- *
- * \internal
- * This function is a wrapper around the DRM_IOCTL_CONTROL ioctl, passing the
- * argument in a drm_control structure.
- */
-int drmCtlUninstHandler(int fd)
-{
- drm_control_t ctl;
-
- ctl.func = DRM_UNINST_HANDLER;
- ctl.irq = 0;
- if (ioctl(fd, DRM_IOCTL_CONTROL, &ctl)) return -errno;
- return 0;
-}
-
-int drmFinish(int fd, int context, drmLockFlags flags)
-{
- drm_lock_t lock;
-
- lock.context = context;
- lock.flags = 0;
- if (flags & DRM_LOCK_READY) lock.flags |= _DRM_LOCK_READY;
- if (flags & DRM_LOCK_QUIESCENT) lock.flags |= _DRM_LOCK_QUIESCENT;
- if (flags & DRM_LOCK_FLUSH) lock.flags |= _DRM_LOCK_FLUSH;
- if (flags & DRM_LOCK_FLUSH_ALL) lock.flags |= _DRM_LOCK_FLUSH_ALL;
- if (flags & DRM_HALT_ALL_QUEUES) lock.flags |= _DRM_HALT_ALL_QUEUES;
- if (flags & DRM_HALT_CUR_QUEUES) lock.flags |= _DRM_HALT_CUR_QUEUES;
- if (ioctl(fd, DRM_IOCTL_FINISH, &lock)) return -errno;
- return 0;
-}
-
-/**
- * Get IRQ from bus ID.
- *
- * \param fd file descriptor.
- * \param busnum bus number.
- * \param devnum device number.
- * \param funcnum function number.
- *
- * \return IRQ number on success, or a negative value on failure.
- *
- * \internal
- * This function is a wrapper around the DRM_IOCTL_IRQ_BUSID ioctl, passing the
- * arguments in a drm_irq_busid structure.
- */
-int drmGetInterruptFromBusID(int fd, int busnum, int devnum, int funcnum)
-{
- drm_irq_busid_t p;
-
- p.busnum = busnum;
- p.devnum = devnum;
- p.funcnum = funcnum;
- if (ioctl(fd, DRM_IOCTL_IRQ_BUSID, &p)) return -errno;
- return p.irq;
-}
-
-int drmAddContextTag(int fd, drm_context_t context, void *tag)
-{
- drmHashEntry *entry = drmGetEntry(fd);
-
- if (drmHashInsert(entry->tagTable, context, tag)) {
- drmHashDelete(entry->tagTable, context);
- drmHashInsert(entry->tagTable, context, tag);
- }
- return 0;
-}
-
-int drmDelContextTag(int fd, drm_context_t context)
-{
- drmHashEntry *entry = drmGetEntry(fd);
-
- return drmHashDelete(entry->tagTable, context);
-}
-
-void *drmGetContextTag(int fd, drm_context_t context)
-{
- drmHashEntry *entry = drmGetEntry(fd);
- void *value;
-
- if (drmHashLookup(entry->tagTable, context, &value)) return NULL;
-
- return value;
-}
-
-int drmAddContextPrivateMapping(int fd, drm_context_t ctx_id, drm_handle_t handle)
-{
- drm_ctx_priv_map_t map;
-
- map.ctx_id = ctx_id;
- map.handle = (void *)(unsigned long)handle;
-
- if (ioctl(fd, DRM_IOCTL_SET_SAREA_CTX, &map)) return -errno;
- return 0;
-}
-
-int drmGetContextPrivateMapping(int fd, drm_context_t ctx_id, drm_handle_t * handle)
-{
- drm_ctx_priv_map_t map;
-
- map.ctx_id = ctx_id;
-
- if (ioctl(fd, DRM_IOCTL_GET_SAREA_CTX, &map)) return -errno;
- if (handle) *handle = (drm_handle_t)(unsigned long)map.handle;
-
- return 0;
-}
-
-int drmGetMap(int fd, int idx, drm_handle_t *offset, drmSize *size,
- drmMapType *type, drmMapFlags *flags, drm_handle_t *handle,
- int *mtrr)
-{
- drm_map_t map;
-
- map.offset = idx;
- if (ioctl(fd, DRM_IOCTL_GET_MAP, &map)) return -errno;
- *offset = map.offset;
- *size = map.size;
- *type = map.type;
- *flags = map.flags;
- *handle = (drm_handle_t)(unsigned long)map.handle;
- *mtrr = map.mtrr;
- return 0;
-}
-
-int drmGetClient(int fd, int idx, int *auth, int *pid, int *uid,
- unsigned long *magic, unsigned long *iocs)
-{
- drm_client_t client;
-
- client.idx = idx;
- if (ioctl(fd, DRM_IOCTL_GET_CLIENT, &client)) return -errno;
- *auth = client.auth;
- *pid = client.pid;
- *uid = client.uid;
- *magic = client.magic;
- *iocs = client.iocs;
- return 0;
-}
-
-int drmGetStats(int fd, drmStatsT *stats)
-{
- drm_stats_t s;
- unsigned int i;
-
- if (ioctl(fd, DRM_IOCTL_GET_STATS, &s)) return -errno;
-
- stats->count = 0;
- memset(stats, 0, sizeof(*stats));
- if (s.count > sizeof(stats->data)/sizeof(stats->data[0]))
- return -1;
-
-#define SET_VALUE \
- stats->data[i].long_format = "%-20.20s"; \
- stats->data[i].rate_format = "%8.8s"; \
- stats->data[i].isvalue = 1; \
- stats->data[i].verbose = 0
-
-#define SET_COUNT \
- stats->data[i].long_format = "%-20.20s"; \
- stats->data[i].rate_format = "%5.5s"; \
- stats->data[i].isvalue = 0; \
- stats->data[i].mult_names = "kgm"; \
- stats->data[i].mult = 1000; \
- stats->data[i].verbose = 0
-
-#define SET_BYTE \
- stats->data[i].long_format = "%-20.20s"; \
- stats->data[i].rate_format = "%5.5s"; \
- stats->data[i].isvalue = 0; \
- stats->data[i].mult_names = "KGM"; \
- stats->data[i].mult = 1024; \
- stats->data[i].verbose = 0
-
-
- stats->count = s.count;
- for (i = 0; i < s.count; i++) {
- stats->data[i].value = s.data[i].value;
- switch (s.data[i].type) {
- case _DRM_STAT_LOCK:
- stats->data[i].long_name = "Lock";
- stats->data[i].rate_name = "Lock";
- SET_VALUE;
- break;
- case _DRM_STAT_OPENS:
- stats->data[i].long_name = "Opens";
- stats->data[i].rate_name = "O";
- SET_COUNT;
- stats->data[i].verbose = 1;
- break;
- case _DRM_STAT_CLOSES:
- stats->data[i].long_name = "Closes";
- stats->data[i].rate_name = "Lock";
- SET_COUNT;
- stats->data[i].verbose = 1;
- break;
- case _DRM_STAT_IOCTLS:
- stats->data[i].long_name = "Ioctls";
- stats->data[i].rate_name = "Ioc/s";
- SET_COUNT;
- break;
- case _DRM_STAT_LOCKS:
- stats->data[i].long_name = "Locks";
- stats->data[i].rate_name = "Lck/s";
- SET_COUNT;
- break;
- case _DRM_STAT_UNLOCKS:
- stats->data[i].long_name = "Unlocks";
- stats->data[i].rate_name = "Unl/s";
- SET_COUNT;
- break;
- case _DRM_STAT_IRQ:
- stats->data[i].long_name = "IRQs";
- stats->data[i].rate_name = "IRQ/s";
- SET_COUNT;
- break;
- case _DRM_STAT_PRIMARY:
- stats->data[i].long_name = "Primary Bytes";
- stats->data[i].rate_name = "PB/s";
- SET_BYTE;
- break;
- case _DRM_STAT_SECONDARY:
- stats->data[i].long_name = "Secondary Bytes";
- stats->data[i].rate_name = "SB/s";
- SET_BYTE;
- break;
- case _DRM_STAT_DMA:
- stats->data[i].long_name = "DMA";
- stats->data[i].rate_name = "DMA/s";
- SET_COUNT;
- break;
- case _DRM_STAT_SPECIAL:
- stats->data[i].long_name = "Special DMA";
- stats->data[i].rate_name = "dma/s";
- SET_COUNT;
- break;
- case _DRM_STAT_MISSED:
- stats->data[i].long_name = "Miss";
- stats->data[i].rate_name = "Ms/s";
- SET_COUNT;
- break;
- case _DRM_STAT_VALUE:
- stats->data[i].long_name = "Value";
- stats->data[i].rate_name = "Value";
- SET_VALUE;
- break;
- case _DRM_STAT_BYTE:
- stats->data[i].long_name = "Bytes";
- stats->data[i].rate_name = "B/s";
- SET_BYTE;
- break;
- case _DRM_STAT_COUNT:
- default:
- stats->data[i].long_name = "Count";
- stats->data[i].rate_name = "Cnt/s";
- SET_COUNT;
- break;
- }
- }
- return 0;
-}
-
-/**
- * Issue a set-version ioctl.
- *
- * \param fd file descriptor.
- * \param drmCommandIndex command index
- * \param data source pointer of the data to be read and written.
- * \param size size of the data to be read and written.
- *
- * \return zero on success, or a negative value on failure.
- *
- * \internal
- * It issues a read-write ioctl given by
- * \code DRM_COMMAND_BASE + drmCommandIndex \endcode.
- */
-int drmSetInterfaceVersion(int fd, drmSetVersion *version )
-{
- int retcode = 0;
- drm_set_version_t sv;
-
- sv.drm_di_major = version->drm_di_major;
- sv.drm_di_minor = version->drm_di_minor;
- sv.drm_dd_major = version->drm_dd_major;
- sv.drm_dd_minor = version->drm_dd_minor;
-
- if (ioctl(fd, DRM_IOCTL_SET_VERSION, &sv)) {
- retcode = -errno;
- }
-
- version->drm_di_major = sv.drm_di_major;
- version->drm_di_minor = sv.drm_di_minor;
- version->drm_dd_major = sv.drm_dd_major;
- version->drm_dd_minor = sv.drm_dd_minor;
-
- return retcode;
-}
-
-/**
- * Send a device-specific command.
- *
- * \param fd file descriptor.
- * \param drmCommandIndex command index
- *
- * \return zero on success, or a negative value on failure.
- *
- * \internal
- * It issues a ioctl given by
- * \code DRM_COMMAND_BASE + drmCommandIndex \endcode.
- */
-int drmCommandNone(int fd, unsigned long drmCommandIndex)
-{
- void *data = NULL; /* dummy */
- unsigned long request;
-
- request = DRM_IO( DRM_COMMAND_BASE + drmCommandIndex);
-
- if (ioctl(fd, request, data)) {
- return -errno;
- }
- return 0;
-}
-
-
-/**
- * Send a device-specific read command.
- *
- * \param fd file descriptor.
- * \param drmCommandIndex command index
- * \param data destination pointer of the data to be read.
- * \param size size of the data to be read.
- *
- * \return zero on success, or a negative value on failure.
- *
- * \internal
- * It issues a read ioctl given by
- * \code DRM_COMMAND_BASE + drmCommandIndex \endcode.
- */
-int drmCommandRead(int fd, unsigned long drmCommandIndex,
- void *data, unsigned long size )
-{
- unsigned long request;
-
- request = DRM_IOC( DRM_IOC_READ, DRM_IOCTL_BASE,
- DRM_COMMAND_BASE + drmCommandIndex, size);
-
- if (ioctl(fd, request, data)) {
- return -errno;
- }
- return 0;
-}
-
-
-/**
- * Send a device-specific write command.
- *
- * \param fd file descriptor.
- * \param drmCommandIndex command index
- * \param data source pointer of the data to be written.
- * \param size size of the data to be written.
- *
- * \return zero on success, or a negative value on failure.
- *
- * \internal
- * It issues a write ioctl given by
- * \code DRM_COMMAND_BASE + drmCommandIndex \endcode.
- */
-int drmCommandWrite(int fd, unsigned long drmCommandIndex,
- void *data, unsigned long size )
-{
- unsigned long request;
-
- request = DRM_IOC( DRM_IOC_WRITE, DRM_IOCTL_BASE,
- DRM_COMMAND_BASE + drmCommandIndex, size);
-
- if (ioctl(fd, request, data)) {
- return -errno;
- }
- return 0;
-}
-
-
-/**
- * Send a device-specific read-write command.
- *
- * \param fd file descriptor.
- * \param drmCommandIndex command index
- * \param data source pointer of the data to be read and written.
- * \param size size of the data to be read and written.
- *
- * \return zero on success, or a negative value on failure.
- *
- * \internal
- * It issues a read-write ioctl given by
- * \code DRM_COMMAND_BASE + drmCommandIndex \endcode.
- */
-int drmCommandWriteRead(int fd, unsigned long drmCommandIndex,
- void *data, unsigned long size )
-{
- unsigned long request;
-
- request = DRM_IOC( DRM_IOC_READ|DRM_IOC_WRITE, DRM_IOCTL_BASE,
- DRM_COMMAND_BASE + drmCommandIndex, size);
-
- if (ioctl(fd, request, data)) {
- return -errno;
- }
- return 0;
-}
-
-#if defined(XFree86Server)
-static void drmSIGIOHandler(int interrupt, void *closure)
-{
- unsigned long key;
- void *value;
- ssize_t count;
- drm_ctx_t ctx;
- typedef void (*_drmCallback)(int, void *, void *);
- char buf[256];
- drm_context_t old;
- drm_context_t new;
- void *oldctx;
- void *newctx;
- char *pt;
- drmHashEntry *entry;
-
- if (!drmHashTable) return;
- if (drmHashFirst(drmHashTable, &key, &value)) {
- entry = value;
- do {
-#if 0
- fprintf(stderr, "Trying %d\n", entry->fd);
-#endif
- if ((count = read(entry->fd, buf, sizeof(buf))) > 0) {
- buf[count] = '\0';
-#if 0
- fprintf(stderr, "Got %s\n", buf);
-#endif
-
- for (pt = buf; *pt != ' '; ++pt); /* Find first space */
- ++pt;
- old = strtol(pt, &pt, 0);
- new = strtol(pt, NULL, 0);
- oldctx = drmGetContextTag(entry->fd, old);
- newctx = drmGetContextTag(entry->fd, new);
-#if 0
- fprintf(stderr, "%d %d %p %p\n", old, new, oldctx, newctx);
-#endif
- ((_drmCallback)entry->f)(entry->fd, oldctx, newctx);
- ctx.handle = new;
- ioctl(entry->fd, DRM_IOCTL_NEW_CTX, &ctx);
- }
- } while (drmHashNext(drmHashTable, &key, &value));
- }
-}
-
-int drmInstallSIGIOHandler(int fd, void (*f)(int, void *, void *))
-{
- drmHashEntry *entry;
-
- entry = drmGetEntry(fd);
- entry->f = f;
-
- return xf86InstallSIGIOHandler(fd, drmSIGIOHandler, 0);
-}
-
-int drmRemoveSIGIOHandler(int fd)
-{
- drmHashEntry *entry = drmGetEntry(fd);
-
- entry->f = NULL;
-
- return xf86RemoveSIGIOHandler(fd);
-}
-#endif
diff --git a/hw/xfree86/os-support/drm/xf86drmHash.c b/hw/xfree86/os-support/drm/xf86drmHash.c
deleted file mode 100644
index a2567080a..000000000
--- a/hw/xfree86/os-support/drm/xf86drmHash.c
+++ /dev/null
@@ -1,435 +0,0 @@
-/* xf86drmHash.c -- Small hash table support for integer -> integer mapping
- * Created: Sun Apr 18 09:35:45 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/xf86drmHash.c,v 1.4 2001/03/21 18:08:54 dawes Exp $
- *
- * DESCRIPTION
- *
- * This file contains a straightforward implementation of a fixed-sized
- * hash table using self-organizing linked lists [Knuth73, pp. 398-399] for
- * collision resolution. There are two potentially interesting things
- * about this implementation:
- *
- * 1) The table is power-of-two sized. Prime sized tables are more
- * traditional, but do not have a significant advantage over power-of-two
- * sized table, especially when double hashing is not used for collision
- * resolution.
- *
- * 2) The hash computation uses a table of random integers [Hanson97,
- * pp. 39-41].
- *
- * FUTURE ENHANCEMENTS
- *
- * With a table size of 512, the current implementation is sufficient for a
- * few hundred keys. Since this is well above the expected size of the
- * tables for which this implementation was designed, the implementation of
- * dynamic hash tables was postponed until the need arises. A common (and
- * naive) approach to dynamic hash table implementation simply creates a
- * new hash table when necessary, rehashes all the data into the new table,
- * and destroys the old table. The approach in [Larson88] is superior in
- * two ways: 1) only a portion of the table is expanded when needed,
- * distributing the expansion cost over several insertions, and 2) portions
- * of the table can be locked, enabling a scalable thread-safe
- * implementation.
- *
- * REFERENCES
- *
- * [Hanson97] David R. Hanson. C Interfaces and Implementations:
- * Techniques for Creating Reusable Software. Reading, Massachusetts:
- * Addison-Wesley, 1997.
- *
- * [Knuth73] Donald E. Knuth. The Art of Computer Programming. Volume 3:
- * Sorting and Searching. Reading, Massachusetts: Addison-Wesley, 1973.
- *
- * [Larson88] Per-Ake Larson. "Dynamic Hash Tables". CACM 31(4), April
- * 1988, pp. 446-457.
- *
- */
-
-#ifdef HAVE_XORG_CONFIG_H
-#include <xorg-config.h>
-#endif
-
-#define HASH_MAIN 0
-
-#include <stdio.h>
-#include <stdlib.h>
-#if !HASH_MAIN
-# include "drm.h"
-# include "xf86drm.h"
-# ifdef XFree86LOADER
-# include "xf86.h"
-# endif
-#endif
-
-#define N(x) drm##x
-
-#define HASH_MAGIC 0xdeadbeef
-#define HASH_DEBUG 0
-#define HASH_SIZE 512 /* Good for about 100 entries */
- /* If you change this value, you probably
- have to change the HashHash hashing
- function! */
-
-#if HASH_MAIN
-#define HASH_ALLOC malloc
-#define HASH_FREE free
-#define HASH_RANDOM_DECL
-#define HASH_RANDOM_INIT(seed) srandom(seed)
-#define HASH_RANDOM random()
-#else
-#define HASH_ALLOC drmMalloc
-#define HASH_FREE drmFree
-#define HASH_RANDOM_DECL void *state
-#define HASH_RANDOM_INIT(seed) state = drmRandomCreate(seed)
-#define HASH_RANDOM drmRandom(state)
-
-#endif
-
-typedef struct HashBucket {
- unsigned long key;
- void *value;
- struct HashBucket *next;
-} HashBucket, *HashBucketPtr;
-
-typedef struct HashTable {
- unsigned long magic;
- unsigned long entries;
- unsigned long hits; /* At top of linked list */
- unsigned long partials; /* Not at top of linked list */
- unsigned long misses; /* Not in table */
- HashBucketPtr buckets[HASH_SIZE];
- int p0;
- HashBucketPtr p1;
-} HashTable, *HashTablePtr;
-
-#if HASH_MAIN
-extern void *N(HashCreate)(void);
-extern int N(HashDestroy)(void *t);
-extern int N(HashLookup)(void *t, unsigned long key, unsigned long *value);
-extern int N(HashInsert)(void *t, unsigned long key, unsigned long value);
-extern int N(HashDelete)(void *t, unsigned long key);
-#endif
-
-static unsigned long HashHash(unsigned long key)
-{
- unsigned long hash = 0;
- unsigned long tmp = key;
- static int init = 0;
- static unsigned long scatter[256];
- int i;
-
- if (!init) {
- HASH_RANDOM_DECL;
- HASH_RANDOM_INIT(37);
- for (i = 0; i < 256; i++) scatter[i] = HASH_RANDOM;
- ++init;
- }
-
- while (tmp) {
- hash = (hash << 1) + scatter[tmp & 0xff];
- tmp >>= 8;
- }
-
- hash %= HASH_SIZE;
-#if HASH_DEBUG
- printf( "Hash(%d) = %d\n", key, hash);
-#endif
- return hash;
-}
-
-void *N(HashCreate)(void)
-{
- HashTablePtr table;
- int i;
-
- table = HASH_ALLOC(sizeof(*table));
- if (!table) return NULL;
- table->magic = HASH_MAGIC;
- table->entries = 0;
- table->hits = 0;
- table->partials = 0;
- table->misses = 0;
-
- for (i = 0; i < HASH_SIZE; i++) table->buckets[i] = NULL;
- return table;
-}
-
-int N(HashDestroy)(void *t)
-{
- HashTablePtr table = (HashTablePtr)t;
- HashBucketPtr bucket;
- HashBucketPtr next;
- int i;
-
- if (table->magic != HASH_MAGIC) return -1; /* Bad magic */
-
- for (i = 0; i < HASH_SIZE; i++) {
- for (bucket = table->buckets[i]; bucket;) {
- next = bucket->next;
- HASH_FREE(bucket);
- bucket = next;
- }
- }
- HASH_FREE(table);
- return 0;
-}
-
-/* Find the bucket and organize the list so that this bucket is at the
- top. */
-
-static HashBucketPtr HashFind(HashTablePtr table,
- unsigned long key, unsigned long *h)
-{
- unsigned long hash = HashHash(key);
- HashBucketPtr prev = NULL;
- HashBucketPtr bucket;
-
- if (h) *h = hash;
-
- for (bucket = table->buckets[hash]; bucket; bucket = bucket->next) {
- if (bucket->key == key) {
- if (prev) {
- /* Organize */
- prev->next = bucket->next;
- bucket->next = table->buckets[hash];
- table->buckets[hash] = bucket;
- ++table->partials;
- } else {
- ++table->hits;
- }
- return bucket;
- }
- prev = bucket;
- }
- ++table->misses;
- return NULL;
-}
-
-int N(HashLookup)(void *t, unsigned long key, void **value)
-{
- HashTablePtr table = (HashTablePtr)t;
- HashBucketPtr bucket;
-
- if (!table || table->magic != HASH_MAGIC) return -1; /* Bad magic */
-
- bucket = HashFind(table, key, NULL);
- if (!bucket) return 1; /* Not found */
- *value = bucket->value;
- return 0; /* Found */
-}
-
-int N(HashInsert)(void *t, unsigned long key, void *value)
-{
- HashTablePtr table = (HashTablePtr)t;
- HashBucketPtr bucket;
- unsigned long hash;
-
- if (table->magic != HASH_MAGIC) return -1; /* Bad magic */
-
- if (HashFind(table, key, &hash)) return 1; /* Already in table */
-
- bucket = HASH_ALLOC(sizeof(*bucket));
- if (!bucket) return -1; /* Error */
- bucket->key = key;
- bucket->value = value;
- bucket->next = table->buckets[hash];
- table->buckets[hash] = bucket;
-#if HASH_DEBUG
- printf("Inserted %d at %d/%p\n", key, hash, bucket);
-#endif
- return 0; /* Added to table */
-}
-
-int N(HashDelete)(void *t, unsigned long key)
-{
- HashTablePtr table = (HashTablePtr)t;
- unsigned long hash;
- HashBucketPtr bucket;
-
- if (table->magic != HASH_MAGIC) return -1; /* Bad magic */
-
- bucket = HashFind(table, key, &hash);
-
- if (!bucket) return 1; /* Not found */
-
- table->buckets[hash] = bucket->next;
- HASH_FREE(bucket);
- return 0;
-}
-
-int N(HashNext)(void *t, unsigned long *key, void **value)
-{
- HashTablePtr table = (HashTablePtr)t;
-
- for (; table->p0 < HASH_SIZE;
- ++table->p0, table->p1 = table->buckets[table->p0]) {
- if (table->p1) {
- *key = table->p1->key;
- *value = table->p1->value;
- table->p1 = table->p1->next;
- return 1;
- }
- }
- return 0;
-}
-
-int N(HashFirst)(void *t, unsigned long *key, void **value)
-{
- HashTablePtr table = (HashTablePtr)t;
-
- if (table->magic != HASH_MAGIC) return -1; /* Bad magic */
-
- table->p0 = 0;
- table->p1 = table->buckets[0];
- return N(HashNext)(table, key, value);
-}
-
-#if HASH_MAIN
-#define DIST_LIMIT 10
-static int dist[DIST_LIMIT];
-
-static void clear_dist(void) {
- int i;
-
- for (i = 0; i < DIST_LIMIT; i++) dist[i] = 0;
-}
-
-static int count_entries(HashBucketPtr bucket)
-{
- int count = 0;
-
- for (; bucket; bucket = bucket->next) ++count;
- return count;
-}
-
-static void update_dist(int count)
-{
- if (count >= DIST_LIMIT) ++dist[DIST_LIMIT-1];
- else ++dist[count];
-}
-
-static void compute_dist(HashTablePtr table)
-{
- int i;
- HashBucketPtr bucket;
-
- printf("Entries = %ld, hits = %ld, partials = %ld, misses = %ld\n",
- table->entries, table->hits, table->partials, table->misses);
- clear_dist();
- for (i = 0; i < HASH_SIZE; i++) {
- bucket = table->buckets[i];
- update_dist(count_entries(bucket));
- }
- for (i = 0; i < DIST_LIMIT; i++) {
- if (i != DIST_LIMIT-1) printf("%5d %10d\n", i, dist[i]);
- else printf("other %10d\n", dist[i]);
- }
-}
-
-static void check_table(HashTablePtr table,
- unsigned long key, unsigned long value)
-{
- unsigned long retval = 0;
- int retcode = N(HashLookup)(table, key, &retval);
-
- switch (retcode) {
- case -1:
- printf("Bad magic = 0x%08lx:"
- " key = %lu, expected = %lu, returned = %lu\n",
- table->magic, key, value, retval);
- break;
- case 1:
- printf("Not found: key = %lu, expected = %lu returned = %lu\n",
- key, value, retval);
- break;
- case 0:
- if (value != retval)
- printf("Bad value: key = %lu, expected = %lu, returned = %lu\n",
- key, value, retval);
- break;
- default:
- printf("Bad retcode = %d: key = %lu, expected = %lu, returned = %lu\n",
- retcode, key, value, retval);
- break;
- }
-}
-
-int main(void)
-{
- HashTablePtr table;
- int i;
-
- printf("\n***** 256 consecutive integers ****\n");
- table = N(HashCreate)();
- for (i = 0; i < 256; i++) N(HashInsert)(table, i, i);
- for (i = 0; i < 256; i++) check_table(table, i, i);
- for (i = 256; i >= 0; i--) check_table(table, i, i);
- compute_dist(table);
- N(HashDestroy)(table);
-
- printf("\n***** 1024 consecutive integers ****\n");
- table = N(HashCreate)();
- for (i = 0; i < 1024; i++) N(HashInsert)(table, i, i);
- for (i = 0; i < 1024; i++) check_table(table, i, i);
- for (i = 1024; i >= 0; i--) check_table(table, i, i);
- compute_dist(table);
- N(HashDestroy)(table);
-
- printf("\n***** 1024 consecutive page addresses (4k pages) ****\n");
- table = N(HashCreate)();
- for (i = 0; i < 1024; i++) N(HashInsert)(table, i*4096, i);
- for (i = 0; i < 1024; i++) check_table(table, i*4096, i);
- for (i = 1024; i >= 0; i--) check_table(table, i*4096, i);
- compute_dist(table);
- N(HashDestroy)(table);
-
- printf("\n***** 1024 random integers ****\n");
- table = N(HashCreate)();
- srandom(0xbeefbeef);
- for (i = 0; i < 1024; i++) N(HashInsert)(table, random(), i);
- srandom(0xbeefbeef);
- for (i = 0; i < 1024; i++) check_table(table, random(), i);
- srandom(0xbeefbeef);
- for (i = 0; i < 1024; i++) check_table(table, random(), i);
- compute_dist(table);
- N(HashDestroy)(table);
-
- printf("\n***** 5000 random integers ****\n");
- table = N(HashCreate)();
- srandom(0xbeefbeef);
- for (i = 0; i < 5000; i++) N(HashInsert)(table, random(), i);
- srandom(0xbeefbeef);
- for (i = 0; i < 5000; i++) check_table(table, random(), i);
- srandom(0xbeefbeef);
- for (i = 0; i < 5000; i++) check_table(table, random(), i);
- compute_dist(table);
- N(HashDestroy)(table);
-
- return 0;
-}
-#endif
diff --git a/hw/xfree86/os-support/drm/xf86drmRandom.c b/hw/xfree86/os-support/drm/xf86drmRandom.c
deleted file mode 100644
index cc40dccad..000000000
--- a/hw/xfree86/os-support/drm/xf86drmRandom.c
+++ /dev/null
@@ -1,219 +0,0 @@
-/* xf86drmRandom.c -- "Minimal Standard" PRNG Implementation
- * Created: Mon Apr 19 08:28:13 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/xf86drmRandom.c,v 1.4 2000/06/17 00:03:34 martin Exp $
- *
- * DESCRIPTION
- *
- * This file contains a simple, straightforward implementation of the Park
- * & Miller "Minimal Standard" PRNG [PM88, PMS93], which is a Lehmer
- * multiplicative linear congruential generator (MLCG) with a period of
- * 2^31-1.
- *
- * This implementation is intended to provide a reliable, portable PRNG
- * that is suitable for testing a hash table implementation and for
- * implementing skip lists.
- *
- * FUTURE ENHANCEMENTS
- *
- * If initial seeds are not selected randomly, two instances of the PRNG
- * can be correlated. [Knuth81, pp. 32-33] describes a shuffling technique
- * that can eliminate this problem.
- *
- * If PRNGs are used for simulation, the period of the current
- * implementation may be too short. [LE88] discusses methods of combining
- * MLCGs to produce much longer periods, and suggests some alternative
- * values for A and M. [LE90 and Sch92] also provide information on
- * long-period PRNGs.
- *
- * REFERENCES
- *
- * [Knuth81] Donald E. Knuth. The Art of Computer Programming. Volume 2:
- * Seminumerical Algorithms. Reading, Massachusetts: Addison-Wesley, 1981.
- *
- * [LE88] Pierre L'Ecuyer. "Efficient and Portable Combined Random Number
- * Generators". CACM 31(6), June 1988, pp. 742-774.
- *
- * [LE90] Pierre L'Ecuyer. "Random Numbers for Simulation". CACM 33(10,
- * October 1990, pp. 85-97.
- *
- * [PM88] Stephen K. Park and Keith W. Miller. "Random Number Generators:
- * Good Ones are Hard to Find". CACM 31(10), October 1988, pp. 1192-1201.
- *
- * [Sch92] Bruce Schneier. "Pseudo-Ransom Sequence Generator for 32-Bit
- * CPUs". Dr. Dobb's Journal 17(2), February 1992, pp. 34, 37-38, 40.
- *
- * [PMS93] Stephen K. Park, Keith W. Miller, and Paul K. Stockmeyer. In
- * "Technical Correspondence: Remarks on Choosing and Implementing Random
- * Number Generators". CACM 36(7), July 1993, pp. 105-110.
- *
- */
-
-#ifdef HAVE_XORG_CONFIG_H
-#include <xorg-config.h>
-#endif
-
-#define RANDOM_MAIN 0
-
-#include <stdio.h>
-#include <stdlib.h>
-#if !RANDOM_MAIN
-# include "drm.h"
-# include "xf86drm.h"
-# ifdef XFree86LOADER
-# include "xf86.h"
-# endif
-#endif
-
-#define N(x) drm##x
-
-#define RANDOM_MAGIC 0xfeedbeef
-#define RANDOM_DEBUG 0
-
-#if RANDOM_MAIN
-#define RANDOM_ALLOC malloc
-#define RANDOM_FREE free
-#else
-#define RANDOM_ALLOC drmMalloc
-#define RANDOM_FREE drmFree
-#endif
-
-typedef struct RandomState {
- unsigned long magic;
- unsigned long a;
- unsigned long m;
- unsigned long q; /* m div a */
- unsigned long r; /* m mod a */
- unsigned long check;
- long seed;
-} RandomState;
-
-#if RANDOM_MAIN
-extern void *N(RandomCreate)(unsigned long seed);
-extern int N(RandomDestroy)(void *state);
-extern unsigned long N(Random)(void *state);
-extern double N(RandomDouble)(void *state);
-#endif
-
-void *N(RandomCreate)(unsigned long seed)
-{
- RandomState *state;
-
- state = RANDOM_ALLOC(sizeof(*state));
- if (!state) return NULL;
- state->magic = RANDOM_MAGIC;
-#if 0
- /* Park & Miller, October 1988 */
- state->a = 16807;
- state->m = 2147483647;
- state->check = 1043618065; /* After 10000 iterations */
-#else
- /* Park, Miller, and Stockmeyer, July 1993 */
- state->a = 48271;
- state->m = 2147483647;
- state->check = 399268537; /* After 10000 iterations */
-#endif
- state->q = state->m / state->a;
- state->r = state->m % state->a;
-
- state->seed = seed;
- /* Check for illegal boundary conditions,
- and choose closest legal value. */
- if (state->seed <= 0) state->seed = 1;
- if (state->seed >= state->m) state->seed = state->m - 1;
-
- return state;
-}
-
-int N(RandomDestroy)(void *state)
-{
- RANDOM_FREE(state);
- return 0;
-}
-
-unsigned long N(Random)(void *state)
-{
- RandomState *s = (RandomState *)state;
- long hi;
- long lo;
-
- hi = s->seed / s->q;
- lo = s->seed % s->q;
- s->seed = s->a * lo - s->r * hi;
- if (s->seed <= 0) s->seed += s->m;
-
- return s->seed;
-}
-
-double N(RandomDouble)(void *state)
-{
- RandomState *s = (RandomState *)state;
-
- return (double)N(Random)(state)/(double)s->m;
-}
-
-#if RANDOM_MAIN
-static void check_period(long seed)
-{
- unsigned long count = 0;
- unsigned long initial;
- void *state;
-
- state = N(RandomCreate)(seed);
- initial = N(Random)(state);
- ++count;
- while (initial != N(Random)(state)) {
- if (!++count) break;
- }
- printf("With seed of %10ld, period = %10lu (0x%08lx)\n",
- seed, count, count);
- N(RandomDestroy)(state);
-}
-
-int main(void)
-{
- RandomState *state;
- int i;
- unsigned long rand;
-
- state = N(RandomCreate)(1);
- for (i = 0; i < 10000; i++) {
- rand = N(Random)(state);
- }
- printf("After 10000 iterations: %lu (%lu expected): %s\n",
- rand, state->check,
- rand - state->check ? "*INCORRECT*" : "CORRECT");
- N(RandomDestroy)(state);
-
- printf("Checking periods...\n");
- check_period(1);
- check_period(2);
- check_period(31415926);
-
- return 0;
-}
-#endif
diff --git a/hw/xfree86/os-support/drm/xf86drmSL.c b/hw/xfree86/os-support/drm/xf86drmSL.c
deleted file mode 100644
index 23283a950..000000000
--- a/hw/xfree86/os-support/drm/xf86drmSL.c
+++ /dev/null
@@ -1,494 +0,0 @@
-/* xf86drmSL.c -- Skip list support
- * Created: Mon May 10 09:28:13 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/xf86drmSL.c,v 1.3 2000/06/17 00:03:34 martin Exp $
- *
- * DESCRIPTION
- *
- * This file contains a straightforward skip list implementation.n
- *
- * FUTURE ENHANCEMENTS
- *
- * REFERENCES
- *
- * [Pugh90] William Pugh. Skip Lists: A Probabilistic Alternative to
- * Balanced Trees. CACM 33(6), June 1990, pp. 668-676.
- *
- */
-
-#ifdef HAVE_XORG_CONFIG_H
-#include <xorg-config.h>
-#endif
-
-#define SL_MAIN 0
-
-#if SL_MAIN
-# include <stdio.h>
-# include <stdlib.h>
-# include <sys/time.h>
-#else
-# include "drm.h"
-# include "xf86drm.h"
-# ifdef XFree86LOADER
-# include "xf86.h"
-# else
-# include <stdio.h>
-# include <stdlib.h>
-# endif
-#endif
-
-#define N(x) drm##x
-
-#define SL_LIST_MAGIC 0xfacade00LU
-#define SL_ENTRY_MAGIC 0x00fab1edLU
-#define SL_FREED_MAGIC 0xdecea5edLU
-#define SL_MAX_LEVEL 16
-#define SL_DEBUG 0
-#define SL_RANDOM_SEED 0xc01055a1LU
-
-#if SL_MAIN
-#define SL_ALLOC malloc
-#define SL_FREE free
-#define SL_RANDOM_DECL static int state = 0;
-#define SL_RANDOM_INIT(seed) if (!state) { srandom(seed); ++state; }
-#define SL_RANDOM random()
-#else
-#define SL_ALLOC drmMalloc
-#define SL_FREE drmFree
-#define SL_RANDOM_DECL static void *state = NULL
-#define SL_RANDOM_INIT(seed) if (!state) state = drmRandomCreate(seed)
-#define SL_RANDOM drmRandom(state)
-
-#endif
-
-typedef struct SLEntry {
- unsigned long magic; /* SL_ENTRY_MAGIC */
- unsigned long key;
- void *value;
- int levels;
- struct SLEntry *forward[1]; /* variable sized array */
-} SLEntry, *SLEntryPtr;
-
-typedef struct SkipList {
- unsigned long magic; /* SL_LIST_MAGIC */
- int level;
- int count;
- SLEntryPtr head;
- SLEntryPtr p0; /* Position for iteration */
-} SkipList, *SkipListPtr;
-
-#if SL_MAIN
-extern void *N(SLCreate)(void);
-extern int N(SLDestroy)(void *l);
-extern int N(SLLookup)(void *l, unsigned long key, void **value);
-extern int N(SLInsert)(void *l, unsigned long key, void *value);
-extern int N(SLDelete)(void *l, unsigned long key);
-extern int N(SLNext)(void *l, unsigned long *key, void **value);
-extern int N(SLFirst)(void *l, unsigned long *key, void **value);
-extern void N(SLDump)(void *l);
-extern int N(SLLookupNeighbors)(void *l, unsigned long key,
- unsigned long *prev_key, void **prev_value,
- unsigned long *next_key, void **next_value);
-#endif
-
-static SLEntryPtr SLCreateEntry(int max_level, unsigned long key, void *value)
-{
- SLEntryPtr entry;
-
- if (max_level < 0 || max_level > SL_MAX_LEVEL) max_level = SL_MAX_LEVEL;
-
- entry = SL_ALLOC(sizeof(*entry)
- + (max_level + 1) * sizeof(entry->forward[0]));
- if (!entry) return NULL;
- entry->magic = SL_ENTRY_MAGIC;
- entry->key = key;
- entry->value = value;
- entry->levels = max_level + 1;
-
- return entry;
-}
-
-static int SLRandomLevel(void)
-{
- int level = 1;
- SL_RANDOM_DECL;
-
- SL_RANDOM_INIT(SL_RANDOM_SEED);
-
- while ((SL_RANDOM & 0x01) && level < SL_MAX_LEVEL) ++level;
- return level;
-}
-
-void *N(SLCreate)(void)
-{
- SkipListPtr list;
- int i;
-
- list = SL_ALLOC(sizeof(*list));
- if (!list) return NULL;
- list->magic = SL_LIST_MAGIC;
- list->level = 0;
- list->head = SLCreateEntry(SL_MAX_LEVEL, 0, NULL);
- list->count = 0;
-
- for (i = 0; i <= SL_MAX_LEVEL; i++) list->head->forward[i] = NULL;
-
- return list;
-}
-
-int N(SLDestroy)(void *l)
-{
- SkipListPtr list = (SkipListPtr)l;
- SLEntryPtr entry;
- SLEntryPtr next;
-
- if (list->magic != SL_LIST_MAGIC) return -1; /* Bad magic */
-
- for (entry = list->head; entry; entry = next) {
- if (entry->magic != SL_ENTRY_MAGIC) return -1; /* Bad magic */
- next = entry->forward[0];
- entry->magic = SL_FREED_MAGIC;
- SL_FREE(entry);
- }
-
- list->magic = SL_FREED_MAGIC;
- SL_FREE(list);
- return 0;
-}
-
-static SLEntryPtr SLLocate(void *l, unsigned long key, SLEntryPtr *update)
-{
- SkipListPtr list = (SkipListPtr)l;
- SLEntryPtr entry;
- int i;
-
- if (list->magic != SL_LIST_MAGIC) return NULL;
-
- for (i = list->level, entry = list->head; i >= 0; i--) {
- while (entry->forward[i] && entry->forward[i]->key < key)
- entry = entry->forward[i];
- update[i] = entry;
- }
-
- return entry->forward[0];
-}
-
-int N(SLInsert)(void *l, unsigned long key, void *value)
-{
- SkipListPtr list = (SkipListPtr)l;
- SLEntryPtr entry;
- SLEntryPtr update[SL_MAX_LEVEL + 1];
- int level;
- int i;
-
- if (list->magic != SL_LIST_MAGIC) return -1; /* Bad magic */
-
- entry = SLLocate(list, key, update);
-
- if (entry && entry->key == key) return 1; /* Already in list */
-
-
- level = SLRandomLevel();
- if (level > list->level) {
- level = ++list->level;
- update[level] = list->head;
- }
-
- entry = SLCreateEntry(level, key, value);
-
- /* Fix up forward pointers */
- for (i = 0; i <= level; i++) {
- entry->forward[i] = update[i]->forward[i];
- update[i]->forward[i] = entry;
- }
-
- ++list->count;
- return 0; /* Added to table */
-}
-
-int N(SLDelete)(void *l, unsigned long key)
-{
- SkipListPtr list = (SkipListPtr)l;
- SLEntryPtr update[SL_MAX_LEVEL + 1];
- SLEntryPtr entry;
- int i;
-
- if (list->magic != SL_LIST_MAGIC) return -1; /* Bad magic */
-
- entry = SLLocate(list, key, update);
-
- if (!entry || entry->key != key) return 1; /* Not found */
-
- /* Fix up forward pointers */
- for (i = 0; i <= list->level; i++) {
- if (update[i]->forward[i] == entry)
- update[i]->forward[i] = entry->forward[i];
- }
-
- entry->magic = SL_FREED_MAGIC;
- SL_FREE(entry);
-
- while (list->level && !list->head->forward[list->level]) --list->level;
- --list->count;
- return 0;
-}
-
-int N(SLLookup)(void *l, unsigned long key, void **value)
-{
- SkipListPtr list = (SkipListPtr)l;
- SLEntryPtr update[SL_MAX_LEVEL + 1];
- SLEntryPtr entry;
-
- entry = SLLocate(list, key, update);
-
- if (entry && entry->key == key) {
- *value = entry;
- return 0;
- }
- *value = NULL;
- return -1;
-}
-
-int N(SLLookupNeighbors)(void *l, unsigned long key,
- unsigned long *prev_key, void **prev_value,
- unsigned long *next_key, void **next_value)
-{
- SkipListPtr list = (SkipListPtr)l;
- SLEntryPtr update[SL_MAX_LEVEL + 1];
- SLEntryPtr entry;
- int retcode = 0;
-
- entry = SLLocate(list, key, update);
-
- *prev_key = *next_key = key;
- *prev_value = *next_value = NULL;
-
- if (update[0]) {
- *prev_key = update[0]->key;
- *prev_value = update[0]->value;
- ++retcode;
- if (update[0]->forward[0]) {
- *next_key = update[0]->forward[0]->key;
- *next_value = update[0]->forward[0]->value;
- ++retcode;
- }
- }
- return retcode;
-}
-
-int N(SLNext)(void *l, unsigned long *key, void **value)
-{
- SkipListPtr list = (SkipListPtr)l;
- SLEntryPtr entry;
-
- if (list->magic != SL_LIST_MAGIC) return -1; /* Bad magic */
-
- entry = list->p0;
-
- if (entry) {
- list->p0 = entry->forward[0];
- *key = entry->key;
- *value = entry->value;
- return 1;
- }
- list->p0 = NULL;
- return 0;
-}
-
-int N(SLFirst)(void *l, unsigned long *key, void **value)
-{
- SkipListPtr list = (SkipListPtr)l;
-
- if (list->magic != SL_LIST_MAGIC) return -1; /* Bad magic */
-
- list->p0 = list->head->forward[0];
- return N(SLNext)(list, key, value);
-}
-
-/* Dump internal data structures for debugging. */
-void N(SLDump)(void *l)
-{
- SkipListPtr list = (SkipListPtr)l;
- SLEntryPtr entry;
- int i;
-
- if (list->magic != SL_LIST_MAGIC) {
- printf("Bad magic: 0x%08lx (expected 0x%08lx)\n",
- list->magic, SL_LIST_MAGIC);
- return;
- }
-
- printf("Level = %d, count = %d\n", list->level, list->count);
- for (entry = list->head; entry; entry = entry->forward[0]) {
- if (entry->magic != SL_ENTRY_MAGIC) {
- printf("Bad magic: 0x%08lx (expected 0x%08lx)\n",
- list->magic, SL_ENTRY_MAGIC);
- }
- printf("\nEntry %p <0x%08lx, %p> has %2d levels\n",
- entry, entry->key, entry->value, entry->levels);
- for (i = 0; i < entry->levels; i++) {
- if (entry->forward[i]) {
- printf(" %2d: %p <0x%08lx, %p>\n",
- i,
- entry->forward[i],
- entry->forward[i]->key,
- entry->forward[i]->value);
- } else {
- printf(" %2d: %p\n", i, entry->forward[i]);
- }
- }
- }
-}
-
-#if SL_MAIN
-static void print(SkipListPtr list)
-{
- unsigned long key;
- void *value;
-
- if (N(SLFirst)(list, &key, &value)) {
- do {
- printf("key = %5lu, value = %p\n", key, value);
- } while (N(SLNext)(list, &key, &value));
- }
-}
-
-static double do_time(int size, int iter)
-{
- SkipListPtr list;
- int i, j;
- unsigned long keys[1000000];
- unsigned long previous;
- unsigned long key;
- void *value;
- struct timeval start, stop;
- double usec;
- SL_RANDOM_DECL;
-
- SL_RANDOM_INIT(12345);
-
- list = N(SLCreate)();
-
- for (i = 0; i < size; i++) {
- keys[i] = SL_RANDOM;
- N(SLInsert)(list, keys[i], NULL);
- }
-
- previous = 0;
- if (N(SLFirst)(list, &key, &value)) {
- do {
- if (key <= previous) {
- printf( "%lu !< %lu\n", previous, key);
- }
- previous = key;
- } while (N(SLNext)(list, &key, &value));
- }
-
- gettimeofday(&start, NULL);
- for (j = 0; j < iter; j++) {
- for (i = 0; i < size; i++) {
- if (N(SLLookup)(list, keys[i], &value))
- printf("Error %lu %d\n", keys[i], i);
- }
- }
- gettimeofday(&stop, NULL);
-
- usec = (double)(stop.tv_sec * 1000000 + stop.tv_usec
- - start.tv_sec * 1000000 - start.tv_usec) / (size * iter);
-
- printf("%0.2f microseconds for list length %d\n", usec, size);
-
- N(SLDestroy)(list);
-
- return usec;
-}
-
-static void print_neighbors(void *list, unsigned long key)
-{
- unsigned long prev_key = 0;
- unsigned long next_key = 0;
- void *prev_value;
- void *next_value;
- int retval;
-
- retval = drmSLLookupNeighbors(list, key,
- &prev_key, &prev_value,
- &next_key, &next_value);
- printf("Neighbors of %5lu: %d %5lu %5lu\n",
- key, retval, prev_key, next_key);
-}
-
-int main(void)
-{
- SkipListPtr list;
- double usec, usec2, usec3, usec4;
-
- list = N(SLCreate)();
- printf( "list at %p\n", list);
-
- print(list);
- printf("\n==============================\n\n");
-
- N(SLInsert)(list, 123, NULL);
- N(SLInsert)(list, 213, NULL);
- N(SLInsert)(list, 50, NULL);
- print(list);
- printf("\n==============================\n\n");
-
- print_neighbors(list, 0);
- print_neighbors(list, 50);
- print_neighbors(list, 51);
- print_neighbors(list, 123);
- print_neighbors(list, 200);
- print_neighbors(list, 213);
- print_neighbors(list, 256);
- printf("\n==============================\n\n");
-
- N(SLDelete)(list, 50);
- print(list);
- printf("\n==============================\n\n");
-
- N(SLDump)(list);
- N(SLDestroy)(list);
- printf("\n==============================\n\n");
-
- usec = do_time(100, 10000);
- usec2 = do_time(1000, 500);
- printf("Table size increased by %0.2f, search time increased by %0.2f\n",
- 1000.0/100.0, usec2 / usec);
-
- usec3 = do_time(10000, 50);
- printf("Table size increased by %0.2f, search time increased by %0.2f\n",
- 10000.0/100.0, usec3 / usec);
-
- usec4 = do_time(100000, 4);
- printf("Table size increased by %0.2f, search time increased by %0.2f\n",
- 100000.0/100.0, usec4 / usec);
-
- return 0;
-}
-#endif
diff --git a/hw/xfree86/os-support/hurd/Makefile.am b/hw/xfree86/os-support/hurd/Makefile.am
new file mode 100644
index 000000000..731ff083d
--- /dev/null
+++ b/hw/xfree86/os-support/hurd/Makefile.am
@@ -0,0 +1,17 @@
+noinst_LTLIBRARIES = libhurd.la
+
+libhurd_la_SOURCES = hurd_bell.c hurd_init.c hurd_mmap.c \
+ hurd_mouse.c hurd_video.c \
+ $(srcdir)/../shared/VTsw_noop.c \
+ $(srcdir)/../shared/posix_tty.c \
+ $(srcdir)/../shared/libc_wrapper.c \
+ $(srcdir)/../shared/stdResource.c \
+ $(srcdir)/../shared/stdPci.c \
+ $(srcdir)/../shared/sigiostubs.c \
+ $(srcdir)/../shared/pm_noop.c \
+ $(srcdir)/../shared/kmod_noop.c \
+ $(srcdir)/../shared/agp_noop.c
+
+AM_CFLAGS = -DUSESTDRES -DHAVE_SYSV_IPC $(XORG_CFLAGS) $(DIX_CFLAGS)
+
+INCLUDES = $(XORG_INCS)
diff --git a/hw/xfree86/os-support/hurd/hurd_bell.c b/hw/xfree86/os-support/hurd/hurd_bell.c
new file mode 100644
index 000000000..2726611bb
--- /dev/null
+++ b/hw/xfree86/os-support/hurd/hurd_bell.c
@@ -0,0 +1,35 @@
+/*
+ * Copyright © 2006 Daniel Stone
+ *
+ * Permission to use, copy, modify, distribute, and sell this software and
+ * its documentation for any purpose is hereby granted without fee,
+ * provided that the above copyright notice appear in all copies and that
+ * both that this copyright notice and this permission notice appear in
+ * supporting electronic 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 COPYRIGHT HOLDERS OR AUTHORS BE LIABLE FOR ANY
+ * CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION 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: Daniel Stone <daniel@fooishbar.org>
+ */
+
+#ifdef HAVE_XORG_CONFIG_H
+#include <xorg-config.h>
+#endif
+
+#include "xf86.h"
+#include "xf86Priv.h"
+
+_X_EXPORT void
+xf86OSRingBell(int loudness, int pitch, int duration)
+{
+ return;
+}
diff --git a/hw/xfree86/os-support/hurd/hurd_init.c b/hw/xfree86/os-support/hurd/hurd_init.c
new file mode 100644
index 000000000..aec5b3d46
--- /dev/null
+++ b/hw/xfree86/os-support/hurd/hurd_init.c
@@ -0,0 +1,90 @@
+/*
+ * 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/hw/xfree86/os-support/hurd/hurd_mmap.c b/hw/xfree86/os-support/hurd/hurd_mmap.c
new file mode 100644
index 000000000..5e800d28b
--- /dev/null
+++ b/hw/xfree86/os-support/hurd/hurd_mmap.c
@@ -0,0 +1,96 @@
+/*
+ * 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<mach/machine/mach_i386.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/hw/xfree86/os-support/hurd/hurd_mouse.c b/hw/xfree86/os-support/hurd/hurd_mouse.c
new file mode 100644
index 000000000..ccc08a248
--- /dev/null
+++ b/hw/xfree86/os-support/hurd/hurd_mouse.c
@@ -0,0 +1,221 @@
+/*
+ * 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 "xisb.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
+
+/*
+ * 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->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/hw/xfree86/os-support/hurd/hurd_video.c b/hw/xfree86/os-support/hurd/hurd_video.c
new file mode 100644
index 000000000..45e9a094b
--- /dev/null
+++ b/hw/xfree86/os-support/hurd/hurd_video.c
@@ -0,0 +1,191 @@
+/*
+ * 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 <mach/machine/mach_i386.h>
+
+#include <X11/X.h>
+#include "input.h"
+#include "scrnintstr.h"
+
+#include "xf86.h"
+#include "xf86Priv.h"
+#include "xf86_OSlib.h"
+#include "xf86OSpriv.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
+ ***************************************************************************/
+mach_port_t io_port;
+
+Bool
+xf86EnableIO()
+{
+ mach_port_t device;
+ kern_return_t err;
+
+ err = get_privileged_ports(NULL, &device);
+ if( err )
+ {
+ errno = err;
+ FatalError("xf86EnableIO() can't get_privileged_ports. (%s)\n",strerror(errno));
+ }
+ err = device_open(device,D_READ|D_WRITE,"io",&io_port);
+ mach_port_deallocate(mach_task_self(), device);
+ if( err )
+ {
+ errno = err;
+ FatalError("xf86EnableIO() can't device_open. (%s)\n",strerror(errno));
+ }
+
+ err = i386_io_port_add(mach_thread_self (), io_port);
+ if( err )
+ {
+ errno = err;
+ FatalError("xf86EnableIO() can't i386_io_port_add.(io_port) (%s)\n",strerror(errno));
+ }
+ return TRUE;
+}
+
+void
+xf86DisableIO()
+{
+ kern_return_t err;
+
+ err = i386_io_port_remove(mach_thread_self (), io_port);
+ if( err )
+ {
+ errno = err;
+ FatalError("xf86DisableIO() can't i386_io_port_remove.(io_port) (%s)\n",strerror(errno));
+ }
+ mach_port_deallocate(mach_task_self(), io_port);
+ 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/hw/xfree86/os-support/int10Defines.h b/hw/xfree86/os-support/int10Defines.h
index 56e10cf67..d942fbdad 100644
--- a/hw/xfree86/os-support/int10Defines.h
+++ b/hw/xfree86/os-support/int10Defines.h
@@ -1,4 +1,3 @@
-/* $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.
*
diff --git a/hw/xfree86/os-support/linux/Makefile.am b/hw/xfree86/os-support/linux/Makefile.am
index d492f962e..9c4fa4984 100644
--- a/hw/xfree86/os-support/linux/Makefile.am
+++ b/hw/xfree86/os-support/linux/Makefile.am
@@ -1,7 +1,9 @@
noinst_LTLIBRARIES = liblinux.la
if LINUX_IA64
-PLATFORM_PCI_SUPPORT = $(srcdir)/../shared/ia64Pci.c
+PLATFORM_PCI_SUPPORT = $(srcdir)/lnx_ia64.c $(srcdir)/../shared/ia64Pci.c
+PLATFORM_DEFINES = -DOS_PROBE_PCI_CHIPSET=lnxProbePciChipset
+PLATFORM_INCLUDES = -I$(srcdir)/../shared
endif
if LINUX_ALPHA
PLATFORM_PCI_SUPPORT = lnx_ev56.c \
@@ -10,44 +12,39 @@ PLATFORM_PCI_SUPPORT = lnx_ev56.c \
endif
if LNXACPI
-ACPI_SOURCES = lnx_acpi.c lnx_apm.c
+ACPI_SRCS = lnx_acpi.c lnx_apm.c
XORG_CFLAGS += -DHAVE_ACPI
endif
if LNXAPM
-APM_SOURCES = lnx_apm.c
+APM_SRCS = lnx_apm.c
XORG_CFLAGS += -DHAVE_APM
endif
-liblinux_la_SOURCES = lnx_init.c lnx_video.c lnx_io.c lnx_kbd.c lnx_mouse.c \
- lnx_pci.c lnx_agp.c lnx_kmod.c lnx_KbdMap.c \
+liblinux_la_SOURCES = lnx_init.c lnx_video.c lnx_mouse.c \
+ lnx_pci.c lnx_agp.c lnx_kmod.c lnx_bell.c \
$(srcdir)/../shared/bios_mmap.c \
$(srcdir)/../shared/VTsw_usl.c \
- $(srcdir)/../shared/std_kbdEv.c \
$(srcdir)/../shared/posix_tty.c \
$(srcdir)/../shared/vidmem.c \
$(srcdir)/../shared/sigio.c \
$(srcdir)/../shared/stdResource.c \
$(srcdir)/../shared/libc_wrapper.c \
- $(srcdir)/../shared/at_scancode.c \
- $(ACPI_SOURCES) \
- $(APM_SOURCES) \
+ $(ACPI_SRCS) \
+ $(APM_SRCS) \
$(PLATFORM_PCI_SUPPORT)
-AM_CFLAGS = -DUSESTDRES -DHAVE_SYSV_IPC $(XORG_CFLAGS) @SERVER_DEFINES@ @LOADER_DEFINES@
+AM_CFLAGS = -DUSESTDRES -DHAVE_SYSV_IPC $(DIX_CFLAGS) $(XORG_CFLAGS) $(PLATFORM_DEFINES)
-INCLUDES = $(XORG_INCS) -I/usr/include/drm # FIXME this last part is crack
+INCLUDES = $(XORG_INCS) $(PLATFORM_INCLUDES) -I/usr/include/drm # FIXME this last part is crack
# FIXME: These need to be added to the build
-LNX_EXTRA_SOURCES = \
+LNX_EXTRA_SRCS = \
lnx_font.c \
- lnx_ia64.c \
lnx_jstk.c \
lnxResource.c
EXTRA_DIST = \
- $(LNX_EXTRA_SOURCES) \
+ $(LNX_EXTRA_SRCS) \
lnx.h \
- lnx_kbd.h \
- $(srcdir)/../shared/ia64Pci.h \
$(srcdir)/../shared/xf86Axp.h
diff --git a/hw/xfree86/os-support/linux/int10/linux.c b/hw/xfree86/os-support/linux/int10/linux.c
index a91137810..dd1637a23 100644
--- a/hw/xfree86/os-support/linux/int10/linux.c
+++ b/hw/xfree86/os-support/linux/int10/linux.c
@@ -1,4 +1,3 @@
-/* $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
@@ -18,12 +17,6 @@
#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)
@@ -79,16 +72,9 @@ 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;
@@ -104,6 +90,7 @@ xf86ExtendedInitInt10(int entityIndex, int Flags)
legacyVGARec vga;
xf86int10BiosLocation bios;
Bool videoBiosMapped = FALSE;
+ pciVideoPtr pvp;
if (int10Generation != serverGeneration) {
counter = 0;
@@ -165,6 +152,8 @@ xf86ExtendedInitInt10(int entityIndex, int Flags)
pInt = (xf86Int10InfoPtr)xnfcalloc(1, sizeof(xf86Int10InfoRec));
pInt->scrnIndex = screen;
pInt->entityIndex = entityIndex;
+ pvp = xf86GetPciInfoForEntity(entityIndex);
+ if (pvp) pInt->Tag = pciTag(pvp->bus, pvp->device, pvp->func);
if (!xf86Int10ExecSetup(pInt))
goto error0;
pInt->mem = &linuxMem;
@@ -270,52 +259,15 @@ xf86ExtendedInitInt10(int entityIndex, int Flags)
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;
- }
- }
- }
+ if (! xf86int10GetBiosSegment(pInt, &bios, NULL)) {
+ 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);
@@ -324,41 +276,17 @@ xf86ExtendedInitInt10(int entityIndex, int Flags)
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;
+ const BusType location_type = xf86int10GetBiosLocationType(pInt,
+ &bios);
switch (location_type) {
- case BUS_PCI:
- {
- int pci_entity;
+ case BUS_PCI: {
+ const int pci_entity = (bios.bus == BUS_PCI)
+ ? xf86GetPciEntity(bios.location.pci.bus,
+ bios.location.pci.dev,
+ bios.location.pci.func)
+ : pInt->entityIndex;
- 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;
@@ -367,38 +295,14 @@ xf86ExtendedInitInt10(int entityIndex, int Flags)
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;
- }
- }
- }
+ if (! xf86int10GetBiosSegment(pInt, &bios, NULL)) {
+ 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);
diff --git a/hw/xfree86/os-support/linux/lnx.h b/hw/xfree86/os-support/linux/lnx.h
index 68ad34011..5aca9e9b1 100644
--- a/hw/xfree86/os-support/linux/lnx.h
+++ b/hw/xfree86/os-support/linux/lnx.h
@@ -1,4 +1,3 @@
-/* $XFree86: Exp $ */
#ifdef HAVE_XORG_CONFIG_H
#include <xorg-config.h>
diff --git a/hw/xfree86/os-support/linux/lnxResource.c b/hw/xfree86/os-support/linux/lnxResource.c
index d01297901..6f89cdb07 100644
--- a/hw/xfree86/os-support/linux/lnxResource.c
+++ b/hw/xfree86/os-support/linux/lnxResource.c
@@ -1,4 +1,3 @@
-/* $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 */
diff --git a/hw/xfree86/os-support/linux/lnx_KbdMap.c b/hw/xfree86/os-support/linux/lnx_KbdMap.c
deleted file mode 100644
index a2a2e224d..000000000
--- a/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[] =
-{
- 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/hw/xfree86/os-support/linux/lnx_acpi.c b/hw/xfree86/os-support/linux/lnx_acpi.c
index 6712c090f..024e6ef09 100644
--- a/hw/xfree86/os-support/linux/lnx_acpi.c
+++ b/hw/xfree86/os-support/linux/lnx_acpi.c
@@ -36,6 +36,20 @@ static void lnxCloseACPI(void);
static pointer ACPIihPtr = NULL;
PMClose lnxACPIOpen(void);
+/* in milliseconds */
+#define ACPI_REOPEN_DELAY 1000
+
+static CARD32
+lnxACPIReopen(OsTimerPtr timer, CARD32 time, pointer arg)
+{
+ if (lnxACPIOpen()) {
+ TimerFree(timer);
+ return 0;
+ }
+
+ return ACPI_REOPEN_DELAY;
+}
+
#define LINE_LENGTH 80
static int
@@ -52,8 +66,7 @@ lnxACPIGetEventFromOs(int fd, pmEvent *events, int num)
if (n <= 0) {
lnxCloseACPI();
- sleep(1);
- lnxACPIOpen();
+ TimerSet(NULL, 0, ACPI_REOPEN_DELAY, lnxACPIReopen, NULL);
return 0;
}
@@ -65,7 +78,7 @@ lnxACPIGetEventFromOs(int fd, pmEvent *events, int num)
char *data = NULL; /* doesn't appear to be used in the kernel */
unsigned long int notify_l, data_l;
- video = strtok(ev, "video");
+ video = strtok(ev, " ");
GFX = strtok(NULL, " ");
#if 0
@@ -150,7 +163,7 @@ lnxACPIOpen(void)
xf86PMGetEventFromOs = lnxACPIGetEventFromOs;
xf86PMConfirmEventToOs = lnxACPIConfirmEventToOs;
- ACPIihPtr = xf86AddInputHandler(fd,xf86HandlePMEvents,NULL);
+ ACPIihPtr = xf86AddGeneralHandler(fd,xf86HandlePMEvents,NULL);
xf86MsgVerb(X_INFO,3,"Open ACPI successful (%s)\n", ACPI_SOCKET);
return lnxCloseACPI;
@@ -165,10 +178,9 @@ lnxCloseACPI(void)
ErrorF("ACPI: Closing device\n");
#endif
if (ACPIihPtr) {
- fd = xf86RemoveInputHandler(ACPIihPtr);
+ fd = xf86RemoveGeneralHandler(ACPIihPtr);
shutdown(fd, 2);
close(fd);
ACPIihPtr = NULL;
}
}
-
diff --git a/hw/xfree86/os-support/linux/lnx_agp.c b/hw/xfree86/os-support/linux/lnx_agp.c
index 65a5a0ea3..ded9e0fae 100644
--- a/hw/xfree86/os-support/linux/lnx_agp.c
+++ b/hw/xfree86/os-support/linux/lnx_agp.c
@@ -1,13 +1,12 @@
/*
* Abstraction of the AGP GART interface.
*
- * This version is for both Linux and FreeBSD.
+ * This version is for Linux and Free/Open/NetBSD.
*
* 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>
@@ -264,7 +263,11 @@ xf86DeallocateGARTMemory(int screenNum, int key)
return FALSE;
}
+#ifdef __linux__
if (ioctl(gartFd, AGPIOC_DEALLOCATE, (int *)key) != 0) {
+#else
+ if (ioctl(gartFd, AGPIOC_DEALLOCATE, &key) != 0) {
+#endif
xf86DrvMsg(screenNum, X_WARNING,"xf86DeAllocateGARTMemory: "
"deallocation gart memory with key %d failed\n\t(%s)\n",
key, strerror(errno));
diff --git a/hw/xfree86/os-support/linux/lnx_apm.c b/hw/xfree86/os-support/linux/lnx_apm.c
index a0722edd7..16ac80db8 100644
--- a/hw/xfree86/os-support/linux/lnx_apm.c
+++ b/hw/xfree86/os-support/linux/lnx_apm.c
@@ -1,4 +1,3 @@
-/* $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>
diff --git a/hw/xfree86/os-support/linux/lnx_axp.c b/hw/xfree86/os-support/linux/lnx_axp.c
index d2aa03587..0a7612965 100644
--- a/hw/xfree86/os-support/linux/lnx_axp.c
+++ b/hw/xfree86/os-support/linux/lnx_axp.c
@@ -1,4 +1,3 @@
-/* $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>
diff --git a/hw/xfree86/os-support/linux/lnx_bell.c b/hw/xfree86/os-support/linux/lnx_bell.c
new file mode 100644
index 000000000..6ef881bf7
--- /dev/null
+++ b/hw/xfree86/os-support/linux/lnx_bell.c
@@ -0,0 +1,43 @@
+/*
+ * Copyright © 2006 Daniel Stone
+ *
+ * Permission to use, copy, modify, distribute, and sell this software and
+ * its documentation for any purpose is hereby granted without fee,
+ * provided that the above copyright notice appear in all copies and that
+ * both that this copyright notice and this permission notice appear in
+ * supporting electronic 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 COPYRIGHT HOLDERS OR AUTHORS BE LIABLE FOR ANY
+ * CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION 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: Daniel Stone <daniel@fooishbar.org>
+ */
+
+#ifdef HAVE_XORG_CONFIG_H
+#include <xorg-config.h>
+#endif
+
+#include <sys/ioctl.h>
+#include <linux/kd.h>
+
+#include "xf86.h"
+#include "xf86Priv.h"
+
+_X_EXPORT void
+xf86OSRingBell(int loudness, int pitch, int duration)
+{
+ if (xf86Info.consoleFd == -1 || !pitch || !loudness)
+ return;
+
+ ioctl(xf86Info.consoleFd, KDMKTONE,
+ ((1193190 / pitch) & 0xffff) |
+ (((unsigned long)duration * loudness / 50) << 16));
+}
diff --git a/hw/xfree86/os-support/linux/lnx_ev56.c b/hw/xfree86/os-support/linux/lnx_ev56.c
index 63077e907..78756a67c 100644
--- a/hw/xfree86/os-support/linux/lnx_ev56.c
+++ b/hw/xfree86/os-support/linux/lnx_ev56.c
@@ -1,4 +1,3 @@
-/* $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>
diff --git a/hw/xfree86/os-support/linux/lnx_init.c b/hw/xfree86/os-support/linux/lnx_init.c
index 9933c6f7b..85b6def56 100644
--- a/hw/xfree86/os-support/linux/lnx_init.c
+++ b/hw/xfree86/os-support/linux/lnx_init.c
@@ -1,5 +1,3 @@
-/* $XdotOrg: xc/programs/Xserver/hw/xfree86/os-support/linux/lnx_init.c,v 1.5 2005/04/20 12:25:35 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>
diff --git a/hw/xfree86/os-support/linux/lnx_io.c b/hw/xfree86/os-support/linux/lnx_io.c
deleted file mode 100644
index 32f660108..000000000
--- a/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 */
-
-_X_EXPORT 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/hw/xfree86/os-support/linux/lnx_jstk.c b/hw/xfree86/os-support/linux/lnx_jstk.c
index 667586359..6ed0e44c6 100644
--- a/hw/xfree86/os-support/linux/lnx_jstk.c
+++ b/hw/xfree86/os-support/linux/lnx_jstk.c
@@ -23,7 +23,6 @@
*
*/
-/* $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";
@@ -40,9 +39,7 @@ static const char rcs_id[] = "Id: lnx_jstk.c,v 1.1 1995/12/20 14:06:09 lepied Ex
#include <fcntl.h>
#include <sys/ioctl.h>
-#ifdef XFree86LOADER
#include "xf86.h"
-#endif
#if !defined(JSIOCGTIMELIMIT)
/* make 2.1.x joystick.h backward compatable */
@@ -172,7 +169,6 @@ xf86JoystickGetState(int fd, int *x, int *y, int *buttons)
return 1;
}
-#ifdef XFree86LOADER
/*
* Entry point for XFree86 Loader
*/
@@ -182,6 +178,5 @@ linux_jstkModuleInit(pointer *data, INT32 *magic)
*magic = MAGIC_DONE;
*data = NULL;
}
-#endif
/* end of lnx_jstk.c */
diff --git a/hw/xfree86/os-support/linux/lnx_kbd.c b/hw/xfree86/os-support/linux/lnx_kbd.c
deleted file mode 100644
index 504c52710..000000000
--- a/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;
-}
-
-_X_EXPORT 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/hw/xfree86/os-support/linux/lnx_kbd.h b/hw/xfree86/os-support/linux/lnx_kbd.h
deleted file mode 100644
index ac783bfbc..000000000
--- a/hw/xfree86/os-support/linux/lnx_kbd.h
+++ /dev/null
@@ -1,5 +0,0 @@
-/* $XFree86: xc/programs/Xserver/hw/xfree86/os-support/linux/lnx_kbd.h,v 1.1 2002/10/11 01:40:35 dawes Exp $ */
-
-extern void KbdGetMapping(InputInfoPtr pInfo, KeySymsPtr pKeySyms,
- CARD8 *pModMap);
-
diff --git a/hw/xfree86/os-support/linux/lnx_kmod.c b/hw/xfree86/os-support/linux/lnx_kmod.c
index 5e91032d3..4e6f2d25d 100644
--- a/hw/xfree86/os-support/linux/lnx_kmod.c
+++ b/hw/xfree86/os-support/linux/lnx_kmod.c
@@ -1,4 +1,3 @@
-/* $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>
diff --git a/hw/xfree86/os-support/linux/lnx_mouse.c b/hw/xfree86/os-support/linux/lnx_mouse.c
index afd216028..150547ea4 100644
--- a/hw/xfree86/os-support/linux/lnx_mouse.c
+++ b/hw/xfree86/os-support/linux/lnx_mouse.c
@@ -1,4 +1,3 @@
-/* $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.
@@ -29,7 +28,7 @@ DefaultProtocol(void)
return "Auto";
}
-#define DEFAULT_MOUSE_DEV "/dev/mouse"
+#define DEFAULT_MOUSE_DEV "/dev/input/mice"
#define DEFAULT_PS2_DEV "/dev/psaux"
#define DEFAULT_GPM_DATA_DEV "/dev/gpmdata"
#define DEFAULT_GPM_CTL_DEV "/dev/gpmdata"
diff --git a/hw/xfree86/os-support/linux/lnx_pci.c b/hw/xfree86/os-support/linux/lnx_pci.c
index 72939f489..a95703899 100644
--- a/hw/xfree86/os-support/linux/lnx_pci.c
+++ b/hw/xfree86/os-support/linux/lnx_pci.c
@@ -1,10 +1,11 @@
-/* $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 <sys/types.h>
#include <stdio.h>
+#include <dirent.h>
#include <X11/X.h>
#include "os.h"
#include "xf86.h"
@@ -26,8 +27,10 @@
int lnxPciInit(void);
struct pci_dev {
+ unsigned int domain;
unsigned int bus;
- unsigned int devfn;
+ unsigned int dev;
+ unsigned int fn;
PCIADDR_TYPE offset[7];
PCIADDR_TYPE size[7];
struct pci_dev *next;
@@ -39,10 +42,53 @@ int xf86OSLinuxNumPciDevs = 0;
static struct pci_dev *xf86OSLinuxGetPciDevs(void) {
char c[0x200];
FILE *file = NULL;
+ DIR *dir;
+ struct dirent *dirent;
struct pci_dev *tmp, *ret = NULL;
- unsigned int num;
+ unsigned int i, num, devfn;
+ unsigned PCIADDR_TYPE begin, end;
char *res;
+ /* Try 2.6 devices first, with domain support */
+ if ( (dir = opendir ("/sys/bus/pci/devices")) ) {
+ xf86OSLinuxNumPciDevs = 0;
+ while ( (dirent = readdir (dir)) ) {
+ unsigned int domain, bus, dev, fn;
+ if (sscanf (dirent->d_name, "%04x:%02x:%02x.%01x",
+ &domain, &bus, &dev, &fn) == 4) {
+ tmp = xcalloc (sizeof(struct pci_dev), 1);
+ tmp->domain = domain;
+ tmp->bus = bus;
+ tmp->dev = dev;
+ tmp->fn = fn;
+ sprintf (c, "/sys/bus/pci/devices/%12s/resource",
+ dirent->d_name);
+ i = 0;
+ if ( (file = fopen (c, "r")) ) {
+ while (i < 7 && fgets (c, 0x200, file)) {
+ if (sscanf (c, PCIADDR_FMT " " PCIADDR_FMT " "
+ PCIADDR_IGNORE_FMT, &begin, &end) == 2) {
+ tmp->offset[i] = begin;
+ tmp->size[i] = begin ? end-begin+1 : 0;
+ i++;
+ }
+ }
+ fclose (file);
+ }
+ if (i > 0) {
+ tmp->next = ret;
+ ret = tmp;
+ xf86OSLinuxNumPciDevs++;
+ } else
+ xfree (tmp);
+ }
+ }
+ closedir (dir);
+ }
+
+ if (ret)
+ return ret;
+
file = fopen("/proc/bus/pci/devices", "r");
if (!file) return NULL;
@@ -71,9 +117,11 @@ static struct pci_dev *xf86OSLinuxGetPciDevs(void) {
"\t" PCIADDR_FMT
"\t" PCIADDR_FMT
"\t" PCIADDR_FMT,
- &tmp->bus,&tmp->devfn,&tmp->offset[0],&tmp->offset[1],&tmp->offset[2],&tmp->offset[3],
+ &tmp->bus,&devfn,&tmp->offset[0],&tmp->offset[1],&tmp->offset[2],&tmp->offset[3],
&tmp->offset[4],&tmp->offset[5],&tmp->offset[6], &tmp->size[0], &tmp->size[1], &tmp->size[2],
&tmp->size[3], &tmp->size[4], &tmp->size[5], &tmp->size[6]);
+ tmp->dev = devfn >> 3;
+ tmp->fn = devfn & 0x7;
if (num != 16) { /* apparantly not 2.3 style */
xfree(tmp);
fclose(file);
@@ -101,11 +149,10 @@ int lnxPciInit(void) {
Bool
xf86GetPciSizeFromOS(PCITAG tag, int index, int* bits)
{
- unsigned int dev, fn;
signed PCIADDR_TYPE Size;
struct pci_dev *device;
- if (index > 7)
+ if (index >= 7)
return FALSE;
if (!xf86OSLinuxPCIDevs) {
@@ -115,10 +162,8 @@ xf86GetPciSizeFromOS(PCITAG tag, int index, int* bits)
return FALSE;
for (device = xf86OSLinuxPCIDevs; device; device = device->next) {
- dev = device->devfn >> 3;
- fn = device->devfn & 0x7;
- if (tag == pciTag(device->bus,dev,fn)) {
- *bits = 0;
+ if (tag == pciDomTag (device->domain, device->bus,
+ device->dev, device->fn)) {
if (device->size[index] != 0) {
Size = device->size[index] - ((PCIADDR_TYPE) 1);
while (Size & ((PCIADDR_TYPE) 0x01)) {
@@ -135,14 +180,14 @@ xf86GetPciSizeFromOS(PCITAG tag, int index, int* bits)
+#if 0
/* Query the kvirt address (64bit) of a BAR range from TAG */
Bool
xf86GetPciOffsetFromOS(PCITAG tag, int index, unsigned long* bases)
{
- unsigned int dev, fn;
struct pci_dev *device;
- if (index > 7)
+ if (index >= 7)
return FALSE;
if (!xf86OSLinuxPCIDevs) {
@@ -152,9 +197,8 @@ xf86GetPciOffsetFromOS(PCITAG tag, int index, unsigned long* bases)
return FALSE;
for (device = xf86OSLinuxPCIDevs; device; device = device->next) {
- dev = device->devfn >> 3;
- fn = device->devfn & 0x7;
- if (tag == pciTag(device->bus,dev,fn)) {
+ if (tag == pciDomTag (device->domain, device->bus,
+ device->dev, device->fn)) {
/* return the offset for the index requested */
*bases = device->offset[index];
return TRUE;
@@ -163,12 +207,12 @@ xf86GetPciOffsetFromOS(PCITAG tag, int index, unsigned long* bases)
return FALSE;
}
+#endif
/* 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)
{
- unsigned int dev, fn;
unsigned int ndx;
struct pci_dev *device;
@@ -180,9 +224,8 @@ xf86GetOSOffsetFromPCI(PCITAG tag, int space, unsigned long base)
}
for (device = xf86OSLinuxPCIDevs; device; device = device->next) {
- dev = device->devfn >> 3;
- fn = device->devfn & 0x7;
- if (tag == pciTag(device->bus, dev, fn)) {
+ if (tag == pciDomTag (device->domain, device->bus,
+ device->dev, device->fn)) {
/* ok now look through all the BAR values of this device */
pciConfigPtr pDev = xf86GetPciConfigFromTag(tag);
diff --git a/hw/xfree86/os-support/linux/lnx_video.c b/hw/xfree86/os-support/linux/lnx_video.c
index 29b7800f3..4b580464f 100644
--- a/hw/xfree86/os-support/linux/lnx_video.c
+++ b/hw/xfree86/os-support/linux/lnx_video.c
@@ -1,5 +1,3 @@
-/* $XdotOrg: xserver/xorg/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>
@@ -466,7 +464,7 @@ mapVidMem(int ScreenNum, unsigned long Base, unsigned long Size, int flags)
Base,realBase,alignOff);
#endif
-#if defined(__ia64__)
+#if defined(__ia64__) || defined(__arm__) || defined(__s390__)
#ifndef MAP_WRITECOMBINED
#define MAP_WRITECOMBINED 0x00010000
#endif
@@ -596,7 +594,7 @@ xf86DisableIO(void)
#if defined(__powerpc__)
munmap(ioBase, 0x20000);
ioBase = NULL;
-#elif !defined(__mc68000__) && !defined(__sparc__) && !defined(__mips__) && !defined(__sh__) && !defined(__hppa__)
+#elif !defined(__mc68000__) && !defined(__sparc__) && !defined(__mips__) && !defined(__sh__) && !defined(__hppa__) && !defined(__arm__) && !defined(__s390__)
iopl(0);
ioperm(0, 1024, 0);
#endif
@@ -615,12 +613,12 @@ xf86DisableIO(void)
_X_EXPORT Bool
xf86DisableInterrupts()
{
-#if !defined(__mc68000__) && !defined(__powerpc__) && !defined(__sparc__) && !defined(__mips__) && !defined(__ia64__) && !defined(__sh__) && !defined(__hppa__)
+#if !defined(__mc68000__) && !defined(__powerpc__) && !defined(__sparc__) && !defined(__mips__) && !defined(__ia64__) && !defined(__sh__) && !defined(__hppa__) && !defined(__arm__) && !defined(__s390__)
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__)
+#if defined(__alpha__) || defined(__mc68000__) || defined(__powerpc__) || defined(__sparc__) || defined(__mips__) || defined(__arm__) || defined(__sh__) || defined(__ia64__) || defined(__hppa__) || defined(__s390__)
#else
# ifdef __GNUC__
# if defined(__ia64__)
@@ -634,7 +632,7 @@ xf86DisableInterrupts()
asm("cli");
# endif
#endif
-#if !defined(__mc68000__) && !defined(__powerpc__) && !defined(__sparc__) && !defined(__mips__) && !defined(__sh__) && !defined(__ia64__) && !defined(__hppa__)
+#if !defined(__mc68000__) && !defined(__powerpc__) && !defined(__sparc__) && !defined(__mips__) && !defined(__sh__) && !defined(__ia64__) && !defined(__hppa__) && !defined(__arm__) && !defined(__s390__)
if (!ExtendedEnabled) {
iopl(0);
ioperm(0, 1024, 0);
@@ -647,12 +645,12 @@ xf86DisableInterrupts()
_X_EXPORT void
xf86EnableInterrupts()
{
-#if !defined(__mc68000__) && !defined(__powerpc__) && !defined(__sparc__) && !defined(__mips__) && !defined(__ia64__) && !defined(__sh__) && !defined(__hppa__)
+#if !defined(__mc68000__) && !defined(__powerpc__) && !defined(__sparc__) && !defined(__mips__) && !defined(__ia64__) && !defined(__sh__) && !defined(__hppa__) && !defined(__arm__) && !defined(__s390__)
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__)
+#if defined(__alpha__) || defined(__mc68000__) || defined(__powerpc__) || defined(__sparc__) || defined(__mips__) || defined(__arm__) || defined(__sh__) || defined(__ia64__) || defined(__hppa__) || defined(__s390__)
#else
# ifdef __GNUC__
# if defined(__ia64__)
@@ -666,7 +664,7 @@ xf86EnableInterrupts()
asm("sti");
# endif
#endif
-#if !defined(__mc68000__) && !defined(__powerpc__) && !defined(__sparc__) && !defined(__mips__) && !defined(__sh__) && !defined(__ia64__) && !defined(__hppa__)
+#if !defined(__mc68000__) && !defined(__powerpc__) && !defined(__sparc__) && !defined(__mips__) && !defined(__sh__) && !defined(__ia64__) && !defined(__hppa__) && !defined(__arm__) && !defined(__s390__)
if (!ExtendedEnabled) {
iopl(0);
ioperm(0, 1024, 0);
diff --git a/hw/xfree86/os-support/lynxos/Makefile.am b/hw/xfree86/os-support/lynxos/Makefile.am
index 0bb514b8a..4085c49a9 100644
--- a/hw/xfree86/os-support/lynxos/Makefile.am
+++ b/hw/xfree86/os-support/lynxos/Makefile.am
@@ -1,6 +1,5 @@
EXTRA_DIST = \
lynx_init.c \
- lynx_io.c \
lynx_mmap.c \
lynx_mouse.c \
lynx_noinline.c \
diff --git a/hw/xfree86/os-support/lynxos/lynx_init.c b/hw/xfree86/os-support/lynxos/lynx_init.c
index 84db50127..03f72ca19 100644
--- a/hw/xfree86/os-support/lynxos/lynx_init.c
+++ b/hw/xfree86/os-support/lynxos/lynx_init.c
@@ -22,7 +22,6 @@
*/
-/* $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>
diff --git a/hw/xfree86/os-support/lynxos/lynx_io.c b/hw/xfree86/os-support/lynxos/lynx_io.c
deleted file mode 100644
index 761fec0e0..000000000
--- a/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.... */
-_X_EXPORT 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"
-
-_X_EXPORT Bool
-xf86OSKbdPreInit(InputInfoPtr pInfo)
-{
- return FALSE;
-}
diff --git a/hw/xfree86/os-support/lynxos/lynx_mmap.c b/hw/xfree86/os-support/lynxos/lynx_mmap.c
index 75ed0731b..3364399aa 100644
--- a/hw/xfree86/os-support/lynxos/lynx_mmap.c
+++ b/hw/xfree86/os-support/lynxos/lynx_mmap.c
@@ -21,7 +21,6 @@
*
*/
-/* $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>
diff --git a/hw/xfree86/os-support/lynxos/lynx_mouse.c b/hw/xfree86/os-support/lynxos/lynx_mouse.c
index c04d0f71a..b48202977 100644
--- a/hw/xfree86/os-support/lynxos/lynx_mouse.c
+++ b/hw/xfree86/os-support/lynxos/lynx_mouse.c
@@ -1,4 +1,3 @@
-/* $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.
diff --git a/hw/xfree86/os-support/lynxos/lynx_noinline.c b/hw/xfree86/os-support/lynxos/lynx_noinline.c
index 0e143256a..d4db82cca 100644
--- a/hw/xfree86/os-support/lynxos/lynx_noinline.c
+++ b/hw/xfree86/os-support/lynxos/lynx_noinline.c
@@ -1,4 +1,3 @@
-/* $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
*
diff --git a/hw/xfree86/os-support/lynxos/lynx_ppc.c b/hw/xfree86/os-support/lynxos/lynx_ppc.c
index e587b7ee0..6300f38c8 100644
--- a/hw/xfree86/os-support/lynxos/lynx_ppc.c
+++ b/hw/xfree86/os-support/lynxos/lynx_ppc.c
@@ -1,4 +1,3 @@
-/* $XFree86: xc/programs/Xserver/hw/xfree86/os-support/lynxos/lynx_ppc.c,v 1.1 2002/12/14 04:41:14 dawes Exp $ */
/*
* Copyright 1998 by Metro Link Incorporated
*
diff --git a/hw/xfree86/os-support/lynxos/lynx_video.c b/hw/xfree86/os-support/lynxos/lynx_video.c
index 4e707a989..4602076c7 100644
--- a/hw/xfree86/os-support/lynxos/lynx_video.c
+++ b/hw/xfree86/os-support/lynxos/lynx_video.c
@@ -21,7 +21,6 @@
*
*/
-/* $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>
diff --git a/hw/xfree86/os-support/misc/BUSmemcpy.c b/hw/xfree86/os-support/misc/BUSmemcpy.c
index 58864e5e0..b482b867a 100644
--- a/hw/xfree86/os-support/misc/BUSmemcpy.c
+++ b/hw/xfree86/os-support/misc/BUSmemcpy.c
@@ -12,7 +12,6 @@ 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>
diff --git a/hw/xfree86/os-support/misc/Delay.c b/hw/xfree86/os-support/misc/Delay.c
index 7c105a9e0..b56595377 100644
--- a/hw/xfree86/os-support/misc/Delay.c
+++ b/hw/xfree86/os-support/misc/Delay.c
@@ -1,4 +1,3 @@
-/* $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>
diff --git a/hw/xfree86/os-support/misc/IODelay.c b/hw/xfree86/os-support/misc/IODelay.c
index 083cfed8a..54b7c1816 100644
--- a/hw/xfree86/os-support/misc/IODelay.c
+++ b/hw/xfree86/os-support/misc/IODelay.c
@@ -4,7 +4,6 @@
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>
diff --git a/hw/xfree86/os-support/misc/Makefile.am b/hw/xfree86/os-support/misc/Makefile.am
index 5ce23a1f1..65fbe92b4 100644
--- a/hw/xfree86/os-support/misc/Makefile.am
+++ b/hw/xfree86/os-support/misc/Makefile.am
@@ -1,23 +1,23 @@
# FIXME: Add the *.S files to build when applicable
-I386_SOURCES = BUSmemcpy.S IODelay.S SlowBcopy.S
-OTHER_SOURCES = BUSmemcpy.c IODelay.c SlowBcopy.c
+I386_SRCS = BUSmemcpy.S IODelay.S SlowBcopy.S
+OTHER_SRCS = BUSmemcpy.c IODelay.c SlowBcopy.c
-ARCH_SOURCES = $(OTHER_SOURCES)
+ARCH_SRCS = $(OTHER_SRCS)
# FIXME: Add to the build (NeedPortIO)
-PORTIO_SOURCES = PortIO.S
+PORTIO_SRCS = PortIO.S
# FIXME: Add to the build (if HasGcc || HasGcc2)
-ILHACK_SOURCES = xf86_IlHack.c
+ILHACK_SRCS = xf86_IlHack.c
noinst_LTLIBRARIES = libmisc.la
-libmisc_la_SOURCES = xf86_Util.c Delay.c $(ARCH_SOURCES)
+libmisc_la_SOURCES = xf86_Util.c Delay.c $(ARCH_SRCS)
#AM_LDFLAGS = -r
INCLUDES = $(XORG_INCS)
-AM_CFLAGS = $(XORG_CFLAGS) @SERVER_DEFINES@ @LOADER_DEFINES@
+AM_CFLAGS = $(XORG_CFLAGS) $(DIX_CFLAGS)
-EXTRA_DIST = $(I386_SOURCES) $(PORTIO_SOURCES) $(ILHACK_SOURCES)
+EXTRA_DIST = $(I386_SRCS) $(PORTIO_SRCS) $(ILHACK_SRCS)
diff --git a/hw/xfree86/os-support/misc/SlowBcopy.c b/hw/xfree86/os-support/misc/SlowBcopy.c
index be870194a..1fda7fc10 100644
--- a/hw/xfree86/os-support/misc/SlowBcopy.c
+++ b/hw/xfree86/os-support/misc/SlowBcopy.c
@@ -4,7 +4,6 @@
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
diff --git a/hw/xfree86/os-support/misc/xf86_IlHack.c b/hw/xfree86/os-support/misc/xf86_IlHack.c
index d8053f7d2..1ec0f569d 100644
--- a/hw/xfree86/os-support/misc/xf86_IlHack.c
+++ b/hw/xfree86/os-support/misc/xf86_IlHack.c
@@ -1,4 +1,3 @@
-/* $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.
diff --git a/hw/xfree86/os-support/misc/xf86_Util.c b/hw/xfree86/os-support/misc/xf86_Util.c
index afcdd5b69..77df1e248 100644
--- a/hw/xfree86/os-support/misc/xf86_Util.c
+++ b/hw/xfree86/os-support/misc/xf86_Util.c
@@ -1,4 +1,3 @@
-/* $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>
*
diff --git a/hw/xfree86/os-support/sco/Makefile.am b/hw/xfree86/os-support/sco/Makefile.am
index 1271c9d34..9cb5011fb 100644
--- a/hw/xfree86/os-support/sco/Makefile.am
+++ b/hw/xfree86/os-support/sco/Makefile.am
@@ -1,10 +1,6 @@
EXTRA_DIST = \
VTsw_sco.c \
- sco_KbdMap.c \
sco_init.c \
- sco_io.c \
sco_iop.c \
- sco_kbd.c \
- sco_kbd.h \
sco_mouse.c \
sco_video.c
diff --git a/hw/xfree86/os-support/sco/VTsw_sco.c b/hw/xfree86/os-support/sco/VTsw_sco.c
index beb86ccad..ba2f7adee 100644
--- a/hw/xfree86/os-support/sco/VTsw_sco.c
+++ b/hw/xfree86/os-support/sco/VTsw_sco.c
@@ -1,4 +1,3 @@
-/* $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>
diff --git a/hw/xfree86/os-support/sco/sco_KbdMap.c b/hw/xfree86/os-support/sco/sco_KbdMap.c
deleted file mode 100644
index 6a0e9de04..000000000
--- a/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/hw/xfree86/os-support/sco/sco_init.c b/hw/xfree86/os-support/sco/sco_init.c
index bc1f3b56d..07f30f019 100644
--- a/hw/xfree86/os-support/sco/sco_init.c
+++ b/hw/xfree86/os-support/sco/sco_init.c
@@ -1,4 +1,3 @@
-/* $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>
*
diff --git a/hw/xfree86/os-support/sco/sco_io.c b/hw/xfree86/os-support/sco/sco_io.c
deleted file mode 100644
index 6067d51a5..000000000
--- a/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>
-
-_X_EXPORT 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/hw/xfree86/os-support/sco/sco_kbd.c b/hw/xfree86/os-support/sco/sco_kbd.c
deleted file mode 100644
index 8b1d5b762..000000000
--- a/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;
-}
-
-_X_EXPORT 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/hw/xfree86/os-support/sco/sco_kbd.h b/hw/xfree86/os-support/sco/sco_kbd.h
deleted file mode 100644
index a79cd7bb9..000000000
--- a/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/hw/xfree86/os-support/sco/sco_mouse.c b/hw/xfree86/os-support/sco/sco_mouse.c
index f9d068c24..29e1f6f3c 100644
--- a/hw/xfree86/os-support/sco/sco_mouse.c
+++ b/hw/xfree86/os-support/sco/sco_mouse.c
@@ -1,4 +1,3 @@
-/* $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>
*
diff --git a/hw/xfree86/os-support/sco/sco_video.c b/hw/xfree86/os-support/sco/sco_video.c
index dd81786bb..807028f6a 100644
--- a/hw/xfree86/os-support/sco/sco_video.c
+++ b/hw/xfree86/os-support/sco/sco_video.c
@@ -1,4 +1,3 @@
-/* $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>
*
diff --git a/hw/xfree86/os-support/shared/VTsw_noop.c b/hw/xfree86/os-support/shared/VTsw_noop.c
index ac8ae3b0a..fd05f399c 100644
--- a/hw/xfree86/os-support/shared/VTsw_noop.c
+++ b/hw/xfree86/os-support/shared/VTsw_noop.c
@@ -1,4 +1,3 @@
-/* $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>
*
diff --git a/hw/xfree86/os-support/shared/VTsw_usl.c b/hw/xfree86/os-support/shared/VTsw_usl.c
index b38470aea..0100ae928 100644
--- a/hw/xfree86/os-support/shared/VTsw_usl.c
+++ b/hw/xfree86/os-support/shared/VTsw_usl.c
@@ -1,4 +1,3 @@
-/* $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>
*
diff --git a/hw/xfree86/os-support/shared/agp_noop.c b/hw/xfree86/os-support/shared/agp_noop.c
index e85b1f8d4..0a7844894 100644
--- a/hw/xfree86/os-support/shared/agp_noop.c
+++ b/hw/xfree86/os-support/shared/agp_noop.c
@@ -1,4 +1,3 @@
-/* $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.
*
diff --git a/hw/xfree86/os-support/shared/at_scancode.c b/hw/xfree86/os-support/shared/at_scancode.c
deleted file mode 100644
index 8947254bc..000000000
--- a/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/hw/xfree86/os-support/shared/bios_devmem.c b/hw/xfree86/os-support/shared/bios_devmem.c
index b63704cde..86d38292f 100644
--- a/hw/xfree86/os-support/shared/bios_devmem.c
+++ b/hw/xfree86/os-support/shared/bios_devmem.c
@@ -1,4 +1,3 @@
-/* $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>
*
diff --git a/hw/xfree86/os-support/shared/bios_mmap.c b/hw/xfree86/os-support/shared/bios_mmap.c
index 5f300a967..40d37e0c3 100644
--- a/hw/xfree86/os-support/shared/bios_mmap.c
+++ b/hw/xfree86/os-support/shared/bios_mmap.c
@@ -1,4 +1,3 @@
-/* $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>
*
diff --git a/hw/xfree86/os-support/shared/ia64Pci.c b/hw/xfree86/os-support/shared/ia64Pci.c
index 1fe119dcd..708840c71 100644
--- a/hw/xfree86/os-support/shared/ia64Pci.c
+++ b/hw/xfree86/os-support/shared/ia64Pci.c
@@ -1,4 +1,3 @@
-/* $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.
*
diff --git a/hw/xfree86/os-support/shared/ioperm_noop.c b/hw/xfree86/os-support/shared/ioperm_noop.c
index 04e72fe1c..2427d1923 100644
--- a/hw/xfree86/os-support/shared/ioperm_noop.c
+++ b/hw/xfree86/os-support/shared/ioperm_noop.c
@@ -1,4 +1,3 @@
-/* $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>
*
diff --git a/hw/xfree86/os-support/shared/kbd.c b/hw/xfree86/os-support/shared/kbd.c
deleted file mode 100644
index b9aeafd7b..000000000
--- a/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"
-
-_X_EXPORT Bool
-xf86OSKbdPreInit(InputInfoPtr pInfo)
-{
- return FALSE;
-}
diff --git a/hw/xfree86/os-support/shared/kmod_noop.c b/hw/xfree86/os-support/shared/kmod_noop.c
index 935f44bbe..6525e8414 100644
--- a/hw/xfree86/os-support/shared/kmod_noop.c
+++ b/hw/xfree86/os-support/shared/kmod_noop.c
@@ -1,4 +1,3 @@
-/* $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.
*
diff --git a/hw/xfree86/os-support/shared/libc_wrapper.c b/hw/xfree86/os-support/shared/libc_wrapper.c
index fc4edc378..4c4af4c24 100644
--- a/hw/xfree86/os-support/shared/libc_wrapper.c
+++ b/hw/xfree86/os-support/shared/libc_wrapper.c
@@ -1,4 +1,3 @@
-/* $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.
*
@@ -89,8 +88,8 @@ extern int mmapFd;
#include <stdlib.h>
#endif
-#define NEED_XF86_TYPES
-#define NEED_XF86_PROTOTYPES
+#define NEED_XF86_TYPES 1
+#define NEED_XF86_PROTOTYPES 1
#define DONT_DEFINE_WRAPPERS
#include "xf86_ansic.h"
@@ -1270,7 +1269,10 @@ xf86execl(const char *pathname, const char *arg, ...)
#ifndef SELF_CONTAINED_WRAPPER
xf86DisableIO();
#endif
- setuid(getuid());
+ 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++)
diff --git a/hw/xfree86/os-support/shared/pm_noop.c b/hw/xfree86/os-support/shared/pm_noop.c
index 6e24653ba..bfac4b1c8 100644
--- a/hw/xfree86/os-support/shared/pm_noop.c
+++ b/hw/xfree86/os-support/shared/pm_noop.c
@@ -1,4 +1,3 @@
-/* $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.
*
diff --git a/hw/xfree86/os-support/shared/posix_tty.c b/hw/xfree86/os-support/shared/posix_tty.c
index 3f9a82214..6e1b54331 100644
--- a/hw/xfree86/os-support/shared/posix_tty.c
+++ b/hw/xfree86/os-support/shared/posix_tty.c
@@ -1,4 +1,3 @@
-/* $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.
*
diff --git a/hw/xfree86/os-support/shared/sigio.c b/hw/xfree86/os-support/shared/sigio.c
index ecdc1cdd7..f6c15c28f 100644
--- a/hw/xfree86/os-support/shared/sigio.c
+++ b/hw/xfree86/os-support/shared/sigio.c
@@ -1,4 +1,3 @@
-/* $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
@@ -58,22 +57,11 @@
#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
@@ -126,11 +114,9 @@ xf86SIGIO (int sig)
xf86SigIOFuncs[i].closure);
r--;
}
-#ifdef XFree86Server
if (r > 0) {
xf86Msg(X_ERROR, "SIGIO %d descriptors not handled\n", r);
}
-#endif
}
static int
@@ -159,24 +145,14 @@ xf86InstallSIGIOHandler(int fd, void (*f)(int, void *), void *closure)
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;
}
@@ -289,7 +265,6 @@ xf86UnblockSIGIO (int wasset)
}
}
-#ifdef XFree86Server
void
xf86AssertBlockedSIGIO (char *where)
{
@@ -308,5 +283,3 @@ xf86SIGIOSupported (void)
{
return 1;
}
-
-#endif
diff --git a/hw/xfree86/os-support/shared/sigiostubs.c b/hw/xfree86/os-support/shared/sigiostubs.c
index eb5e2db2c..1a196cb30 100644
--- a/hw/xfree86/os-support/shared/sigiostubs.c
+++ b/hw/xfree86/os-support/shared/sigiostubs.c
@@ -1,4 +1,3 @@
-/* $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.
*
@@ -25,13 +24,11 @@
* the sale, use or other dealings in this Software without prior written
* authorization from the copyright holder(s) and author(s).
*/
-/* $XdotOrg: xserver/xorg/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
@@ -39,13 +36,6 @@
# 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
_X_EXPORT int
xf86InstallSIGIOHandler(int fd, void (*f)(int, void *), void *closure)
@@ -70,12 +60,10 @@ xf86UnblockSIGIO (int wasset)
{
}
-#ifdef XFree86Server
void
xf86AssertBlockedSIGIO (char *where)
{
}
-#endif
/* XXX This is a quick hack for the benefit of xf86SetSilkenMouse() */
Bool
diff --git a/hw/xfree86/os-support/shared/stdPci.c b/hw/xfree86/os-support/shared/stdPci.c
index 491406f92..e55ac77be 100644
--- a/hw/xfree86/os-support/shared/stdPci.c
+++ b/hw/xfree86/os-support/shared/stdPci.c
@@ -1,4 +1,3 @@
-/* $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.
*
diff --git a/hw/xfree86/os-support/shared/stdResource.c b/hw/xfree86/os-support/shared/stdResource.c
index 83ad0bb42..ad4685605 100644
--- a/hw/xfree86/os-support/shared/stdResource.c
+++ b/hw/xfree86/os-support/shared/stdResource.c
@@ -1,4 +1,3 @@
-/* $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.
*
diff --git a/hw/xfree86/os-support/shared/std_kbdEv.c b/hw/xfree86/os-support/shared/std_kbdEv.c
deleted file mode 100644
index c678162c2..000000000
--- a/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/hw/xfree86/os-support/shared/sysv_kbd.c b/hw/xfree86/os-support/shared/sysv_kbd.c
deleted file mode 100644
index 3a3544e8c..000000000
--- a/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/hw/xfree86/os-support/shared/vidmem.c b/hw/xfree86/os-support/shared/vidmem.c
index c2618d075..4d775eb52 100644
--- a/hw/xfree86/os-support/shared/vidmem.c
+++ b/hw/xfree86/os-support/shared/vidmem.c
@@ -1,4 +1,3 @@
-/* $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.
*
diff --git a/hw/xfree86/os-support/shared/xf86Axp.c b/hw/xfree86/os-support/shared/xf86Axp.c
index b8953f119..e6511dd43 100644
--- a/hw/xfree86/os-support/shared/xf86Axp.c
+++ b/hw/xfree86/os-support/shared/xf86Axp.c
@@ -1,4 +1,3 @@
-/* $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.
*
diff --git a/hw/xfree86/os-support/solaris/Makefile.am b/hw/xfree86/os-support/solaris/Makefile.am
index 63b8e9a90..57ec89e57 100644
--- a/hw/xfree86/os-support/solaris/Makefile.am
+++ b/hw/xfree86/os-support/solaris/Makefile.am
@@ -1,10 +1,6 @@
if SOLARIS_USL_CONSOLE
-IO_SRC = $(srcdir)/../sysv/sysv_io.c
-KBD_SRCS = $(srcdir)/../shared/sysv_kbd.c $(srcdir)/../shared/std_kbdEv.c
VTSW_SRC = $(srcdir)/../shared/VTsw_usl.c
else
-IO_SRC = sun_io.c sun_kbd.h
-KBD_SRCS = sun_kbd.c sun_kbdEv.c sun_kbd.h
VTSW_SRC = $(srcdir)/../shared/VTsw_noop.c
endif
@@ -22,8 +18,8 @@ solaris-$(SOLARIS_INOUT_ARCH).il: solaris-${SOLARIS_INOUT_ARCH}.S
$(CPP) -P -DINLINE_ASM solaris-${SOLARIS_INOUT_ARCH}.S > $@
noinst_LTLIBRARIES = libsolaris.la
-libsolaris_la_SOURCES = sun_bios.c sun_init.c $(IO_SRC) $(KBD_SRCS) \
- sun_mouse.c sun_vid.c $(AGP_SRC) \
+libsolaris_la_SOURCES = sun_bios.c sun_init.c \
+ sun_mouse.c sun_vid.c sun_bell.c $(AGP_SRC) \
$(srcdir)/../shared/libc_wrapper.c \
$(srcdir)/../shared/kmod_noop.c $(srcdir)/../shared/pm_noop.c \
$(srcdir)/../shared/posix_tty.c $(srcdir)/../shared/sigiostubs.c \
@@ -34,7 +30,7 @@ nodist_libsolaris_la_SOURCES = $(SOLARIS_INOUT_SRC)
sdk_HEADERS = agpgart.h
nodist_sdk_HEADERS = solaris-$(SOLARIS_INOUT_ARCH).il
-AM_CFLAGS = -DUSESTDRES -DHAVE_SYSV_IPC $(XORG_CFLAGS) @SERVER_DEFINES@ @LOADER_DEFINES@
+AM_CFLAGS = -DUSESTDRES -DHAVE_SYSV_IPC $(XORG_CFLAGS) $(DIX_CFLAGS)
INCLUDES = $(XORG_INCS)
diff --git a/hw/xfree86/os-support/solaris/agpgart.h b/hw/xfree86/os-support/solaris/agpgart.h
index 09d63ec26..566de8046 100644
--- a/hw/xfree86/os-support/solaris/agpgart.h
+++ b/hw/xfree86/os-support/solaris/agpgart.h
@@ -1,4 +1,3 @@
-/* $XdotOrg: xc/programs/Xserver/hw/xfree86/os-support/sunos/agpgart.h,v 1.1 2005/06/09 03:11:58 alanc Exp $ */
/*
* AGPGART module version 0.99
* Copyright (C) 1999 Jeff Hartmann
diff --git a/hw/xfree86/os-support/solaris/apSolaris.shar b/hw/xfree86/os-support/solaris/apSolaris.shar
index c8e2cfa49..a3548f7b4 100644
--- a/hw/xfree86/os-support/solaris/apSolaris.shar
+++ b/hw/xfree86/os-support/solaris/apSolaris.shar
@@ -1,40 +1,28 @@
#!/bin/sh
-# $XFree86$
-# This is a shell archive (produced by GNU sharutils 4.2c).
-# To extract the files from this archive, save it to some FILE, remove
-# everything before the `!/bin/sh' line above, then type `sh FILE'.
#
-# Made on 2002-10-04 13:41 MDT by <root@abcyxhiz>.
-# Source directory was `/archives'.
+# This is a shell archive. Save it in a file, remove anything before
+# this line, and then unpack it by entering "sh file". Note, it may
+# create directories; files and directories will be owned by you and
+# have default permissions.
+# Made on Sun Jun 25 20:24:59 CEST 2006 by Martin Bochnig at martux.org
#
-# Existing files will *not* be overwritten unless `-c' is specified.
-# This format requires very little intelligence at unshar time.
-# "if test", "echo", "mkdir", and "sed" may be needed.
+# This archive contains:
#
-# This shar contains:
-# length mode name
-# ------ ---------- ------------------------------------------
-# 1521 -rw-r--r-- aperture/Makefile
-# 1659 -rw-r--r-- aperture/README
-# 7557 -rw-r--r-- aperture/aperture.c
-# 450 -rw-r--r-- aperture/aperture.conf
-# 87 -rw-r--r-- aperture/devlink.tab
-# 1062 -rw-r--r-- aperture/Makefile.sun4u
+# ./aperture
+#
+# ./aperture/Makefile
+# ./aperture/Makefile.amd64
+# ./aperture/Makefile.sparcv9
+# ./aperture/README
+# ./aperture/aperture.c
+# ./aperture/aperture.conf
+# ./aperture/devlink.tab
#
-echo=echo
-shar_tty= shar_n= shar_c='
-'
-mkdir _sh09806 || ( echo 'failed to create locking directory' '_sh09806'; exit 1 )
-# ============= aperture/Makefile ==============
-if test ! -d 'aperture'; then
- $echo $echo_n 'x -' 'aperture: '$echo_c
- if mkdir 'aperture'; then $echo 'created'; else $echo 'failed to create'; fi
-fi
-if test -f 'aperture/Makefile' && test "$first_param" != -c; then
- $echo 'x -' SKIPPING 'aperture/Makefile' '(file already exists)'
-else
- $echo 'x -' extracting 'aperture/Makefile' '(text)'
- sed 's/^X//' << 'SHAR_EOF' > 'aperture/Makefile' &&
+echo c - ./aperture
+mkdir -p ./aperture > /dev/null 2>&1
+#
+echo x - ./aperture/Makefile
+sed 's/^X//' >./aperture/Makefile << 'END-of-./aperture/Makefile'
X#
X# File: makefile for aperture Framebuffer Driver
X# Author: Doug Anson (danson@lgc.com)
@@ -46,14 +34,22 @@ X# Modified: Marc Aurele La France (tsi@xfree86.org)
X# Date: 2001.06.08
X# - SPARC support, cleanup and turf aptest.
X#
-X# >>NOTE<< Have a look at Makefile.sun4u for sun4u specifics.
+X# >>NOTE<< Have a look at Makefile.sparcv9 for specifics.
+X#
+X# Modified: Martin Bochnig (martin@martux.org)
+X# Date: 2006.06.24
+X# - Slightly modified to also build on Solaris 10 and 11.
+X# - amd64 64 bit kernel support
+X# - cosmetical changes to also support sun4v, not only sun4u
+X#
+X# >>NOTE<< Have a look at Makefile.amd64 for amd64 specifics.
X#
X# GNU gcc compiler
XCC=gcc
XCFLGS=-fno-builtin -Wall -O3
X
X#
-X# Proworks compiler
+X# SUNWspro compiler
X#CC=/opt/SUNWspro/bin/cc
X#CFLGS=-Xa -xnolib -xO3
X
@@ -75,26 +71,26 @@ X# Make rules
Xall: $(DRIVER)
X
X$(DRIVER): $(OBJS)
-X @if [ -f "Makefile.`uname -m`" ]; then \
-X make -f Makefile.`uname -m` $(DRIVER); \
+X @if [ -f "Makefile.`isainfo -k`" ]; then \
+X make -f Makefile.`isainfo -k` $(DRIVER); \
X else \
X rm -f $(DRIVER); \
X ld -r -o $(DRIVER) $(OBJS); \
X fi
X
Xinstall: $(DRIVER)
-X @if [ -f "Makefile.`uname -m`" ]; then \
-X make -f Makefile.`uname -m` install; \
+X @if [ -f "Makefile.`isainfo -k`" ]; then \
+X make -f Makefile.`isainfo -k` install; \
X else \
X cp aperture.conf /kernel/drv; \
X cp $(DRIVER) /kernel/drv; \
X fi
X
Xadd_drv:
-X @if [ -f "Makefile.`uname -m`" ]; then \
-X make -f Makefile.`uname -m` add_drv; \
+X @if [ -f "Makefile.`isainfo -k`" ]; then \
+X make -f Makefile.`isainfo -k` add_drv; \
X else \
-X add_drv /kernel/drv/aperture; \
+X add_drv aperture; \
X fi
X
Xclean:
@@ -106,29 +102,156 @@ X.c.i:
X $(CC) -E $(CFLAGS) $*.c > $@
X
X.c.o:
-X @if [ -f "Makefile.`uname -m`" ]; then \
-X make -f Makefile.`uname -m` $@; \
+X @if [ -f "Makefile.`isainfo -k`" ]; then \
+X make -f Makefile.`isainfo -k` $@; \
X else \
X rm -f $@; \
X $(CC) -c $(CFLAGS) $*.c -o $@; \
X fi
-SHAR_EOF
- : || $echo 'restore of' 'aperture/Makefile' 'failed'
-fi
-# ============= aperture/README ==============
-if test -f 'aperture/README' && test "$first_param" != -c; then
- $echo 'x -' SKIPPING 'aperture/README' '(file already exists)'
-else
- $echo 'x -' extracting 'aperture/README' '(text)'
- sed 's/^X//' << 'SHAR_EOF' > 'aperture/README' &&
-XFramebuffer apperture driver.
+END-of-./aperture/Makefile
+echo x - ./aperture/Makefile.amd64
+sed 's/^X//' >./aperture/Makefile.amd64 << 'END-of-./aperture/Makefile.amd64'
+X#
+X# File: Makefile for aperture Framebuffer Driver
+X# Author: Doug Anson (danson@lgc.com)
+X# Date: 2/15/94
+X# Modified: David Holland (davidh@use.com)
+X# Date: 2/23/94
+X# - Changed name, and debugging structure
+X# Modified: Marc Aurele La France (tsi@xfree86.org)
+X# Date: 2001.06.08
+X# - SPARC support, cleanup and turf aptest.
+X# Modified: Martin Bochnig (martin@martux.org)
+X# - amd64 64 bit kernel support, cosmetics and also
+X# supporting sun4v (and arbitrary sparcv9) platforms
+X# as well as SunOS 5.10 or higher now
+X# - Changed name
+X#
+X
+X#
+X# GNU gcc compiler, version 3.2 or later
+X#
+XCC=gcc
+XCFLGS=-fno-builtin -Wall -O3 -m64 -mcmodel=kernel
+X
+X#
+X# SUNWspro compiler (untested, might not properly work for amd64 here)
+X#CC=/opt/SUNWspro/bin/cc
+X#CFLGS=-Xa -xarch=v9 -xnolib -xO3
+X
+X#
+X# Debug error reporting
+X#DEBUG_FLG=
+X#DEBUG_FLG=-DAPERTURE_DEBUG
+X
+X#
+X# Files and object declarations
+XKERNEL_FLGS=-D_KERNEL -DSUNDDI
+XCFLAGS= $(CFLGS) $(KERNEL_FLGS) $(DEBUG_FLG)
+XCFILES= aperture.c
+XOBJS= aperture.o
+XDRIVER= aperture
+X
+X#
+X# Make rules
+Xall: $(DRIVER)
+X
+X$(DRIVER): $(OBJS)
+X rm -f $(DRIVER)
+X ld -r -o $(DRIVER) $(OBJS)
+X
+Xinstall: $(DRIVER)
+X cp aperture.conf /kernel/drv
+X cp $(DRIVER) /kernel/drv/amd64
+X
+Xadd_drv:
+X add_drv aperture
+X
+Xclean:
+X rm -f *% *.BAK $(OBJS) $(DRIVER) core
+X
+X.SUFFIXES: .i
+X
+X.c.i:
+X $(CC) -E $(CFLAGS) $*.c > $@
+END-of-./aperture/Makefile.amd64
+echo x - ./aperture/Makefile.sparcv9
+sed 's/^X//' >./aperture/Makefile.sparcv9 << 'END-of-./aperture/Makefile.sparcv9'
+X#
+X# File: makefile for aperture Framebuffer Driver
+X# Author: Doug Anson (danson@lgc.com)
+X# Date: 2/15/94
+X# Modified: David Holland (davidh@use.com)
+X# Date: 2/23/94
+X# - Changed name, and debugging structure
+X# Modified: Marc Aurele La France (tsi@xfree86.org)
+X# Date: 2001.06.08
+X# - SPARC support, cleanup and turf aptest.
+X# Modified: Martin Bochnig (martin@martux.org)
+X# Date: 2006.06.24
+X# - Changed name for generic sparcv9 support
+X# - updated to better work with Solaris 10 and 11
+X#
+X
+X#
+X# GNU gcc compiler, version 3.2 or later
+X#
+XCC=gcc
+XCFLGS=-fno-builtin -Wall -O3 -m64
+X
+X#
+X# SUNWspro compiler
+X#CC=/opt/SUNWspro/bin/cc
+X#CFLGS=-Xa -xarch=v9 -xnolib -xO3
+X
+X#
+X# Debug error reporting
+X#DEBUG_FLG=
+X#DEBUG_FLG=-DAPERTURE_DEBUG
+X
+X#
+X# Files and object declarations
+XKERNEL_FLGS=-D_KERNEL -DSUNDDI
+XCFLAGS= $(CFLGS) $(KERNEL_FLGS) $(DEBUG_FLG)
+XCFILES= aperture.c
+XOBJS= aperture.o
+XDRIVER= aperture
+X
+X#
+X# Make rules
+Xall: $(DRIVER)
+X
+X$(DRIVER): $(OBJS)
+X rm -f $(DRIVER)
+X ld -r -o $(DRIVER) $(OBJS)
+X
+Xinstall: $(DRIVER)
+X cp aperture.conf /kernel/drv
+X cp $(DRIVER) /kernel/drv/sparcv9
+X
+Xadd_drv:
+X add_drv aperture
+X
+Xclean:
+X rm -f *% *.BAK $(OBJS) $(DRIVER) core
+X
+X.SUFFIXES: .i
+X
+X.c.i:
+X $(CC) -E $(CFLAGS) $*.c > $@
+END-of-./aperture/Makefile.sparcv9
+echo x - ./aperture/README
+sed 's/^X//' >./aperture/README << 'END-of-./aperture/README'
+XFramebuffer aperture driver.
X
XThis driver was written to provide a device that, unlike /dev/mem, allows
Xmmap()'ing of ranges beyond installed memory.
X
-XThe original x86-based version of this driver was the corroborative work of
+XThe original x86-based version of this driver was the collaborative work of
XDoug Anson (danson@lgc.com), and David Holland (davidh@use.com). It has since
-Xbeen rewritten to also work on sun4u machines.
+Xbeen rewritten to also work on sparc machines and - later on - also on sparcv9
+Xand recently amd64 64 bit kernels.
+XIt flawlessly compiles and installs on Solaris 10 and 11 now.
X
X
XInstallation instructions:
@@ -137,23 +260,23 @@ X1) Check the Makefile, for appropriate CC, and CFLAGS definitions. Compiling
X with APERTURE_DEBUG defined means the driver will generate reams of
X debugging output. You'll probably want to leave this off...
X
-X2) type 'make'. The driver and test program should compile with out any
-X problems. There also should not be any warning messages.
+X2) Type 'make' (or 'gmake'). Both the driver and test program should compile
+X without any problems. No warning messages should be generated.
X
X3) Become 'root'.
X
-X4) type 'make install' and 'make add_drv'. The screen should look something
+X4) Type 'make install' and 'make add_drv'. The screen should look something
X like this:
X
X # make install
X cp aperture aperture.conf /kernel/drv
X # make add_drv
-X add_drv /kernel/drv/aperture
+X add_drv aperture
X
-X On a sun4u machine this will mention the /kernel/drv/sparcv9 directory
-X instead of /kernel/drv.
+X On a sparcv9 machine this will mention the /kernel/drv/sparcv9 directory
+X instead of /kernel/drv. Similarily /kernel/drv/amd64 should be used on amd64.
X
-X This installs the driver in the system.
+X This installs the driver to the system.
X
X5) While as root modify the file /etc/devlink.tab, adding these lines:
X
@@ -163,7 +286,7 @@ X
X Add that line exactly as shown. You may also simply add the
X contents of the devlink.tab file supplied to /etc/devlink.tab.
X It contains the lines as well. (Yes, that is a tab between
-X aperture, and fbs, not spaces - very important)
+X aperture and fbs, not spaces - very important)
X
X6) Perform a reconfiguration boot of the system.
X
@@ -171,15 +294,9 @@ X # touch /reconfigure
X # init 6
X
XBug reports, questions, suggestions, etc can be sent to xfree86@xfree86.org.
-SHAR_EOF
- : || $echo 'restore of' 'aperture/README' 'failed'
-fi
-# ============= aperture/aperture.c ==============
-if test -f 'aperture/aperture.c' && test "$first_param" != -c; then
- $echo 'x -' SKIPPING 'aperture/aperture.c' '(file already exists)'
-else
- $echo 'x -' extracting 'aperture/aperture.c' '(text)'
- sed 's/^X//' << 'SHAR_EOF' > 'aperture/aperture.c' &&
+END-of-./aperture/README
+echo x - ./aperture/aperture.c
+sed 's/^X//' >./aperture/aperture.c << 'END-of-./aperture/aperture.c'
X/*
X * Copyright (C) 2001 The XFree86 Project, Inc. All Rights Reserved.
X *
@@ -210,6 +327,13 @@ X/*
X * Aperture driver for Solaris.
X */
X
+X/*
+X * Modified: Martin Bochnig (martin@martux.org)
+X * Log: Commented out obsolete kernel interfaces DDI_IDENTIFIED and DDI_NOT_IDENTIFIED
+X * not supported by SunOS 5.10 or higher anymore,
+X * see http://docs.sun.com/app/docs/doc/819-2255/6n4ibnffr?a=view
+X */
+X
X#include <sys/conf.h>
X#include <sys/ddi.h>
X#include <sys/modctl.h>
@@ -412,9 +536,9 @@ X
X#endif
X
X if (strcmp(ddi_get_name(dip), DEV_IDENT))
-X error = DDI_NOT_IDENTIFIED;
+X error = 1 /* DDI_NOT_IDENTIFIED obsolete since SunOS 5.10 */ ;
X else
-X error = DDI_IDENTIFIED;
+X error = 2 /* DDI_IDENTIFIED obsolete since SunOS 5.10 */ ;
X
X#ifdef APERTURE_DEBUG
X
@@ -465,7 +589,7 @@ X else
X {
X error = ddi_create_minor_node(dip, ddi_get_name(dip), S_IFCHR,
X (minor_t)ddi_get_instance(dip),
-X NULL, NODESPECIFIC_DEV);
+X NULL, 0 /* NODESPECIFIC_DEV obsolete since SunOS 5.10 */ );
X
X if (error == DDI_SUCCESS)
X {
@@ -653,15 +777,9 @@ X#endif
X
X return error;
X}
-SHAR_EOF
- : || $echo 'restore of' 'aperture/aperture.c' 'failed'
-fi
-# ============= aperture/aperture.conf ==============
-if test -f 'aperture/aperture.conf' && test "$first_param" != -c; then
- $echo 'x -' SKIPPING 'aperture/aperture.conf' '(file already exists)'
-else
- $echo 'x -' extracting 'aperture/aperture.conf' '(text)'
- sed 's/^X//' << 'SHAR_EOF' > 'aperture/aperture.conf' &&
+END-of-./aperture/aperture.c
+echo x - ./aperture/aperture.conf
+sed 's/^X//' >./aperture/aperture.conf << 'END-of-./aperture/aperture.conf'
X#
X# Copyright 1994 Doug Anson, danson@lgc.com & David Holland, davidh@use.com
X#
@@ -678,91 +796,11 @@ X#
X# Purpose: This conf file is used by the aperture driver.
X#
Xname="aperture" parent="pseudo";
-SHAR_EOF
- : || $echo 'restore of' 'aperture/aperture.conf' 'failed'
-fi
-# ============= aperture/devlink.tab ==============
-if test -f 'aperture/devlink.tab' && test "$first_param" != -c; then
- $echo 'x -' SKIPPING 'aperture/devlink.tab' '(file already exists)'
-else
- $echo 'x -' extracting 'aperture/devlink.tab' '(text)'
- sed 's/^X//' << 'SHAR_EOF' > 'aperture/devlink.tab' &&
+END-of-./aperture/aperture.conf
+echo x - ./aperture/devlink.tab
+sed 's/^X//' >./aperture/devlink.tab << 'END-of-./aperture/devlink.tab'
X# The following entry is for the aperture driver
Xtype=ddi_pseudo;name=aperture fbs/\M0
-SHAR_EOF
- : || $echo 'restore of' 'aperture/devlink.tab' 'failed'
-fi
-# ============= aperture/Makefile.sun4u ==============
-if test -f 'aperture/Makefile.sun4u' && test "$first_param" != -c; then
- $echo 'x -' SKIPPING 'aperture/Makefile.sun4u' '(file already exists)'
-else
- $echo 'x -' extracting 'aperture/Makefile.sun4u' '(text)'
- sed 's/^X//' << 'SHAR_EOF' > 'aperture/Makefile.sun4u' &&
-X#
-X# File: makefile for aperture Framebuffer Driver
-X# Author: Doug Anson (danson@lgc.com)
-X# Date: 2/15/94
-X# Modified: David Holland (davidh@use.com)
-X# Date: 2/23/94
-X# - Changed name, and debugging structure
-X# Modified: Marc Aurele La France (tsi@xfree86.org)
-X# Date: 2001.06.08
-X# - SPARC support, cleanup and turf aptest.
-X#
-X
-X#
-X# GNU gcc compiler, version 3.2 or later
-X#
-XCC=gcc
-XCFLGS=-fno-builtin -Wall -O3 -m64
-X
-X#
-X# Proworks compiler
-X#CC=/opt/SUNWspro/bin/cc
-X#CFLGS=-Xa -xarch=v9 -xnolib -xO3
-X
-X#
-X# Debug error reporting
-X#DEBUG_FLG=
-X#DEBUG_FLG=-DAPERTURE_DEBUG
-X
-X#
-X# Files and object declarations
-XKERNEL_FLGS=-D_KERNEL -DSUNDDI
-XCFLAGS= $(CFLGS) $(KERNEL_FLGS) $(DEBUG_FLG)
-XCFILES= aperture.c
-XOBJS= aperture.o
-XDRIVER= aperture
-X
-X#
-X# Make rules
-Xall: $(DRIVER)
-X
-X$(DRIVER): $(OBJS)
-X rm -f $(DRIVER)
-X ld -r -o $(DRIVER) $(OBJS)
-X
-Xinstall: $(DRIVER)
-X cp aperture.conf /kernel/drv
-X cp $(DRIVER) /kernel/drv/sparcv9
-X
-Xadd_drv:
-X add_drv /kernel/drv/sparcv9/aperture
-X
-Xclean:
-X rm -f *% *.BAK $(OBJS) $(DRIVER) core
-X
-X.SUFFIXES: .i
-X
-X.c.i:
-X $(CC) -E $(CFLAGS) $*.c > $@
-SHAR_EOF
- : || $echo 'restore of' 'aperture/Makefile.sun4u' 'failed'
-fi
-$echo $shar_n 'x -' 'lock directory' "\`_sh09806': " $shar_c
-if rm -fr _sh09806; then
- $echo 'removed'
-else
- $echo 'failed to remove'
-fi
-exit 0
+END-of-./aperture/devlink.tab
+exit
+
diff --git a/hw/xfree86/os-support/solaris/sun_agp.c b/hw/xfree86/os-support/solaris/sun_agp.c
index 9db2b86ba..e97ab9ef9 100644
--- a/hw/xfree86/os-support/solaris/sun_agp.c
+++ b/hw/xfree86/os-support/solaris/sun_agp.c
@@ -1,4 +1,3 @@
-/* $XdotOrg: xserver/xorg/hw/xfree86/os-support/solaris/sun_agp.c,v 1.5 2005/08/24 22:37:15 alanc Exp $ */
/*
* Abstraction of the AGP GART interface.
*
diff --git a/hw/xfree86/os-support/solaris/sun_bell.c b/hw/xfree86/os-support/solaris/sun_bell.c
new file mode 100644
index 000000000..29ecd7300
--- /dev/null
+++ b/hw/xfree86/os-support/solaris/sun_bell.c
@@ -0,0 +1,185 @@
+/* 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 <sys/audio.h>
+#include <sys/uio.h>
+#include <limits.h>
+#include <math.h>
+#include <poll.h>
+
+#include "xf86.h"
+#include "xf86Priv.h"
+#include "xf86_OSlib.h"
+
+#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 */
+
+#define AUDIO_DEVICE "/dev/audio"
+
+_X_EXPORT void
+xf86OSRingBell(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;
+ }
+
+ lastFreq = 0;
+ bzero(silence, sizeof(silence));
+
+ audioFD = open(AUDIO_DEVICE, O_WRONLY | O_NONBLOCK);
+ if (audioFD == -1) {
+ xf86Msg(X_ERROR, "Bell: cannot open audio device \"%s\": %s\n",
+ AUDIO_DEVICE, strerror(errno));
+ return;
+ }
+
+ 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,
+ "Bell: AUDIO_SETINFO failed on audio device \"%s\": %s\n",
+ AUDIO_DEVICE, strerror(errno));
+ close(audioFD);
+ return;
+ }
+
+ 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,
+ "Bell: writev failed on audio device \"%s\": %s\n",
+ AUDIO_DEVICE, strerror(errno));
+ close(audioFD);
+ return;
+ }
+ 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;
+}
diff --git a/hw/xfree86/os-support/solaris/sun_bios.c b/hw/xfree86/os-support/solaris/sun_bios.c
index 18f6558f3..6a132f5a3 100644
--- a/hw/xfree86/os-support/solaris/sun_bios.c
+++ b/hw/xfree86/os-support/solaris/sun_bios.c
@@ -1,4 +1,3 @@
-/* $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>
diff --git a/hw/xfree86/os-support/solaris/sun_init.c b/hw/xfree86/os-support/solaris/sun_init.c
index 40c264ce0..08d35c59c 100644
--- a/hw/xfree86/os-support/solaris/sun_init.c
+++ b/hw/xfree86/os-support/solaris/sun_init.c
@@ -1,4 +1,3 @@
-/* $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>
@@ -22,7 +21,6 @@
* 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.3 2005/05/21 07:46:37 alanc Exp $ */
#ifdef HAVE_XORG_CONFIG_H
#include <xorg-config.h>
@@ -293,23 +291,6 @@ xf86CloseConsole(void)
#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
@@ -359,16 +340,6 @@ xf86ProcessArgument(int argc, char **argv, int i)
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
@@ -383,10 +354,6 @@ void xf86UseMsg()
#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/hw/xfree86/os-support/solaris/sun_io.c b/hw/xfree86/os-support/solaris/sun_io.c
deleted file mode 100644
index 96344033f..000000000
--- a/hw/xfree86/os-support/solaris/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: $ */
-/*
- * 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/hw/xfree86/os-support/solaris/sun_kbd.c b/hw/xfree86/os-support/solaris/sun_kbd.c
deleted file mode 100644
index 55ab46722..000000000
--- a/hw/xfree86/os-support/solaris/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.3 2004/06/13 04:50:21 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/hw/xfree86/os-support/solaris/sun_kbd.h b/hw/xfree86/os-support/solaris/sun_kbd.h
deleted file mode 100644
index ed2824b1f..000000000
--- a/hw/xfree86/os-support/solaris/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/hw/xfree86/os-support/solaris/sun_kbdEv.c b/hw/xfree86/os-support/solaris/sun_kbdEv.c
deleted file mode 100644
index 8eee962ef..000000000
--- a/hw/xfree86/os-support/solaris/sun_kbdEv.c
+++ /dev/null
@@ -1,856 +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: xserver/xorg/hw/xfree86/os-support/solaris/sun_kbdEv.c,v 1.10 2005/12/12 23:33:55 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
-
-#include <sys/kbd.h>
-#include "atKeynames.h"
-
-#ifdef XKB
-extern Bool noXkbExtension;
-#endif
-
-#define XE_POINTER 1
-#define XE_KEYBOARD 2
-
-#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
-
-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/hw/xfree86/os-support/solaris/sun_mouse.c b/hw/xfree86/os-support/solaris/sun_mouse.c
index c8efa8dbe..aa509d08b 100644
--- a/hw/xfree86/os-support/solaris/sun_mouse.c
+++ b/hw/xfree86/os-support/solaris/sun_mouse.c
@@ -1,5 +1,3 @@
-/* $XFree86: xc/programs/Xserver/hw/xfree86/os-support/sunos/sun_mouse.c,v 1.4 2002/01/25 21:56:21 tsi Exp $ */
-/* $XdotOrg: xserver/xorg/hw/xfree86/os-support/solaris/sun_mouse.c,v 1.8 2005/07/28 02:38:23 alanc Exp $ */
/*
* Copyright 1999-2001 The XFree86 Project, Inc. All Rights Reserved.
*
diff --git a/hw/xfree86/os-support/solaris/sun_vid.c b/hw/xfree86/os-support/solaris/sun_vid.c
index f3409dcb2..4f2ab871f 100644
--- a/hw/xfree86/os-support/solaris/sun_vid.c
+++ b/hw/xfree86/os-support/solaris/sun_vid.c
@@ -1,4 +1,3 @@
-/* $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>
diff --git a/hw/xfree86/os-support/sysv/Makefile.am b/hw/xfree86/os-support/sysv/Makefile.am
index b67cf99d9..f9d2f237a 100644
--- a/hw/xfree86/os-support/sysv/Makefile.am
+++ b/hw/xfree86/os-support/sysv/Makefile.am
@@ -1 +1 @@
-EXTRA_DIST = sysv_init.c sysv_io.c sysv_mouse.c sysv_video.c xqueue.c xqueue.h
+EXTRA_DIST = sysv_init.c sysv_mouse.c sysv_video.c
diff --git a/hw/xfree86/os-support/sysv/sysv_init.c b/hw/xfree86/os-support/sysv/sysv_init.c
index 3edffd446..6d0045f9b 100644
--- a/hw/xfree86/os-support/sysv/sysv_init.c
+++ b/hw/xfree86/os-support/sysv/sysv_init.c
@@ -1,4 +1,3 @@
-/* $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>
diff --git a/hw/xfree86/os-support/sysv/sysv_io.c b/hw/xfree86/os-support/sysv/sysv_io.c
deleted file mode 100644
index d10c40fa4..000000000
--- a/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"
-
-_X_EXPORT 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"
-
-_X_EXPORT Bool
-xf86OSKbdPreInit(InputInfoPtr pInfo)
-{
- return FALSE;
-}
diff --git a/hw/xfree86/os-support/sysv/sysv_mouse.c b/hw/xfree86/os-support/sysv/sysv_mouse.c
index e3c084e14..e62010515 100644
--- a/hw/xfree86/os-support/sysv/sysv_mouse.c
+++ b/hw/xfree86/os-support/sysv/sysv_mouse.c
@@ -1,4 +1,3 @@
-/* $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.
@@ -12,7 +11,6 @@
#include "xf86.h"
#include "xf86Xinput.h"
#include "xf86OSmouse.h"
-#include "xqueue.h"
static int
SupportedInterfaces(void)
@@ -23,7 +21,6 @@ SupportedInterfaces(void)
#ifndef ISC
static const char *internalNames[] = {
- "Xqueue",
NULL
};
@@ -57,7 +54,6 @@ xf86OSMouseInit(int flags)
#ifndef ISC
p->BuiltinNames = BuiltinNames;
p->CheckProtocol = CheckProtocol;
- p->PreInit = XqueueMousePreInit;
#endif
return p;
}
diff --git a/hw/xfree86/os-support/sysv/sysv_video.c b/hw/xfree86/os-support/sysv/sysv_video.c
index 2b491be0e..fd6d61321 100644
--- a/hw/xfree86/os-support/sysv/sysv_video.c
+++ b/hw/xfree86/os-support/sysv/sysv_video.c
@@ -1,4 +1,3 @@
-/* $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>
diff --git a/hw/xfree86/os-support/sysv/xqueue.c b/hw/xfree86/os-support/sysv/xqueue.c
deleted file mode 100644
index e9cab1588..000000000
--- a/hw/xfree86/os-support/sysv/xqueue.c
+++ /dev/null
@@ -1,537 +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 (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/hw/xfree86/os-support/sysv/xqueue.h b/hw/xfree86/os-support/sysv/xqueue.h
deleted file mode 100644
index d693d2b36..000000000
--- a/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/hw/xfree86/os-support/usl/Makefile.am b/hw/xfree86/os-support/usl/Makefile.am
index 5143b243c..db08f5d85 100644
--- a/hw/xfree86/os-support/usl/Makefile.am
+++ b/hw/xfree86/os-support/usl/Makefile.am
@@ -1,12 +1,6 @@
EXTRA_DIST = \
usl_init.c \
- usl_io.c \
usl_iop.c \
- usl_kbd.c \
- usl_kbd.h \
- usl_KbdMap.c \
usl_mouse.c \
usl_video.c \
- usl_vtsw.c \
- usl_xqueue.c \
- usl_xqueue.h
+ usl_vtsw.c
diff --git a/hw/xfree86/os-support/usl/usl_KbdMap.c b/hw/xfree86/os-support/usl/usl_KbdMap.c
deleted file mode 100644
index 76032e61a..000000000
--- a/hw/xfree86/os-support/usl/usl_KbdMap.c
+++ /dev/null
@@ -1,304 +0,0 @@
-/* $XdotOrg$ */
-/*
- * 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/hw/xfree86/os-support/usl/usl_io.c b/hw/xfree86/os-support/usl/usl_io.c
deleted file mode 100644
index 45c511f42..000000000
--- a/hw/xfree86/os-support/usl/usl_io.c
+++ /dev/null
@@ -1,172 +0,0 @@
-/* $XdotOrg: xserver/xorg/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"
-
-_X_EXPORT 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/hw/xfree86/os-support/usl/usl_iop.c b/hw/xfree86/os-support/usl/usl_iop.c
index ae30655f8..23c36fbf7 100644
--- a/hw/xfree86/os-support/usl/usl_iop.c
+++ b/hw/xfree86/os-support/usl/usl_iop.c
@@ -1,4 +1,3 @@
-/* $XdotOrg: xserver/xorg/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>
*
diff --git a/hw/xfree86/os-support/usl/usl_kbd.c b/hw/xfree86/os-support/usl/usl_kbd.c
deleted file mode 100644
index 5f96fa676..000000000
--- a/hw/xfree86/os-support/usl/usl_kbd.c
+++ /dev/null
@@ -1,456 +0,0 @@
-/* $XdotOrg: xserver/xorg/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;
-}
-
-_X_EXPORT 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/hw/xfree86/os-support/usl/usl_kbd.h b/hw/xfree86/os-support/usl/usl_kbd.h
deleted file mode 100644
index 990c13cc7..000000000
--- a/hw/xfree86/os-support/usl/usl_kbd.h
+++ /dev/null
@@ -1,14 +0,0 @@
-/* $XdotOrg$ */
-#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/hw/xfree86/os-support/usl/usl_mouse.c b/hw/xfree86/os-support/usl/usl_mouse.c
index f70a0b89e..aa4600f79 100644
--- a/hw/xfree86/os-support/usl/usl_mouse.c
+++ b/hw/xfree86/os-support/usl/usl_mouse.c
@@ -1,4 +1,3 @@
-/* $XdotOrg: xserver/xorg/hw/xfree86/os-support/usl/usl_mouse.c,v 1.3 2005/11/10 02:41:20 jkj Exp $ */
/*
* Copyright 2005 Kean Johnston
@@ -34,7 +33,6 @@
#include "xf86Priv.h"
#include "xf86_OSlib.h"
#include "mipointer.h"
-#include "usl_xqueue.h"
static int
SupportedInterfaces(void)
@@ -43,7 +41,6 @@ SupportedInterfaces(void)
}
static const char *internalNames[] = {
- "Xqueue",
NULL
};
@@ -56,7 +53,7 @@ BuiltinNames(void)
static const char *
DefaultProtocol (void)
{
- return "Xqueue";
+ return "OSMouse";
}
static Bool
@@ -122,7 +119,6 @@ OsMouseProc(DeviceIntPtr pPointer, int what)
static Bool
OsMousePreInit(InputInfoPtr pInfo, const char *protocol, int flags)
{
- /* This is called when the protocol is "Xqueue" */
MouseDevPtr pMse;
pMse = pInfo->private;
@@ -156,7 +152,7 @@ OsMousePreInit(InputInfoPtr pInfo, const char *protocol, int flags)
/* Setup the local procs. */
pInfo->device_control = OsMouseProc;
- pInfo->read_input = NULL; /* Handled by the XQUEUE signal handler */
+ pInfo->read_input = NULL;
pInfo->flags |= XI86_CONFIGURED;
return TRUE;
diff --git a/hw/xfree86/os-support/usl/usl_xqueue.c b/hw/xfree86/os-support/usl/usl_xqueue.c
deleted file mode 100644
index c00d37489..000000000
--- a/hw/xfree86/os-support/usl/usl_xqueue.c
+++ /dev/null
@@ -1,360 +0,0 @@
-/* $XdotOrg$ */
-/*
- * 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/hw/xfree86/os-support/usl/usl_xqueue.h b/hw/xfree86/os-support/usl/usl_xqueue.h
deleted file mode 100644
index bad86a907..000000000
--- a/hw/xfree86/os-support/usl/usl_xqueue.h
+++ /dev/null
@@ -1,9 +0,0 @@
-/* $XdotOrg$ */
-
-#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/hw/xfree86/os-support/xf86OSKbd.h b/hw/xfree86/os-support/xf86OSKbd.h
deleted file mode 100644
index 344f7e901..000000000
--- a/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/hw/xfree86/os-support/xf86OSmouse.h b/hw/xfree86/os-support/xf86OSmouse.h
index 9db1bac19..600683866 100644
--- a/hw/xfree86/os-support/xf86OSmouse.h
+++ b/hw/xfree86/os-support/xf86OSmouse.h
@@ -1,4 +1,3 @@
-/* $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.
*
diff --git a/hw/xfree86/os-support/xf86OSpriv.h b/hw/xfree86/os-support/xf86OSpriv.h
index 449e8ddd0..754128de9 100644
--- a/hw/xfree86/os-support/xf86OSpriv.h
+++ b/hw/xfree86/os-support/xf86OSpriv.h
@@ -1,4 +1,3 @@
-/* $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.
*
diff --git a/hw/xfree86/os-support/xf86_OSlib.h b/hw/xfree86/os-support/xf86_OSlib.h
index 8ff324e70..97f872301 100644
--- a/hw/xfree86/os-support/xf86_OSlib.h
+++ b/hw/xfree86/os-support/xf86_OSlib.h
@@ -1,4 +1,3 @@
-/* $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>
@@ -67,7 +66,6 @@
*/
/* $XConsortium: xf86_OSlib.h /main/22 1996/10/27 11:06:31 kaleb $ */
-/* $XdotOrg: xserver/xorg/hw/xfree86/os-support/xf86_OSlib.h,v 1.14 2005/12/29 08:42:49 airlied Exp $ */
/*
* This is private, and should not be included by any drivers. Drivers
@@ -237,15 +235,6 @@ typedef signed long xf86ssize_t;
# 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
diff --git a/hw/xfree86/os-support/xf86_OSproc.h b/hw/xfree86/os-support/xf86_OSproc.h
index 83ce9ed2b..1bbbf5656 100644
--- a/hw/xfree86/os-support/xf86_OSproc.h
+++ b/hw/xfree86/os-support/xf86_OSproc.h
@@ -64,7 +64,6 @@
*
*/
-/* $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
@@ -136,10 +135,6 @@ extern void xf86WrapperInit(void);
#include <X11/Xfuncproto.h>
#include "opaque.h"
-#if defined(XQUEUE)
-#include "input.h" /* for DeviceIntPtr */
-#endif
-
_XFUNCPROTOBEGIN
/* public functions */
@@ -155,7 +150,7 @@ extern Bool xf86DisableInterrupts(void);
extern void xf86EnableInterrupts(void);
extern void xf86SetTVOut(int);
extern void xf86SetRGBOut(void);
-extern void xf86SoundKbdBell(int, int, int);
+extern void xf86OSRingBell(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];
@@ -179,6 +174,7 @@ 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);
+extern void xf86RingBell(int volume, int pitch, int duration);
/* AGP GART interface */
@@ -212,9 +208,7 @@ 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
@@ -227,21 +221,7 @@ 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
diff --git a/hw/xfree86/os-support/xf86_ansic.h b/hw/xfree86/os-support/xf86_ansic.h
index 25dabfe89..c1d62ed9f 100644
--- a/hw/xfree86/os-support/xf86_ansic.h
+++ b/hw/xfree86/os-support/xf86_ansic.h
@@ -1,4 +1,3 @@
-/* $XFree86: xc/programs/Xserver/hw/xfree86/os-support/xf86_ansic.h,v 3.53 2003/10/28 18:36:37 tsi Exp $ */
/*
* Copyright 1997-2003 by The XFree86 Project, Inc
*
@@ -28,33 +27,27 @@
/* Handle <stdarg.h> */
-#ifndef IN_MODULE
+#ifndef __OS2ELF__
# include <stdarg.h>
-#else /* !IN_MODULE */
-# ifndef __OS2ELF__
-# include <stdarg.h>
-# else /* __OS2ELF__ */
- /* EMX/gcc_elf under OS/2 does not have native header files */
-# if !defined (_VA_LIST)
-# define _VA_LIST
- typedef char *va_list;
-# endif
-# define _VA_ROUND(t) ((sizeof (t) + 3) & -4)
-# if !defined (va_start)
-# define va_start(ap,v) ap = (va_list)&v + ((sizeof (v) + 3) & -4)
-# define va_end(ap) (ap = 0, (void)0)
-# define va_arg(ap,t) (ap += _VA_ROUND (t), *(t *)(ap - _VA_ROUND (t)))
-# endif
-# endif /* __OS2ELF__ */
-#endif /* IN_MODULE */
+#else /* __OS2ELF__ */
+ /* EMX/gcc_elf under OS/2 does not have native header files */
+# if !defined (_VA_LIST)
+# define _VA_LIST
+ typedef char *va_list;
+# endif
+# define _VA_ROUND(t) ((sizeof (t) + 3) & -4)
+# if !defined (va_start)
+# define va_start(ap,v) ap = (va_list)&v + ((sizeof (v) + 3) & -4)
+# define va_end(ap) (ap = 0, (void)0)
+# define va_arg(ap,t) (ap += _VA_ROUND (t), *(t *)(ap - _VA_ROUND (t)))
+# endif
+#endif /* __OS2ELF__ */
/*
* The first set of definitions are required both for modules and
* libc_wrapper.c.
*/
-#if defined(XFree86LOADER) || defined(NEED_XF86_TYPES)
-
#if !defined(SYSV) && !defined(SVR4) && !defined(Lynx) || \
defined(__SCO__) || defined(__UNIXWARE__)
#define HAVE_VSSCANF
@@ -133,9 +126,6 @@
#define MAXLONG LONG_MAX
#endif
-#endif /* XFree86LOADER || NEED_XF86_TYPES */
-
-#if defined(XFree86LOADER) || defined(NEED_XF86_PROTOTYPES)
/*
* ANSI C compilers only.
*/
@@ -321,21 +311,6 @@ extern void xf86longjmp(xf86jmp_buf env, int val);
(xf86getjmptype() == 1 ? xf86setjmp1((env), xf86setjmp1_arg2()) : \
xf86setjmperror((env))))
-#else /* XFree86LOADER || NEED_XF86_PROTOTYPES */
-#include <unistd.h>
-#include <stdio.h>
-#include <sys/ioctl.h>
-#include <errno.h>
-#include <fcntl.h>
-#include <ctype.h>
-#ifdef HAVE_SYSV_IPC
-#include <sys/ipc.h>
-#include <sys/shm.h>
-#endif
-#include <sys/stat.h>
-#define stat_t struct stat
-#endif /* XFree86LOADER || NEED_XF86_PROTOTYPES */
-
/*
* These things are always required by drivers (but not by libc_wrapper.c),
* even for a static server because some OSs don't provide them.
diff --git a/hw/xfree86/os-support/xf86_libc.h b/hw/xfree86/os-support/xf86_libc.h
index 5a6056ba9..df78d5351 100644
--- a/hw/xfree86/os-support/xf86_libc.h
+++ b/hw/xfree86/os-support/xf86_libc.h
@@ -1,5 +1,3 @@
-/* $XdotOrg: xserver/xorg/hw/xfree86/os-support/xf86_libc.h,v 1.9 2005/08/24 11:18:31 daniels Exp $ */
-/* $XFree86: xc/programs/Xserver/hw/xfree86/os-support/xf86_libc.h,v 3.63 2003/12/08 21:46:55 alanh Exp $ */
/*
* Copyright (c) 1997-2003 by The XFree86 Project, Inc.
*
@@ -53,8 +51,6 @@
* libc_wrapper.c.
*/
-#if defined(XFree86LOADER) || defined(NEED_XF86_TYPES)
-
/*
* First, the new data types
*
@@ -215,14 +211,12 @@ typedef int xf86jmp_buf[1024];
/* xf86shmclt() */
#define XF86IPC_RMID 0
-#endif /* defined(XFree86LOADER) || defined(NEED_XF86_TYPES) */
-
/*
* the rest of this file should only be included for code that is supposed
* to go into modules
*/
-#if defined(XFree86LOADER) && !defined(DONT_DEFINE_WRAPPERS)
+#if !defined(DONT_DEFINE_WRAPPERS)
#undef abort
#define abort() xf86abort()
@@ -713,10 +707,9 @@ typedef int xf86jmp_buf[1024];
# define _FILEDEFED /* Already have FILE defined, don't redefine it */
#endif
-#endif /* XFree86LOADER && !DONT_DEFINE_WRAPPERS */
+#endif /* !DONT_DEFINE_WRAPPERS */
-#if defined(XFree86LOADER) && \
- (!defined(DONT_DEFINE_WRAPPERS) || defined(DEFINE_SETJMP_WRAPPERS))
+#if (!defined(DONT_DEFINE_WRAPPERS) || defined(DEFINE_SETJMP_WRAPPERS))
#undef setjmp
#define setjmp(a) xf86setjmp_macro(a)
#undef longjmp
diff --git a/hw/xfree86/os-support/xf86drm.h b/hw/xfree86/os-support/xf86drm.h
deleted file mode 100644
index 4be417a62..000000000
--- a/hw/xfree86/os-support/xf86drm.h
+++ /dev/null
@@ -1,638 +0,0 @@
-/**
- * \file xf86drm.h
- * OS-independent header for DRM user-level library interface.
- *
- * \author Rickard E. (Rik) Faith <faith@valinux.com>
- */
-
-/*
- * Copyright 1999, 2000 Precision Insight, Inc., Cedar Park, Texas.
- * Copyright 2000 VA Linux Systems, Inc., Sunnyvale, California.
- * All Rights Reserved.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the "Software"),
- * to deal in the Software without restriction, including without limitation
- * the rights to use, copy, modify, merge, publish, distribute, sublicense,
- * and/or sell copies of the Software, and to 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/os-support/xf86drm.h,v 1.26 2003/08/16 19:26:37 dawes Exp $ */
-
-#ifndef _XF86DRM_H_
-#define _XF86DRM_H_
-
-#include <drm.h>
-
- /* Defaults, if nothing set in xf86config */
-#define DRM_DEV_UID 0
-#define DRM_DEV_GID 0
-/* Default /dev/dri directory permissions 0755 */
-#define DRM_DEV_DIRMODE \
- (S_IRUSR|S_IWUSR|S_IXUSR|S_IRGRP|S_IXGRP|S_IROTH|S_IXOTH)
-#define DRM_DEV_MODE (S_IRUSR|S_IWUSR|S_IRGRP|S_IWGRP)
-
-#define DRM_DIR_NAME "/dev/dri"
-#define DRM_DEV_NAME "%s/card%d"
-#define DRM_PROC_NAME "/proc/dri/" /* For backward Linux compatibility */
-
-#define DRM_ERR_NO_DEVICE (-1001)
-#define DRM_ERR_NO_ACCESS (-1002)
-#define DRM_ERR_NOT_ROOT (-1003)
-#define DRM_ERR_INVALID (-1004)
-#define DRM_ERR_NO_FD (-1005)
-
-#define DRM_AGP_NO_HANDLE 0
-
-typedef unsigned int drmSize, *drmSizePtr; /**< For mapped regions */
-typedef void *drmAddress, **drmAddressPtr; /**< For mapped regions */
-
-/**
- * Driver version information.
- *
- * \sa drmGetVersion() and drmSetVersion().
- */
-typedef struct _drmVersion {
- int version_major; /**< Major version */
- int version_minor; /**< Minor version */
- int version_patchlevel; /**< Patch level */
- int name_len; /**< Length of name buffer */
- char *name; /**< Name of driver */
- int date_len; /**< Length of date buffer */
- char *date; /**< User-space buffer to hold date */
- int desc_len; /**< Length of desc buffer */
- char *desc; /**< User-space buffer to hold desc */
-} drmVersion, *drmVersionPtr;
-
-typedef struct _drmStats {
- unsigned long count; /**< Number of data */
- struct {
- unsigned long value; /**< Value from kernel */
- const char *long_format; /**< Suggested format for long_name */
- const char *long_name; /**< Long name for value */
- const char *rate_format; /**< Suggested format for rate_name */
- const char *rate_name; /**< Short name for value per second */
- int isvalue; /**< True if value (vs. counter) */
- const char *mult_names; /**< Multiplier names (e.g., "KGM") */
- int mult; /**< Multiplier value (e.g., 1024) */
- int verbose; /**< Suggest only in verbose output */
- } data[15];
-} drmStatsT;
-
-
- /* All of these enums *MUST* match with the
- kernel implementation -- so do *NOT*
- change them! (The drmlib implementation
- will just copy the flags instead of
- translating them.) */
-typedef enum {
- DRM_FRAME_BUFFER = 0, /**< WC, no caching, no core dump */
- DRM_REGISTERS = 1, /**< no caching, no core dump */
- DRM_SHM = 2, /**< shared, cached */
- DRM_AGP = 3, /**< AGP/GART */
- DRM_SCATTER_GATHER = 4, /**< PCI scatter/gather */
- DRM_CONSISTENT = 5 /**< PCI consistent */
-} drmMapType;
-
-typedef enum {
- DRM_RESTRICTED = 0x0001, /**< Cannot be mapped to client-virtual */
- DRM_READ_ONLY = 0x0002, /**< Read-only in client-virtual */
- DRM_LOCKED = 0x0004, /**< Physical pages locked */
- DRM_KERNEL = 0x0008, /**< Kernel requires access */
- DRM_WRITE_COMBINING = 0x0010, /**< Use write-combining, if available */
- DRM_CONTAINS_LOCK = 0x0020, /**< SHM page that contains lock */
- DRM_REMOVABLE = 0x0040 /**< Removable mapping */
-} drmMapFlags;
-
-/**
- * \warning These values *MUST* match drm.h
- */
-typedef enum {
- /** \name Flags for DMA buffer dispatch */
- /*@{*/
- DRM_DMA_BLOCK = 0x01, /**<
- * Block until buffer dispatched.
- *
- * \note the buffer may not yet have been
- * processed by the hardware -- getting a
- * hardware lock with the hardware quiescent
- * will ensure that the buffer has been
- * processed.
- */
- DRM_DMA_WHILE_LOCKED = 0x02, /**< Dispatch while lock held */
- DRM_DMA_PRIORITY = 0x04, /**< High priority dispatch */
- /*@}*/
-
- /** \name Flags for DMA buffer request */
- /*@{*/
- DRM_DMA_WAIT = 0x10, /**< Wait for free buffers */
- DRM_DMA_SMALLER_OK = 0x20, /**< Smaller-than-requested buffers OK */
- DRM_DMA_LARGER_OK = 0x40 /**< Larger-than-requested buffers OK */
- /*@}*/
-} drmDMAFlags;
-
-typedef enum {
- DRM_PAGE_ALIGN = 0x01,
- DRM_AGP_BUFFER = 0x02,
- DRM_SG_BUFFER = 0x04,
- DRM_FB_BUFFER = 0x08
-} drmBufDescFlags;
-
-typedef enum {
- DRM_LOCK_READY = 0x01, /**< Wait until hardware is ready for DMA */
- DRM_LOCK_QUIESCENT = 0x02, /**< Wait until hardware quiescent */
- DRM_LOCK_FLUSH = 0x04, /**< Flush this context's DMA queue first */
- DRM_LOCK_FLUSH_ALL = 0x08, /**< Flush all DMA queues first */
- /* These *HALT* flags aren't supported yet
- -- they will be used to support the
- full-screen DGA-like mode. */
- DRM_HALT_ALL_QUEUES = 0x10, /**< Halt all current and future queues */
- DRM_HALT_CUR_QUEUES = 0x20 /**< Halt all current queues */
-} drmLockFlags;
-
-typedef enum {
- DRM_CONTEXT_PRESERVED = 0x01, /**< This context is preserved and
- never swapped. */
- DRM_CONTEXT_2DONLY = 0x02 /**< This context is for 2D rendering only. */
-} drm_context_tFlags, *drm_context_tFlagsPtr;
-
-typedef struct _drmBufDesc {
- int count; /**< Number of buffers of this size */
- int size; /**< Size in bytes */
- int low_mark; /**< Low water mark */
- int high_mark; /**< High water mark */
-} drmBufDesc, *drmBufDescPtr;
-
-typedef struct _drmBufInfo {
- int count; /**< Number of buffers described in list */
- drmBufDescPtr list; /**< List of buffer descriptions */
-} drmBufInfo, *drmBufInfoPtr;
-
-typedef struct _drmBuf {
- int idx; /**< Index into the master buffer list */
- int total; /**< Buffer size */
- int used; /**< Amount of buffer in use (for DMA) */
- drmAddress address; /**< Address */
-} drmBuf, *drmBufPtr;
-
-/**
- * Buffer mapping information.
- *
- * Used by drmMapBufs() and drmUnmapBufs() to store information about the
- * mapped buffers.
- */
-typedef struct _drmBufMap {
- int count; /**< Number of buffers mapped */
- drmBufPtr list; /**< Buffers */
-} drmBufMap, *drmBufMapPtr;
-
-typedef struct _drmLock {
- volatile unsigned int lock;
- char padding[60];
- /* This is big enough for most current (and future?) architectures:
- DEC Alpha: 32 bytes
- Intel Merced: ?
- Intel P5/PPro/PII/PIII: 32 bytes
- Intel StrongARM: 32 bytes
- Intel i386/i486: 16 bytes
- MIPS: 32 bytes (?)
- Motorola 68k: 16 bytes
- Motorola PowerPC: 32 bytes
- Sun SPARC: 32 bytes
- */
-} drmLock, *drmLockPtr;
-
-/**
- * Indices here refer to the offset into
- * list in drmBufInfo
- */
-typedef struct _drmDMAReq {
- drm_context_t context; /**< Context handle */
- int send_count; /**< Number of buffers to send */
- int *send_list; /**< List of handles to buffers */
- int *send_sizes; /**< Lengths of data to send, in bytes */
- drmDMAFlags flags; /**< Flags */
- int request_count; /**< Number of buffers requested */
- int request_size; /**< Desired size of buffers requested */
- int *request_list; /**< Buffer information */
- int *request_sizes; /**< Minimum acceptable sizes */
- int granted_count; /**< Number of buffers granted at this size */
-} drmDMAReq, *drmDMAReqPtr;
-
-typedef struct _drmRegion {
- drm_handle_t handle;
- unsigned int offset;
- drmSize size;
- drmAddress map;
-} drmRegion, *drmRegionPtr;
-
-typedef struct _drmTextureRegion {
- unsigned char next;
- unsigned char prev;
- unsigned char in_use;
- unsigned char padding; /**< Explicitly pad this out */
- unsigned int age;
-} drmTextureRegion, *drmTextureRegionPtr;
-
-
-typedef enum {
- DRM_VBLANK_ABSOLUTE = 0x0, /**< Wait for specific vblank sequence number */
- DRM_VBLANK_RELATIVE = 0x1, /**< Wait for given number of vblanks */
- DRM_VBLANK_SIGNAL = 0x40000000 /* Send signal instead of blocking */
-} drmVBlankSeqType;
-
-typedef struct _drmVBlankReq {
- drmVBlankSeqType type;
- unsigned int sequence;
- unsigned long signal;
-} drmVBlankReq, *drmVBlankReqPtr;
-
-typedef struct _drmVBlankReply {
- drmVBlankSeqType type;
- unsigned int sequence;
- long tval_sec;
- long tval_usec;
-} drmVBlankReply, *drmVBlankReplyPtr;
-
-typedef union _drmVBlank {
- drmVBlankReq request;
- drmVBlankReply reply;
-} drmVBlank, *drmVBlankPtr;
-
-typedef struct _drmSetVersion {
- int drm_di_major;
- int drm_di_minor;
- int drm_dd_major;
- int drm_dd_minor;
-} drmSetVersion, *drmSetVersionPtr;
-
-
-#define __drm_dummy_lock(lock) (*(__volatile__ unsigned int *)lock)
-
-#define DRM_LOCK_HELD 0x80000000U /**< Hardware lock is held */
-#define DRM_LOCK_CONT 0x40000000U /**< Hardware lock is contended */
-
-#if defined(__GNUC__) && (__GNUC__ >= 2)
-# if defined(__i386) || defined(__AMD64__) || defined(__x86_64__) || defined(__amd64__)
- /* Reflect changes here to drmP.h */
-#define DRM_CAS(lock,old,new,__ret) \
- do { \
- int __dummy; /* Can't mark eax as clobbered */ \
- __asm__ __volatile__( \
- "lock ; cmpxchg %4,%1\n\t" \
- "setnz %0" \
- : "=d" (__ret), \
- "=m" (__drm_dummy_lock(lock)), \
- "=a" (__dummy) \
- : "2" (old), \
- "r" (new)); \
- } while (0)
-
-#elif defined(__alpha__)
-
-#define DRM_CAS(lock, old, new, ret) \
- do { \
- int old32; \
- int cur32; \
- __asm__ __volatile__( \
- " mb\n" \
- " zap %4, 0xF0, %0\n" \
- " ldl_l %1, %2\n" \
- " zap %1, 0xF0, %1\n" \
- " cmpeq %0, %1, %1\n" \
- " beq %1, 1f\n" \
- " bis %5, %5, %1\n" \
- " stl_c %1, %2\n" \
- "1: xor %1, 1, %1\n" \
- " stl %1, %3" \
- : "=r" (old32), \
- "=&r" (cur32), \
- "=m" (__drm_dummy_lock(lock)),\
- "=m" (ret) \
- : "r" (old), \
- "r" (new)); \
- } while(0)
-
-#elif defined(__sparc__)
-
-#define DRM_CAS(lock,old,new,__ret) \
-do { register unsigned int __old __asm("o0"); \
- register unsigned int __new __asm("o1"); \
- register volatile unsigned int *__lock __asm("o2"); \
- __old = old; \
- __new = new; \
- __lock = (volatile unsigned int *)lock; \
- __asm__ __volatile__( \
- /*"cas [%2], %3, %0"*/ \
- ".word 0xd3e29008\n\t" \
- /*"membar #StoreStore | #StoreLoad"*/ \
- ".word 0x8143e00a" \
- : "=&r" (__new) \
- : "0" (__new), \
- "r" (__lock), \
- "r" (__old) \
- : "memory"); \
- __ret = (__new != __old); \
-} while(0)
-
-#elif defined(__ia64__)
-
-#ifdef __INTEL_COMPILER
-/* this currently generates bad code (missing stop bits)... */
-#include <ia64intrin.h>
-
-#define DRM_CAS(lock,old,new,__ret) \
- do { \
- unsigned long __result, __old = (old) & 0xffffffff; \
- __mf(); \
- __result = _InterlockedCompareExchange_acq(&__drm_dummy_lock(lock), (new), __old);\
- __ret = (__result) != (__old); \
-/* __ret = (__sync_val_compare_and_swap(&__drm_dummy_lock(lock), \
- (old), (new)) \
- != (old)); */\
- } while (0)
-
-#else
-#define DRM_CAS(lock,old,new,__ret) \
- do { \
- unsigned int __result, __old = (old); \
- __asm__ __volatile__( \
- "mf\n" \
- "mov ar.ccv=%2\n" \
- ";;\n" \
- "cmpxchg4.acq %0=%1,%3,ar.ccv" \
- : "=r" (__result), "=m" (__drm_dummy_lock(lock)) \
- : "r" ((unsigned long)__old), "r" (new) \
- : "memory"); \
- __ret = (__result) != (__old); \
- } while (0)
-
-#endif
-
-#elif defined(__powerpc__)
-
-#define DRM_CAS(lock,old,new,__ret) \
- do { \
- __asm__ __volatile__( \
- "sync;" \
- "0: lwarx %0,0,%1;" \
- " xor. %0,%3,%0;" \
- " bne 1f;" \
- " stwcx. %2,0,%1;" \
- " bne- 0b;" \
- "1: " \
- "sync;" \
- : "=&r"(__ret) \
- : "r"(lock), "r"(new), "r"(old) \
- : "cr0", "memory"); \
- } while (0)
-
-#endif /* architecture */
-#endif /* __GNUC__ >= 2 */
-
-#ifndef DRM_CAS
-#define DRM_CAS(lock,old,new,ret) do { ret=1; } while (0) /* FAST LOCK FAILS */
-#endif
-
-#if defined(__alpha__) || defined(__powerpc__)
-#define DRM_CAS_RESULT(_result) int _result
-#else
-#define DRM_CAS_RESULT(_result) char _result
-#endif
-
-#define DRM_LIGHT_LOCK(fd,lock,context) \
- do { \
- DRM_CAS_RESULT(__ret); \
- DRM_CAS(lock,context,DRM_LOCK_HELD|context,__ret); \
- if (__ret) drmGetLock(fd,context,0); \
- } while(0)
-
- /* This one counts fast locks -- for
- benchmarking only. */
-#define DRM_LIGHT_LOCK_COUNT(fd,lock,context,count) \
- do { \
- DRM_CAS_RESULT(__ret); \
- DRM_CAS(lock,context,DRM_LOCK_HELD|context,__ret); \
- if (__ret) drmGetLock(fd,context,0); \
- else ++count; \
- } while(0)
-
-#define DRM_LOCK(fd,lock,context,flags) \
- do { \
- if (flags) drmGetLock(fd,context,flags); \
- else DRM_LIGHT_LOCK(fd,lock,context); \
- } while(0)
-
-#define DRM_UNLOCK(fd,lock,context) \
- do { \
- DRM_CAS_RESULT(__ret); \
- DRM_CAS(lock,DRM_LOCK_HELD|context,context,__ret); \
- if (__ret) drmUnlock(fd,context); \
- } while(0)
-
- /* Simple spin locks */
-#define DRM_SPINLOCK(spin,val) \
- do { \
- DRM_CAS_RESULT(__ret); \
- do { \
- DRM_CAS(spin,0,val,__ret); \
- if (__ret) while ((spin)->lock); \
- } while (__ret); \
- } while(0)
-
-#define DRM_SPINLOCK_TAKE(spin,val) \
- do { \
- DRM_CAS_RESULT(__ret); \
- int cur; \
- do { \
- cur = (*spin).lock; \
- DRM_CAS(spin,cur,val,__ret); \
- } while (__ret); \
- } while(0)
-
-#define DRM_SPINLOCK_COUNT(spin,val,count,__ret) \
- do { \
- int __i; \
- __ret = 1; \
- for (__i = 0; __ret && __i < count; __i++) { \
- DRM_CAS(spin,0,val,__ret); \
- if (__ret) for (;__i < count && (spin)->lock; __i++); \
- } \
- } while(0)
-
-#define DRM_SPINUNLOCK(spin,val) \
- do { \
- DRM_CAS_RESULT(__ret); \
- if ((*spin).lock == val) { /* else server stole lock */ \
- do { \
- DRM_CAS(spin,val,0,__ret); \
- } while (__ret); \
- } \
- } while(0)
-
-/* General user-level programmer's API: unprivileged */
-extern int drmAvailable(void);
-extern int drmOpen(const char *name, const char *busid);
-extern int drmClose(int fd);
-extern drmVersionPtr drmGetVersion(int fd);
-extern drmVersionPtr drmGetLibVersion(int fd);
-extern void drmFreeVersion(drmVersionPtr);
-extern int drmGetMagic(int fd, drm_magic_t * magic);
-extern char *drmGetBusid(int fd);
-extern int drmGetInterruptFromBusID(int fd, int busnum, int devnum,
- int funcnum);
-extern int drmGetMap(int fd, int idx, drm_handle_t *offset,
- drmSize *size, drmMapType *type,
- drmMapFlags *flags, drm_handle_t *handle,
- int *mtrr);
-extern int drmGetClient(int fd, int idx, int *auth, int *pid,
- int *uid, unsigned long *magic,
- unsigned long *iocs);
-extern int drmGetStats(int fd, drmStatsT *stats);
-extern int drmSetInterfaceVersion(int fd, drmSetVersion *version);
-extern int drmCommandNone(int fd, unsigned long drmCommandIndex);
-extern int drmCommandRead(int fd, unsigned long drmCommandIndex,
- void *data, unsigned long size);
-extern int drmCommandWrite(int fd, unsigned long drmCommandIndex,
- void *data, unsigned long size);
-extern int drmCommandWriteRead(int fd, unsigned long drmCommandIndex,
- void *data, unsigned long size);
-
-/* General user-level programmer's API: X server (root) only */
-extern void drmFreeBusid(const char *busid);
-extern int drmSetBusid(int fd, const char *busid);
-extern int drmAuthMagic(int fd, drm_magic_t magic);
-extern int drmAddMap(int fd,
- drm_handle_t offset,
- drmSize size,
- drmMapType type,
- drmMapFlags flags,
- drm_handle_t * handle);
-extern int drmRmMap(int fd, drm_handle_t handle);
-extern int drmAddContextPrivateMapping(int fd, drm_context_t ctx_id,
- drm_handle_t handle);
-
-extern int drmAddBufs(int fd, int count, int size,
- drmBufDescFlags flags,
- int agp_offset);
-extern int drmMarkBufs(int fd, double low, double high);
-extern int drmCreateContext(int fd, drm_context_t * handle);
-extern int drmSetContextFlags(int fd, drm_context_t context,
- drm_context_tFlags flags);
-extern int drmGetContextFlags(int fd, drm_context_t context,
- drm_context_tFlagsPtr flags);
-extern int drmAddContextTag(int fd, drm_context_t context, void *tag);
-extern int drmDelContextTag(int fd, drm_context_t context);
-extern void *drmGetContextTag(int fd, drm_context_t context);
-extern drm_context_t * drmGetReservedContextList(int fd, int *count);
-extern void drmFreeReservedContextList(drm_context_t *);
-extern int drmSwitchToContext(int fd, drm_context_t context);
-extern int drmDestroyContext(int fd, drm_context_t handle);
-extern int drmCreateDrawable(int fd, drm_drawable_t * handle);
-extern int drmDestroyDrawable(int fd, drm_drawable_t handle);
-extern int drmCtlInstHandler(int fd, int irq);
-extern int drmCtlUninstHandler(int fd);
-extern int drmInstallSIGIOHandler(int fd,
- void (*f)(int fd,
- void *oldctx,
- void *newctx));
-extern int drmRemoveSIGIOHandler(int fd);
-
-/* General user-level programmer's API: authenticated client and/or X */
-extern int drmMap(int fd,
- drm_handle_t handle,
- drmSize size,
- drmAddressPtr address);
-extern int drmUnmap(drmAddress address, drmSize size);
-extern drmBufInfoPtr drmGetBufInfo(int fd);
-extern drmBufMapPtr drmMapBufs(int fd);
-extern int drmUnmapBufs(drmBufMapPtr bufs);
-extern int drmDMA(int fd, drmDMAReqPtr request);
-extern int drmFreeBufs(int fd, int count, int *list);
-extern int drmGetLock(int fd,
- drm_context_t context,
- drmLockFlags flags);
-extern int drmUnlock(int fd, drm_context_t context);
-extern int drmFinish(int fd, int context, drmLockFlags flags);
-extern int drmGetContextPrivateMapping(int fd, drm_context_t ctx_id,
- drm_handle_t * handle);
-
-/* AGP/GART support: X server (root) only */
-extern int drmAgpAcquire(int fd);
-extern int drmAgpRelease(int fd);
-extern int drmAgpEnable(int fd, unsigned long mode);
-extern int drmAgpAlloc(int fd, unsigned long size,
- unsigned long type, unsigned long *address,
- drm_handle_t *handle);
-extern int drmAgpFree(int fd, drm_handle_t handle);
-extern int drmAgpBind(int fd, drm_handle_t handle,
- unsigned long offset);
-extern int drmAgpUnbind(int fd, drm_handle_t handle);
-
-/* AGP/GART info: authenticated client and/or X */
-extern int drmAgpVersionMajor(int fd);
-extern int drmAgpVersionMinor(int fd);
-extern unsigned long drmAgpGetMode(int fd);
-extern unsigned long drmAgpBase(int fd); /* Physical location */
-extern unsigned long drmAgpSize(int fd); /* Bytes */
-extern unsigned long drmAgpMemoryUsed(int fd);
-extern unsigned long drmAgpMemoryAvail(int fd);
-extern unsigned int drmAgpVendorId(int fd);
-extern unsigned int drmAgpDeviceId(int fd);
-
-/* PCI scatter/gather support: X server (root) only */
-extern int drmScatterGatherAlloc(int fd, unsigned long size,
- drm_handle_t *handle);
-extern int drmScatterGatherFree(int fd, drm_handle_t handle);
-
-extern int drmWaitVBlank(int fd, drmVBlankPtr vbl);
-
-/* Support routines */
-extern int drmError(int err, const char *label);
-extern void *drmMalloc(int size);
-extern void drmFree(void *pt);
-
-/* Hash table routines */
-extern void *drmHashCreate(void);
-extern int drmHashDestroy(void *t);
-extern int drmHashLookup(void *t, unsigned long key, void **value);
-extern int drmHashInsert(void *t, unsigned long key, void *value);
-extern int drmHashDelete(void *t, unsigned long key);
-extern int drmHashFirst(void *t, unsigned long *key, void **value);
-extern int drmHashNext(void *t, unsigned long *key, void **value);
-
-/* PRNG routines */
-extern void *drmRandomCreate(unsigned long seed);
-extern int drmRandomDestroy(void *state);
-extern unsigned long drmRandom(void *state);
-extern double drmRandomDouble(void *state);
-
-/* Skip list routines */
-
-extern void *drmSLCreate(void);
-extern int drmSLDestroy(void *l);
-extern int drmSLLookup(void *l, unsigned long key, void **value);
-extern int drmSLInsert(void *l, unsigned long key, void *value);
-extern int drmSLDelete(void *l, unsigned long key);
-extern int drmSLNext(void *l, unsigned long *key, void **value);
-extern int drmSLFirst(void *l, unsigned long *key, void **value);
-extern void drmSLDump(void *l);
-extern int drmSLLookupNeighbors(void *l, unsigned long key,
- unsigned long *prev_key, void **prev_value,
- unsigned long *next_key, void **next_value);
-
-#endif
diff --git a/hw/xfree86/os-support/xf86drmCompat.h b/hw/xfree86/os-support/xf86drmCompat.h
deleted file mode 100644
index bdca46626..000000000
--- a/hw/xfree86/os-support/xf86drmCompat.h
+++ /dev/null
@@ -1,259 +0,0 @@
-/* xf86drmCompat.h -- OS-independent header for old device specific DRM user-level
- * library interface
- *
- * Copyright 2000 VA Linux Systems, Inc., Fremont, California.
- * Copyright 2002 Tungsten Graphics, 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:
- * Gareth Hughes <gareth@valinux.com>
- * Kevin E. Martin <martin@valinux.com>
- * Keith Whitwell <keith@tungstengraphics.com>
- *
- * Backwards compatability modules broken out by:
- * Jens Owen <jens@tungstengraphics.com>
- *
- * $XFree86: xc/programs/Xserver/hw/xfree86/os-support/xf86drmCompat.h,v 1.1 2002/10/30 12:52:23 alanh Exp $
- *
- */
-
-#ifndef _XF86DRI_COMPAT_H_
-#define _XF86DRI_COMPAT_H_
-
-/* WARNING: Do not change, or add, anything to this file. It is only provided
- * for binary backwards compatability with the old driver specific DRM
- * extensions used before XFree86 4.3.
- */
-
-#ifndef __user
-#define __user
-#endif
-
-/* I810 */
-
-typedef struct {
- unsigned int start;
- unsigned int end;
- unsigned int size;
- unsigned int mmio_offset;
- unsigned int buffers_offset;
- int sarea_off;
-
- unsigned int front_offset;
- unsigned int back_offset;
- unsigned int depth_offset;
- unsigned int overlay_offset;
- unsigned int overlay_physical;
- unsigned int w;
- unsigned int h;
- unsigned int pitch;
- unsigned int pitch_bits;
-} drmCompatI810Init;
-
-extern Bool drmI810CleanupDma(int driSubFD);
-extern Bool drmI810InitDma(int driSubFD, drmCompatI810Init *info );
-
-/* Mga */
-
-typedef struct {
- unsigned long sarea_priv_offset;
- int chipset;
- int sgram;
- unsigned int maccess;
- unsigned int fb_cpp;
- unsigned int front_offset, front_pitch;
- unsigned int back_offset, back_pitch;
- unsigned int depth_cpp;
- unsigned int depth_offset, depth_pitch;
- unsigned int texture_offset[2];
- unsigned int texture_size[2];
- unsigned long fb_offset;
- unsigned long mmio_offset;
- unsigned long status_offset;
- unsigned long warp_offset;
- unsigned long primary_offset;
- unsigned long buffers_offset;
-} drmCompatMGAInit;
-
-extern int drmMGAInitDMA( int fd, drmCompatMGAInit *info );
-extern int drmMGACleanupDMA( int fd );
-extern int drmMGAFlushDMA( int fd, drmLockFlags flags );
-extern int drmMGAEngineReset( int fd );
-extern int drmMGAFullScreen( int fd, int enable );
-extern int drmMGASwapBuffers( int fd );
-extern int drmMGAClear( int fd, unsigned int flags,
- unsigned int clear_color, unsigned int clear_depth,
- unsigned int color_mask, unsigned int depth_mask );
-extern int drmMGAFlushVertexBuffer( int fd, int indx, int used, int discard );
-extern int drmMGAFlushIndices( int fd, int indx,
- int start, int end, int discard );
-extern int drmMGATextureLoad( int fd, int indx,
- unsigned int dstorg, unsigned int length );
-extern int drmMGAAgpBlit( int fd, unsigned int planemask,
- unsigned int src, int src_pitch,
- unsigned int dst, int dst_pitch,
- int delta_sx, int delta_sy,
- int delta_dx, int delta_dy,
- int height, int ydir );
-
-/* R128 */
-
-typedef struct {
- unsigned long sarea_priv_offset;
- int is_pci;
- int cce_mode;
- int cce_secure;
- int ring_size;
- int usec_timeout;
- unsigned int fb_bpp;
- unsigned int front_offset, front_pitch;
- unsigned int back_offset, back_pitch;
- unsigned int depth_bpp;
- unsigned int depth_offset, depth_pitch;
- unsigned int span_offset;
- unsigned long fb_offset;
- unsigned long mmio_offset;
- unsigned long ring_offset;
- unsigned long ring_rptr_offset;
- unsigned long buffers_offset;
- unsigned long agp_textures_offset;
-} drmCompatR128Init;
-
-extern int drmR128InitCCE( int fd, drmCompatR128Init *info );
-extern int drmR128CleanupCCE( int fd );
-extern int drmR128StartCCE( int fd );
-extern int drmR128StopCCE( int fd );
-extern int drmR128ResetCCE( int fd );
-extern int drmR128WaitForIdleCCE( int fd );
-extern int drmR128EngineReset( int fd );
-extern int drmR128FullScreen( int fd, int enable );
-extern int drmR128SwapBuffers( int fd );
-extern int drmR128Clear( int fd, unsigned int flags,
- unsigned int clear_color, unsigned int clear_depth,
- unsigned int color_mask, unsigned int depth_mask );
-extern int drmR128FlushVertexBuffer( int fd, int prim, int indx,
- int count, int discard );
-extern int drmR128FlushIndices( int fd, int prim, int indx,
- int start, int end, int discard );
-extern int drmR128TextureBlit( int fd, int indx,
- int offset, int pitch, int format,
- int x, int y, int width, int height );
-extern int drmR128WriteDepthSpan( int fd, int n, int x, int y,
- const unsigned int depth[],
- const unsigned char mask[] );
-extern int drmR128WriteDepthPixels( int fd, int n,
- const int x[], const int y[],
- const unsigned int depth[],
- const unsigned char mask[] );
-extern int drmR128ReadDepthSpan( int fd, int n, int x, int y );
-extern int drmR128ReadDepthPixels( int fd, int n,
- const int x[], const int y[] );
-extern int drmR128PolygonStipple( int fd, unsigned int *mask );
-extern int drmR128FlushIndirectBuffer( int fd, int indx,
- int start, int end, int discard );
-
-/* Radeon */
-
-typedef struct {
- unsigned long sarea_priv_offset;
- int is_pci;
- int cp_mode;
- int agp_size;
- int ring_size;
- int usec_timeout;
-
- unsigned int fb_bpp;
- unsigned int front_offset, front_pitch;
- unsigned int back_offset, back_pitch;
- unsigned int depth_bpp;
- unsigned int depth_offset, depth_pitch;
-
- unsigned long fb_offset;
- unsigned long mmio_offset;
- unsigned long ring_offset;
- unsigned long ring_rptr_offset;
- unsigned long buffers_offset;
- unsigned long agp_textures_offset;
-} drmCompatRadeonInit;
-
-typedef struct {
- unsigned int x;
- unsigned int y;
- unsigned int width;
- unsigned int height;
- void *data;
-} drmCompatRadeonTexImage;
-
-extern int drmRadeonInitCP( int fd, drmCompatRadeonInit *info );
-extern int drmRadeonCleanupCP( int fd );
-extern int drmRadeonStartCP( int fd );
-extern int drmRadeonStopCP( int fd );
-extern int drmRadeonResetCP( int fd );
-extern int drmRadeonWaitForIdleCP( int fd );
-extern int drmRadeonEngineReset( int fd );
-extern int drmRadeonFullScreen( int fd, int enable );
-extern int drmRadeonSwapBuffers( int fd );
-extern int drmRadeonClear( int fd, unsigned int flags,
- unsigned int clear_color, unsigned int clear_depth,
- unsigned int color_mask, unsigned int stencil,
- void *boxes, int nbox );
-extern int drmRadeonFlushVertexBuffer( int fd, int prim, int indx,
- int count, int discard );
-extern int drmRadeonFlushIndices( int fd, int prim, int indx,
- int start, int end, int discard );
-extern int drmRadeonLoadTexture( int fd, int offset, int pitch, int format,
- int width, int height,
- drmCompatRadeonTexImage *image );
-extern int drmRadeonPolygonStipple( int fd, unsigned int *mask );
-extern int drmRadeonFlushIndirectBuffer( int fd, int indx,
- int start, int end, int discard );
-
-/* SiS */
-extern Bool drmSiSAgpInit(int driSubFD, int offset, int size);
-
-/* I830 */
-typedef struct {
- unsigned int start;
- unsigned int end;
- unsigned int size;
- unsigned int mmio_offset;
- unsigned int buffers_offset;
- int sarea_off;
- unsigned int front_offset;
- unsigned int back_offset;
- unsigned int depth_offset;
- unsigned int w;
- unsigned int h;
- unsigned int pitch;
- unsigned int pitch_bits;
- unsigned int cpp;
-} drmCompatI830Init;
-
-extern Bool drmI830CleanupDma(int driSubFD);
-extern Bool drmI830InitDma(int driSubFD, drmCompatI830Init *info );
-
-#endif
-
-/* WARNING: Do not change, or add, anything to this file. It is only provided
- * for binary backwards compatability with the old driver specific DRM
- * extensions used before XFree86 4.3.
- */
diff --git a/hw/xfree86/parser/Configint.h b/hw/xfree86/parser/Configint.h
index a51116b55..c20c1958c 100644
--- a/hw/xfree86/parser/Configint.h
+++ b/hw/xfree86/parser/Configint.h
@@ -1,4 +1,3 @@
-/* $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
diff --git a/hw/xfree86/parser/DRI.c b/hw/xfree86/parser/DRI.c
index 93d0d4b52..dc75cd23f 100644
--- a/hw/xfree86/parser/DRI.c
+++ b/hw/xfree86/parser/DRI.c
@@ -24,7 +24,6 @@
* 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 $
*
*/
diff --git a/hw/xfree86/parser/Device.c b/hw/xfree86/parser/Device.c
index 6eb2857f0..6ad5601b5 100644
--- a/hw/xfree86/parser/Device.c
+++ b/hw/xfree86/parser/Device.c
@@ -1,4 +1,3 @@
-/* $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
diff --git a/hw/xfree86/parser/Files.c b/hw/xfree86/parser/Files.c
index cbbcc74c8..2688bb100 100644
--- a/hw/xfree86/parser/Files.c
+++ b/hw/xfree86/parser/Files.c
@@ -1,4 +1,3 @@
-/* $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
diff --git a/hw/xfree86/parser/Flags.c b/hw/xfree86/parser/Flags.c
index bda24df1b..7ab70d1a8 100644
--- a/hw/xfree86/parser/Flags.c
+++ b/hw/xfree86/parser/Flags.c
@@ -1,4 +1,3 @@
-/* $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
diff --git a/hw/xfree86/parser/Input.c b/hw/xfree86/parser/Input.c
index 9f9323f05..3d9801968 100644
--- a/hw/xfree86/parser/Input.c
+++ b/hw/xfree86/parser/Input.c
@@ -1,4 +1,3 @@
-/* $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
@@ -103,7 +102,10 @@ xf86parseInputSection (void)
case DRIVER:
if (xf86getSubToken (&(ptr->inp_comment)) != STRING)
Error (QUOTE_MSG, "Driver");
- ptr->inp_driver = val.str;
+ if (strcmp(val.str, "keyboard") == 0)
+ ptr->inp_driver = "kbd";
+ else
+ ptr->inp_driver = val.str;
break;
case OPTION:
ptr->inp_option_lst = xf86parseOption(ptr->inp_option_lst);
diff --git a/hw/xfree86/parser/Keyboard.c b/hw/xfree86/parser/Keyboard.c
deleted file mode 100644
index 62031f629..000000000
--- a/hw/xfree86/parser/Keyboard.c
+++ /dev/null
@@ -1,309 +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) {
- xf86conffree(s1);
- 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);
- xf86conffree(s);
- 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/hw/xfree86/parser/Layout.c b/hw/xfree86/parser/Layout.c
index 3f6c4fbde..b9f4e9e6a 100644
--- a/hw/xfree86/parser/Layout.c
+++ b/hw/xfree86/parser/Layout.c
@@ -1,4 +1,3 @@
-/* $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
diff --git a/hw/xfree86/parser/Makefile.am b/hw/xfree86/parser/Makefile.am
index acda83d27..1c1ba3f13 100644
--- a/hw/xfree86/parser/Makefile.am
+++ b/hw/xfree86/parser/Makefile.am
@@ -1,5 +1,8 @@
if INSTALL_LIBXF86CONFIG
lib_LIBRARIES = libxf86config.a
+LIBHEADERS = \
+ xf86Optrec.h \
+ xf86Parser.h
else
noinst_LIBRARIES = libxf86config.a
endif
@@ -9,7 +12,6 @@ libxf86config_a_SOURCES = \
Files.c \
Flags.c \
Input.c \
- Keyboard.c \
Layout.c \
Module.c \
Video.c \
@@ -23,7 +25,7 @@ libxf86config_a_SOURCES = \
DRI.c \
Extensions.c
-AM_CFLAGS = $(XORG_CFLAGS)
+AM_CFLAGS = $(DIX_CFLAGS) $(XORG_CFLAGS)
EXTRA_DIST = \
Configint.h \
@@ -32,3 +34,6 @@ EXTRA_DIST = \
xf86Parser.h \
xf86tokens.h \
cpconfig.c
+
+sdk_HEADERS = \
+ $(LIBHEADERS)
diff --git a/hw/xfree86/parser/Module.c b/hw/xfree86/parser/Module.c
index 378d4acdc..f3ed9d19f 100644
--- a/hw/xfree86/parser/Module.c
+++ b/hw/xfree86/parser/Module.c
@@ -1,4 +1,3 @@
-/* $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
diff --git a/hw/xfree86/parser/Monitor.c b/hw/xfree86/parser/Monitor.c
index f8e42d09b..9dd0b1b1c 100644
--- a/hw/xfree86/parser/Monitor.c
+++ b/hw/xfree86/parser/Monitor.c
@@ -1,4 +1,3 @@
-/* $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
@@ -676,7 +675,7 @@ xf86printMonitorSection (FILE * cf, XF86ConfMonitorPtr ptr)
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");
+ fprintf(cf," ### Comment all HorizSync and VertRefresh values to use DDC:\n");
for (i = 0; i < ptr->mon_n_hsync; i++)
{
fprintf (cf, "\tHorizSync %2.1f - %2.1f\n",
diff --git a/hw/xfree86/parser/Pointer.c b/hw/xfree86/parser/Pointer.c
index c17aa5846..eeb0834bf 100644
--- a/hw/xfree86/parser/Pointer.c
+++ b/hw/xfree86/parser/Pointer.c
@@ -1,4 +1,3 @@
-/* $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
diff --git a/hw/xfree86/parser/Screen.c b/hw/xfree86/parser/Screen.c
index d572af56c..b7a64b035 100644
--- a/hw/xfree86/parser/Screen.c
+++ b/hw/xfree86/parser/Screen.c
@@ -1,4 +1,3 @@
-/* $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
diff --git a/hw/xfree86/parser/Vendor.c b/hw/xfree86/parser/Vendor.c
index 9c6469bb8..3e9358b3b 100644
--- a/hw/xfree86/parser/Vendor.c
+++ b/hw/xfree86/parser/Vendor.c
@@ -1,4 +1,3 @@
-/* $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
diff --git a/hw/xfree86/parser/Video.c b/hw/xfree86/parser/Video.c
index 88788aea8..fa0ff7833 100644
--- a/hw/xfree86/parser/Video.c
+++ b/hw/xfree86/parser/Video.c
@@ -1,4 +1,3 @@
-/* $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
diff --git a/hw/xfree86/parser/configProcs.h b/hw/xfree86/parser/configProcs.h
index bb5f4e9b2..0b989054b 100644
--- a/hw/xfree86/parser/configProcs.h
+++ b/hw/xfree86/parser/configProcs.h
@@ -1,4 +1,3 @@
-/* $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.
*
@@ -46,8 +45,6 @@ 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);
diff --git a/hw/xfree86/parser/cpconfig.c b/hw/xfree86/parser/cpconfig.c
index d16a242da..46a5a8b56 100644
--- a/hw/xfree86/parser/cpconfig.c
+++ b/hw/xfree86/parser/cpconfig.c
@@ -1,4 +1,3 @@
-/* $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
diff --git a/hw/xfree86/parser/read.c b/hw/xfree86/parser/read.c
index 59b0ea6fb..b6b3bc377 100644
--- a/hw/xfree86/parser/read.c
+++ b/hw/xfree86/parser/read.c
@@ -1,4 +1,3 @@
-/* $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
@@ -113,13 +112,6 @@ xf86readConfigFile (void)
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);
diff --git a/hw/xfree86/parser/scan.c b/hw/xfree86/parser/scan.c
index ce3cda128..f81c45afe 100644
--- a/hw/xfree86/parser/scan.c
+++ b/hw/xfree86/parser/scan.c
@@ -1,4 +1,3 @@
-/* $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
@@ -158,9 +157,128 @@ xf86strToUL (char *str)
return (tot);
}
+/*
+ * xf86getNextLine --
+ *
+ * read from the configFile FILE stream until we encounter a new
+ * line; this is effectively just a big wrapper for fgets(3).
+ *
+ * xf86getToken() assumes that we will read up to the next
+ * newline; we need to grow configBuf and configRBuf as needed to
+ * support that.
+ */
+
+static char*
+xf86getNextLine(void)
+{
+ static int configBufLen = CONFIG_BUF_LEN;
+ char *tmpConfigBuf, *tmpConfigRBuf;
+ int c, i, pos = 0, eolFound = 0;
+ char *ret = NULL;
+
+ /*
+ * reallocate the string if it was grown last time (i.e., is no
+ * longer CONFIG_BUF_LEN); we malloc the new strings first, so
+ * that if either of the mallocs fail, we can fall back on the
+ * existing buffer allocations
+ */
+
+ if (configBufLen != CONFIG_BUF_LEN) {
+
+ tmpConfigBuf = xf86confmalloc(CONFIG_BUF_LEN);
+ tmpConfigRBuf = xf86confmalloc(CONFIG_BUF_LEN);
+
+ if (!tmpConfigBuf || !tmpConfigRBuf) {
+
+ /*
+ * at least one of the mallocs failed; keep the old buffers
+ * and free any partial allocations
+ */
+
+ xf86conffree(tmpConfigBuf);
+ xf86conffree(tmpConfigRBuf);
+
+ } else {
+
+ /*
+ * malloc succeeded; free the old buffers and use the new
+ * buffers
+ */
+
+ configBufLen = CONFIG_BUF_LEN;
+
+ xf86conffree(configBuf);
+ xf86conffree(configRBuf);
+
+ configBuf = tmpConfigBuf;
+ configRBuf = tmpConfigRBuf;
+ }
+ }
+
+ /* read in another block of chars */
+
+ do {
+ ret = fgets(configBuf + pos, configBufLen - pos - 1, configFile);
+
+ if (!ret) break;
+
+ /* search for EOL in the new block of chars */
+
+ for (i = pos; i < (configBufLen - 1); i++) {
+ c = configBuf[i];
+
+ if (c == '\0') break;
+
+ if ((c == '\n') || (c == '\r')) {
+ eolFound = 1;
+ break;
+ }
+ }
+
+ /*
+ * if we didn't find EOL, then grow the string and
+ * read in more
+ */
+
+ if (!eolFound) {
+
+ tmpConfigBuf = xf86confrealloc(configBuf, configBufLen + CONFIG_BUF_LEN);
+ tmpConfigRBuf = xf86confrealloc(configRBuf, configBufLen + CONFIG_BUF_LEN);
+
+ if (!tmpConfigBuf || !tmpConfigRBuf) {
+
+ /*
+ * at least one of the reallocations failed; use the
+ * new allocation that succeeded, but we have to
+ * fallback to the previous configBufLen size and use
+ * the string we have, even though we don't have an
+ * EOL
+ */
+
+ if (tmpConfigBuf) configBuf = tmpConfigBuf;
+ if (tmpConfigRBuf) configRBuf = tmpConfigRBuf;
+
+ break;
+
+ } else {
+
+ /* reallocation succeeded */
+
+ configBuf = tmpConfigBuf;
+ configRBuf = tmpConfigRBuf;
+ pos = i;
+ configBufLen += CONFIG_BUF_LEN;
+ }
+ }
+
+ } while (!eolFound);
+
+ return (ret);
+}
+
/*
* xf86getToken --
- * Read next Token form the config file. Handle the global variable
+ * Read next Token from the config file. Handle the global variable
* pushToken.
*/
int
@@ -194,7 +312,7 @@ again:
{
char *ret;
if (configFile)
- ret = fgets (configBuf, CONFIG_BUF_LEN - 1, configFile);
+ ret = xf86getNextLine();
else {
if (builtinConfig[builtinIndex] == NULL)
ret = NULL;
diff --git a/hw/xfree86/parser/write.c b/hw/xfree86/parser/write.c
index 285080d99..1869f56a6 100644
--- a/hw/xfree86/parser/write.c
+++ b/hw/xfree86/parser/write.c
@@ -1,4 +1,3 @@
-/* $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
@@ -170,7 +169,10 @@ xf86writeConfigFile (const char *filename, XF86ConfigPtr cptr)
strerror(errno));
return 0;
case 0: /* child */
- setuid(getuid());
+ if (setuid(getuid()) == -1)
+ FatalError("xf86writeConfigFile(): "
+ "setuid failed(%s)\n",
+ strerror(errno));
ret = doWriteConfigFile(filename, cptr);
exit(ret);
break;
diff --git a/hw/xfree86/parser/xf86Optrec.h b/hw/xfree86/parser/xf86Optrec.h
index c38f2c219..183b85720 100644
--- a/hw/xfree86/parser/xf86Optrec.h
+++ b/hw/xfree86/parser/xf86Optrec.h
@@ -1,4 +1,3 @@
-/* $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
diff --git a/hw/xfree86/parser/xf86Parser.h b/hw/xfree86/parser/xf86Parser.h
index 75ee27337..a6829273c 100644
--- a/hw/xfree86/parser/xf86Parser.h
+++ b/hw/xfree86/parser/xf86Parser.h
@@ -1,4 +1,3 @@
-/* $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
diff --git a/hw/xfree86/parser/xf86tokens.h b/hw/xfree86/parser/xf86tokens.h
index 3c7e68ece..d5948dd5b 100644
--- a/hw/xfree86/parser/xf86tokens.h
+++ b/hw/xfree86/parser/xf86tokens.h
@@ -1,4 +1,3 @@
-/* $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
diff --git a/hw/xfree86/rac/Makefile.am b/hw/xfree86/rac/Makefile.am
index 144159d5f..b25068271 100644
--- a/hw/xfree86/rac/Makefile.am
+++ b/hw/xfree86/rac/Makefile.am
@@ -1,9 +1,8 @@
-module_LTLIBRARIES = librac.la
-librac_la_LDFLAGS = -avoid-version
-librac_la_SOURCES = xf86RACmodule.c xf86RAC.c
+noinst_LIBRARIES = librac.a
+librac_a_SOURCES = xf86RAC.c
sdk_HEADERS = xf86RAC.h
INCLUDES = $(XORG_INCS)
-AM_CFLAGS = $(XORG_CFLAGS) @SERVER_DEFINES@ @MODULE_DEFINES@ @LOADER_DEFINES@
+AM_CFLAGS = $(DIX_CFLAGS) $(XORG_CFLAGS)
diff --git a/hw/xfree86/rac/xf86RAC.c b/hw/xfree86/rac/xf86RAC.c
index 1f2d3a129..aba86226e 100644
--- a/hw/xfree86/rac/xf86RAC.c
+++ b/hw/xfree86/rac/xf86RAC.c
@@ -1,5 +1,3 @@
-/* $XFree86: xc/programs/Xserver/hw/xfree86/rac/xf86RAC.c,v 1.5 1999/06/12 17:30:21 dawes Exp $ */
-
#ifdef HAVE_XORG_CONFIG_H
#include <xorg-config.h>
#endif
@@ -243,12 +241,12 @@ static void RACCompositeRects(CARD8 op, PicturePtr pDst, xRenderColor *color,
int nRect, xRectangle *rects);
#endif
-GCFuncs RACGCFuncs = {
+static GCFuncs RACGCFuncs = {
RACValidateGC, RACChangeGC, RACCopyGC, RACDestroyGC,
RACChangeClip, RACDestroyClip, RACCopyClip
};
-GCOps RACGCOps = {
+static GCOps RACGCOps = {
RACFillSpans, RACSetSpans, RACPutImage, RACCopyArea,
RACCopyPlane, RACPolyPoint, RACPolylines, RACPolySegment,
RACPolyRectangle, RACPolyArc, RACFillPolygon, RACPolyFillRect,
@@ -257,13 +255,13 @@ GCOps RACGCOps = {
{NULL} /* devPrivate */
};
-miPointerSpriteFuncRec RACSpriteFuncs = {
+static miPointerSpriteFuncRec RACSpriteFuncs = {
RACSpriteRealizeCursor, RACSpriteUnrealizeCursor, RACSpriteSetCursor,
RACSpriteMoveCursor
};
-int RACScreenIndex = -1;
-int RACGCIndex = -1;
+static int RACScreenIndex = -1;
+static int RACGCIndex = -1;
static unsigned long RACGeneration = 0;
diff --git a/hw/xfree86/rac/xf86RAC.h b/hw/xfree86/rac/xf86RAC.h
index 783d79b93..366c21485 100644
--- a/hw/xfree86/rac/xf86RAC.h
+++ b/hw/xfree86/rac/xf86RAC.h
@@ -1,4 +1,3 @@
-/* $XFree86: xc/programs/Xserver/hw/xfree86/rac/xf86RAC.h,v 1.2 1999/05/15 12:10:33 dawes Exp $ */
#ifndef __XF86RAC_H
#define __XF86RAC_H 1
diff --git a/hw/xfree86/rac/xf86RACmodule.c b/hw/xfree86/rac/xf86RACmodule.c
deleted file mode 100644
index 7b1bdac98..000000000
--- a/hw/xfree86/rac/xf86RACmodule.c
+++ /dev/null
@@ -1,21 +0,0 @@
-#ifdef HAVE_XORG_CONFIG_H
-#include <xorg-config.h>
-#endif
-
-#include "xf86Module.h"
-
-static XF86ModuleVersionInfo racVersRec =
-{
- "rac",
- MODULEVENDORSTRING,
- MODINFOSTRING1,
- MODINFOSTRING2,
- XORG_VERSION_CURRENT,
- 1, 0, 0,
- ABI_CLASS_VIDEODRV, /* requires the video driver ABI */
- ABI_VIDEODRV_VERSION,
- MOD_CLASS_NONE,
- {0,0,0,0}
-};
-
-_X_EXPORT XF86ModuleData racModuleData = { &racVersRec, NULL, NULL };
diff --git a/hw/xfree86/ramdac/BT.c b/hw/xfree86/ramdac/BT.c
index 5c3139d91..5aa27a1f8 100644
--- a/hw/xfree86/ramdac/BT.c
+++ b/hw/xfree86/ramdac/BT.c
@@ -23,7 +23,6 @@
*
* BT RAMDAC routines.
*/
-/* $XFree86: xc/programs/Xserver/hw/xfree86/ramdac/BT.c,v 1.7 2000/10/20 12:57:27 alanh Exp $ */
#ifdef HAVE_XORG_CONFIG_H
#include <xorg-config.h>
diff --git a/hw/xfree86/ramdac/BT.h b/hw/xfree86/ramdac/BT.h
index c52b5a745..b3426bada 100644
--- a/hw/xfree86/ramdac/BT.h
+++ b/hw/xfree86/ramdac/BT.h
@@ -1,4 +1,3 @@
-/* $XFree86: xc/programs/Xserver/hw/xfree86/ramdac/BT.h,v 1.2 1998/07/25 16:57:17 dawes Exp $ */
#include "xf86RamDac.h"
diff --git a/hw/xfree86/ramdac/BTPriv.h b/hw/xfree86/ramdac/BTPriv.h
index 17edaefdc..184b4811c 100644
--- a/hw/xfree86/ramdac/BTPriv.h
+++ b/hw/xfree86/ramdac/BTPriv.h
@@ -1,4 +1,3 @@
-/* $XFree86: xc/programs/Xserver/hw/xfree86/ramdac/BTPriv.h,v 1.1.2.1 1998/07/18 17:54:00 dawes Exp $ */
#ifdef HAVE_XORG_CONFIG_H
#include <xorg-config.h>
diff --git a/hw/xfree86/ramdac/IBM.c b/hw/xfree86/ramdac/IBM.c
index 42bff44a9..2d9fe4d8f 100644
--- a/hw/xfree86/ramdac/IBM.c
+++ b/hw/xfree86/ramdac/IBM.c
@@ -23,7 +23,6 @@
*
* IBM RAMDAC routines.
*/
-/* $XFree86: xc/programs/Xserver/hw/xfree86/ramdac/IBM.c,v 1.12 2003/02/17 16:08:29 dawes Exp $ */
#ifdef HAVE_XORG_CONFIG_H
#include <xorg-config.h>
diff --git a/hw/xfree86/ramdac/IBM.h b/hw/xfree86/ramdac/IBM.h
index eb211883c..fdb0f5ad1 100644
--- a/hw/xfree86/ramdac/IBM.h
+++ b/hw/xfree86/ramdac/IBM.h
@@ -1,4 +1,3 @@
-/* $XFree86: xc/programs/Xserver/hw/xfree86/ramdac/IBM.h,v 1.7 1999/02/12 22:52:11 hohndel Exp $ */
#include <xf86RamDac.h>
diff --git a/hw/xfree86/ramdac/IBMPriv.h b/hw/xfree86/ramdac/IBMPriv.h
index 994296517..a33da9106 100644
--- a/hw/xfree86/ramdac/IBMPriv.h
+++ b/hw/xfree86/ramdac/IBMPriv.h
@@ -1,4 +1,3 @@
-/* $XFree86: xc/programs/Xserver/hw/xfree86/ramdac/IBMPriv.h,v 1.1.2.2 1998/07/18 17:54:01 dawes Exp $ */
#ifdef HAVE_XORG_CONFIG_H
#include <xorg-config.h>
diff --git a/hw/xfree86/ramdac/Makefile.am b/hw/xfree86/ramdac/Makefile.am
index 136bc7c57..8d944455f 100644
--- a/hw/xfree86/ramdac/Makefile.am
+++ b/hw/xfree86/ramdac/Makefile.am
@@ -13,7 +13,7 @@ EXTRA_DIST = BTPriv.h IBMPriv.h TIPriv.h xf86CursorPriv.h xf86RamDacPriv.h \
CURSOR.NOTES
AM_CFLAGS = -DXAAReverseBitOrder=xf86ReverseBitOrder -DRAMDAC_MODULE \
- $(XORG_CFLAGS) @SERVER_DEFINES@ @MODULE_DEFINES@ @LOADER_DEFINES@
+ $(DIX_CFLAGS) $(XORG_CFLAGS)
INCLUDES = $(XORG_INCS)
xf86BitOrder.c:
diff --git a/hw/xfree86/ramdac/TI.c b/hw/xfree86/ramdac/TI.c
index 390bc6b7b..f421fc39a 100644
--- a/hw/xfree86/ramdac/TI.c
+++ b/hw/xfree86/ramdac/TI.c
@@ -24,7 +24,6 @@
* Modified from IBM.c to support TI RAMDAC routines
* by Jens Owen, <jens@tungstengraphics.com>.
*/
-/* $XFree86: xc/programs/Xserver/hw/xfree86/ramdac/TI.c,v 1.7 2003/02/17 16:08:29 dawes Exp $ */
#ifdef HAVE_XORG_CONFIG_H
#include <xorg-config.h>
diff --git a/hw/xfree86/ramdac/TI.h b/hw/xfree86/ramdac/TI.h
index f33247cfc..bc807f40c 100644
--- a/hw/xfree86/ramdac/TI.h
+++ b/hw/xfree86/ramdac/TI.h
@@ -1,4 +1,3 @@
-/* $XFree86: xc/programs/Xserver/hw/xfree86/ramdac/TI.h,v 1.4 2000/05/02 21:04:46 alanh Exp $ */
#include <xf86RamDac.h>
diff --git a/hw/xfree86/ramdac/TIPriv.h b/hw/xfree86/ramdac/TIPriv.h
index d66149dcf..191c9b5ce 100644
--- a/hw/xfree86/ramdac/TIPriv.h
+++ b/hw/xfree86/ramdac/TIPriv.h
@@ -1,4 +1,3 @@
-/* $XFree86: xc/programs/Xserver/hw/xfree86/ramdac/TIPriv.h,v 1.2 1998/07/25 16:57:19 dawes Exp $ */
#ifdef HAVE_XORG_CONFIG_H
#include <xorg-config.h>
diff --git a/hw/xfree86/ramdac/xf86Cursor.c b/hw/xfree86/ramdac/xf86Cursor.c
index 17a49669d..a903f7f02 100644
--- a/hw/xfree86/ramdac/xf86Cursor.c
+++ b/hw/xfree86/ramdac/xf86Cursor.c
@@ -1,4 +1,3 @@
-/* $XFree86: xc/programs/Xserver/hw/xfree86/ramdac/xf86Cursor.c,v 1.19tsi Exp $ */
#ifdef HAVE_XORG_CONFIG_H
#include <xorg-config.h>
diff --git a/hw/xfree86/ramdac/xf86Cursor.h b/hw/xfree86/ramdac/xf86Cursor.h
index ac88f4e5f..08cca6b96 100644
--- a/hw/xfree86/ramdac/xf86Cursor.h
+++ b/hw/xfree86/ramdac/xf86Cursor.h
@@ -1,4 +1,3 @@
-/* $XFree86: xc/programs/Xserver/hw/xfree86/ramdac/xf86Cursor.h,v 1.10tsi Exp $ */
#ifndef _XF86CURSOR_H
#define _XF86CURSOR_H
diff --git a/hw/xfree86/ramdac/xf86CursorPriv.h b/hw/xfree86/ramdac/xf86CursorPriv.h
index 9829f34e3..472e2b06b 100644
--- a/hw/xfree86/ramdac/xf86CursorPriv.h
+++ b/hw/xfree86/ramdac/xf86CursorPriv.h
@@ -1,4 +1,3 @@
-/* $XFree86: xc/programs/Xserver/hw/xfree86/ramdac/xf86CursorPriv.h,v 1.4tsi Exp $ */
#ifdef HAVE_XORG_CONFIG_H
#include <xorg-config.h>
diff --git a/hw/xfree86/ramdac/xf86HWCurs.c b/hw/xfree86/ramdac/xf86HWCurs.c
index aef1c8bb1..91caea047 100644
--- a/hw/xfree86/ramdac/xf86HWCurs.c
+++ b/hw/xfree86/ramdac/xf86HWCurs.c
@@ -1,4 +1,3 @@
-/* $XFree86: xc/programs/Xserver/hw/xfree86/ramdac/xf86HWCurs.c,v 1.12 2003/02/13 20:28:41 tsi Exp $ */
#ifdef HAVE_XORG_CONFIG_H
#include <xorg-config.h>
diff --git a/hw/xfree86/ramdac/xf86RamDac.c b/hw/xfree86/ramdac/xf86RamDac.c
index e0314f6b7..1dd3daf1b 100644
--- a/hw/xfree86/ramdac/xf86RamDac.c
+++ b/hw/xfree86/ramdac/xf86RamDac.c
@@ -23,7 +23,6 @@
*
* Generic RAMDAC access routines.
*/
-/* $XFree86: xc/programs/Xserver/hw/xfree86/ramdac/xf86RamDac.c,v 1.6tsi Exp $ */
#ifdef HAVE_XORG_CONFIG_H
#include <xorg-config.h>
diff --git a/hw/xfree86/ramdac/xf86RamDac.h b/hw/xfree86/ramdac/xf86RamDac.h
index 319a7b577..1f03dfb99 100644
--- a/hw/xfree86/ramdac/xf86RamDac.h
+++ b/hw/xfree86/ramdac/xf86RamDac.h
@@ -1,4 +1,3 @@
-/* $XFree86: xc/programs/Xserver/hw/xfree86/ramdac/xf86RamDac.h,v 1.9 1999/03/28 15:33:02 dawes Exp $ */
#ifndef _XF86RAMDAC_H
#define _XF86RAMDAC_H 1
diff --git a/hw/xfree86/ramdac/xf86RamDacCmap.c b/hw/xfree86/ramdac/xf86RamDacCmap.c
index 04f50f166..600fe3f07 100644
--- a/hw/xfree86/ramdac/xf86RamDacCmap.c
+++ b/hw/xfree86/ramdac/xf86RamDacCmap.c
@@ -23,7 +23,6 @@
*
* Generic RAMDAC access to colormaps.
*/
-/* $XFree86: xc/programs/Xserver/hw/xfree86/ramdac/xf86RamDacCmap.c,v 1.6 2000/03/21 21:15:28 alanh Exp $ */
#ifdef HAVE_XORG_CONFIG_H
#include <xorg-config.h>
diff --git a/hw/xfree86/ramdac/xf86RamDacPriv.h b/hw/xfree86/ramdac/xf86RamDacPriv.h
index ae5fc72c5..f68e588f5 100644
--- a/hw/xfree86/ramdac/xf86RamDacPriv.h
+++ b/hw/xfree86/ramdac/xf86RamDacPriv.h
@@ -1,4 +1,3 @@
-/* $XFree86: xc/programs/Xserver/hw/xfree86/ramdac/xf86RamDacPriv.h,v 1.3 1998/12/06 06:08:37 dawes Exp $ */
#ifdef HAVE_XORG_CONFIG_H
#include <xorg-config.h>
diff --git a/hw/xfree86/scanpci/Makefile.am b/hw/xfree86/scanpci/Makefile.am
index d473833ed..d4d9da222 100644
--- a/hw/xfree86/scanpci/Makefile.am
+++ b/hw/xfree86/scanpci/Makefile.am
@@ -8,7 +8,7 @@ libscanpci_la_SOURCES = xf86ScanPci.c
INCLUDES = $(XORG_INCS)
-AM_CFLAGS = $(XORG_CFLAGS) @SERVER_DEFINES@ @MODULE_DEFINES@ @LOADER_DEFINES@
+AM_CFLAGS = $(DIX_CFLAGS) $(XORG_CFLAGS)
BUILT_SOURCES = xf86PciIds.h
diff --git a/hw/xfree86/scanpci/extrapci.ids b/hw/xfree86/scanpci/extrapci.ids
index 81d08dca3..08e7af992 100644
--- a/hw/xfree86/scanpci/extrapci.ids
+++ b/hw/xfree86/scanpci/extrapci.ids
@@ -11,11 +11,9 @@
# specified for a device (see the syntax description below).
#
# Don't make gratuitous changes, and please send back
-# changes/additions that aren't XFree86-specific to the pciids
+# changes/additions that aren't X-specific to the pciids
# project (http://pciids.sf.net/).
#
-# $XdotOrg: xserver/xorg/hw/xfree86/scanpci/extrapci.ids,v 1.6 2005/09/19 18:54:05 alanc Exp $
-# $XFree86: xc/programs/Xserver/hw/xfree86/etc/extrapci.ids,v 1.11 2003/12/18 16:22:27 dawes Exp $
#
# Vendors, devices and subsystems. Please keep sorted.
@@ -39,10 +37,7 @@
# Some NVIDIA cards that are not in the master pci.ids file yet.
10de "
- 0046 NV40 [GeForce 6800 GT]
- 0048 GeForce 6800 XT
0147 GeForce 6700 XL
0160 GeForce 6500
- 0163 GeForce 6200 LE
0169 GeForce 6250
diff --git a/hw/xfree86/scanpci/pci.ids b/hw/xfree86/scanpci/pci.ids
index 9c704bb72..d48e25c58 100644
--- a/hw/xfree86/scanpci/pci.ids
+++ b/hw/xfree86/scanpci/pci.ids
@@ -11,7 +11,7 @@
# This file can be distributed under either the GNU General Public License
# (version 2 or higher) or the 3-clause BSD License.
#
-# Daily snapshot on Fri 2006-05-19 01:05:03
+# Daily snapshot on Wed 2006-12-06 02:05:02
#
# Vendors, devices and subsystems. Please keep sorted.
@@ -56,11 +56,15 @@
045e Microsoft
006e MN-510 802.11b wireless USB paddle
00c2 MN-710 wireless USB paddle
+0482 Kyocera
04cf Myson Century, Inc
8818 CS8818 USB2.0-to-ATAPI Bridge Controller with Embedded PHY
050d Belkin
+ 001a FSD7000 802.11g PCI Wireless card
0109 F5U409-CU USB/Serial Portable Adapter
7050 F5D7050 802.11g Wireless USB Adapter
+05a9 OmniVision
+ 8519 OV519 series
05e3 CyberDoor
0701 CBD516
066f Sigmatel Inc.
@@ -72,12 +76,13 @@
1703 ISDN Adapter (PCI Bus, DV, W)
1704 ISDN Adapter (PCI Bus, D, C)
067b Prolific Technology, Inc.
+ 2303 PL-2303 USB-to-Serial Converter
3507 PL-3507 Hi-Speed USB & IEEE 1394 Combo to IDE Bridge Controller
-# Found on Sapphire Radeon X700 (www.saphiretech.com)
0721 Sapphire, Inc.
07e2 ELMEG Communication Systems GmbH
# Wrong ID used in subsystem ID of VIA USB controllers.
0925 VIA Technologies, Inc. (Wrong ID)
+093a PixArt Imaging Inc.
09c1 Arris
0704 CM 200E Cable Modem
0a89 BREA Technologies Inc
@@ -88,8 +93,12 @@
0405 Rhino R8FXX
0505 Rhino R24FXX
0506 Rhino R2T1
+ 0605 Rhino R2T1
+ 0705 Rhino R24FXS
0b49 ASCII Corporation
064f Trance Vibrator
+0ccd TerraTec Electronic GmbH
+ 0038 Cinergy T^2 DVB-T Receiver
0e11 Compaq Computer Corporation
0001 PCI to EISA Bridge
0002 PCI to ISA Bridge
@@ -193,7 +202,6 @@
0e11 4082 Smart Array 532
0e11 4083 Smart Array 5312
b1a4 NC7131 Gigabit Server Adapter
-# HP Memory Hot-Plug Controller
b200 Memory Hot-Plug Controller
b203 Integrated Lights Out Controller
b204 Integrated Lights Out Processor
@@ -201,6 +209,7 @@
f150 NetFlex-3/P ThunderLAN 2.3
0e21 Cowon Systems, Inc.
0e55 HaSoTec GmbH
+0eac SHF Communication Technologies AG
# Formerly NCR
1000 LSI Logic / Symbios Logic
0001 53c810
@@ -213,14 +222,14 @@
0006 53c860
1000 1000 LSI53C860E PCI to Ultra SCSI I/O Processor
000a 53c1510
+ 0e11 b143 Integrated Dual Channel Wide Ultra2 SCSI Controller
1000 1000 LSI53C1510 PCI to Dual Channel Wide Ultra2 SCSI Controller (Nonintelligent mode)
000b 53C896/897
0e11 6004 EOB003 Series SCSI host adapter
1000 1000 LSI53C896/7 PCI to Dual Channel Ultra2 SCSI Multifunction Controller
1000 1010 LSI22910 PCI to Dual Channel Ultra2 SCSI host adapter
1000 1020 LSI21002 PCI to Dual Channel Ultra2 SCSI host adapter
-# multifunction PCI card: Dual U2W SCSI, dual 10/100TX, graphics
- 13e9 1000 6221L-4U
+ 13e9 1000 6221L-4U (Dual U2W SCSI, dual 10/100TX, graphics)
000c 53c895
1000 1010 LSI8951U PCI to Ultra2 SCSI host adapter
1000 1020 LSI8952U PCI to Ultra2 SCSI host adapter
@@ -233,6 +242,8 @@
1000 1010 LSI22801 PCI to Dual Channel Ultra SCSI host adapter
1000 1020 LSI22802 PCI to Dual Channel Ultra SCSI host adapter
1092 8760 FirePort 40 Dual SCSI Controller
+ 1775 10d0 V5D Single Board Computer Wide Ultra SCSI
+ 1775 10d1 V5D Single Board Computer Ultra SCSI
1de1 3904 DC390F/U Ultra Wide SCSI Adapter
4c53 1000 CC7/CR7/CP7/VC7/VP7/VR7 mainboard
4c53 1050 CT7 mainboard
@@ -246,10 +257,13 @@
1000 1000 LSI53C875A PCI to Ultra SCSI Controller
0020 53c1010 Ultra3 SCSI Adapter
1000 1000 LSI53C1010-33 PCI to Dual Channel Ultra160 SCSI Controller
+ 107b 1040 Server Onboard 53C1010-33
1de1 1020 DC-390U3W
0021 53c1010 66MHz Ultra3 SCSI Adapter
1000 1000 LSI53C1000/1000R/1010R/1010-66 PCI to Ultra160 SCSI Controller
1000 1010 Asus TR-DLS onboard 53C1010-66
+ 103c 1330 Ultra160 SCSI [A7059A]
+ 103c 1340 Ultra160 SCSI [A7060A]
124b 1070 PMC-USCSI3
4c53 1080 CT8 mainboard
4c53 1300 P017 mezzanine (32-bit PMC)
@@ -261,6 +275,7 @@
1028 016c PowerEdge 1850 MPT Fusion SCSI/RAID (Perc 4)
1028 0183 PowerEdge 1800
1028 1010 LSI U320 SCSI Controller
+ 103c 12c5 Ultra320 SCSI [A7173A]
124b 1170 PMC-USCSI320
1734 1052 Primergy RX300 S2
0031 53c1030ZC PCI-X Fusion-MPT Dual Ultra320 SCSI
@@ -278,7 +293,11 @@
005a SAS1066E PCI-Express Fusion-MPT SAS
005c SAS1064A PCI-X Fusion-MPT SAS
005e SAS1066 PCI-X Fusion-MPT SAS
- 0060 SAS1078 PCI-X Fusion-MPT SAS
+ 0060 MegaRAID SAS 1078
+ 1028 1f0a PERC 6/E Adapter RAID Controller
+ 1028 1f0b PERC 6/i Adapter RAID Controller
+ 1028 1f0c PERC 6/i Integrated RAID Controller
+ 1028 1f0d PERC 6/i Enhanced RAID Controller
0062 SAS1078 PCI-Express Fusion-MPT SAS
1000 0062 SAS1078 PCI-Express Fusion-MPT SAS
008f 53c875J
@@ -306,6 +325,26 @@
8086 3008 MegaRAID RAID Controller SRCS28X
8086 3431 MegaRAID RAID Controller Alief SROMBU42E
8086 3499 MegaRAID RAID Controller Harwich SROMBU42E
+ 0411 MegaRAID SAS
+ 1000 1001 MegaRAID SAS 8408E
+ 1000 1002 MegaRAID SAS 8480E
+ 1000 1003 MegaRAID SAS 8344ELP
+ 1000 1004 MegaRAID SAS 8308ELP
+ 1000 100c MegaRAID SATA 300-12E
+ 1000 100d MegaRAID SATA 300-16E
+ 1000 2004 MegaRAID SATA 300-8ELP
+ 1000 2005 MegaRAID SATA 300-4ELP
+ 1033 8287 MegaRAID SAS PCI Express ROMB
+ 1054 3016 MegaRAID SAS RoMB Server
+ 1734 1081 MegaRAID SAS PCI Express ROMB
+ 1734 10a3 MegaRAID SAS PCI Express ROMB
+ 8086 1001 SRCSAS18E RAID Controller
+ 8086 1003 SRCSAS144E RAID Controller
+ 8086 3500 SROMBSAS18E RAID Controller
+ 8086 3501 SROMBSAS18E RAID Controller
+ 8086 3504 SROMBSAS18E RAID Controller
+ 0413 MegaRAID SAS Verde ZCR
+ 1000 1005 MegaRAID SAS 8300XLP
0621 FC909 Fibre Channel Adapter
0622 FC929 Fibre Channel Adapter
1000 1020 44929 O Dual Fibre Channel card
@@ -390,6 +429,7 @@
174b 7c29 Sapphire Radeon 9600XT
1787 4002 Radeon 9600 XT
4153 RV350 AS [Radeon 9550]
+ 1043 010c A9550GE/TD
1462 932c 865PE Neo2-V (MS-6788) mainboard
4154 RV350 AT [Fire GL T2]
4155 RV350 AU [Fire GL T2]
@@ -417,7 +457,8 @@
1043 c01b A9600XT/TD (Secondary)
174b 7c28 Sapphire Radeon 9600XT (Secondary)
1787 4003 Radeon 9600 XT (Secondary)
- 4173 RV350 ?? [Radeon 9550] (Secondary)
+ 4173 RV350 AS [Radeon 9550] (Secondary)
+ 1043 010d A9550GE/TD (Secondary)
4237 Radeon 7000 IGP
4242 R200 BB [Radeon All in Wonder 8500DV]
1002 02aa Radeon 8500 AIW DV Edition
@@ -537,8 +578,9 @@
1028 00ce PowerEdge 1400
1028 00d1 PowerEdge 2550
1028 00d9 PowerEdge 2500
- 1028 0134 Poweredge SC600
+ 1028 0134 PowerEdge 600SC
103c 10e1 NetServer Rage XL
+ 107b 6400 6400 Server
1734 007a Primergy RX300
8086 3411 SDS2 Mainboard
8086 3427 S875WP1-E mainboard
@@ -567,7 +609,6 @@
10f1 0002 RV250 If [Tachyon G9000 PRO]
148c 2039 RV250 If [Radeon 9000 Pro "Evil Commando"]
1509 9a00 RV250 If [Radeon 9000 "AT009"]
-# New subdevice - 3D Prophet 9000 PCI by Hercules. AGP version probably would have same ID, so not specified.
1681 0040 RV250 If [3D prophet 9000]
174b 7176 RV250 If [Sapphire Radeon 9000 Pro]
174b 7192 RV250 If [Radeon 9000 "Atlantis"]
@@ -648,7 +689,7 @@
4c5a Radeon Mobility M6 LZ
4c64 Radeon R250 Ld [Radeon Mobility 9000 M9]
4c65 Radeon R250 Le [Radeon Mobility 9000 M9]
- 4c66 Radeon R250 [Radeon Mobility 9200]
+ 4c66 Radeon R250 [Mobility FireGL 9000]
4c67 Radeon R250 Lg [Radeon Mobility 9000 M9]
# Secondary chip to the Lf
4c6e Radeon R250 Ln [Radeon Mobility 9000 M9] [Secondary]
@@ -786,12 +827,14 @@
1014 029a Remote Supervisor Adapter II (RSA2)
1014 02c8 IBM eServer xSeries server mainboard
1028 019a PowerEdge SC1425
+ 103c 1292 Radeon 7000
1458 4002 RV100 QY [RADEON 7000 PRO MAYA AV Series]
148c 2003 RV100 QY [Radeon 7000 Multi-Display Edition]
148c 2023 RV100 QY [Radeon 7000 Evil Master Multi-Display]
174b 7112 RV100 QY [Sapphire Radeon VE 7000]
174b 7c28 Sapphire Radeon VE 7000 DDR
1787 0202 RV100 QY [Excalibur Radeon 7000]
+ 17ee 1001 Radeon 7000 64MB DDR + DVI
515a Radeon RV100 QZ [Radeon 7000/VE]
515e ES1000
515f ES1000
@@ -860,9 +903,11 @@
5551 R423 UQ [FireGL V7200 (PCIE)]
5552 R423 UR [FireGL V5100 (PCIE)]
5554 R423 UT [FireGL V7100 (PCIE)]
+ 5569 R423 UI [Radeon X800PRO (PCIE)] Secondary
556b Radeon R423 UK (PCIE) [X800 SE] (Secondary)
556d R430 [Radeon X800 XL] (PCIe) Secondary
556f R430 [Radeon X800 (PCIE) Secondary]
+ 5571 R423GL-SE ATI FIREGL V5100 PCI-EX Secondary
564a M26 [Mobility FireGL V5000]
564b M26 [Mobility FireGL V5000]
564f M26 [Radeon Mobility X700 XL] (PCIE)
@@ -922,6 +967,7 @@
5969 ES1000
5974 RS482 [Radeon Xpress 200]
5975 RS482 [Radeon Xpress 200M]
+ 5a33 Radeon Xpress 200 Host Bridge
5a34 RS480 PCI-X Root Port
# Comes in pair with 5a3f
5a36 RS480 PCI Bridge
@@ -988,14 +1034,24 @@
700f PCI Bridge [IGP 320M]
7010 PCI Bridge [IGP 340M]
7100 R520 [Radeon X1800]
+ 7102 M58 [Radeon Mobility X1800]
+ 7103 M58 [Mobility FireGL V7200]
+ 7104 R520 GL ATI FireGL V7200 Primary
7105 R520 [FireGL]
+ 7106 M58 [Mobility FireGL V7100]
+ 7108 M58 [Radeon Mobility X1800]
7109 R520 [Radeon X1800]
1002 0322 All-in-Wonder X1800XL
1002 0d02 Radeon X1800 CrossFire Edition
+ 710a R520 [Radeon X1800]
+ 710b R520 [Radeon X1800]
+ 710c R520 [Radeon X1800]
7120 R520 [Radeon X1800] (Secondary)
+ 7124 R520 GL ATI FireGL V7200 Secondary
7129 R520 [Radeon X1800] (Secondary)
1002 0323 All-in-Wonder X1800XL (Secondary)
1002 0d03 Radeon X1800 CrossFire Edition (Secondary)
+ 7140 RV515 [Radeon X1600]
7142 RV515 [Radeon X1300]
1002 0322 All-in-Wonder 2006 PCI-E Edition
7145 Radeon Mobility X1400
@@ -1005,16 +1061,48 @@
714a M52 [ATI Mobility Radeon X1300]
714b M52 [ATI Mobility Radeon X1300]
714c M52 [ATI Mobility Radeon X1300]
+ 714d RV515 [Radeon X1300]
+ 714e RV515 [Radeon X1300]
+ 7152 RV515 GL ATI FireGL V3300 Primary
+ 715e RV515 [Radeon X1300]
7162 RV515 [Radeon X1300] (Secondary)
1002 0323 All-in-Wonder 2006 PCI-E Edition (Secondary)
7166 RV515 [Radeon X1300] (Secondary)
1002 0323 All-in-Wonder 2006 PCI-E Edition (Secondary)
+ 7172 RV515 GL ATI FireGL V3300 Secondary
+ 7180 RV516 Radeon X1300 Series Primary
+ 7181 RV516 XT Radeon X1600 Series Primary
+ 71a0 RV516 Radeon X1300 Series Secondary
+ 71a1 RV516 XT Radeon X1600 Series Secondary
71c0 RV530 [Radeon X1600]
71c2 RV530 [Radeon X1600]
71c4 M56GL [ATI Mobility FireGL V5200]
+ 17aa 2007 ThinkPad T60p
71c5 M56P [Radeon Mobility X1600]
+ 71c6 RV530LE [Radeon X1600]
+ 71ce RV530LE [Radeon X1600]
+ 71d5 M66-P ATI Mobility Radeon X1700
+ 71d6 M66-XT ATI Mobility Radeon X1700
+ 71de RV530LE [Radeon X1600]
71e0 RV530 [Radeon X1600] (Secondary)
71e2 RV530 [Radeon X1600] (Secondary)
+ 7240 R580 [Radeon X1900]
+ 7241 R580 [Radeon X1900]
+ 7242 R580 [Radeon X1900]
+ 7243 R580 [Radeon X1900]
+ 7244 R580 [Radeon X1900]
+ 7245 R580 [Radeon X1900]
+ 7246 R580 [Radeon X1900]
+ 7247 R580 [Radeon X1900]
+ 7248 R580 [Radeon X1900]
+ 7249 R580 [Radeon X1900 XT] Primary
+ 724a R580 [Radeon X1900]
+ 724b R580 [Radeon X1900]
+ 724c R580 [Radeon X1900]
+ 724d R580 [Radeon X1900]
+ 724e R580 [FireGL V7300/V7350] Primary (PCIE)
+ 7269 R580 [Radeon X1900 XT] Secondary
+ 726e R580 [FireGL V7300/V7350] Secondary (PCIE)
7833 Radeon 9100 IGP Host Bridge
7834 Radeon 9100 PRO IGP
7835 Radeon Mobility 9200 IGP
@@ -1154,6 +1242,7 @@
1025 0315 ALN315 Fast Ethernet
1033 800c PC-9821-CS01 100BASE-TX Interface Card
1033 800d PC-9821NR-B06 100BASE-TX Interface Card
+ 103c 125a 10/100Base-TX (PCI) [A5506B]
108d 0016 Rapidfire 2327 10/100 Ethernet
108d 0017 GoCard 2250 Ethernet 10/100 Cardbus
10b8 2005 SMC8032DT Extreme Ethernet 10/100
@@ -1181,6 +1270,9 @@
1385 2100 FA510
1395 0001 10/100 Ethernet CardBus PC Card
13d1 ab01 EtherFast 10/100 Cardbus (PCMPC200)
+ 1498 000a TPMC880-10 10/100Base-T and 10Base2 PMC Ethernet Adapter
+ 1498 000b TPMC880-11 Single 10/100Base-T PMC Ethernet Adapter
+ 1498 000c TPMC880-12 Single 10Base2 PMC Ethernet Adapter
14cb 0100 LNDL-100N 100Base-TX Ethernet PC Card
8086 0001 EtherExpress PRO/100 Mobile CardBus 32
001a Farallon PN9000SX Gigabit Ethernet
@@ -1197,7 +1289,7 @@
0e11 4050 Integrated Smart Array
0e11 4051 Integrated Smart Array
0e11 4058 Integrated Smart Array
- 103c 10c2 Hewlett-Packard NetRAID-4M
+ 103c 10c2 NetRAID-4M
12d9 000a IP Telephony card
4c53 1050 CT7 mainboard
4c53 1051 CE7 mainboard
@@ -1241,12 +1333,14 @@
4400 CD 4400
6001 CS 4610/11 [CrystalClear SoundFusion Audio Accelerator]
1014 1010 CS4610 SoundFusion Audio Accelerator
- 6003 CS 4614/22/24 [CrystalClear SoundFusion Audio Accelerator]
+ 6003 CS 4614/22/24/30 [CrystalClear SoundFusion Audio Accelerator]
1013 4280 Crystal SoundFusion PCI Audio Accelerator
1014 0153 ThinkPad A20m
+ 153b 112e DMX XFire 1024
153b 1136 SiXPack 5.1+
1681 0050 Game Theater XP
1681 a011 Fortissimo III 7.1
+ 5053 3357 Santa Cruz
6004 CS 4614/22/24 [CrystalClear SoundFusion Audio Accelerator]
6005 Crystal CS4281 PCI Audio
1013 4281 Crystal CS4281 PCI Audio
@@ -1272,7 +1366,6 @@
0020 GXT1000 Graphics Adapter
0022 IBM27-82351
002d Python
-# [official name in AIX 5]
002e SCSI RAID Adapter [ServeRAID]
1014 002e ServeRAID-3x
1014 022e ServeRAID-4H
@@ -1302,6 +1395,7 @@
0053 25 MBit ATM Controller
0054 GXT500P/GXT550P Graphics Adapter
0057 MPEG PCI Bridge
+ 0058 SSA Adapter [Advanced SerialRAID/X]
005c i82557B 10/100
005e GXT800P Graphics Adapter
007c ATM Controller (14107c00)
@@ -1374,6 +1468,7 @@
1014 02c1 PCI-X DDR 3Gb SAS Adapter (572A/572C)
1014 02c2 PCI-X DDR 3Gb SAS RAID Adapter (572B/571D)
0302 Winnipeg PCI-X Host Bridge
+ 0308 CalIOC2 PCI-E Root Port
0314 ZISC 036 Neural accelerator card
3022 QLA3022 Network Adapter
4022 QLA3022 Network Adapter
@@ -1448,6 +1543,7 @@
1259 2701 AT-2700FX 100Mb Ethernet
1259 2702 AT-2700FTX 10/100 Mb Fiber/Copper Fast Ethernet
1259 2703 AT-2701FX
+ 1259 2704 AT-2701FTX 10/100 Mb Fiber/Copper Fast Ethernet
4c53 1000 CC7/CR7/CP7/VC7/VP7/VR7 mainboard
4c53 1010 CP5/CR6 mainboard
4c53 1020 VR6 mainboard
@@ -1583,6 +1679,7 @@
9930 CyberBlade/XPm
1024 Zenith Data Systems
1025 Acer Incorporated [ALI]
+ 0090 BCM440x 100Base-TX Fast Ethernet
1435 M1435
1445 M1445
1449 M1449
@@ -1666,7 +1763,7 @@
1028 016f PowerEdge Expandable RAID Controller 4e/Di
1028 0170 PowerEdge Expandable RAID Controller 4e/Di
0014 Remote Access Card 4 Daughter Card SMIC interface
- 0015 PowerEdge Expandable RAID controller 5
+ 0015 PowerEdge Expandable RAID controller 5i
1029 Siemens Nixdorf IS
102a LSI Logic
0000 HYDRA
@@ -1827,6 +1924,9 @@
102b 2538 Parhelia APVe
102b 3007 QID Low-profile PCIe
4536 VIA Framegrabber
+ 4cdc Morphis Vision System Jpeg2000
+ 4fc5 Morphis Vision System
+ 5e10 Morphis Vision System Aux/IO
6573 Shark 10/100 Multiport SwitchNIC
102c Chips and Technologies
00b8 F64310
@@ -1939,6 +2039,7 @@
00f3 uPD6113x Multimedia Decoder/Processor [EMMA2]
010c VR7701
0125 uPD720400 PCI Express - PCI/PCI-X Bridge
+ 013a Dual Tuner/MPEG Encoder
1034 Framatome Connectors USA Inc.
1035 Comp. & Comm. Research Lab
1036 Future Domain Corp.
@@ -1959,6 +2060,7 @@
0180 RAID bus controller 180 SATA/PATA [SiS]
0181 SATA
0182 182 SATA/RAID Controller
+ 0186 AHCI Controller (0106)
0190 190 Gigabit Ethernet Adapter
0191 191 Gigabit Ethernet Adapter
0200 5597/5598/6326 VGA
@@ -1990,6 +2092,7 @@
0655 655 Host
0660 660 Host
0661 661FX/M661FX/M661MX Host
+ 0662 662 Host
0730 730 Host
0733 733 Host
0735 735 Host
@@ -2009,6 +2112,13 @@
0963 SiS963 [MuTIOL Media IO]
0964 SiS964 [MuTIOL Media IO]
0965 SiS965 [MuTIOL Media IO]
+ 0966 SiS966 [MuTIOL Media IO]
+ 0968 SiS968 [MuTIOL Media IO]
+ 1180 SATA Controller / IDE mode
+ 1182 SATA Controller / RAID mode
+ 1183 SATA Controller / IDE mode
+ 1184 AHCI Controller / RAID mode
+ 1185 AHCI IDE Controller (0106)
3602 83C602
5107 5107
5300 SiS540 PCI Display Adapter
@@ -2043,8 +2153,10 @@
1092 4910 SpeedStar A70
1092 4920 SpeedStar A70
1569 6326 SiS6326 GUI Accelerator
- 6330 661/741/760/761 PCI/AGP VGA Display Adapter
+ 6330 661/741/760 PCI/AGP or 662/761Gx PCIE VGA Display Adapter
1039 6330 [M]661xX/[M]741[GX]/[M]760 PCI/AGP VGA Adapter
+ 6350 770/670 PCIE VGA Display Adapter
+ 6351 771/671 PCIE VGA Display Adapter
7001 USB 1.0 Controller
1019 0a14 K7S5A motherboard
1039 7000 Onboard USB Controller
@@ -2082,6 +2194,7 @@
270f a171 SiS PCI Audio Accelerator
a0a0 0022 SiS PCI Audio Accelerator
7019 SiS7019 Audio Accelerator
+ 7502 Azalia Audio Controller
103a Seiko Epson Corporation
103b Tatung Co. of America
103c Hewlett-Packard Company
@@ -2128,19 +2241,29 @@
121c NetServer PCI COM Port Decoder
1229 zx1 System Bus Adapter
122a zx1 I/O Controller
- 122e zx1 Local Bus Adapter
+ 122e PCI-X Local Bus Adapter
+ 127b sx1000 System Bus Adapter
127c sx1000 I/O Controller
1290 Auxiliary Diva Serial Port
1291 Auxiliary Diva Serial Port
12b4 zx1 QuickSilver AGP8x Local Bus Adapter
+ 12eb sx2000 System Bus Adapter
+ 12ec sx2000 I/O Controller
+ 12ee PCI-X 2.0 Local Bus Adapter
12f8 Broadcom BCM4306 802.11b/g Wireless LAN
12fa BCM4306 802.11b/g Wireless LAN Controller
2910 E2910A PCIBus Exerciser
2925 E2925A 32 Bit, 33 MHzPCI Exerciser & Analyzer
3080 Pavilion ze2028ea
3085 Realtek RTL8139/8139C/8139C+
- 3220 Hewlett-Packard Smart Array P600
- 3230 Hewlett-Packard Smart Array Controller
+ 3220 Smart Array P600
+ 103c 3225 3 Gb/s SAS RAID
+ 3230 Smart Array Controller
+ 4030 zx2 System Bus Adapter
+ 4031 zx2 I/O Controller
+ 4037 PCIe Local Bus Adapter
+ 403b PCIe Root Port
+ 60e8 NetRAID-2M : ZX1/M (OEM AMI MegaRAID 493)
103e Solliday Engineering
103f Synopsys/Logic Modeling Group
1040 Accelgraphics Inc.
@@ -2161,12 +2284,14 @@
4021 v7100 Combo Deluxe [GeForce2 MX + TV tuner]
4057 v8200 GeForce 3
8043 v8240 PAL 128M [P4T] Motherboard
+ 8047 v8420 Deluxe [GeForce4 Ti4200]
807b v9280/TD [Geforce4 TI4200 8X With TV-Out and DVI]
8095 A7N8X Motherboard nForce2 AC97 Audio
80ac A7N8X Motherboard nForce2 AGP/Memory
80bb v9180 Magic/T [GeForce4 MX440 AGP 8x 64MB TV-out]
80c5 nForce3 chipset motherboard [SK8N]
80df v9520 Magic/T
+ 815a A8N-SLI Motherboard nForce4 SATA
8187 802.11a/b/g Wireless LAN Card
8188 Tiger Hybrid TV Capture Device
1044 Adaptec (formerly DPT)
@@ -2245,7 +2370,7 @@
8901 Gloria XL
1048 0935 GLoria XL (Virge)
1049 Fountain Technologies, Inc.
-# # nee SGS Thomson Microelectronics
+# nee SGS Thomson Microelectronics
104a STMicroelectronics
0008 STG 2000X
0009 STG 1764X
@@ -2256,6 +2381,7 @@
021a STPC Consumer S Southbridge
021b STPC Consumer IIA Southbridge
0500 ST70137 [Unicorn] ADSL DMT Transceiver
+ 104a 0500 BeWAN ADSL PCI st
0564 STPC Client Northbridge
0981 21x4x DEC-Tulip compatible 10/100 Ethernet
1746 STG 1764X
@@ -2310,6 +2436,7 @@
e4bf 1010 CF2-1-CYMBAL
8020 TSB12LV26 IEEE-1394 Controller (Link)
11bd 000f Studio DV500-1394
+ 11bd 001c Excalibur 4.1
8021 TSB43AA22 IEEE-1394 Controller (PHY/Link Integrated)
104d 80df Vaio PCG-FX403
104d 80e7 VAIO PCG-GR214EP/GR214MP/GR215MP/GR314MP/GR315MP
@@ -2332,7 +2459,7 @@
1071 8160 MIM2900
802b PCI7410,7510,7610 OHCI-Lynx Controller
1028 0139 Latitude D400
- 1028 014e PCI7410,7510,7610 OHCI-Lynx Controller (Dell Latitude D800)
+ 1028 014e PCI7410,7510,7610 OHCI-Lynx Controller (Latitude D800)
802e PCI7x20 1394a-2000 OHCI Two-Port PHY/Link-Layer Controller
8031 PCIxx21/x515 Cardbus Controller
1025 0080 Aspire 5024WLMi
@@ -2346,28 +2473,35 @@
1025 0080 Aspire 5024WLMi
103c 099c NX6110/NC6120
103c 308b MX6125
- 8034 PCI6411, PCI6421, PCI6611, PCI6621, PCI7411, PCI7421, PCI7611, PCI7621 Secure Digital (SD) Controller
+ 8034 PCI6411/6421/6611/6621/7411/7421/7611/7621 Secure Digital Controller
1025 0080 Aspire 5024WLMi
103c 099c NX6110/NC6120
103c 308b MX6125
- 8035 PCI6411, PCI6421, PCI6611, PCI6621, PCI7411, PCI7421, PCI7611, PCI7621 Smart Card Controller (SMC)
+ 8035 PCI6411/6421/6611/6621/7411/7421/7611/7621 Smart Card Controller
103c 099c NX6110/NC6120
8036 PCI6515 Cardbus Controller
8038 PCI6515 SmartCard Controller
8039 PCIxx12 Cardbus Controller
+ 103c 309f nx9420
+ 803a PCIxx12 OHCI Compliant IEEE 1394 Host Controller
+ 103c 309f nx9420
803b 5-in-1 Multimedia Card Reader (SD/MMC/MS/MS PRO/xD)
+ 103c 309f nx9420
+ 803c PCIxx12 SDA Standard Compliant SD Host Controller
+ 103c 309f nx9420
+ 803d PCIxx12 GemCore based SmartCard controller
+ 103c 309f nx9420
8201 PCI1620 Firmware Loading Function
8204 PCI7410,7510,7610 PCI Firmware Loading Function
1028 0139 Latitude D400
1028 014e Latitude D800
- 8231 XIO2000(A)/XIO2200 PCI Express-to-PCI Bridge
- 8235 XIO2200 IEEE-1394a-2000 Controller (PHY/Link)
+ 8231 XIO2000(A)/XIO2200(A) PCI Express-to-PCI Bridge
+ 8235 XIO2200(A) IEEE-1394a-2000 Controller (PHY/Link)
8400 ACX 100 22Mbps Wireless Interface
1186 3b00 DWL-650+ PC Card cardbus 22Mbs Wireless Adapter [AirPlus]
1186 3b01 DWL-520+ 22Mbps PCI Wireless Adapter
16ab 8501 WL-8305 IEEE802.11b+ Wireless LAN PCI Adapter
8401 ACX 100 22Mbps Wireless Interface
-# OK, this info is almost useless as is, but at least it's known that it's a wireless card. More info requested from reporter.
9000 Wireless Interface (of unknown type)
9065 TMS320DM642
9066 ACX 111 54Mbps Wireless Interface
@@ -2412,7 +2546,7 @@
ac40 PCI4450 PC card Cardbus Controller
ac41 PCI4410 PC card Cardbus Controller
ac42 PCI4451 PC card Cardbus Controller
- 1028 00e6 PCI4451 PC card CardBus Controller (Dell Inspiron 8100)
+ 1028 00e6 PCI4451 PC card CardBus Controller (Inspiron 8100)
ac44 PCI4510 PC card Cardbus Controller
1028 0163 Latitude D505
1028 0196 Inspiron 5160
@@ -2439,10 +2573,13 @@
ac52 PCI1451 PC card Cardbus Controller
ac53 PCI1421 PC card Cardbus Controller
ac54 PCI1620 PC Card Controller
+ 103c 08b0 tc1100 tablet
ac55 PCI1520 PC card Cardbus Controller
1014 0512 ThinkPad T30/T40
ac56 PCI1510 PC card Cardbus Controller
+ 1014 0512 Thinkpad R50e model 1634
1014 0528 ThinkPad R40e (2684-HVG) Cardbus Controller
+ 17aa 2012 Thinkpad R60e model 0657
ac60 PCI2040 PCI to DSP Bridge Controller
175c 5100 ASI51xx Audio Adapter
175c 6100 ASI61xx Audio Adapter
@@ -2450,7 +2587,7 @@
175c 8800 ASI88xx Audio Adapter
ac8d PCI 7620
ac8e PCI7420 CardBus Controller
- ac8f PCI7420/PCI7620 Dual Socket CardBus and Smart Card Cont. w/ 1394a-2000 OHCI Two-Port PHY/Link-Layer Cont. and SD/MS-Pro Sockets
+ ac8f PCI7420/7620 Combo CardBus, 1394a-2000 OHCI and SD/MS-Pro Controller
fe00 FireWire Host Controller
fe03 12C01A FireWire Host Controller
104d Sony Corporation
@@ -2506,6 +2643,7 @@
0006 MPC8245 [Unity]
0008 MPC8540
0009 MPC8560
+ 0012 MPC8548 [PowerQUICC III]
0100 MC145575 [HFC-PCI]
0431 KTI829c 100VG
1801 DSP56301 Digital Signal Processor
@@ -2535,6 +2673,7 @@
ecc0 0072 Mona rev.2
18c0 MPC8265A/8266/8272
18c1 MPC8271/MPC8272
+ 3055 SM56 Data Fax Modem
3410 DSP56361 Digital Signal Processor
ecc0 0050 Gina24 rev.0
ecc0 0051 Gina24 rev.1
@@ -2606,6 +2745,7 @@
3d18 PDC20518/PDC40518 (SATAII 150 TX4)
3d73 PDC40775 (SATA 300 TX2plus)
3d75 PDC20575 (SATAII150 TX2plus)
+ 4302 80333 [SuperTrak EX4350]
4d30 PDC20267 (FastTrak100/Ultra100)
105a 4d33 Ultra100
105a 4d39 FastTrak100
@@ -2636,6 +2776,8 @@
6629 PDC20619 (FastTrak TX4000)
7275 PDC20277 (SBFastTrak133 Lite)
8002 SATAII150 SX8
+ 8350 80333 [SuperTrak EX8350/EX16350], 80331 [SuperTrak EX8300/EX16300]
+ c350 80333 [SuperTrak EX12350]
105b Foxconn International, Inc.
105c Wipro Infotech Limited
105d Number 9 Computer Company
@@ -2870,16 +3012,22 @@
2200 QLA2200 64-bit Fibre Channel Adapter
1077 0002 QLA2200
2300 QLA2300 64-bit Fibre Channel Adapter
- 2312 QLA2312 Fibre Channel Adapter
- 2322 QLA2322 Fibre Channel Adapter
- 2422 QLA2422 Fibre Channel Adapter
- 2432 QLA2432 Fibre Channel Adapter
- 3010 QLA3010 Network Adapter
- 3022 QLA3022 Network Adapter
- 4010 QLA4010 iSCSI TOE Adapter
- 4022 QLA4022 iSCSI TOE Adapter
- 6312 QLA6312 Fibre Channel Adapter
- 6322 QLA6322 Fibre Channel Adapter
+ 2312 ISP2312-based 2Gb Fibre Channel to PCI-X HBA
+ 103c 0131 2Gb Fibre Channel - Single port [A7538A]
+ 103c 12ba 2Gb Fibre Channel - Dual port [A6826A]
+ 2322 ISP2322-based 2Gb Fibre Channel to PCI-X HBA
+ 2422 ISP2422-based 4Gb Fibre Channel to PCI-X HBA
+ 103c 12d7 4Gb Fibre Channel [AB379A]
+ 103c 12dd 4Gb Fibre Channel [AB429A]
+ 2432 ISP2432-based 4Gb Fibre Channel to PCI Express HBA
+ 3022 ISP4022-based Ethernet NIC
+ 3032 ISP4032-based Ethernet NIC
+ 4010 ISP4010-based iSCSI TOE HBA
+ 4022 ISP4022-based iSCSI TOE HBA
+ 4032 ISP4032-based iSCSI TOE IPv6 HBA
+ 5432 SP232-based 4Gb Fibre Channel to PCI Express HBA
+ 6312 SP202-based 2Gb Fibre Channel to PCI-X HBA
+ 6322 SP212-based 2Gb Fibre Channel to PCI-X HBA
1078 Cyrix Corporation
0000 5510 [Grappa]
0001 PCI Master
@@ -3269,8 +3417,6 @@
4002 TIO-CE PCI Express Port
8001 O2 1394
8002 G-net NT
- 8010 Broadcom e-net [SGI IO9/IO10 BaseIO]
- 8018 Broadcom e-net [SGI A330 Server BaseIO]
10aa ACC Microelectronics
0000 ACCM 2188
10ab Digicom
@@ -3336,7 +3482,7 @@
10b5 2273 SH ARC-PCI SOHARD ARCNET card
10b5 2431 Alpermann+Velte PCL PCI D: Timecode Reader Board
10b5 2905 Alpermann+Velte PCI TS: Time Synchronisation Board
- 10b5 9050 MP9050
+ 10b5 9050 PCI-I04 PCI Passive PC/CAN Interface
1498 0362 TPMC866 8 Channel Serial Card
1522 0001 RockForce 4 Port V.90 Data/Fax/Voice Modem
1522 0002 RockForce 2 Port V.90 Data/Fax/Voice Modem
@@ -3391,11 +3537,18 @@
9080 9080
103c 10eb (Agilent) E2777B 83K Series Optical Communication Interface
103c 10ec (Agilent) E6978-66442 PCI CIC
+ 10b5 1123 Sectra KK631 encryption board
10b5 9080 9080 [real subsystem ID not set]
129d 0002 Aculab PCI Prosidy card
12d9 0002 PCI Prosody Card
12df 4422 4422PCI ["Do-All" Telemetry Data Aquisition System]
+ 1517 000b ECSG-1R3ADC-PMC Clock synthesizer
+ 9656 PCI <-> IOBus Bridge
+ 1517 000f ECDR-GC314-PMC Receiver
+ 1885 0700 Tsunami FPGA PMC with Altera Stratix S40
+ 1885 0701 Tsunami FPGA PMC with Altera Stratix S30
bb04 B&B 3PCIOSD1A Isolated PCI Serial
+ c001 CronyxOmega-PCI (8-port RS232)
10b6 Madge Networks
0001 Smart 16/4 PCI Ringnode
0002 Smart 16/4 PCI Ringnode Mk2
@@ -3486,6 +3639,8 @@
900a 3c900B-FL 10base-FL [Cyclone]
9050 3c905 100BaseTX [Boomerang]
9051 3c905 100BaseT4 [Boomerang]
+ 9054 3C905B-TX Fast Etherlink XL PCI
+ 10b7 9054 3C905B-TX Fast Etherlink XL PCI
9055 3c905B 100BaseTX [Cyclone]
1028 0080 3C905B Fast Etherlink XL 10/100
1028 0081 3C905B Fast Etherlink XL 10/100
@@ -3631,6 +3786,7 @@
1014 053d ThinkPad R40e (2684-HVG) builtin IDE
103c 0024 Pavilion ze4400 builtin IDE
1043 8053 A7A266 Motherboard IDE
+ 1849 5229 ASRock 939Dual-SATA2 Motherboard IDE (PATA)
5235 M5225
5237 USB 1.1 Controller
1014 0540 ThinkPad R40e (2684-HVG) builtin USB
@@ -3648,7 +3804,7 @@
5251 M5251 P1394 OHCI 1.0 Controller
5253 M5253 P1394 OHCI 1.1 Controller
5261 M5261 Ethernet Controller
- 5263 M5263 Ethernet Controller
+ 5263 ULi 1689,1573 integrated ethernet.
5281 ALi M5281 Serial ATA / RAID Host Controller
5287 ULi 5287 SATA
5288 ULi M5288 SATA
@@ -3751,6 +3907,7 @@
1200 ASC1200 [(abp940) Fast SCSI-II]
1300 ABP940-U / ABP960-U
10cd 1310 ASC1300 SCSI Adapter
+ 1195 1320 Ultra-SCSI CardBus PC Card REX CB31
2300 ABP940-UW
2500 ABP940-U2W
10ce Radius
@@ -3892,9 +4049,12 @@
0043 NV40.3
0044 NV40 [GeForce 6800 XT]
0045 NV40 [GeForce 6800 GT]
+ 0046 NV40 [GeForce 6800 GT]
0047 NV40 [GeForce 6800 GS]
1682 2109 GeForce 6800 GS
+ 0048 NV40 [GeForce 6800 XT]
0049 NV40GL
+ 004d NV40GL [Quadro FX 4000]
004e NV40GL [Quadro FX 4000]
0050 CK804 ISA Bridge
1043 815a K8N4-E Mainboard
@@ -4004,6 +4164,7 @@
00c9 NV41.9 [GeForce Go 6800 Ultra]
00cc NV41 [Quadro FX Go1400]
00cd NV41 [Quadro FX 3450/4000 SDI]
+ 10de 029b wx4300 Workstation
00ce NV41GL [Quadro FX 1400]
00d0 nForce3 LPC Bridge
00d1 nForce3 Host Bridge
@@ -4022,8 +4183,10 @@
147b 1c0b NF8 Mainboard
00e0 nForce3 250Gb LPC Bridge
10de 0c11 Winfast NF3250K8AA
+ 1462 7030 K8N Neo-FSR v2.0
147b 1c0b NF8 Mainboard
00e1 nForce3 250Gb Host Bridge
+ 1462 7030 K8N Neo-FSR v2.0
147b 1c0b NF8 Mainboard
00e2 nForce3 250Gb AGP Host to PCI Bridge
00e3 CK8S Serial ATA Controller (v2.5)
@@ -4031,16 +4194,20 @@
147b 1c0b NF8 Mainboard
00e4 nForce 250Gb PCI System Management
105b 0c43 Winfast NF3250K8AA
+ 1462 7030 K8N Neo-FSR v2.0
147b 1c0b NF8 Mainboard
00e5 CK8S Parallel ATA Controller (v2.5)
105b 0c43 Winfast NF3250K8AA
+ 1462 7030 K8N Neo-FSR v2.0
147b 1c0b NF8 Mainboard
00e6 CK8S Ethernet Controller
00e7 CK8S USB Controller
105b 0c43 Winfast NF3250K8AA
+ 1462 7030 K8N Neo-FSR v2.0
147b 1c0b NF8 Mainboard
00e8 nForce3 EHCI USB 2.0 Controller
105b 0c43 Winfast NF3250K8AA
+ 1462 7030 K8N Neo-FSR v2.0
147b 1c0b NF8 Mainboard
00ea nForce3 250Gb AC'97 Audio Controller
105b 0c43 Winfast NF3250K8AA
@@ -4057,6 +4224,7 @@
00f4 NV43 [GeForce 6600 LE]
00f5 G70 [GeForce 7800 GS]
00f6 NV43 [GeForce 6600 GS]
+ 1682 217e XFX GeForce 6800 XTreme 256MB DDR3 AGP
00f8 NV45GL [Quadro FX 3400/4400]
00f9 NV40 [GeForce 6800 Ultra/GeForce 6800 GT]
1682 2120 GEFORCE 6800 GT PCI-E
@@ -4118,6 +4286,7 @@
0149 NV43 [GeForce Go 6600 GT]
014a Quadro NVS 440
014c Quadro FX 550
+ 014d NV18GL [Quadro FX 550]
014e NV43GL [Quadro FX 540]
014f NV43 [GeForce 6200]
0150 NV15 [GeForce2 GTS/Pro]
@@ -4126,6 +4295,7 @@
1048 0c52 Gladiac-64
107d 2840 WinFast GeForce2 GTS with TV output
107d 2842 WinFast GeForce 2 Pro
+ 10de 002e GeForce2 GTS
1462 8831 Creative GeForce2 Pro
0151 NV15DDR [GeForce2 Ti]
1043 405f V7700Ti
@@ -4133,8 +4303,9 @@
0152 NV15BR [GeForce2 Ultra, Bladerunner]
1048 0c56 GLADIAC Ultra
0153 NV15GL [Quadro2 Pro]
- 0161 GeForce 6200 TurboCache(TM)
- 0162 NV43 [GeForce 6200 SE]
+ 0161 NV44 [GeForce 6200 TurboCache(TM)]
+ 0162 NV44 [GeForce 6200 SE TurboCache (TM)]
+ 0163 NV44 [GeForce 6200 LE]
0164 NV44 [GeForce Go 6200]
0165 NV44 [Quadro NVS 285]
0166 NV43 [GeForce Go 6400]
@@ -4153,6 +4324,7 @@
0174 NV17 [GeForce4 440 Go]
0175 NV17 [GeForce4 420 Go]
0176 NV17 [GeForce4 420 Go 32M]
+ 103c 08b0 tc1100 tablet
4c53 1090 Cx9 / Vx9 mainboard
0177 NV17 [GeForce4 460 Go]
0178 NV17GL [Quadro4 550 XGL]
@@ -4163,6 +4335,7 @@
017c NV17GL [Quadro4 500 GoGL]
017d NV17 [GeForce4 410 Go 16M]
0181 NV18 [GeForce4 MX 440 AGP 8x]
+ 1043 8063 GeForce4 MX 440 AGP 8X
1043 806f V9180 Magic
1462 8880 MS-StarForce GeForce4 MX 440 with AGP8X
1462 8900 MS-8890 GeForce 4 MX440 AGP8X
@@ -4194,6 +4367,8 @@
01c2 nForce USB Controller
01c3 nForce Ethernet Controller
01d1 GeForce 7300 LE
+ 1462 0345 7300LE PCI Express Graphics Adapter
+ 01d6 GeForce Go 7200
01d7 Quadro NVS 110M / GeForce Go 7300
01d8 GeForce Go 7400
01da Quadro NVS 110M
@@ -4229,7 +4404,7 @@
0212 NV40 [GeForce 6800 LE]
0215 NV40 [GeForce 6800 GT]
0218 NV40 [GeForce 6800 XT]
- 0221 NV43 [GeForce 6200]
+ 0221 NV44A [GeForce 6200]
0240 C51PV [GeForce 6150]
1462 7207 K8NGM2 series
0241 C51 PCI Express Bridge
@@ -4299,11 +4474,15 @@
028c NV28GLM [Quadro4 700 GoGL]
0290 GeForce 7900 GTX
0291 GeForce 7900 GT
+ 0292 GeForce 7900 GS
+ 0298 GeForce Go 7900 GS
+ 0299 GeForce Go 7900 GTX
029a G71 [Quadro FX 2500M]
029b G71 [Quadro FX 1500M]
029c Quadro FX 5500
029d Quadro FX 3500
029e Quadro FX 1500
+ 029f Quadro FX 4500 X2
# Xbox Graphics Processing Unit (Integrated). GeForce3 derivative (NV20 < NV2A < NV25).
02a0 NV2A [XGPU]
02e1 GeForce 7600 GS
@@ -4398,19 +4577,60 @@
0368 MCP55 SMBus
0369 MCP55 Memory Controller
036a MCP55 Memory Controller
+ 036b MCP55 SMU
036c MCP55 USB Controller
036d MCP55 USB Controller
036e MCP55 IDE
+ 0370 MCP55 PCI bridge
0371 MCP55 High Definition Audio
0372 MCP55 Ethernet
0373 MCP55 Ethernet
+ 0374 MCP55 PCI Express bridge
+ 0375 MCP55 PCI Express bridge
+ 0376 MCP55 PCI Express bridge
+ 0377 MCP55 PCI Express bridge
+ 0378 MCP55 PCI Express bridge
037a MCP55 Memory Controller
037e MCP55 SATA Controller
037f MCP55 SATA Controller
0391 G70 [GeForce 7600 GT]
0392 G70 [GeForce 7600 GS]
+ 1462 0622 NX7600GS-T2D256EH
+ 0393 G70 [GeForce 7300 GT]
0398 G70 [GeForce Go 7600]
039e Quadro FX 560
+ 03a0 C55 Host Bridge
+ 03a1 C55 Host Bridge
+ 03a2 C55 Host Bridge
+ 03a3 C55 Host Bridge
+ 03a4 C55 Host Bridge
+ 03a5 C55 Host Bridge
+ 03a6 C55 Host Bridge
+ 03a7 C55 Host Bridge
+ 03a8 C55 Memory Controller
+ 03a9 C55 Memory Controller
+ 03aa C55 Memory Controller
+ 03ab C55 Memory Controller
+ 03ac C55 Memory Controller
+ 03ad C55 Memory Controller
+ 03ae C55 Memory Controller
+ 03af C55 Memory Controller
+ 03b0 C55 Memory Controller
+ 03b1 C55 Memory Controller
+ 03b2 C55 Memory Controller
+ 03b3 C55 Memory Controller
+ 03b4 C55 Memory Controller
+ 03b5 C55 Memory Controller
+ 03b6 C55 Memory Controller
+ 03b7 C55 PCI Express bridge
+ 03b8 C55 PCI Express bridge
+ 03b9 C55 PCI Express bridge
+ 03ba C55 Memory Controller
+ 03bb C55 PCI Express bridge
+ 03d0 GeForce 6100 nForce 430
+ 03d1 GeForce 6100 nForce 405
+ 03d2 GeForce 6100 nForce 400
+ 03d5 GeForce 6100 nForce 420
03e0 MCP61 LPC Bridge
03e1 MCP61 LPC Bridge
03e2 MCP61 LPC Bridge
@@ -4419,6 +4639,8 @@
03e5 MCP61 Ethernet
03e6 MCP61 Ethernet
03e7 MCP61 SATA Controller
+ 03e8 MCP61 PCI Express bridge
+ 03e9 MCP61 PCI Express bridge
03ea MCP61 Memory Controller
03eb MCP61 SMBus
03ec MCP61 IDE
@@ -4427,9 +4649,42 @@
03f0 MCP61 High Definition Audio
03f1 MCP61 USB Controller
03f2 MCP61 USB Controller
+ 03f3 MCP61 PCI bridge
+ 03f4 MCP61 SMU
03f5 MCP61 Memory Controller
03f6 MCP61 SATA Controller
03f7 MCP61 SATA Controller
+ 0440 MCP65 LPC Bridge
+ 0441 MCP65 LPC Bridge
+ 0442 MCP65 LPC Bridge
+ 0443 MCP65 LPC Bridge
+ 0444 MCP65 Memory Controller
+ 0445 MCP65 Memory Controller
+ 0446 MCP65 SMBus
+ 0447 MCP65 SMU
+ 0448 MCP65 IDE
+ 0449 MCP65 PCI bridge
+ 044a MCP65 High Definition Audio
+ 044b MCP65 High Definition Audio
+ 044c MCP65 AHCI Controller
+ 044d MCP65 AHCI Controller
+ 044e MCP65 AHCI Controller
+ 044f MCP65 AHCI Controller
+ 0450 MCP65 Ethernet
+ 0451 MCP65 Ethernet
+ 0452 MCP65 Ethernet
+ 0453 MCP65 Ethernet
+ 0454 MCP65 USB Controller
+ 0455 MCP65 USB Controller
+ 0456 MCP65 USB Controller
+ 0457 MCP65 USB Controller
+ 0458 MCP65 PCI Express bridge
+ 0459 MCP65 PCI Express bridge
+ 045a MCP65 PCI Express bridge
+ 045c MCP65 SATA Controller
+ 045d MCP65 SATA Controller
+ 045e MCP65 SATA Controller
+ 045f MCP65 SATA Controller
10df Emulex Corporation
1ae5 LP6000 Fibre Channel Host Adapter
f085 LP850 Fibre Channel Host Adapter
@@ -4475,11 +4730,13 @@
10e2 Aptix Corporation
10e3 Tundra Semiconductor Corp.
0000 CA91C042 [Universe]
+ 0108 Tsi108 Host Bridge for Single PowerPC
0148 Tsi148 [Tempe]
0860 CA91C860 [QSpan]
0862 CA91C862A [QSpan-II]
8260 CA91L8200B [Dual PCI PowerSpan II]
8261 CA91L8260B [Single PCI PowerSpan II]
+ a108 Tsi109 Host Bridge for Dual PowerPC
10e4 Tandem Computers
8029 Realtek 8029 Network Card
10e5 Micro Industries Corporation
@@ -4502,7 +4759,6 @@
811a PCI-IEEE1355-DS-DE Interface
814c Fastcom ESCC-PCI (Commtech, Inc.)
8170 S5933 [Matchmaker] (Chipset Development Tool)
-# sold with Roper Scientifc(Photometrics) CoolSnap HQ camera
81e6 Multimedia video controller
8291 Fastcom 232/8-PCI (Commtech, Inc.)
82c4 Fastcom 422/4-PCI (Commtech, Inc.)
@@ -4530,6 +4786,8 @@
8111 Twist3 Frame Grabber
10ec Realtek Semiconductor Co., Ltd.
0139 Zonet Zen3200
+ 0883 High Definition Audio
+ 1025 1605 TravelMate 5600 series
8029 RTL-8029(AS)
10b8 2011 EZ-Card (SMC1208)
10ec 8029 RTL-8029(AS)
@@ -4538,6 +4796,7 @@
1259 2400 AT-2400
8129 RTL-8129
10ec 8129 RT8129 Fast Ethernet Adapter
+ 8136 RTL8101E PCI Express Fast Ethernet controller
8138 RT8139 (B/C) Cardbus Fast Ethernet Adapter
10ec 8138 RT8139 (B/C) Fast Ethernet Adapter
8139 RTL-8139/8139C/8139C+
@@ -4575,6 +4834,8 @@
8e2e 7000 KF-230TX
8e2e 7100 KF-230TX/2
a0a0 0007 ALN-325C
+ 8167 RTL-8169SC Gigabit Ethernet
+ 8168 RTL8111/8168B PCI Express Gigabit Ethernet controller
8169 RTL-8169 Gigabit Ethernet
1025 0079 Aspire 5024WLMi
1259 c107 CG-LAPCIGT
@@ -4629,6 +4890,7 @@
1100 Jazz Multimedia
1101 Initio Corporation
1060 INI-A100U2W
+ 1622 INI-1623 PCI SATA-II Controller
9100 INI-9100/9100W
9400 INI-940
9401 INI-950
@@ -4661,6 +4923,9 @@
1102 0058 SB0090 Audigy Player/OEM
1102 1007 SB0240 Audigy 2 Platinum 6.1
1102 2002 SB Audigy 2 ZS (SB0350)
+ 0005 SB X-Fi
+ 1102 0021 X-Fi Platinum
+ 1102 1003 X-Fi XtremeMusic
0006 [SB Live! Value] EMU10k1X
0007 SB Audigy LS
1102 0007 SBLive! 24bit
@@ -4901,7 +5166,7 @@
1019 0a81 L7VTA v1.0 Motherboard (KT400-8235)
1043 8095 A7V8X Motherboard (Realtek ALC650 codec)
1043 80a1 A7V8X-X Motherboard
- 1043 80b0 A7V600/K8V Deluxe motherboard (ADI AD1980 codec [SoundMAX])
+ 1043 80b0 A7V600/K8V-X/K8V Deluxe motherboard (ADI AD1980 codec [SoundMAX])
1043 812a A8V Deluxe motherboard (Realtek ALC850 codec)
1106 3059 L7VMM2 Motherboard
1106 4161 K7VT2 motherboard
@@ -5384,10 +5649,18 @@
185b c100 VideoMate TV
5168 0306 LifeView FlyDVB-T DUO
5168 0319 LifeView FlyDVB Trio
+ 5168 0502 LifeView FlyDVB-T Duo CardBus
+ 5168 0520 LifeView FlyDVB Trio CardBus
+ 5168 1502 LifeView FlyTV CardBus
+ 5168 2502 LifeView FlyDVB-T CardBus
+ 5168 2520 LifeView FlyDVB-S Duo CardBus
+ 5168 3502 LifeView FlyDVB-T Hybrid CardBus
+ 5168 3520 LifeView FlyDVB Trio N CardBus
7134 SAA7134/SAA7135HL Video Broadcast Decoder
1019 4cb4 Elitegroup ECS TVP3XP FM1216 Tuner Card(PAL-BG,FM)
1043 0210 Digimatrix TV
1043 4840 ASUS TV-FM 7134
+ 1043 4842 TV-FM 7134
1131 2004 EUROPA V3 reference design
1131 4e85 SKNet Monster TV
1131 6752 EMPRESS
@@ -5415,7 +5688,6 @@
1131 4f56 KNC1 DVB-S Budget
1131 4f60 Fujitsu-Siemens Activy DVB-S Budget Rev AL
1131 4f61 Activy DVB-S Budget Rev GR
-# It has an LSI companion chip.
1131 5f61 Activy DVB-T Budget
114b 2003 DVRaptor Video Edit/Capture Card
11bd 0006 DV500 Overlay
@@ -5440,6 +5712,7 @@
13c2 1102 Technotrend/Hauppauge DVB card rev2.1
153b 1156 Terratec Cynergy 1200C
9730 SAA9730 Integrated Multimedia and Peripheral Controller
+ 1131 0000 Integrated Multimedia and Peripheral Controller
1132 Mitel Corp.
1133 Eicon Networks Corporation
7901 EiconCard S90
@@ -5778,11 +6051,15 @@
0017 GCNB-LE Host Bridge
0036 HT1000 PCI/PCI-X bridge
0101 CIOB-X2 PCI-X I/O Bridge
+ 0103 EPB PCI-Express to PCI-X Bridge
0104 HT1000 PCI/PCI-X bridge
0110 CIOB-E I/O Bridge with Gigabit Ethernet
0130 HT2000 PCI-X bridge
0132 HT2000 PCI-Express bridge
1166 0132 HT2000 PCI-Express bridge
+ 0140 HT2100 PCI-Express Bridge
+ 0141 HT2100 PCI-Express Bridge
+ 0142 HT2100 PCI-Express Bridge
0200 OSB4 South Bridge
0201 CSB5 South Bridge
4c53 1080 CT8 mainboard
@@ -5793,6 +6070,7 @@
0212 CSB5 IDE Controller
4c53 1080 CT8 mainboard
0213 CSB6 RAID/IDE Controller
+ 1028 4134 PowerEdge 600SC
1028 c134 Poweredge SC600
1734 1012 Primergy RX300
0214 HT1000 Legacy IDE controller
@@ -5931,6 +6209,7 @@
1186 1301 DFE-530TX+ 10/100 Ethernet Adapter
1186 1303 DFE-528TX 10/100 Fast Ethernet PCI Adapter
1340 DFE-690TXD CardBus PC Card
+ 1405 DFE-520TX Fast Ethernet PCI Adapter
1541 DFE-680TXD CardBus PC Card
1561 DRP-32TXD Cardbus PC Card
2027 AirPlus Xtreme G DWL-G520 Adapter
@@ -5949,6 +6228,8 @@
3a63 AirXpert DWL-AG660 Wireless Cardbus Adapter
4000 DL2000-based Gigabit Ethernet
4300 DGE-528T Gigabit Ethernet Adapter
+# There are at least 3 revisions of this adapter; 4800 is board revision A1 as far as I can tell, revision B1 is 4c00.
+ 4800 DGE-530T Gigabit Ethernet Adapter (rev 11)
4b01 DGE-530T Gigabit Ethernet Adapter (rev 11)
4c00 Gigabit Ethernet Adapter
1186 4c00 DGE-530T Gigabit Ethernet Adapter
@@ -6172,6 +6453,7 @@
6081 MV88SX6081 8-port SATA II PCI-X Controller
6460 MV64360/64361/64362 System Controller
6480 MV64460/64461/64462 System Controller
+ 6485 MV64460/64461/64462 System Controller, Revision B
f003 GT-64010 Primary Image Piranha Image Generator
11ac Canon Information Systems Research Aust.
11ad Lite-On Communications Inc
@@ -6340,6 +6622,7 @@
ab30 Hermes2 Mini-PCI WaveLAN a/b/g
14cd 2012 Hermes2 Mini-PCI WaveLAN a/b/g
ed00 ET-131x PCI-E Ethernet Controller
+ ed01 ET-131x PCI-E Ethernet Controller
11c2 Sand Microelectronics
11c3 NEC Corporation
11c4 Document Technologies, Inc
@@ -6518,6 +6801,7 @@
1215 Interware Co., Ltd
1216 Purup Prepress A/S
1217 O2 Micro, Inc.
+ 00f7 Firewire (IEEE 1394)
6729 OZ6729
673a OZ6730
6832 OZ6832/6833 CardBus Controller
@@ -6536,7 +6820,10 @@
7112 OZ711EC1/M1 SmartCardBus/MemoryCardBus Controller
7113 OZ711EC1 SmartCardBus Controller
7114 OZ711M1/MC1 4-in-1 MemoryCardBus Controller
+ 7120 Integrated MMC/SD Controller
+ 7130 Integrated MS/xD Controller
7134 OZ711MP1/MS1 MemoryCardBus Controller
+ 7135 Cardbus bridge
71e2 OZ711E2 SmartCardBus Controller
7212 OZ711M2 4-in-1 MemoryCardBus Controller
7213 OZ6933E CardBus Controller
@@ -6720,6 +7007,7 @@
1259 Allied Telesyn International
2560 AT-2560 Fast Ethernet Adapter (i82557B)
a117 RTL81xx Fast Ethernet
+ a11e RTL81xx Fast Ethernet
a120 21x4x DEC-Tulip compatible 10/100 Ethernet
125a ABB Power Systems
125b Asix Electronics Corporation
@@ -6792,6 +7080,7 @@
1113 ee08 SMC2835W V3 EU Wireless Cardbus Adapter
1186 3202 DWL-G650 A1 Wireless Adapter
1259 c104 CG-WLCB54GT Wireless Adapter
+ 1260 0000 WG511 Wireless Adapter
1385 4800 WG511 Wireless Adapter
16a5 1605 ALLNET ALL0271 Wireless PCI Adapter
17cf 0014 XG-600 and clones Wireless Adapter
@@ -7410,17 +7699,17 @@
1312 Acuity Imaging, Inc
1313 Yaskawa Electric Co.
1316 Teradyne Inc
-1317 Linksys
+1317 ADMtek
0981 21x4x DEC-Tulip compatible 10/100 Ethernet
0985 NC100 Network Everywhere Fast Ethernet 10/100
1734 100c Scenic N300 ADMtek AN983 10/100 Mbps PCI Adapter
1985 21x4x DEC-Tulip compatible 10/100 Ethernet
2850 HSP MicroModem 56
- 5120 ADMtek ADM5120 OpenGate System-on-Chip
- 8201 ADMtek ADM8211 802.11b Wireless Interface
+ 5120 ADM5120 OpenGate System-on-Chip
+ 8201 ADM8211 802.11b Wireless Interface
10b8 2635 SMC2635W 802.11b (11Mbps) wireless lan pcmcia (cardbus) card
1317 8201 SMC2635W 802.11b (11mbps) wireless lan pcmcia (cardbus) card
- 8211 ADMtek ADM8211 802.11b Wireless Interface
+ 8211 ADM8211 802.11b Wireless Interface
9511 21x4x DEC-Tulip compatible 10/100 Ethernet
1318 Packet Engines Inc.
0911 GNIC-II PCI Gigabit Ethernet [Hamachi]
@@ -7588,6 +7877,7 @@
0204 GPS170PCI GPS Receiver
0301 TCR510PCI IRIG Timecode Reader
0302 TCR167PCI IRIG Timecode Reader
+ 0303 TCR511PCI IRIG Timecode Reader
1361 Soliton Systems K.K.
1362 Fujifacom Corporation
1363 Phoenix Technology Ltd
@@ -7598,6 +7888,10 @@
1368 Skyware Corporation
1369 Digigram
136a High Soft Tech
+ 0004 HST Saphir VII mini PCI
+ 0007 HST Saphir III E MultiLink 4
+ 0008 HST Saphir III E MultiLink 8
+ 000a HST Saphir III E MultiLink 2
136b Kawasaki Steel Corporation
ff01 KL5A72002 Motion JPEG
136c Adtek System Science Co Ltd
@@ -7682,6 +7976,10 @@
630a GA630 Gigabit Ethernet
6b00 WG311v3 54 Mbps Wireless PCI Adapter
6d00 WPNT511 RangeMax 240 Mbps Wireless PC Card
+ 7b00 WN511B RangeMax Next 280 Mbps Wireless PC Card
+ 7c00 WN511T RangeMax Next 300 Mbps Wireless PC Card
+ 7d00 WN311B RangeMax Next 270 Mbps Wireless PCI Adapter
+ 7e00 WN311T RangeMax Next 300 Mbps Wireless PCI Adapter
f004 FA310TX
1386 Video Domain Technologies
1387 Systran Corp
@@ -7879,7 +8177,16 @@
13fd Micro Science Inc
13fe Advantech Co. Ltd
1240 PCI-1240 4-channel stepper motor controller card
- 1600 PCI-1612 4-port RS-232/422/485 PCI communication card
+ 1600 PCI-16xx series PCI multiport serial board (function 0)
+# This board has two PCI functions, appears as two PCI devices
+ 1601 0002 PCI-1601 2-port unisolated RS-422/485
+# This board has two PCI functions, appears as two PCI devices
+ 1602 0002 PCI-1602 2-port isolated RS-422/485
+ 1612 0004 PCI-1612 4-port RS-232/422/485
+ 16ff PCI-16xx series PCI multiport serial board (function 1: RX/TX steering CPLD)
+ 1601 0000 PCI-1601 2-port unisolated RS-422/485 PCI communications card
+ 1602 0000 PCI-1602 2-port isolated RS-422/485
+ 1612 0000 PCI-1612 4-port RS-232/422/485
1733 PCI-1733 32-channel isolated digital input card
1752 PCI-1752
1754 PCI-1754
@@ -7962,7 +8269,12 @@
1414 Microsoft Corporation
1415 Oxford Semiconductor Ltd
8403 VScom 011H-EP1 1 port parallel adaptor
- 9501 OX16PCI954 (Quad 16950 UART) function 0
+ 9500 OX16PCI954 (Quad 16950 UART) function 0 (Disabled)
+ 9501 OX16PCI954 (Quad 16950 UART) function 0 (Uart)
+ 12c4 0201 Titan/cPCI (2 port)
+ 12c4 0202 Titan/cPCI (4 port)
+ 12c4 0203 Titan/cPCI (8 port)
+ 12c4 0210 Titan/104-Plus (8 port, p1-4)
131f 2050 CyberPro (4-port)
# Model IO1085, Part No: JJ-P46012
131f 2051 CyberSerial 4S Plus
@@ -7971,9 +8283,13 @@
950a EXSYS EX-41092 Dual 16950 Serial adapter
950b OXCB950 Cardbus 16950 UART
9510 OX16PCI954 (Quad 16950 UART) function 1 (Disabled)
- 9511 OX16PCI954 (Quad 16950 UART) function 1
+ 12c4 0200 Titan/cPCI (Unused)
+ 9511 OX16PCI954 (Quad 16950 UART) function 1 (8bit bus)
+ 12c4 0211 Titan/104-Plus (8 port, p5-8)
15ed 2000 MCCR Serial p4-7 of 8
15ed 2001 MCCR Serial p4-15 of 16
+ 9512 OX16PCI954 (Quad 16950 UART) function 1 (32bit bus)
+ 9513 OX16PCI954 (Quad 16950 UART) function 1 (parallel port)
9521 OX16PCI952 (Dual 16950 UART)
9523 OX16PCI952 Integrated Parallel Port
1416 Multiwave Innovation pte Ltd
@@ -8013,6 +8329,13 @@
1433 Eltec Elektronik GmbH
# Nee Real Time Devices US Inc.
1435 RTD Embedded Technologies, Inc.
+ 4520 PCI4520
+ 6020 SPM6020
+ 6030 SPM6030
+ 6420 SPM186420
+ 6430 SPM176430
+ 7520 DM7520
+ 7820 DM7820
1436 CIS Technology Inc
1437 Nissin Inc Co
1438 Atmel-dream
@@ -8074,7 +8397,6 @@
f436 AVerTV Hybrid+FM
1462 Micro-Star International Co., Ltd.
5501 nVidia NV15DDR [GeForce2 Ti]
-# MSI CB54G Wireless PC Card that seems to use the Broadcom 4306 Chipset
6819 Broadcom Corporation BCM4306 802.11b/g Wireless LAN Controller [MSI CB54G]
6825 PCI Card wireless 11g [PC54G]
6834 RaLink RT2500 802.11g [PC54G2]
@@ -8146,6 +8468,7 @@
1498 TEWS Datentechnik GmBH
0330 TPMC816 2 Channel CAN bus controller.
0385 TPMC901 Extended CAN bus with 2/4/6 CAN controller
+ 21cc TCP460 CompactPCI 16 Channel Serial Interface RS232/RS422
21cd TCP461 CompactPCI 8 Channel Serial Interface RS232/RS422
30c8 TPCI200
1499 EMTEC CO., Ltd
@@ -8204,13 +8527,16 @@
14ba INTERNIX Inc.
14bb SEMTECH Corporation
14bc Globespan Semiconductor Inc.
+ d002 Pulsar [PCI ADSL Card]
+ d00f Pulsar [PCI ADSL Card]
14bd CARDIO Control N.V.
14be L3 Communications
14bf SPIDER Communications Inc.
14c0 COMPAL Electronics Inc
14c1 MYRICOM Inc.
- 0008 Myri-10G Dual-Protocol Interconnect
+ 0008 Myri-10G Dual-Protocol NIC (10G-PCIE-8A)
8043 Myrinet 2000 Scalable Cluster Interconnect
+ 103c 1240 Myrinet M2L-PCI64/2-3.0 LANai 7.4 (HP OEM)
14c2 DTK Computer
14c3 MEDIATEK Corp.
14c4 IWASAKI Information Systems Co Ltd
@@ -8287,6 +8613,7 @@
0811 Sentry5 External Interface Core
0816 BCM3302 Sentry5 MIPS32 CPU
1600 NetXtreme BCM5752 Gigabit Ethernet PCI Express
+ 107b 5048 E4500 Onboard
1601 NetXtreme BCM5752M Gigabit Ethernet PCI Express
1644 NetXtreme BCM5700 Gigabit Ethernet
1014 0277 Broadcom Vigil B5700 1000Base-T
@@ -8349,19 +8676,26 @@
0e11 00cf NC7772 Gigabit Server Adapter (PCI-X, 10,100,1000-T)
0e11 00d0 NC7782 Gigabit Server Adapter (PCI-X, 10,100,1000-T)
0e11 00d1 NC7783 Gigabit Server Adapter (PCI-X, 10,100,1000-T)
+ 10a9 8013 Dual Port Gigabit Ethernet (PCI-X,Copper)
+ 10a9 8018 Dual Port Gigabit Ethernet (A330)
+ 10a9 801a Dual Port Gigabit Ethernet (IA-blade)
+ 10a9 801b Quad Port Gigabit Ethernet (PCI-E,Copper)
10b7 2000 3C998-T Dual Port 10/100/1000 PCI-X
10b7 3000 3C999-T Quad Port 10/100/1000 PCI-X
1166 1648 NetXtreme CIOB-E 1000Base-T
1734 100b Primergy RX300
164a NetXtreme II BCM5706 Gigabit Ethernet
+ 103c 3070 NC380T PCI Express Dual Port Multifunction Gigabit Server Adapter
103c 3101 NC370T MultifuNCtion Gigabit Server Adapter
164c NetXtreme II BCM5708 Gigabit Ethernet
+ 103c 7037 NC373T PCI Express Multifunction Gigabit Server Adapter
+ 103c 7038 NC373i Integrated Multifunction Gigabit Server Adapter
164d NetXtreme BCM5702FE Gigabit Ethernet
1653 NetXtreme BCM5705 Gigabit Ethernet
0e11 00e3 NC7761 Gigabit Server Adapter
1654 NetXtreme BCM5705_2 Gigabit Ethernet
0e11 00e3 NC7761 Gigabit Server Adapter
- 103c 3100 NC1020 HP ProLiant Gigabit Server Adapter 32 PCI
+ 103c 3100 NC1020 ProLiant Gigabit Server Adapter 32 PCI
103c 3226 NC150T 4-port Gigabit Combo Switch & Adapter
1659 NetXtreme BCM5721 Gigabit Ethernet PCI Express
1014 02c6 eServer xSeries server mainboard
@@ -8390,16 +8724,20 @@
103c 3006 DC7100 SFF(DX878AV)
1734 105d Scenic W620
1678 NetXtreme BCM5715 Gigabit Ethernet
- 1679 NetXtreme 5715S Gigabit Ethernet
+ 1679 NetXtreme BCM5715S Gigabit Ethernet
+ 103c 1707 NC326m PCIe Dual Port Adapter
+ 103c 170c NC325m PCIe Quad Port Adapter
103c 703c NC326i PCIe Dual Port Gigabit Server Adapter
167a NetXtreme BCM5754 Gigabit Ethernet PCI Express
167b NetXtreme BCM5755 Gigabit Ethernet PCI Express
167d NetXtreme BCM5751M Gigabit Ethernet PCI Express
+ 17aa 2081 Thinkpad R60e model 0657
167e NetXtreme BCM5751F Fast Ethernet PCI Express
1693 NetLink BCM5787M Gigabit Ethernet PCI Express
1696 NetXtreme BCM5782 Gigabit Ethernet
- 103c 12bc HP d530 CMT (DG746A)
+ 103c 12bc d530 CMT (DG746A)
14e4 000d NetXtreme BCM5782 1000Base-T
+ 169a NetLink BCM5786 Gigabit Ethernet PCI Express
169b NetLink BCM5787 Gigabit Ethernet PCI Express
169c NetXtreme BCM5788 Gigabit Ethernet
103c 308b MX6125
@@ -8417,10 +8755,15 @@
14e4 000b NetXtreme BCM5703 1000Base-T
14e4 800a NetXtreme BCM5703 1000Base-T
16a8 NetXtreme BCM5704S Gigabit Ethernet
+ 10a9 8014 Dual Port Gigabit Ethernet (PCI-X,Fiber)
+ 10a9 801c Quad Port Gigabit Ethernet (PCI-E,Fiber)
10b7 2001 3C998-SX Dual Port 1000-SX PCI-X
16aa NetXtreme II BCM5706S Gigabit Ethernet
103c 3102 NC370F MultifuNCtion Gigabit Server Adapter
16ac NetXtreme II BCM5708S Gigabit Ethernet
+ 103c 1706 NC373m Multifunction Gigabit Server Adapter
+ 103c 703b NC373i Integrated Multifunction Gigabit Server Adapter
+ 103c 703d NC373F PCI Express Multifunction Gigabit Server Adapter
16c6 NetXtreme BCM5702A3 Gigabit Ethernet
10b7 1100 3C1000B-T 10/100/1000 PCI
14e4 000c BCM5702 1000Base-T
@@ -8455,6 +8798,7 @@
4306 BCM4307 Ethernet Controller
4307 BCM4307 802.11b Wireless LAN Controller
4310 BCM4310 Chipcommon I/OController
+ 4311 Dell Wireless 1390 WLAN Mini-PCI Card
4312 BCM4310 UART
4313 BCM4310 Ethernet Controller
4315 BCM4310 USB Controller
@@ -8467,7 +8811,7 @@
14e4 4318 WPC54G version 3 [Wireless-G Notebook Adapter] 802.11g Wireless Lan Controller
16ec 0119 U.S.Robotics Wireless MAXg PC Card
1737 0048 WPC54G-EU version 3 [Wireless-G Notebook Adapter]
- 4319 Dell Wireless 1470 DualBand WLAN
+ 4319 BCM4311 [AirForce 54g] 802.11a/b/g PCI Express Transceiver
4320 BCM4306 802.11b/g Wireless LAN Controller
1028 0001 TrueMobile 1300 WLAN Mini-PCI Card
1028 0003 Wireless 1350 WLAN Mini-PCI Card
@@ -8492,9 +8836,10 @@
4325 BCM43xG 802.11b/g
1414 0003 Wireless Notebook Adapter MN-720
1414 0004 Wireless PCI Adapter MN-730
-# probably this is a correct ID...
4326 BCM4307 Chipcommon I/O Controller?
+ 4329 BCM43XG
4401 BCM4401 100Base-T
+ 103c 08b0 tc1100 tablet
1043 80a8 A7V8X motherboard
4402 BCM4402 Integrated 10/100BaseT
4403 BCM4402 V.90 56k Modem
@@ -8924,6 +9269,7 @@
1540 PROVIDEO MULTIMEDIA Co Ltd
1541 MACHONE Communications
1542 Concurrent Computer Corporation
+ 9260 RCIM-II Real-Time Clock & Interrupt Module
1543 SILICON Laboratories
3052 Intel 537 [Winmodem]
4c22 Si3036 MC'97 DAA
@@ -9215,6 +9561,7 @@
1677 Bernecker + Rainer
104e 5LS172.6 B&R Dual CAN Interface Card
12d7 5LS172.61 B&R Dual CAN Interface Card
+ 20ad 5ACPCI.MFIO-K01 Profibus DP / K-Feldbus / COM
167b ZyDAS Technology Corp.
2102 ZyDAS ZD1202
187e 3406 ZyAIR B-122 CardBus 11Mbs Wireless LAN Card
@@ -9245,12 +9592,15 @@
1385 4d00 Netgear WG311T Wireless PCI Adapter
1458 e911 Gigabyte GN-WIAG02
14b7 0a60 8482-WD ORiNOCO 11a/b/g Wireless PCI Adapter
+ 1668 1026 IBM HighRate 11 a/b/g Wireless CardBus Adapter
168c 0013 AirPlus XtremeG DWL-G650 Wireless PCMCIA Adapter
168c 1025 DWL-G650B2 Wireless CardBus Adapter
- 168c 1027 Netgate NL-3054CB ARIES b/g CardBus Adapter
+ 168c 1027 Engenius NL-3054CB ARIES b/g CardBus Adapter
+ 168c 1042 Ubiquiti Networks SuperRange a/b/g Cardbus Adapter
168c 2026 Netgate 5354MP ARIES a(108Mb turbo)/b/g MiniPCI Adapter
- 168c 2041 Netgate 5354MP Plus ARIES2 b/g MiniPCI Adapter
- 168c 2042 Netgate 5354MP Plus ARIES2 a/b/g MiniPCI Adapter
+ 168c 2041 Engenius 5354MP Plus ARIES2 b/g MiniPCI Adapter
+ 168c 2042 Engenius 5354MP Plus ARIES2 a/b/g MiniPCI Adapter
+ 168c 2051 TRENDnet TEW-443PI Wireless PCI Adapter
16ab 7302 Trust Speedshare Turbo Pro Wireless PCI Adapter
185f 2012 Wistron NeWeb WLAN a+b+g model CB9
001a AR5005G 802.11abg NIC
@@ -9260,14 +9610,16 @@
1186 3a16 D-Link AirPlus G DWL-G510 Wireless PCI Adapter(rev.B)
1186 3a23 D-Link AirPlus G DWL-G520+A Wireless PCI Adapter
1186 3a24 D-Link AirPlus G DWL-G650+A Wireless Cardbus Adapter
+ 168c 001a Belkin FD7000
168c 1052 TP-Link TL-WN510G Wireless CardBus Adapter
001b AR5006X 802.11abg NIC
1186 3a19 D-Link AirPremier AG DWL-AG660 Wireless Cardbus Adapter
1186 3a22 D-Link AirPremier AG DWL-AG530 Wireless PCI Adapter
- 168c 2062 EnGenius EMP-8602 (400mw)
- 168c 2063 EnGenius EMP-8602 (400mw)
+ 168c 2062 EnGenius EMP-8602 (400mw) or Compex WLM54AG (SuperAG)
+ 168c 2063 EnGenius EMP-8602 (400mw) or Compex WLM54AG
0020 AR5005VL 802.11bg Wireless NIC
1014 AR5212 802.11abg NIC
+ 1014 058a ThinkPad 11a/b/g Wireless LAN Mini Express Adapter (AR5BXB6)
1695 EPoX Computer Co., Ltd.
169c Netcell Corporation
0044 Revolution Storage Processing Card
@@ -9296,9 +9648,12 @@
16df PIKA Technologies Inc.
16e3 European Space Agency
1e0f LEON2FT Processor
+16e5 Intellon Corp.
+ 6000 INT6000 Ethernet-to-Powerline Bridge [HomePlug AV]
16ec U.S. Robotics
00ff USR997900 10/100 Mbps PCI Network Card
0116 USR997902 10/100/1000 Mbps PCI Network Card
+ 2f00 USR5660A (USR265660A, USR5660A-BP) 56K PCI Faxmodem
3685 Wireless Access PCI Adapter Model 022415
16ed Sycron N. V.
1001 UMIO communication card
@@ -9394,9 +9749,20 @@
1260 ARC-1260 16-Port PCI-Express to SATA RAID Controller
17d5 S2io Inc.
5831 Xframe 10 Gigabit Ethernet PCI-X
- 103c 12d5 HP PCI-X 133MHz 10GbE SR Fiber
+ 103c 12d5 PCI-X 133MHz 10GbE SR Fiber
+ 10a9 8020 Single Port 10 Gigabit Ethernet (PCI-X, Fiber)
+ 10a9 8024 Single Port 10 Gigabit Ethernet (PCI-X, Fiber)
5832 Xframe II 10Gbps Ethernet
+ 10a9 8021 Single Port 10 Gigabit Ethernet II (PCI-X, Fiber)
+17db Cray Inc
17de KWorld Computer Co. Ltd.
+17e4 Sectra AB
+ 0001 KK671 Cardbus encryption board
+ 0002 KK672 Cardbus encryption board
+17e6 Entropic Communications Inc.
+ 0010 EN2010 [c.Link] MoCA Network Controller (Coax, PCI interface)
+ 0011 EN2010 [c.Link] MoCA Network Controller (Coax, MPEG interface)
+ 0021 EN2210 [c.Link] MoCA Network Controller (Coax)
17ee Connect Components Ltd
17f2 Albatron Corp.
17fe Linksys, A Division of Cisco Systems
@@ -9449,7 +9815,9 @@
08a7 MVC100 DVI
08a8 MVC101 SDI
08a9 MVC102 DVI+Audio
+ 08b0 MVC200-DC
1849 ASRock Incorporation
+184a Thales Computers
1851 Microtune, Inc.
1852 Anritsu Corp.
1853 SMSC Automotive Infotainment System Group
@@ -9467,6 +9835,7 @@
187e ZyXEL Communication Corporation
3403 ZyAir G-110 802.11g
340e M-302 802.11g XtremeMIMO
+1885 Avvida Systems Inc.
1888 Varisys Ltd
0301 VMFX1 FPGA PMC module
0601 VSM2 dual PMC carrier
@@ -9479,7 +9848,8 @@
18a1 Astute Networks Inc.
18ac DViCO Corporation
d500 FusionHDTV 5
- d810 FusionHDTV 3 Gold
+ d800 FusionHDTV 3 Gold
+ d810 FusionHDTV 3 Gold-Q
d820 FusionHDTV 3 Gold-T
18b8 Ammasso
b001 AMSO 1100 iWARP/RDMA Gigabit Ethernet Coprocessor
@@ -9511,6 +9881,10 @@
18ec d002 COMBO-4SFP
18ec d003 COMBO-4SFPRO
18ec d004 COMBO-2XFP
+18f6 NextIO
+ 1000 [Nexsis] Switch Virtual P2P PCIe Bridge
+ 1050 [Nexsis] Switch Virtual P2P PCI Bridge
+ 2000 [Nexsis] Switch Integrated Mgmt. Endpoint
18f7 Commtech, Inc.
0001 Fastcom ESCC-PCI-335
0002 Fastcom 422/4-PCI-335
@@ -9523,6 +9897,7 @@
1923 Sangoma Technologies Corp.
0040 A200/Remora FXO/FXS Analog AFT card
0100 A104d QUAD T1/E1 AFT card
+ 0300 A101 single-port T1/E1
0400 A104u Quad T1/E1 AFT
1924 Level 5 Networks Inc.
192e TransDimension
@@ -9530,7 +9905,14 @@
000c Qualcomm MSM6275 UMTS chip
1942 ClearSpeed Technology plc
e511 CSX600 Advance Accelerator Board
+194a DapTechnology B.V.
+ 1111 FireSpy3850
+ 1112 FireSpy450b
+ 1113 FireSpy450bT
+ 1114 FireSpy850
+ 1115 FireSpy850bT
1957 Freescale Semiconductor Inc
+ 0012 MPC8548 [PowerQUICC III]
0080 MPC8349E
0081 MPC8349
0082 MPC8347E TBGA
@@ -9542,6 +9924,8 @@
1958 Faster Technology, LLC.
1966 Orad Hi-Tec Systems
1975 DVG64 family
+1969 Attansic Technology Corp.
+ 1048 L1 Gigabit Ethernet Adapter
196a Sensory Networks Inc.
0101 NodalCore C-1000 Content Classification Accelerator
0102 NodalCore C-2000 Content Classification Accelerator
@@ -9564,12 +9948,19 @@
0520 4135 HFT Interface Controller
19d4 Quixant Limited
19e2 Vector Informatik GmbH
+19e7 NET (Network Equipment Technologies)
+ 1001 STIX DSP Card
+ 1002 STIX - 1 Port T1/E1 Card
+ 1003 STIX - 2 Port T1/E1 Card
+ 1004 STIX - 4 Port T1/E1 Card
+ 1005 STIX - 4 Port FXS Card
1a03 ASPEED Technology, Inc.
2000 AST2000
1a08 Sierra semiconductor
0000 SC15064
1a1d GFaI e.V.
1a29 Fortinet, Inc.
+1a51 Hectronic AB
1b13 Jaton Corp
1c1c Symphony
0001 82C101
@@ -9608,6 +9999,7 @@
0014 HiNT HC4 PCI to ISDN bridge, Network controller
0020 HB6 Universal PCI-PCI bridge (transparent mode)
0021 HB6 Universal PCI-PCI bridge (non-transparent mode)
+ 1775 ce90 CE9
4c53 1050 CT7 mainboard
4c53 1080 CT8 mainboard
4c53 1090 Cx9 mainboard
@@ -9716,8 +10108,11 @@
0070 e817 WinTV PVR 500 (2nd unit)
0070 ff92 WiNTV PVR-550
0270 0801 WinTV PVR 150
+ 10fc d038 GV-MVP/RX2W (1st unit)
+ 10fc d039 GV-MVP/RX2W (2nd unit)
12ab fff3 MPG600
12ab ffff MPG600
+ 1461 c019 UltraTV 1500 MCE
9005 0092 VideOh! AVC-2010
9005 0093 VideOh! AVC-2410
0803 iTVC15 MPEG-2 Encoder
@@ -9726,7 +10121,6 @@
0070 4800 WinTV PVR-350 (V1)
12ab 0000 MPG160
1461 a3ce M179
-# video capture card
1461 a3cf M179
4468 Bridgeport machines
4594 Cogetec Informatique Inc
@@ -9945,6 +10339,7 @@
7063 pcHDTV
2000 HD-2000
3000 HD-3000
+ 5500 HD5500 HDTV
7604 O.N. Electronic Co Ltd.
7bde MIDAC Corporation
7fed PowerTV
@@ -10043,7 +10438,7 @@
1028 011c PRO/1000 XT Network Connection
8086 1107 PRO/1000 XT Server Adapter
8086 2107 PRO/1000 XT Server Adapter
- 8086 2110 PRO/1000 XT Server Adapter
+ 8086 2110 PRO/1000 XT Desktop Adapter
8086 3108 PRO/1000 XT Network Connection
1009 82544EI Gigabit Ethernet Controller (Fiber)
1014 0268 iSeries Gigabit Ethernet Adapter
@@ -10062,8 +10457,8 @@
1014 0265 PRO/1000 MT Network Connection
1014 0267 PRO/1000 MT Network Connection
1014 026a PRO/1000 MT Network Connection
- 1024 0134 Poweredge SC600
1028 002e Optiplex GX260
+ 1028 0134 PowerEdge 600SC
1028 0151 PRO/1000 MT Network Connection
107b 8920 PRO/1000 MT Desktop Adapter
8086 001e PRO/1000 MT Desktop Adapter
@@ -10083,8 +10478,8 @@
4c53 1080 CT8 mainboard
4c53 10a0 CA3/CR3 mainboard
8086 1011 PRO/1000 MT Dual Port Server Adapter
- 8086 1012 Primergy RX300
- 8086 101a PRO/1000 MT Dual Port Network Adapter
+ 8086 1012 PRO/1000 MT Dual Port Server Adapter
+ 8086 101a PRO/1000 MT Dual Port Network Connection
8086 3424 SE7501HG2 Mainboard
1011 82545EM Gigabit Ethernet Controller (Fiber)
1014 0268 iSeries Gigabit Ethernet Adapter
@@ -10093,21 +10488,24 @@
1012 82546EB Gigabit Ethernet Controller (Fiber)
0e11 00dc NC6170 Gigabit Server Adapter
8086 1012 PRO/1000 MF Dual Port Server Adapter
- 1013 82541EI Gigabit Ethernet Controller (Copper)
+ 1013 82541EI Gigabit Ethernet Controller
8086 0013 PRO/1000 MT Network Connection
- 8086 1013 IBM ThinkCentre Network Card
+ 8086 1013 PRO/1000 MT Network Connection
8086 1113 PRO/1000 MT Desktop Adapter
1014 82541ER Gigabit Ethernet Controller
+ 8086 0014 PRO/1000 MT Desktop Connection
+ 8086 1014 PRO/1000 MT Network Connection
1015 82540EM Gigabit Ethernet Controller (LOM)
- 1016 82540EP Gigabit Ethernet Controller (LOM)
+ 8086 1015 PRO/1000 MT Mobile Connection
+ 1016 82540EP Gigabit Ethernet Controller (Mobile)
1014 052c PRO/1000 MT Mobile Connection
1179 0001 PRO/1000 MT Mobile Connection
8086 1016 PRO/1000 MT Mobile Connection
- 1017 82540EP Gigabit Ethernet Controller (LOM)
+ 1017 82540EP Gigabit Ethernet Controller
8086 1017 PR0/1000 MT Desktop Connection
1018 82541EI Gigabit Ethernet Controller
- 8086 1018 PRO/1000 MT Desktop Adapter
- 1019 82547EI Gigabit Ethernet Controller (LOM)
+ 8086 1018 PRO/1000 MT Mobile Connection
+ 1019 82547EI Gigabit Ethernet Controller
1458 1019 GA-8IPE1000 Pro2 motherboard (865PE)
1458 e000 Intel Gigabit Ethernet (Kenai II)
8086 1019 PRO/1000 CT Desktop Connection
@@ -10115,6 +10513,7 @@
8086 302c Intel 82865G Mainboard (D865GBF)
8086 3427 S875WP1-E mainboard
101a 82547EI Gigabit Ethernet Controller (Mobile)
+ 8086 101a PRO/1000 CT Mobile Connection
101d 82546EB Gigabit Ethernet Controller
8086 1000 PRO/1000 MT Quad Port Server Adapter
101e 82540EP Gigabit Ethernet Controller (Mobile)
@@ -10126,6 +10525,7 @@
8086 1000 PRO/1000 MT Server Connection
8086 1001 PRO/1000 MT Server Adapter
8086 1002 PRO/1000 MT Server Adapter
+ 8086 1003 PRO/1000 GT Server Adapter
8086 1026 PRO/1000 MT Server Connection
1027 82545GM Gigabit Ethernet Controller
103c 3103 NC310F PCI-X Gigabit Server Adapter
@@ -10134,7 +10534,7 @@
8086 1003 PRO/1000 MF Server Adapter(LX)
8086 1027 PRO/1000 MF Server Adapter
1028 82545GM Gigabit Ethernet Controller
- 8086 1028 PRO/1000 MB Server Adapter
+ 8086 1028 PRO/1000 MB Server Connection
1029 82559 Ethernet Controller
1030 82559 InBusiness 10/100
1031 82801CAM (ICH3) PRO/100 VE (LOM) Ethernet Controller
@@ -10150,7 +10550,7 @@
1032 82801CAM (ICH3) PRO/100 VE Ethernet Controller
1033 82801CAM (ICH3) PRO/100 VM (LOM) Ethernet Controller
1034 82801CAM (ICH3) PRO/100 VM Ethernet Controller
- 1035 82801CAM (ICH3)/82562EH (LOM) Ethernet Controller
+ 1035 82801CAM (ICH3)/82562EH (LOM) Ethernet Controller
1036 82801CAM (ICH3) 82562EH Ethernet Controller
1037 82801CAM (ICH3) Chipset Ethernet Controller
1038 82801CAM (ICH3) PRO/100 VM (KM) Ethernet Controller
@@ -10161,15 +10561,23 @@
103b 82801DB PRO/100 VM (LOM) Ethernet Controller
103c 82801DB PRO/100 VM (CNR) Ethernet Controller
103d 82801DB PRO/100 VE (MOB) Ethernet Controller
+ 1014 0522 Thinkpad R50e model 1634
103e 82801DB PRO/100 VM (MOB) Ethernet Controller
1040 536EP Data Fax Modem
16be 1040 V.9X DSP Data Fax Modem
1043 PRO/Wireless LAN 2100 3B Mini PCI Adapter
+ 103c 08b0 tc1100 tablet
+ 8086 2522 Samsung P30 integrated WLAN
8086 2527 MIM2000/Centrino
+ 8086 2581 Toshiba Satellite M10
1048 PRO/10GbE LR Server Adapter
8086 a01f PRO/10GbE LR Server Adapter
8086 a11f PRO/10GbE LR Server Adapter
- 104b Ethernet Controller
+ 1049 82566MM Gigabit Network Connection
+ 104a 82566DM Gigabit Network Connection
+ 104b 82566DC Gigabit Network Connection
+ 104c 82562V 10/100 Network Connection
+ 104d 82566MC Gigabit Network Connection
1050 82562EZ 10/100 Ethernet Controller
1462 728c 865PE Neo2 (MS-6728)
1462 758c MS-6758 (875P Neo)
@@ -10179,11 +10587,29 @@
1051 82801EB/ER (ICH5/ICH5R) integrated LAN Controller
1052 PRO/100 VM Network Connection
1053 PRO/100 VM Network Connection
+ 1054 PRO/100 VE Network Connection
+ 1055 PRO/100 VM Network Connection
+ 1056 PRO/100 VE Network Connection
+ 1057 PRO/100 VE Network Connection
1059 82551QM Ethernet Controller
+ 105b 82546GB Gigabit Ethernet Controller (Copper)
105e 82571EB Gigabit Ethernet Controller
+ 103c 7044 NC360T PCI Express Dual Port Gigabit Server Adapter
1775 6003 Telum GE-QT
+ 8086 005e PRO/1000 PT Dual Port Server Connection
+ 8086 105e PRO/1000 PT Dual Port Network Connection
+ 8086 115e PRO/1000 PT Dual Port Server Adapter
+ 8086 116e PRO/1000 PT Dual Port Server Adapter
+ 8086 125e PRO/1000 PT Dual Port Server Adapter
+ 8086 135e PRO/1000 PT Dual Port Server Adapter
105f 82571EB Gigabit Ethernet Controller
+ 8086 115f PRO/1000 PF Dual Port Server Adapter
+ 8086 116f PRO/1000 PF Dual Port Server Adapter
+ 8086 125f PRO/1000 PF Dual Port Server Adapter
+ 8086 135f PRO/1000 PF Dual Port Server Adapter
1060 82571EB Gigabit Ethernet Controller
+ 8086 0060 PRO/1000 PB Dual Port Server Connection
+ 8086 1060 PRO/1000 PB Dual Port Server Connection
1064 82562ET/EZ/GT/GZ - PRO/100 VE (LOM) Ethernet Controller
1043 80f8 P5GD1-VW Mainboard
1065 82562ET/EZ/GT/GZ - PRO/100 VE Ethernet Controller
@@ -10197,70 +10623,106 @@
1028 0165 PowerEdge 750
8086 0075 PRO/1000 CT Network Connection
8086 1075 PRO/1000 CT Network Connection
- 1076 82541GI/PI Gigabit Ethernet Controller
+ 1076 82541GI Gigabit Ethernet Controller
1028 0165 PowerEdge 750
1028 019a PowerEdge SC1425
8086 0076 PRO/1000 MT Network Connection
8086 1076 PRO/1000 MT Network Connection
8086 1176 PRO/1000 MT Desktop Adapter
- 8086 1276 PRO/1000 MT Desktop Adapter
+ 8086 1276 PRO/1000 MT Network Adapter
1077 82541GI Gigabit Ethernet Controller
1179 0001 PRO/1000 MT Mobile Connection
8086 0077 PRO/1000 MT Mobile Connection
8086 1077 PRO/1000 MT Mobile Connection
- 1078 82541EI Gigabit Ethernet Controller
- 8086 1078 PRO/1000 MT Network Connection
+ 1078 82541ER Gigabit Ethernet Controller
+ 8086 1078 82541ER-based Network Connection
1079 82546GB Gigabit Ethernet Controller
- 103c 12a6 HP Dual Port 1000Base-T [A9900A]
- 103c 12cf HP Core Dual Port 1000Base-T [AB352A]
+ 103c 12a6 Dual Port 1000Base-T [A9900A]
+ 103c 12cf Core Dual Port 1000Base-T [AB352A]
+ 1775 10d0 V5D Single Board Computer Gigabit Ethernet
+ 1775 ce90 CE9
1fc1 0027 Niagara 2261 Failover NIC
4c53 1090 Cx9 / Vx9 mainboard
4c53 10b0 CL9 mainboard
8086 0079 PRO/1000 MT Dual Port Network Connection
8086 1079 PRO/1000 MT Dual Port Network Connection
- 8086 1179 PRO/1000 MT Dual Port Network Connection
+ 8086 1179 PRO/1000 MT Dual Port Server Adapter
8086 117a PRO/1000 MT Dual Port Server Adapter
107a 82546GB Gigabit Ethernet Controller
- 103c 12a8 HP Dual Port 1000base-SX [A9899A]
+ 103c 12a8 Dual Port 1000base-SX [A9899A]
8086 107a PRO/1000 MF Dual Port Server Adapter
8086 127a PRO/1000 MF Dual Port Server Adapter
107b 82546GB Gigabit Ethernet Controller
8086 007b PRO/1000 MB Dual Port Server Connection
8086 107b PRO/1000 MB Dual Port Server Connection
107c 82541PI Gigabit Ethernet Controller
- 107d 82572EI Gigabit Ethernet Controller
- 107e 82572EI Gigabit Ethernet Controller
+ 8086 1376 PRO/1000 GT Desktop Adapter
+ 8086 1476 PRO/1000 GT Desktop Adapter
+ 107d 82572EI Gigabit Ethernet Controller (Copper)
+ 8086 1082 PRO/1000 PT Server Adapter
+ 8086 1092 PRO/1000 PT Server Adapter
+ 107e 82572EI Gigabit Ethernet Controller (Fiber)
+ 8086 1084 PRO/1000 PF Server Adapter
+ 8086 1094 PRO/1000 PF Server Adapter
107f 82572EI Gigabit Ethernet Controller
1080 FA82537EP 56K V.92 Data/Fax Modem PCI
- 1081 Enterprise Southbridge LAN Copper
- 1082 Enterprise Southbridge LAN fiber
- 1083 Enterprise Southbridge LAN SERDES
- 1084 Enterprise Southbridge IDE Redirection
- 1085 Enterprise Southbridge Serial Port Redirection
- 1086 Enterprise Southbridge IPMI/KCS0
- 1087 Enterprise Southbridge UHCI Redirection
- 1089 Enterprise Southbridge BT
- 108a 82546EB Gigabit Ethernet Controller
+ 1081 631xESB/632xESB LAN Controller Copper
+ 1082 631xESB/632xESB LAN Controller fiber
+ 1083 631xESB/632xESB LAN Controller SERDES
+ 1084 631xESB/632xESB IDE Redirection
+ 1085 631xESB/632xESB Serial Port Redirection
+ 1086 631xESB/632xESB IPMI/KCS0
+ 1087 631xESB/632xESB UHCI Redirection
+ 1089 631xESB/632xESB BT
+ 108a 82546GB Gigabit Ethernet Controller
+ 8086 108a PRO/1000 P Dual Port Server Adapter
+ 8086 118a PRO/1000 P Dual Port Server Adapter
108b 82573V Gigabit Ethernet Controller (Copper)
108c 82573E Gigabit Ethernet Controller (Copper)
108e 82573E KCS (Active Management)
- 108f Intel(R) Active Management Technology - SOL
- 1092 Intel(R) PRO/100 VE Network Connection
- 1096 PRO/1000 EB Network Connection with I/O Acceleration
- 1097 Enterprise Southbridge DPT LAN fiber
- 1098 PRO/1000 EB Backplane Connection with I/O Acceleration
- 1099 82546GB Quad Port Server Adapter
+ 108f Active Management Technology - SOL
+ 1091 PRO/100 VM Network Connection
+ 1092 PRO/100 VE Network Connection
+ 1093 PRO/100 VM Network Connection
+ 1094 PRO/100 VE Network Connection
+ 1095 PRO/100 VE Network Connection
+ 1096 80003ES2LAN Gigabit Ethernet Controller (Copper)
+ 1097 631xESB/632xESB DPT LAN Controller (Fiber)
+ 1098 80003ES2LAN Gigabit Ethernet Controller (Serdes)
+ 1099 82546GB Gigabit Ethernet Controller (Copper)
+ 8086 1099 PRO/1000 GT Quad Port Server Adapter
109a 82573L Gigabit Ethernet Controller
+ 1179 ff10 PRO/1000 PL
+ 17aa 2001 ThinkPad T60
17aa 207e Thinkpad X60s
+ 8086 109a PRO/1000 PL Network Connection
109b 82546GB PRO/1000 GF Quad Port Server Adapter
+ 109e 82597EX 10GbE Ethernet Controller
+ 8086 a01f PRO/10GbE CX4 Server Adapter
+ 8086 a11f PRO/10GbE CX4 Server Adapter
10a0 82571EB PRO/1000 AT Quad Port Bypass Adapter
10a1 82571EB PRO/1000 AF Quad Port Bypass Adapter
+ 10a4 82571EB Gigabit Ethernet Controller
+ 8086 10a4 PRO/1000 PT Quad Port Server Adapter
+ 8086 11a4 PRO/1000 PT Quad Port Server Adapter
10b0 82573L PRO/1000 PL Network Connection
10b2 82573V PRO/1000 PM Network Connection
10b3 82573E PRO/1000 PM Network Connection
10b4 82573L PRO/1000 PL Network Connection
- 10b5 82546GB PRO/1000 GT Quad Port Server Adapter
+ 10b5 82546GB Gigabit Ethernet Controller (Copper)
103c 3109 NC340T PCI-X Quad-port Gigabit Server Adapter
+ 8086 1099 PRO/1000 GT Quad Port Server Adapter
+ 8086 1199 PRO/1000 GT Quad Port Server Adapter
+ 10b9 82572EI Gigabit Ethernet Controller (Copper)
+ 8086 1083 PRO/1000 PT Desktop Adapter
+ 8086 1093 PRO/1000 PT Desktop Adapter
+ 10ba 80003ES2LAN Gigabit Ethernet Controller (Copper)
+ 10bb 80003ES2LAN Gigabit Ethernet Controller (Serdes)
+ 10bc 82571EB Gigabit Ethernet Controller (Copper)
+ 8086 10bc PRO/1000 PT Quad Port LP Server Adapter
+ 8086 11bc PRO/1000 PT Quad Port LP Server Adapter
+ 10c4 82562GT 10/100 Network Connection
+ 10c5 82562G 10/100 Network Connection
1107 PRO/1000 MF Server Adapter (LX)
1130 82815 815 Chipset Host Bridge and Memory Controller Hub
1025 1016 Travelmate 612 TX
@@ -10278,7 +10740,7 @@
1161 82806AA PCI64 Hub Advanced Programmable Interrupt Controller
8086 1161 82806AA PCI64 Hub APIC
1162 Xscale 80200 Big Endian Companion Chip
- 1200 Intel IXP1200 Network Processor
+ 1200 IXP1200 Network Processor
172a 0000 AEP SSL Accelerator
1209 8255xER/82551IT Fast Ethernet Controller
4c53 1050 CT7 mainboard
@@ -10361,6 +10823,7 @@
144d 2501 SEM-2000 MiniPCI LAN Adapter
144d 2502 SEM-2100IL MiniPCI LAN Adapter
1668 1100 EtherExpress PRO/100B (TX) (MiniPCI Ethernet+Modem)
+ 1775 ce90 CE9
4c53 1080 CT8 mainboard
4c53 10e0 PSL09 PrPMC
8086 0001 EtherExpress PRO/100B (TX)
@@ -10458,8 +10921,7 @@
123b 82380PB PCI to PCI Docking Bridge
123c 82380AB (MISA) Mobile PCI-to-ISA Bridge
123d 683053 Programmable Interrupt Device
-# in" hidden" mode
- 123e 82466GX (IHPC) Integrated Hot-Plug Controller
+ 123e 82466GX (IHPC) Integrated Hot-Plug Controller (hidden mode)
123f 82466GX Integrated Hot-Plug Controller (IHPC)
1240 82752 (752) AGP Graphics Accelerator
124b 82380FB (MPCI2) Mobile Docking Controller
@@ -10484,10 +10946,10 @@
1028 0467 PowerEdge Expandable RAID Controller 2/DC
1028 1111 PowerEdge Expandable RAID Controller 2/SC
103c 03a2 MegaRAID
- 103c 10c6 MegaRAID 438, HP NetRAID-3Si
- 103c 10c7 MegaRAID T5, Integrated HP NetRAID
- 103c 10cc MegaRAID, Integrated HP NetRAID
- 103c 10cd HP NetRAID-1Si
+ 103c 10c6 MegaRAID 438, NetRAID-3Si
+ 103c 10c7 MegaRAID T5, Integrated NetRAID
+ 103c 10cc MegaRAID, Integrated NetRAID
+ 103c 10cd NetRAID-1Si
105a 0000 SuperTrak
105a 2168 SuperTrak Pro
105a 5168 SuperTrak66/100
@@ -10506,8 +10968,11 @@
1a30 82845 845 (Brookdale) Chipset Host Bridge
1028 010e Optiplex GX240
1a31 82845 845 (Brookdale) Chipset AGP Bridge
- 1a38 Server DMA Engine
+ 1a38 5000 Series Chipset DMA Engine
1a48 PRO/10GbE SR Server Adapter
+ 1b48 82597EX 10GbE Ethernet Controller
+ 8086 a01f PRO/10GbE LR Server Adapter
+ 8086 a11f PRO/10GbE LR Server Adapter
2410 82801AA ISA Bridge (LPC)
2411 82801AA IDE
2412 82801AA USB
@@ -10534,6 +10999,7 @@
2442 82801BA/BAM USB (Hub #1)
1014 01c6 Netvista A40/A40p
1025 1016 Travelmate 612 TX
+ 1028 00c7 Dimension 8100
1028 010e Optiplex GX240
1043 8027 TUSL2-C Mainboard
104d 80df Vaio PCG-FX403
@@ -10543,6 +11009,7 @@
2443 82801BA/BAM SMBus
1014 01c6 Netvista A40/A40p
1025 1016 Travelmate 612 TX
+ 1028 00c7 Dimension 8100
1028 010e Optiplex GX240
1043 8027 TUSL2-C Mainboard
104d 80df Vaio PCG-FX403
@@ -10551,12 +11018,14 @@
8086 4557 D815EGEW Mainboard
2444 82801BA/BAM USB (Hub #2)
1025 1016 Travelmate 612 TX
+ 1028 00c7 Dimension 8100
1028 010e Optiplex GX240
1043 8027 TUSL2-C Mainboard
104d 80df Vaio PCG-FX403
147b 0507 TH7II-RAID
8086 4532 D815EEA2 mainboard
2445 82801BA/BAM AC'97 Audio
+ 0e11 000b Compaq Deskpro EN Audio
0e11 0088 Evo D500
1014 01c6 Netvista A40/A40p
1025 1016 Travelmate 612 TX
@@ -10569,6 +11038,7 @@
104d 80df Vaio PCG-FX403
2448 82801 Mobile PCI Bridge
103c 099c NX6110/NC6120
+ 144d c00c P30 notebook
1734 1055 Amilo M1420
2449 82801BA/BAM/CA/CAM Ethernet Controller
0e11 0012 EtherExpress PRO/100 VM
@@ -10606,6 +11076,7 @@
104d 80df Vaio PCG-FX403
244b 82801BA IDE U100
1014 01c6 Netvista A40/A40p
+ 1028 00c7 Dimension 8100
1028 010e Optiplex GX240
1043 8027 TUSL2-C Mainboard
147b 0507 TH7II-RAID
@@ -10678,13 +11149,16 @@
24c1 82801DBL (ICH4-L) IDE Controller
24c2 82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M) USB UHCI Controller #1
1014 0267 NetVista A30p
+ 1014 052d Thinkpad R50e model 1634
1025 005a TravelMate 290
1028 0126 Optiplex GX260
1028 0163 Latitude D505
1028 0196 Inspiron 5160
103c 088c NC8000 laptop
103c 0890 NC6000 laptop
+ 103c 08b0 tc1100 tablet
1071 8160 MIM2000
+ 144d c00c P30 notebook
1462 5800 845PE Max (MS-6580)
1509 2990 Averatec 5110H laptop
1734 1004 D1451 Mainboard (SCENIC N300, i845GV)
@@ -10693,10 +11167,12 @@
8086 4541 Latitude D400
24c3 82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M) SMBus Controller
1014 0267 NetVista A30p
+ 1014 052d Thinkpad R50e model 1634
1025 005a TravelMate 290
1028 0126 Optiplex GX260
103c 088c NC8000 laptop
103c 0890 NC6000 laptop
+ 103c 08b0 tc1100 tablet
1071 8160 MIM2000
1458 24c2 GA-8PE667 Ultra
1462 5800 845PE Max (MS-6580)
@@ -10705,13 +11181,16 @@
4c53 1090 Cx9 / Vx9 mainboard
24c4 82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M) USB UHCI Controller #2
1014 0267 NetVista A30p
+ 1014 052d Thinkpad R50e model 1634
1025 005a TravelMate 290
1028 0126 Optiplex GX260
1028 0163 Latitude D505
1028 0196 Inspiron 5160
103c 088c NC8000 laptop
103c 0890 NC6000 laptop
+ 103c 08b0 tc1100 tablet
1071 8160 MIM2000
+ 144d c00c P30 notebook
1462 5800 845PE Max (MS-6580)
1509 2990 Averatec 5110H
1734 1004 D1451 Mainboard (SCENIC N300, i845GV)
@@ -10720,45 +11199,57 @@
24c5 82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M) AC'97 Audio Controller
0e11 00b8 Analog Devices Inc. codec [SoundMAX]
1014 0267 NetVista A30p
+ 1014 055f Thinkpad R50e model 1634
1025 005a TravelMate 290
1028 0139 Latitude D400
1028 0163 Latitude D505
1028 0196 Inspiron 5160
103c 088c NC8000 laptop
103c 0890 NC6000 laptop
+ 103c 08b0 tc1100 tablet
1071 8160 MIM2000
+ 144d c00c P30 notebook
1458 a002 GA-8PE667 Ultra
1462 5800 845PE Max (MS-6580)
1734 1005 D1451 (SCENIC N300, i845GV) Sigmatel STAC9750T
1734 1055 Amilo M1420
24c6 82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M) AC'97 Modem Controller
+ 1014 0559 Thinkpad R50e model 1634
1025 003c Aspire 2001WLCi (Compal CL50 motherboard) implementation
1025 005a TravelMate 290
1028 0196 Inspiron 5160
103c 088c NC8000 laptop
103c 0890 NC6000 laptop
+ 103c 08b0 tc1100 tablet
1071 8160 MIM2000
+ 144d c00c P30 notebook
24c7 82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M) USB UHCI Controller #3
1014 0267 NetVista A30p
+ 1014 052d Thinkpad R50e model 1634
1025 005a TravelMate 290
1028 0126 Optiplex GX260
1028 0163 Latitude D505
1028 0196 Inspiron 5160
103c 088c NC8000 laptop
103c 0890 NC6000 laptop
+ 103c 08b0 tc1100 tablet
1071 8160 MIM2000
+ 144d c00c P30 notebook
1462 5800 845PE Max (MS-6580)
1509 2990 Averatec 5110H
1734 1004 D1451 Mainboard (SCENIC N300, i845GV)
4c53 1090 Cx9 / Vx9 mainboard
8086 4541 Latitude D400
24ca 82801DBM (ICH4-M) IDE Controller
+ 1014 052d Thinkpad R50e model 1634
1025 005a TravelMate 290
1028 0163 Latitude D505
1028 0196 Inspiron 5160
103c 088c NC8000 laptop
103c 0890 NC6000 laptop
+ 103c 08b0 tc1100 tablet
1071 8160 MIM2000
+ 144d c00c P30 notebook
1734 1055 Amilo M1420
8086 4541 Latitude D400
24cb 82801DB (ICH4) IDE Controller
@@ -10769,9 +11260,11 @@
1734 1004 D1451 Mainboard (SCENIC N300, i845GV)
4c53 1090 Cx9 / Vx9 mainboard
24cc 82801DBM (ICH4-M) LPC Interface Bridge
+ 144d c00c P30 notebook
1734 1055 Amilo M1420
24cd 82801DB/DBM (ICH4/ICH4-M) USB2 EHCI Controller
1014 0267 NetVista A30p
+ 1014 052e Thinkpad R50e model 1634
1025 005a TravelMate 290
1028 011d Latitude D600
1028 0126 Optiplex GX260
@@ -10780,7 +11273,10 @@
1028 0196 Inspiron 5160
103c 088c NC8000 laptop
103c 0890 NC6000 laptop
+ 103c 08b0 tc1100 tablet
1071 8160 MIM2000
+ 1179 ff00 Satellite 2430
+ 144d c00c P30 notebook
1462 3981 845PE Max (MS-6580)
1509 1968 Averatec 5110H
1734 1004 D1451 Mainboard (SCENIC N300, i845GV)
@@ -10797,6 +11293,7 @@
15d9 4580 P4SCE Mainboard
8086 3427 S875WP1-E mainboard
8086 4246 Desktop Board D865GBF
+ 8086 4c43 Desktop Board D865GLC
8086 524c D865PERL mainboard
24d2 82801EB/ER (ICH5/ICH5R) USB UHCI Controller #1
1014 02ed xSeries server mainboard
@@ -10812,11 +11309,13 @@
1734 101c Primergy RX300 S2
8086 3427 S875WP1-E mainboard
8086 4246 Desktop Board D865GBF
+ 8086 4c43 Desktop Board D865GLC
8086 524c D865PERL mainboard
24d3 82801EB/ER (ICH5/ICH5R) SMBus Controller
1014 02ed xSeries server mainboard
1028 0156 Precision 360
1028 0169 Precision 470
+ 103c 12bc d330 uT
1043 80a6 P4P800 Mainboard
1458 24d2 GA-8IPE1000 Pro2 motherboard (865PE)
1462 7280 865PE Neo2 (MS-6728)
@@ -10824,6 +11323,7 @@
1734 101c Primergy RX300 S2
8086 3427 S875WP1-E mainboard
8086 4246 Desktop Board D865GBF
+ 8086 4c43 Desktop Board D865GLC
8086 524c D865PERL mainboard
24d4 82801EB/ER (ICH5/ICH5R) USB UHCI Controller #2
1014 02ed xSeries server mainboard
@@ -10839,8 +11339,10 @@
1734 101c Primergy RX300 S2
8086 3427 S875WP1-E mainboard
8086 4246 Desktop Board D865GBF
+ 8086 4c43 Desktop Board D865GLC
8086 524c D865PERL mainboard
24d5 82801EB/ER (ICH5/ICH5R) AC'97 Audio Controller
+ 100a 147b Abit IS7-E motherboard
1028 0169 Precision 470
103c 006a NX9500
103c 12bc d330 uT
@@ -10852,6 +11354,7 @@
8086 a000 D865PERL mainboard
8086 e000 D865PERL mainboard
8086 e001 Desktop Board D865GBF
+ 8086 e002 SoundMax Intergrated Digital Audio
24d6 82801EB/ER (ICH5/ICH5R) AC'97 Modem Controller
103c 006a NX9500
24d7 82801EB/ER (ICH5/ICH5R) USB UHCI Controller #3
@@ -10867,6 +11370,7 @@
1734 101c Primergy RX300 S2
8086 3427 S875WP1-E mainboard
8086 4246 Desktop Board D865GBF
+ 8086 4c43 Desktop Board D865GLC
8086 524c D865PERL mainboard
24db 82801EB/ER (ICH5/ICH5R) IDE Controller
1014 02ed xSeries server mainboard
@@ -10883,6 +11387,7 @@
8086 24db P4C800 Mainboard
8086 3427 S875WP1-E mainboard
8086 4246 Desktop Board D865GBF
+ 8086 4c43 Desktop Board D865GLC
8086 524c D865PERL mainboard
24dc 82801EB (ICH5) LPC Interface Bridge
24dd 82801EB/ER (ICH5/ICH5R) USB2 EHCI Controller
@@ -10897,6 +11402,7 @@
1462 7280 865PE Neo2 (MS-6728)
8086 3427 S875WP1-E mainboard
8086 4246 Desktop Board D865GBF
+ 8086 4c43 Desktop Board D865GLC
8086 524c D865PERL mainboard
24de 82801EB/ER (ICH5/ICH5R) USB UHCI Controller #4
1014 02ed xSeries server mainboard
@@ -10908,6 +11414,7 @@
1734 101c Primergy RX300 S2
8086 3427 S875WP1-E mainboard
8086 4246 Desktop Board D865GBF
+ 8086 4c43 Desktop Board D865GLC
8086 524c D865PERL mainboard
24df 82801ER (ICH5R) SATA Controller
2500 82820 820 (Camino) Chipset Host Bridge (MCH)
@@ -10920,6 +11427,7 @@
2520 82805AA MTH Memory Translator Hub
2521 82804AA MRH-S Memory Repeater Hub for SDRAM
2530 82850 850 (Tehama) Chipset Host Bridge (MCH)
+ 1028 00c7 Dimension 8100
147b 0507 TH7II-RAID
2531 82860 860 (Wombat) Chipset Host Bridge (MCH)
2532 82850 850 (Tehama) Chipset AGP Bridge
@@ -10958,6 +11466,7 @@
1734 1004 D1451 Mainboard (SCENIC N300, i845GV)
2570 82865G/PE/P DRAM Controller/Host-Hub Interface
103c 006a NX9500
+ 103c 12bc d330 uT
1043 80f2 P5P800-MX Mainboard
1458 2570 GA-8IPE1000 Pro2 motherboard (865PE)
2571 82865G/PE/P PCI to AGP Controller
@@ -10966,6 +11475,7 @@
103c 12bc D530 sff(dc578av)
1043 80a5 P5P800-MX Mainboard
8086 4246 Desktop Board D865GBF
+ 8086 4c43 Desktop Board D865GLC
2573 82865G/PE/P PCI to CSA Bridge
2576 82865G/PE/P Processor to I/O Memory Interface
2578 82875P/E7210 Memory Controller Hub
@@ -10975,19 +11485,19 @@
2579 82875P Processor to AGP Controller
257b 82875P/E7210 Processor to PCI to CSA Bridge
257e 82875P/E7210 Processor to I/O Memory Interface
- 2580 915G/P/GV/GL/PL/910GL Express Memory Controller Hub
+ 2580 82915G/P/GV/GL/PL/910GL Memory Controller Hub
1458 2580 GA-8I915ME-G Mainboard
1462 7028 915P/G Neo2
1734 105b Scenic W620
- 2581 915G/P/GV/GL/PL/910GL Express PCI Express Root Port
- 2582 82915G/GV/910GL Express Chipset Family Graphics Controller
+ 2581 82915G/P/GV/GL/PL/910GL PCI Express Root Port
+ 2582 82915G/GV/910GL Integrated Graphics Controller
1028 1079 Optiplex GX280
103c 3006 DC7100 SFF(DX878AV)
1043 2582 P5GD1-VW Mainboard
1458 2582 GA-8I915ME-G Mainboard
1734 105b Scenic W620
- 2584 925X/XE Express Memory Controller Hub
- 2585 925X/XE Express PCI Express Root Port
+ 2584 82925X/XE Memory Controller Hub
+ 2585 82925X/XE PCI Express Root Port
2588 E7220/E7221 Memory Controller Hub
2589 E7220/E7221 PCI Express Root Port
258a E7221 Integrated Graphics Controller
@@ -11002,35 +11512,50 @@
1043 1881 GMA 900 915GM Integrated Graphics
25a1 6300ESB LPC Interface Controller
25a2 6300ESB PATA Storage Controller
+ 1775 10d0 V5D Single Board Computer IDE
+ 1775 ce90 CE9
4c53 10b0 CL9 mainboard
4c53 10e0 PSL09 PrPMC
25a3 6300ESB SATA Storage Controller
+ 1775 ce90 CE9
4c53 10b0 CL9 mainboard
4c53 10d0 Telum ASLP10 Processor AMC
4c53 10e0 PSL09 PrPMC
25a4 6300ESB SMBus Controller
+ 1775 10d0 V5D Single Board Computer
+ 1775 ce90 CE9
4c53 10b0 CL9 mainboard
4c53 10d0 Telum ASLP10 Processor AMC
4c53 10e0 PSL09 PrPMC
25a6 6300ESB AC'97 Audio Controller
+ 1775 ce90 CE9
4c53 10b0 CL9 mainboard
25a7 6300ESB AC'97 Modem Controller
25a9 6300ESB USB Universal Host Controller
+ 1775 10d0 V5D Single Board Computer USB
+ 1775 ce90 CE9
4c53 10b0 CL9 mainboard
4c53 10d0 Telum ASLP10 Processor AMC
4c53 10e0 PSL09 PrPMC
25aa 6300ESB USB Universal Host Controller
+ 1775 ce90 CE9
4c53 10b0 CL9 mainboard
4c53 10e0 PSL09 PrPMC
25ab 6300ESB Watchdog Timer
+ 1775 10d0 V5D Single Board Computer
+ 1775 ce90 CE9
4c53 10b0 CL9 mainboard
4c53 10d0 Telum ASLP10 Processor AMC
4c53 10e0 PSL09 PrPMC
25ac 6300ESB I/O Advanced Programmable Interrupt Controller
+ 1775 10d0 V5D Single Board Computer
+ 1775 ce90 CE9
4c53 10b0 CL9 mainboard
4c53 10d0 Telum ASLP10 Processor AMC
4c53 10e0 PSL09 PrPMC
25ad 6300ESB USB2 Enhanced Host Controller
+ 1775 10d0 V5D Single Board Computer USB 2.0
+ 1775 ce90 CE9
4c53 10b0 CL9 mainboard
4c53 10d0 Telum ASLP10 Processor AMC
4c53 10e0 PSL09 PrPMC
@@ -11038,26 +11563,25 @@
25b0 6300ESB SATA RAID Controller
4c53 10d0 Telum ASLP10 Processor AMC
4c53 10e0 PSL09 PrPMC
- 25c0 Workstation Memory Controller Hub
- 25d0 Server Memory Controller Hub
- 25d4 Server Memory Contoller Hub
- 25d8 Server Memory Controller Hub
- 25e2 Server PCI Express x4 Port 2
- 25e3 Server PCI Express x4 Port 3
- 25e4 Server PCI Express x4 Port 4
- 25e5 Server PCI Express x4 Port 5
- 25e6 Server PCI Express x4 Port 6
- 25e7 Server PCI Express x4 Port 7
- 25e8 Server AMB Memory Mapped Registers
- 25f0 Server Error Reporting Registers
- 25f1 Reserved Registers
- 25f3 Reserved Registers
- 25f5 Server FBD Registers
- 25f6 Server FBD Registers
- 25f7 Server PCI Express x8 Port 2-3
- 25f8 Server PCI Express x8 Port 4-5
- 25f9 Server PCI Express x8 Port 6-7
- 25fa Server PCI Express x16 Port 4-7
+ 25c0 5000X Chipset Memory Controller Hub
+ 25d0 5000Z Chipset Memory Controller Hub
+ 25d4 5000V Chipset Memory Controller Hub
+ 25d8 5000P Chipset Memory Controller Hub
+ 25e2 5000 Series Chipset PCI Express x4 Port 2
+ 25e3 5000 Series Chipset PCI Express x4 Port 3
+ 25e4 5000 Series Chipset PCI Express x4 Port 4
+ 25e5 5000 Series Chipset PCI Express x4 Port 5
+ 25e6 5000 Series Chipset PCI Express x4 Port 6
+ 25e7 5000 Series Chipset PCI Express x4 Port 7
+ 25f0 5000 Series Chipset FSB Registers
+ 25f1 5000 Series Chipset Reserved Registers
+ 25f3 5000 Series Chipset Reserved Registers
+ 25f5 5000 Series Chipset FBD Registers
+ 25f6 5000 Series Chipset FBD Registers
+ 25f7 5000 Series Chipset PCI Express x8 Port 2-3
+ 25f8 5000 Series Chipset PCI Express x8 Port 4-5
+ 25f9 5000 Series Chipset PCI Express x8 Port 6-7
+ 25fa 5000X Chipset PCI Express x16 Port 4-7
2600 E8500/E8501 Hub Interface 1.5
2601 E8500/E8501 PCI Express x4 Port D
2602 E8500/E8501 PCI Express x4 Port C0
@@ -11070,7 +11594,7 @@
2609 E8500/E8501 PCI Express x8 Port B
260a E8500/E8501 PCI Express x8 Port A
260c E8500/E8501 IMI Registers
- 2610 E8500/E8501 Front Side Bus, Boot, and Interrupt Registers
+ 2610 E8500/E8501 FSB Registers
2611 E8500/E8501 Address Mapping Registers
2612 E8500/E8501 RAS Registers
2613 E8500/E8501 Reserved Registers
@@ -11141,12 +11665,15 @@
1458 5006 GA-8I915ME-G Mainboard
1462 7028 915P/G Neo2
1734 105c Scenic W620
+ 8086 265c Dimension 3100
2660 82801FB/FBM/FR/FW/FRW (ICH6 Family) PCI Express Port 1
103c 099c NX6110/NC6120
2662 82801FB/FBM/FR/FW/FRW (ICH6 Family) PCI Express Port 2
2664 82801FB/FBM/FR/FW/FRW (ICH6 Family) PCI Express Port 3
2666 82801FB/FBM/FR/FW/FRW (ICH6 Family) PCI Express Port 4
2668 82801FB/FBM/FR/FW/FRW (ICH6 Family) High Definition Audio Controller
+# based on the PTGD1-LA motherboard
+ 103c 2a09 PufferM-UL8E
1043 814e P5GD1-VW Mainboard
266a 82801FB/FBM/FR/FW/FRW (ICH6 Family) SMBus Controller
1028 0179 Optiplex GX280
@@ -11175,161 +11702,208 @@
1458 266f GA-8I915ME-G Mainboard
1462 7028 915P/G Neo2
1734 105c Scenic W620
- 2670 Enterprise Southbridge LPC
- 2680 Enterprise Southbridge SATA IDE
- 2681 Enterprise Southbridge SATA AHCI
- 2682 Enterprise Southbridge SATA RAID
- 2683 Enterprise Southbridge SATA RAID
- 2688 Enterprise Southbridge UHCI USB #1
- 2689 Enterprise Southbridge UHCI USB #2
- 268a Enterprise Southbridge UHCI USB #3
- 268b Enterprise Southbridge UHCI USB #4
- 268c Enterprise Southbridge EHCI USB
- 2690 Enterprise Southbridge PCI Express Root Port 1
- 2692 Enterprise Southbridge PCI Express Root Port 2
- 2694 Enterprise Southbridge PCI Express Root Port 3
- 2696 Enterprise Southbridge PCI Express Root Port 4
- 2698 Enterprise Southbridge AC '97 Audio
- 2699 Enterprise Southbridge AC '97 Modem
- 269a Enterprise Southbridge High Definition Audio
- 269b Enterprise Southbridge SMBus
- 269e Enterprise Southbridge PATA
- 2770 945G/GZ/P/PL Express Memory Controller Hub
+ 2670 631xESB/632xESB/3100 Chipset LPC Interface Controller
+ 2680 631xESB/632xESB/3100 Chipset SATA Storage Controller IDE
+ 2681 631xESB/632xESB SATA Storage Controller AHCI
+ 2682 631xESB/632xESB SATA Storage Controller RAID
+ 2683 631xESB/632xESB SATA Storage Controller RAID
+ 2688 631xESB/632xESB/3100 Chipset UHCI USB Controller #1
+ 2689 631xESB/632xESB/3100 Chipset UHCI USB Controller #2
+ 268a 631xESB/632xESB/3100 Chipset UHCI USB Controller #3
+ 268b 631xESB/632xESB/3100 Chipset UHCI USB Controller #4
+ 268c 631xESB/632xESB/3100 Chipset EHCI USB2 Controller
+ 2690 631xESB/632xESB/3100 Chipset PCI Express Root Port 1
+ 2692 631xESB/632xESB/3100 Chipset PCI Express Root Port 2
+ 2694 631xESB/632xESB/3100 Chipset PCI Express Root Port 3
+ 2696 631xESB/632xESB/3100 Chipset PCI Express Root Port 4
+ 2698 631xESB/632xESB AC '97 Audio Controller
+ 2699 631xESB/632xESB AC '97 Modem Controller
+ 269a 631xESB/632xESB High Definition Audio Controller
+ 269b 631xESB/632xESB/3100 Chipset SMBus Controller
+ 269e 631xESB/632xESB IDE Controller
+ 2770 82945G/GZ/P/PL Memory Controller Hub
+ 107b 5048 E4500
8086 544e DeskTop Board D945GTP
- 2771 945G/GZ/P/PL Express PCI Express Root Port
- 2772 945G/GZ Express Integrated Graphics Controller
+ 2771 82945G/GZ/P/PL PCI Express Root Port
+ 2772 82945G/GZ Integrated Graphics Controller
8086 544e DeskTop Board D945GTP
- 2774 955X Express Memory Controller Hub
- 2775 955X Express PCI Express Root Port
- 2776 945G/GZ Express Integrated Graphics Controller
- 2778 E7230 Memory Controller Hub
- 2779 E7230 PCI Express Root Port
- 277a 975X Express PCI Express Root Port
- 277c 975X Express Memory Controller Hub
- 277d 975X Express PCI Express Root Port
- 2782 82915G Express Chipset Family Graphics Controller
+ 2774 82955X Memory Controller Hub
+ 2775 82955X PCI Express Root Port
+ 2776 82945G/GZ Integrated Graphics Controller
+ 2778 E7230/3000/3010 Memory Controller Hub
+ 2779 E7230/3000/3010 PCI Express Root Port
+ 277a 82975X/3010 PCI Express Root Port
+ 277c 82975X Memory Controller Hub
+ 277d 82975X PCI Express Root Port
+ 2782 82915G Integrated Graphics Controller
1043 2582 P5GD1-VW Mainboard
1734 105b Scenic W620
2792 Mobile 915GM/GMS/910GML Express Graphics Controller
103c 099c NX6110/NC6120
1043 1881 GMA 900 915GM Integrated Graphics
27a0 Mobile 945GM/PM/GMS/940GML and 945GT Express Memory Controller Hub
+ 17aa 2017 Thinkpad R60e model 0657
27a1 Mobile 945GM/PM/GMS/940GML and 945GT Express PCI Express Root Port
27a2 Mobile 945GM/GMS/940GML Express Integrated Graphics Controller
+ 17aa 201a Thinkpad R60e model 0657
27a6 Mobile 945GM/GMS/940GML Express Integrated Graphics Controller
+ 17aa 201a Thinkpad R60e model 0657
27b0 82801GH (ICH7DH) LPC Interface Bridge
27b8 82801GB/GR (ICH7 Family) LPC Interface Bridge
+ 107b 5048 E4500
8086 544e DeskTop Board D945GTP
27b9 82801GBM (ICH7-M) LPC Interface Bridge
+ 10f7 8338 Panasonic CF-Y5 laptop
+ 17aa 2009 ThinkPad T60/R60 series
27bd 82801GHM (ICH7-M DH) LPC Interface Bridge
27c0 82801GB/GR/GH (ICH7 Family) Serial ATA Storage Controller IDE
+ 107b 5048 E4500
8086 544e DeskTop Board D945GTP
27c1 82801GR/GH (ICH7 Family) Serial ATA Storage Controller AHCI
27c3 82801GR/GH (ICH7 Family) Serial ATA Storage Controller RAID
27c4 82801GBM/GHM (ICH7 Family) Serial ATA Storage Controller IDE
27c5 82801GBM/GHM (ICH7 Family) Serial ATA Storage Controller AHCI
+ 17aa 200d Thinkpad R60e model 0657
27c6 82801GHM (ICH7-M DH) Serial ATA Storage Controller RAID
27c8 82801G (ICH7 Family) USB UHCI #1
+ 107b 5048 E4500
+ 17aa 200a ThinkPad T60/R60 series
8086 544e DeskTop Board D945GTP
27c9 82801G (ICH7 Family) USB UHCI #2
+ 107b 5048 E4500
+ 17aa 200a ThinkPad T60/R60 series
8086 544e DeskTop Board D945GTP
27ca 82801G (ICH7 Family) USB UHCI #3
+ 107b 5048 E4500
+ 17aa 200a ThinkPad T60/R60 series
8086 544e DeskTop Board D945GTP
27cb 82801G (ICH7 Family) USB UHCI #4
+ 107b 5048 E4500
+ 17aa 200a ThinkPad T60/R60 series
8086 544e DeskTop Board D945GTP
27cc 82801G (ICH7 Family) USB2 EHCI Controller
+ 17aa 200b ThinkPad T60/R60 series
8086 544e DeskTop Board D945GTP
27d0 82801G (ICH7 Family) PCI Express Port 1
27d2 82801G (ICH7 Family) PCI Express Port 2
27d4 82801G (ICH7 Family) PCI Express Port 3
27d6 82801G (ICH7 Family) PCI Express Port 4
27d8 82801G (ICH7 Family) High Definition Audio Controller
+ 107b 5048 E4500
+ 10f7 8338 Panasonic CF-Y5 laptop
+ 1179 ff31 Toshiba America Information Systems:AC97 Data Fax SoftModem with SmartCP
+ 152d 0753 Softmodem
+ 17aa 2010 ThinkPad T60/R60 series
27da 82801G (ICH7 Family) SMBus Controller
+ 10f7 8338 Panasonic CF-Y5 laptop
+ 17aa 200f ThinkPad T60/R60 series
8086 544e DeskTop Board D945GTP
27dc 82801G (ICH7 Family) LAN Controller
8086 308d DeskTop Board D945GTP
27dd 82801G (ICH7 Family) AC'97 Modem Controller
27de 82801G (ICH7 Family) AC'97 Audio Controller
27df 82801G (ICH7 Family) IDE Controller
+ 107b 5048 E4500
+ 10f7 8338 Panasonic CF-Y5 laptop
+ 17aa 200c Thinkpad R60e model 0657
8086 544e DeskTop Board D945GTP
27e0 82801GR/GH/GHM (ICH7 Family) PCI Express Port 5
27e2 82801GR/GH/GHM (ICH7 Family) PCI Express Port 6
- 2810 LPC Interface Controller
+ 2810 82801HB/HR (ICH8/R) LPC Interface Controller
2811 Mobile LPC Interface Controller
- 2812 LPC Interface Controller
- 2814 LPC Interface Controller
+ 2812 82801HH (ICH8DH) LPC Interface Controller
+ 2814 82801HO (ICH8DO) LPC Interface Controller
2815 Mobile LPC Interface Controller
- 2820 SATA Controller 1 IDE
- 2821 SATA Controller AHCI
- 2822 SATA Controller RAID
- 2824 SATA Controller AHCI
- 2825 SATA Controller 2 IDE
- 2828 Mobile SATA Controller IDE
- 2829 Mobile SATA Controller AHCI
- 282a Mobile SATA Controller RAID
- 2830 USB UHCI Controller #1
- 2831 USB UHCI Controller #2
- 2832 USB UHCI Controller #3
- 2834 USB UHCI Controller #4
- 2835 USB UHCI Controller #5
- 2836 USB2 EHCI Controller #1
- 283a USB2 EHCI Controller #2
- 283e SMBus Controller
- 283f PCI Express Port 1
- 2841 PCI Express Port 2
- 2843 PCI Express Port 3
- 2845 PCI Express Port 4
- 2847 PCI Express Port 5
- 2849 PCI Express Port 6
- 284b HD Audio Controller
- 284f Thermal Subsystem
+ 2820 82801H (ICH8 Family) 4 port SATA IDE Controller
+ 1462 7235 P965 Neo MS-7235 mainboard
+ 2821 82801HR/HO/HH (ICH8R/DO/DH) 6 port SATA AHCI Controller
+ 2822 82801HR/HO/HH (ICH8R/DO/DH) SATA RAID Controller
+ 2824 82801HB (ICH8) 4 port SATA AHCI Controller
+ 2825 82801H (ICH8 Family) 2 port SATA IDE Controller
+ 1462 7235 P965 Neo MS-7235 mainboard
+ 2828 Mobile SATA IDE Controller
+ 2829 Mobile SATA AHCI Controller
+ 282a Mobile SATA RAID Controller
+ 2830 82801H (ICH8 Family) USB UHCI #1
+ 1462 7235 P965 Neo MS-7235 mainboard
+ 2831 82801H (ICH8 Family) USB UHCI #2
+ 1462 7235 P965 Neo MS-7235 mainboard
+ 2832 82801H (ICH8 Family) USB UHCI #3
+ 2834 82801H (ICH8 Family) USB UHCI #4
+ 1462 7235 P965 Neo MS-7235 mainboard
+ 2835 82801H (ICH8 Family) USB UHCI #5
+ 2836 82801H (ICH8 Family) USB2 EHCI #1
+ 1462 7235 P965 Neo MS-7235 mainboard
+ 283a 82801H (ICH8 Family) USB2 EHCI #2
+ 283e 82801H (ICH8 Family) SMBus Controller
+ 1462 7235 P965 Neo MS-7235 mainboard
+ 283f 82801H (ICH8 Family) PCI Express Port 1
+ 2841 82801H (ICH8 Family) PCI Express Port 2
+ 2843 82801H (ICH8 Family) PCI Express Port 3
+ 2845 82801H (ICH8 Family) PCI Express Port 4
+ 2847 82801H (ICH8 Family) PCI Express Port 5
+ 2849 82801H (ICH8 Family) PCI Express Port 6
+ 284b 82801H (ICH8 Family) HD Audio Controller
+ 284f 82801H (ICH8 Family) Thermal Reporting Device
2850 Mobile IDE Controller
- 2970 Memory Controller Hub
- 2971 PCI Express Root Port
- 2972 Integrated Graphics Controller
- 2973 Integrated Graphics Controller
- 2974 HECI Controller
- 2976 PT IDER Controller
- 2977 KT Controller
- 2990 Memory Controller Hub
- 2991 PCI Express Root Port
- 2992 Integrated Graphics Controller
- 2993 Integrated Graphics Controller
- 2994 HECI Controller
- 2995 HECI Controller
- 2996 PT IDER Controller
- 2997 KT Controller
- 29a0 Memory Controller Hub
- 29a1 PCI Express Root Port
- 29a2 Integrated Graphics Controller
- 29a3 Integrated Graphics Controller
- 29a4 HECI Controller
- 29a5 HECI Controller
- 29a6 PT IDER Controller
- 29a7 KT Controller
+ 2970 82946GZ/PL/GL Memory Controller Hub
+ 2971 82946GZ/PL/GL PCI Express Root Port
+ 2972 82946GZ/GL Integrated Graphics Controller
+ 2973 82946GZ/GL Integrated Graphics Controller
+ 2974 82946GZ/GL HECI Controller
+ 2975 82946GZ/GL HECI Controller
+ 2976 82946GZ/GL PT IDER Controller
+ 2977 82946GZ/GL KT Controller
+ 2980 965 G1 Memory Controller Hub
+ 2981 965 G1 PCI Express Root Port
+ 2982 965 G1 Integrated Graphics Controller
+ 2990 82Q963/Q965 Memory Controller Hub
+ 2991 82Q963/Q965 PCI Express Root Port
+ 2992 82Q963/Q965 Integrated Graphics Controller
+ 2993 82Q963/Q965 Integrated Graphics Controller
+ 2994 82Q963/Q965 HECI Controller
+ 2995 82Q963/Q965 HECI Controller
+ 2996 82Q963/Q965 PT IDER Controller
+ 2997 82Q963/Q965 KT Controller
+ 29a0 82P965/G965 Memory Controller Hub
+ 29a1 82P965/G965 PCI Express Root Port
+ 29a2 82G965 Integrated Graphics Controller
+ 29a3 82G965 Integrated Graphics Controller
+ 29a4 82P965/G965 HECI Controller
+ 29a5 82P965/G965 HECI Controller
+ 29a6 82P965/G965 PT IDER Controller
+ 29a7 82P965/G965 KT Controller
2a00 Mobile Memory Controller Hub
2a01 Mobile PCI Express Root Port
2a02 Mobile Integrated Graphics Controller
2a03 Mobile Integrated Graphics Controller
+ 2a04 Mobile HECI Controller
+ 2a05 Mobile HECI Controller
+ 2a06 Mobile PT IDER Controller
+ 2a07 Mobile KT Controller
3092 Integrated RAID
3200 GD31244 PCI-X SATA HBA
+ 1775 c200 C2K onboard SATA host bus adapter
3340 82855PM Processor to I/O Controller
1025 005a TravelMate 290
103c 088c NC8000 laptop
103c 0890 NC6000 laptop
+ 103c 08b0 tc1100 tablet
+ 144d c00c P30 notebook
3341 82855PM Processor to AGP Controller
- 3500 Enterprise Southbridge PCI Express Upstream Port
- 3501 Enterprise Southbridge PCI Express Upstream Port
- 3504 Enterprise Southbridge IOxAPIC
- 3505 Enterprise Southbridge IOxAPIC
- 350c Enterprise Southbridge PCI Express to PCI-X Bridge
- 350d Enterprise Southbridge PCI Express to PCI-X Bridge
- 3510 Enterprise Southbridge PCI Express Downstream Port E1
- 3511 Enterprise Southbridge PCI Express Downstream Port E1
- 3514 Enterprise Southbridge PCI Express Downstream Port E2
- 3515 Enterprise Southbridge PCI Express Downstream Port E2
- 3518 Enterprise Southbridge PCI Express Downstream Port E3
- 3519 Enterprise Southbridge PCI Express Downstream Port E3
+ 144d c00c P30 notebook
+ 3500 6311ESB/6321ESB PCI Express Upstream Port
+ 3501 6310ESB PCI Express Upstream Port
+ 3504 6311ESB/6321ESB I/OxAPIC Interrupt Controller
+ 3505 6310ESB I/OxAPIC Interrupt Controller
+ 350c 6311ESB/6321ESB PCI Express to PCI-X Bridge
+ 350d 6310ESB PCI Express to PCI-X Bridge
+ 3510 6311ESB/6321ESB PCI Express Downstream Port E1
+ 3511 6310ESB PCI Express Downstream Port E1
+ 3514 6311ESB/6321ESB PCI Express Downstream Port E2
+ 3515 6310ESB PCI Express Downstream Port E2
+ 3518 6311ESB/6321ESB PCI Express Downstream Port E3
+ 3519 6310ESB PCI Express Downstream Port E3
3575 82830 830 Chipset Host Bridge
0e11 0030 Evo N600c
1014 021d ThinkPad A/T/X Series
@@ -11339,31 +11913,43 @@
1014 0513 ThinkPad A/T/X Series
3578 82830 830 Chipset Host Bridge
3580 82852/82855 GM/GME/PM/GMV Processor to I/O Controller
+ 1014 055c Thinkpad R50e model 1634
1028 0139 Latitude D400
1028 0163 Latitude D505
1028 0196 Inspiron 5160
1734 1055 Amilo M1420
+ 1775 10d0 V5D Single Board Computer
+ 1775 ce90 CE9
4c53 10b0 CL9 mainboard
4c53 10e0 PSL09 PrPMC
3581 82852/82855 GM/GME/PM/GMV Processor to AGP Controller
1734 1055 Amilo M1420
3582 82852/855GM Integrated Graphics Device
+ 1014 0562 Thinkpad R50e model 1634
1028 0139 Latitude D400
1028 0163 Latitude D505
+ 1775 10d0 V5D Single Board Computer VGA
+ 1775 ce90 CE9
4c53 10b0 CL9 mainboard
4c53 10e0 PSL09 PrPMC
3584 82852/82855 GM/GME/PM/GMV Processor to I/O Controller
+ 1014 055d Thinkpad R50e model 1634
1028 0139 Latitude D400
1028 0163 Latitude D505
1028 0196 Inspiron 5160
1734 1055 Amilo M1420
+ 1775 10d0 V5D Single Board Computer
+ 1775 ce90 CE9
4c53 10b0 CL9 mainboard
4c53 10e0 PSL09 PrPMC
3585 82852/82855 GM/GME/PM/GMV Processor to I/O Controller
+ 1014 055e Thinkpad R50e model 1634
1028 0139 Latitude D400
1028 0163 Latitude D505
1028 0196 Inspiron 5160
1734 1055 Amilo M1420
+ 1775 10d0 V5D Single Board Computer
+ 1775 ce90 CE9
4c53 10b0 CL9 mainboard
4c53 10e0 PSL09 PrPMC
3590 E7520 Memory Controller Hub
@@ -11386,6 +11972,12 @@
359b E7525/E7520/E7320 Extended Configuration Registers
359e E7525 Memory Controller Hub
1028 0169 Precision 470
+ 35b0 3100 Chipset Memory I/O Controller Hub
+ 35b1 3100 DRAM Controller Error Reporting Registers
+ 35b5 3100 Chipset Enhanced DMA Controller
+ 35b6 3100 Chipset PCI Express Port A
+ 35b7 3100 Chipset PCI Express Port A1
+ 35c8 3100 Extended Configuration Test Overflow Registers
4220 PRO/Wireless 2200BG Network Connection
4222 PRO/Wireless 3945ABG Network Connection
8086 1005 PRO/Wireless 3945BG Network Connection
@@ -11395,8 +11987,9 @@
1351 103c Compaq NC6220
4224 PRO/Wireless 2915ABG Network Connection
4227 PRO/Wireless 3945ABG Network Connection
- 8086 1011 Thinkpad X60s
+ 8086 1011 Thinkpad X60s, R60e model 0657
8086 1014 PRO/Wireless 3945BG Network Connection
+ 5001 Pro/DSL 2100 Modem
5200 EtherExpress PRO/100 Intelligent Server
5201 EtherExpress PRO/100 Intelligent Server
8086 0001 EtherExpress PRO/100 Server Ethernet Adapter
@@ -11487,7 +12080,7 @@
84e4 460GX - 84460GX Memory Data Controller (MDC)
84e6 460GX - 82466GX Wide and fast PCI eXpander Bridge (WXB)
84ea 460GX - 84460GX AGP Bridge (GXB function 1)
- 8500 IXP4XX Intel Network Processor (IXP420/421/422/425/IXC1100)
+ 8500 IXP4XX Network Processor (IXP420/421/422/425/IXC1100)
1993 0ded mGuard-PCI AV#2
1993 0dee mGuard-PCI AV#1
1993 0def mGuard-PCI AV#0
@@ -11503,11 +12096,15 @@
# observed, and documented in Intel revision note; new mask of 1011:0026
b154 21154 PCI-to-PCI Bridge
b555 21555 Non transparent PCI-to-PCI Bridge
+ 12c7 5005 SS7HD PCI Adaptor Card
+ 12c7 5006 SS7HDC cPCI Adaptor Card
12d9 000a PCI VoIP Gateway
4c53 1050 CT7 mainboard
4c53 1051 CE7 mainboard
e4bf 1000 CC8-1-BLUES
8401 TRENDware International Inc.
+8686 ScaleMP
+ 1010 vSMPowered system controller [vSMP CTL]
8800 Trigem Computer Inc.
2008 Video assistent component
8866 T-Square Design Inc.
@@ -11718,7 +12315,11 @@
9005 0298 ASR-4000SAS
9005 0299 ASR-4800SAS
9005 029a 4805SAS
+ 9005 02b5 ASR5800
+ 9005 02b6 ASR5805
+ 9005 02b7 ASR5808
0286 AAC-RAID (Rocket)
+ 1014 034d 8s
1014 9540 ServeRAID 8k/8k-l4
1014 9580 ServeRAID 8k/8k-l8
9005 028c ASR-2230S + ASR-2230SLP PCI-X (Lancer)
@@ -11732,14 +12333,32 @@
9005 02a1 ICP ICP9087MA
9005 02a2 3800SAS
9005 02a3 ICP ICP5445AU
- 9005 02a4 ICP ICP5085LI
+ 9005 02a4 ICP ICP9085LI
9005 02a5 ICP ICP5085BR
9005 02a6 ICP9067MA
- 9005 02a7 AAR-2830SA
- 9005 02a8 AAR-2430SA
- 9005 02a9 ICP5087AU
- 9005 02aa ICP5047AU
+ 9005 02a7 3805SAS
+ 9005 02a8 3400SAS
+ 9005 02a9 ICP ICP5085AU
+ 9005 02aa ICP ICP5045AU
+ 9005 02ac 1800SAS
+ 9005 02b3 ASR-2400SAS
+ 9005 02b4 ICP ICP5045AL
9005 0800 Callisto
+ 0410 AIC-9410W SAS (Razor HBA RAID)
+ 9005 0410 ASC-48300(Spirit RAID)
+ 9005 0411 ASC-58300 (Oakmont RAID)
+ 0412 AIC-9410W SAS (Razor HBA non-RAID)
+ 9005 0412 ASC-48300 (Spirit non-RAID)
+ 9005 0413 ASC-58300 (Oakmont non-RAID)
+ 041e AIC-9410W SAS (Razor ASIC non-RAID)
+ 041f AIC-9410W SAS (Razor ASIC RAID)
+ 9005 041f AIC-9410W SAS (Razor ASIC RAID)
+ 0430 AIC-9405W SAS (Razor-Lite HBA RAID)
+ 9005 0430 ASC-44300 (Spirit-Lite RAID)
+ 0432 AIC-9405W SAS (Razor-Lite HBA non-RAID)
+ 9005 0432 ASC-44300 (Spirit-Lite non-RAID)
+ 043e AIC-9405W SAS (Razor-Lite ASIC non-RAID)
+ 043f AIC-9405W SAS (Razor-Lite ASIC RAID)
0500 Obsidian chipset SCSI controller
1014 02c1 PCI-X DDR 3Gb SAS Adapter (572A/572C)
1014 02c2 PCI-X DDR 3Gb SAS RAID Adapter (572B/572D)
@@ -11817,7 +12436,10 @@ ac3d Actuality Systems
aecb Adrienne Electronics Corporation
6250 VITC/LTC Timecode Reader card [PCI-VLTC/RDR]
affe Sirrix AG security technologies
+ 02e1 PCI2E1 2-port ISDN E1 interface
dead Sirrix.PCI4S0 4-port ISDN S0 interface
+# Not registered officially
+b10b Uakron PCI Project
b1b3 Shiva Europe Limited
# Pinnacle should be 11bd, but they got it wrong several times --mj
bd11 Pinnacle Systems, Inc. (Wrong ID)
@@ -11829,6 +12451,7 @@ ca50 Varian Australia Pty Ltd
cafe Chrysalis-ITS
0003 Luna K3 Hardware Security Module
cccc Catapult Communications
+ccec Curtiss-Wright Controls Embedded Computing
cddd Tyzx, Inc.
0101 DeepSea 1 High Speed Stereo Vision Frame Grabber
0200 DeepSea 2 High Speed Stereo Vision Frame Grabber
@@ -11859,7 +12482,6 @@ e159 Tiger Jet Network Inc.
8086 0003 Digium X100P/X101P analogue PSTN FXO interface
0002 Tiger100APC ISDN chipset
e4bf EKF Elektronik GmbH
-# Innovative and scalable network IC vendor
e55e Essence Technology, Inc.
ea01 Eagle Technology
000a PCI-773 Temperature Card
diff --git a/hw/xfree86/scanpci/pciid2c.pl b/hw/xfree86/scanpci/pciid2c.pl
index db6b1a975..b8947ed05 100644
--- a/hw/xfree86/scanpci/pciid2c.pl
+++ b/hw/xfree86/scanpci/pciid2c.pl
@@ -135,8 +135,7 @@ if ($infofile) {
# Print out header information.
$proj = "XdotOrg";
-print "/* \$$proj\$ */
-
+print "
/*
* THIS FILE IS AUTOMATICALLY GENERATED -- DO NOT EDIT
*
diff --git a/hw/xfree86/scanpci/xf86PciData.h b/hw/xfree86/scanpci/xf86PciData.h
index 7cc81b755..5f92a7d03 100644
--- a/hw/xfree86/scanpci/xf86PciData.h
+++ b/hw/xfree86/scanpci/xf86PciData.h
@@ -1,4 +1,3 @@
-/* $XFree86: xc/programs/Xserver/hw/xfree86/scanpci/xf86PciData.h,v 1.3 2003/08/24 17:37:10 dawes Exp $ */
/*
* Copyright (c) 2000-2002 by The XFree86 Project, Inc.
diff --git a/hw/xfree86/scanpci/xf86PciStdIds.h b/hw/xfree86/scanpci/xf86PciStdIds.h
index 178b9aaa0..0cf8d4e55 100644
--- a/hw/xfree86/scanpci/xf86PciStdIds.h
+++ b/hw/xfree86/scanpci/xf86PciStdIds.h
@@ -1,4 +1,3 @@
-/* $XdotOrg: xserver/xorg/hw/xfree86/scanpci/xf86PciStdIds.h,v 1.10 2006/01/27 12:27:34 alanh Exp $ */
/*
* THIS FILE IS AUTOMATICALLY GENERATED -- DO NOT EDIT
@@ -95,15 +94,23 @@ static const char pci_device_045e_006e[] = "MN-510 802.11b wireless USB paddle";
static const char pci_device_045e_00c2[] = "MN-710 wireless USB paddle";
#endif
#ifdef VENDOR_INCLUDE_NONVIDEO
+static const char pci_vendor_0482[] = "Kyocera";
+#endif
+#ifdef VENDOR_INCLUDE_NONVIDEO
static const char pci_vendor_04cf[] = "Myson Century, Inc";
static const char pci_device_04cf_8818[] = "CS8818 USB2.0-to-ATAPI Bridge Controller with Embedded PHY";
#endif
#ifdef VENDOR_INCLUDE_NONVIDEO
static const char pci_vendor_050d[] = "Belkin";
+static const char pci_device_050d_001a[] = "FSD7000 802.11g PCI Wireless card";
static const char pci_device_050d_0109[] = "F5U409-CU USB/Serial Portable Adapter";
static const char pci_device_050d_7050[] = "F5D7050 802.11g Wireless USB Adapter";
#endif
#ifdef VENDOR_INCLUDE_NONVIDEO
+static const char pci_vendor_05a9[] = "OmniVision";
+static const char pci_device_05a9_8519[] = "OV519 series";
+#endif
+#ifdef VENDOR_INCLUDE_NONVIDEO
static const char pci_vendor_05e3[] = "CyberDoor";
static const char pci_device_05e3_0701[] = "CBD516";
#endif
@@ -121,6 +128,7 @@ static const char pci_device_0675_1704[] = "ISDN Adapter (PCI Bus, D, C)";
#endif
#ifdef VENDOR_INCLUDE_NONVIDEO
static const char pci_vendor_067b[] = "Prolific Technology, Inc.";
+static const char pci_device_067b_2303[] = "PL-2303 USB-to-Serial Converter";
static const char pci_device_067b_3507[] = "PL-3507 Hi-Speed USB & IEEE 1394 Combo to IDE Bridge Controller";
#endif
#ifdef VENDOR_INCLUDE_NONVIDEO
@@ -133,6 +141,9 @@ static const char pci_vendor_07e2[] = "ELMEG Communication Systems GmbH";
static const char pci_vendor_0925[] = "VIA Technologies, Inc. (Wrong ID)";
#endif
#ifdef VENDOR_INCLUDE_NONVIDEO
+static const char pci_vendor_093a[] = "PixArt Imaging Inc.";
+#endif
+#ifdef VENDOR_INCLUDE_NONVIDEO
static const char pci_vendor_09c1[] = "Arris";
static const char pci_device_09c1_0704[] = "CM 200E Cable Modem";
#endif
@@ -147,11 +158,17 @@ static const char pci_device_0b0b_0305[] = "Rhino R4T1";
static const char pci_device_0b0b_0405[] = "Rhino R8FXX";
static const char pci_device_0b0b_0505[] = "Rhino R24FXX";
static const char pci_device_0b0b_0506[] = "Rhino R2T1";
+static const char pci_device_0b0b_0605[] = "Rhino R2T1";
+static const char pci_device_0b0b_0705[] = "Rhino R24FXS";
#endif
#ifdef VENDOR_INCLUDE_NONVIDEO
static const char pci_vendor_0b49[] = "ASCII Corporation";
static const char pci_device_0b49_064f[] = "Trance Vibrator";
#endif
+#ifdef VENDOR_INCLUDE_NONVIDEO
+static const char pci_vendor_0ccd[] = "TerraTec Electronic GmbH";
+static const char pci_device_0ccd_0038[] = "Cinergy T^2 DVB-T Receiver";
+#endif
static const char pci_vendor_0e11[] = "Compaq Computer Corporation";
static const char pci_device_0e11_0001[] = "PCI to EISA Bridge";
static const char pci_device_0e11_0002[] = "PCI to ISA Bridge";
@@ -293,6 +310,9 @@ static const char pci_vendor_0e21[] = "Cowon Systems, Inc.";
static const char pci_vendor_0e55[] = "HaSoTec GmbH";
#endif
#ifdef VENDOR_INCLUDE_NONVIDEO
+static const char pci_vendor_0eac[] = "SHF Communication Technologies AG";
+#endif
+#ifdef VENDOR_INCLUDE_NONVIDEO
static const char pci_vendor_1000[] = "LSI Logic / Symbios Logic";
static const char pci_device_1000_0001[] = "53c810";
#ifdef INIT_SUBSYS_INFO
@@ -310,6 +330,11 @@ static const char pci_device_1000_0006[] = "53c860";
static const char pci_subsys_1000_0006_1000_1000[] = "LSI53C860E PCI to Ultra SCSI I/O Processor";
#endif
static const char pci_device_1000_000a[] = "53c1510";
+#endif
+#ifdef INIT_SUBSYS_INFO
+static const char pci_subsys_1000_000a_0e11_b143[] = "Integrated Dual Channel Wide Ultra2 SCSI Controller";
+#endif
+#ifdef VENDOR_INCLUDE_NONVIDEO
#ifdef INIT_SUBSYS_INFO
static const char pci_subsys_1000_000a_1000_1000[] = "LSI53C1510 PCI to Dual Channel Wide Ultra2 SCSI Controller (Nonintelligent mode)";
#endif
@@ -329,7 +354,7 @@ static const char pci_subsys_1000_000b_1000_1010[] = "LSI22910 PCI to Dual Chann
static const char pci_subsys_1000_000b_1000_1020[] = "LSI21002 PCI to Dual Channel Ultra2 SCSI host adapter";
#endif
#ifdef INIT_SUBSYS_INFO
-static const char pci_subsys_1000_000b_13e9_1000[] = "6221L-4U";
+static const char pci_subsys_1000_000b_13e9_1000[] = "6221L-4U (Dual U2W SCSI, dual 10/100TX, graphics)";
#endif
static const char pci_device_1000_000c[] = "53c895";
#ifdef INIT_SUBSYS_INFO
@@ -366,6 +391,12 @@ static const char pci_subsys_1000_000f_1092_8760[] = "FirePort 40 Dual SCSI Cont
#endif
#ifdef VENDOR_INCLUDE_NONVIDEO
#ifdef INIT_SUBSYS_INFO
+static const char pci_subsys_1000_000f_1775_10d0[] = "V5D Single Board Computer Wide Ultra SCSI";
+#endif
+#ifdef INIT_SUBSYS_INFO
+static const char pci_subsys_1000_000f_1775_10d1[] = "V5D Single Board Computer Ultra SCSI";
+#endif
+#ifdef INIT_SUBSYS_INFO
static const char pci_subsys_1000_000f_1de1_3904[] = "DC390F/U Ultra Wide SCSI Adapter";
#endif
#ifdef INIT_SUBSYS_INFO
@@ -401,6 +432,9 @@ static const char pci_device_1000_0020[] = "53c1010 Ultra3 SCSI Adapter";
static const char pci_subsys_1000_0020_1000_1000[] = "LSI53C1010-33 PCI to Dual Channel Ultra160 SCSI Controller";
#endif
#ifdef INIT_SUBSYS_INFO
+static const char pci_subsys_1000_0020_107b_1040[] = "Server Onboard 53C1010-33";
+#endif
+#ifdef INIT_SUBSYS_INFO
static const char pci_subsys_1000_0020_1de1_1020[] = "DC-390U3W";
#endif
static const char pci_device_1000_0021[] = "53c1010 66MHz Ultra3 SCSI Adapter";
@@ -410,6 +444,16 @@ static const char pci_subsys_1000_0021_1000_1000[] = "LSI53C1000/1000R/1010R/101
#ifdef INIT_SUBSYS_INFO
static const char pci_subsys_1000_0021_1000_1010[] = "Asus TR-DLS onboard 53C1010-66";
#endif
+#endif
+#ifdef INIT_SUBSYS_INFO
+static const char pci_subsys_1000_0021_103c_1330[] = "Ultra160 SCSI [A7059A]";
+#endif
+#ifdef VENDOR_INCLUDE_NONVIDEO
+#endif
+#ifdef INIT_SUBSYS_INFO
+static const char pci_subsys_1000_0021_103c_1340[] = "Ultra160 SCSI [A7060A]";
+#endif
+#ifdef VENDOR_INCLUDE_NONVIDEO
#ifdef INIT_SUBSYS_INFO
static const char pci_subsys_1000_0021_124b_1070[] = "PMC-USCSI3";
#endif
@@ -453,6 +497,11 @@ static const char pci_subsys_1000_0030_1028_0183[] = "PowerEdge 1800";
static const char pci_subsys_1000_0030_1028_1010[] = "LSI U320 SCSI Controller";
#endif
#ifdef VENDOR_INCLUDE_NONVIDEO
+#endif
+#ifdef INIT_SUBSYS_INFO
+static const char pci_subsys_1000_0030_103c_12c5[] = "Ultra320 SCSI [A7173A]";
+#endif
+#ifdef VENDOR_INCLUDE_NONVIDEO
#ifdef INIT_SUBSYS_INFO
static const char pci_subsys_1000_0030_124b_1170[] = "PMC-USCSI320";
#endif
@@ -480,7 +529,27 @@ static const char pci_device_1000_0058[] = "SAS1068E PCI-Express Fusion-MPT SAS"
static const char pci_device_1000_005a[] = "SAS1066E PCI-Express Fusion-MPT SAS";
static const char pci_device_1000_005c[] = "SAS1064A PCI-X Fusion-MPT SAS";
static const char pci_device_1000_005e[] = "SAS1066 PCI-X Fusion-MPT SAS";
-static const char pci_device_1000_0060[] = "SAS1078 PCI-X Fusion-MPT SAS";
+static const char pci_device_1000_0060[] = "MegaRAID SAS 1078";
+#endif
+#ifdef INIT_SUBSYS_INFO
+static const char pci_subsys_1000_0060_1028_1f0a[] = "PERC 6/E Adapter RAID Controller";
+#endif
+#ifdef VENDOR_INCLUDE_NONVIDEO
+#endif
+#ifdef INIT_SUBSYS_INFO
+static const char pci_subsys_1000_0060_1028_1f0b[] = "PERC 6/i Adapter RAID Controller";
+#endif
+#ifdef VENDOR_INCLUDE_NONVIDEO
+#endif
+#ifdef INIT_SUBSYS_INFO
+static const char pci_subsys_1000_0060_1028_1f0c[] = "PERC 6/i Integrated RAID Controller";
+#endif
+#ifdef VENDOR_INCLUDE_NONVIDEO
+#endif
+#ifdef INIT_SUBSYS_INFO
+static const char pci_subsys_1000_0060_1028_1f0d[] = "PERC 6/i Enhanced RAID Controller";
+#endif
+#ifdef VENDOR_INCLUDE_NONVIDEO
static const char pci_device_1000_0062[] = "SAS1078 PCI-Express Fusion-MPT SAS";
#ifdef INIT_SUBSYS_INFO
static const char pci_subsys_1000_0062_1000_0062[] = "SAS1078 PCI-Express Fusion-MPT SAS";
@@ -578,6 +647,74 @@ static const char pci_subsys_1000_0409_8086_3431[] = "MegaRAID RAID Controller A
static const char pci_subsys_1000_0409_8086_3499[] = "MegaRAID RAID Controller Harwich SROMBU42E";
#endif
#ifdef VENDOR_INCLUDE_NONVIDEO
+static const char pci_device_1000_0411[] = "MegaRAID SAS";
+#ifdef INIT_SUBSYS_INFO
+static const char pci_subsys_1000_0411_1000_1001[] = "MegaRAID SAS 8408E";
+#endif
+#ifdef INIT_SUBSYS_INFO
+static const char pci_subsys_1000_0411_1000_1002[] = "MegaRAID SAS 8480E";
+#endif
+#ifdef INIT_SUBSYS_INFO
+static const char pci_subsys_1000_0411_1000_1003[] = "MegaRAID SAS 8344ELP";
+#endif
+#ifdef INIT_SUBSYS_INFO
+static const char pci_subsys_1000_0411_1000_1004[] = "MegaRAID SAS 8308ELP";
+#endif
+#ifdef INIT_SUBSYS_INFO
+static const char pci_subsys_1000_0411_1000_100c[] = "MegaRAID SATA 300-12E";
+#endif
+#ifdef INIT_SUBSYS_INFO
+static const char pci_subsys_1000_0411_1000_100d[] = "MegaRAID SATA 300-16E";
+#endif
+#ifdef INIT_SUBSYS_INFO
+static const char pci_subsys_1000_0411_1000_2004[] = "MegaRAID SATA 300-8ELP";
+#endif
+#ifdef INIT_SUBSYS_INFO
+static const char pci_subsys_1000_0411_1000_2005[] = "MegaRAID SATA 300-4ELP";
+#endif
+#endif
+#ifdef INIT_SUBSYS_INFO
+static const char pci_subsys_1000_0411_1033_8287[] = "MegaRAID SAS PCI Express ROMB";
+#endif
+#ifdef VENDOR_INCLUDE_NONVIDEO
+#ifdef INIT_SUBSYS_INFO
+static const char pci_subsys_1000_0411_1054_3016[] = "MegaRAID SAS RoMB Server";
+#endif
+#ifdef INIT_SUBSYS_INFO
+static const char pci_subsys_1000_0411_1734_1081[] = "MegaRAID SAS PCI Express ROMB";
+#endif
+#ifdef INIT_SUBSYS_INFO
+static const char pci_subsys_1000_0411_1734_10a3[] = "MegaRAID SAS PCI Express ROMB";
+#endif
+#endif
+#ifdef INIT_SUBSYS_INFO
+static const char pci_subsys_1000_0411_8086_1001[] = "SRCSAS18E RAID Controller";
+#endif
+#ifdef VENDOR_INCLUDE_NONVIDEO
+#endif
+#ifdef INIT_SUBSYS_INFO
+static const char pci_subsys_1000_0411_8086_1003[] = "SRCSAS144E RAID Controller";
+#endif
+#ifdef VENDOR_INCLUDE_NONVIDEO
+#endif
+#ifdef INIT_SUBSYS_INFO
+static const char pci_subsys_1000_0411_8086_3500[] = "SROMBSAS18E RAID Controller";
+#endif
+#ifdef VENDOR_INCLUDE_NONVIDEO
+#endif
+#ifdef INIT_SUBSYS_INFO
+static const char pci_subsys_1000_0411_8086_3501[] = "SROMBSAS18E RAID Controller";
+#endif
+#ifdef VENDOR_INCLUDE_NONVIDEO
+#endif
+#ifdef INIT_SUBSYS_INFO
+static const char pci_subsys_1000_0411_8086_3504[] = "SROMBSAS18E RAID Controller";
+#endif
+#ifdef VENDOR_INCLUDE_NONVIDEO
+static const char pci_device_1000_0413[] = "MegaRAID SAS Verde ZCR";
+#ifdef INIT_SUBSYS_INFO
+static const char pci_subsys_1000_0413_1000_1005[] = "MegaRAID SAS 8300XLP";
+#endif
static const char pci_device_1000_0621[] = "FC909 Fibre Channel Adapter";
static const char pci_device_1000_0622[] = "FC929 Fibre Channel Adapter";
#ifdef INIT_SUBSYS_INFO
@@ -742,6 +879,9 @@ static const char pci_subsys_1002_4152_1787_4002[] = "Radeon 9600 XT";
#endif
static const char pci_device_1002_4153[] = "RV350 AS [Radeon 9550]";
#ifdef INIT_SUBSYS_INFO
+static const char pci_subsys_1002_4153_1043_010c[] = "A9550GE/TD";
+#endif
+#ifdef INIT_SUBSYS_INFO
static const char pci_subsys_1002_4153_1462_932c[] = "865PE Neo2-V (MS-6788) mainboard";
#endif
static const char pci_device_1002_4154[] = "RV350 AT [Fire GL T2]";
@@ -798,7 +938,10 @@ static const char pci_subsys_1002_4172_174b_7c28[] = "Sapphire Radeon 9600XT (Se
#ifdef INIT_SUBSYS_INFO
static const char pci_subsys_1002_4172_1787_4003[] = "Radeon 9600 XT (Secondary)";
#endif
-static const char pci_device_1002_4173[] = "RV350 ? [Radeon 9550] (Secondary)";
+static const char pci_device_1002_4173[] = "RV350 AS [Radeon 9550] (Secondary)";
+#ifdef INIT_SUBSYS_INFO
+static const char pci_subsys_1002_4173_1043_010d[] = "A9550GE/TD (Secondary)";
+#endif
static const char pci_device_1002_4237[] = "Radeon 7000 IGP";
static const char pci_device_1002_4242[] = "R200 BB [Radeon All in Wonder 8500DV]";
#ifdef INIT_SUBSYS_INFO
@@ -1043,12 +1186,15 @@ static const char pci_subsys_1002_4752_1028_00d1[] = "PowerEdge 2550";
static const char pci_subsys_1002_4752_1028_00d9[] = "PowerEdge 2500";
#endif
#ifdef INIT_SUBSYS_INFO
-static const char pci_subsys_1002_4752_1028_0134[] = "Poweredge SC600";
+static const char pci_subsys_1002_4752_1028_0134[] = "PowerEdge 600SC";
#endif
#ifdef INIT_SUBSYS_INFO
static const char pci_subsys_1002_4752_103c_10e1[] = "NetServer Rage XL";
#endif
#ifdef INIT_SUBSYS_INFO
+static const char pci_subsys_1002_4752_107b_6400[] = "6400 Server";
+#endif
+#ifdef INIT_SUBSYS_INFO
static const char pci_subsys_1002_4752_1734_007a[] = "Primergy RX300";
#endif
#ifdef INIT_SUBSYS_INFO
@@ -1268,7 +1414,7 @@ static const char pci_subsys_1002_4c59_1509_1930[] = "Medion MD9703";
static const char pci_device_1002_4c5a[] = "Radeon Mobility M6 LZ";
static const char pci_device_1002_4c64[] = "Radeon R250 Ld [Radeon Mobility 9000 M9]";
static const char pci_device_1002_4c65[] = "Radeon R250 Le [Radeon Mobility 9000 M9]";
-static const char pci_device_1002_4c66[] = "Radeon R250 [Radeon Mobility 9200]";
+static const char pci_device_1002_4c66[] = "Radeon R250 [Mobility FireGL 9000]";
static const char pci_device_1002_4c67[] = "Radeon R250 Lg [Radeon Mobility 9000 M9]";
static const char pci_device_1002_4c6e[] = "Radeon R250 Ln [Radeon Mobility 9000 M9] [Secondary]";
static const char pci_device_1002_4d46[] = "Rage Mobility M4 AGP";
@@ -1537,6 +1683,9 @@ static const char pci_subsys_1002_5159_1014_02c8[] = "IBM eServer xSeries server
static const char pci_subsys_1002_5159_1028_019a[] = "PowerEdge SC1425";
#endif
#ifdef INIT_SUBSYS_INFO
+static const char pci_subsys_1002_5159_103c_1292[] = "Radeon 7000";
+#endif
+#ifdef INIT_SUBSYS_INFO
static const char pci_subsys_1002_5159_1458_4002[] = "RV100 QY [RADEON 7000 PRO MAYA AV Series]";
#endif
#ifdef INIT_SUBSYS_INFO
@@ -1554,6 +1703,9 @@ static const char pci_subsys_1002_5159_174b_7c28[] = "Sapphire Radeon VE 7000 DD
#ifdef INIT_SUBSYS_INFO
static const char pci_subsys_1002_5159_1787_0202[] = "RV100 QY [Excalibur Radeon 7000]";
#endif
+#ifdef INIT_SUBSYS_INFO
+static const char pci_subsys_1002_5159_17ee_1001[] = "Radeon 7000 64MB DDR + DVI";
+#endif
static const char pci_device_1002_515a[] = "Radeon RV100 QZ [Radeon 7000/VE]";
static const char pci_device_1002_515e[] = "ES1000";
static const char pci_device_1002_515f[] = "ES1000";
@@ -1673,9 +1825,11 @@ static const char pci_device_1002_5550[] = "R423 [Fire GL V7100]";
static const char pci_device_1002_5551[] = "R423 UQ [FireGL V7200 (PCIE)]";
static const char pci_device_1002_5552[] = "R423 UR [FireGL V5100 (PCIE)]";
static const char pci_device_1002_5554[] = "R423 UT [FireGL V7100 (PCIE)]";
+static const char pci_device_1002_5569[] = "R423 UI [Radeon X800PRO (PCIE)] Secondary";
static const char pci_device_1002_556b[] = "Radeon R423 UK (PCIE) [X800 SE] (Secondary)";
static const char pci_device_1002_556d[] = "R430 [Radeon X800 XL] (PCIe) Secondary";
static const char pci_device_1002_556f[] = "R430 [Radeon X800 (PCIE) Secondary]";
+static const char pci_device_1002_5571[] = "R423GL-SE ATI FIREGL V5100 PCI-EX Secondary";
static const char pci_device_1002_564a[] = "M26 [Mobility FireGL V5000]";
static const char pci_device_1002_564b[] = "M26 [Mobility FireGL V5000]";
static const char pci_device_1002_564f[] = "M26 [Radeon Mobility X700 XL] (PCIE)";
@@ -1795,6 +1949,7 @@ static const char pci_subsys_1002_5964_18bc_0173[] = "GC-R9200L(SE)-C3H [Radeon
static const char pci_device_1002_5969[] = "ES1000";
static const char pci_device_1002_5974[] = "RS482 [Radeon Xpress 200]";
static const char pci_device_1002_5975[] = "RS482 [Radeon Xpress 200M]";
+static const char pci_device_1002_5a33[] = "Radeon Xpress 200 Host Bridge";
static const char pci_device_1002_5a34[] = "RS480 PCI-X Root Port";
static const char pci_device_1002_5a36[] = "RS480 PCI Bridge";
static const char pci_device_1002_5a38[] = "RS480 PCI Bridge";
@@ -1897,7 +2052,12 @@ static const char pci_device_1002_5f57[] = "R423 [Radeon X800XT (PCIE)]";
static const char pci_device_1002_700f[] = "PCI Bridge [IGP 320M]";
static const char pci_device_1002_7010[] = "PCI Bridge [IGP 340M]";
static const char pci_device_1002_7100[] = "R520 [Radeon X1800]";
+static const char pci_device_1002_7102[] = "M58 [Radeon Mobility X1800]";
+static const char pci_device_1002_7103[] = "M58 [Mobility FireGL V7200]";
+static const char pci_device_1002_7104[] = "R520 GL ATI FireGL V7200 Primary";
static const char pci_device_1002_7105[] = "R520 [FireGL]";
+static const char pci_device_1002_7106[] = "M58 [Mobility FireGL V7100]";
+static const char pci_device_1002_7108[] = "M58 [Radeon Mobility X1800]";
static const char pci_device_1002_7109[] = "R520 [Radeon X1800]";
#ifdef INIT_SUBSYS_INFO
static const char pci_subsys_1002_7109_1002_0322[] = "All-in-Wonder X1800XL";
@@ -1905,7 +2065,11 @@ static const char pci_subsys_1002_7109_1002_0322[] = "All-in-Wonder X1800XL";
#ifdef INIT_SUBSYS_INFO
static const char pci_subsys_1002_7109_1002_0d02[] = "Radeon X1800 CrossFire Edition";
#endif
+static const char pci_device_1002_710a[] = "R520 [Radeon X1800]";
+static const char pci_device_1002_710b[] = "R520 [Radeon X1800]";
+static const char pci_device_1002_710c[] = "R520 [Radeon X1800]";
static const char pci_device_1002_7120[] = "R520 [Radeon X1800] (Secondary)";
+static const char pci_device_1002_7124[] = "R520 GL ATI FireGL V7200 Secondary";
static const char pci_device_1002_7129[] = "R520 [Radeon X1800] (Secondary)";
#ifdef INIT_SUBSYS_INFO
static const char pci_subsys_1002_7129_1002_0323[] = "All-in-Wonder X1800XL (Secondary)";
@@ -1913,6 +2077,7 @@ static const char pci_subsys_1002_7129_1002_0323[] = "All-in-Wonder X1800XL (Sec
#ifdef INIT_SUBSYS_INFO
static const char pci_subsys_1002_7129_1002_0d03[] = "Radeon X1800 CrossFire Edition (Secondary)";
#endif
+static const char pci_device_1002_7140[] = "RV515 [Radeon X1600]";
static const char pci_device_1002_7142[] = "RV515 [Radeon X1300]";
#ifdef INIT_SUBSYS_INFO
static const char pci_subsys_1002_7142_1002_0322[] = "All-in-Wonder 2006 PCI-E Edition";
@@ -1926,6 +2091,10 @@ static const char pci_device_1002_7149[] = "M52 [ATI Mobility Radeon X1300]";
static const char pci_device_1002_714a[] = "M52 [ATI Mobility Radeon X1300]";
static const char pci_device_1002_714b[] = "M52 [ATI Mobility Radeon X1300]";
static const char pci_device_1002_714c[] = "M52 [ATI Mobility Radeon X1300]";
+static const char pci_device_1002_714d[] = "RV515 [Radeon X1300]";
+static const char pci_device_1002_714e[] = "RV515 [Radeon X1300]";
+static const char pci_device_1002_7152[] = "RV515 GL ATI FireGL V3300 Primary";
+static const char pci_device_1002_715e[] = "RV515 [Radeon X1300]";
static const char pci_device_1002_7162[] = "RV515 [Radeon X1300] (Secondary)";
#ifdef INIT_SUBSYS_INFO
static const char pci_subsys_1002_7162_1002_0323[] = "All-in-Wonder 2006 PCI-E Edition (Secondary)";
@@ -1934,12 +2103,42 @@ static const char pci_device_1002_7166[] = "RV515 [Radeon X1300] (Secondary)";
#ifdef INIT_SUBSYS_INFO
static const char pci_subsys_1002_7166_1002_0323[] = "All-in-Wonder 2006 PCI-E Edition (Secondary)";
#endif
+static const char pci_device_1002_7172[] = "RV515 GL ATI FireGL V3300 Secondary";
+static const char pci_device_1002_7180[] = "RV516 Radeon X1300 Series Primary";
+static const char pci_device_1002_7181[] = "RV516 XT Radeon X1600 Series Primary";
+static const char pci_device_1002_71a0[] = "RV516 Radeon X1300 Series Secondary";
+static const char pci_device_1002_71a1[] = "RV516 XT Radeon X1600 Series Secondary";
static const char pci_device_1002_71c0[] = "RV530 [Radeon X1600]";
static const char pci_device_1002_71c2[] = "RV530 [Radeon X1600]";
static const char pci_device_1002_71c4[] = "M56GL [ATI Mobility FireGL V5200]";
+#ifdef INIT_SUBSYS_INFO
+static const char pci_subsys_1002_71c4_17aa_2007[] = "ThinkPad T60p";
+#endif
static const char pci_device_1002_71c5[] = "M56P [Radeon Mobility X1600]";
+static const char pci_device_1002_71c6[] = "RV530LE [Radeon X1600]";
+static const char pci_device_1002_71ce[] = "RV530LE [Radeon X1600]";
+static const char pci_device_1002_71d5[] = "M66-P ATI Mobility Radeon X1700";
+static const char pci_device_1002_71d6[] = "M66-XT ATI Mobility Radeon X1700";
+static const char pci_device_1002_71de[] = "RV530LE [Radeon X1600]";
static const char pci_device_1002_71e0[] = "RV530 [Radeon X1600] (Secondary)";
static const char pci_device_1002_71e2[] = "RV530 [Radeon X1600] (Secondary)";
+static const char pci_device_1002_7240[] = "R580 [Radeon X1900]";
+static const char pci_device_1002_7241[] = "R580 [Radeon X1900]";
+static const char pci_device_1002_7242[] = "R580 [Radeon X1900]";
+static const char pci_device_1002_7243[] = "R580 [Radeon X1900]";
+static const char pci_device_1002_7244[] = "R580 [Radeon X1900]";
+static const char pci_device_1002_7245[] = "R580 [Radeon X1900]";
+static const char pci_device_1002_7246[] = "R580 [Radeon X1900]";
+static const char pci_device_1002_7247[] = "R580 [Radeon X1900]";
+static const char pci_device_1002_7248[] = "R580 [Radeon X1900]";
+static const char pci_device_1002_7249[] = "R580 [Radeon X1900 XT] Primary";
+static const char pci_device_1002_724a[] = "R580 [Radeon X1900]";
+static const char pci_device_1002_724b[] = "R580 [Radeon X1900]";
+static const char pci_device_1002_724c[] = "R580 [Radeon X1900]";
+static const char pci_device_1002_724d[] = "R580 [Radeon X1900]";
+static const char pci_device_1002_724e[] = "R580 [FireGL V7300/V7350] Primary (PCIE)";
+static const char pci_device_1002_7269[] = "R580 [Radeon X1900 XT] Secondary";
+static const char pci_device_1002_726e[] = "R580 [FireGL V7300/V7350] Secondary (PCIE)";
static const char pci_device_1002_7833[] = "Radeon 9100 IGP Host Bridge";
static const char pci_device_1002_7834[] = "Radeon 9100 PRO IGP";
static const char pci_device_1002_7835[] = "Radeon Mobility 9200 IGP";
@@ -2170,6 +2369,9 @@ static const char pci_subsys_1011_0019_1033_800c[] = "PC-9821-CS01 100BASE-TX In
static const char pci_subsys_1011_0019_1033_800d[] = "PC-9821NR-B06 100BASE-TX Interface Card";
#endif
#ifdef INIT_SUBSYS_INFO
+static const char pci_subsys_1011_0019_103c_125a[] = "10/100Base-TX (PCI) [A5506B]";
+#endif
+#ifdef INIT_SUBSYS_INFO
static const char pci_subsys_1011_0019_108d_0016[] = "Rapidfire 2327 10/100 Ethernet";
#endif
#ifdef INIT_SUBSYS_INFO
@@ -2251,6 +2453,15 @@ static const char pci_subsys_1011_0019_1395_0001[] = "10/100 Ethernet CardBus PC
static const char pci_subsys_1011_0019_13d1_ab01[] = "EtherFast 10/100 Cardbus (PCMPC200)";
#endif
#ifdef INIT_SUBSYS_INFO
+static const char pci_subsys_1011_0019_1498_000a[] = "TPMC880-10 10/100Base-T and 10Base2 PMC Ethernet Adapter";
+#endif
+#ifdef INIT_SUBSYS_INFO
+static const char pci_subsys_1011_0019_1498_000b[] = "TPMC880-11 Single 10/100Base-T PMC Ethernet Adapter";
+#endif
+#ifdef INIT_SUBSYS_INFO
+static const char pci_subsys_1011_0019_1498_000c[] = "TPMC880-12 Single 10Base2 PMC Ethernet Adapter";
+#endif
+#ifdef INIT_SUBSYS_INFO
static const char pci_subsys_1011_0019_14cb_0100[] = "LNDL-100N 100Base-TX Ethernet PC Card";
#endif
#ifdef INIT_SUBSYS_INFO
@@ -2279,7 +2490,7 @@ static const char pci_subsys_1011_0046_0e11_4051[] = "Integrated Smart Array";
static const char pci_subsys_1011_0046_0e11_4058[] = "Integrated Smart Array";
#endif
#ifdef INIT_SUBSYS_INFO
-static const char pci_subsys_1011_0046_103c_10c2[] = "Hewlett-Packard NetRAID-4M";
+static const char pci_subsys_1011_0046_103c_10c2[] = "NetRAID-4M";
#endif
#ifdef INIT_SUBSYS_INFO
static const char pci_subsys_1011_0046_12d9_000a[] = "IP Telephony card";
@@ -2352,7 +2563,7 @@ static const char pci_device_1013_6001[] = "CS 4610/11 [CrystalClear SoundFusion
#ifdef INIT_SUBSYS_INFO
static const char pci_subsys_1013_6001_1014_1010[] = "CS4610 SoundFusion Audio Accelerator";
#endif
-static const char pci_device_1013_6003[] = "CS 4614/22/24 [CrystalClear SoundFusion Audio Accelerator]";
+static const char pci_device_1013_6003[] = "CS 4614/22/24/30 [CrystalClear SoundFusion Audio Accelerator]";
#ifdef INIT_SUBSYS_INFO
static const char pci_subsys_1013_6003_1013_4280[] = "Crystal SoundFusion PCI Audio Accelerator";
#endif
@@ -2360,6 +2571,9 @@ static const char pci_subsys_1013_6003_1013_4280[] = "Crystal SoundFusion PCI Au
static const char pci_subsys_1013_6003_1014_0153[] = "ThinkPad A20m";
#endif
#ifdef INIT_SUBSYS_INFO
+static const char pci_subsys_1013_6003_153b_112e[] = "DMX XFire 1024";
+#endif
+#ifdef INIT_SUBSYS_INFO
static const char pci_subsys_1013_6003_153b_1136[] = "SiXPack 5.1+";
#endif
#ifdef INIT_SUBSYS_INFO
@@ -2368,6 +2582,9 @@ static const char pci_subsys_1013_6003_1681_0050[] = "Game Theater XP";
#ifdef INIT_SUBSYS_INFO
static const char pci_subsys_1013_6003_1681_a011[] = "Fortissimo III 7.1";
#endif
+#ifdef INIT_SUBSYS_INFO
+static const char pci_subsys_1013_6003_5053_3357[] = "Santa Cruz";
+#endif
static const char pci_device_1013_6004[] = "CS 4614/22/24 [CrystalClear SoundFusion Audio Accelerator]";
static const char pci_device_1013_6005[] = "Crystal CS4281 PCI Audio";
#ifdef INIT_SUBSYS_INFO
@@ -2462,6 +2679,7 @@ static const char pci_device_1014_0050[] = "ATM Controller (14105000)";
static const char pci_device_1014_0053[] = "25 MBit ATM Controller";
static const char pci_device_1014_0054[] = "GXT500P/GXT550P Graphics Adapter";
static const char pci_device_1014_0057[] = "MPEG PCI Bridge";
+static const char pci_device_1014_0058[] = "SSA Adapter [Advanced SerialRAID/X]";
static const char pci_device_1014_005c[] = "i82557B 10/100";
static const char pci_device_1014_005e[] = "GXT800P Graphics Adapter";
static const char pci_device_1014_007c[] = "ATM Controller (14107c00)";
@@ -2586,6 +2804,7 @@ static const char pci_subsys_1014_02bd_1014_02c1[] = "PCI-X DDR 3Gb SAS Adapter
static const char pci_subsys_1014_02bd_1014_02c2[] = "PCI-X DDR 3Gb SAS RAID Adapter (572B/571D)";
#endif
static const char pci_device_1014_0302[] = "Winnipeg PCI-X Host Bridge";
+static const char pci_device_1014_0308[] = "CalIOC2 PCI-E Root Port";
static const char pci_device_1014_0314[] = "ZISC 036 Neural accelerator card";
static const char pci_device_1014_3022[] = "QLA3022 Network Adapter";
static const char pci_device_1014_4022[] = "QLA3022 Network Adapter";
@@ -2754,6 +2973,9 @@ static const char pci_subsys_1022_2000_1259_2702[] = "AT-2700FTX 10/100 Mb Fiber
static const char pci_subsys_1022_2000_1259_2703[] = "AT-2701FX";
#endif
#ifdef INIT_SUBSYS_INFO
+static const char pci_subsys_1022_2000_1259_2704[] = "AT-2701FTX 10/100 Mb Fiber/Copper Fast Ethernet";
+#endif
+#ifdef INIT_SUBSYS_INFO
static const char pci_subsys_1022_2000_4c53_1000[] = "CC7/CR7/CP7/VC7/VP7/VR7 mainboard";
#endif
#ifdef INIT_SUBSYS_INFO
@@ -2946,6 +3168,7 @@ static const char pci_device_1023_9930[] = "CyberBlade/XPm";
static const char pci_vendor_1024[] = "Zenith Data Systems";
#endif
static const char pci_vendor_1025[] = "Acer Incorporated [ALI]";
+static const char pci_device_1025_0090[] = "BCM440x 100Base-TX Fast Ethernet";
static const char pci_device_1025_1435[] = "M1435";
static const char pci_device_1025_1445[] = "M1445";
static const char pci_device_1025_1449[] = "M1449";
@@ -3055,7 +3278,7 @@ static const char pci_subsys_1028_0013_1028_016f[] = "PowerEdge Expandable RAID
static const char pci_subsys_1028_0013_1028_0170[] = "PowerEdge Expandable RAID Controller 4e/Di";
#endif
static const char pci_device_1028_0014[] = "Remote Access Card 4 Daughter Card SMIC interface";
-static const char pci_device_1028_0015[] = "PowerEdge Expandable RAID controller 5";
+static const char pci_device_1028_0015[] = "PowerEdge Expandable RAID controller 5i";
#ifdef VENDOR_INCLUDE_NONVIDEO
static const char pci_vendor_1029[] = "Siemens Nixdorf IS";
#endif
@@ -3483,6 +3706,9 @@ static const char pci_subsys_102b_2538_102b_2538[] = "Parhelia APVe";
static const char pci_subsys_102b_2538_102b_3007[] = "QID Low-profile PCIe";
#endif
static const char pci_device_102b_4536[] = "VIA Framegrabber";
+static const char pci_device_102b_4cdc[] = "Morphis Vision System Jpeg2000";
+static const char pci_device_102b_4fc5[] = "Morphis Vision System";
+static const char pci_device_102b_5e10[] = "Morphis Vision System Aux/IO";
static const char pci_device_102b_6573[] = "Shark 10/100 Multiport SwitchNIC";
static const char pci_vendor_102c[] = "Chips and Technologies";
static const char pci_device_102c_00b8[] = "F64310";
@@ -3677,6 +3903,7 @@ static const char pci_device_1033_00f2[] = "uPD72874 IEEE1394 OHCI 1.1 3-port PH
static const char pci_device_1033_00f3[] = "uPD6113x Multimedia Decoder/Processor [EMMA2]";
static const char pci_device_1033_010c[] = "VR7701";
static const char pci_device_1033_0125[] = "uPD720400 PCI Express - PCI/PCI-X Bridge";
+static const char pci_device_1033_013a[] = "Dual Tuner/MPEG Encoder";
#ifdef VENDOR_INCLUDE_NONVIDEO
static const char pci_vendor_1034[] = "Framatome Connectors USA Inc.";
#endif
@@ -3707,6 +3934,7 @@ static const char pci_device_1039_0018[] = "SiS85C503/5513 (LPC Bridge)";
static const char pci_device_1039_0180[] = "RAID bus controller 180 SATA/PATA [SiS]";
static const char pci_device_1039_0181[] = "SATA";
static const char pci_device_1039_0182[] = "182 SATA/RAID Controller";
+static const char pci_device_1039_0186[] = "AHCI Controller (0106)";
static const char pci_device_1039_0190[] = "190 Gigabit Ethernet Adapter";
static const char pci_device_1039_0191[] = "191 Gigabit Ethernet Adapter";
static const char pci_device_1039_0200[] = "5597/5598/6326 VGA";
@@ -3742,6 +3970,7 @@ static const char pci_device_1039_0651[] = "651 Host";
static const char pci_device_1039_0655[] = "655 Host";
static const char pci_device_1039_0660[] = "660 Host";
static const char pci_device_1039_0661[] = "661FX/M661FX/M661MX Host";
+static const char pci_device_1039_0662[] = "662 Host";
static const char pci_device_1039_0730[] = "730 Host";
static const char pci_device_1039_0733[] = "733 Host";
static const char pci_device_1039_0735[] = "735 Host";
@@ -3767,6 +3996,13 @@ static const char pci_device_1039_0962[] = "SiS962 [MuTIOL Media IO]";
static const char pci_device_1039_0963[] = "SiS963 [MuTIOL Media IO]";
static const char pci_device_1039_0964[] = "SiS964 [MuTIOL Media IO]";
static const char pci_device_1039_0965[] = "SiS965 [MuTIOL Media IO]";
+static const char pci_device_1039_0966[] = "SiS966 [MuTIOL Media IO]";
+static const char pci_device_1039_0968[] = "SiS968 [MuTIOL Media IO]";
+static const char pci_device_1039_1180[] = "SATA Controller / IDE mode";
+static const char pci_device_1039_1182[] = "SATA Controller / RAID mode";
+static const char pci_device_1039_1183[] = "SATA Controller / IDE mode";
+static const char pci_device_1039_1184[] = "AHCI Controller / RAID mode";
+static const char pci_device_1039_1185[] = "AHCI IDE Controller (0106)";
static const char pci_device_1039_3602[] = "83C602";
static const char pci_device_1039_5107[] = "5107";
static const char pci_device_1039_5300[] = "SiS540 PCI Display Adapter";
@@ -3825,10 +4061,12 @@ static const char pci_subsys_1039_6326_1092_4920[] = "SpeedStar A70";
#ifdef INIT_SUBSYS_INFO
static const char pci_subsys_1039_6326_1569_6326[] = "SiS6326 GUI Accelerator";
#endif
-static const char pci_device_1039_6330[] = "661/741/760/761 PCI/AGP VGA Display Adapter";
+static const char pci_device_1039_6330[] = "661/741/760 PCI/AGP or 662/761Gx PCIE VGA Display Adapter";
#ifdef INIT_SUBSYS_INFO
static const char pci_subsys_1039_6330_1039_6330[] = "[M]661xX/[M]741[GX]/[M]760 PCI/AGP VGA Adapter";
#endif
+static const char pci_device_1039_6350[] = "770/670 PCIE VGA Display Adapter";
+static const char pci_device_1039_6351[] = "771/671 PCIE VGA Display Adapter";
static const char pci_device_1039_7001[] = "USB 1.0 Controller";
#ifdef INIT_SUBSYS_INFO
static const char pci_subsys_1039_7001_1019_0a14[] = "K7S5A motherboard";
@@ -3921,6 +4159,7 @@ static const char pci_subsys_1039_7018_270f_a171[] = "SiS PCI Audio Accelerator"
static const char pci_subsys_1039_7018_a0a0_0022[] = "SiS PCI Audio Accelerator";
#endif
static const char pci_device_1039_7019[] = "SiS7019 Audio Accelerator";
+static const char pci_device_1039_7502[] = "Azalia Audio Controller";
#ifdef VENDOR_INCLUDE_NONVIDEO
static const char pci_vendor_103a[] = "Seiko Epson Corporation";
#endif
@@ -4005,19 +4244,31 @@ static const char pci_device_103c_121b[] = "NetServer Legacy COM Port Decoder";
static const char pci_device_103c_121c[] = "NetServer PCI COM Port Decoder";
static const char pci_device_103c_1229[] = "zx1 System Bus Adapter";
static const char pci_device_103c_122a[] = "zx1 I/O Controller";
-static const char pci_device_103c_122e[] = "zx1 Local Bus Adapter";
+static const char pci_device_103c_122e[] = "PCI-X Local Bus Adapter";
+static const char pci_device_103c_127b[] = "sx1000 System Bus Adapter";
static const char pci_device_103c_127c[] = "sx1000 I/O Controller";
static const char pci_device_103c_1290[] = "Auxiliary Diva Serial Port";
static const char pci_device_103c_1291[] = "Auxiliary Diva Serial Port";
static const char pci_device_103c_12b4[] = "zx1 QuickSilver AGP8x Local Bus Adapter";
+static const char pci_device_103c_12eb[] = "sx2000 System Bus Adapter";
+static const char pci_device_103c_12ec[] = "sx2000 I/O Controller";
+static const char pci_device_103c_12ee[] = "PCI-X 2.0 Local Bus Adapter";
static const char pci_device_103c_12f8[] = "Broadcom BCM4306 802.11b/g Wireless LAN";
static const char pci_device_103c_12fa[] = "BCM4306 802.11b/g Wireless LAN Controller";
static const char pci_device_103c_2910[] = "E2910A PCIBus Exerciser";
static const char pci_device_103c_2925[] = "E2925A 32 Bit, 33 MHzPCI Exerciser & Analyzer";
static const char pci_device_103c_3080[] = "Pavilion ze2028ea";
static const char pci_device_103c_3085[] = "Realtek RTL8139/8139C/8139C+";
-static const char pci_device_103c_3220[] = "Hewlett-Packard Smart Array P600";
-static const char pci_device_103c_3230[] = "Hewlett-Packard Smart Array Controller";
+static const char pci_device_103c_3220[] = "Smart Array P600";
+#ifdef INIT_SUBSYS_INFO
+static const char pci_subsys_103c_3220_103c_3225[] = "3 Gb/s SAS RAID";
+#endif
+static const char pci_device_103c_3230[] = "Smart Array Controller";
+static const char pci_device_103c_4030[] = "zx2 System Bus Adapter";
+static const char pci_device_103c_4031[] = "zx2 I/O Controller";
+static const char pci_device_103c_4037[] = "PCIe Local Bus Adapter";
+static const char pci_device_103c_403b[] = "PCIe Root Port";
+static const char pci_device_103c_60e8[] = "NetRAID-2M : ZX1/M (OEM AMI MegaRAID 493)";
#ifdef VENDOR_INCLUDE_NONVIDEO
static const char pci_vendor_103e[] = "Solliday Engineering";
#endif
@@ -4055,12 +4306,14 @@ static const char pci_device_1043_4015[] = "v7100 SDRAM [GeForce2 MX]";
static const char pci_device_1043_4021[] = "v7100 Combo Deluxe [GeForce2 MX + TV tuner]";
static const char pci_device_1043_4057[] = "v8200 GeForce 3";
static const char pci_device_1043_8043[] = "v8240 PAL 128M [P4T] Motherboard";
+static const char pci_device_1043_8047[] = "v8420 Deluxe [GeForce4 Ti4200]";
static const char pci_device_1043_807b[] = "v9280/TD [Geforce4 TI4200 8X With TV-Out and DVI]";
static const char pci_device_1043_8095[] = "A7N8X Motherboard nForce2 AC97 Audio";
static const char pci_device_1043_80ac[] = "A7N8X Motherboard nForce2 AGP/Memory";
static const char pci_device_1043_80bb[] = "v9180 Magic/T [GeForce4 MX440 AGP 8x 64MB TV-out]";
static const char pci_device_1043_80c5[] = "nForce3 chipset motherboard [SK8N]";
static const char pci_device_1043_80df[] = "v9520 Magic/T";
+static const char pci_device_1043_815a[] = "A8N-SLI Motherboard nForce4 SATA";
static const char pci_device_1043_8187[] = "802.11a/b/g Wireless LAN Card";
static const char pci_device_1043_8188[] = "Tiger Hybrid TV Capture Device";
#endif
@@ -4238,6 +4491,9 @@ static const char pci_device_104a_0210[] = "STPC Atlas ISA Bridge";
static const char pci_device_104a_021a[] = "STPC Consumer S Southbridge";
static const char pci_device_104a_021b[] = "STPC Consumer IIA Southbridge";
static const char pci_device_104a_0500[] = "ST70137 [Unicorn] ADSL DMT Transceiver";
+#ifdef INIT_SUBSYS_INFO
+static const char pci_subsys_104a_0500_104a_0500[] = "BeWAN ADSL PCI st";
+#endif
static const char pci_device_104a_0564[] = "STPC Client Northbridge";
static const char pci_device_104a_0981[] = "21x4x DEC-Tulip compatible 10/100 Ethernet";
static const char pci_device_104a_1746[] = "STG 1764X";
@@ -4358,6 +4614,9 @@ static const char pci_device_104c_8020[] = "TSB12LV26 IEEE-1394 Controller (Link
#ifdef INIT_SUBSYS_INFO
static const char pci_subsys_104c_8020_11bd_000f[] = "Studio DV500-1394";
#endif
+#ifdef INIT_SUBSYS_INFO
+static const char pci_subsys_104c_8020_11bd_001c[] = "Excalibur 4.1";
+#endif
static const char pci_device_104c_8021[] = "TSB43AA22 IEEE-1394 Controller (PHY/Link Integrated)";
#ifdef INIT_SUBSYS_INFO
static const char pci_subsys_104c_8021_104d_80df[] = "Vaio PCG-FX403";
@@ -4407,7 +4666,7 @@ static const char pci_device_104c_802b[] = "PCI7410,7510,7610 OHCI-Lynx Controll
static const char pci_subsys_104c_802b_1028_0139[] = "Latitude D400";
#endif
#ifdef INIT_SUBSYS_INFO
-static const char pci_subsys_104c_802b_1028_014e[] = "PCI7410,7510,7610 OHCI-Lynx Controller (Dell Latitude D800)";
+static const char pci_subsys_104c_802b_1028_014e[] = "PCI7410,7510,7610 OHCI-Lynx Controller (Latitude D800)";
#endif
static const char pci_device_104c_802e[] = "PCI7x20 1394a-2000 OHCI Two-Port PHY/Link-Layer Controller";
static const char pci_device_104c_8031[] = "PCIxx21/x515 Cardbus Controller";
@@ -4440,7 +4699,7 @@ static const char pci_subsys_104c_8033_103c_099c[] = "NX6110/NC6120";
#ifdef INIT_SUBSYS_INFO
static const char pci_subsys_104c_8033_103c_308b[] = "MX6125";
#endif
-static const char pci_device_104c_8034[] = "PCI6411, PCI6421, PCI6611, PCI6621, PCI7411, PCI7421, PCI7611, PCI7621 Secure Digital (SD) Controller";
+static const char pci_device_104c_8034[] = "PCI6411/6421/6611/6621/7411/7421/7611/7621 Secure Digital Controller";
#ifdef INIT_SUBSYS_INFO
static const char pci_subsys_104c_8034_1025_0080[] = "Aspire 5024WLMi";
#endif
@@ -4450,14 +4709,32 @@ static const char pci_subsys_104c_8034_103c_099c[] = "NX6110/NC6120";
#ifdef INIT_SUBSYS_INFO
static const char pci_subsys_104c_8034_103c_308b[] = "MX6125";
#endif
-static const char pci_device_104c_8035[] = "PCI6411, PCI6421, PCI6611, PCI6621, PCI7411, PCI7421, PCI7611, PCI7621 Smart Card Controller (SMC)";
+static const char pci_device_104c_8035[] = "PCI6411/6421/6611/6621/7411/7421/7611/7621 Smart Card Controller";
#ifdef INIT_SUBSYS_INFO
static const char pci_subsys_104c_8035_103c_099c[] = "NX6110/NC6120";
#endif
static const char pci_device_104c_8036[] = "PCI6515 Cardbus Controller";
static const char pci_device_104c_8038[] = "PCI6515 SmartCard Controller";
static const char pci_device_104c_8039[] = "PCIxx12 Cardbus Controller";
+#ifdef INIT_SUBSYS_INFO
+static const char pci_subsys_104c_8039_103c_309f[] = "nx9420";
+#endif
+static const char pci_device_104c_803a[] = "PCIxx12 OHCI Compliant IEEE 1394 Host Controller";
+#ifdef INIT_SUBSYS_INFO
+static const char pci_subsys_104c_803a_103c_309f[] = "nx9420";
+#endif
static const char pci_device_104c_803b[] = "5-in-1 Multimedia Card Reader (SD/MMC/MS/MS PRO/xD)";
+#ifdef INIT_SUBSYS_INFO
+static const char pci_subsys_104c_803b_103c_309f[] = "nx9420";
+#endif
+static const char pci_device_104c_803c[] = "PCIxx12 SDA Standard Compliant SD Host Controller";
+#ifdef INIT_SUBSYS_INFO
+static const char pci_subsys_104c_803c_103c_309f[] = "nx9420";
+#endif
+static const char pci_device_104c_803d[] = "PCIxx12 GemCore based SmartCard controller";
+#ifdef INIT_SUBSYS_INFO
+static const char pci_subsys_104c_803d_103c_309f[] = "nx9420";
+#endif
static const char pci_device_104c_8201[] = "PCI1620 Firmware Loading Function";
static const char pci_device_104c_8204[] = "PCI7410,7510,7610 PCI Firmware Loading Function";
#ifdef INIT_SUBSYS_INFO
@@ -4466,8 +4743,8 @@ static const char pci_subsys_104c_8204_1028_0139[] = "Latitude D400";
#ifdef INIT_SUBSYS_INFO
static const char pci_subsys_104c_8204_1028_014e[] = "Latitude D800";
#endif
-static const char pci_device_104c_8231[] = "XIO2000(A)/XIO2200 PCI Express-to-PCI Bridge";
-static const char pci_device_104c_8235[] = "XIO2200 IEEE-1394a-2000 Controller (PHY/Link)";
+static const char pci_device_104c_8231[] = "XIO2000(A)/XIO2200(A) PCI Express-to-PCI Bridge";
+static const char pci_device_104c_8235[] = "XIO2200(A) IEEE-1394a-2000 Controller (PHY/Link)";
static const char pci_device_104c_8400[] = "ACX 100 22Mbps Wireless Interface";
#ifdef INIT_SUBSYS_INFO
static const char pci_subsys_104c_8400_1186_3b00[] = "DWL-650+ PC Card cardbus 22Mbs Wireless Adapter [AirPlus]";
@@ -4550,7 +4827,7 @@ static const char pci_device_104c_ac40[] = "PCI4450 PC card Cardbus Controller";
static const char pci_device_104c_ac41[] = "PCI4410 PC card Cardbus Controller";
static const char pci_device_104c_ac42[] = "PCI4451 PC card Cardbus Controller";
#ifdef INIT_SUBSYS_INFO
-static const char pci_subsys_104c_ac42_1028_00e6[] = "PCI4451 PC card CardBus Controller (Dell Inspiron 8100)";
+static const char pci_subsys_104c_ac42_1028_00e6[] = "PCI4451 PC card CardBus Controller (Inspiron 8100)";
#endif
static const char pci_device_104c_ac44[] = "PCI4510 PC card Cardbus Controller";
#ifdef INIT_SUBSYS_INFO
@@ -4612,14 +4889,23 @@ static const char pci_subsys_104c_ac51_e4bf_1000[] = "CP2-2-HIPHOP";
static const char pci_device_104c_ac52[] = "PCI1451 PC card Cardbus Controller";
static const char pci_device_104c_ac53[] = "PCI1421 PC card Cardbus Controller";
static const char pci_device_104c_ac54[] = "PCI1620 PC Card Controller";
+#ifdef INIT_SUBSYS_INFO
+static const char pci_subsys_104c_ac54_103c_08b0[] = "tc1100 tablet";
+#endif
static const char pci_device_104c_ac55[] = "PCI1520 PC card Cardbus Controller";
#ifdef INIT_SUBSYS_INFO
static const char pci_subsys_104c_ac55_1014_0512[] = "ThinkPad T30/T40";
#endif
static const char pci_device_104c_ac56[] = "PCI1510 PC card Cardbus Controller";
#ifdef INIT_SUBSYS_INFO
+static const char pci_subsys_104c_ac56_1014_0512[] = "Thinkpad R50e model 1634";
+#endif
+#ifdef INIT_SUBSYS_INFO
static const char pci_subsys_104c_ac56_1014_0528[] = "ThinkPad R40e (2684-HVG) Cardbus Controller";
#endif
+#ifdef INIT_SUBSYS_INFO
+static const char pci_subsys_104c_ac56_17aa_2012[] = "Thinkpad R60e model 0657";
+#endif
static const char pci_device_104c_ac60[] = "PCI2040 PCI to DSP Bridge Controller";
#ifdef INIT_SUBSYS_INFO
static const char pci_subsys_104c_ac60_175c_5100[] = "ASI51xx Audio Adapter";
@@ -4635,7 +4921,7 @@ static const char pci_subsys_104c_ac60_175c_8800[] = "ASI88xx Audio Adapter";
#endif
static const char pci_device_104c_ac8d[] = "PCI 7620";
static const char pci_device_104c_ac8e[] = "PCI7420 CardBus Controller";
-static const char pci_device_104c_ac8f[] = "PCI7420/PCI7620 Dual Socket CardBus and Smart Card Cont. w/ 1394a-2000 OHCI Two-Port PHY/Link-Layer Cont. and SD/MS-Pro Sockets";
+static const char pci_device_104c_ac8f[] = "PCI7420/7620 Combo CardBus, 1394a-2000 OHCI and SD/MS-Pro Controller";
static const char pci_device_104c_fe00[] = "FireWire Host Controller";
static const char pci_device_104c_fe03[] = "12C01A FireWire Host Controller";
static const char pci_vendor_104d[] = "Sony Corporation";
@@ -4722,6 +5008,7 @@ static const char pci_device_1057_0004[] = "MPC107";
static const char pci_device_1057_0006[] = "MPC8245 [Unity]";
static const char pci_device_1057_0008[] = "MPC8540";
static const char pci_device_1057_0009[] = "MPC8560";
+static const char pci_device_1057_0012[] = "MPC8548 [PowerQUICC III]";
static const char pci_device_1057_0100[] = "MC145575 [HFC-PCI]";
static const char pci_device_1057_0431[] = "KTI829c 100VG";
static const char pci_device_1057_1801[] = "DSP56301 Digital Signal Processor";
@@ -4799,6 +5086,7 @@ static const char pci_subsys_1057_1801_ecc0_0072[] = "Mona rev.2";
#endif
static const char pci_device_1057_18c0[] = "MPC8265A/8266/8272";
static const char pci_device_1057_18c1[] = "MPC8271/MPC8272";
+static const char pci_device_1057_3055[] = "SM56 Data Fax Modem";
static const char pci_device_1057_3410[] = "DSP56361 Digital Signal Processor";
#ifdef INIT_SUBSYS_INFO
static const char pci_subsys_1057_3410_ecc0_0050[] = "Gina24 rev.0";
@@ -4947,6 +5235,7 @@ static const char pci_device_105a_3d17[] = "PDC40718 (SATA 300 TX4)";
static const char pci_device_105a_3d18[] = "PDC20518/PDC40518 (SATAII 150 TX4)";
static const char pci_device_105a_3d73[] = "PDC40775 (SATA 300 TX2plus)";
static const char pci_device_105a_3d75[] = "PDC20575 (SATAII150 TX2plus)";
+static const char pci_device_105a_4302[] = "80333 [SuperTrak EX4350]";
static const char pci_device_105a_4d30[] = "PDC20267 (FastTrak100/Ultra100)";
#ifdef INIT_SUBSYS_INFO
static const char pci_subsys_105a_4d30_105a_4d33[] = "Ultra100";
@@ -5005,6 +5294,8 @@ static const char pci_device_105a_6626[] = "PDC20618 (Ultra 618)";
static const char pci_device_105a_6629[] = "PDC20619 (FastTrak TX4000)";
static const char pci_device_105a_7275[] = "PDC20277 (SBFastTrak133 Lite)";
static const char pci_device_105a_8002[] = "SATAII150 SX8";
+static const char pci_device_105a_8350[] = "80333 [SuperTrak EX8350/EX16350], 80331 [SuperTrak EX8300/EX16300]";
+static const char pci_device_105a_c350[] = "80333 [SuperTrak EX12350]";
#endif
#ifdef VENDOR_INCLUDE_NONVIDEO
static const char pci_vendor_105b[] = "Foxconn International, Inc.";
@@ -5421,16 +5712,38 @@ static const char pci_device_1077_2200[] = "QLA2200 64-bit Fibre Channel Adapter
static const char pci_subsys_1077_2200_1077_0002[] = "QLA2200";
#endif
static const char pci_device_1077_2300[] = "QLA2300 64-bit Fibre Channel Adapter";
-static const char pci_device_1077_2312[] = "QLA2312 Fibre Channel Adapter";
-static const char pci_device_1077_2322[] = "QLA2322 Fibre Channel Adapter";
-static const char pci_device_1077_2422[] = "QLA2422 Fibre Channel Adapter";
-static const char pci_device_1077_2432[] = "QLA2432 Fibre Channel Adapter";
-static const char pci_device_1077_3010[] = "QLA3010 Network Adapter";
-static const char pci_device_1077_3022[] = "QLA3022 Network Adapter";
-static const char pci_device_1077_4010[] = "QLA4010 iSCSI TOE Adapter";
-static const char pci_device_1077_4022[] = "QLA4022 iSCSI TOE Adapter";
-static const char pci_device_1077_6312[] = "QLA6312 Fibre Channel Adapter";
-static const char pci_device_1077_6322[] = "QLA6322 Fibre Channel Adapter";
+static const char pci_device_1077_2312[] = "ISP2312-based 2Gb Fibre Channel to PCI-X HBA";
+#endif
+#ifdef INIT_SUBSYS_INFO
+static const char pci_subsys_1077_2312_103c_0131[] = "2Gb Fibre Channel - Single port [A7538A]";
+#endif
+#ifdef VENDOR_INCLUDE_NONVIDEO
+#endif
+#ifdef INIT_SUBSYS_INFO
+static const char pci_subsys_1077_2312_103c_12ba[] = "2Gb Fibre Channel - Dual port [A6826A]";
+#endif
+#ifdef VENDOR_INCLUDE_NONVIDEO
+static const char pci_device_1077_2322[] = "ISP2322-based 2Gb Fibre Channel to PCI-X HBA";
+static const char pci_device_1077_2422[] = "ISP2422-based 4Gb Fibre Channel to PCI-X HBA";
+#endif
+#ifdef INIT_SUBSYS_INFO
+static const char pci_subsys_1077_2422_103c_12d7[] = "4Gb Fibre Channel [AB379A]";
+#endif
+#ifdef VENDOR_INCLUDE_NONVIDEO
+#endif
+#ifdef INIT_SUBSYS_INFO
+static const char pci_subsys_1077_2422_103c_12dd[] = "4Gb Fibre Channel [AB429A]";
+#endif
+#ifdef VENDOR_INCLUDE_NONVIDEO
+static const char pci_device_1077_2432[] = "ISP2432-based 4Gb Fibre Channel to PCI Express HBA";
+static const char pci_device_1077_3022[] = "ISP4022-based Ethernet NIC";
+static const char pci_device_1077_3032[] = "ISP4032-based Ethernet NIC";
+static const char pci_device_1077_4010[] = "ISP4010-based iSCSI TOE HBA";
+static const char pci_device_1077_4022[] = "ISP4022-based iSCSI TOE HBA";
+static const char pci_device_1077_4032[] = "ISP4032-based iSCSI TOE IPv6 HBA";
+static const char pci_device_1077_5432[] = "SP232-based 4Gb Fibre Channel to PCI Express HBA";
+static const char pci_device_1077_6312[] = "SP202-based 2Gb Fibre Channel to PCI-X HBA";
+static const char pci_device_1077_6322[] = "SP212-based 2Gb Fibre Channel to PCI-X HBA";
#endif
static const char pci_vendor_1078[] = "Cyrix Corporation";
static const char pci_device_1078_0000[] = "5510 [Grappa]";
@@ -6178,8 +6491,6 @@ static const char pci_device_10a9_4001[] = "TIO-CE PCI Express Bridge";
static const char pci_device_10a9_4002[] = "TIO-CE PCI Express Port";
static const char pci_device_10a9_8001[] = "O2 1394";
static const char pci_device_10a9_8002[] = "G-net NT";
-static const char pci_device_10a9_8010[] = "Broadcom e-net [SGI IO9/IO10 BaseIO]";
-static const char pci_device_10a9_8018[] = "Broadcom e-net [SGI A330 Server BaseIO]";
#endif
#ifdef VENDOR_INCLUDE_NONVIDEO
static const char pci_vendor_10aa[] = "ACC Microelectronics";
@@ -6316,7 +6627,7 @@ static const char pci_subsys_10b5_9050_10b5_2431[] = "Alpermann+Velte PCL PCI D:
static const char pci_subsys_10b5_9050_10b5_2905[] = "Alpermann+Velte PCI TS: Time Synchronisation Board";
#endif
#ifdef INIT_SUBSYS_INFO
-static const char pci_subsys_10b5_9050_10b5_9050[] = "MP9050";
+static const char pci_subsys_10b5_9050_10b5_9050[] = "PCI-I04 PCI Passive PC/CAN Interface";
#endif
#ifdef INIT_SUBSYS_INFO
static const char pci_subsys_10b5_9050_1498_0362[] = "TPMC866 8 Channel Serial Card";
@@ -6473,6 +6784,9 @@ static const char pci_subsys_10b5_9080_103c_10ec[] = "(Agilent) E6978-66442 PCI
#endif
#ifdef VENDOR_INCLUDE_NONVIDEO
#ifdef INIT_SUBSYS_INFO
+static const char pci_subsys_10b5_9080_10b5_1123[] = "Sectra KK631 encryption board";
+#endif
+#ifdef INIT_SUBSYS_INFO
static const char pci_subsys_10b5_9080_10b5_9080[] = "9080 [real subsystem ID not set]";
#endif
#ifdef INIT_SUBSYS_INFO
@@ -6484,7 +6798,21 @@ static const char pci_subsys_10b5_9080_12d9_0002[] = "PCI Prosody Card";
#ifdef INIT_SUBSYS_INFO
static const char pci_subsys_10b5_9080_12df_4422[] = "4422PCI [Do-All Telemetry Data Aquisition System]";
#endif
+#ifdef INIT_SUBSYS_INFO
+static const char pci_subsys_10b5_9080_1517_000b[] = "ECSG-1R3ADC-PMC Clock synthesizer";
+#endif
+static const char pci_device_10b5_9656[] = "PCI <-> IOBus Bridge";
+#ifdef INIT_SUBSYS_INFO
+static const char pci_subsys_10b5_9656_1517_000f[] = "ECDR-GC314-PMC Receiver";
+#endif
+#ifdef INIT_SUBSYS_INFO
+static const char pci_subsys_10b5_9656_1885_0700[] = "Tsunami FPGA PMC with Altera Stratix S40";
+#endif
+#ifdef INIT_SUBSYS_INFO
+static const char pci_subsys_10b5_9656_1885_0701[] = "Tsunami FPGA PMC with Altera Stratix S30";
+#endif
static const char pci_device_10b5_bb04[] = "B&B 3PCIOSD1A Isolated PCI Serial";
+static const char pci_device_10b5_c001[] = "CronyxOmega-PCI (8-port RS232)";
#endif
#ifdef VENDOR_INCLUDE_NONVIDEO
static const char pci_vendor_10b6[] = "Madge Networks";
@@ -6641,6 +6969,10 @@ static const char pci_device_10b7_9006[] = "3c900B-TPC Etherlink XL [Cyclone]";
static const char pci_device_10b7_900a[] = "3c900B-FL 10base-FL [Cyclone]";
static const char pci_device_10b7_9050[] = "3c905 100BaseTX [Boomerang]";
static const char pci_device_10b7_9051[] = "3c905 100BaseT4 [Boomerang]";
+static const char pci_device_10b7_9054[] = "3C905B-TX Fast Etherlink XL PCI";
+#ifdef INIT_SUBSYS_INFO
+static const char pci_subsys_10b7_9054_10b7_9054[] = "3C905B-TX Fast Etherlink XL PCI";
+#endif
static const char pci_device_10b7_9055[] = "3c905B 100BaseTX [Cyclone]";
#endif
#ifdef INIT_SUBSYS_INFO
@@ -6968,6 +7300,9 @@ static const char pci_subsys_10b9_5229_103c_0024[] = "Pavilion ze4400 builtin ID
#ifdef INIT_SUBSYS_INFO
static const char pci_subsys_10b9_5229_1043_8053[] = "A7A266 Motherboard IDE";
#endif
+#ifdef INIT_SUBSYS_INFO
+static const char pci_subsys_10b9_5229_1849_5229[] = "ASRock 939Dual-SATA2 Motherboard IDE (PATA)";
+#endif
static const char pci_device_10b9_5235[] = "M5225";
static const char pci_device_10b9_5237[] = "USB 1.1 Controller";
#ifdef INIT_SUBSYS_INFO
@@ -6995,7 +7330,7 @@ static const char pci_device_10b9_524e[] = "PCI Express Root Port";
static const char pci_device_10b9_5251[] = "M5251 P1394 OHCI 1.0 Controller";
static const char pci_device_10b9_5253[] = "M5253 P1394 OHCI 1.1 Controller";
static const char pci_device_10b9_5261[] = "M5261 Ethernet Controller";
-static const char pci_device_10b9_5263[] = "M5263 Ethernet Controller";
+static const char pci_device_10b9_5263[] = "ULi 1689,1573 integrated ethernet.";
static const char pci_device_10b9_5281[] = "ALi M5281 Serial ATA / RAID Host Controller";
static const char pci_device_10b9_5287[] = "ULi 5287 SATA";
static const char pci_device_10b9_5288[] = "ULi M5288 SATA";
@@ -7227,6 +7562,9 @@ static const char pci_device_10cd_1300[] = "ABP940-U / ABP960-U";
#ifdef INIT_SUBSYS_INFO
static const char pci_subsys_10cd_1300_10cd_1310[] = "ASC1300 SCSI Adapter";
#endif
+#ifdef INIT_SUBSYS_INFO
+static const char pci_subsys_10cd_1300_1195_1320[] = "Ultra-SCSI CardBus PC Card REX CB31";
+#endif
static const char pci_device_10cd_2300[] = "ABP940-UW";
static const char pci_device_10cd_2500[] = "ABP940-U2W";
#endif
@@ -7561,8 +7899,9 @@ static const char pci_device_10de_0047[] = "NV40 [GeForce 6800 GS]";
#ifdef INIT_SUBSYS_INFO
static const char pci_subsys_10de_0047_1682_2109[] = "GeForce 6800 GS";
#endif
-static const char pci_device_10de_0048[] = "GeForce 6800 XT";
+static const char pci_device_10de_0048[] = "NV40 [GeForce 6800 XT]";
static const char pci_device_10de_0049[] = "NV40GL";
+static const char pci_device_10de_004d[] = "NV40GL [Quadro FX 4000]";
static const char pci_device_10de_004e[] = "NV40GL [Quadro FX 4000]";
static const char pci_device_10de_0050[] = "CK804 ISA Bridge";
#ifdef INIT_SUBSYS_INFO
@@ -7782,6 +8121,9 @@ static const char pci_device_10de_00c8[] = "NV41.8 [GeForce Go 6800]";
static const char pci_device_10de_00c9[] = "NV41.9 [GeForce Go 6800 Ultra]";
static const char pci_device_10de_00cc[] = "NV41 [Quadro FX Go1400]";
static const char pci_device_10de_00cd[] = "NV41 [Quadro FX 3450/4000 SDI]";
+#ifdef INIT_SUBSYS_INFO
+static const char pci_subsys_10de_00cd_10de_029b[] = "wx4300 Workstation";
+#endif
static const char pci_device_10de_00ce[] = "NV41GL [Quadro FX 1400]";
static const char pci_device_10de_00d0[] = "nForce3 LPC Bridge";
static const char pci_device_10de_00d1[] = "nForce3 Host Bridge";
@@ -7807,10 +8149,16 @@ static const char pci_device_10de_00e0[] = "nForce3 250Gb LPC Bridge";
static const char pci_subsys_10de_00e0_10de_0c11[] = "Winfast NF3250K8AA";
#endif
#ifdef INIT_SUBSYS_INFO
+static const char pci_subsys_10de_00e0_1462_7030[] = "K8N Neo-FSR v2.0";
+#endif
+#ifdef INIT_SUBSYS_INFO
static const char pci_subsys_10de_00e0_147b_1c0b[] = "NF8 Mainboard";
#endif
static const char pci_device_10de_00e1[] = "nForce3 250Gb Host Bridge";
#ifdef INIT_SUBSYS_INFO
+static const char pci_subsys_10de_00e1_1462_7030[] = "K8N Neo-FSR v2.0";
+#endif
+#ifdef INIT_SUBSYS_INFO
static const char pci_subsys_10de_00e1_147b_1c0b[] = "NF8 Mainboard";
#endif
static const char pci_device_10de_00e2[] = "nForce3 250Gb AGP Host to PCI Bridge";
@@ -7826,6 +8174,9 @@ static const char pci_device_10de_00e4[] = "nForce 250Gb PCI System Management";
static const char pci_subsys_10de_00e4_105b_0c43[] = "Winfast NF3250K8AA";
#endif
#ifdef INIT_SUBSYS_INFO
+static const char pci_subsys_10de_00e4_1462_7030[] = "K8N Neo-FSR v2.0";
+#endif
+#ifdef INIT_SUBSYS_INFO
static const char pci_subsys_10de_00e4_147b_1c0b[] = "NF8 Mainboard";
#endif
static const char pci_device_10de_00e5[] = "CK8S Parallel ATA Controller (v2.5)";
@@ -7833,6 +8184,9 @@ static const char pci_device_10de_00e5[] = "CK8S Parallel ATA Controller (v2.5)"
static const char pci_subsys_10de_00e5_105b_0c43[] = "Winfast NF3250K8AA";
#endif
#ifdef INIT_SUBSYS_INFO
+static const char pci_subsys_10de_00e5_1462_7030[] = "K8N Neo-FSR v2.0";
+#endif
+#ifdef INIT_SUBSYS_INFO
static const char pci_subsys_10de_00e5_147b_1c0b[] = "NF8 Mainboard";
#endif
static const char pci_device_10de_00e6[] = "CK8S Ethernet Controller";
@@ -7841,6 +8195,9 @@ static const char pci_device_10de_00e7[] = "CK8S USB Controller";
static const char pci_subsys_10de_00e7_105b_0c43[] = "Winfast NF3250K8AA";
#endif
#ifdef INIT_SUBSYS_INFO
+static const char pci_subsys_10de_00e7_1462_7030[] = "K8N Neo-FSR v2.0";
+#endif
+#ifdef INIT_SUBSYS_INFO
static const char pci_subsys_10de_00e7_147b_1c0b[] = "NF8 Mainboard";
#endif
static const char pci_device_10de_00e8[] = "nForce3 EHCI USB 2.0 Controller";
@@ -7848,6 +8205,9 @@ static const char pci_device_10de_00e8[] = "nForce3 EHCI USB 2.0 Controller";
static const char pci_subsys_10de_00e8_105b_0c43[] = "Winfast NF3250K8AA";
#endif
#ifdef INIT_SUBSYS_INFO
+static const char pci_subsys_10de_00e8_1462_7030[] = "K8N Neo-FSR v2.0";
+#endif
+#ifdef INIT_SUBSYS_INFO
static const char pci_subsys_10de_00e8_147b_1c0b[] = "NF8 Mainboard";
#endif
static const char pci_device_10de_00ea[] = "nForce3 250Gb AC'97 Audio Controller";
@@ -7875,6 +8235,9 @@ static const char pci_device_10de_00f3[] = "NV43 [GeForce 6200]";
static const char pci_device_10de_00f4[] = "NV43 [GeForce 6600 LE]";
static const char pci_device_10de_00f5[] = "G70 [GeForce 7800 GS]";
static const char pci_device_10de_00f6[] = "NV43 [GeForce 6600 GS]";
+#ifdef INIT_SUBSYS_INFO
+static const char pci_subsys_10de_00f6_1682_217e[] = "XFX GeForce 6800 XTreme 256MB DDR3 AGP";
+#endif
static const char pci_device_10de_00f8[] = "NV45GL [Quadro FX 3400/4400]";
static const char pci_device_10de_00f9[] = "NV40 [GeForce 6800 Ultra/GeForce 6800 GT]";
#ifdef INIT_SUBSYS_INFO
@@ -8009,6 +8372,7 @@ static const char pci_device_10de_0148[] = "NV43 [GeForce Go 6600]";
static const char pci_device_10de_0149[] = "NV43 [GeForce Go 6600 GT]";
static const char pci_device_10de_014a[] = "Quadro NVS 440";
static const char pci_device_10de_014c[] = "Quadro FX 550";
+static const char pci_device_10de_014d[] = "NV18GL [Quadro FX 550]";
static const char pci_device_10de_014e[] = "NV43GL [Quadro FX 540]";
static const char pci_device_10de_014f[] = "NV43 [GeForce 6200]";
static const char pci_device_10de_0150[] = "NV15 [GeForce2 GTS/Pro]";
@@ -8028,6 +8392,9 @@ static const char pci_subsys_10de_0150_107d_2840[] = "WinFast GeForce2 GTS with
static const char pci_subsys_10de_0150_107d_2842[] = "WinFast GeForce 2 Pro";
#endif
#ifdef INIT_SUBSYS_INFO
+static const char pci_subsys_10de_0150_10de_002e[] = "GeForce2 GTS";
+#endif
+#ifdef INIT_SUBSYS_INFO
static const char pci_subsys_10de_0150_1462_8831[] = "Creative GeForce2 Pro";
#endif
static const char pci_device_10de_0151[] = "NV15DDR [GeForce2 Ti]";
@@ -8043,9 +8410,9 @@ static const char pci_subsys_10de_0152_1048_0c56[] = "GLADIAC Ultra";
#endif
static const char pci_device_10de_0153[] = "NV15GL [Quadro2 Pro]";
static const char pci_device_10de_0160[] = "GeForce 6500";
-static const char pci_device_10de_0161[] = "GeForce 6200 TurboCache(TM)";
-static const char pci_device_10de_0162[] = "NV43 [GeForce 6200 SE]";
-static const char pci_device_10de_0163[] = "GeForce 6200 LE";
+static const char pci_device_10de_0161[] = "NV44 [GeForce 6200 TurboCache(TM)]";
+static const char pci_device_10de_0162[] = "NV44 [GeForce 6200 SE TurboCache (TM)]";
+static const char pci_device_10de_0163[] = "NV44 [GeForce 6200 LE]";
static const char pci_device_10de_0164[] = "NV44 [GeForce Go 6200]";
static const char pci_device_10de_0165[] = "NV44 [Quadro NVS 285]";
static const char pci_device_10de_0166[] = "NV43 [GeForce Go 6400]";
@@ -8078,6 +8445,9 @@ static const char pci_device_10de_0174[] = "NV17 [GeForce4 440 Go]";
static const char pci_device_10de_0175[] = "NV17 [GeForce4 420 Go]";
static const char pci_device_10de_0176[] = "NV17 [GeForce4 420 Go 32M]";
#ifdef INIT_SUBSYS_INFO
+static const char pci_subsys_10de_0176_103c_08b0[] = "tc1100 tablet";
+#endif
+#ifdef INIT_SUBSYS_INFO
static const char pci_subsys_10de_0176_4c53_1090[] = "Cx9 / Vx9 mainboard";
#endif
static const char pci_device_10de_0177[] = "NV17 [GeForce4 460 Go]";
@@ -8092,6 +8462,9 @@ static const char pci_device_10de_017c[] = "NV17GL [Quadro4 500 GoGL]";
static const char pci_device_10de_017d[] = "NV17 [GeForce4 410 Go 16M]";
static const char pci_device_10de_0181[] = "NV18 [GeForce4 MX 440 AGP 8x]";
#ifdef INIT_SUBSYS_INFO
+static const char pci_subsys_10de_0181_1043_8063[] = "GeForce4 MX 440 AGP 8X";
+#endif
+#ifdef INIT_SUBSYS_INFO
static const char pci_subsys_10de_0181_1043_806f[] = "V9180 Magic";
#endif
#ifdef INIT_SUBSYS_INFO
@@ -8132,6 +8505,10 @@ static const char pci_device_10de_01c1[] = "nForce AC'97 Modem Controller";
static const char pci_device_10de_01c2[] = "nForce USB Controller";
static const char pci_device_10de_01c3[] = "nForce Ethernet Controller";
static const char pci_device_10de_01d1[] = "GeForce 7300 LE";
+#ifdef INIT_SUBSYS_INFO
+static const char pci_subsys_10de_01d1_1462_0345[] = "7300LE PCI Express Graphics Adapter";
+#endif
+static const char pci_device_10de_01d6[] = "GeForce Go 7200";
static const char pci_device_10de_01d7[] = "Quadro NVS 110M / GeForce Go 7300";
static const char pci_device_10de_01d8[] = "GeForce Go 7400";
static const char pci_device_10de_01da[] = "Quadro NVS 110M";
@@ -8193,7 +8570,7 @@ static const char pci_device_10de_0211[] = "NV40 [GeForce 6800]";
static const char pci_device_10de_0212[] = "NV40 [GeForce 6800 LE]";
static const char pci_device_10de_0215[] = "NV40 [GeForce 6800 GT]";
static const char pci_device_10de_0218[] = "NV40 [GeForce 6800 XT]";
-static const char pci_device_10de_0221[] = "NV43 [GeForce 6200]";
+static const char pci_device_10de_0221[] = "NV44A [GeForce 6200]";
static const char pci_device_10de_0240[] = "C51PV [GeForce 6150]";
#ifdef INIT_SUBSYS_INFO
static const char pci_subsys_10de_0240_1462_7207[] = "K8NGM2 series";
@@ -8295,11 +8672,15 @@ static const char pci_device_10de_0289[] = "NV28GL [Quadro4 780 XGL]";
static const char pci_device_10de_028c[] = "NV28GLM [Quadro4 700 GoGL]";
static const char pci_device_10de_0290[] = "GeForce 7900 GTX";
static const char pci_device_10de_0291[] = "GeForce 7900 GT";
+static const char pci_device_10de_0292[] = "GeForce 7900 GS";
+static const char pci_device_10de_0298[] = "GeForce Go 7900 GS";
+static const char pci_device_10de_0299[] = "GeForce Go 7900 GTX";
static const char pci_device_10de_029a[] = "G71 [Quadro FX 2500M]";
static const char pci_device_10de_029b[] = "G71 [Quadro FX 1500M]";
static const char pci_device_10de_029c[] = "Quadro FX 5500";
static const char pci_device_10de_029d[] = "Quadro FX 3500";
static const char pci_device_10de_029e[] = "Quadro FX 1500";
+static const char pci_device_10de_029f[] = "Quadro FX 4500 X2";
static const char pci_device_10de_02a0[] = "NV2A [XGPU]";
static const char pci_device_10de_02e1[] = "GeForce 7600 GS";
static const char pci_device_10de_02f0[] = "C51 Host Bridge";
@@ -8419,19 +8800,62 @@ static const char pci_device_10de_0367[] = "MCP55 LPC Bridge";
static const char pci_device_10de_0368[] = "MCP55 SMBus";
static const char pci_device_10de_0369[] = "MCP55 Memory Controller";
static const char pci_device_10de_036a[] = "MCP55 Memory Controller";
+static const char pci_device_10de_036b[] = "MCP55 SMU";
static const char pci_device_10de_036c[] = "MCP55 USB Controller";
static const char pci_device_10de_036d[] = "MCP55 USB Controller";
static const char pci_device_10de_036e[] = "MCP55 IDE";
+static const char pci_device_10de_0370[] = "MCP55 PCI bridge";
static const char pci_device_10de_0371[] = "MCP55 High Definition Audio";
static const char pci_device_10de_0372[] = "MCP55 Ethernet";
static const char pci_device_10de_0373[] = "MCP55 Ethernet";
+static const char pci_device_10de_0374[] = "MCP55 PCI Express bridge";
+static const char pci_device_10de_0375[] = "MCP55 PCI Express bridge";
+static const char pci_device_10de_0376[] = "MCP55 PCI Express bridge";
+static const char pci_device_10de_0377[] = "MCP55 PCI Express bridge";
+static const char pci_device_10de_0378[] = "MCP55 PCI Express bridge";
static const char pci_device_10de_037a[] = "MCP55 Memory Controller";
static const char pci_device_10de_037e[] = "MCP55 SATA Controller";
static const char pci_device_10de_037f[] = "MCP55 SATA Controller";
static const char pci_device_10de_0391[] = "G70 [GeForce 7600 GT]";
static const char pci_device_10de_0392[] = "G70 [GeForce 7600 GS]";
+#ifdef INIT_SUBSYS_INFO
+static const char pci_subsys_10de_0392_1462_0622[] = "NX7600GS-T2D256EH";
+#endif
+static const char pci_device_10de_0393[] = "G70 [GeForce 7300 GT]";
static const char pci_device_10de_0398[] = "G70 [GeForce Go 7600]";
static const char pci_device_10de_039e[] = "Quadro FX 560";
+static const char pci_device_10de_03a0[] = "C55 Host Bridge";
+static const char pci_device_10de_03a1[] = "C55 Host Bridge";
+static const char pci_device_10de_03a2[] = "C55 Host Bridge";
+static const char pci_device_10de_03a3[] = "C55 Host Bridge";
+static const char pci_device_10de_03a4[] = "C55 Host Bridge";
+static const char pci_device_10de_03a5[] = "C55 Host Bridge";
+static const char pci_device_10de_03a6[] = "C55 Host Bridge";
+static const char pci_device_10de_03a7[] = "C55 Host Bridge";
+static const char pci_device_10de_03a8[] = "C55 Memory Controller";
+static const char pci_device_10de_03a9[] = "C55 Memory Controller";
+static const char pci_device_10de_03aa[] = "C55 Memory Controller";
+static const char pci_device_10de_03ab[] = "C55 Memory Controller";
+static const char pci_device_10de_03ac[] = "C55 Memory Controller";
+static const char pci_device_10de_03ad[] = "C55 Memory Controller";
+static const char pci_device_10de_03ae[] = "C55 Memory Controller";
+static const char pci_device_10de_03af[] = "C55 Memory Controller";
+static const char pci_device_10de_03b0[] = "C55 Memory Controller";
+static const char pci_device_10de_03b1[] = "C55 Memory Controller";
+static const char pci_device_10de_03b2[] = "C55 Memory Controller";
+static const char pci_device_10de_03b3[] = "C55 Memory Controller";
+static const char pci_device_10de_03b4[] = "C55 Memory Controller";
+static const char pci_device_10de_03b5[] = "C55 Memory Controller";
+static const char pci_device_10de_03b6[] = "C55 Memory Controller";
+static const char pci_device_10de_03b7[] = "C55 PCI Express bridge";
+static const char pci_device_10de_03b8[] = "C55 PCI Express bridge";
+static const char pci_device_10de_03b9[] = "C55 PCI Express bridge";
+static const char pci_device_10de_03ba[] = "C55 Memory Controller";
+static const char pci_device_10de_03bb[] = "C55 PCI Express bridge";
+static const char pci_device_10de_03d0[] = "GeForce 6100 nForce 430";
+static const char pci_device_10de_03d1[] = "GeForce 6100 nForce 405";
+static const char pci_device_10de_03d2[] = "GeForce 6100 nForce 400";
+static const char pci_device_10de_03d5[] = "GeForce 6100 nForce 420";
static const char pci_device_10de_03e0[] = "MCP61 LPC Bridge";
static const char pci_device_10de_03e1[] = "MCP61 LPC Bridge";
static const char pci_device_10de_03e2[] = "MCP61 LPC Bridge";
@@ -8440,6 +8864,8 @@ static const char pci_device_10de_03e4[] = "MCP61 High Definition Audio";
static const char pci_device_10de_03e5[] = "MCP61 Ethernet";
static const char pci_device_10de_03e6[] = "MCP61 Ethernet";
static const char pci_device_10de_03e7[] = "MCP61 SATA Controller";
+static const char pci_device_10de_03e8[] = "MCP61 PCI Express bridge";
+static const char pci_device_10de_03e9[] = "MCP61 PCI Express bridge";
static const char pci_device_10de_03ea[] = "MCP61 Memory Controller";
static const char pci_device_10de_03eb[] = "MCP61 SMBus";
static const char pci_device_10de_03ec[] = "MCP61 IDE";
@@ -8448,9 +8874,42 @@ static const char pci_device_10de_03ef[] = "MCP61 Ethernet";
static const char pci_device_10de_03f0[] = "MCP61 High Definition Audio";
static const char pci_device_10de_03f1[] = "MCP61 USB Controller";
static const char pci_device_10de_03f2[] = "MCP61 USB Controller";
+static const char pci_device_10de_03f3[] = "MCP61 PCI bridge";
+static const char pci_device_10de_03f4[] = "MCP61 SMU";
static const char pci_device_10de_03f5[] = "MCP61 Memory Controller";
static const char pci_device_10de_03f6[] = "MCP61 SATA Controller";
static const char pci_device_10de_03f7[] = "MCP61 SATA Controller";
+static const char pci_device_10de_0440[] = "MCP65 LPC Bridge";
+static const char pci_device_10de_0441[] = "MCP65 LPC Bridge";
+static const char pci_device_10de_0442[] = "MCP65 LPC Bridge";
+static const char pci_device_10de_0443[] = "MCP65 LPC Bridge";
+static const char pci_device_10de_0444[] = "MCP65 Memory Controller";
+static const char pci_device_10de_0445[] = "MCP65 Memory Controller";
+static const char pci_device_10de_0446[] = "MCP65 SMBus";
+static const char pci_device_10de_0447[] = "MCP65 SMU";
+static const char pci_device_10de_0448[] = "MCP65 IDE";
+static const char pci_device_10de_0449[] = "MCP65 PCI bridge";
+static const char pci_device_10de_044a[] = "MCP65 High Definition Audio";
+static const char pci_device_10de_044b[] = "MCP65 High Definition Audio";
+static const char pci_device_10de_044c[] = "MCP65 AHCI Controller";
+static const char pci_device_10de_044d[] = "MCP65 AHCI Controller";
+static const char pci_device_10de_044e[] = "MCP65 AHCI Controller";
+static const char pci_device_10de_044f[] = "MCP65 AHCI Controller";
+static const char pci_device_10de_0450[] = "MCP65 Ethernet";
+static const char pci_device_10de_0451[] = "MCP65 Ethernet";
+static const char pci_device_10de_0452[] = "MCP65 Ethernet";
+static const char pci_device_10de_0453[] = "MCP65 Ethernet";
+static const char pci_device_10de_0454[] = "MCP65 USB Controller";
+static const char pci_device_10de_0455[] = "MCP65 USB Controller";
+static const char pci_device_10de_0456[] = "MCP65 USB Controller";
+static const char pci_device_10de_0457[] = "MCP65 USB Controller";
+static const char pci_device_10de_0458[] = "MCP65 PCI Express bridge";
+static const char pci_device_10de_0459[] = "MCP65 PCI Express bridge";
+static const char pci_device_10de_045a[] = "MCP65 PCI Express bridge";
+static const char pci_device_10de_045c[] = "MCP65 SATA Controller";
+static const char pci_device_10de_045d[] = "MCP65 SATA Controller";
+static const char pci_device_10de_045e[] = "MCP65 SATA Controller";
+static const char pci_device_10de_045f[] = "MCP65 SATA Controller";
#ifdef VENDOR_INCLUDE_NONVIDEO
static const char pci_vendor_10df[] = "Emulex Corporation";
static const char pci_device_10df_1ae5[] = "LP6000 Fibre Channel Host Adapter";
@@ -8505,11 +8964,13 @@ static const char pci_vendor_10e2[] = "Aptix Corporation";
#ifdef VENDOR_INCLUDE_NONVIDEO
static const char pci_vendor_10e3[] = "Tundra Semiconductor Corp.";
static const char pci_device_10e3_0000[] = "CA91C042 [Universe]";
+static const char pci_device_10e3_0108[] = "Tsi108 Host Bridge for Single PowerPC";
static const char pci_device_10e3_0148[] = "Tsi148 [Tempe]";
static const char pci_device_10e3_0860[] = "CA91C860 [QSpan]";
static const char pci_device_10e3_0862[] = "CA91C862A [QSpan-II]";
static const char pci_device_10e3_8260[] = "CA91L8200B [Dual PCI PowerSpan II]";
static const char pci_device_10e3_8261[] = "CA91L8260B [Single PCI PowerSpan II]";
+static const char pci_device_10e3_a108[] = "Tsi109 Host Bridge for Dual PowerPC";
#endif
#ifdef VENDOR_INCLUDE_NONVIDEO
static const char pci_vendor_10e4[] = "Tandem Computers";
@@ -8574,6 +9035,12 @@ static const char pci_device_10eb_8111[] = "Twist3 Frame Grabber";
#ifdef VENDOR_INCLUDE_NONVIDEO
static const char pci_vendor_10ec[] = "Realtek Semiconductor Co., Ltd.";
static const char pci_device_10ec_0139[] = "Zonet Zen3200";
+static const char pci_device_10ec_0883[] = "High Definition Audio";
+#endif
+#ifdef INIT_SUBSYS_INFO
+static const char pci_subsys_10ec_0883_1025_1605[] = "TravelMate 5600 series";
+#endif
+#ifdef VENDOR_INCLUDE_NONVIDEO
static const char pci_device_10ec_8029[] = "RTL-8029(AS)";
#ifdef INIT_SUBSYS_INFO
static const char pci_subsys_10ec_8029_10b8_2011[] = "EZ-Card (SMC1208)";
@@ -8594,6 +9061,7 @@ static const char pci_device_10ec_8129[] = "RTL-8129";
#ifdef INIT_SUBSYS_INFO
static const char pci_subsys_10ec_8129_10ec_8129[] = "RT8129 Fast Ethernet Adapter";
#endif
+static const char pci_device_10ec_8136[] = "RTL8101E PCI Express Fast Ethernet controller";
static const char pci_device_10ec_8138[] = "RT8139 (B/C) Cardbus Fast Ethernet Adapter";
#ifdef INIT_SUBSYS_INFO
static const char pci_subsys_10ec_8138_10ec_8138[] = "RT8139 (B/C) Fast Ethernet Adapter";
@@ -8709,6 +9177,8 @@ static const char pci_subsys_10ec_8139_8e2e_7100[] = "KF-230TX/2";
#ifdef INIT_SUBSYS_INFO
static const char pci_subsys_10ec_8139_a0a0_0007[] = "ALN-325C";
#endif
+static const char pci_device_10ec_8167[] = "RTL-8169SC Gigabit Ethernet";
+static const char pci_device_10ec_8168[] = "RTL8111/8168B PCI Express Gigabit Ethernet controller";
static const char pci_device_10ec_8169[] = "RTL-8169 Gigabit Ethernet";
#endif
#ifdef INIT_SUBSYS_INFO
@@ -8816,6 +9286,7 @@ static const char pci_vendor_1100[] = "Jazz Multimedia";
#ifdef VENDOR_INCLUDE_NONVIDEO
static const char pci_vendor_1101[] = "Initio Corporation";
static const char pci_device_1101_1060[] = "INI-A100U2W";
+static const char pci_device_1101_1622[] = "INI-1623 PCI SATA-II Controller";
static const char pci_device_1101_9100[] = "INI-9100/9100W";
static const char pci_device_1101_9400[] = "INI-940";
static const char pci_device_1101_9401[] = "INI-950";
@@ -8898,6 +9369,13 @@ static const char pci_subsys_1102_0004_1102_1007[] = "SB0240 Audigy 2 Platinum 6
#ifdef INIT_SUBSYS_INFO
static const char pci_subsys_1102_0004_1102_2002[] = "SB Audigy 2 ZS (SB0350)";
#endif
+static const char pci_device_1102_0005[] = "SB X-Fi";
+#ifdef INIT_SUBSYS_INFO
+static const char pci_subsys_1102_0005_1102_0021[] = "X-Fi Platinum";
+#endif
+#ifdef INIT_SUBSYS_INFO
+static const char pci_subsys_1102_0005_1102_1003[] = "X-Fi XtremeMusic";
+#endif
static const char pci_device_1102_0006[] = "[SB Live! Value] EMU10k1X";
static const char pci_device_1102_0007[] = "SB Audigy LS";
#ifdef INIT_SUBSYS_INFO
@@ -9371,7 +9849,7 @@ static const char pci_subsys_1106_3059_1043_8095[] = "A7V8X Motherboard (Realtek
static const char pci_subsys_1106_3059_1043_80a1[] = "A7V8X-X Motherboard";
#endif
#ifdef INIT_SUBSYS_INFO
-static const char pci_subsys_1106_3059_1043_80b0[] = "A7V600/K8V Deluxe motherboard (ADI AD1980 codec [SoundMAX])";
+static const char pci_subsys_1106_3059_1043_80b0[] = "A7V600/K8V-X/K8V Deluxe motherboard (ADI AD1980 codec [SoundMAX])";
#endif
#ifdef INIT_SUBSYS_INFO
static const char pci_subsys_1106_3059_1043_812a[] = "A8V Deluxe motherboard (Realtek ALC850 codec)";
@@ -10186,6 +10664,27 @@ static const char pci_subsys_1131_7133_5168_0306[] = "LifeView FlyDVB-T DUO";
#ifdef INIT_SUBSYS_INFO
static const char pci_subsys_1131_7133_5168_0319[] = "LifeView FlyDVB Trio";
#endif
+#ifdef INIT_SUBSYS_INFO
+static const char pci_subsys_1131_7133_5168_0502[] = "LifeView FlyDVB-T Duo CardBus";
+#endif
+#ifdef INIT_SUBSYS_INFO
+static const char pci_subsys_1131_7133_5168_0520[] = "LifeView FlyDVB Trio CardBus";
+#endif
+#ifdef INIT_SUBSYS_INFO
+static const char pci_subsys_1131_7133_5168_1502[] = "LifeView FlyTV CardBus";
+#endif
+#ifdef INIT_SUBSYS_INFO
+static const char pci_subsys_1131_7133_5168_2502[] = "LifeView FlyDVB-T CardBus";
+#endif
+#ifdef INIT_SUBSYS_INFO
+static const char pci_subsys_1131_7133_5168_2520[] = "LifeView FlyDVB-S Duo CardBus";
+#endif
+#ifdef INIT_SUBSYS_INFO
+static const char pci_subsys_1131_7133_5168_3502[] = "LifeView FlyDVB-T Hybrid CardBus";
+#endif
+#ifdef INIT_SUBSYS_INFO
+static const char pci_subsys_1131_7133_5168_3520[] = "LifeView FlyDVB Trio N CardBus";
+#endif
static const char pci_device_1131_7134[] = "SAA7134/SAA7135HL Video Broadcast Decoder";
#ifdef INIT_SUBSYS_INFO
static const char pci_subsys_1131_7134_1019_4cb4[] = "Elitegroup ECS TVP3XP FM1216 Tuner Card(PAL-BG,FM)";
@@ -10197,6 +10696,9 @@ static const char pci_subsys_1131_7134_1043_0210[] = "Digimatrix TV";
static const char pci_subsys_1131_7134_1043_4840[] = "ASUS TV-FM 7134";
#endif
#ifdef INIT_SUBSYS_INFO
+static const char pci_subsys_1131_7134_1043_4842[] = "TV-FM 7134";
+#endif
+#ifdef INIT_SUBSYS_INFO
static const char pci_subsys_1131_7134_1131_2004[] = "EUROPA V3 reference design";
#endif
#ifdef INIT_SUBSYS_INFO
@@ -10343,6 +10845,9 @@ static const char pci_subsys_1131_7146_13c2_1102[] = "Technotrend/Hauppauge DVB
static const char pci_subsys_1131_7146_153b_1156[] = "Terratec Cynergy 1200C";
#endif
static const char pci_device_1131_9730[] = "SAA9730 Integrated Multimedia and Peripheral Controller";
+#ifdef INIT_SUBSYS_INFO
+static const char pci_subsys_1131_9730_1131_0000[] = "Integrated Multimedia and Peripheral Controller";
+#endif
#endif
#ifdef VENDOR_INCLUDE_NONVIDEO
static const char pci_vendor_1132[] = "Mitel Corp.";
@@ -11031,6 +11536,7 @@ static const char pci_device_1166_0016[] = "CMIC-GC Host Bridge";
static const char pci_device_1166_0017[] = "GCNB-LE Host Bridge";
static const char pci_device_1166_0036[] = "HT1000 PCI/PCI-X bridge";
static const char pci_device_1166_0101[] = "CIOB-X2 PCI-X I/O Bridge";
+static const char pci_device_1166_0103[] = "EPB PCI-Express to PCI-X Bridge";
static const char pci_device_1166_0104[] = "HT1000 PCI/PCI-X bridge";
static const char pci_device_1166_0110[] = "CIOB-E I/O Bridge with Gigabit Ethernet";
static const char pci_device_1166_0130[] = "HT2000 PCI-X bridge";
@@ -11038,6 +11544,9 @@ static const char pci_device_1166_0132[] = "HT2000 PCI-Express bridge";
#ifdef INIT_SUBSYS_INFO
static const char pci_subsys_1166_0132_1166_0132[] = "HT2000 PCI-Express bridge";
#endif
+static const char pci_device_1166_0140[] = "HT2100 PCI-Express Bridge";
+static const char pci_device_1166_0141[] = "HT2100 PCI-Express Bridge";
+static const char pci_device_1166_0142[] = "HT2100 PCI-Express Bridge";
static const char pci_device_1166_0200[] = "OSB4 South Bridge";
static const char pci_device_1166_0201[] = "CSB5 South Bridge";
#ifdef INIT_SUBSYS_INFO
@@ -11056,6 +11565,11 @@ static const char pci_subsys_1166_0212_4c53_1080[] = "CT8 mainboard";
static const char pci_device_1166_0213[] = "CSB6 RAID/IDE Controller";
#endif
#ifdef INIT_SUBSYS_INFO
+static const char pci_subsys_1166_0213_1028_4134[] = "PowerEdge 600SC";
+#endif
+#ifdef VENDOR_INCLUDE_NONVIDEO
+#endif
+#ifdef INIT_SUBSYS_INFO
static const char pci_subsys_1166_0213_1028_c134[] = "Poweredge SC600";
#endif
#ifdef VENDOR_INCLUDE_NONVIDEO
@@ -11358,6 +11872,7 @@ static const char pci_subsys_1186_1300_1186_1301[] = "DFE-530TX+ 10/100 Ethernet
static const char pci_subsys_1186_1300_1186_1303[] = "DFE-528TX 10/100 Fast Ethernet PCI Adapter";
#endif
static const char pci_device_1186_1340[] = "DFE-690TXD CardBus PC Card";
+static const char pci_device_1186_1405[] = "DFE-520TX Fast Ethernet PCI Adapter";
static const char pci_device_1186_1541[] = "DFE-680TXD CardBus PC Card";
static const char pci_device_1186_1561[] = "DRP-32TXD Cardbus PC Card";
static const char pci_device_1186_2027[] = "AirPlus Xtreme G DWL-G520 Adapter";
@@ -11376,6 +11891,7 @@ static const char pci_device_1186_3a14[] = "AirPremier DWL-AG530 Wireless PCI Ad
static const char pci_device_1186_3a63[] = "AirXpert DWL-AG660 Wireless Cardbus Adapter";
static const char pci_device_1186_4000[] = "DL2000-based Gigabit Ethernet";
static const char pci_device_1186_4300[] = "DGE-528T Gigabit Ethernet Adapter";
+static const char pci_device_1186_4800[] = "DGE-530T Gigabit Ethernet Adapter (rev 11)";
static const char pci_device_1186_4b01[] = "DGE-530T Gigabit Ethernet Adapter (rev 11)";
static const char pci_device_1186_4c00[] = "Gigabit Ethernet Adapter";
#ifdef INIT_SUBSYS_INFO
@@ -11888,6 +12404,7 @@ static const char pci_device_11ab_6041[] = "MV88SX6041 4-port SATA II PCI-X Cont
static const char pci_device_11ab_6081[] = "MV88SX6081 8-port SATA II PCI-X Controller";
static const char pci_device_11ab_6460[] = "MV64360/64361/64362 System Controller";
static const char pci_device_11ab_6480[] = "MV64460/64461/64462 System Controller";
+static const char pci_device_11ab_6485[] = "MV64460/64461/64462 System Controller, Revision B";
static const char pci_device_11ab_f003[] = "GT-64010 Primary Image Piranha Image Generator";
#endif
#ifdef VENDOR_INCLUDE_NONVIDEO
@@ -12293,6 +12810,7 @@ static const char pci_device_11c1_ab30[] = "Hermes2 Mini-PCI WaveLAN a/b/g";
static const char pci_subsys_11c1_ab30_14cd_2012[] = "Hermes2 Mini-PCI WaveLAN a/b/g";
#endif
static const char pci_device_11c1_ed00[] = "ET-131x PCI-E Ethernet Controller";
+static const char pci_device_11c1_ed01[] = "ET-131x PCI-E Ethernet Controller";
#endif
#ifdef VENDOR_INCLUDE_NONVIDEO
static const char pci_vendor_11c2[] = "Sand Microelectronics";
@@ -12675,6 +13193,7 @@ static const char pci_vendor_1216[] = "Purup Prepress A/S";
#endif
#ifdef VENDOR_INCLUDE_NONVIDEO
static const char pci_vendor_1217[] = "O2 Micro, Inc.";
+static const char pci_device_1217_00f7[] = "Firewire (IEEE 1394)";
static const char pci_device_1217_6729[] = "OZ6729";
static const char pci_device_1217_673a[] = "OZ6730";
static const char pci_device_1217_6832[] = "OZ6832/6833 CardBus Controller";
@@ -12711,7 +13230,10 @@ static const char pci_subsys_1217_7110_1734_106c[] = "Amilo A1645";
static const char pci_device_1217_7112[] = "OZ711EC1/M1 SmartCardBus/MemoryCardBus Controller";
static const char pci_device_1217_7113[] = "OZ711EC1 SmartCardBus Controller";
static const char pci_device_1217_7114[] = "OZ711M1/MC1 4-in-1 MemoryCardBus Controller";
+static const char pci_device_1217_7120[] = "Integrated MMC/SD Controller";
+static const char pci_device_1217_7130[] = "Integrated MS/xD Controller";
static const char pci_device_1217_7134[] = "OZ711MP1/MS1 MemoryCardBus Controller";
+static const char pci_device_1217_7135[] = "Cardbus bridge";
static const char pci_device_1217_71e2[] = "OZ711E2 SmartCardBus Controller";
static const char pci_device_1217_7212[] = "OZ711M2 4-in-1 MemoryCardBus Controller";
static const char pci_device_1217_7213[] = "OZ6933E CardBus Controller";
@@ -13129,6 +13651,7 @@ static const char pci_vendor_1258[] = "Gilbarco, Inc.";
static const char pci_vendor_1259[] = "Allied Telesyn International";
static const char pci_device_1259_2560[] = "AT-2560 Fast Ethernet Adapter (i82557B)";
static const char pci_device_1259_a117[] = "RTL81xx Fast Ethernet";
+static const char pci_device_1259_a11e[] = "RTL81xx Fast Ethernet";
static const char pci_device_1259_a120[] = "21x4x DEC-Tulip compatible 10/100 Ethernet";
#endif
#ifdef VENDOR_INCLUDE_NONVIDEO
@@ -13324,6 +13847,9 @@ static const char pci_subsys_1260_3890_1186_3202[] = "DWL-G650 A1 Wireless Adapt
static const char pci_subsys_1260_3890_1259_c104[] = "CG-WLCB54GT Wireless Adapter";
#endif
#ifdef INIT_SUBSYS_INFO
+static const char pci_subsys_1260_3890_1260_0000[] = "WG511 Wireless Adapter";
+#endif
+#ifdef INIT_SUBSYS_INFO
static const char pci_subsys_1260_3890_1385_4800[] = "WG511 Wireless Adapter";
#endif
#ifdef INIT_SUBSYS_INFO
@@ -14844,7 +15370,7 @@ static const char pci_vendor_1313[] = "Yaskawa Electric Co.";
static const char pci_vendor_1316[] = "Teradyne Inc";
#endif
#ifdef VENDOR_INCLUDE_NONVIDEO
-static const char pci_vendor_1317[] = "Linksys";
+static const char pci_vendor_1317[] = "ADMtek";
static const char pci_device_1317_0981[] = "21x4x DEC-Tulip compatible 10/100 Ethernet";
static const char pci_device_1317_0985[] = "NC100 Network Everywhere Fast Ethernet 10/100";
#ifdef INIT_SUBSYS_INFO
@@ -14852,15 +15378,15 @@ static const char pci_subsys_1317_0985_1734_100c[] = "Scenic N300 ADMtek AN983 1
#endif
static const char pci_device_1317_1985[] = "21x4x DEC-Tulip compatible 10/100 Ethernet";
static const char pci_device_1317_2850[] = "HSP MicroModem 56";
-static const char pci_device_1317_5120[] = "ADMtek ADM5120 OpenGate System-on-Chip";
-static const char pci_device_1317_8201[] = "ADMtek ADM8211 802.11b Wireless Interface";
+static const char pci_device_1317_5120[] = "ADM5120 OpenGate System-on-Chip";
+static const char pci_device_1317_8201[] = "ADM8211 802.11b Wireless Interface";
#ifdef INIT_SUBSYS_INFO
static const char pci_subsys_1317_8201_10b8_2635[] = "SMC2635W 802.11b (11Mbps) wireless lan pcmcia (cardbus) card";
#endif
#ifdef INIT_SUBSYS_INFO
static const char pci_subsys_1317_8201_1317_8201[] = "SMC2635W 802.11b (11mbps) wireless lan pcmcia (cardbus) card";
#endif
-static const char pci_device_1317_8211[] = "ADMtek ADM8211 802.11b Wireless Interface";
+static const char pci_device_1317_8211[] = "ADM8211 802.11b Wireless Interface";
static const char pci_device_1317_9511[] = "21x4x DEC-Tulip compatible 10/100 Ethernet";
#endif
#ifdef VENDOR_INCLUDE_NONVIDEO
@@ -15162,6 +15688,7 @@ static const char pci_device_1360_0203[] = "GPS169PCI GPS Receiver";
static const char pci_device_1360_0204[] = "GPS170PCI GPS Receiver";
static const char pci_device_1360_0301[] = "TCR510PCI IRIG Timecode Reader";
static const char pci_device_1360_0302[] = "TCR167PCI IRIG Timecode Reader";
+static const char pci_device_1360_0303[] = "TCR511PCI IRIG Timecode Reader";
#endif
#ifdef VENDOR_INCLUDE_NONVIDEO
static const char pci_vendor_1361[] = "Soliton Systems K.K.";
@@ -15192,6 +15719,10 @@ static const char pci_vendor_1369[] = "Digigram";
#endif
#ifdef VENDOR_INCLUDE_NONVIDEO
static const char pci_vendor_136a[] = "High Soft Tech";
+static const char pci_device_136a_0004[] = "HST Saphir VII mini PCI";
+static const char pci_device_136a_0007[] = "HST Saphir III E MultiLink 4";
+static const char pci_device_136a_0008[] = "HST Saphir III E MultiLink 8";
+static const char pci_device_136a_000a[] = "HST Saphir III E MultiLink 2";
#endif
#ifdef VENDOR_INCLUDE_NONVIDEO
static const char pci_vendor_136b[] = "Kawasaki Steel Corporation";
@@ -15328,6 +15859,10 @@ static const char pci_device_1385_622a[] = "GA622";
static const char pci_device_1385_630a[] = "GA630 Gigabit Ethernet";
static const char pci_device_1385_6b00[] = "WG311v3 54 Mbps Wireless PCI Adapter";
static const char pci_device_1385_6d00[] = "WPNT511 RangeMax 240 Mbps Wireless PC Card";
+static const char pci_device_1385_7b00[] = "WN511B RangeMax Next 280 Mbps Wireless PC Card";
+static const char pci_device_1385_7c00[] = "WN511T RangeMax Next 300 Mbps Wireless PC Card";
+static const char pci_device_1385_7d00[] = "WN311B RangeMax Next 270 Mbps Wireless PCI Adapter";
+static const char pci_device_1385_7e00[] = "WN311T RangeMax Next 300 Mbps Wireless PCI Adapter";
static const char pci_device_1385_f004[] = "FA310TX";
#endif
#ifdef VENDOR_INCLUDE_NONVIDEO
@@ -15801,7 +16336,26 @@ static const char pci_vendor_13fd[] = "Micro Science Inc";
#ifdef VENDOR_INCLUDE_NONVIDEO
static const char pci_vendor_13fe[] = "Advantech Co. Ltd";
static const char pci_device_13fe_1240[] = "PCI-1240 4-channel stepper motor controller card";
-static const char pci_device_13fe_1600[] = "PCI-1612 4-port RS-232/422/485 PCI communication card";
+static const char pci_device_13fe_1600[] = "PCI-16xx series PCI multiport serial board (function 0)";
+#ifdef INIT_SUBSYS_INFO
+static const char pci_subsys_13fe_1600_1601_0002[] = "PCI-1601 2-port unisolated RS-422/485";
+#endif
+#ifdef INIT_SUBSYS_INFO
+static const char pci_subsys_13fe_1600_1602_0002[] = "PCI-1602 2-port isolated RS-422/485";
+#endif
+#ifdef INIT_SUBSYS_INFO
+static const char pci_subsys_13fe_1600_1612_0004[] = "PCI-1612 4-port RS-232/422/485";
+#endif
+static const char pci_device_13fe_16ff[] = "PCI-16xx series PCI multiport serial board (function 1: RX/TX steering CPLD)";
+#ifdef INIT_SUBSYS_INFO
+static const char pci_subsys_13fe_16ff_1601_0000[] = "PCI-1601 2-port unisolated RS-422/485 PCI communications card";
+#endif
+#ifdef INIT_SUBSYS_INFO
+static const char pci_subsys_13fe_16ff_1602_0000[] = "PCI-1602 2-port isolated RS-422/485";
+#endif
+#ifdef INIT_SUBSYS_INFO
+static const char pci_subsys_13fe_16ff_1612_0000[] = "PCI-1612 4-port RS-232/422/485";
+#endif
static const char pci_device_13fe_1733[] = "PCI-1733 32-channel isolated digital input card";
static const char pci_device_13fe_1752[] = "PCI-1752";
static const char pci_device_13fe_1754[] = "PCI-1754";
@@ -15985,7 +16539,20 @@ static const char pci_vendor_1414[] = "Microsoft Corporation";
#ifdef VENDOR_INCLUDE_NONVIDEO
static const char pci_vendor_1415[] = "Oxford Semiconductor Ltd";
static const char pci_device_1415_8403[] = "VScom 011H-EP1 1 port parallel adaptor";
-static const char pci_device_1415_9501[] = "OX16PCI954 (Quad 16950 UART) function 0";
+static const char pci_device_1415_9500[] = "OX16PCI954 (Quad 16950 UART) function 0 (Disabled)";
+static const char pci_device_1415_9501[] = "OX16PCI954 (Quad 16950 UART) function 0 (Uart)";
+#ifdef INIT_SUBSYS_INFO
+static const char pci_subsys_1415_9501_12c4_0201[] = "Titan/cPCI (2 port)";
+#endif
+#ifdef INIT_SUBSYS_INFO
+static const char pci_subsys_1415_9501_12c4_0202[] = "Titan/cPCI (4 port)";
+#endif
+#ifdef INIT_SUBSYS_INFO
+static const char pci_subsys_1415_9501_12c4_0203[] = "Titan/cPCI (8 port)";
+#endif
+#ifdef INIT_SUBSYS_INFO
+static const char pci_subsys_1415_9501_12c4_0210[] = "Titan/104-Plus (8 port, p1-4)";
+#endif
#ifdef INIT_SUBSYS_INFO
static const char pci_subsys_1415_9501_131f_2050[] = "CyberPro (4-port)";
#endif
@@ -16001,13 +16568,21 @@ static const char pci_subsys_1415_9501_15ed_2001[] = "MCCR Serial p0-3 of 16";
static const char pci_device_1415_950a[] = "EXSYS EX-41092 Dual 16950 Serial adapter";
static const char pci_device_1415_950b[] = "OXCB950 Cardbus 16950 UART";
static const char pci_device_1415_9510[] = "OX16PCI954 (Quad 16950 UART) function 1 (Disabled)";
-static const char pci_device_1415_9511[] = "OX16PCI954 (Quad 16950 UART) function 1";
+#ifdef INIT_SUBSYS_INFO
+static const char pci_subsys_1415_9510_12c4_0200[] = "Titan/cPCI (Unused)";
+#endif
+static const char pci_device_1415_9511[] = "OX16PCI954 (Quad 16950 UART) function 1 (8bit bus)";
+#ifdef INIT_SUBSYS_INFO
+static const char pci_subsys_1415_9511_12c4_0211[] = "Titan/104-Plus (8 port, p5-8)";
+#endif
#ifdef INIT_SUBSYS_INFO
static const char pci_subsys_1415_9511_15ed_2000[] = "MCCR Serial p4-7 of 8";
#endif
#ifdef INIT_SUBSYS_INFO
static const char pci_subsys_1415_9511_15ed_2001[] = "MCCR Serial p4-15 of 16";
#endif
+static const char pci_device_1415_9512[] = "OX16PCI954 (Quad 16950 UART) function 1 (32bit bus)";
+static const char pci_device_1415_9513[] = "OX16PCI954 (Quad 16950 UART) function 1 (parallel port)";
static const char pci_device_1415_9521[] = "OX16PCI952 (Dual 16950 UART)";
static const char pci_device_1415_9523[] = "OX16PCI952 Integrated Parallel Port";
#endif
@@ -16106,6 +16681,13 @@ static const char pci_vendor_1433[] = "Eltec Elektronik GmbH";
#endif
#ifdef VENDOR_INCLUDE_NONVIDEO
static const char pci_vendor_1435[] = "RTD Embedded Technologies, Inc.";
+static const char pci_device_1435_4520[] = "PCI4520";
+static const char pci_device_1435_6020[] = "SPM6020";
+static const char pci_device_1435_6030[] = "SPM6030";
+static const char pci_device_1435_6420[] = "SPM186420";
+static const char pci_device_1435_6430[] = "SPM176430";
+static const char pci_device_1435_7520[] = "DM7520";
+static const char pci_device_1435_7820[] = "DM7820";
#endif
#ifdef VENDOR_INCLUDE_NONVIDEO
static const char pci_vendor_1436[] = "CIS Technology Inc";
@@ -16434,6 +17016,7 @@ static const char pci_device_1497_1497[] = "SMA Technologie AG";
static const char pci_vendor_1498[] = "TEWS Datentechnik GmBH";
static const char pci_device_1498_0330[] = "TPMC816 2 Channel CAN bus controller.";
static const char pci_device_1498_0385[] = "TPMC901 Extended CAN bus with 2/4/6 CAN controller";
+static const char pci_device_1498_21cc[] = "TCP460 CompactPCI 16 Channel Serial Interface RS232/RS422";
static const char pci_device_1498_21cd[] = "TCP461 CompactPCI 8 Channel Serial Interface RS232/RS422";
static const char pci_device_1498_30c8[] = "TPCI200";
#endif
@@ -16564,6 +17147,8 @@ static const char pci_vendor_14bb[] = "SEMTECH Corporation";
#endif
#ifdef VENDOR_INCLUDE_NONVIDEO
static const char pci_vendor_14bc[] = "Globespan Semiconductor Inc.";
+static const char pci_device_14bc_d002[] = "Pulsar [PCI ADSL Card]";
+static const char pci_device_14bc_d00f[] = "Pulsar [PCI ADSL Card]";
#endif
#ifdef VENDOR_INCLUDE_NONVIDEO
static const char pci_vendor_14bd[] = "CARDIO Control N.V.";
@@ -16579,9 +17164,14 @@ static const char pci_vendor_14c0[] = "COMPAL Electronics Inc";
#endif
#ifdef VENDOR_INCLUDE_NONVIDEO
static const char pci_vendor_14c1[] = "MYRICOM Inc.";
-static const char pci_device_14c1_0008[] = "Myri-10G Dual-Protocol Interconnect";
+static const char pci_device_14c1_0008[] = "Myri-10G Dual-Protocol NIC (10G-PCIE-8A)";
static const char pci_device_14c1_8043[] = "Myrinet 2000 Scalable Cluster Interconnect";
#endif
+#ifdef INIT_SUBSYS_INFO
+static const char pci_subsys_14c1_8043_103c_1240[] = "Myrinet M2L-PCI64/2-3.0 LANai 7.4 (HP OEM)";
+#endif
+#ifdef VENDOR_INCLUDE_NONVIDEO
+#endif
#ifdef VENDOR_INCLUDE_NONVIDEO
static const char pci_vendor_14c2[] = "DTK Computer";
#endif
@@ -16724,6 +17314,9 @@ static const char pci_device_14e4_080f[] = "Sentry5 DDR/SDR RAM Controller";
static const char pci_device_14e4_0811[] = "Sentry5 External Interface Core";
static const char pci_device_14e4_0816[] = "BCM3302 Sentry5 MIPS32 CPU";
static const char pci_device_14e4_1600[] = "NetXtreme BCM5752 Gigabit Ethernet PCI Express";
+#ifdef INIT_SUBSYS_INFO
+static const char pci_subsys_14e4_1600_107b_5048[] = "E4500 Onboard";
+#endif
static const char pci_device_14e4_1601[] = "NetXtreme BCM5752M Gigabit Ethernet PCI Express";
static const char pci_device_14e4_1644[] = "NetXtreme BCM5700 Gigabit Ethernet";
#ifdef INIT_SUBSYS_INFO
@@ -16945,6 +17538,18 @@ static const char pci_subsys_14e4_1648_0e11_00d1[] = "NC7783 Gigabit Server Adap
#endif
#ifdef VENDOR_INCLUDE_NONVIDEO
#ifdef INIT_SUBSYS_INFO
+static const char pci_subsys_14e4_1648_10a9_8013[] = "Dual Port Gigabit Ethernet (PCI-X,Copper)";
+#endif
+#ifdef INIT_SUBSYS_INFO
+static const char pci_subsys_14e4_1648_10a9_8018[] = "Dual Port Gigabit Ethernet (A330)";
+#endif
+#ifdef INIT_SUBSYS_INFO
+static const char pci_subsys_14e4_1648_10a9_801a[] = "Dual Port Gigabit Ethernet (IA-blade)";
+#endif
+#ifdef INIT_SUBSYS_INFO
+static const char pci_subsys_14e4_1648_10a9_801b[] = "Quad Port Gigabit Ethernet (PCI-E,Copper)";
+#endif
+#ifdef INIT_SUBSYS_INFO
static const char pci_subsys_14e4_1648_10b7_2000[] = "3C998-T Dual Port 10/100/1000 PCI-X";
#endif
#ifdef INIT_SUBSYS_INFO
@@ -16959,10 +17564,25 @@ static const char pci_subsys_14e4_1648_1734_100b[] = "Primergy RX300";
static const char pci_device_14e4_164a[] = "NetXtreme II BCM5706 Gigabit Ethernet";
#endif
#ifdef INIT_SUBSYS_INFO
+static const char pci_subsys_14e4_164a_103c_3070[] = "NC380T PCI Express Dual Port Multifunction Gigabit Server Adapter";
+#endif
+#ifdef VENDOR_INCLUDE_NONVIDEO
+#endif
+#ifdef INIT_SUBSYS_INFO
static const char pci_subsys_14e4_164a_103c_3101[] = "NC370T MultifuNCtion Gigabit Server Adapter";
#endif
#ifdef VENDOR_INCLUDE_NONVIDEO
static const char pci_device_14e4_164c[] = "NetXtreme II BCM5708 Gigabit Ethernet";
+#endif
+#ifdef INIT_SUBSYS_INFO
+static const char pci_subsys_14e4_164c_103c_7037[] = "NC373T PCI Express Multifunction Gigabit Server Adapter";
+#endif
+#ifdef VENDOR_INCLUDE_NONVIDEO
+#endif
+#ifdef INIT_SUBSYS_INFO
+static const char pci_subsys_14e4_164c_103c_7038[] = "NC373i Integrated Multifunction Gigabit Server Adapter";
+#endif
+#ifdef VENDOR_INCLUDE_NONVIDEO
static const char pci_device_14e4_164d[] = "NetXtreme BCM5702FE Gigabit Ethernet";
static const char pci_device_14e4_1653[] = "NetXtreme BCM5705 Gigabit Ethernet";
#endif
@@ -16978,7 +17598,7 @@ static const char pci_subsys_14e4_1654_0e11_00e3[] = "NC7761 Gigabit Server Adap
#ifdef VENDOR_INCLUDE_NONVIDEO
#endif
#ifdef INIT_SUBSYS_INFO
-static const char pci_subsys_14e4_1654_103c_3100[] = "NC1020 HP ProLiant Gigabit Server Adapter 32 PCI";
+static const char pci_subsys_14e4_1654_103c_3100[] = "NC1020 ProLiant Gigabit Server Adapter 32 PCI";
#endif
#ifdef VENDOR_INCLUDE_NONVIDEO
#endif
@@ -17067,7 +17687,17 @@ static const char pci_subsys_14e4_1677_103c_3006[] = "DC7100 SFF(DX878AV)";
static const char pci_subsys_14e4_1677_1734_105d[] = "Scenic W620";
#endif
static const char pci_device_14e4_1678[] = "NetXtreme BCM5715 Gigabit Ethernet";
-static const char pci_device_14e4_1679[] = "NetXtreme 5715S Gigabit Ethernet";
+static const char pci_device_14e4_1679[] = "NetXtreme BCM5715S Gigabit Ethernet";
+#endif
+#ifdef INIT_SUBSYS_INFO
+static const char pci_subsys_14e4_1679_103c_1707[] = "NC326m PCIe Dual Port Adapter";
+#endif
+#ifdef VENDOR_INCLUDE_NONVIDEO
+#endif
+#ifdef INIT_SUBSYS_INFO
+static const char pci_subsys_14e4_1679_103c_170c[] = "NC325m PCIe Quad Port Adapter";
+#endif
+#ifdef VENDOR_INCLUDE_NONVIDEO
#endif
#ifdef INIT_SUBSYS_INFO
static const char pci_subsys_14e4_1679_103c_703c[] = "NC326i PCIe Dual Port Gigabit Server Adapter";
@@ -17076,17 +17706,21 @@ static const char pci_subsys_14e4_1679_103c_703c[] = "NC326i PCIe Dual Port Giga
static const char pci_device_14e4_167a[] = "NetXtreme BCM5754 Gigabit Ethernet PCI Express";
static const char pci_device_14e4_167b[] = "NetXtreme BCM5755 Gigabit Ethernet PCI Express";
static const char pci_device_14e4_167d[] = "NetXtreme BCM5751M Gigabit Ethernet PCI Express";
+#ifdef INIT_SUBSYS_INFO
+static const char pci_subsys_14e4_167d_17aa_2081[] = "Thinkpad R60e model 0657";
+#endif
static const char pci_device_14e4_167e[] = "NetXtreme BCM5751F Fast Ethernet PCI Express";
static const char pci_device_14e4_1693[] = "NetLink BCM5787M Gigabit Ethernet PCI Express";
static const char pci_device_14e4_1696[] = "NetXtreme BCM5782 Gigabit Ethernet";
#endif
#ifdef INIT_SUBSYS_INFO
-static const char pci_subsys_14e4_1696_103c_12bc[] = "HP d530 CMT (DG746A)";
+static const char pci_subsys_14e4_1696_103c_12bc[] = "d530 CMT (DG746A)";
#endif
#ifdef VENDOR_INCLUDE_NONVIDEO
#ifdef INIT_SUBSYS_INFO
static const char pci_subsys_14e4_1696_14e4_000d[] = "NetXtreme BCM5782 1000Base-T";
#endif
+static const char pci_device_14e4_169a[] = "NetLink BCM5786 Gigabit Ethernet PCI Express";
static const char pci_device_14e4_169b[] = "NetLink BCM5787 Gigabit Ethernet PCI Express";
static const char pci_device_14e4_169c[] = "NetXtreme BCM5788 Gigabit Ethernet";
#endif
@@ -17137,6 +17771,12 @@ static const char pci_subsys_14e4_16a7_14e4_800a[] = "NetXtreme BCM5703 1000Base
#endif
static const char pci_device_14e4_16a8[] = "NetXtreme BCM5704S Gigabit Ethernet";
#ifdef INIT_SUBSYS_INFO
+static const char pci_subsys_14e4_16a8_10a9_8014[] = "Dual Port Gigabit Ethernet (PCI-X,Fiber)";
+#endif
+#ifdef INIT_SUBSYS_INFO
+static const char pci_subsys_14e4_16a8_10a9_801c[] = "Quad Port Gigabit Ethernet (PCI-E,Fiber)";
+#endif
+#ifdef INIT_SUBSYS_INFO
static const char pci_subsys_14e4_16a8_10b7_2001[] = "3C998-SX Dual Port 1000-SX PCI-X";
#endif
static const char pci_device_14e4_16aa[] = "NetXtreme II BCM5706S Gigabit Ethernet";
@@ -17146,6 +17786,21 @@ static const char pci_subsys_14e4_16aa_103c_3102[] = "NC370F MultifuNCtion Gigab
#endif
#ifdef VENDOR_INCLUDE_NONVIDEO
static const char pci_device_14e4_16ac[] = "NetXtreme II BCM5708S Gigabit Ethernet";
+#endif
+#ifdef INIT_SUBSYS_INFO
+static const char pci_subsys_14e4_16ac_103c_1706[] = "NC373m Multifunction Gigabit Server Adapter";
+#endif
+#ifdef VENDOR_INCLUDE_NONVIDEO
+#endif
+#ifdef INIT_SUBSYS_INFO
+static const char pci_subsys_14e4_16ac_103c_703b[] = "NC373i Integrated Multifunction Gigabit Server Adapter";
+#endif
+#ifdef VENDOR_INCLUDE_NONVIDEO
+#endif
+#ifdef INIT_SUBSYS_INFO
+static const char pci_subsys_14e4_16ac_103c_703d[] = "NC373F PCI Express Multifunction Gigabit Server Adapter";
+#endif
+#ifdef VENDOR_INCLUDE_NONVIDEO
static const char pci_device_14e4_16c6[] = "NetXtreme BCM5702A3 Gigabit Ethernet";
#ifdef INIT_SUBSYS_INFO
static const char pci_subsys_14e4_16c6_10b7_1100[] = "3C1000B-T 10/100/1000 PCI";
@@ -17226,6 +17881,7 @@ static const char pci_device_14e4_4305[] = "BCM4307 V.90 56k Modem";
static const char pci_device_14e4_4306[] = "BCM4307 Ethernet Controller";
static const char pci_device_14e4_4307[] = "BCM4307 802.11b Wireless LAN Controller";
static const char pci_device_14e4_4310[] = "BCM4310 Chipcommon I/OController";
+static const char pci_device_14e4_4311[] = "Dell Wireless 1390 WLAN Mini-PCI Card";
static const char pci_device_14e4_4312[] = "BCM4310 UART";
static const char pci_device_14e4_4313[] = "BCM4310 Ethernet Controller";
static const char pci_device_14e4_4315[] = "BCM4310 USB Controller";
@@ -17256,7 +17912,7 @@ static const char pci_subsys_14e4_4318_16ec_0119[] = "U.S.Robotics Wireless MAXg
#ifdef INIT_SUBSYS_INFO
static const char pci_subsys_14e4_4318_1737_0048[] = "WPC54G-EU version 3 [Wireless-G Notebook Adapter]";
#endif
-static const char pci_device_14e4_4319[] = "Dell Wireless 1470 DualBand WLAN";
+static const char pci_device_14e4_4319[] = "BCM4311 [AirForce 54g] 802.11a/b/g PCI Express Transceiver";
static const char pci_device_14e4_4320[] = "BCM4306 802.11b/g Wireless LAN Controller";
#endif
#ifdef INIT_SUBSYS_INFO
@@ -17334,7 +17990,13 @@ static const char pci_subsys_14e4_4325_1414_0003[] = "Wireless Notebook Adapter
static const char pci_subsys_14e4_4325_1414_0004[] = "Wireless PCI Adapter MN-730";
#endif
static const char pci_device_14e4_4326[] = "BCM4307 Chipcommon I/O Controller?";
+static const char pci_device_14e4_4329[] = "BCM43XG";
static const char pci_device_14e4_4401[] = "BCM4401 100Base-T";
+#endif
+#ifdef INIT_SUBSYS_INFO
+static const char pci_subsys_14e4_4401_103c_08b0[] = "tc1100 tablet";
+#endif
+#ifdef VENDOR_INCLUDE_NONVIDEO
#ifdef INIT_SUBSYS_INFO
static const char pci_subsys_14e4_4401_1043_80a8[] = "A7V8X motherboard";
#endif
@@ -18264,6 +18926,7 @@ static const char pci_vendor_1541[] = "MACHONE Communications";
#endif
#ifdef VENDOR_INCLUDE_NONVIDEO
static const char pci_vendor_1542[] = "Concurrent Computer Corporation";
+static const char pci_device_1542_9260[] = "RCIM-II Real-Time Clock & Interrupt Module";
#endif
#ifdef VENDOR_INCLUDE_NONVIDEO
static const char pci_vendor_1543[] = "SILICON Laboratories";
@@ -18973,6 +19636,7 @@ static const char pci_device_166d_0002[] = "SiByte BCM1125H/1250 System-on-a-Chi
static const char pci_vendor_1677[] = "Bernecker + Rainer";
static const char pci_device_1677_104e[] = "5LS172.6 B&R Dual CAN Interface Card";
static const char pci_device_1677_12d7[] = "5LS172.61 B&R Dual CAN Interface Card";
+static const char pci_device_1677_20ad[] = "5ACPCI.MFIO-K01 Profibus DP / K-Feldbus / COM";
#endif
#ifdef VENDOR_INCLUDE_NONVIDEO
static const char pci_vendor_167b[] = "ZyDAS Technology Corp.";
@@ -19048,22 +19712,31 @@ static const char pci_subsys_168c_0013_1458_e911[] = "Gigabyte GN-WIAG02";
static const char pci_subsys_168c_0013_14b7_0a60[] = "8482-WD ORiNOCO 11a/b/g Wireless PCI Adapter";
#endif
#ifdef INIT_SUBSYS_INFO
+static const char pci_subsys_168c_0013_1668_1026[] = "IBM HighRate 11 a/b/g Wireless CardBus Adapter";
+#endif
+#ifdef INIT_SUBSYS_INFO
static const char pci_subsys_168c_0013_168c_0013[] = "AirPlus XtremeG DWL-G650 Wireless PCMCIA Adapter";
#endif
#ifdef INIT_SUBSYS_INFO
static const char pci_subsys_168c_0013_168c_1025[] = "DWL-G650B2 Wireless CardBus Adapter";
#endif
#ifdef INIT_SUBSYS_INFO
-static const char pci_subsys_168c_0013_168c_1027[] = "Netgate NL-3054CB ARIES b/g CardBus Adapter";
+static const char pci_subsys_168c_0013_168c_1027[] = "Engenius NL-3054CB ARIES b/g CardBus Adapter";
+#endif
+#ifdef INIT_SUBSYS_INFO
+static const char pci_subsys_168c_0013_168c_1042[] = "Ubiquiti Networks SuperRange a/b/g Cardbus Adapter";
#endif
#ifdef INIT_SUBSYS_INFO
static const char pci_subsys_168c_0013_168c_2026[] = "Netgate 5354MP ARIES a(108Mb turbo)/b/g MiniPCI Adapter";
#endif
#ifdef INIT_SUBSYS_INFO
-static const char pci_subsys_168c_0013_168c_2041[] = "Netgate 5354MP Plus ARIES2 b/g MiniPCI Adapter";
+static const char pci_subsys_168c_0013_168c_2041[] = "Engenius 5354MP Plus ARIES2 b/g MiniPCI Adapter";
+#endif
+#ifdef INIT_SUBSYS_INFO
+static const char pci_subsys_168c_0013_168c_2042[] = "Engenius 5354MP Plus ARIES2 a/b/g MiniPCI Adapter";
#endif
#ifdef INIT_SUBSYS_INFO
-static const char pci_subsys_168c_0013_168c_2042[] = "Netgate 5354MP Plus ARIES2 a/b/g MiniPCI Adapter";
+static const char pci_subsys_168c_0013_168c_2051[] = "TRENDnet TEW-443PI Wireless PCI Adapter";
#endif
#ifdef INIT_SUBSYS_INFO
static const char pci_subsys_168c_0013_16ab_7302[] = "Trust Speedshare Turbo Pro Wireless PCI Adapter";
@@ -19091,6 +19764,9 @@ static const char pci_subsys_168c_001a_1186_3a23[] = "D-Link AirPlus G DWL-G520+
static const char pci_subsys_168c_001a_1186_3a24[] = "D-Link AirPlus G DWL-G650+A Wireless Cardbus Adapter";
#endif
#ifdef INIT_SUBSYS_INFO
+static const char pci_subsys_168c_001a_168c_001a[] = "Belkin FD7000";
+#endif
+#ifdef INIT_SUBSYS_INFO
static const char pci_subsys_168c_001a_168c_1052[] = "TP-Link TL-WN510G Wireless CardBus Adapter";
#endif
static const char pci_device_168c_001b[] = "AR5006X 802.11abg NIC";
@@ -19101,13 +19777,16 @@ static const char pci_subsys_168c_001b_1186_3a19[] = "D-Link AirPremier AG DWL-A
static const char pci_subsys_168c_001b_1186_3a22[] = "D-Link AirPremier AG DWL-AG530 Wireless PCI Adapter";
#endif
#ifdef INIT_SUBSYS_INFO
-static const char pci_subsys_168c_001b_168c_2062[] = "EnGenius EMP-8602 (400mw)";
+static const char pci_subsys_168c_001b_168c_2062[] = "EnGenius EMP-8602 (400mw) or Compex WLM54AG (SuperAG)";
#endif
#ifdef INIT_SUBSYS_INFO
-static const char pci_subsys_168c_001b_168c_2063[] = "EnGenius EMP-8602 (400mw)";
+static const char pci_subsys_168c_001b_168c_2063[] = "EnGenius EMP-8602 (400mw) or Compex WLM54AG";
#endif
static const char pci_device_168c_0020[] = "AR5005VL 802.11bg Wireless NIC";
static const char pci_device_168c_1014[] = "AR5212 802.11abg NIC";
+#ifdef INIT_SUBSYS_INFO
+static const char pci_subsys_168c_1014_1014_058a[] = "ThinkPad 11a/b/g Wireless LAN Mini Express Adapter (AR5BXB6)";
+#endif
#endif
#ifdef VENDOR_INCLUDE_NONVIDEO
static const char pci_vendor_1695[] = "EPoX Computer Co., Ltd.";
@@ -19174,9 +19853,14 @@ static const char pci_vendor_16e3[] = "European Space Agency";
static const char pci_device_16e3_1e0f[] = "LEON2FT Processor";
#endif
#ifdef VENDOR_INCLUDE_NONVIDEO
+static const char pci_vendor_16e5[] = "Intellon Corp.";
+static const char pci_device_16e5_6000[] = "INT6000 Ethernet-to-Powerline Bridge [HomePlug AV]";
+#endif
+#ifdef VENDOR_INCLUDE_NONVIDEO
static const char pci_vendor_16ec[] = "U.S. Robotics";
static const char pci_device_16ec_00ff[] = "USR997900 10/100 Mbps PCI Network Card";
static const char pci_device_16ec_0116[] = "USR997902 10/100/1000 Mbps PCI Network Card";
+static const char pci_device_16ec_2f00[] = "USR5660A (USR265660A, USR5660A-BP) 56K PCI Faxmodem";
static const char pci_device_16ec_3685[] = "Wireless Access PCI Adapter Model 022415";
#endif
#ifdef VENDOR_INCLUDE_NONVIDEO
@@ -19354,15 +20038,38 @@ static const char pci_vendor_17d5[] = "S2io Inc.";
static const char pci_device_17d5_5831[] = "Xframe 10 Gigabit Ethernet PCI-X";
#endif
#ifdef INIT_SUBSYS_INFO
-static const char pci_subsys_17d5_5831_103c_12d5[] = "HP PCI-X 133MHz 10GbE SR Fiber";
+static const char pci_subsys_17d5_5831_103c_12d5[] = "PCI-X 133MHz 10GbE SR Fiber";
#endif
#ifdef VENDOR_INCLUDE_NONVIDEO
+#ifdef INIT_SUBSYS_INFO
+static const char pci_subsys_17d5_5831_10a9_8020[] = "Single Port 10 Gigabit Ethernet (PCI-X, Fiber)";
+#endif
+#ifdef INIT_SUBSYS_INFO
+static const char pci_subsys_17d5_5831_10a9_8024[] = "Single Port 10 Gigabit Ethernet (PCI-X, Fiber)";
+#endif
static const char pci_device_17d5_5832[] = "Xframe II 10Gbps Ethernet";
+#ifdef INIT_SUBSYS_INFO
+static const char pci_subsys_17d5_5832_10a9_8021[] = "Single Port 10 Gigabit Ethernet II (PCI-X, Fiber)";
+#endif
+#endif
+#ifdef VENDOR_INCLUDE_NONVIDEO
+static const char pci_vendor_17db[] = "Cray Inc";
#endif
#ifdef VENDOR_INCLUDE_NONVIDEO
static const char pci_vendor_17de[] = "KWorld Computer Co. Ltd.";
#endif
#ifdef VENDOR_INCLUDE_NONVIDEO
+static const char pci_vendor_17e4[] = "Sectra AB";
+static const char pci_device_17e4_0001[] = "KK671 Cardbus encryption board";
+static const char pci_device_17e4_0002[] = "KK672 Cardbus encryption board";
+#endif
+#ifdef VENDOR_INCLUDE_NONVIDEO
+static const char pci_vendor_17e6[] = "Entropic Communications Inc.";
+static const char pci_device_17e6_0010[] = "EN2010 [c.Link] MoCA Network Controller (Coax, PCI interface)";
+static const char pci_device_17e6_0011[] = "EN2010 [c.Link] MoCA Network Controller (Coax, MPEG interface)";
+static const char pci_device_17e6_0021[] = "EN2210 [c.Link] MoCA Network Controller (Coax)";
+#endif
+#ifdef VENDOR_INCLUDE_NONVIDEO
static const char pci_vendor_17ee[] = "Connect Components Ltd";
#endif
#ifdef VENDOR_INCLUDE_NONVIDEO
@@ -19480,11 +20187,15 @@ static const char pci_vendor_183b[] = "MikroM GmbH";
static const char pci_device_183b_08a7[] = "MVC100 DVI";
static const char pci_device_183b_08a8[] = "MVC101 SDI";
static const char pci_device_183b_08a9[] = "MVC102 DVI+Audio";
+static const char pci_device_183b_08b0[] = "MVC200-DC";
#endif
#ifdef VENDOR_INCLUDE_NONVIDEO
static const char pci_vendor_1849[] = "ASRock Incorporation";
#endif
#ifdef VENDOR_INCLUDE_NONVIDEO
+static const char pci_vendor_184a[] = "Thales Computers";
+#endif
+#ifdef VENDOR_INCLUDE_NONVIDEO
static const char pci_vendor_1851[] = "Microtune, Inc.";
#endif
#ifdef VENDOR_INCLUDE_NONVIDEO
@@ -19520,6 +20231,9 @@ static const char pci_device_187e_3403[] = "ZyAir G-110 802.11g";
static const char pci_device_187e_340e[] = "M-302 802.11g XtremeMIMO";
#endif
#ifdef VENDOR_INCLUDE_NONVIDEO
+static const char pci_vendor_1885[] = "Avvida Systems Inc.";
+#endif
+#ifdef VENDOR_INCLUDE_NONVIDEO
static const char pci_vendor_1888[] = "Varisys Ltd";
static const char pci_device_1888_0301[] = "VMFX1 FPGA PMC module";
static const char pci_device_1888_0601[] = "VSM2 dual PMC carrier";
@@ -19544,7 +20258,8 @@ static const char pci_vendor_18a1[] = "Astute Networks Inc.";
#ifdef VENDOR_INCLUDE_NONVIDEO
static const char pci_vendor_18ac[] = "DViCO Corporation";
static const char pci_device_18ac_d500[] = "FusionHDTV 5";
-static const char pci_device_18ac_d810[] = "FusionHDTV 3 Gold";
+static const char pci_device_18ac_d800[] = "FusionHDTV 3 Gold";
+static const char pci_device_18ac_d810[] = "FusionHDTV 3 Gold-Q";
static const char pci_device_18ac_d820[] = "FusionHDTV 3 Gold-T";
#endif
#ifdef VENDOR_INCLUDE_NONVIDEO
@@ -19612,6 +20327,12 @@ static const char pci_subsys_18ec_c058_18ec_d004[] = "COMBO-2XFP";
#endif
#endif
#ifdef VENDOR_INCLUDE_NONVIDEO
+static const char pci_vendor_18f6[] = "NextIO";
+static const char pci_device_18f6_1000[] = "[Nexsis] Switch Virtual P2P PCIe Bridge";
+static const char pci_device_18f6_1050[] = "[Nexsis] Switch Virtual P2P PCI Bridge";
+static const char pci_device_18f6_2000[] = "[Nexsis] Switch Integrated Mgmt. Endpoint";
+#endif
+#ifdef VENDOR_INCLUDE_NONVIDEO
static const char pci_vendor_18f7[] = "Commtech, Inc.";
static const char pci_device_18f7_0001[] = "Fastcom ESCC-PCI-335";
static const char pci_device_18f7_0002[] = "Fastcom 422/4-PCI-335";
@@ -19630,6 +20351,7 @@ static const char pci_device_1904_8139[] = "RTL8139D [Realtek] PCI 10/100BaseTX
static const char pci_vendor_1923[] = "Sangoma Technologies Corp.";
static const char pci_device_1923_0040[] = "A200/Remora FXO/FXS Analog AFT card";
static const char pci_device_1923_0100[] = "A104d QUAD T1/E1 AFT card";
+static const char pci_device_1923_0300[] = "A101 single-port T1/E1";
static const char pci_device_1923_0400[] = "A104u Quad T1/E1 AFT";
#endif
#ifdef VENDOR_INCLUDE_NONVIDEO
@@ -19647,7 +20369,16 @@ static const char pci_vendor_1942[] = "ClearSpeed Technology plc";
static const char pci_device_1942_e511[] = "CSX600 Advance Accelerator Board";
#endif
#ifdef VENDOR_INCLUDE_NONVIDEO
+static const char pci_vendor_194a[] = "DapTechnology B.V.";
+static const char pci_device_194a_1111[] = "FireSpy3850";
+static const char pci_device_194a_1112[] = "FireSpy450b";
+static const char pci_device_194a_1113[] = "FireSpy450bT";
+static const char pci_device_194a_1114[] = "FireSpy850";
+static const char pci_device_194a_1115[] = "FireSpy850bT";
+#endif
+#ifdef VENDOR_INCLUDE_NONVIDEO
static const char pci_vendor_1957[] = "Freescale Semiconductor Inc";
+static const char pci_device_1957_0012[] = "MPC8548 [PowerQUICC III]";
static const char pci_device_1957_0080[] = "MPC8349E";
static const char pci_device_1957_0081[] = "MPC8349";
static const char pci_device_1957_0082[] = "MPC8347E TBGA";
@@ -19665,6 +20396,10 @@ static const char pci_vendor_1966[] = "Orad Hi-Tec Systems";
static const char pci_device_1966_1975[] = "DVG64 family";
#endif
#ifdef VENDOR_INCLUDE_NONVIDEO
+static const char pci_vendor_1969[] = "Attansic Technology Corp.";
+static const char pci_device_1969_1048[] = "L1 Gigabit Ethernet Adapter";
+#endif
+#ifdef VENDOR_INCLUDE_NONVIDEO
static const char pci_vendor_196a[] = "Sensory Networks Inc.";
static const char pci_device_196a_0101[] = "NodalCore C-1000 Content Classification Accelerator";
static const char pci_device_196a_0102[] = "NodalCore C-2000 Content Classification Accelerator";
@@ -19709,9 +20444,15 @@ static const char pci_vendor_19d4[] = "Quixant Limited";
static const char pci_vendor_19e2[] = "Vector Informatik GmbH";
#endif
#ifdef VENDOR_INCLUDE_NONVIDEO
+static const char pci_vendor_19e7[] = "NET (Network Equipment Technologies)";
+static const char pci_device_19e7_1001[] = "STIX DSP Card";
+static const char pci_device_19e7_1002[] = "STIX - 1 Port T1/E1 Card";
+static const char pci_device_19e7_1003[] = "STIX - 2 Port T1/E1 Card";
+static const char pci_device_19e7_1004[] = "STIX - 4 Port T1/E1 Card";
+static const char pci_device_19e7_1005[] = "STIX - 4 Port FXS Card";
+#endif
static const char pci_vendor_1a03[] = "ASPEED Technology, Inc.";
static const char pci_device_1a03_2000[] = "AST2000";
-#endif
#ifdef VENDOR_INCLUDE_NONVIDEO
static const char pci_vendor_1a08[] = "Sierra semiconductor";
static const char pci_device_1a08_0000[] = "SC15064";
@@ -19723,6 +20464,9 @@ static const char pci_vendor_1a1d[] = "GFaI e.V.";
static const char pci_vendor_1a29[] = "Fortinet, Inc.";
#endif
#ifdef VENDOR_INCLUDE_NONVIDEO
+static const char pci_vendor_1a51[] = "Hectronic AB";
+#endif
+#ifdef VENDOR_INCLUDE_NONVIDEO
static const char pci_vendor_1b13[] = "Jaton Corp";
#endif
#ifdef VENDOR_INCLUDE_NONVIDEO
@@ -19803,6 +20547,9 @@ static const char pci_device_3388_0014[] = "HiNT HC4 PCI to ISDN bridge, Network
static const char pci_device_3388_0020[] = "HB6 Universal PCI-PCI bridge (transparent mode)";
static const char pci_device_3388_0021[] = "HB6 Universal PCI-PCI bridge (non-transparent mode)";
#ifdef INIT_SUBSYS_INFO
+static const char pci_subsys_3388_0021_1775_ce90[] = "CE9";
+#endif
+#ifdef INIT_SUBSYS_INFO
static const char pci_subsys_3388_0021_4c53_1050[] = "CT7 mainboard";
#endif
#ifdef INIT_SUBSYS_INFO
@@ -20019,12 +20766,21 @@ static const char pci_subsys_4444_0016_0070_ff92[] = "WiNTV PVR-550";
static const char pci_subsys_4444_0016_0270_0801[] = "WinTV PVR 150";
#endif
#ifdef INIT_SUBSYS_INFO
+static const char pci_subsys_4444_0016_10fc_d038[] = "GV-MVP/RX2W (1st unit)";
+#endif
+#ifdef INIT_SUBSYS_INFO
+static const char pci_subsys_4444_0016_10fc_d039[] = "GV-MVP/RX2W (2nd unit)";
+#endif
+#ifdef INIT_SUBSYS_INFO
static const char pci_subsys_4444_0016_12ab_fff3[] = "MPG600";
#endif
#ifdef INIT_SUBSYS_INFO
static const char pci_subsys_4444_0016_12ab_ffff[] = "MPG600";
#endif
#ifdef INIT_SUBSYS_INFO
+static const char pci_subsys_4444_0016_1461_c019[] = "UltraTV 1500 MCE";
+#endif
+#ifdef INIT_SUBSYS_INFO
static const char pci_subsys_4444_0016_9005_0092[] = "VideOh! AVC-2010";
#endif
#ifdef INIT_SUBSYS_INFO
@@ -20454,6 +21210,7 @@ static const char pci_device_6666_0101[] = "PCI 8255/8254 I/O Card";
static const char pci_vendor_7063[] = "pcHDTV";
static const char pci_device_7063_2000[] = "HD-2000";
static const char pci_device_7063_3000[] = "HD-3000";
+static const char pci_device_7063_5500[] = "HD5500 HDTV";
#endif
#ifdef VENDOR_INCLUDE_NONVIDEO
static const char pci_vendor_7604[] = "O.N. Electronic Co Ltd.";
@@ -20606,7 +21363,7 @@ static const char pci_subsys_8086_1008_8086_1107[] = "PRO/1000 XT Server Adapter
static const char pci_subsys_8086_1008_8086_2107[] = "PRO/1000 XT Server Adapter";
#endif
#ifdef INIT_SUBSYS_INFO
-static const char pci_subsys_8086_1008_8086_2110[] = "PRO/1000 XT Server Adapter";
+static const char pci_subsys_8086_1008_8086_2110[] = "PRO/1000 XT Desktop Adapter";
#endif
#ifdef INIT_SUBSYS_INFO
static const char pci_subsys_8086_1008_8086_3108[] = "PRO/1000 XT Network Connection";
@@ -20653,10 +21410,10 @@ static const char pci_subsys_8086_100e_1014_0267[] = "PRO/1000 MT Network Connec
static const char pci_subsys_8086_100e_1014_026a[] = "PRO/1000 MT Network Connection";
#endif
#ifdef INIT_SUBSYS_INFO
-static const char pci_subsys_8086_100e_1024_0134[] = "Poweredge SC600";
+static const char pci_subsys_8086_100e_1028_002e[] = "Optiplex GX260";
#endif
#ifdef INIT_SUBSYS_INFO
-static const char pci_subsys_8086_100e_1028_002e[] = "Optiplex GX260";
+static const char pci_subsys_8086_100e_1028_0134[] = "PowerEdge 600SC";
#endif
#ifdef INIT_SUBSYS_INFO
static const char pci_subsys_8086_100e_1028_0151[] = "PRO/1000 MT Network Connection";
@@ -20712,10 +21469,10 @@ static const char pci_subsys_8086_1010_4c53_10a0[] = "CA3/CR3 mainboard";
static const char pci_subsys_8086_1010_8086_1011[] = "PRO/1000 MT Dual Port Server Adapter";
#endif
#ifdef INIT_SUBSYS_INFO
-static const char pci_subsys_8086_1010_8086_1012[] = "Primergy RX300";
+static const char pci_subsys_8086_1010_8086_1012[] = "PRO/1000 MT Dual Port Server Adapter";
#endif
#ifdef INIT_SUBSYS_INFO
-static const char pci_subsys_8086_1010_8086_101a[] = "PRO/1000 MT Dual Port Network Adapter";
+static const char pci_subsys_8086_1010_8086_101a[] = "PRO/1000 MT Dual Port Network Connection";
#endif
#ifdef INIT_SUBSYS_INFO
static const char pci_subsys_8086_1010_8086_3424[] = "SE7501HG2 Mainboard";
@@ -20737,19 +21494,28 @@ static const char pci_subsys_8086_1012_0e11_00dc[] = "NC6170 Gigabit Server Adap
#ifdef INIT_SUBSYS_INFO
static const char pci_subsys_8086_1012_8086_1012[] = "PRO/1000 MF Dual Port Server Adapter";
#endif
-static const char pci_device_8086_1013[] = "82541EI Gigabit Ethernet Controller (Copper)";
+static const char pci_device_8086_1013[] = "82541EI Gigabit Ethernet Controller";
#ifdef INIT_SUBSYS_INFO
static const char pci_subsys_8086_1013_8086_0013[] = "PRO/1000 MT Network Connection";
#endif
#ifdef INIT_SUBSYS_INFO
-static const char pci_subsys_8086_1013_8086_1013[] = "IBM ThinkCentre Network Card";
+static const char pci_subsys_8086_1013_8086_1013[] = "PRO/1000 MT Network Connection";
#endif
#ifdef INIT_SUBSYS_INFO
static const char pci_subsys_8086_1013_8086_1113[] = "PRO/1000 MT Desktop Adapter";
#endif
static const char pci_device_8086_1014[] = "82541ER Gigabit Ethernet Controller";
+#ifdef INIT_SUBSYS_INFO
+static const char pci_subsys_8086_1014_8086_0014[] = "PRO/1000 MT Desktop Connection";
+#endif
+#ifdef INIT_SUBSYS_INFO
+static const char pci_subsys_8086_1014_8086_1014[] = "PRO/1000 MT Network Connection";
+#endif
static const char pci_device_8086_1015[] = "82540EM Gigabit Ethernet Controller (LOM)";
-static const char pci_device_8086_1016[] = "82540EP Gigabit Ethernet Controller (LOM)";
+#ifdef INIT_SUBSYS_INFO
+static const char pci_subsys_8086_1015_8086_1015[] = "PRO/1000 MT Mobile Connection";
+#endif
+static const char pci_device_8086_1016[] = "82540EP Gigabit Ethernet Controller (Mobile)";
#ifdef INIT_SUBSYS_INFO
static const char pci_subsys_8086_1016_1014_052c[] = "PRO/1000 MT Mobile Connection";
#endif
@@ -20759,15 +21525,15 @@ static const char pci_subsys_8086_1016_1179_0001[] = "PRO/1000 MT Mobile Connect
#ifdef INIT_SUBSYS_INFO
static const char pci_subsys_8086_1016_8086_1016[] = "PRO/1000 MT Mobile Connection";
#endif
-static const char pci_device_8086_1017[] = "82540EP Gigabit Ethernet Controller (LOM)";
+static const char pci_device_8086_1017[] = "82540EP Gigabit Ethernet Controller";
#ifdef INIT_SUBSYS_INFO
static const char pci_subsys_8086_1017_8086_1017[] = "PR0/1000 MT Desktop Connection";
#endif
static const char pci_device_8086_1018[] = "82541EI Gigabit Ethernet Controller";
#ifdef INIT_SUBSYS_INFO
-static const char pci_subsys_8086_1018_8086_1018[] = "PRO/1000 MT Desktop Adapter";
+static const char pci_subsys_8086_1018_8086_1018[] = "PRO/1000 MT Mobile Connection";
#endif
-static const char pci_device_8086_1019[] = "82547EI Gigabit Ethernet Controller (LOM)";
+static const char pci_device_8086_1019[] = "82547EI Gigabit Ethernet Controller";
#ifdef INIT_SUBSYS_INFO
static const char pci_subsys_8086_1019_1458_1019[] = "GA-8IPE1000 Pro2 motherboard (865PE)";
#endif
@@ -20787,6 +21553,9 @@ static const char pci_subsys_8086_1019_8086_302c[] = "Intel 82865G Mainboard (D8
static const char pci_subsys_8086_1019_8086_3427[] = "S875WP1-E mainboard";
#endif
static const char pci_device_8086_101a[] = "82547EI Gigabit Ethernet Controller (Mobile)";
+#ifdef INIT_SUBSYS_INFO
+static const char pci_subsys_8086_101a_8086_101a[] = "PRO/1000 CT Mobile Connection";
+#endif
static const char pci_device_8086_101d[] = "82546EB Gigabit Ethernet Controller";
#ifdef INIT_SUBSYS_INFO
static const char pci_subsys_8086_101d_8086_1000[] = "PRO/1000 MT Quad Port Server Adapter";
@@ -20815,6 +21584,9 @@ static const char pci_subsys_8086_1026_8086_1001[] = "PRO/1000 MT Server Adapter
static const char pci_subsys_8086_1026_8086_1002[] = "PRO/1000 MT Server Adapter";
#endif
#ifdef INIT_SUBSYS_INFO
+static const char pci_subsys_8086_1026_8086_1003[] = "PRO/1000 GT Server Adapter";
+#endif
+#ifdef INIT_SUBSYS_INFO
static const char pci_subsys_8086_1026_8086_1026[] = "PRO/1000 MT Server Connection";
#endif
static const char pci_device_8086_1027[] = "82545GM Gigabit Ethernet Controller";
@@ -20835,7 +21607,7 @@ static const char pci_subsys_8086_1027_8086_1027[] = "PRO/1000 MF Server Adapter
#endif
static const char pci_device_8086_1028[] = "82545GM Gigabit Ethernet Controller";
#ifdef INIT_SUBSYS_INFO
-static const char pci_subsys_8086_1028_8086_1028[] = "PRO/1000 MB Server Adapter";
+static const char pci_subsys_8086_1028_8086_1028[] = "PRO/1000 MB Server Connection";
#endif
static const char pci_device_8086_1029[] = "82559 Ethernet Controller";
static const char pci_device_8086_1030[] = "82559 InBusiness 10/100";
@@ -20870,7 +21642,7 @@ static const char pci_subsys_8086_1031_144d_c006[] = "vpr Matrix 170B4";
static const char pci_device_8086_1032[] = "82801CAM (ICH3) PRO/100 VE Ethernet Controller";
static const char pci_device_8086_1033[] = "82801CAM (ICH3) PRO/100 VM (LOM) Ethernet Controller";
static const char pci_device_8086_1034[] = "82801CAM (ICH3) PRO/100 VM Ethernet Controller";
-static const char pci_device_8086_1035[] = "82801CAM (ICH3)/82562EH (LOM) Ethernet Controller";
+static const char pci_device_8086_1035[] = "82801CAM (ICH3)/82562EH (LOM) Ethernet Controller";
static const char pci_device_8086_1036[] = "82801CAM (ICH3) 82562EH Ethernet Controller";
static const char pci_device_8086_1037[] = "82801CAM (ICH3) Chipset Ethernet Controller";
static const char pci_device_8086_1038[] = "82801CAM (ICH3) PRO/100 VM (KM) Ethernet Controller";
@@ -20885,6 +21657,9 @@ static const char pci_device_8086_103a[] = "82801DB PRO/100 VE (CNR) Ethernet Co
static const char pci_device_8086_103b[] = "82801DB PRO/100 VM (LOM) Ethernet Controller";
static const char pci_device_8086_103c[] = "82801DB PRO/100 VM (CNR) Ethernet Controller";
static const char pci_device_8086_103d[] = "82801DB PRO/100 VE (MOB) Ethernet Controller";
+#ifdef INIT_SUBSYS_INFO
+static const char pci_subsys_8086_103d_1014_0522[] = "Thinkpad R50e model 1634";
+#endif
static const char pci_device_8086_103e[] = "82801DB PRO/100 VM (MOB) Ethernet Controller";
static const char pci_device_8086_1040[] = "536EP Data Fax Modem";
#ifdef INIT_SUBSYS_INFO
@@ -20892,8 +21667,17 @@ static const char pci_subsys_8086_1040_16be_1040[] = "V.9X DSP Data Fax Modem";
#endif
static const char pci_device_8086_1043[] = "PRO/Wireless LAN 2100 3B Mini PCI Adapter";
#ifdef INIT_SUBSYS_INFO
+static const char pci_subsys_8086_1043_103c_08b0[] = "tc1100 tablet";
+#endif
+#ifdef INIT_SUBSYS_INFO
+static const char pci_subsys_8086_1043_8086_2522[] = "Samsung P30 integrated WLAN";
+#endif
+#ifdef INIT_SUBSYS_INFO
static const char pci_subsys_8086_1043_8086_2527[] = "MIM2000/Centrino";
#endif
+#ifdef INIT_SUBSYS_INFO
+static const char pci_subsys_8086_1043_8086_2581[] = "Toshiba Satellite M10";
+#endif
static const char pci_device_8086_1048[] = "PRO/10GbE LR Server Adapter";
#ifdef INIT_SUBSYS_INFO
static const char pci_subsys_8086_1048_8086_a01f[] = "PRO/10GbE LR Server Adapter";
@@ -20901,7 +21685,11 @@ static const char pci_subsys_8086_1048_8086_a01f[] = "PRO/10GbE LR Server Adapte
#ifdef INIT_SUBSYS_INFO
static const char pci_subsys_8086_1048_8086_a11f[] = "PRO/10GbE LR Server Adapter";
#endif
-static const char pci_device_8086_104b[] = "Ethernet Controller";
+static const char pci_device_8086_1049[] = "82566MM Gigabit Network Connection";
+static const char pci_device_8086_104a[] = "82566DM Gigabit Network Connection";
+static const char pci_device_8086_104b[] = "82566DC Gigabit Network Connection";
+static const char pci_device_8086_104c[] = "82562V 10/100 Network Connection";
+static const char pci_device_8086_104d[] = "82566MC Gigabit Network Connection";
static const char pci_device_8086_1050[] = "82562EZ 10/100 Ethernet Controller";
#ifdef INIT_SUBSYS_INFO
static const char pci_subsys_8086_1050_1462_728c[] = "865PE Neo2 (MS-6728)";
@@ -20921,13 +21709,57 @@ static const char pci_subsys_8086_1050_8086_3427[] = "S875WP1-E mainboard";
static const char pci_device_8086_1051[] = "82801EB/ER (ICH5/ICH5R) integrated LAN Controller";
static const char pci_device_8086_1052[] = "PRO/100 VM Network Connection";
static const char pci_device_8086_1053[] = "PRO/100 VM Network Connection";
+static const char pci_device_8086_1054[] = "PRO/100 VE Network Connection";
+static const char pci_device_8086_1055[] = "PRO/100 VM Network Connection";
+static const char pci_device_8086_1056[] = "PRO/100 VE Network Connection";
+static const char pci_device_8086_1057[] = "PRO/100 VE Network Connection";
static const char pci_device_8086_1059[] = "82551QM Ethernet Controller";
+static const char pci_device_8086_105b[] = "82546GB Gigabit Ethernet Controller (Copper)";
static const char pci_device_8086_105e[] = "82571EB Gigabit Ethernet Controller";
#ifdef INIT_SUBSYS_INFO
+static const char pci_subsys_8086_105e_103c_7044[] = "NC360T PCI Express Dual Port Gigabit Server Adapter";
+#endif
+#ifdef INIT_SUBSYS_INFO
static const char pci_subsys_8086_105e_1775_6003[] = "Telum GE-QT";
#endif
+#ifdef INIT_SUBSYS_INFO
+static const char pci_subsys_8086_105e_8086_005e[] = "PRO/1000 PT Dual Port Server Connection";
+#endif
+#ifdef INIT_SUBSYS_INFO
+static const char pci_subsys_8086_105e_8086_105e[] = "PRO/1000 PT Dual Port Network Connection";
+#endif
+#ifdef INIT_SUBSYS_INFO
+static const char pci_subsys_8086_105e_8086_115e[] = "PRO/1000 PT Dual Port Server Adapter";
+#endif
+#ifdef INIT_SUBSYS_INFO
+static const char pci_subsys_8086_105e_8086_116e[] = "PRO/1000 PT Dual Port Server Adapter";
+#endif
+#ifdef INIT_SUBSYS_INFO
+static const char pci_subsys_8086_105e_8086_125e[] = "PRO/1000 PT Dual Port Server Adapter";
+#endif
+#ifdef INIT_SUBSYS_INFO
+static const char pci_subsys_8086_105e_8086_135e[] = "PRO/1000 PT Dual Port Server Adapter";
+#endif
static const char pci_device_8086_105f[] = "82571EB Gigabit Ethernet Controller";
+#ifdef INIT_SUBSYS_INFO
+static const char pci_subsys_8086_105f_8086_115f[] = "PRO/1000 PF Dual Port Server Adapter";
+#endif
+#ifdef INIT_SUBSYS_INFO
+static const char pci_subsys_8086_105f_8086_116f[] = "PRO/1000 PF Dual Port Server Adapter";
+#endif
+#ifdef INIT_SUBSYS_INFO
+static const char pci_subsys_8086_105f_8086_125f[] = "PRO/1000 PF Dual Port Server Adapter";
+#endif
+#ifdef INIT_SUBSYS_INFO
+static const char pci_subsys_8086_105f_8086_135f[] = "PRO/1000 PF Dual Port Server Adapter";
+#endif
static const char pci_device_8086_1060[] = "82571EB Gigabit Ethernet Controller";
+#ifdef INIT_SUBSYS_INFO
+static const char pci_subsys_8086_1060_8086_0060[] = "PRO/1000 PB Dual Port Server Connection";
+#endif
+#ifdef INIT_SUBSYS_INFO
+static const char pci_subsys_8086_1060_8086_1060[] = "PRO/1000 PB Dual Port Server Connection";
+#endif
static const char pci_device_8086_1064[] = "82562ET/EZ/GT/GZ - PRO/100 VE (LOM) Ethernet Controller";
#ifdef INIT_SUBSYS_INFO
static const char pci_subsys_8086_1064_1043_80f8[] = "P5GD1-VW Mainboard";
@@ -20949,7 +21781,7 @@ static const char pci_subsys_8086_1075_8086_0075[] = "PRO/1000 CT Network Connec
#ifdef INIT_SUBSYS_INFO
static const char pci_subsys_8086_1075_8086_1075[] = "PRO/1000 CT Network Connection";
#endif
-static const char pci_device_8086_1076[] = "82541GI/PI Gigabit Ethernet Controller";
+static const char pci_device_8086_1076[] = "82541GI Gigabit Ethernet Controller";
#ifdef INIT_SUBSYS_INFO
static const char pci_subsys_8086_1076_1028_0165[] = "PowerEdge 750";
#endif
@@ -20966,7 +21798,7 @@ static const char pci_subsys_8086_1076_8086_1076[] = "PRO/1000 MT Network Connec
static const char pci_subsys_8086_1076_8086_1176[] = "PRO/1000 MT Desktop Adapter";
#endif
#ifdef INIT_SUBSYS_INFO
-static const char pci_subsys_8086_1076_8086_1276[] = "PRO/1000 MT Desktop Adapter";
+static const char pci_subsys_8086_1076_8086_1276[] = "PRO/1000 MT Network Adapter";
#endif
static const char pci_device_8086_1077[] = "82541GI Gigabit Ethernet Controller";
#ifdef INIT_SUBSYS_INFO
@@ -20978,16 +21810,22 @@ static const char pci_subsys_8086_1077_8086_0077[] = "PRO/1000 MT Mobile Connect
#ifdef INIT_SUBSYS_INFO
static const char pci_subsys_8086_1077_8086_1077[] = "PRO/1000 MT Mobile Connection";
#endif
-static const char pci_device_8086_1078[] = "82541EI Gigabit Ethernet Controller";
+static const char pci_device_8086_1078[] = "82541ER Gigabit Ethernet Controller";
#ifdef INIT_SUBSYS_INFO
-static const char pci_subsys_8086_1078_8086_1078[] = "PRO/1000 MT Network Connection";
+static const char pci_subsys_8086_1078_8086_1078[] = "82541ER-based Network Connection";
#endif
static const char pci_device_8086_1079[] = "82546GB Gigabit Ethernet Controller";
#ifdef INIT_SUBSYS_INFO
-static const char pci_subsys_8086_1079_103c_12a6[] = "HP Dual Port 1000Base-T [A9900A]";
+static const char pci_subsys_8086_1079_103c_12a6[] = "Dual Port 1000Base-T [A9900A]";
#endif
#ifdef INIT_SUBSYS_INFO
-static const char pci_subsys_8086_1079_103c_12cf[] = "HP Core Dual Port 1000Base-T [AB352A]";
+static const char pci_subsys_8086_1079_103c_12cf[] = "Core Dual Port 1000Base-T [AB352A]";
+#endif
+#ifdef INIT_SUBSYS_INFO
+static const char pci_subsys_8086_1079_1775_10d0[] = "V5D Single Board Computer Gigabit Ethernet";
+#endif
+#ifdef INIT_SUBSYS_INFO
+static const char pci_subsys_8086_1079_1775_ce90[] = "CE9";
#endif
#ifdef INIT_SUBSYS_INFO
static const char pci_subsys_8086_1079_1fc1_0027[] = "Niagara 2261 Failover NIC";
@@ -21005,14 +21843,14 @@ static const char pci_subsys_8086_1079_8086_0079[] = "PRO/1000 MT Dual Port Netw
static const char pci_subsys_8086_1079_8086_1079[] = "PRO/1000 MT Dual Port Network Connection";
#endif
#ifdef INIT_SUBSYS_INFO
-static const char pci_subsys_8086_1079_8086_1179[] = "PRO/1000 MT Dual Port Network Connection";
+static const char pci_subsys_8086_1079_8086_1179[] = "PRO/1000 MT Dual Port Server Adapter";
#endif
#ifdef INIT_SUBSYS_INFO
static const char pci_subsys_8086_1079_8086_117a[] = "PRO/1000 MT Dual Port Server Adapter";
#endif
static const char pci_device_8086_107a[] = "82546GB Gigabit Ethernet Controller";
#ifdef INIT_SUBSYS_INFO
-static const char pci_subsys_8086_107a_103c_12a8[] = "HP Dual Port 1000base-SX [A9899A]";
+static const char pci_subsys_8086_107a_103c_12a8[] = "Dual Port 1000base-SX [A9899A]";
#endif
#ifdef INIT_SUBSYS_INFO
static const char pci_subsys_8086_107a_8086_107a[] = "PRO/1000 MF Dual Port Server Adapter";
@@ -21028,43 +21866,121 @@ static const char pci_subsys_8086_107b_8086_007b[] = "PRO/1000 MB Dual Port Serv
static const char pci_subsys_8086_107b_8086_107b[] = "PRO/1000 MB Dual Port Server Connection";
#endif
static const char pci_device_8086_107c[] = "82541PI Gigabit Ethernet Controller";
-static const char pci_device_8086_107d[] = "82572EI Gigabit Ethernet Controller";
-static const char pci_device_8086_107e[] = "82572EI Gigabit Ethernet Controller";
+#ifdef INIT_SUBSYS_INFO
+static const char pci_subsys_8086_107c_8086_1376[] = "PRO/1000 GT Desktop Adapter";
+#endif
+#ifdef INIT_SUBSYS_INFO
+static const char pci_subsys_8086_107c_8086_1476[] = "PRO/1000 GT Desktop Adapter";
+#endif
+static const char pci_device_8086_107d[] = "82572EI Gigabit Ethernet Controller (Copper)";
+#ifdef INIT_SUBSYS_INFO
+static const char pci_subsys_8086_107d_8086_1082[] = "PRO/1000 PT Server Adapter";
+#endif
+#ifdef INIT_SUBSYS_INFO
+static const char pci_subsys_8086_107d_8086_1092[] = "PRO/1000 PT Server Adapter";
+#endif
+static const char pci_device_8086_107e[] = "82572EI Gigabit Ethernet Controller (Fiber)";
+#ifdef INIT_SUBSYS_INFO
+static const char pci_subsys_8086_107e_8086_1084[] = "PRO/1000 PF Server Adapter";
+#endif
+#ifdef INIT_SUBSYS_INFO
+static const char pci_subsys_8086_107e_8086_1094[] = "PRO/1000 PF Server Adapter";
+#endif
static const char pci_device_8086_107f[] = "82572EI Gigabit Ethernet Controller";
static const char pci_device_8086_1080[] = "FA82537EP 56K V.92 Data/Fax Modem PCI";
-static const char pci_device_8086_1081[] = "Enterprise Southbridge LAN Copper";
-static const char pci_device_8086_1082[] = "Enterprise Southbridge LAN fiber";
-static const char pci_device_8086_1083[] = "Enterprise Southbridge LAN SERDES";
-static const char pci_device_8086_1084[] = "Enterprise Southbridge IDE Redirection";
-static const char pci_device_8086_1085[] = "Enterprise Southbridge Serial Port Redirection";
-static const char pci_device_8086_1086[] = "Enterprise Southbridge IPMI/KCS0";
-static const char pci_device_8086_1087[] = "Enterprise Southbridge UHCI Redirection";
-static const char pci_device_8086_1089[] = "Enterprise Southbridge BT";
-static const char pci_device_8086_108a[] = "82546EB Gigabit Ethernet Controller";
+static const char pci_device_8086_1081[] = "631xESB/632xESB LAN Controller Copper";
+static const char pci_device_8086_1082[] = "631xESB/632xESB LAN Controller fiber";
+static const char pci_device_8086_1083[] = "631xESB/632xESB LAN Controller SERDES";
+static const char pci_device_8086_1084[] = "631xESB/632xESB IDE Redirection";
+static const char pci_device_8086_1085[] = "631xESB/632xESB Serial Port Redirection";
+static const char pci_device_8086_1086[] = "631xESB/632xESB IPMI/KCS0";
+static const char pci_device_8086_1087[] = "631xESB/632xESB UHCI Redirection";
+static const char pci_device_8086_1089[] = "631xESB/632xESB BT";
+static const char pci_device_8086_108a[] = "82546GB Gigabit Ethernet Controller";
+#ifdef INIT_SUBSYS_INFO
+static const char pci_subsys_8086_108a_8086_108a[] = "PRO/1000 P Dual Port Server Adapter";
+#endif
+#ifdef INIT_SUBSYS_INFO
+static const char pci_subsys_8086_108a_8086_118a[] = "PRO/1000 P Dual Port Server Adapter";
+#endif
static const char pci_device_8086_108b[] = "82573V Gigabit Ethernet Controller (Copper)";
static const char pci_device_8086_108c[] = "82573E Gigabit Ethernet Controller (Copper)";
static const char pci_device_8086_108e[] = "82573E KCS (Active Management)";
-static const char pci_device_8086_108f[] = "Intel(R) Active Management Technology - SOL";
-static const char pci_device_8086_1092[] = "Intel(R) PRO/100 VE Network Connection";
-static const char pci_device_8086_1096[] = "PRO/1000 EB Network Connection with I/O Acceleration";
-static const char pci_device_8086_1097[] = "Enterprise Southbridge DPT LAN fiber";
-static const char pci_device_8086_1098[] = "PRO/1000 EB Backplane Connection with I/O Acceleration";
-static const char pci_device_8086_1099[] = "82546GB Quad Port Server Adapter";
+static const char pci_device_8086_108f[] = "Active Management Technology - SOL";
+static const char pci_device_8086_1091[] = "PRO/100 VM Network Connection";
+static const char pci_device_8086_1092[] = "PRO/100 VE Network Connection";
+static const char pci_device_8086_1093[] = "PRO/100 VM Network Connection";
+static const char pci_device_8086_1094[] = "PRO/100 VE Network Connection";
+static const char pci_device_8086_1095[] = "PRO/100 VE Network Connection";
+static const char pci_device_8086_1096[] = "80003ES2LAN Gigabit Ethernet Controller (Copper)";
+static const char pci_device_8086_1097[] = "631xESB/632xESB DPT LAN Controller (Fiber)";
+static const char pci_device_8086_1098[] = "80003ES2LAN Gigabit Ethernet Controller (Serdes)";
+static const char pci_device_8086_1099[] = "82546GB Gigabit Ethernet Controller (Copper)";
+#ifdef INIT_SUBSYS_INFO
+static const char pci_subsys_8086_1099_8086_1099[] = "PRO/1000 GT Quad Port Server Adapter";
+#endif
static const char pci_device_8086_109a[] = "82573L Gigabit Ethernet Controller";
#ifdef INIT_SUBSYS_INFO
+static const char pci_subsys_8086_109a_1179_ff10[] = "PRO/1000 PL";
+#endif
+#ifdef INIT_SUBSYS_INFO
+static const char pci_subsys_8086_109a_17aa_2001[] = "ThinkPad T60";
+#endif
+#ifdef INIT_SUBSYS_INFO
static const char pci_subsys_8086_109a_17aa_207e[] = "Thinkpad X60s";
#endif
+#ifdef INIT_SUBSYS_INFO
+static const char pci_subsys_8086_109a_8086_109a[] = "PRO/1000 PL Network Connection";
+#endif
static const char pci_device_8086_109b[] = "82546GB PRO/1000 GF Quad Port Server Adapter";
+static const char pci_device_8086_109e[] = "82597EX 10GbE Ethernet Controller";
+#ifdef INIT_SUBSYS_INFO
+static const char pci_subsys_8086_109e_8086_a01f[] = "PRO/10GbE CX4 Server Adapter";
+#endif
+#ifdef INIT_SUBSYS_INFO
+static const char pci_subsys_8086_109e_8086_a11f[] = "PRO/10GbE CX4 Server Adapter";
+#endif
static const char pci_device_8086_10a0[] = "82571EB PRO/1000 AT Quad Port Bypass Adapter";
static const char pci_device_8086_10a1[] = "82571EB PRO/1000 AF Quad Port Bypass Adapter";
+static const char pci_device_8086_10a4[] = "82571EB Gigabit Ethernet Controller";
+#ifdef INIT_SUBSYS_INFO
+static const char pci_subsys_8086_10a4_8086_10a4[] = "PRO/1000 PT Quad Port Server Adapter";
+#endif
+#ifdef INIT_SUBSYS_INFO
+static const char pci_subsys_8086_10a4_8086_11a4[] = "PRO/1000 PT Quad Port Server Adapter";
+#endif
static const char pci_device_8086_10b0[] = "82573L PRO/1000 PL Network Connection";
static const char pci_device_8086_10b2[] = "82573V PRO/1000 PM Network Connection";
static const char pci_device_8086_10b3[] = "82573E PRO/1000 PM Network Connection";
static const char pci_device_8086_10b4[] = "82573L PRO/1000 PL Network Connection";
-static const char pci_device_8086_10b5[] = "82546GB PRO/1000 GT Quad Port Server Adapter";
+static const char pci_device_8086_10b5[] = "82546GB Gigabit Ethernet Controller (Copper)";
#ifdef INIT_SUBSYS_INFO
static const char pci_subsys_8086_10b5_103c_3109[] = "NC340T PCI-X Quad-port Gigabit Server Adapter";
#endif
+#ifdef INIT_SUBSYS_INFO
+static const char pci_subsys_8086_10b5_8086_1099[] = "PRO/1000 GT Quad Port Server Adapter";
+#endif
+#ifdef INIT_SUBSYS_INFO
+static const char pci_subsys_8086_10b5_8086_1199[] = "PRO/1000 GT Quad Port Server Adapter";
+#endif
+static const char pci_device_8086_10b9[] = "82572EI Gigabit Ethernet Controller (Copper)";
+#ifdef INIT_SUBSYS_INFO
+static const char pci_subsys_8086_10b9_8086_1083[] = "PRO/1000 PT Desktop Adapter";
+#endif
+#ifdef INIT_SUBSYS_INFO
+static const char pci_subsys_8086_10b9_8086_1093[] = "PRO/1000 PT Desktop Adapter";
+#endif
+static const char pci_device_8086_10ba[] = "80003ES2LAN Gigabit Ethernet Controller (Copper)";
+static const char pci_device_8086_10bb[] = "80003ES2LAN Gigabit Ethernet Controller (Serdes)";
+static const char pci_device_8086_10bc[] = "82571EB Gigabit Ethernet Controller (Copper)";
+#ifdef INIT_SUBSYS_INFO
+static const char pci_subsys_8086_10bc_8086_10bc[] = "PRO/1000 PT Quad Port LP Server Adapter";
+#endif
+#ifdef INIT_SUBSYS_INFO
+static const char pci_subsys_8086_10bc_8086_11bc[] = "PRO/1000 PT Quad Port LP Server Adapter";
+#endif
+static const char pci_device_8086_10c4[] = "82562GT 10/100 Network Connection";
+static const char pci_device_8086_10c5[] = "82562G 10/100 Network Connection";
static const char pci_device_8086_1107[] = "PRO/1000 MF Server Adapter (LX)";
static const char pci_device_8086_1130[] = "82815 815 Chipset Host Bridge and Memory Controller Hub";
#ifdef INIT_SUBSYS_INFO
@@ -21104,7 +22020,7 @@ static const char pci_device_8086_1161[] = "82806AA PCI64 Hub Advanced Programma
static const char pci_subsys_8086_1161_8086_1161[] = "82806AA PCI64 Hub APIC";
#endif
static const char pci_device_8086_1162[] = "Xscale 80200 Big Endian Companion Chip";
-static const char pci_device_8086_1200[] = "Intel IXP1200 Network Processor";
+static const char pci_device_8086_1200[] = "IXP1200 Network Processor";
#ifdef INIT_SUBSYS_INFO
static const char pci_subsys_8086_1200_172a_0000[] = "AEP SSL Accelerator";
#endif
@@ -21331,6 +22247,9 @@ static const char pci_subsys_8086_1229_144d_2502[] = "SEM-2100IL MiniPCI LAN Ada
static const char pci_subsys_8086_1229_1668_1100[] = "EtherExpress PRO/100B (TX) (MiniPCI Ethernet+Modem)";
#endif
#ifdef INIT_SUBSYS_INFO
+static const char pci_subsys_8086_1229_1775_ce90[] = "CE9";
+#endif
+#ifdef INIT_SUBSYS_INFO
static const char pci_subsys_8086_1229_4c53_1080[] = "CT8 mainboard";
#endif
#ifdef INIT_SUBSYS_INFO
@@ -21599,7 +22518,7 @@ static const char pci_device_8086_1239[] = "82371FB PIIX IDE Interface";
static const char pci_device_8086_123b[] = "82380PB PCI to PCI Docking Bridge";
static const char pci_device_8086_123c[] = "82380AB (MISA) Mobile PCI-to-ISA Bridge";
static const char pci_device_8086_123d[] = "683053 Programmable Interrupt Device";
-static const char pci_device_8086_123e[] = "82466GX (IHPC) Integrated Hot-Plug Controller";
+static const char pci_device_8086_123e[] = "82466GX (IHPC) Integrated Hot-Plug Controller (hidden mode)";
static const char pci_device_8086_123f[] = "82466GX Integrated Hot-Plug Controller (IHPC)";
static const char pci_device_8086_1240[] = "82752 (752) AGP Graphics Accelerator";
static const char pci_device_8086_124b[] = "82380FB (MPCI2) Mobile Docking Controller";
@@ -21653,16 +22572,16 @@ static const char pci_subsys_8086_1960_1028_1111[] = "PowerEdge Expandable RAID
static const char pci_subsys_8086_1960_103c_03a2[] = "MegaRAID";
#endif
#ifdef INIT_SUBSYS_INFO
-static const char pci_subsys_8086_1960_103c_10c6[] = "MegaRAID 438, HP NetRAID-3Si";
+static const char pci_subsys_8086_1960_103c_10c6[] = "MegaRAID 438, NetRAID-3Si";
#endif
#ifdef INIT_SUBSYS_INFO
-static const char pci_subsys_8086_1960_103c_10c7[] = "MegaRAID T5, Integrated HP NetRAID";
+static const char pci_subsys_8086_1960_103c_10c7[] = "MegaRAID T5, Integrated NetRAID";
#endif
#ifdef INIT_SUBSYS_INFO
-static const char pci_subsys_8086_1960_103c_10cc[] = "MegaRAID, Integrated HP NetRAID";
+static const char pci_subsys_8086_1960_103c_10cc[] = "MegaRAID, Integrated NetRAID";
#endif
#ifdef INIT_SUBSYS_INFO
-static const char pci_subsys_8086_1960_103c_10cd[] = "HP NetRAID-1Si";
+static const char pci_subsys_8086_1960_103c_10cd[] = "NetRAID-1Si";
#endif
#ifdef INIT_SUBSYS_INFO
static const char pci_subsys_8086_1960_105a_0000[] = "SuperTrak";
@@ -21706,8 +22625,15 @@ static const char pci_device_8086_1a30[] = "82845 845 (Brookdale) Chipset Host B
static const char pci_subsys_8086_1a30_1028_010e[] = "Optiplex GX240";
#endif
static const char pci_device_8086_1a31[] = "82845 845 (Brookdale) Chipset AGP Bridge";
-static const char pci_device_8086_1a38[] = "Server DMA Engine";
+static const char pci_device_8086_1a38[] = "5000 Series Chipset DMA Engine";
static const char pci_device_8086_1a48[] = "PRO/10GbE SR Server Adapter";
+static const char pci_device_8086_1b48[] = "82597EX 10GbE Ethernet Controller";
+#ifdef INIT_SUBSYS_INFO
+static const char pci_subsys_8086_1b48_8086_a01f[] = "PRO/10GbE LR Server Adapter";
+#endif
+#ifdef INIT_SUBSYS_INFO
+static const char pci_subsys_8086_1b48_8086_a11f[] = "PRO/10GbE LR Server Adapter";
+#endif
static const char pci_device_8086_2410[] = "82801AA ISA Bridge (LPC)";
static const char pci_device_8086_2411[] = "82801AA IDE";
static const char pci_device_8086_2412[] = "82801AA USB";
@@ -21755,6 +22681,9 @@ static const char pci_subsys_8086_2442_1014_01c6[] = "Netvista A40/A40p";
static const char pci_subsys_8086_2442_1025_1016[] = "Travelmate 612 TX";
#endif
#ifdef INIT_SUBSYS_INFO
+static const char pci_subsys_8086_2442_1028_00c7[] = "Dimension 8100";
+#endif
+#ifdef INIT_SUBSYS_INFO
static const char pci_subsys_8086_2442_1028_010e[] = "Optiplex GX240";
#endif
#ifdef INIT_SUBSYS_INFO
@@ -21780,6 +22709,9 @@ static const char pci_subsys_8086_2443_1014_01c6[] = "Netvista A40/A40p";
static const char pci_subsys_8086_2443_1025_1016[] = "Travelmate 612 TX";
#endif
#ifdef INIT_SUBSYS_INFO
+static const char pci_subsys_8086_2443_1028_00c7[] = "Dimension 8100";
+#endif
+#ifdef INIT_SUBSYS_INFO
static const char pci_subsys_8086_2443_1028_010e[] = "Optiplex GX240";
#endif
#ifdef INIT_SUBSYS_INFO
@@ -21802,6 +22734,9 @@ static const char pci_device_8086_2444[] = "82801BA/BAM USB (Hub #2)";
static const char pci_subsys_8086_2444_1025_1016[] = "Travelmate 612 TX";
#endif
#ifdef INIT_SUBSYS_INFO
+static const char pci_subsys_8086_2444_1028_00c7[] = "Dimension 8100";
+#endif
+#ifdef INIT_SUBSYS_INFO
static const char pci_subsys_8086_2444_1028_010e[] = "Optiplex GX240";
#endif
#ifdef INIT_SUBSYS_INFO
@@ -21818,6 +22753,9 @@ static const char pci_subsys_8086_2444_8086_4532[] = "D815EEA2 mainboard";
#endif
static const char pci_device_8086_2445[] = "82801BA/BAM AC'97 Audio";
#ifdef INIT_SUBSYS_INFO
+static const char pci_subsys_8086_2445_0e11_000b[] = "Compaq Deskpro EN Audio";
+#endif
+#ifdef INIT_SUBSYS_INFO
static const char pci_subsys_8086_2445_0e11_0088[] = "Evo D500";
#endif
#ifdef INIT_SUBSYS_INFO
@@ -21850,6 +22788,9 @@ static const char pci_device_8086_2448[] = "82801 Mobile PCI Bridge";
static const char pci_subsys_8086_2448_103c_099c[] = "NX6110/NC6120";
#endif
#ifdef INIT_SUBSYS_INFO
+static const char pci_subsys_8086_2448_144d_c00c[] = "P30 notebook";
+#endif
+#ifdef INIT_SUBSYS_INFO
static const char pci_subsys_8086_2448_1734_1055[] = "Amilo M1420";
#endif
static const char pci_device_8086_2449[] = "82801BA/BAM/CA/CAM Ethernet Controller";
@@ -21955,6 +22896,9 @@ static const char pci_device_8086_244b[] = "82801BA IDE U100";
static const char pci_subsys_8086_244b_1014_01c6[] = "Netvista A40/A40p";
#endif
#ifdef INIT_SUBSYS_INFO
+static const char pci_subsys_8086_244b_1028_00c7[] = "Dimension 8100";
+#endif
+#ifdef INIT_SUBSYS_INFO
static const char pci_subsys_8086_244b_1028_010e[] = "Optiplex GX240";
#endif
#ifdef INIT_SUBSYS_INFO
@@ -22127,6 +23071,9 @@ static const char pci_device_8086_24c2[] = "82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M)
static const char pci_subsys_8086_24c2_1014_0267[] = "NetVista A30p";
#endif
#ifdef INIT_SUBSYS_INFO
+static const char pci_subsys_8086_24c2_1014_052d[] = "Thinkpad R50e model 1634";
+#endif
+#ifdef INIT_SUBSYS_INFO
static const char pci_subsys_8086_24c2_1025_005a[] = "TravelMate 290";
#endif
#ifdef INIT_SUBSYS_INFO
@@ -22145,9 +23092,15 @@ static const char pci_subsys_8086_24c2_103c_088c[] = "NC8000 laptop";
static const char pci_subsys_8086_24c2_103c_0890[] = "NC6000 laptop";
#endif
#ifdef INIT_SUBSYS_INFO
+static const char pci_subsys_8086_24c2_103c_08b0[] = "tc1100 tablet";
+#endif
+#ifdef INIT_SUBSYS_INFO
static const char pci_subsys_8086_24c2_1071_8160[] = "MIM2000";
#endif
#ifdef INIT_SUBSYS_INFO
+static const char pci_subsys_8086_24c2_144d_c00c[] = "P30 notebook";
+#endif
+#ifdef INIT_SUBSYS_INFO
static const char pci_subsys_8086_24c2_1462_5800[] = "845PE Max (MS-6580)";
#endif
#ifdef INIT_SUBSYS_INFO
@@ -22170,6 +23123,9 @@ static const char pci_device_8086_24c3[] = "82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M)
static const char pci_subsys_8086_24c3_1014_0267[] = "NetVista A30p";
#endif
#ifdef INIT_SUBSYS_INFO
+static const char pci_subsys_8086_24c3_1014_052d[] = "Thinkpad R50e model 1634";
+#endif
+#ifdef INIT_SUBSYS_INFO
static const char pci_subsys_8086_24c3_1025_005a[] = "TravelMate 290";
#endif
#ifdef INIT_SUBSYS_INFO
@@ -22182,6 +23138,9 @@ static const char pci_subsys_8086_24c3_103c_088c[] = "NC8000 laptop";
static const char pci_subsys_8086_24c3_103c_0890[] = "NC6000 laptop";
#endif
#ifdef INIT_SUBSYS_INFO
+static const char pci_subsys_8086_24c3_103c_08b0[] = "tc1100 tablet";
+#endif
+#ifdef INIT_SUBSYS_INFO
static const char pci_subsys_8086_24c3_1071_8160[] = "MIM2000";
#endif
#ifdef INIT_SUBSYS_INFO
@@ -22204,6 +23163,9 @@ static const char pci_device_8086_24c4[] = "82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M)
static const char pci_subsys_8086_24c4_1014_0267[] = "NetVista A30p";
#endif
#ifdef INIT_SUBSYS_INFO
+static const char pci_subsys_8086_24c4_1014_052d[] = "Thinkpad R50e model 1634";
+#endif
+#ifdef INIT_SUBSYS_INFO
static const char pci_subsys_8086_24c4_1025_005a[] = "TravelMate 290";
#endif
#ifdef INIT_SUBSYS_INFO
@@ -22222,9 +23184,15 @@ static const char pci_subsys_8086_24c4_103c_088c[] = "NC8000 laptop";
static const char pci_subsys_8086_24c4_103c_0890[] = "NC6000 laptop";
#endif
#ifdef INIT_SUBSYS_INFO
+static const char pci_subsys_8086_24c4_103c_08b0[] = "tc1100 tablet";
+#endif
+#ifdef INIT_SUBSYS_INFO
static const char pci_subsys_8086_24c4_1071_8160[] = "MIM2000";
#endif
#ifdef INIT_SUBSYS_INFO
+static const char pci_subsys_8086_24c4_144d_c00c[] = "P30 notebook";
+#endif
+#ifdef INIT_SUBSYS_INFO
static const char pci_subsys_8086_24c4_1462_5800[] = "845PE Max (MS-6580)";
#endif
#ifdef INIT_SUBSYS_INFO
@@ -22247,6 +23215,9 @@ static const char pci_subsys_8086_24c5_0e11_00b8[] = "Analog Devices Inc. codec
static const char pci_subsys_8086_24c5_1014_0267[] = "NetVista A30p";
#endif
#ifdef INIT_SUBSYS_INFO
+static const char pci_subsys_8086_24c5_1014_055f[] = "Thinkpad R50e model 1634";
+#endif
+#ifdef INIT_SUBSYS_INFO
static const char pci_subsys_8086_24c5_1025_005a[] = "TravelMate 290";
#endif
#ifdef INIT_SUBSYS_INFO
@@ -22265,9 +23236,15 @@ static const char pci_subsys_8086_24c5_103c_088c[] = "NC8000 laptop";
static const char pci_subsys_8086_24c5_103c_0890[] = "NC6000 laptop";
#endif
#ifdef INIT_SUBSYS_INFO
+static const char pci_subsys_8086_24c5_103c_08b0[] = "tc1100 tablet";
+#endif
+#ifdef INIT_SUBSYS_INFO
static const char pci_subsys_8086_24c5_1071_8160[] = "MIM2000";
#endif
#ifdef INIT_SUBSYS_INFO
+static const char pci_subsys_8086_24c5_144d_c00c[] = "P30 notebook";
+#endif
+#ifdef INIT_SUBSYS_INFO
static const char pci_subsys_8086_24c5_1458_a002[] = "GA-8PE667 Ultra";
#endif
#ifdef INIT_SUBSYS_INFO
@@ -22281,6 +23258,9 @@ static const char pci_subsys_8086_24c5_1734_1055[] = "Amilo M1420";
#endif
static const char pci_device_8086_24c6[] = "82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M) AC'97 Modem Controller";
#ifdef INIT_SUBSYS_INFO
+static const char pci_subsys_8086_24c6_1014_0559[] = "Thinkpad R50e model 1634";
+#endif
+#ifdef INIT_SUBSYS_INFO
static const char pci_subsys_8086_24c6_1025_003c[] = "Aspire 2001WLCi (Compal CL50 motherboard) implementation";
#endif
#ifdef INIT_SUBSYS_INFO
@@ -22296,13 +23276,22 @@ static const char pci_subsys_8086_24c6_103c_088c[] = "NC8000 laptop";
static const char pci_subsys_8086_24c6_103c_0890[] = "NC6000 laptop";
#endif
#ifdef INIT_SUBSYS_INFO
+static const char pci_subsys_8086_24c6_103c_08b0[] = "tc1100 tablet";
+#endif
+#ifdef INIT_SUBSYS_INFO
static const char pci_subsys_8086_24c6_1071_8160[] = "MIM2000";
#endif
+#ifdef INIT_SUBSYS_INFO
+static const char pci_subsys_8086_24c6_144d_c00c[] = "P30 notebook";
+#endif
static const char pci_device_8086_24c7[] = "82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M) USB UHCI Controller #3";
#ifdef INIT_SUBSYS_INFO
static const char pci_subsys_8086_24c7_1014_0267[] = "NetVista A30p";
#endif
#ifdef INIT_SUBSYS_INFO
+static const char pci_subsys_8086_24c7_1014_052d[] = "Thinkpad R50e model 1634";
+#endif
+#ifdef INIT_SUBSYS_INFO
static const char pci_subsys_8086_24c7_1025_005a[] = "TravelMate 290";
#endif
#ifdef INIT_SUBSYS_INFO
@@ -22321,9 +23310,15 @@ static const char pci_subsys_8086_24c7_103c_088c[] = "NC8000 laptop";
static const char pci_subsys_8086_24c7_103c_0890[] = "NC6000 laptop";
#endif
#ifdef INIT_SUBSYS_INFO
+static const char pci_subsys_8086_24c7_103c_08b0[] = "tc1100 tablet";
+#endif
+#ifdef INIT_SUBSYS_INFO
static const char pci_subsys_8086_24c7_1071_8160[] = "MIM2000";
#endif
#ifdef INIT_SUBSYS_INFO
+static const char pci_subsys_8086_24c7_144d_c00c[] = "P30 notebook";
+#endif
+#ifdef INIT_SUBSYS_INFO
static const char pci_subsys_8086_24c7_1462_5800[] = "845PE Max (MS-6580)";
#endif
#ifdef INIT_SUBSYS_INFO
@@ -22340,6 +23335,9 @@ static const char pci_subsys_8086_24c7_8086_4541[] = "Latitude D400";
#endif
static const char pci_device_8086_24ca[] = "82801DBM (ICH4-M) IDE Controller";
#ifdef INIT_SUBSYS_INFO
+static const char pci_subsys_8086_24ca_1014_052d[] = "Thinkpad R50e model 1634";
+#endif
+#ifdef INIT_SUBSYS_INFO
static const char pci_subsys_8086_24ca_1025_005a[] = "TravelMate 290";
#endif
#ifdef INIT_SUBSYS_INFO
@@ -22355,9 +23353,15 @@ static const char pci_subsys_8086_24ca_103c_088c[] = "NC8000 laptop";
static const char pci_subsys_8086_24ca_103c_0890[] = "NC6000 laptop";
#endif
#ifdef INIT_SUBSYS_INFO
+static const char pci_subsys_8086_24ca_103c_08b0[] = "tc1100 tablet";
+#endif
+#ifdef INIT_SUBSYS_INFO
static const char pci_subsys_8086_24ca_1071_8160[] = "MIM2000";
#endif
#ifdef INIT_SUBSYS_INFO
+static const char pci_subsys_8086_24ca_144d_c00c[] = "P30 notebook";
+#endif
+#ifdef INIT_SUBSYS_INFO
static const char pci_subsys_8086_24ca_1734_1055[] = "Amilo M1420";
#endif
#ifdef INIT_SUBSYS_INFO
@@ -22384,6 +23388,9 @@ static const char pci_subsys_8086_24cb_4c53_1090[] = "Cx9 / Vx9 mainboard";
#endif
static const char pci_device_8086_24cc[] = "82801DBM (ICH4-M) LPC Interface Bridge";
#ifdef INIT_SUBSYS_INFO
+static const char pci_subsys_8086_24cc_144d_c00c[] = "P30 notebook";
+#endif
+#ifdef INIT_SUBSYS_INFO
static const char pci_subsys_8086_24cc_1734_1055[] = "Amilo M1420";
#endif
static const char pci_device_8086_24cd[] = "82801DB/DBM (ICH4/ICH4-M) USB2 EHCI Controller";
@@ -22391,6 +23398,9 @@ static const char pci_device_8086_24cd[] = "82801DB/DBM (ICH4/ICH4-M) USB2 EHCI
static const char pci_subsys_8086_24cd_1014_0267[] = "NetVista A30p";
#endif
#ifdef INIT_SUBSYS_INFO
+static const char pci_subsys_8086_24cd_1014_052e[] = "Thinkpad R50e model 1634";
+#endif
+#ifdef INIT_SUBSYS_INFO
static const char pci_subsys_8086_24cd_1025_005a[] = "TravelMate 290";
#endif
#ifdef INIT_SUBSYS_INFO
@@ -22415,9 +23425,18 @@ static const char pci_subsys_8086_24cd_103c_088c[] = "NC8000 laptop";
static const char pci_subsys_8086_24cd_103c_0890[] = "NC6000 laptop";
#endif
#ifdef INIT_SUBSYS_INFO
+static const char pci_subsys_8086_24cd_103c_08b0[] = "tc1100 tablet";
+#endif
+#ifdef INIT_SUBSYS_INFO
static const char pci_subsys_8086_24cd_1071_8160[] = "MIM2000";
#endif
#ifdef INIT_SUBSYS_INFO
+static const char pci_subsys_8086_24cd_1179_ff00[] = "Satellite 2430";
+#endif
+#ifdef INIT_SUBSYS_INFO
+static const char pci_subsys_8086_24cd_144d_c00c[] = "P30 notebook";
+#endif
+#ifdef INIT_SUBSYS_INFO
static const char pci_subsys_8086_24cd_1462_3981[] = "845PE Max (MS-6580)";
#endif
#ifdef INIT_SUBSYS_INFO
@@ -22462,6 +23481,9 @@ static const char pci_subsys_8086_24d1_8086_3427[] = "S875WP1-E mainboard";
static const char pci_subsys_8086_24d1_8086_4246[] = "Desktop Board D865GBF";
#endif
#ifdef INIT_SUBSYS_INFO
+static const char pci_subsys_8086_24d1_8086_4c43[] = "Desktop Board D865GLC";
+#endif
+#ifdef INIT_SUBSYS_INFO
static const char pci_subsys_8086_24d1_8086_524c[] = "D865PERL mainboard";
#endif
static const char pci_device_8086_24d2[] = "82801EB/ER (ICH5/ICH5R) USB UHCI Controller #1";
@@ -22505,6 +23527,9 @@ static const char pci_subsys_8086_24d2_8086_3427[] = "S875WP1-E mainboard";
static const char pci_subsys_8086_24d2_8086_4246[] = "Desktop Board D865GBF";
#endif
#ifdef INIT_SUBSYS_INFO
+static const char pci_subsys_8086_24d2_8086_4c43[] = "Desktop Board D865GLC";
+#endif
+#ifdef INIT_SUBSYS_INFO
static const char pci_subsys_8086_24d2_8086_524c[] = "D865PERL mainboard";
#endif
static const char pci_device_8086_24d3[] = "82801EB/ER (ICH5/ICH5R) SMBus Controller";
@@ -22518,6 +23543,9 @@ static const char pci_subsys_8086_24d3_1028_0156[] = "Precision 360";
static const char pci_subsys_8086_24d3_1028_0169[] = "Precision 470";
#endif
#ifdef INIT_SUBSYS_INFO
+static const char pci_subsys_8086_24d3_103c_12bc[] = "d330 uT";
+#endif
+#ifdef INIT_SUBSYS_INFO
static const char pci_subsys_8086_24d3_1043_80a6[] = "P4P800 Mainboard";
#endif
#ifdef INIT_SUBSYS_INFO
@@ -22539,6 +23567,9 @@ static const char pci_subsys_8086_24d3_8086_3427[] = "S875WP1-E mainboard";
static const char pci_subsys_8086_24d3_8086_4246[] = "Desktop Board D865GBF";
#endif
#ifdef INIT_SUBSYS_INFO
+static const char pci_subsys_8086_24d3_8086_4c43[] = "Desktop Board D865GLC";
+#endif
+#ifdef INIT_SUBSYS_INFO
static const char pci_subsys_8086_24d3_8086_524c[] = "D865PERL mainboard";
#endif
static const char pci_device_8086_24d4[] = "82801EB/ER (ICH5/ICH5R) USB UHCI Controller #2";
@@ -22582,10 +23613,16 @@ static const char pci_subsys_8086_24d4_8086_3427[] = "S875WP1-E mainboard";
static const char pci_subsys_8086_24d4_8086_4246[] = "Desktop Board D865GBF";
#endif
#ifdef INIT_SUBSYS_INFO
+static const char pci_subsys_8086_24d4_8086_4c43[] = "Desktop Board D865GLC";
+#endif
+#ifdef INIT_SUBSYS_INFO
static const char pci_subsys_8086_24d4_8086_524c[] = "D865PERL mainboard";
#endif
static const char pci_device_8086_24d5[] = "82801EB/ER (ICH5/ICH5R) AC'97 Audio Controller";
#ifdef INIT_SUBSYS_INFO
+static const char pci_subsys_8086_24d5_100a_147b[] = "Abit IS7-E motherboard";
+#endif
+#ifdef INIT_SUBSYS_INFO
static const char pci_subsys_8086_24d5_1028_0169[] = "Precision 470";
#endif
#ifdef INIT_SUBSYS_INFO
@@ -22618,6 +23655,9 @@ static const char pci_subsys_8086_24d5_8086_e000[] = "D865PERL mainboard";
#ifdef INIT_SUBSYS_INFO
static const char pci_subsys_8086_24d5_8086_e001[] = "Desktop Board D865GBF";
#endif
+#ifdef INIT_SUBSYS_INFO
+static const char pci_subsys_8086_24d5_8086_e002[] = "SoundMax Intergrated Digital Audio";
+#endif
static const char pci_device_8086_24d6[] = "82801EB/ER (ICH5/ICH5R) AC'97 Modem Controller";
#ifdef INIT_SUBSYS_INFO
static const char pci_subsys_8086_24d6_103c_006a[] = "NX9500";
@@ -22660,6 +23700,9 @@ static const char pci_subsys_8086_24d7_8086_3427[] = "S875WP1-E mainboard";
static const char pci_subsys_8086_24d7_8086_4246[] = "Desktop Board D865GBF";
#endif
#ifdef INIT_SUBSYS_INFO
+static const char pci_subsys_8086_24d7_8086_4c43[] = "Desktop Board D865GLC";
+#endif
+#ifdef INIT_SUBSYS_INFO
static const char pci_subsys_8086_24d7_8086_524c[] = "D865PERL mainboard";
#endif
static const char pci_device_8086_24db[] = "82801EB/ER (ICH5/ICH5R) IDE Controller";
@@ -22706,6 +23749,9 @@ static const char pci_subsys_8086_24db_8086_3427[] = "S875WP1-E mainboard";
static const char pci_subsys_8086_24db_8086_4246[] = "Desktop Board D865GBF";
#endif
#ifdef INIT_SUBSYS_INFO
+static const char pci_subsys_8086_24db_8086_4c43[] = "Desktop Board D865GLC";
+#endif
+#ifdef INIT_SUBSYS_INFO
static const char pci_subsys_8086_24db_8086_524c[] = "D865PERL mainboard";
#endif
static const char pci_device_8086_24dc[] = "82801EB (ICH5) LPC Interface Bridge";
@@ -22744,6 +23790,9 @@ static const char pci_subsys_8086_24dd_8086_3427[] = "S875WP1-E mainboard";
static const char pci_subsys_8086_24dd_8086_4246[] = "Desktop Board D865GBF";
#endif
#ifdef INIT_SUBSYS_INFO
+static const char pci_subsys_8086_24dd_8086_4c43[] = "Desktop Board D865GLC";
+#endif
+#ifdef INIT_SUBSYS_INFO
static const char pci_subsys_8086_24dd_8086_524c[] = "D865PERL mainboard";
#endif
static const char pci_device_8086_24de[] = "82801EB/ER (ICH5/ICH5R) USB UHCI Controller #4";
@@ -22775,6 +23824,9 @@ static const char pci_subsys_8086_24de_8086_3427[] = "S875WP1-E mainboard";
static const char pci_subsys_8086_24de_8086_4246[] = "Desktop Board D865GBF";
#endif
#ifdef INIT_SUBSYS_INFO
+static const char pci_subsys_8086_24de_8086_4c43[] = "Desktop Board D865GLC";
+#endif
+#ifdef INIT_SUBSYS_INFO
static const char pci_subsys_8086_24de_8086_524c[] = "D865PERL mainboard";
#endif
static const char pci_device_8086_24df[] = "82801ER (ICH5R) SATA Controller";
@@ -22795,6 +23847,9 @@ static const char pci_device_8086_2520[] = "82805AA MTH Memory Translator Hub";
static const char pci_device_8086_2521[] = "82804AA MRH-S Memory Repeater Hub for SDRAM";
static const char pci_device_8086_2530[] = "82850 850 (Tehama) Chipset Host Bridge (MCH)";
#ifdef INIT_SUBSYS_INFO
+static const char pci_subsys_8086_2530_1028_00c7[] = "Dimension 8100";
+#endif
+#ifdef INIT_SUBSYS_INFO
static const char pci_subsys_8086_2530_147b_0507[] = "TH7II-RAID";
#endif
static const char pci_device_8086_2531[] = "82860 860 (Wombat) Chipset Host Bridge (MCH)";
@@ -22863,6 +23918,9 @@ static const char pci_device_8086_2570[] = "82865G/PE/P DRAM Controller/Host-Hub
static const char pci_subsys_8086_2570_103c_006a[] = "NX9500";
#endif
#ifdef INIT_SUBSYS_INFO
+static const char pci_subsys_8086_2570_103c_12bc[] = "d330 uT";
+#endif
+#ifdef INIT_SUBSYS_INFO
static const char pci_subsys_8086_2570_1043_80f2[] = "P5P800-MX Mainboard";
#endif
#ifdef INIT_SUBSYS_INFO
@@ -22882,6 +23940,9 @@ static const char pci_subsys_8086_2572_1043_80a5[] = "P5P800-MX Mainboard";
#ifdef INIT_SUBSYS_INFO
static const char pci_subsys_8086_2572_8086_4246[] = "Desktop Board D865GBF";
#endif
+#ifdef INIT_SUBSYS_INFO
+static const char pci_subsys_8086_2572_8086_4c43[] = "Desktop Board D865GLC";
+#endif
static const char pci_device_8086_2573[] = "82865G/PE/P PCI to CSA Bridge";
static const char pci_device_8086_2576[] = "82865G/PE/P Processor to I/O Memory Interface";
static const char pci_device_8086_2578[] = "82875P/E7210 Memory Controller Hub";
@@ -22897,7 +23958,7 @@ static const char pci_subsys_8086_2578_15d9_4580[] = "P4SCE Motherboard";
static const char pci_device_8086_2579[] = "82875P Processor to AGP Controller";
static const char pci_device_8086_257b[] = "82875P/E7210 Processor to PCI to CSA Bridge";
static const char pci_device_8086_257e[] = "82875P/E7210 Processor to I/O Memory Interface";
-static const char pci_device_8086_2580[] = "915G/P/GV/GL/PL/910GL Express Memory Controller Hub";
+static const char pci_device_8086_2580[] = "82915G/P/GV/GL/PL/910GL Memory Controller Hub";
#ifdef INIT_SUBSYS_INFO
static const char pci_subsys_8086_2580_1458_2580[] = "GA-8I915ME-G Mainboard";
#endif
@@ -22907,8 +23968,8 @@ static const char pci_subsys_8086_2580_1462_7028[] = "915P/G Neo2";
#ifdef INIT_SUBSYS_INFO
static const char pci_subsys_8086_2580_1734_105b[] = "Scenic W620";
#endif
-static const char pci_device_8086_2581[] = "915G/P/GV/GL/PL/910GL Express PCI Express Root Port";
-static const char pci_device_8086_2582[] = "82915G/GV/910GL Express Chipset Family Graphics Controller";
+static const char pci_device_8086_2581[] = "82915G/P/GV/GL/PL/910GL PCI Express Root Port";
+static const char pci_device_8086_2582[] = "82915G/GV/910GL Integrated Graphics Controller";
#ifdef INIT_SUBSYS_INFO
static const char pci_subsys_8086_2582_1028_1079[] = "Optiplex GX280";
#endif
@@ -22924,8 +23985,8 @@ static const char pci_subsys_8086_2582_1458_2582[] = "GA-8I915ME-G Mainboard";
#ifdef INIT_SUBSYS_INFO
static const char pci_subsys_8086_2582_1734_105b[] = "Scenic W620";
#endif
-static const char pci_device_8086_2584[] = "925X/XE Express Memory Controller Hub";
-static const char pci_device_8086_2585[] = "925X/XE Express PCI Express Root Port";
+static const char pci_device_8086_2584[] = "82925X/XE Memory Controller Hub";
+static const char pci_device_8086_2585[] = "82925X/XE PCI Express Root Port";
static const char pci_device_8086_2588[] = "E7220/E7221 Memory Controller Hub";
static const char pci_device_8086_2589[] = "E7220/E7221 PCI Express Root Port";
static const char pci_device_8086_258a[] = "E7221 Integrated Graphics Controller";
@@ -22953,6 +24014,12 @@ static const char pci_subsys_8086_2592_1043_1881[] = "GMA 900 915GM Integrated G
static const char pci_device_8086_25a1[] = "6300ESB LPC Interface Controller";
static const char pci_device_8086_25a2[] = "6300ESB PATA Storage Controller";
#ifdef INIT_SUBSYS_INFO
+static const char pci_subsys_8086_25a2_1775_10d0[] = "V5D Single Board Computer IDE";
+#endif
+#ifdef INIT_SUBSYS_INFO
+static const char pci_subsys_8086_25a2_1775_ce90[] = "CE9";
+#endif
+#ifdef INIT_SUBSYS_INFO
static const char pci_subsys_8086_25a2_4c53_10b0[] = "CL9 mainboard";
#endif
#ifdef INIT_SUBSYS_INFO
@@ -22960,6 +24027,9 @@ static const char pci_subsys_8086_25a2_4c53_10e0[] = "PSL09 PrPMC";
#endif
static const char pci_device_8086_25a3[] = "6300ESB SATA Storage Controller";
#ifdef INIT_SUBSYS_INFO
+static const char pci_subsys_8086_25a3_1775_ce90[] = "CE9";
+#endif
+#ifdef INIT_SUBSYS_INFO
static const char pci_subsys_8086_25a3_4c53_10b0[] = "CL9 mainboard";
#endif
#ifdef INIT_SUBSYS_INFO
@@ -22970,6 +24040,12 @@ static const char pci_subsys_8086_25a3_4c53_10e0[] = "PSL09 PrPMC";
#endif
static const char pci_device_8086_25a4[] = "6300ESB SMBus Controller";
#ifdef INIT_SUBSYS_INFO
+static const char pci_subsys_8086_25a4_1775_10d0[] = "V5D Single Board Computer";
+#endif
+#ifdef INIT_SUBSYS_INFO
+static const char pci_subsys_8086_25a4_1775_ce90[] = "CE9";
+#endif
+#ifdef INIT_SUBSYS_INFO
static const char pci_subsys_8086_25a4_4c53_10b0[] = "CL9 mainboard";
#endif
#ifdef INIT_SUBSYS_INFO
@@ -22980,11 +24056,20 @@ static const char pci_subsys_8086_25a4_4c53_10e0[] = "PSL09 PrPMC";
#endif
static const char pci_device_8086_25a6[] = "6300ESB AC'97 Audio Controller";
#ifdef INIT_SUBSYS_INFO
+static const char pci_subsys_8086_25a6_1775_ce90[] = "CE9";
+#endif
+#ifdef INIT_SUBSYS_INFO
static const char pci_subsys_8086_25a6_4c53_10b0[] = "CL9 mainboard";
#endif
static const char pci_device_8086_25a7[] = "6300ESB AC'97 Modem Controller";
static const char pci_device_8086_25a9[] = "6300ESB USB Universal Host Controller";
#ifdef INIT_SUBSYS_INFO
+static const char pci_subsys_8086_25a9_1775_10d0[] = "V5D Single Board Computer USB";
+#endif
+#ifdef INIT_SUBSYS_INFO
+static const char pci_subsys_8086_25a9_1775_ce90[] = "CE9";
+#endif
+#ifdef INIT_SUBSYS_INFO
static const char pci_subsys_8086_25a9_4c53_10b0[] = "CL9 mainboard";
#endif
#ifdef INIT_SUBSYS_INFO
@@ -22995,6 +24080,9 @@ static const char pci_subsys_8086_25a9_4c53_10e0[] = "PSL09 PrPMC";
#endif
static const char pci_device_8086_25aa[] = "6300ESB USB Universal Host Controller";
#ifdef INIT_SUBSYS_INFO
+static const char pci_subsys_8086_25aa_1775_ce90[] = "CE9";
+#endif
+#ifdef INIT_SUBSYS_INFO
static const char pci_subsys_8086_25aa_4c53_10b0[] = "CL9 mainboard";
#endif
#ifdef INIT_SUBSYS_INFO
@@ -23002,6 +24090,12 @@ static const char pci_subsys_8086_25aa_4c53_10e0[] = "PSL09 PrPMC";
#endif
static const char pci_device_8086_25ab[] = "6300ESB Watchdog Timer";
#ifdef INIT_SUBSYS_INFO
+static const char pci_subsys_8086_25ab_1775_10d0[] = "V5D Single Board Computer";
+#endif
+#ifdef INIT_SUBSYS_INFO
+static const char pci_subsys_8086_25ab_1775_ce90[] = "CE9";
+#endif
+#ifdef INIT_SUBSYS_INFO
static const char pci_subsys_8086_25ab_4c53_10b0[] = "CL9 mainboard";
#endif
#ifdef INIT_SUBSYS_INFO
@@ -23012,6 +24106,12 @@ static const char pci_subsys_8086_25ab_4c53_10e0[] = "PSL09 PrPMC";
#endif
static const char pci_device_8086_25ac[] = "6300ESB I/O Advanced Programmable Interrupt Controller";
#ifdef INIT_SUBSYS_INFO
+static const char pci_subsys_8086_25ac_1775_10d0[] = "V5D Single Board Computer";
+#endif
+#ifdef INIT_SUBSYS_INFO
+static const char pci_subsys_8086_25ac_1775_ce90[] = "CE9";
+#endif
+#ifdef INIT_SUBSYS_INFO
static const char pci_subsys_8086_25ac_4c53_10b0[] = "CL9 mainboard";
#endif
#ifdef INIT_SUBSYS_INFO
@@ -23022,6 +24122,12 @@ static const char pci_subsys_8086_25ac_4c53_10e0[] = "PSL09 PrPMC";
#endif
static const char pci_device_8086_25ad[] = "6300ESB USB2 Enhanced Host Controller";
#ifdef INIT_SUBSYS_INFO
+static const char pci_subsys_8086_25ad_1775_10d0[] = "V5D Single Board Computer USB 2.0";
+#endif
+#ifdef INIT_SUBSYS_INFO
+static const char pci_subsys_8086_25ad_1775_ce90[] = "CE9";
+#endif
+#ifdef INIT_SUBSYS_INFO
static const char pci_subsys_8086_25ad_4c53_10b0[] = "CL9 mainboard";
#endif
#ifdef INIT_SUBSYS_INFO
@@ -23038,26 +24144,25 @@ static const char pci_subsys_8086_25b0_4c53_10d0[] = "Telum ASLP10 Processor AMC
#ifdef INIT_SUBSYS_INFO
static const char pci_subsys_8086_25b0_4c53_10e0[] = "PSL09 PrPMC";
#endif
-static const char pci_device_8086_25c0[] = "Workstation Memory Controller Hub";
-static const char pci_device_8086_25d0[] = "Server Memory Controller Hub";
-static const char pci_device_8086_25d4[] = "Server Memory Contoller Hub";
-static const char pci_device_8086_25d8[] = "Server Memory Controller Hub";
-static const char pci_device_8086_25e2[] = "Server PCI Express x4 Port 2";
-static const char pci_device_8086_25e3[] = "Server PCI Express x4 Port 3";
-static const char pci_device_8086_25e4[] = "Server PCI Express x4 Port 4";
-static const char pci_device_8086_25e5[] = "Server PCI Express x4 Port 5";
-static const char pci_device_8086_25e6[] = "Server PCI Express x4 Port 6";
-static const char pci_device_8086_25e7[] = "Server PCI Express x4 Port 7";
-static const char pci_device_8086_25e8[] = "Server AMB Memory Mapped Registers";
-static const char pci_device_8086_25f0[] = "Server Error Reporting Registers";
-static const char pci_device_8086_25f1[] = "Reserved Registers";
-static const char pci_device_8086_25f3[] = "Reserved Registers";
-static const char pci_device_8086_25f5[] = "Server FBD Registers";
-static const char pci_device_8086_25f6[] = "Server FBD Registers";
-static const char pci_device_8086_25f7[] = "Server PCI Express x8 Port 2-3";
-static const char pci_device_8086_25f8[] = "Server PCI Express x8 Port 4-5";
-static const char pci_device_8086_25f9[] = "Server PCI Express x8 Port 6-7";
-static const char pci_device_8086_25fa[] = "Server PCI Express x16 Port 4-7";
+static const char pci_device_8086_25c0[] = "5000X Chipset Memory Controller Hub";
+static const char pci_device_8086_25d0[] = "5000Z Chipset Memory Controller Hub";
+static const char pci_device_8086_25d4[] = "5000V Chipset Memory Controller Hub";
+static const char pci_device_8086_25d8[] = "5000P Chipset Memory Controller Hub";
+static const char pci_device_8086_25e2[] = "5000 Series Chipset PCI Express x4 Port 2";
+static const char pci_device_8086_25e3[] = "5000 Series Chipset PCI Express x4 Port 3";
+static const char pci_device_8086_25e4[] = "5000 Series Chipset PCI Express x4 Port 4";
+static const char pci_device_8086_25e5[] = "5000 Series Chipset PCI Express x4 Port 5";
+static const char pci_device_8086_25e6[] = "5000 Series Chipset PCI Express x4 Port 6";
+static const char pci_device_8086_25e7[] = "5000 Series Chipset PCI Express x4 Port 7";
+static const char pci_device_8086_25f0[] = "5000 Series Chipset FSB Registers";
+static const char pci_device_8086_25f1[] = "5000 Series Chipset Reserved Registers";
+static const char pci_device_8086_25f3[] = "5000 Series Chipset Reserved Registers";
+static const char pci_device_8086_25f5[] = "5000 Series Chipset FBD Registers";
+static const char pci_device_8086_25f6[] = "5000 Series Chipset FBD Registers";
+static const char pci_device_8086_25f7[] = "5000 Series Chipset PCI Express x8 Port 2-3";
+static const char pci_device_8086_25f8[] = "5000 Series Chipset PCI Express x8 Port 4-5";
+static const char pci_device_8086_25f9[] = "5000 Series Chipset PCI Express x8 Port 6-7";
+static const char pci_device_8086_25fa[] = "5000X Chipset PCI Express x16 Port 4-7";
static const char pci_device_8086_2600[] = "E8500/E8501 Hub Interface 1.5";
static const char pci_device_8086_2601[] = "E8500/E8501 PCI Express x4 Port D";
static const char pci_device_8086_2602[] = "E8500/E8501 PCI Express x4 Port C0";
@@ -23070,7 +24175,7 @@ static const char pci_device_8086_2608[] = "E8500/E8501 PCI Express x8 Port C";
static const char pci_device_8086_2609[] = "E8500/E8501 PCI Express x8 Port B";
static const char pci_device_8086_260a[] = "E8500/E8501 PCI Express x8 Port A";
static const char pci_device_8086_260c[] = "E8500/E8501 IMI Registers";
-static const char pci_device_8086_2610[] = "E8500/E8501 Front Side Bus, Boot, and Interrupt Registers";
+static const char pci_device_8086_2610[] = "E8500/E8501 FSB Registers";
static const char pci_device_8086_2611[] = "E8500/E8501 Address Mapping Registers";
static const char pci_device_8086_2612[] = "E8500/E8501 RAS Registers";
static const char pci_device_8086_2613[] = "E8500/E8501 Reserved Registers";
@@ -23217,6 +24322,9 @@ static const char pci_subsys_8086_265c_1462_7028[] = "915P/G Neo2";
#ifdef INIT_SUBSYS_INFO
static const char pci_subsys_8086_265c_1734_105c[] = "Scenic W620";
#endif
+#ifdef INIT_SUBSYS_INFO
+static const char pci_subsys_8086_265c_8086_265c[] = "Dimension 3100";
+#endif
static const char pci_device_8086_2660[] = "82801FB/FBM/FR/FW/FRW (ICH6 Family) PCI Express Port 1";
#ifdef INIT_SUBSYS_INFO
static const char pci_subsys_8086_2660_103c_099c[] = "NX6110/NC6120";
@@ -23226,6 +24334,9 @@ static const char pci_device_8086_2664[] = "82801FB/FBM/FR/FW/FRW (ICH6 Family)
static const char pci_device_8086_2666[] = "82801FB/FBM/FR/FW/FRW (ICH6 Family) PCI Express Port 4";
static const char pci_device_8086_2668[] = "82801FB/FBM/FR/FW/FRW (ICH6 Family) High Definition Audio Controller";
#ifdef INIT_SUBSYS_INFO
+static const char pci_subsys_8086_2668_103c_2a09[] = "PufferM-UL8E";
+#endif
+#ifdef INIT_SUBSYS_INFO
static const char pci_subsys_8086_2668_1043_814e[] = "P5GD1-VW Mainboard";
#endif
static const char pci_device_8086_266a[] = "82801FB/FBM/FR/FW/FRW (ICH6 Family) SMBus Controller";
@@ -23299,43 +24410,46 @@ static const char pci_subsys_8086_266f_1462_7028[] = "915P/G Neo2";
#ifdef INIT_SUBSYS_INFO
static const char pci_subsys_8086_266f_1734_105c[] = "Scenic W620";
#endif
-static const char pci_device_8086_2670[] = "Enterprise Southbridge LPC";
-static const char pci_device_8086_2680[] = "Enterprise Southbridge SATA IDE";
-static const char pci_device_8086_2681[] = "Enterprise Southbridge SATA AHCI";
-static const char pci_device_8086_2682[] = "Enterprise Southbridge SATA RAID";
-static const char pci_device_8086_2683[] = "Enterprise Southbridge SATA RAID";
-static const char pci_device_8086_2688[] = "Enterprise Southbridge UHCI USB #1";
-static const char pci_device_8086_2689[] = "Enterprise Southbridge UHCI USB #2";
-static const char pci_device_8086_268a[] = "Enterprise Southbridge UHCI USB #3";
-static const char pci_device_8086_268b[] = "Enterprise Southbridge UHCI USB #4";
-static const char pci_device_8086_268c[] = "Enterprise Southbridge EHCI USB";
-static const char pci_device_8086_2690[] = "Enterprise Southbridge PCI Express Root Port 1";
-static const char pci_device_8086_2692[] = "Enterprise Southbridge PCI Express Root Port 2";
-static const char pci_device_8086_2694[] = "Enterprise Southbridge PCI Express Root Port 3";
-static const char pci_device_8086_2696[] = "Enterprise Southbridge PCI Express Root Port 4";
-static const char pci_device_8086_2698[] = "Enterprise Southbridge AC '97 Audio";
-static const char pci_device_8086_2699[] = "Enterprise Southbridge AC '97 Modem";
-static const char pci_device_8086_269a[] = "Enterprise Southbridge High Definition Audio";
-static const char pci_device_8086_269b[] = "Enterprise Southbridge SMBus";
-static const char pci_device_8086_269e[] = "Enterprise Southbridge PATA";
-static const char pci_device_8086_2770[] = "945G/GZ/P/PL Express Memory Controller Hub";
+static const char pci_device_8086_2670[] = "631xESB/632xESB/3100 Chipset LPC Interface Controller";
+static const char pci_device_8086_2680[] = "631xESB/632xESB/3100 Chipset SATA Storage Controller IDE";
+static const char pci_device_8086_2681[] = "631xESB/632xESB SATA Storage Controller AHCI";
+static const char pci_device_8086_2682[] = "631xESB/632xESB SATA Storage Controller RAID";
+static const char pci_device_8086_2683[] = "631xESB/632xESB SATA Storage Controller RAID";
+static const char pci_device_8086_2688[] = "631xESB/632xESB/3100 Chipset UHCI USB Controller #1";
+static const char pci_device_8086_2689[] = "631xESB/632xESB/3100 Chipset UHCI USB Controller #2";
+static const char pci_device_8086_268a[] = "631xESB/632xESB/3100 Chipset UHCI USB Controller #3";
+static const char pci_device_8086_268b[] = "631xESB/632xESB/3100 Chipset UHCI USB Controller #4";
+static const char pci_device_8086_268c[] = "631xESB/632xESB/3100 Chipset EHCI USB2 Controller";
+static const char pci_device_8086_2690[] = "631xESB/632xESB/3100 Chipset PCI Express Root Port 1";
+static const char pci_device_8086_2692[] = "631xESB/632xESB/3100 Chipset PCI Express Root Port 2";
+static const char pci_device_8086_2694[] = "631xESB/632xESB/3100 Chipset PCI Express Root Port 3";
+static const char pci_device_8086_2696[] = "631xESB/632xESB/3100 Chipset PCI Express Root Port 4";
+static const char pci_device_8086_2698[] = "631xESB/632xESB AC '97 Audio Controller";
+static const char pci_device_8086_2699[] = "631xESB/632xESB AC '97 Modem Controller";
+static const char pci_device_8086_269a[] = "631xESB/632xESB High Definition Audio Controller";
+static const char pci_device_8086_269b[] = "631xESB/632xESB/3100 Chipset SMBus Controller";
+static const char pci_device_8086_269e[] = "631xESB/632xESB IDE Controller";
+static const char pci_device_8086_2770[] = "82945G/GZ/P/PL Memory Controller Hub";
+#ifdef INIT_SUBSYS_INFO
+static const char pci_subsys_8086_2770_107b_5048[] = "E4500";
+#endif
#ifdef INIT_SUBSYS_INFO
static const char pci_subsys_8086_2770_8086_544e[] = "DeskTop Board D945GTP";
#endif
-static const char pci_device_8086_2771[] = "945G/GZ/P/PL Express PCI Express Root Port";
-static const char pci_device_8086_2772[] = "945G/GZ Express Integrated Graphics Controller";
+static const char pci_device_8086_2771[] = "82945G/GZ/P/PL PCI Express Root Port";
+static const char pci_device_8086_2772[] = "82945G/GZ Integrated Graphics Controller";
#ifdef INIT_SUBSYS_INFO
static const char pci_subsys_8086_2772_8086_544e[] = "DeskTop Board D945GTP";
#endif
-static const char pci_device_8086_2774[] = "955X Express Memory Controller Hub";
-static const char pci_device_8086_2775[] = "955X Express PCI Express Root Port";
-static const char pci_device_8086_2776[] = "945G/GZ Express Integrated Graphics Controller";
-static const char pci_device_8086_2778[] = "E7230 Memory Controller Hub";
-static const char pci_device_8086_2779[] = "E7230 PCI Express Root Port";
-static const char pci_device_8086_277a[] = "975X Express PCI Express Root Port";
-static const char pci_device_8086_277c[] = "975X Express Memory Controller Hub";
-static const char pci_device_8086_277d[] = "975X Express PCI Express Root Port";
-static const char pci_device_8086_2782[] = "82915G Express Chipset Family Graphics Controller";
+static const char pci_device_8086_2774[] = "82955X Memory Controller Hub";
+static const char pci_device_8086_2775[] = "82955X PCI Express Root Port";
+static const char pci_device_8086_2776[] = "82945G/GZ Integrated Graphics Controller";
+static const char pci_device_8086_2778[] = "E7230/3000/3010 Memory Controller Hub";
+static const char pci_device_8086_2779[] = "E7230/3000/3010 PCI Express Root Port";
+static const char pci_device_8086_277a[] = "82975X/3010 PCI Express Root Port";
+static const char pci_device_8086_277c[] = "82975X Memory Controller Hub";
+static const char pci_device_8086_277d[] = "82975X PCI Express Root Port";
+static const char pci_device_8086_2782[] = "82915G Integrated Graphics Controller";
#ifdef INIT_SUBSYS_INFO
static const char pci_subsys_8086_2782_1043_2582[] = "P5GD1-VW Mainboard";
#endif
@@ -23350,43 +24464,94 @@ static const char pci_subsys_8086_2792_103c_099c[] = "NX6110/NC6120";
static const char pci_subsys_8086_2792_1043_1881[] = "GMA 900 915GM Integrated Graphics";
#endif
static const char pci_device_8086_27a0[] = "Mobile 945GM/PM/GMS/940GML and 945GT Express Memory Controller Hub";
+#ifdef INIT_SUBSYS_INFO
+static const char pci_subsys_8086_27a0_17aa_2017[] = "Thinkpad R60e model 0657";
+#endif
static const char pci_device_8086_27a1[] = "Mobile 945GM/PM/GMS/940GML and 945GT Express PCI Express Root Port";
static const char pci_device_8086_27a2[] = "Mobile 945GM/GMS/940GML Express Integrated Graphics Controller";
+#ifdef INIT_SUBSYS_INFO
+static const char pci_subsys_8086_27a2_17aa_201a[] = "Thinkpad R60e model 0657";
+#endif
static const char pci_device_8086_27a6[] = "Mobile 945GM/GMS/940GML Express Integrated Graphics Controller";
+#ifdef INIT_SUBSYS_INFO
+static const char pci_subsys_8086_27a6_17aa_201a[] = "Thinkpad R60e model 0657";
+#endif
static const char pci_device_8086_27b0[] = "82801GH (ICH7DH) LPC Interface Bridge";
static const char pci_device_8086_27b8[] = "82801GB/GR (ICH7 Family) LPC Interface Bridge";
#ifdef INIT_SUBSYS_INFO
+static const char pci_subsys_8086_27b8_107b_5048[] = "E4500";
+#endif
+#ifdef INIT_SUBSYS_INFO
static const char pci_subsys_8086_27b8_8086_544e[] = "DeskTop Board D945GTP";
#endif
static const char pci_device_8086_27b9[] = "82801GBM (ICH7-M) LPC Interface Bridge";
+#ifdef INIT_SUBSYS_INFO
+static const char pci_subsys_8086_27b9_10f7_8338[] = "Panasonic CF-Y5 laptop";
+#endif
+#ifdef INIT_SUBSYS_INFO
+static const char pci_subsys_8086_27b9_17aa_2009[] = "ThinkPad T60/R60 series";
+#endif
static const char pci_device_8086_27bd[] = "82801GHM (ICH7-M DH) LPC Interface Bridge";
static const char pci_device_8086_27c0[] = "82801GB/GR/GH (ICH7 Family) Serial ATA Storage Controller IDE";
#ifdef INIT_SUBSYS_INFO
+static const char pci_subsys_8086_27c0_107b_5048[] = "E4500";
+#endif
+#ifdef INIT_SUBSYS_INFO
static const char pci_subsys_8086_27c0_8086_544e[] = "DeskTop Board D945GTP";
#endif
static const char pci_device_8086_27c1[] = "82801GR/GH (ICH7 Family) Serial ATA Storage Controller AHCI";
static const char pci_device_8086_27c3[] = "82801GR/GH (ICH7 Family) Serial ATA Storage Controller RAID";
static const char pci_device_8086_27c4[] = "82801GBM/GHM (ICH7 Family) Serial ATA Storage Controller IDE";
static const char pci_device_8086_27c5[] = "82801GBM/GHM (ICH7 Family) Serial ATA Storage Controller AHCI";
+#ifdef INIT_SUBSYS_INFO
+static const char pci_subsys_8086_27c5_17aa_200d[] = "Thinkpad R60e model 0657";
+#endif
static const char pci_device_8086_27c6[] = "82801GHM (ICH7-M DH) Serial ATA Storage Controller RAID";
static const char pci_device_8086_27c8[] = "82801G (ICH7 Family) USB UHCI #1";
#ifdef INIT_SUBSYS_INFO
+static const char pci_subsys_8086_27c8_107b_5048[] = "E4500";
+#endif
+#ifdef INIT_SUBSYS_INFO
+static const char pci_subsys_8086_27c8_17aa_200a[] = "ThinkPad T60/R60 series";
+#endif
+#ifdef INIT_SUBSYS_INFO
static const char pci_subsys_8086_27c8_8086_544e[] = "DeskTop Board D945GTP";
#endif
static const char pci_device_8086_27c9[] = "82801G (ICH7 Family) USB UHCI #2";
#ifdef INIT_SUBSYS_INFO
+static const char pci_subsys_8086_27c9_107b_5048[] = "E4500";
+#endif
+#ifdef INIT_SUBSYS_INFO
+static const char pci_subsys_8086_27c9_17aa_200a[] = "ThinkPad T60/R60 series";
+#endif
+#ifdef INIT_SUBSYS_INFO
static const char pci_subsys_8086_27c9_8086_544e[] = "DeskTop Board D945GTP";
#endif
static const char pci_device_8086_27ca[] = "82801G (ICH7 Family) USB UHCI #3";
#ifdef INIT_SUBSYS_INFO
+static const char pci_subsys_8086_27ca_107b_5048[] = "E4500";
+#endif
+#ifdef INIT_SUBSYS_INFO
+static const char pci_subsys_8086_27ca_17aa_200a[] = "ThinkPad T60/R60 series";
+#endif
+#ifdef INIT_SUBSYS_INFO
static const char pci_subsys_8086_27ca_8086_544e[] = "DeskTop Board D945GTP";
#endif
static const char pci_device_8086_27cb[] = "82801G (ICH7 Family) USB UHCI #4";
#ifdef INIT_SUBSYS_INFO
+static const char pci_subsys_8086_27cb_107b_5048[] = "E4500";
+#endif
+#ifdef INIT_SUBSYS_INFO
+static const char pci_subsys_8086_27cb_17aa_200a[] = "ThinkPad T60/R60 series";
+#endif
+#ifdef INIT_SUBSYS_INFO
static const char pci_subsys_8086_27cb_8086_544e[] = "DeskTop Board D945GTP";
#endif
static const char pci_device_8086_27cc[] = "82801G (ICH7 Family) USB2 EHCI Controller";
#ifdef INIT_SUBSYS_INFO
+static const char pci_subsys_8086_27cc_17aa_200b[] = "ThinkPad T60/R60 series";
+#endif
+#ifdef INIT_SUBSYS_INFO
static const char pci_subsys_8086_27cc_8086_544e[] = "DeskTop Board D945GTP";
#endif
static const char pci_device_8086_27d0[] = "82801G (ICH7 Family) PCI Express Port 1";
@@ -23394,8 +24559,29 @@ static const char pci_device_8086_27d2[] = "82801G (ICH7 Family) PCI Express Por
static const char pci_device_8086_27d4[] = "82801G (ICH7 Family) PCI Express Port 3";
static const char pci_device_8086_27d6[] = "82801G (ICH7 Family) PCI Express Port 4";
static const char pci_device_8086_27d8[] = "82801G (ICH7 Family) High Definition Audio Controller";
+#ifdef INIT_SUBSYS_INFO
+static const char pci_subsys_8086_27d8_107b_5048[] = "E4500";
+#endif
+#ifdef INIT_SUBSYS_INFO
+static const char pci_subsys_8086_27d8_10f7_8338[] = "Panasonic CF-Y5 laptop";
+#endif
+#ifdef INIT_SUBSYS_INFO
+static const char pci_subsys_8086_27d8_1179_ff31[] = "Toshiba America Information Systems:AC97 Data Fax SoftModem with SmartCP";
+#endif
+#ifdef INIT_SUBSYS_INFO
+static const char pci_subsys_8086_27d8_152d_0753[] = "Softmodem";
+#endif
+#ifdef INIT_SUBSYS_INFO
+static const char pci_subsys_8086_27d8_17aa_2010[] = "ThinkPad T60/R60 series";
+#endif
static const char pci_device_8086_27da[] = "82801G (ICH7 Family) SMBus Controller";
#ifdef INIT_SUBSYS_INFO
+static const char pci_subsys_8086_27da_10f7_8338[] = "Panasonic CF-Y5 laptop";
+#endif
+#ifdef INIT_SUBSYS_INFO
+static const char pci_subsys_8086_27da_17aa_200f[] = "ThinkPad T60/R60 series";
+#endif
+#ifdef INIT_SUBSYS_INFO
static const char pci_subsys_8086_27da_8086_544e[] = "DeskTop Board D945GTP";
#endif
static const char pci_device_8086_27dc[] = "82801G (ICH7 Family) LAN Controller";
@@ -23406,69 +24592,110 @@ static const char pci_device_8086_27dd[] = "82801G (ICH7 Family) AC'97 Modem Con
static const char pci_device_8086_27de[] = "82801G (ICH7 Family) AC'97 Audio Controller";
static const char pci_device_8086_27df[] = "82801G (ICH7 Family) IDE Controller";
#ifdef INIT_SUBSYS_INFO
+static const char pci_subsys_8086_27df_107b_5048[] = "E4500";
+#endif
+#ifdef INIT_SUBSYS_INFO
+static const char pci_subsys_8086_27df_10f7_8338[] = "Panasonic CF-Y5 laptop";
+#endif
+#ifdef INIT_SUBSYS_INFO
+static const char pci_subsys_8086_27df_17aa_200c[] = "Thinkpad R60e model 0657";
+#endif
+#ifdef INIT_SUBSYS_INFO
static const char pci_subsys_8086_27df_8086_544e[] = "DeskTop Board D945GTP";
#endif
static const char pci_device_8086_27e0[] = "82801GR/GH/GHM (ICH7 Family) PCI Express Port 5";
static const char pci_device_8086_27e2[] = "82801GR/GH/GHM (ICH7 Family) PCI Express Port 6";
-static const char pci_device_8086_2810[] = "LPC Interface Controller";
+static const char pci_device_8086_2810[] = "82801HB/HR (ICH8/R) LPC Interface Controller";
static const char pci_device_8086_2811[] = "Mobile LPC Interface Controller";
-static const char pci_device_8086_2812[] = "LPC Interface Controller";
-static const char pci_device_8086_2814[] = "LPC Interface Controller";
+static const char pci_device_8086_2812[] = "82801HH (ICH8DH) LPC Interface Controller";
+static const char pci_device_8086_2814[] = "82801HO (ICH8DO) LPC Interface Controller";
static const char pci_device_8086_2815[] = "Mobile LPC Interface Controller";
-static const char pci_device_8086_2820[] = "SATA Controller 1 IDE";
-static const char pci_device_8086_2821[] = "SATA Controller AHCI";
-static const char pci_device_8086_2822[] = "SATA Controller RAID";
-static const char pci_device_8086_2824[] = "SATA Controller AHCI";
-static const char pci_device_8086_2825[] = "SATA Controller 2 IDE";
-static const char pci_device_8086_2828[] = "Mobile SATA Controller IDE";
-static const char pci_device_8086_2829[] = "Mobile SATA Controller AHCI";
-static const char pci_device_8086_282a[] = "Mobile SATA Controller RAID";
-static const char pci_device_8086_2830[] = "USB UHCI Controller #1";
-static const char pci_device_8086_2831[] = "USB UHCI Controller #2";
-static const char pci_device_8086_2832[] = "USB UHCI Controller #3";
-static const char pci_device_8086_2834[] = "USB UHCI Controller #4";
-static const char pci_device_8086_2835[] = "USB UHCI Controller #5";
-static const char pci_device_8086_2836[] = "USB2 EHCI Controller #1";
-static const char pci_device_8086_283a[] = "USB2 EHCI Controller #2";
-static const char pci_device_8086_283e[] = "SMBus Controller";
-static const char pci_device_8086_283f[] = "PCI Express Port 1";
-static const char pci_device_8086_2841[] = "PCI Express Port 2";
-static const char pci_device_8086_2843[] = "PCI Express Port 3";
-static const char pci_device_8086_2845[] = "PCI Express Port 4";
-static const char pci_device_8086_2847[] = "PCI Express Port 5";
-static const char pci_device_8086_2849[] = "PCI Express Port 6";
-static const char pci_device_8086_284b[] = "HD Audio Controller";
-static const char pci_device_8086_284f[] = "Thermal Subsystem";
+static const char pci_device_8086_2820[] = "82801H (ICH8 Family) 4 port SATA IDE Controller";
+#ifdef INIT_SUBSYS_INFO
+static const char pci_subsys_8086_2820_1462_7235[] = "P965 Neo MS-7235 mainboard";
+#endif
+static const char pci_device_8086_2821[] = "82801HR/HO/HH (ICH8R/DO/DH) 6 port SATA AHCI Controller";
+static const char pci_device_8086_2822[] = "82801HR/HO/HH (ICH8R/DO/DH) SATA RAID Controller";
+static const char pci_device_8086_2824[] = "82801HB (ICH8) 4 port SATA AHCI Controller";
+static const char pci_device_8086_2825[] = "82801H (ICH8 Family) 2 port SATA IDE Controller";
+#ifdef INIT_SUBSYS_INFO
+static const char pci_subsys_8086_2825_1462_7235[] = "P965 Neo MS-7235 mainboard";
+#endif
+static const char pci_device_8086_2828[] = "Mobile SATA IDE Controller";
+static const char pci_device_8086_2829[] = "Mobile SATA AHCI Controller";
+static const char pci_device_8086_282a[] = "Mobile SATA RAID Controller";
+static const char pci_device_8086_2830[] = "82801H (ICH8 Family) USB UHCI #1";
+#ifdef INIT_SUBSYS_INFO
+static const char pci_subsys_8086_2830_1462_7235[] = "P965 Neo MS-7235 mainboard";
+#endif
+static const char pci_device_8086_2831[] = "82801H (ICH8 Family) USB UHCI #2";
+#ifdef INIT_SUBSYS_INFO
+static const char pci_subsys_8086_2831_1462_7235[] = "P965 Neo MS-7235 mainboard";
+#endif
+static const char pci_device_8086_2832[] = "82801H (ICH8 Family) USB UHCI #3";
+static const char pci_device_8086_2834[] = "82801H (ICH8 Family) USB UHCI #4";
+#ifdef INIT_SUBSYS_INFO
+static const char pci_subsys_8086_2834_1462_7235[] = "P965 Neo MS-7235 mainboard";
+#endif
+static const char pci_device_8086_2835[] = "82801H (ICH8 Family) USB UHCI #5";
+static const char pci_device_8086_2836[] = "82801H (ICH8 Family) USB2 EHCI #1";
+#ifdef INIT_SUBSYS_INFO
+static const char pci_subsys_8086_2836_1462_7235[] = "P965 Neo MS-7235 mainboard";
+#endif
+static const char pci_device_8086_283a[] = "82801H (ICH8 Family) USB2 EHCI #2";
+static const char pci_device_8086_283e[] = "82801H (ICH8 Family) SMBus Controller";
+#ifdef INIT_SUBSYS_INFO
+static const char pci_subsys_8086_283e_1462_7235[] = "P965 Neo MS-7235 mainboard";
+#endif
+static const char pci_device_8086_283f[] = "82801H (ICH8 Family) PCI Express Port 1";
+static const char pci_device_8086_2841[] = "82801H (ICH8 Family) PCI Express Port 2";
+static const char pci_device_8086_2843[] = "82801H (ICH8 Family) PCI Express Port 3";
+static const char pci_device_8086_2845[] = "82801H (ICH8 Family) PCI Express Port 4";
+static const char pci_device_8086_2847[] = "82801H (ICH8 Family) PCI Express Port 5";
+static const char pci_device_8086_2849[] = "82801H (ICH8 Family) PCI Express Port 6";
+static const char pci_device_8086_284b[] = "82801H (ICH8 Family) HD Audio Controller";
+static const char pci_device_8086_284f[] = "82801H (ICH8 Family) Thermal Reporting Device";
static const char pci_device_8086_2850[] = "Mobile IDE Controller";
-static const char pci_device_8086_2970[] = "Memory Controller Hub";
-static const char pci_device_8086_2971[] = "PCI Express Root Port";
-static const char pci_device_8086_2972[] = "Integrated Graphics Controller";
-static const char pci_device_8086_2973[] = "Integrated Graphics Controller";
-static const char pci_device_8086_2974[] = "HECI Controller";
-static const char pci_device_8086_2976[] = "PT IDER Controller";
-static const char pci_device_8086_2977[] = "KT Controller";
-static const char pci_device_8086_2990[] = "Memory Controller Hub";
-static const char pci_device_8086_2991[] = "PCI Express Root Port";
-static const char pci_device_8086_2992[] = "Integrated Graphics Controller";
-static const char pci_device_8086_2993[] = "Integrated Graphics Controller";
-static const char pci_device_8086_2994[] = "HECI Controller";
-static const char pci_device_8086_2995[] = "HECI Controller";
-static const char pci_device_8086_2996[] = "PT IDER Controller";
-static const char pci_device_8086_2997[] = "KT Controller";
-static const char pci_device_8086_29a0[] = "Memory Controller Hub";
-static const char pci_device_8086_29a1[] = "PCI Express Root Port";
-static const char pci_device_8086_29a2[] = "Integrated Graphics Controller";
-static const char pci_device_8086_29a3[] = "Integrated Graphics Controller";
-static const char pci_device_8086_29a4[] = "HECI Controller";
-static const char pci_device_8086_29a5[] = "HECI Controller";
-static const char pci_device_8086_29a6[] = "PT IDER Controller";
-static const char pci_device_8086_29a7[] = "KT Controller";
+static const char pci_device_8086_2970[] = "82946GZ/PL/GL Memory Controller Hub";
+static const char pci_device_8086_2971[] = "82946GZ/PL/GL PCI Express Root Port";
+static const char pci_device_8086_2972[] = "82946GZ/GL Integrated Graphics Controller";
+static const char pci_device_8086_2973[] = "82946GZ/GL Integrated Graphics Controller";
+static const char pci_device_8086_2974[] = "82946GZ/GL HECI Controller";
+static const char pci_device_8086_2975[] = "82946GZ/GL HECI Controller";
+static const char pci_device_8086_2976[] = "82946GZ/GL PT IDER Controller";
+static const char pci_device_8086_2977[] = "82946GZ/GL KT Controller";
+static const char pci_device_8086_2980[] = "965 G1 Memory Controller Hub";
+static const char pci_device_8086_2981[] = "965 G1 PCI Express Root Port";
+static const char pci_device_8086_2982[] = "965 G1 Integrated Graphics Controller";
+static const char pci_device_8086_2990[] = "82Q963/Q965 Memory Controller Hub";
+static const char pci_device_8086_2991[] = "82Q963/Q965 PCI Express Root Port";
+static const char pci_device_8086_2992[] = "82Q963/Q965 Integrated Graphics Controller";
+static const char pci_device_8086_2993[] = "82Q963/Q965 Integrated Graphics Controller";
+static const char pci_device_8086_2994[] = "82Q963/Q965 HECI Controller";
+static const char pci_device_8086_2995[] = "82Q963/Q965 HECI Controller";
+static const char pci_device_8086_2996[] = "82Q963/Q965 PT IDER Controller";
+static const char pci_device_8086_2997[] = "82Q963/Q965 KT Controller";
+static const char pci_device_8086_29a0[] = "82P965/G965 Memory Controller Hub";
+static const char pci_device_8086_29a1[] = "82P965/G965 PCI Express Root Port";
+static const char pci_device_8086_29a2[] = "82G965 Integrated Graphics Controller";
+static const char pci_device_8086_29a3[] = "82G965 Integrated Graphics Controller";
+static const char pci_device_8086_29a4[] = "82P965/G965 HECI Controller";
+static const char pci_device_8086_29a5[] = "82P965/G965 HECI Controller";
+static const char pci_device_8086_29a6[] = "82P965/G965 PT IDER Controller";
+static const char pci_device_8086_29a7[] = "82P965/G965 KT Controller";
static const char pci_device_8086_2a00[] = "Mobile Memory Controller Hub";
static const char pci_device_8086_2a01[] = "Mobile PCI Express Root Port";
static const char pci_device_8086_2a02[] = "Mobile Integrated Graphics Controller";
static const char pci_device_8086_2a03[] = "Mobile Integrated Graphics Controller";
+static const char pci_device_8086_2a04[] = "Mobile HECI Controller";
+static const char pci_device_8086_2a05[] = "Mobile HECI Controller";
+static const char pci_device_8086_2a06[] = "Mobile PT IDER Controller";
+static const char pci_device_8086_2a07[] = "Mobile KT Controller";
static const char pci_device_8086_3092[] = "Integrated RAID";
static const char pci_device_8086_3200[] = "GD31244 PCI-X SATA HBA";
+#ifdef INIT_SUBSYS_INFO
+static const char pci_subsys_8086_3200_1775_c200[] = "C2K onboard SATA host bus adapter";
+#endif
static const char pci_device_8086_3340[] = "82855PM Processor to I/O Controller";
#ifdef INIT_SUBSYS_INFO
static const char pci_subsys_8086_3340_1025_005a[] = "TravelMate 290";
@@ -23479,19 +24706,28 @@ static const char pci_subsys_8086_3340_103c_088c[] = "NC8000 laptop";
#ifdef INIT_SUBSYS_INFO
static const char pci_subsys_8086_3340_103c_0890[] = "NC6000 laptop";
#endif
+#ifdef INIT_SUBSYS_INFO
+static const char pci_subsys_8086_3340_103c_08b0[] = "tc1100 tablet";
+#endif
+#ifdef INIT_SUBSYS_INFO
+static const char pci_subsys_8086_3340_144d_c00c[] = "P30 notebook";
+#endif
static const char pci_device_8086_3341[] = "82855PM Processor to AGP Controller";
-static const char pci_device_8086_3500[] = "Enterprise Southbridge PCI Express Upstream Port";
-static const char pci_device_8086_3501[] = "Enterprise Southbridge PCI Express Upstream Port";
-static const char pci_device_8086_3504[] = "Enterprise Southbridge IOxAPIC";
-static const char pci_device_8086_3505[] = "Enterprise Southbridge IOxAPIC";
-static const char pci_device_8086_350c[] = "Enterprise Southbridge PCI Express to PCI-X Bridge";
-static const char pci_device_8086_350d[] = "Enterprise Southbridge PCI Express to PCI-X Bridge";
-static const char pci_device_8086_3510[] = "Enterprise Southbridge PCI Express Downstream Port E1";
-static const char pci_device_8086_3511[] = "Enterprise Southbridge PCI Express Downstream Port E1";
-static const char pci_device_8086_3514[] = "Enterprise Southbridge PCI Express Downstream Port E2";
-static const char pci_device_8086_3515[] = "Enterprise Southbridge PCI Express Downstream Port E2";
-static const char pci_device_8086_3518[] = "Enterprise Southbridge PCI Express Downstream Port E3";
-static const char pci_device_8086_3519[] = "Enterprise Southbridge PCI Express Downstream Port E3";
+#ifdef INIT_SUBSYS_INFO
+static const char pci_subsys_8086_3341_144d_c00c[] = "P30 notebook";
+#endif
+static const char pci_device_8086_3500[] = "6311ESB/6321ESB PCI Express Upstream Port";
+static const char pci_device_8086_3501[] = "6310ESB PCI Express Upstream Port";
+static const char pci_device_8086_3504[] = "6311ESB/6321ESB I/OxAPIC Interrupt Controller";
+static const char pci_device_8086_3505[] = "6310ESB I/OxAPIC Interrupt Controller";
+static const char pci_device_8086_350c[] = "6311ESB/6321ESB PCI Express to PCI-X Bridge";
+static const char pci_device_8086_350d[] = "6310ESB PCI Express to PCI-X Bridge";
+static const char pci_device_8086_3510[] = "6311ESB/6321ESB PCI Express Downstream Port E1";
+static const char pci_device_8086_3511[] = "6310ESB PCI Express Downstream Port E1";
+static const char pci_device_8086_3514[] = "6311ESB/6321ESB PCI Express Downstream Port E2";
+static const char pci_device_8086_3515[] = "6310ESB PCI Express Downstream Port E2";
+static const char pci_device_8086_3518[] = "6311ESB/6321ESB PCI Express Downstream Port E3";
+static const char pci_device_8086_3519[] = "6310ESB PCI Express Downstream Port E3";
static const char pci_device_8086_3575[] = "82830 830 Chipset Host Bridge";
#ifdef INIT_SUBSYS_INFO
static const char pci_subsys_8086_3575_0e11_0030[] = "Evo N600c";
@@ -23510,6 +24746,9 @@ static const char pci_subsys_8086_3577_1014_0513[] = "ThinkPad A/T/X Series";
static const char pci_device_8086_3578[] = "82830 830 Chipset Host Bridge";
static const char pci_device_8086_3580[] = "82852/82855 GM/GME/PM/GMV Processor to I/O Controller";
#ifdef INIT_SUBSYS_INFO
+static const char pci_subsys_8086_3580_1014_055c[] = "Thinkpad R50e model 1634";
+#endif
+#ifdef INIT_SUBSYS_INFO
static const char pci_subsys_8086_3580_1028_0139[] = "Latitude D400";
#endif
#ifdef INIT_SUBSYS_INFO
@@ -23522,6 +24761,12 @@ static const char pci_subsys_8086_3580_1028_0196[] = "Inspiron 5160";
static const char pci_subsys_8086_3580_1734_1055[] = "Amilo M1420";
#endif
#ifdef INIT_SUBSYS_INFO
+static const char pci_subsys_8086_3580_1775_10d0[] = "V5D Single Board Computer";
+#endif
+#ifdef INIT_SUBSYS_INFO
+static const char pci_subsys_8086_3580_1775_ce90[] = "CE9";
+#endif
+#ifdef INIT_SUBSYS_INFO
static const char pci_subsys_8086_3580_4c53_10b0[] = "CL9 mainboard";
#endif
#ifdef INIT_SUBSYS_INFO
@@ -23533,12 +24778,21 @@ static const char pci_subsys_8086_3581_1734_1055[] = "Amilo M1420";
#endif
static const char pci_device_8086_3582[] = "82852/855GM Integrated Graphics Device";
#ifdef INIT_SUBSYS_INFO
+static const char pci_subsys_8086_3582_1014_0562[] = "Thinkpad R50e model 1634";
+#endif
+#ifdef INIT_SUBSYS_INFO
static const char pci_subsys_8086_3582_1028_0139[] = "Latitude D400";
#endif
#ifdef INIT_SUBSYS_INFO
static const char pci_subsys_8086_3582_1028_0163[] = "Latitude D505";
#endif
#ifdef INIT_SUBSYS_INFO
+static const char pci_subsys_8086_3582_1775_10d0[] = "V5D Single Board Computer VGA";
+#endif
+#ifdef INIT_SUBSYS_INFO
+static const char pci_subsys_8086_3582_1775_ce90[] = "CE9";
+#endif
+#ifdef INIT_SUBSYS_INFO
static const char pci_subsys_8086_3582_4c53_10b0[] = "CL9 mainboard";
#endif
#ifdef INIT_SUBSYS_INFO
@@ -23546,6 +24800,9 @@ static const char pci_subsys_8086_3582_4c53_10e0[] = "PSL09 PrPMC";
#endif
static const char pci_device_8086_3584[] = "82852/82855 GM/GME/PM/GMV Processor to I/O Controller";
#ifdef INIT_SUBSYS_INFO
+static const char pci_subsys_8086_3584_1014_055d[] = "Thinkpad R50e model 1634";
+#endif
+#ifdef INIT_SUBSYS_INFO
static const char pci_subsys_8086_3584_1028_0139[] = "Latitude D400";
#endif
#ifdef INIT_SUBSYS_INFO
@@ -23558,6 +24815,12 @@ static const char pci_subsys_8086_3584_1028_0196[] = "Inspiron 5160";
static const char pci_subsys_8086_3584_1734_1055[] = "Amilo M1420";
#endif
#ifdef INIT_SUBSYS_INFO
+static const char pci_subsys_8086_3584_1775_10d0[] = "V5D Single Board Computer";
+#endif
+#ifdef INIT_SUBSYS_INFO
+static const char pci_subsys_8086_3584_1775_ce90[] = "CE9";
+#endif
+#ifdef INIT_SUBSYS_INFO
static const char pci_subsys_8086_3584_4c53_10b0[] = "CL9 mainboard";
#endif
#ifdef INIT_SUBSYS_INFO
@@ -23565,6 +24828,9 @@ static const char pci_subsys_8086_3584_4c53_10e0[] = "PSL09 PrPMC";
#endif
static const char pci_device_8086_3585[] = "82852/82855 GM/GME/PM/GMV Processor to I/O Controller";
#ifdef INIT_SUBSYS_INFO
+static const char pci_subsys_8086_3585_1014_055e[] = "Thinkpad R50e model 1634";
+#endif
+#ifdef INIT_SUBSYS_INFO
static const char pci_subsys_8086_3585_1028_0139[] = "Latitude D400";
#endif
#ifdef INIT_SUBSYS_INFO
@@ -23577,6 +24843,12 @@ static const char pci_subsys_8086_3585_1028_0196[] = "Inspiron 5160";
static const char pci_subsys_8086_3585_1734_1055[] = "Amilo M1420";
#endif
#ifdef INIT_SUBSYS_INFO
+static const char pci_subsys_8086_3585_1775_10d0[] = "V5D Single Board Computer";
+#endif
+#ifdef INIT_SUBSYS_INFO
+static const char pci_subsys_8086_3585_1775_ce90[] = "CE9";
+#endif
+#ifdef INIT_SUBSYS_INFO
static const char pci_subsys_8086_3585_4c53_10b0[] = "CL9 mainboard";
#endif
#ifdef INIT_SUBSYS_INFO
@@ -23616,6 +24888,12 @@ static const char pci_device_8086_359e[] = "E7525 Memory Controller Hub";
#ifdef INIT_SUBSYS_INFO
static const char pci_subsys_8086_359e_1028_0169[] = "Precision 470";
#endif
+static const char pci_device_8086_35b0[] = "3100 Chipset Memory I/O Controller Hub";
+static const char pci_device_8086_35b1[] = "3100 DRAM Controller Error Reporting Registers";
+static const char pci_device_8086_35b5[] = "3100 Chipset Enhanced DMA Controller";
+static const char pci_device_8086_35b6[] = "3100 Chipset PCI Express Port A";
+static const char pci_device_8086_35b7[] = "3100 Chipset PCI Express Port A1";
+static const char pci_device_8086_35c8[] = "3100 Extended Configuration Test Overflow Registers";
static const char pci_device_8086_4220[] = "PRO/Wireless 2200BG Network Connection";
static const char pci_device_8086_4222[] = "PRO/Wireless 3945ABG Network Connection";
#ifdef INIT_SUBSYS_INFO
@@ -23634,11 +24912,12 @@ static const char pci_subsys_8086_4223_1351_103c[] = "Compaq NC6220";
static const char pci_device_8086_4224[] = "PRO/Wireless 2915ABG Network Connection";
static const char pci_device_8086_4227[] = "PRO/Wireless 3945ABG Network Connection";
#ifdef INIT_SUBSYS_INFO
-static const char pci_subsys_8086_4227_8086_1011[] = "Thinkpad X60s";
+static const char pci_subsys_8086_4227_8086_1011[] = "Thinkpad X60s, R60e model 0657";
#endif
#ifdef INIT_SUBSYS_INFO
static const char pci_subsys_8086_4227_8086_1014[] = "PRO/Wireless 3945BG Network Connection";
#endif
+static const char pci_device_8086_5001[] = "Pro/DSL 2100 Modem";
static const char pci_device_8086_5200[] = "EtherExpress PRO/100 Intelligent Server";
static const char pci_device_8086_5201[] = "EtherExpress PRO/100 Intelligent Server";
#ifdef INIT_SUBSYS_INFO
@@ -23801,7 +25080,7 @@ static const char pci_device_8086_84e3[] = "460GX - 84460GX Memory Address Contr
static const char pci_device_8086_84e4[] = "460GX - 84460GX Memory Data Controller (MDC)";
static const char pci_device_8086_84e6[] = "460GX - 82466GX Wide and fast PCI eXpander Bridge (WXB)";
static const char pci_device_8086_84ea[] = "460GX - 84460GX AGP Bridge (GXB function 1)";
-static const char pci_device_8086_8500[] = "IXP4XX Intel Network Processor (IXP420/421/422/425/IXC1100)";
+static const char pci_device_8086_8500[] = "IXP4XX Network Processor (IXP420/421/422/425/IXC1100)";
#ifdef INIT_SUBSYS_INFO
static const char pci_subsys_8086_8500_1993_0ded[] = "mGuard-PCI AV#2";
#endif
@@ -23823,6 +25102,12 @@ static const char pci_device_8086_b152[] = "21152 PCI-to-PCI Bridge";
static const char pci_device_8086_b154[] = "21154 PCI-to-PCI Bridge";
static const char pci_device_8086_b555[] = "21555 Non transparent PCI-to-PCI Bridge";
#ifdef INIT_SUBSYS_INFO
+static const char pci_subsys_8086_b555_12c7_5005[] = "SS7HD PCI Adaptor Card";
+#endif
+#ifdef INIT_SUBSYS_INFO
+static const char pci_subsys_8086_b555_12c7_5006[] = "SS7HDC cPCI Adaptor Card";
+#endif
+#ifdef INIT_SUBSYS_INFO
static const char pci_subsys_8086_b555_12d9_000a[] = "PCI VoIP Gateway";
#endif
#ifdef INIT_SUBSYS_INFO
@@ -23838,6 +25123,10 @@ static const char pci_subsys_8086_b555_e4bf_1000[] = "CC8-1-BLUES";
static const char pci_vendor_8401[] = "TRENDware International Inc.";
#endif
#ifdef VENDOR_INCLUDE_NONVIDEO
+static const char pci_vendor_8686[] = "ScaleMP";
+static const char pci_device_8686_1010[] = "vSMPowered system controller [vSMP CTL]";
+#endif
+#ifdef VENDOR_INCLUDE_NONVIDEO
static const char pci_vendor_8800[] = "Trigem Computer Inc.";
static const char pci_device_8800_2008[] = "Video assistent component";
#endif
@@ -24265,8 +25554,20 @@ static const char pci_subsys_9005_0285_9005_0299[] = "ASR-4800SAS";
#ifdef INIT_SUBSYS_INFO
static const char pci_subsys_9005_0285_9005_029a[] = "4805SAS";
#endif
+#ifdef INIT_SUBSYS_INFO
+static const char pci_subsys_9005_0285_9005_02b5[] = "ASR5800";
+#endif
+#ifdef INIT_SUBSYS_INFO
+static const char pci_subsys_9005_0285_9005_02b6[] = "ASR5805";
+#endif
+#ifdef INIT_SUBSYS_INFO
+static const char pci_subsys_9005_0285_9005_02b7[] = "ASR5808";
+#endif
static const char pci_device_9005_0286[] = "AAC-RAID (Rocket)";
#ifdef INIT_SUBSYS_INFO
+static const char pci_subsys_9005_0286_1014_034d[] = "8s";
+#endif
+#ifdef INIT_SUBSYS_INFO
static const char pci_subsys_9005_0286_1014_9540[] = "ServeRAID 8k/8k-l4";
#endif
#ifdef INIT_SUBSYS_INFO
@@ -24306,7 +25607,7 @@ static const char pci_subsys_9005_0286_9005_02a2[] = "3800SAS";
static const char pci_subsys_9005_0286_9005_02a3[] = "ICP ICP5445AU";
#endif
#ifdef INIT_SUBSYS_INFO
-static const char pci_subsys_9005_0286_9005_02a4[] = "ICP ICP5085LI";
+static const char pci_subsys_9005_0286_9005_02a4[] = "ICP ICP9085LI";
#endif
#ifdef INIT_SUBSYS_INFO
static const char pci_subsys_9005_0286_9005_02a5[] = "ICP ICP5085BR";
@@ -24315,20 +25616,58 @@ static const char pci_subsys_9005_0286_9005_02a5[] = "ICP ICP5085BR";
static const char pci_subsys_9005_0286_9005_02a6[] = "ICP9067MA";
#endif
#ifdef INIT_SUBSYS_INFO
-static const char pci_subsys_9005_0286_9005_02a7[] = "AAR-2830SA";
+static const char pci_subsys_9005_0286_9005_02a7[] = "3805SAS";
#endif
#ifdef INIT_SUBSYS_INFO
-static const char pci_subsys_9005_0286_9005_02a8[] = "AAR-2430SA";
+static const char pci_subsys_9005_0286_9005_02a8[] = "3400SAS";
#endif
#ifdef INIT_SUBSYS_INFO
-static const char pci_subsys_9005_0286_9005_02a9[] = "ICP5087AU";
+static const char pci_subsys_9005_0286_9005_02a9[] = "ICP ICP5085AU";
#endif
#ifdef INIT_SUBSYS_INFO
-static const char pci_subsys_9005_0286_9005_02aa[] = "ICP5047AU";
+static const char pci_subsys_9005_0286_9005_02aa[] = "ICP ICP5045AU";
+#endif
+#ifdef INIT_SUBSYS_INFO
+static const char pci_subsys_9005_0286_9005_02ac[] = "1800SAS";
+#endif
+#ifdef INIT_SUBSYS_INFO
+static const char pci_subsys_9005_0286_9005_02b3[] = "ASR-2400SAS";
+#endif
+#ifdef INIT_SUBSYS_INFO
+static const char pci_subsys_9005_0286_9005_02b4[] = "ICP ICP5045AL";
#endif
#ifdef INIT_SUBSYS_INFO
static const char pci_subsys_9005_0286_9005_0800[] = "Callisto";
#endif
+static const char pci_device_9005_0410[] = "AIC-9410W SAS (Razor HBA RAID)";
+#ifdef INIT_SUBSYS_INFO
+static const char pci_subsys_9005_0410_9005_0410[] = "ASC-48300(Spirit RAID)";
+#endif
+#ifdef INIT_SUBSYS_INFO
+static const char pci_subsys_9005_0410_9005_0411[] = "ASC-58300 (Oakmont RAID)";
+#endif
+static const char pci_device_9005_0412[] = "AIC-9410W SAS (Razor HBA non-RAID)";
+#ifdef INIT_SUBSYS_INFO
+static const char pci_subsys_9005_0412_9005_0412[] = "ASC-48300 (Spirit non-RAID)";
+#endif
+#ifdef INIT_SUBSYS_INFO
+static const char pci_subsys_9005_0412_9005_0413[] = "ASC-58300 (Oakmont non-RAID)";
+#endif
+static const char pci_device_9005_041e[] = "AIC-9410W SAS (Razor ASIC non-RAID)";
+static const char pci_device_9005_041f[] = "AIC-9410W SAS (Razor ASIC RAID)";
+#ifdef INIT_SUBSYS_INFO
+static const char pci_subsys_9005_041f_9005_041f[] = "AIC-9410W SAS (Razor ASIC RAID)";
+#endif
+static const char pci_device_9005_0430[] = "AIC-9405W SAS (Razor-Lite HBA RAID)";
+#ifdef INIT_SUBSYS_INFO
+static const char pci_subsys_9005_0430_9005_0430[] = "ASC-44300 (Spirit-Lite RAID)";
+#endif
+static const char pci_device_9005_0432[] = "AIC-9405W SAS (Razor-Lite HBA non-RAID)";
+#ifdef INIT_SUBSYS_INFO
+static const char pci_subsys_9005_0432_9005_0432[] = "ASC-44300 (Spirit-Lite non-RAID)";
+#endif
+static const char pci_device_9005_043e[] = "AIC-9405W SAS (Razor-Lite ASIC non-RAID)";
+static const char pci_device_9005_043f[] = "AIC-9405W SAS (Razor-Lite ASIC RAID)";
static const char pci_device_9005_0500[] = "Obsidian chipset SCSI controller";
#ifdef INIT_SUBSYS_INFO
static const char pci_subsys_9005_0500_1014_02c1[] = "PCI-X DDR 3Gb SAS Adapter (572A/572C)";
@@ -24470,9 +25809,13 @@ static const char pci_device_aecb_6250[] = "VITC/LTC Timecode Reader card [PCI-V
#endif
#ifdef VENDOR_INCLUDE_NONVIDEO
static const char pci_vendor_affe[] = "Sirrix AG security technologies";
+static const char pci_device_affe_02e1[] = "PCI2E1 2-port ISDN E1 interface";
static const char pci_device_affe_dead[] = "Sirrix.PCI4S0 4-port ISDN S0 interface";
#endif
#ifdef VENDOR_INCLUDE_NONVIDEO
+static const char pci_vendor_b10b[] = "Uakron PCI Project";
+#endif
+#ifdef VENDOR_INCLUDE_NONVIDEO
static const char pci_vendor_b1b3[] = "Shiva Europe Limited";
#endif
#ifdef VENDOR_INCLUDE_NONVIDEO
@@ -24501,6 +25844,9 @@ static const char pci_device_cafe_0003[] = "Luna K3 Hardware Security Module";
static const char pci_vendor_cccc[] = "Catapult Communications";
#endif
#ifdef VENDOR_INCLUDE_NONVIDEO
+static const char pci_vendor_ccec[] = "Curtiss-Wright Controls Embedded Computing";
+#endif
+#ifdef VENDOR_INCLUDE_NONVIDEO
static const char pci_vendor_cddd[] = "Tyzx, Inc.";
static const char pci_device_cddd_0101[] = "DeepSea 1 High Speed Stereo Vision Frame Grabber";
static const char pci_device_cddd_0200[] = "DeepSea 2 High Speed Stereo Vision Frame Grabber";
@@ -24717,6 +26063,12 @@ static const pciSubsystemInfo pci_ss_info_1000_0006_1000_1000 =
{0x1000, 0x1000, pci_subsys_1000_0006_1000_1000, 0};
#undef pci_ss_info_1000_1000
#define pci_ss_info_1000_1000 pci_ss_info_1000_0006_1000_1000
+#endif
+static const pciSubsystemInfo pci_ss_info_1000_000a_0e11_b143 =
+ {0x0e11, 0xb143, pci_subsys_1000_000a_0e11_b143, 0};
+#undef pci_ss_info_0e11_b143
+#define pci_ss_info_0e11_b143 pci_ss_info_1000_000a_0e11_b143
+#ifdef VENDOR_INCLUDE_NONVIDEO
static const pciSubsystemInfo pci_ss_info_1000_000a_1000_1000 =
{0x1000, 0x1000, pci_subsys_1000_000a_1000_1000, 0};
#undef pci_ss_info_1000_1000
@@ -24783,6 +26135,14 @@ static const pciSubsystemInfo pci_ss_info_1000_000f_1092_8760 =
#undef pci_ss_info_1092_8760
#define pci_ss_info_1092_8760 pci_ss_info_1000_000f_1092_8760
#ifdef VENDOR_INCLUDE_NONVIDEO
+static const pciSubsystemInfo pci_ss_info_1000_000f_1775_10d0 =
+ {0x1775, 0x10d0, pci_subsys_1000_000f_1775_10d0, 0};
+#undef pci_ss_info_1775_10d0
+#define pci_ss_info_1775_10d0 pci_ss_info_1000_000f_1775_10d0
+static const pciSubsystemInfo pci_ss_info_1000_000f_1775_10d1 =
+ {0x1775, 0x10d1, pci_subsys_1000_000f_1775_10d1, 0};
+#undef pci_ss_info_1775_10d1
+#define pci_ss_info_1775_10d1 pci_ss_info_1000_000f_1775_10d1
static const pciSubsystemInfo pci_ss_info_1000_000f_1de1_3904 =
{0x1de1, 0x3904, pci_subsys_1000_000f_1de1_3904, 0};
#undef pci_ss_info_1de1_3904
@@ -24823,6 +26183,10 @@ static const pciSubsystemInfo pci_ss_info_1000_0020_1000_1000 =
{0x1000, 0x1000, pci_subsys_1000_0020_1000_1000, 0};
#undef pci_ss_info_1000_1000
#define pci_ss_info_1000_1000 pci_ss_info_1000_0020_1000_1000
+static const pciSubsystemInfo pci_ss_info_1000_0020_107b_1040 =
+ {0x107b, 0x1040, pci_subsys_1000_0020_107b_1040, 0};
+#undef pci_ss_info_107b_1040
+#define pci_ss_info_107b_1040 pci_ss_info_1000_0020_107b_1040
static const pciSubsystemInfo pci_ss_info_1000_0020_1de1_1020 =
{0x1de1, 0x1020, pci_subsys_1000_0020_1de1_1020, 0};
#undef pci_ss_info_1de1_1020
@@ -24835,6 +26199,18 @@ static const pciSubsystemInfo pci_ss_info_1000_0021_1000_1010 =
{0x1000, 0x1010, pci_subsys_1000_0021_1000_1010, 0};
#undef pci_ss_info_1000_1010
#define pci_ss_info_1000_1010 pci_ss_info_1000_0021_1000_1010
+#endif
+static const pciSubsystemInfo pci_ss_info_1000_0021_103c_1330 =
+ {0x103c, 0x1330, pci_subsys_1000_0021_103c_1330, 0};
+#undef pci_ss_info_103c_1330
+#define pci_ss_info_103c_1330 pci_ss_info_1000_0021_103c_1330
+#ifdef VENDOR_INCLUDE_NONVIDEO
+#endif
+static const pciSubsystemInfo pci_ss_info_1000_0021_103c_1340 =
+ {0x103c, 0x1340, pci_subsys_1000_0021_103c_1340, 0};
+#undef pci_ss_info_103c_1340
+#define pci_ss_info_103c_1340 pci_ss_info_1000_0021_103c_1340
+#ifdef VENDOR_INCLUDE_NONVIDEO
static const pciSubsystemInfo pci_ss_info_1000_0021_124b_1070 =
{0x124b, 0x1070, pci_subsys_1000_0021_124b_1070, 0};
#undef pci_ss_info_124b_1070
@@ -24887,6 +26263,12 @@ static const pciSubsystemInfo pci_ss_info_1000_0030_1028_1010 =
#undef pci_ss_info_1028_1010
#define pci_ss_info_1028_1010 pci_ss_info_1000_0030_1028_1010
#ifdef VENDOR_INCLUDE_NONVIDEO
+#endif
+static const pciSubsystemInfo pci_ss_info_1000_0030_103c_12c5 =
+ {0x103c, 0x12c5, pci_subsys_1000_0030_103c_12c5, 0};
+#undef pci_ss_info_103c_12c5
+#define pci_ss_info_103c_12c5 pci_ss_info_1000_0030_103c_12c5
+#ifdef VENDOR_INCLUDE_NONVIDEO
static const pciSubsystemInfo pci_ss_info_1000_0030_124b_1170 =
{0x124b, 0x1170, pci_subsys_1000_0030_124b_1170, 0};
#undef pci_ss_info_124b_1170
@@ -24907,6 +26289,30 @@ static const pciSubsystemInfo pci_ss_info_1000_0040_1000_0066 =
{0x1000, 0x0066, pci_subsys_1000_0040_1000_0066, 0};
#undef pci_ss_info_1000_0066
#define pci_ss_info_1000_0066 pci_ss_info_1000_0040_1000_0066
+#endif
+static const pciSubsystemInfo pci_ss_info_1000_0060_1028_1f0a =
+ {0x1028, 0x1f0a, pci_subsys_1000_0060_1028_1f0a, 0};
+#undef pci_ss_info_1028_1f0a
+#define pci_ss_info_1028_1f0a pci_ss_info_1000_0060_1028_1f0a
+#ifdef VENDOR_INCLUDE_NONVIDEO
+#endif
+static const pciSubsystemInfo pci_ss_info_1000_0060_1028_1f0b =
+ {0x1028, 0x1f0b, pci_subsys_1000_0060_1028_1f0b, 0};
+#undef pci_ss_info_1028_1f0b
+#define pci_ss_info_1028_1f0b pci_ss_info_1000_0060_1028_1f0b
+#ifdef VENDOR_INCLUDE_NONVIDEO
+#endif
+static const pciSubsystemInfo pci_ss_info_1000_0060_1028_1f0c =
+ {0x1028, 0x1f0c, pci_subsys_1000_0060_1028_1f0c, 0};
+#undef pci_ss_info_1028_1f0c
+#define pci_ss_info_1028_1f0c pci_ss_info_1000_0060_1028_1f0c
+#ifdef VENDOR_INCLUDE_NONVIDEO
+#endif
+static const pciSubsystemInfo pci_ss_info_1000_0060_1028_1f0d =
+ {0x1028, 0x1f0d, pci_subsys_1000_0060_1028_1f0d, 0};
+#undef pci_ss_info_1028_1f0d
+#define pci_ss_info_1028_1f0d pci_ss_info_1000_0060_1028_1f0d
+#ifdef VENDOR_INCLUDE_NONVIDEO
static const pciSubsystemInfo pci_ss_info_1000_0062_1000_0062 =
{0x1000, 0x0062, pci_subsys_1000_0062_1000_0062, 0};
#undef pci_ss_info_1000_0062
@@ -25021,6 +26427,90 @@ static const pciSubsystemInfo pci_ss_info_1000_0409_8086_3499 =
#undef pci_ss_info_8086_3499
#define pci_ss_info_8086_3499 pci_ss_info_1000_0409_8086_3499
#ifdef VENDOR_INCLUDE_NONVIDEO
+static const pciSubsystemInfo pci_ss_info_1000_0411_1000_1001 =
+ {0x1000, 0x1001, pci_subsys_1000_0411_1000_1001, 0};
+#undef pci_ss_info_1000_1001
+#define pci_ss_info_1000_1001 pci_ss_info_1000_0411_1000_1001
+static const pciSubsystemInfo pci_ss_info_1000_0411_1000_1002 =
+ {0x1000, 0x1002, pci_subsys_1000_0411_1000_1002, 0};
+#undef pci_ss_info_1000_1002
+#define pci_ss_info_1000_1002 pci_ss_info_1000_0411_1000_1002
+static const pciSubsystemInfo pci_ss_info_1000_0411_1000_1003 =
+ {0x1000, 0x1003, pci_subsys_1000_0411_1000_1003, 0};
+#undef pci_ss_info_1000_1003
+#define pci_ss_info_1000_1003 pci_ss_info_1000_0411_1000_1003
+static const pciSubsystemInfo pci_ss_info_1000_0411_1000_1004 =
+ {0x1000, 0x1004, pci_subsys_1000_0411_1000_1004, 0};
+#undef pci_ss_info_1000_1004
+#define pci_ss_info_1000_1004 pci_ss_info_1000_0411_1000_1004
+static const pciSubsystemInfo pci_ss_info_1000_0411_1000_100c =
+ {0x1000, 0x100c, pci_subsys_1000_0411_1000_100c, 0};
+#undef pci_ss_info_1000_100c
+#define pci_ss_info_1000_100c pci_ss_info_1000_0411_1000_100c
+static const pciSubsystemInfo pci_ss_info_1000_0411_1000_100d =
+ {0x1000, 0x100d, pci_subsys_1000_0411_1000_100d, 0};
+#undef pci_ss_info_1000_100d
+#define pci_ss_info_1000_100d pci_ss_info_1000_0411_1000_100d
+static const pciSubsystemInfo pci_ss_info_1000_0411_1000_2004 =
+ {0x1000, 0x2004, pci_subsys_1000_0411_1000_2004, 0};
+#undef pci_ss_info_1000_2004
+#define pci_ss_info_1000_2004 pci_ss_info_1000_0411_1000_2004
+static const pciSubsystemInfo pci_ss_info_1000_0411_1000_2005 =
+ {0x1000, 0x2005, pci_subsys_1000_0411_1000_2005, 0};
+#undef pci_ss_info_1000_2005
+#define pci_ss_info_1000_2005 pci_ss_info_1000_0411_1000_2005
+#endif
+static const pciSubsystemInfo pci_ss_info_1000_0411_1033_8287 =
+ {0x1033, 0x8287, pci_subsys_1000_0411_1033_8287, 0};
+#undef pci_ss_info_1033_8287
+#define pci_ss_info_1033_8287 pci_ss_info_1000_0411_1033_8287
+#ifdef VENDOR_INCLUDE_NONVIDEO
+static const pciSubsystemInfo pci_ss_info_1000_0411_1054_3016 =
+ {0x1054, 0x3016, pci_subsys_1000_0411_1054_3016, 0};
+#undef pci_ss_info_1054_3016
+#define pci_ss_info_1054_3016 pci_ss_info_1000_0411_1054_3016
+static const pciSubsystemInfo pci_ss_info_1000_0411_1734_1081 =
+ {0x1734, 0x1081, pci_subsys_1000_0411_1734_1081, 0};
+#undef pci_ss_info_1734_1081
+#define pci_ss_info_1734_1081 pci_ss_info_1000_0411_1734_1081
+static const pciSubsystemInfo pci_ss_info_1000_0411_1734_10a3 =
+ {0x1734, 0x10a3, pci_subsys_1000_0411_1734_10a3, 0};
+#undef pci_ss_info_1734_10a3
+#define pci_ss_info_1734_10a3 pci_ss_info_1000_0411_1734_10a3
+#endif
+static const pciSubsystemInfo pci_ss_info_1000_0411_8086_1001 =
+ {0x8086, 0x1001, pci_subsys_1000_0411_8086_1001, 0};
+#undef pci_ss_info_8086_1001
+#define pci_ss_info_8086_1001 pci_ss_info_1000_0411_8086_1001
+#ifdef VENDOR_INCLUDE_NONVIDEO
+#endif
+static const pciSubsystemInfo pci_ss_info_1000_0411_8086_1003 =
+ {0x8086, 0x1003, pci_subsys_1000_0411_8086_1003, 0};
+#undef pci_ss_info_8086_1003
+#define pci_ss_info_8086_1003 pci_ss_info_1000_0411_8086_1003
+#ifdef VENDOR_INCLUDE_NONVIDEO
+#endif
+static const pciSubsystemInfo pci_ss_info_1000_0411_8086_3500 =
+ {0x8086, 0x3500, pci_subsys_1000_0411_8086_3500, 0};
+#undef pci_ss_info_8086_3500
+#define pci_ss_info_8086_3500 pci_ss_info_1000_0411_8086_3500
+#ifdef VENDOR_INCLUDE_NONVIDEO
+#endif
+static const pciSubsystemInfo pci_ss_info_1000_0411_8086_3501 =
+ {0x8086, 0x3501, pci_subsys_1000_0411_8086_3501, 0};
+#undef pci_ss_info_8086_3501
+#define pci_ss_info_8086_3501 pci_ss_info_1000_0411_8086_3501
+#ifdef VENDOR_INCLUDE_NONVIDEO
+#endif
+static const pciSubsystemInfo pci_ss_info_1000_0411_8086_3504 =
+ {0x8086, 0x3504, pci_subsys_1000_0411_8086_3504, 0};
+#undef pci_ss_info_8086_3504
+#define pci_ss_info_8086_3504 pci_ss_info_1000_0411_8086_3504
+#ifdef VENDOR_INCLUDE_NONVIDEO
+static const pciSubsystemInfo pci_ss_info_1000_0413_1000_1005 =
+ {0x1000, 0x1005, pci_subsys_1000_0413_1000_1005, 0};
+#undef pci_ss_info_1000_1005
+#define pci_ss_info_1000_1005 pci_ss_info_1000_0413_1000_1005
static const pciSubsystemInfo pci_ss_info_1000_0622_1000_1020 =
{0x1000, 0x1020, pci_subsys_1000_0622_1000_1020, 0};
#undef pci_ss_info_1000_1020
@@ -25162,6 +26652,10 @@ static const pciSubsystemInfo pci_ss_info_1002_4152_1787_4002 =
{0x1787, 0x4002, pci_subsys_1002_4152_1787_4002, 0};
#undef pci_ss_info_1787_4002
#define pci_ss_info_1787_4002 pci_ss_info_1002_4152_1787_4002
+static const pciSubsystemInfo pci_ss_info_1002_4153_1043_010c =
+ {0x1043, 0x010c, pci_subsys_1002_4153_1043_010c, 0};
+#undef pci_ss_info_1043_010c
+#define pci_ss_info_1043_010c pci_ss_info_1002_4153_1043_010c
static const pciSubsystemInfo pci_ss_info_1002_4153_1462_932c =
{0x1462, 0x932c, pci_subsys_1002_4153_1462_932c, 0};
#undef pci_ss_info_1462_932c
@@ -25222,6 +26716,10 @@ static const pciSubsystemInfo pci_ss_info_1002_4172_1787_4003 =
{0x1787, 0x4003, pci_subsys_1002_4172_1787_4003, 0};
#undef pci_ss_info_1787_4003
#define pci_ss_info_1787_4003 pci_ss_info_1002_4172_1787_4003
+static const pciSubsystemInfo pci_ss_info_1002_4173_1043_010d =
+ {0x1043, 0x010d, pci_subsys_1002_4173_1043_010d, 0};
+#undef pci_ss_info_1043_010d
+#define pci_ss_info_1043_010d pci_ss_info_1002_4173_1043_010d
static const pciSubsystemInfo pci_ss_info_1002_4242_1002_02aa =
{0x1002, 0x02aa, pci_subsys_1002_4242_1002_02aa, 0};
#undef pci_ss_info_1002_02aa
@@ -25478,6 +26976,10 @@ static const pciSubsystemInfo pci_ss_info_1002_4752_103c_10e1 =
{0x103c, 0x10e1, pci_subsys_1002_4752_103c_10e1, 0};
#undef pci_ss_info_103c_10e1
#define pci_ss_info_103c_10e1 pci_ss_info_1002_4752_103c_10e1
+static const pciSubsystemInfo pci_ss_info_1002_4752_107b_6400 =
+ {0x107b, 0x6400, pci_subsys_1002_4752_107b_6400, 0};
+#undef pci_ss_info_107b_6400
+#define pci_ss_info_107b_6400 pci_ss_info_1002_4752_107b_6400
static const pciSubsystemInfo pci_ss_info_1002_4752_1734_007a =
{0x1734, 0x007a, pci_subsys_1002_4752_1734_007a, 0};
#undef pci_ss_info_1734_007a
@@ -25966,6 +27468,10 @@ static const pciSubsystemInfo pci_ss_info_1002_5159_1028_019a =
{0x1028, 0x019a, pci_subsys_1002_5159_1028_019a, 0};
#undef pci_ss_info_1028_019a
#define pci_ss_info_1028_019a pci_ss_info_1002_5159_1028_019a
+static const pciSubsystemInfo pci_ss_info_1002_5159_103c_1292 =
+ {0x103c, 0x1292, pci_subsys_1002_5159_103c_1292, 0};
+#undef pci_ss_info_103c_1292
+#define pci_ss_info_103c_1292 pci_ss_info_1002_5159_103c_1292
static const pciSubsystemInfo pci_ss_info_1002_5159_1458_4002 =
{0x1458, 0x4002, pci_subsys_1002_5159_1458_4002, 0};
#undef pci_ss_info_1458_4002
@@ -25990,6 +27496,10 @@ static const pciSubsystemInfo pci_ss_info_1002_5159_1787_0202 =
{0x1787, 0x0202, pci_subsys_1002_5159_1787_0202, 0};
#undef pci_ss_info_1787_0202
#define pci_ss_info_1787_0202 pci_ss_info_1002_5159_1787_0202
+static const pciSubsystemInfo pci_ss_info_1002_5159_17ee_1001 =
+ {0x17ee, 0x1001, pci_subsys_1002_5159_17ee_1001, 0};
+#undef pci_ss_info_17ee_1001
+#define pci_ss_info_17ee_1001 pci_ss_info_1002_5159_17ee_1001
static const pciSubsystemInfo pci_ss_info_1002_5245_1002_0008 =
{0x1002, 0x0008, pci_subsys_1002_5245_1002_0008, 0};
#undef pci_ss_info_1002_0008
@@ -26322,6 +27832,10 @@ static const pciSubsystemInfo pci_ss_info_1002_7166_1002_0323 =
{0x1002, 0x0323, pci_subsys_1002_7166_1002_0323, 0};
#undef pci_ss_info_1002_0323
#define pci_ss_info_1002_0323 pci_ss_info_1002_7166_1002_0323
+static const pciSubsystemInfo pci_ss_info_1002_71c4_17aa_2007 =
+ {0x17aa, 0x2007, pci_subsys_1002_71c4_17aa_2007, 0};
+#undef pci_ss_info_17aa_2007
+#define pci_ss_info_17aa_2007 pci_ss_info_1002_71c4_17aa_2007
#ifdef VENDOR_INCLUDE_NONVIDEO
static const pciSubsystemInfo pci_ss_info_1004_0304_1004_0304 =
{0x1004, 0x0304, pci_subsys_1004_0304_1004_0304, 0};
@@ -26476,6 +27990,10 @@ static const pciSubsystemInfo pci_ss_info_1011_0019_1033_800d =
{0x1033, 0x800d, pci_subsys_1011_0019_1033_800d, 0};
#undef pci_ss_info_1033_800d
#define pci_ss_info_1033_800d pci_ss_info_1011_0019_1033_800d
+static const pciSubsystemInfo pci_ss_info_1011_0019_103c_125a =
+ {0x103c, 0x125a, pci_subsys_1011_0019_103c_125a, 0};
+#undef pci_ss_info_103c_125a
+#define pci_ss_info_103c_125a pci_ss_info_1011_0019_103c_125a
static const pciSubsystemInfo pci_ss_info_1011_0019_108d_0016 =
{0x108d, 0x0016, pci_subsys_1011_0019_108d_0016, 0};
#undef pci_ss_info_108d_0016
@@ -26584,6 +28102,18 @@ static const pciSubsystemInfo pci_ss_info_1011_0019_13d1_ab01 =
{0x13d1, 0xab01, pci_subsys_1011_0019_13d1_ab01, 0};
#undef pci_ss_info_13d1_ab01
#define pci_ss_info_13d1_ab01 pci_ss_info_1011_0019_13d1_ab01
+static const pciSubsystemInfo pci_ss_info_1011_0019_1498_000a =
+ {0x1498, 0x000a, pci_subsys_1011_0019_1498_000a, 0};
+#undef pci_ss_info_1498_000a
+#define pci_ss_info_1498_000a pci_ss_info_1011_0019_1498_000a
+static const pciSubsystemInfo pci_ss_info_1011_0019_1498_000b =
+ {0x1498, 0x000b, pci_subsys_1011_0019_1498_000b, 0};
+#undef pci_ss_info_1498_000b
+#define pci_ss_info_1498_000b pci_ss_info_1011_0019_1498_000b
+static const pciSubsystemInfo pci_ss_info_1011_0019_1498_000c =
+ {0x1498, 0x000c, pci_subsys_1011_0019_1498_000c, 0};
+#undef pci_ss_info_1498_000c
+#define pci_ss_info_1498_000c pci_ss_info_1011_0019_1498_000c
static const pciSubsystemInfo pci_ss_info_1011_0019_14cb_0100 =
{0x14cb, 0x0100, pci_subsys_1011_0019_14cb_0100, 0};
#undef pci_ss_info_14cb_0100
@@ -26672,6 +28202,10 @@ static const pciSubsystemInfo pci_ss_info_1013_6003_1014_0153 =
{0x1014, 0x0153, pci_subsys_1013_6003_1014_0153, 0};
#undef pci_ss_info_1014_0153
#define pci_ss_info_1014_0153 pci_ss_info_1013_6003_1014_0153
+static const pciSubsystemInfo pci_ss_info_1013_6003_153b_112e =
+ {0x153b, 0x112e, pci_subsys_1013_6003_153b_112e, 0};
+#undef pci_ss_info_153b_112e
+#define pci_ss_info_153b_112e pci_ss_info_1013_6003_153b_112e
static const pciSubsystemInfo pci_ss_info_1013_6003_153b_1136 =
{0x153b, 0x1136, pci_subsys_1013_6003_153b_1136, 0};
#undef pci_ss_info_153b_1136
@@ -26684,6 +28218,10 @@ static const pciSubsystemInfo pci_ss_info_1013_6003_1681_a011 =
{0x1681, 0xa011, pci_subsys_1013_6003_1681_a011, 0};
#undef pci_ss_info_1681_a011
#define pci_ss_info_1681_a011 pci_ss_info_1013_6003_1681_a011
+static const pciSubsystemInfo pci_ss_info_1013_6003_5053_3357 =
+ {0x5053, 0x3357, pci_subsys_1013_6003_5053_3357, 0};
+#undef pci_ss_info_5053_3357
+#define pci_ss_info_5053_3357 pci_ss_info_1013_6003_5053_3357
static const pciSubsystemInfo pci_ss_info_1013_6005_1013_4281 =
{0x1013, 0x4281, pci_subsys_1013_6005_1013_4281, 0};
#undef pci_ss_info_1013_4281
@@ -26996,6 +28534,10 @@ static const pciSubsystemInfo pci_ss_info_1022_2000_1259_2703 =
{0x1259, 0x2703, pci_subsys_1022_2000_1259_2703, 0};
#undef pci_ss_info_1259_2703
#define pci_ss_info_1259_2703 pci_ss_info_1022_2000_1259_2703
+static const pciSubsystemInfo pci_ss_info_1022_2000_1259_2704 =
+ {0x1259, 0x2704, pci_subsys_1022_2000_1259_2704, 0};
+#undef pci_ss_info_1259_2704
+#define pci_ss_info_1259_2704 pci_ss_info_1022_2000_1259_2704
static const pciSubsystemInfo pci_ss_info_1022_2000_4c53_1000 =
{0x4c53, 0x1000, pci_subsys_1022_2000_4c53_1000, 0};
#undef pci_ss_info_4c53_1000
@@ -28082,6 +29624,10 @@ static const pciSubsystemInfo pci_ss_info_103c_1048_103c_1301 =
{0x103c, 0x1301, pci_subsys_103c_1048_103c_1301, 0};
#undef pci_ss_info_103c_1301
#define pci_ss_info_103c_1301 pci_ss_info_103c_1048_103c_1301
+static const pciSubsystemInfo pci_ss_info_103c_3220_103c_3225 =
+ {0x103c, 0x3225, pci_subsys_103c_3220_103c_3225, 0};
+#undef pci_ss_info_103c_3225
+#define pci_ss_info_103c_3225 pci_ss_info_103c_3220_103c_3225
#ifdef VENDOR_INCLUDE_NONVIDEO
static const pciSubsystemInfo pci_ss_info_1043_0675_0675_1704 =
{0x0675, 0x1704, pci_subsys_1043_0675_0675_1704, 0};
@@ -28252,6 +29798,10 @@ static const pciSubsystemInfo pci_ss_info_1048_8901_1048_0935 =
#undef pci_ss_info_1048_0935
#define pci_ss_info_1048_0935 pci_ss_info_1048_8901_1048_0935
#endif
+static const pciSubsystemInfo pci_ss_info_104a_0500_104a_0500 =
+ {0x104a, 0x0500, pci_subsys_104a_0500_104a_0500, 0};
+#undef pci_ss_info_104a_0500
+#define pci_ss_info_104a_0500 pci_ss_info_104a_0500_104a_0500
static const pciSubsystemInfo pci_ss_info_104c_3d07_1011_4d10 =
{0x1011, 0x4d10, pci_subsys_104c_3d07_1011_4d10, 0};
#undef pci_ss_info_1011_4d10
@@ -28380,6 +29930,10 @@ static const pciSubsystemInfo pci_ss_info_104c_8020_11bd_000f =
{0x11bd, 0x000f, pci_subsys_104c_8020_11bd_000f, 0};
#undef pci_ss_info_11bd_000f
#define pci_ss_info_11bd_000f pci_ss_info_104c_8020_11bd_000f
+static const pciSubsystemInfo pci_ss_info_104c_8020_11bd_001c =
+ {0x11bd, 0x001c, pci_subsys_104c_8020_11bd_001c, 0};
+#undef pci_ss_info_11bd_001c
+#define pci_ss_info_11bd_001c pci_ss_info_104c_8020_11bd_001c
static const pciSubsystemInfo pci_ss_info_104c_8021_104d_80df =
{0x104d, 0x80df, pci_subsys_104c_8021_104d_80df, 0};
#undef pci_ss_info_104d_80df
@@ -28488,6 +30042,26 @@ static const pciSubsystemInfo pci_ss_info_104c_8035_103c_099c =
{0x103c, 0x099c, pci_subsys_104c_8035_103c_099c, 0};
#undef pci_ss_info_103c_099c
#define pci_ss_info_103c_099c pci_ss_info_104c_8035_103c_099c
+static const pciSubsystemInfo pci_ss_info_104c_8039_103c_309f =
+ {0x103c, 0x309f, pci_subsys_104c_8039_103c_309f, 0};
+#undef pci_ss_info_103c_309f
+#define pci_ss_info_103c_309f pci_ss_info_104c_8039_103c_309f
+static const pciSubsystemInfo pci_ss_info_104c_803a_103c_309f =
+ {0x103c, 0x309f, pci_subsys_104c_803a_103c_309f, 0};
+#undef pci_ss_info_103c_309f
+#define pci_ss_info_103c_309f pci_ss_info_104c_803a_103c_309f
+static const pciSubsystemInfo pci_ss_info_104c_803b_103c_309f =
+ {0x103c, 0x309f, pci_subsys_104c_803b_103c_309f, 0};
+#undef pci_ss_info_103c_309f
+#define pci_ss_info_103c_309f pci_ss_info_104c_803b_103c_309f
+static const pciSubsystemInfo pci_ss_info_104c_803c_103c_309f =
+ {0x103c, 0x309f, pci_subsys_104c_803c_103c_309f, 0};
+#undef pci_ss_info_103c_309f
+#define pci_ss_info_103c_309f pci_ss_info_104c_803c_103c_309f
+static const pciSubsystemInfo pci_ss_info_104c_803d_103c_309f =
+ {0x103c, 0x309f, pci_subsys_104c_803d_103c_309f, 0};
+#undef pci_ss_info_103c_309f
+#define pci_ss_info_103c_309f pci_ss_info_104c_803d_103c_309f
static const pciSubsystemInfo pci_ss_info_104c_8204_1028_0139 =
{0x1028, 0x0139, pci_subsys_104c_8204_1028_0139, 0};
#undef pci_ss_info_1028_0139
@@ -28632,14 +30206,26 @@ static const pciSubsystemInfo pci_ss_info_104c_ac51_e4bf_1000 =
{0xe4bf, 0x1000, pci_subsys_104c_ac51_e4bf_1000, 0};
#undef pci_ss_info_e4bf_1000
#define pci_ss_info_e4bf_1000 pci_ss_info_104c_ac51_e4bf_1000
+static const pciSubsystemInfo pci_ss_info_104c_ac54_103c_08b0 =
+ {0x103c, 0x08b0, pci_subsys_104c_ac54_103c_08b0, 0};
+#undef pci_ss_info_103c_08b0
+#define pci_ss_info_103c_08b0 pci_ss_info_104c_ac54_103c_08b0
static const pciSubsystemInfo pci_ss_info_104c_ac55_1014_0512 =
{0x1014, 0x0512, pci_subsys_104c_ac55_1014_0512, 0};
#undef pci_ss_info_1014_0512
#define pci_ss_info_1014_0512 pci_ss_info_104c_ac55_1014_0512
+static const pciSubsystemInfo pci_ss_info_104c_ac56_1014_0512 =
+ {0x1014, 0x0512, pci_subsys_104c_ac56_1014_0512, 0};
+#undef pci_ss_info_1014_0512
+#define pci_ss_info_1014_0512 pci_ss_info_104c_ac56_1014_0512
static const pciSubsystemInfo pci_ss_info_104c_ac56_1014_0528 =
{0x1014, 0x0528, pci_subsys_104c_ac56_1014_0528, 0};
#undef pci_ss_info_1014_0528
#define pci_ss_info_1014_0528 pci_ss_info_104c_ac56_1014_0528
+static const pciSubsystemInfo pci_ss_info_104c_ac56_17aa_2012 =
+ {0x17aa, 0x2012, pci_subsys_104c_ac56_17aa_2012, 0};
+#undef pci_ss_info_17aa_2012
+#define pci_ss_info_17aa_2012 pci_ss_info_104c_ac56_17aa_2012
static const pciSubsystemInfo pci_ss_info_104c_ac60_175c_5100 =
{0x175c, 0x5100, pci_subsys_104c_ac60_175c_5100, 0};
#undef pci_ss_info_175c_5100
@@ -29246,6 +30832,30 @@ static const pciSubsystemInfo pci_ss_info_1077_2200_1077_0002 =
#undef pci_ss_info_1077_0002
#define pci_ss_info_1077_0002 pci_ss_info_1077_2200_1077_0002
#endif
+static const pciSubsystemInfo pci_ss_info_1077_2312_103c_0131 =
+ {0x103c, 0x0131, pci_subsys_1077_2312_103c_0131, 0};
+#undef pci_ss_info_103c_0131
+#define pci_ss_info_103c_0131 pci_ss_info_1077_2312_103c_0131
+#ifdef VENDOR_INCLUDE_NONVIDEO
+#endif
+static const pciSubsystemInfo pci_ss_info_1077_2312_103c_12ba =
+ {0x103c, 0x12ba, pci_subsys_1077_2312_103c_12ba, 0};
+#undef pci_ss_info_103c_12ba
+#define pci_ss_info_103c_12ba pci_ss_info_1077_2312_103c_12ba
+#ifdef VENDOR_INCLUDE_NONVIDEO
+#endif
+static const pciSubsystemInfo pci_ss_info_1077_2422_103c_12d7 =
+ {0x103c, 0x12d7, pci_subsys_1077_2422_103c_12d7, 0};
+#undef pci_ss_info_103c_12d7
+#define pci_ss_info_103c_12d7 pci_ss_info_1077_2422_103c_12d7
+#ifdef VENDOR_INCLUDE_NONVIDEO
+#endif
+static const pciSubsystemInfo pci_ss_info_1077_2422_103c_12dd =
+ {0x103c, 0x12dd, pci_subsys_1077_2422_103c_12dd, 0};
+#undef pci_ss_info_103c_12dd
+#define pci_ss_info_103c_12dd pci_ss_info_1077_2422_103c_12dd
+#ifdef VENDOR_INCLUDE_NONVIDEO
+#endif
#ifdef VENDOR_INCLUDE_NONVIDEO
static const pciSubsystemInfo pci_ss_info_108d_0004_108d_0004 =
{0x108d, 0x0004, pci_subsys_108d_0004_108d_0004, 0};
@@ -30083,6 +31693,10 @@ static const pciSubsystemInfo pci_ss_info_10b5_9080_103c_10ec =
#undef pci_ss_info_103c_10ec
#define pci_ss_info_103c_10ec pci_ss_info_10b5_9080_103c_10ec
#ifdef VENDOR_INCLUDE_NONVIDEO
+static const pciSubsystemInfo pci_ss_info_10b5_9080_10b5_1123 =
+ {0x10b5, 0x1123, pci_subsys_10b5_9080_10b5_1123, 0};
+#undef pci_ss_info_10b5_1123
+#define pci_ss_info_10b5_1123 pci_ss_info_10b5_9080_10b5_1123
static const pciSubsystemInfo pci_ss_info_10b5_9080_10b5_9080 =
{0x10b5, 0x9080, pci_subsys_10b5_9080_10b5_9080, 0};
#undef pci_ss_info_10b5_9080
@@ -30099,6 +31713,22 @@ static const pciSubsystemInfo pci_ss_info_10b5_9080_12df_4422 =
{0x12df, 0x4422, pci_subsys_10b5_9080_12df_4422, 0};
#undef pci_ss_info_12df_4422
#define pci_ss_info_12df_4422 pci_ss_info_10b5_9080_12df_4422
+static const pciSubsystemInfo pci_ss_info_10b5_9080_1517_000b =
+ {0x1517, 0x000b, pci_subsys_10b5_9080_1517_000b, 0};
+#undef pci_ss_info_1517_000b
+#define pci_ss_info_1517_000b pci_ss_info_10b5_9080_1517_000b
+static const pciSubsystemInfo pci_ss_info_10b5_9656_1517_000f =
+ {0x1517, 0x000f, pci_subsys_10b5_9656_1517_000f, 0};
+#undef pci_ss_info_1517_000f
+#define pci_ss_info_1517_000f pci_ss_info_10b5_9656_1517_000f
+static const pciSubsystemInfo pci_ss_info_10b5_9656_1885_0700 =
+ {0x1885, 0x0700, pci_subsys_10b5_9656_1885_0700, 0};
+#undef pci_ss_info_1885_0700
+#define pci_ss_info_1885_0700 pci_ss_info_10b5_9656_1885_0700
+static const pciSubsystemInfo pci_ss_info_10b5_9656_1885_0701 =
+ {0x1885, 0x0701, pci_subsys_10b5_9656_1885_0701, 0};
+#undef pci_ss_info_1885_0701
+#define pci_ss_info_1885_0701 pci_ss_info_10b5_9656_1885_0701
#endif
#ifdef VENDOR_INCLUDE_NONVIDEO
static const pciSubsystemInfo pci_ss_info_10b6_0002_10b6_0002 =
@@ -30225,6 +31855,10 @@ static const pciSubsystemInfo pci_ss_info_10b7_9005_10b7_9005 =
{0x10b7, 0x9005, pci_subsys_10b7_9005_10b7_9005, 0};
#undef pci_ss_info_10b7_9005
#define pci_ss_info_10b7_9005 pci_ss_info_10b7_9005_10b7_9005
+static const pciSubsystemInfo pci_ss_info_10b7_9054_10b7_9054 =
+ {0x10b7, 0x9054, pci_subsys_10b7_9054_10b7_9054, 0};
+#undef pci_ss_info_10b7_9054
+#define pci_ss_info_10b7_9054 pci_ss_info_10b7_9054_10b7_9054
#endif
static const pciSubsystemInfo pci_ss_info_10b7_9055_1028_0080 =
{0x1028, 0x0080, pci_subsys_10b7_9055_1028_0080, 0};
@@ -30535,6 +32169,10 @@ static const pciSubsystemInfo pci_ss_info_10b9_5229_1043_8053 =
{0x1043, 0x8053, pci_subsys_10b9_5229_1043_8053, 0};
#undef pci_ss_info_1043_8053
#define pci_ss_info_1043_8053 pci_ss_info_10b9_5229_1043_8053
+static const pciSubsystemInfo pci_ss_info_10b9_5229_1849_5229 =
+ {0x1849, 0x5229, pci_subsys_10b9_5229_1849_5229, 0};
+#undef pci_ss_info_1849_5229
+#define pci_ss_info_1849_5229 pci_ss_info_10b9_5229_1849_5229
static const pciSubsystemInfo pci_ss_info_10b9_5237_1014_0540 =
{0x1014, 0x0540, pci_subsys_10b9_5237_1014_0540, 0};
#undef pci_ss_info_1014_0540
@@ -30731,6 +32369,10 @@ static const pciSubsystemInfo pci_ss_info_10cd_1300_10cd_1310 =
{0x10cd, 0x1310, pci_subsys_10cd_1300_10cd_1310, 0};
#undef pci_ss_info_10cd_1310
#define pci_ss_info_10cd_1310 pci_ss_info_10cd_1300_10cd_1310
+static const pciSubsystemInfo pci_ss_info_10cd_1300_1195_1320 =
+ {0x1195, 0x1320, pci_subsys_10cd_1300_1195_1320, 0};
+#undef pci_ss_info_1195_1320
+#define pci_ss_info_1195_1320 pci_ss_info_10cd_1300_1195_1320
#endif
#ifdef VENDOR_INCLUDE_NONVIDEO
static const pciSubsystemInfo pci_ss_info_10d9_0531_1186_1200 =
@@ -31274,6 +32916,10 @@ static const pciSubsystemInfo pci_ss_info_10de_00a0_14af_5810 =
{0x14af, 0x5810, pci_subsys_10de_00a0_14af_5810, 0};
#undef pci_ss_info_14af_5810
#define pci_ss_info_14af_5810 pci_ss_info_10de_00a0_14af_5810
+static const pciSubsystemInfo pci_ss_info_10de_00cd_10de_029b =
+ {0x10de, 0x029b, pci_subsys_10de_00cd_10de_029b, 0};
+#undef pci_ss_info_10de_029b
+#define pci_ss_info_10de_029b pci_ss_info_10de_00cd_10de_029b
static const pciSubsystemInfo pci_ss_info_10de_00df_105b_0c43 =
{0x105b, 0x0c43, pci_subsys_10de_00df_105b_0c43, 0};
#undef pci_ss_info_105b_0c43
@@ -31286,10 +32932,18 @@ static const pciSubsystemInfo pci_ss_info_10de_00e0_10de_0c11 =
{0x10de, 0x0c11, pci_subsys_10de_00e0_10de_0c11, 0};
#undef pci_ss_info_10de_0c11
#define pci_ss_info_10de_0c11 pci_ss_info_10de_00e0_10de_0c11
+static const pciSubsystemInfo pci_ss_info_10de_00e0_1462_7030 =
+ {0x1462, 0x7030, pci_subsys_10de_00e0_1462_7030, 0};
+#undef pci_ss_info_1462_7030
+#define pci_ss_info_1462_7030 pci_ss_info_10de_00e0_1462_7030
static const pciSubsystemInfo pci_ss_info_10de_00e0_147b_1c0b =
{0x147b, 0x1c0b, pci_subsys_10de_00e0_147b_1c0b, 0};
#undef pci_ss_info_147b_1c0b
#define pci_ss_info_147b_1c0b pci_ss_info_10de_00e0_147b_1c0b
+static const pciSubsystemInfo pci_ss_info_10de_00e1_1462_7030 =
+ {0x1462, 0x7030, pci_subsys_10de_00e1_1462_7030, 0};
+#undef pci_ss_info_1462_7030
+#define pci_ss_info_1462_7030 pci_ss_info_10de_00e1_1462_7030
static const pciSubsystemInfo pci_ss_info_10de_00e1_147b_1c0b =
{0x147b, 0x1c0b, pci_subsys_10de_00e1_147b_1c0b, 0};
#undef pci_ss_info_147b_1c0b
@@ -31306,6 +32960,10 @@ static const pciSubsystemInfo pci_ss_info_10de_00e4_105b_0c43 =
{0x105b, 0x0c43, pci_subsys_10de_00e4_105b_0c43, 0};
#undef pci_ss_info_105b_0c43
#define pci_ss_info_105b_0c43 pci_ss_info_10de_00e4_105b_0c43
+static const pciSubsystemInfo pci_ss_info_10de_00e4_1462_7030 =
+ {0x1462, 0x7030, pci_subsys_10de_00e4_1462_7030, 0};
+#undef pci_ss_info_1462_7030
+#define pci_ss_info_1462_7030 pci_ss_info_10de_00e4_1462_7030
static const pciSubsystemInfo pci_ss_info_10de_00e4_147b_1c0b =
{0x147b, 0x1c0b, pci_subsys_10de_00e4_147b_1c0b, 0};
#undef pci_ss_info_147b_1c0b
@@ -31314,6 +32972,10 @@ static const pciSubsystemInfo pci_ss_info_10de_00e5_105b_0c43 =
{0x105b, 0x0c43, pci_subsys_10de_00e5_105b_0c43, 0};
#undef pci_ss_info_105b_0c43
#define pci_ss_info_105b_0c43 pci_ss_info_10de_00e5_105b_0c43
+static const pciSubsystemInfo pci_ss_info_10de_00e5_1462_7030 =
+ {0x1462, 0x7030, pci_subsys_10de_00e5_1462_7030, 0};
+#undef pci_ss_info_1462_7030
+#define pci_ss_info_1462_7030 pci_ss_info_10de_00e5_1462_7030
static const pciSubsystemInfo pci_ss_info_10de_00e5_147b_1c0b =
{0x147b, 0x1c0b, pci_subsys_10de_00e5_147b_1c0b, 0};
#undef pci_ss_info_147b_1c0b
@@ -31322,6 +32984,10 @@ static const pciSubsystemInfo pci_ss_info_10de_00e7_105b_0c43 =
{0x105b, 0x0c43, pci_subsys_10de_00e7_105b_0c43, 0};
#undef pci_ss_info_105b_0c43
#define pci_ss_info_105b_0c43 pci_ss_info_10de_00e7_105b_0c43
+static const pciSubsystemInfo pci_ss_info_10de_00e7_1462_7030 =
+ {0x1462, 0x7030, pci_subsys_10de_00e7_1462_7030, 0};
+#undef pci_ss_info_1462_7030
+#define pci_ss_info_1462_7030 pci_ss_info_10de_00e7_1462_7030
static const pciSubsystemInfo pci_ss_info_10de_00e7_147b_1c0b =
{0x147b, 0x1c0b, pci_subsys_10de_00e7_147b_1c0b, 0};
#undef pci_ss_info_147b_1c0b
@@ -31330,6 +32996,10 @@ static const pciSubsystemInfo pci_ss_info_10de_00e8_105b_0c43 =
{0x105b, 0x0c43, pci_subsys_10de_00e8_105b_0c43, 0};
#undef pci_ss_info_105b_0c43
#define pci_ss_info_105b_0c43 pci_ss_info_10de_00e8_105b_0c43
+static const pciSubsystemInfo pci_ss_info_10de_00e8_1462_7030 =
+ {0x1462, 0x7030, pci_subsys_10de_00e8_1462_7030, 0};
+#undef pci_ss_info_1462_7030
+#define pci_ss_info_1462_7030 pci_ss_info_10de_00e8_1462_7030
static const pciSubsystemInfo pci_ss_info_10de_00e8_147b_1c0b =
{0x147b, 0x1c0b, pci_subsys_10de_00e8_147b_1c0b, 0};
#undef pci_ss_info_147b_1c0b
@@ -31354,6 +33024,10 @@ static const pciSubsystemInfo pci_ss_info_10de_00f2_1682_211c =
{0x1682, 0x211c, pci_subsys_10de_00f2_1682_211c, 0};
#undef pci_ss_info_1682_211c
#define pci_ss_info_1682_211c pci_ss_info_10de_00f2_1682_211c
+static const pciSubsystemInfo pci_ss_info_10de_00f6_1682_217e =
+ {0x1682, 0x217e, pci_subsys_10de_00f6_1682_217e, 0};
+#undef pci_ss_info_1682_217e
+#define pci_ss_info_1682_217e pci_ss_info_10de_00f6_1682_217e
static const pciSubsystemInfo pci_ss_info_10de_00f9_1682_2120 =
{0x1682, 0x2120, pci_subsys_10de_00f9_1682_2120, 0};
#undef pci_ss_info_1682_2120
@@ -31518,6 +33192,10 @@ static const pciSubsystemInfo pci_ss_info_10de_0150_107d_2842 =
{0x107d, 0x2842, pci_subsys_10de_0150_107d_2842, 0};
#undef pci_ss_info_107d_2842
#define pci_ss_info_107d_2842 pci_ss_info_10de_0150_107d_2842
+static const pciSubsystemInfo pci_ss_info_10de_0150_10de_002e =
+ {0x10de, 0x002e, pci_subsys_10de_0150_10de_002e, 0};
+#undef pci_ss_info_10de_002e
+#define pci_ss_info_10de_002e pci_ss_info_10de_0150_10de_002e
static const pciSubsystemInfo pci_ss_info_10de_0150_1462_8831 =
{0x1462, 0x8831, pci_subsys_10de_0150_1462_8831, 0};
#undef pci_ss_info_1462_8831
@@ -31558,6 +33236,10 @@ static const pciSubsystemInfo pci_ss_info_10de_0171_147b_8f00 =
{0x147b, 0x8f00, pci_subsys_10de_0171_147b_8f00, 0};
#undef pci_ss_info_147b_8f00
#define pci_ss_info_147b_8f00 pci_ss_info_10de_0171_147b_8f00
+static const pciSubsystemInfo pci_ss_info_10de_0176_103c_08b0 =
+ {0x103c, 0x08b0, pci_subsys_10de_0176_103c_08b0, 0};
+#undef pci_ss_info_103c_08b0
+#define pci_ss_info_103c_08b0 pci_ss_info_10de_0176_103c_08b0
static const pciSubsystemInfo pci_ss_info_10de_0176_4c53_1090 =
{0x4c53, 0x1090, pci_subsys_10de_0176_4c53_1090, 0};
#undef pci_ss_info_4c53_1090
@@ -31566,6 +33248,10 @@ static const pciSubsystemInfo pci_ss_info_10de_0179_10de_0179 =
{0x10de, 0x0179, pci_subsys_10de_0179_10de_0179, 0};
#undef pci_ss_info_10de_0179
#define pci_ss_info_10de_0179 pci_ss_info_10de_0179_10de_0179
+static const pciSubsystemInfo pci_ss_info_10de_0181_1043_8063 =
+ {0x1043, 0x8063, pci_subsys_10de_0181_1043_8063, 0};
+#undef pci_ss_info_1043_8063
+#define pci_ss_info_1043_8063 pci_ss_info_10de_0181_1043_8063
static const pciSubsystemInfo pci_ss_info_10de_0181_1043_806f =
{0x1043, 0x806f, pci_subsys_10de_0181_1043_806f, 0};
#undef pci_ss_info_1043_806f
@@ -31586,6 +33272,10 @@ static const pciSubsystemInfo pci_ss_info_10de_0181_147b_8f0d =
{0x147b, 0x8f0d, pci_subsys_10de_0181_147b_8f0d, 0};
#undef pci_ss_info_147b_8f0d
#define pci_ss_info_147b_8f0d pci_ss_info_10de_0181_147b_8f0d
+static const pciSubsystemInfo pci_ss_info_10de_01d1_1462_0345 =
+ {0x1462, 0x0345, pci_subsys_10de_01d1_1462_0345, 0};
+#undef pci_ss_info_1462_0345
+#define pci_ss_info_1462_0345 pci_ss_info_10de_01d1_1462_0345
static const pciSubsystemInfo pci_ss_info_10de_01de_10de_01dc =
{0x10de, 0x01dc, pci_subsys_10de_01de_10de_01dc, 0};
#undef pci_ss_info_10de_01dc
@@ -31754,6 +33444,10 @@ static const pciSubsystemInfo pci_ss_info_10de_0347_103c_006a =
{0x103c, 0x006a, pci_subsys_10de_0347_103c_006a, 0};
#undef pci_ss_info_103c_006a
#define pci_ss_info_103c_006a pci_ss_info_10de_0347_103c_006a
+static const pciSubsystemInfo pci_ss_info_10de_0392_1462_0622 =
+ {0x1462, 0x0622, pci_subsys_10de_0392_1462_0622, 0};
+#undef pci_ss_info_1462_0622
+#define pci_ss_info_1462_0622 pci_ss_info_10de_0392_1462_0622
#ifdef VENDOR_INCLUDE_NONVIDEO
static const pciSubsystemInfo pci_ss_info_10e1_0391_10e1_0391 =
{0x10e1, 0x0391, pci_subsys_10e1_0391_10e1_0391, 0};
@@ -31761,6 +33455,12 @@ static const pciSubsystemInfo pci_ss_info_10e1_0391_10e1_0391 =
#define pci_ss_info_10e1_0391 pci_ss_info_10e1_0391_10e1_0391
#endif
#ifdef VENDOR_INCLUDE_NONVIDEO
+#endif
+static const pciSubsystemInfo pci_ss_info_10ec_0883_1025_1605 =
+ {0x1025, 0x1605, pci_subsys_10ec_0883_1025_1605, 0};
+#undef pci_ss_info_1025_1605
+#define pci_ss_info_1025_1605 pci_ss_info_10ec_0883_1025_1605
+#ifdef VENDOR_INCLUDE_NONVIDEO
static const pciSubsystemInfo pci_ss_info_10ec_8029_10b8_2011 =
{0x10b8, 0x2011, pci_subsys_10ec_8029_10b8_2011, 0};
#undef pci_ss_info_10b8_2011
@@ -32053,6 +33753,14 @@ static const pciSubsystemInfo pci_ss_info_1102_0004_1102_2002 =
{0x1102, 0x2002, pci_subsys_1102_0004_1102_2002, 0};
#undef pci_ss_info_1102_2002
#define pci_ss_info_1102_2002 pci_ss_info_1102_0004_1102_2002
+static const pciSubsystemInfo pci_ss_info_1102_0005_1102_0021 =
+ {0x1102, 0x0021, pci_subsys_1102_0005_1102_0021, 0};
+#undef pci_ss_info_1102_0021
+#define pci_ss_info_1102_0021 pci_ss_info_1102_0005_1102_0021
+static const pciSubsystemInfo pci_ss_info_1102_0005_1102_1003 =
+ {0x1102, 0x1003, pci_subsys_1102_0005_1102_1003, 0};
+#undef pci_ss_info_1102_1003
+#define pci_ss_info_1102_1003 pci_ss_info_1102_0005_1102_1003
static const pciSubsystemInfo pci_ss_info_1102_0007_1102_0007 =
{0x1102, 0x0007, pci_subsys_1102_0007_1102_0007, 0};
#undef pci_ss_info_1102_0007
@@ -33009,6 +34717,34 @@ static const pciSubsystemInfo pci_ss_info_1131_7133_5168_0319 =
{0x5168, 0x0319, pci_subsys_1131_7133_5168_0319, 0};
#undef pci_ss_info_5168_0319
#define pci_ss_info_5168_0319 pci_ss_info_1131_7133_5168_0319
+static const pciSubsystemInfo pci_ss_info_1131_7133_5168_0502 =
+ {0x5168, 0x0502, pci_subsys_1131_7133_5168_0502, 0};
+#undef pci_ss_info_5168_0502
+#define pci_ss_info_5168_0502 pci_ss_info_1131_7133_5168_0502
+static const pciSubsystemInfo pci_ss_info_1131_7133_5168_0520 =
+ {0x5168, 0x0520, pci_subsys_1131_7133_5168_0520, 0};
+#undef pci_ss_info_5168_0520
+#define pci_ss_info_5168_0520 pci_ss_info_1131_7133_5168_0520
+static const pciSubsystemInfo pci_ss_info_1131_7133_5168_1502 =
+ {0x5168, 0x1502, pci_subsys_1131_7133_5168_1502, 0};
+#undef pci_ss_info_5168_1502
+#define pci_ss_info_5168_1502 pci_ss_info_1131_7133_5168_1502
+static const pciSubsystemInfo pci_ss_info_1131_7133_5168_2502 =
+ {0x5168, 0x2502, pci_subsys_1131_7133_5168_2502, 0};
+#undef pci_ss_info_5168_2502
+#define pci_ss_info_5168_2502 pci_ss_info_1131_7133_5168_2502
+static const pciSubsystemInfo pci_ss_info_1131_7133_5168_2520 =
+ {0x5168, 0x2520, pci_subsys_1131_7133_5168_2520, 0};
+#undef pci_ss_info_5168_2520
+#define pci_ss_info_5168_2520 pci_ss_info_1131_7133_5168_2520
+static const pciSubsystemInfo pci_ss_info_1131_7133_5168_3502 =
+ {0x5168, 0x3502, pci_subsys_1131_7133_5168_3502, 0};
+#undef pci_ss_info_5168_3502
+#define pci_ss_info_5168_3502 pci_ss_info_1131_7133_5168_3502
+static const pciSubsystemInfo pci_ss_info_1131_7133_5168_3520 =
+ {0x5168, 0x3520, pci_subsys_1131_7133_5168_3520, 0};
+#undef pci_ss_info_5168_3520
+#define pci_ss_info_5168_3520 pci_ss_info_1131_7133_5168_3520
static const pciSubsystemInfo pci_ss_info_1131_7134_1019_4cb4 =
{0x1019, 0x4cb4, pci_subsys_1131_7134_1019_4cb4, 0};
#undef pci_ss_info_1019_4cb4
@@ -33021,6 +34757,10 @@ static const pciSubsystemInfo pci_ss_info_1131_7134_1043_4840 =
{0x1043, 0x4840, pci_subsys_1131_7134_1043_4840, 0};
#undef pci_ss_info_1043_4840
#define pci_ss_info_1043_4840 pci_ss_info_1131_7134_1043_4840
+static const pciSubsystemInfo pci_ss_info_1131_7134_1043_4842 =
+ {0x1043, 0x4842, pci_subsys_1131_7134_1043_4842, 0};
+#undef pci_ss_info_1043_4842
+#define pci_ss_info_1043_4842 pci_ss_info_1131_7134_1043_4842
static const pciSubsystemInfo pci_ss_info_1131_7134_1131_2004 =
{0x1131, 0x2004, pci_subsys_1131_7134_1131_2004, 0};
#undef pci_ss_info_1131_2004
@@ -33213,6 +34953,10 @@ static const pciSubsystemInfo pci_ss_info_1131_7146_153b_1156 =
{0x153b, 0x1156, pci_subsys_1131_7146_153b_1156, 0};
#undef pci_ss_info_153b_1156
#define pci_ss_info_153b_1156 pci_ss_info_1131_7146_153b_1156
+static const pciSubsystemInfo pci_ss_info_1131_9730_1131_0000 =
+ {0x1131, 0x0000, pci_subsys_1131_9730_1131_0000, 0};
+#undef pci_ss_info_1131_0000
+#define pci_ss_info_1131_0000 pci_ss_info_1131_9730_1131_0000
#endif
#ifdef VENDOR_INCLUDE_NONVIDEO
static const pciSubsystemInfo pci_ss_info_1133_e010_110a_0021 =
@@ -33724,6 +35468,12 @@ static const pciSubsystemInfo pci_ss_info_1166_0212_4c53_1080 =
#undef pci_ss_info_4c53_1080
#define pci_ss_info_4c53_1080 pci_ss_info_1166_0212_4c53_1080
#endif
+static const pciSubsystemInfo pci_ss_info_1166_0213_1028_4134 =
+ {0x1028, 0x4134, pci_subsys_1166_0213_1028_4134, 0};
+#undef pci_ss_info_1028_4134
+#define pci_ss_info_1028_4134 pci_ss_info_1166_0213_1028_4134
+#ifdef VENDOR_INCLUDE_NONVIDEO
+#endif
static const pciSubsystemInfo pci_ss_info_1166_0213_1028_c134 =
{0x1028, 0xc134, pci_subsys_1166_0213_1028_c134, 0};
#undef pci_ss_info_1028_c134
@@ -35251,6 +37001,10 @@ static const pciSubsystemInfo pci_ss_info_1260_3890_1259_c104 =
{0x1259, 0xc104, pci_subsys_1260_3890_1259_c104, 0};
#undef pci_ss_info_1259_c104
#define pci_ss_info_1259_c104 pci_ss_info_1260_3890_1259_c104
+static const pciSubsystemInfo pci_ss_info_1260_3890_1260_0000 =
+ {0x1260, 0x0000, pci_subsys_1260_3890_1260_0000, 0};
+#undef pci_ss_info_1260_0000
+#define pci_ss_info_1260_0000 pci_ss_info_1260_3890_1260_0000
static const pciSubsystemInfo pci_ss_info_1260_3890_1385_4800 =
{0x1385, 0x4800, pci_subsys_1260_3890_1385_4800, 0};
#undef pci_ss_info_1385_4800
@@ -36415,6 +38169,32 @@ static const pciSubsystemInfo pci_ss_info_13f6_0111_1681_a000 =
#define pci_ss_info_1681_a000 pci_ss_info_13f6_0111_1681_a000
#endif
#ifdef VENDOR_INCLUDE_NONVIDEO
+static const pciSubsystemInfo pci_ss_info_13fe_1600_1601_0002 =
+ {0x1601, 0x0002, pci_subsys_13fe_1600_1601_0002, 0};
+#undef pci_ss_info_1601_0002
+#define pci_ss_info_1601_0002 pci_ss_info_13fe_1600_1601_0002
+static const pciSubsystemInfo pci_ss_info_13fe_1600_1602_0002 =
+ {0x1602, 0x0002, pci_subsys_13fe_1600_1602_0002, 0};
+#undef pci_ss_info_1602_0002
+#define pci_ss_info_1602_0002 pci_ss_info_13fe_1600_1602_0002
+static const pciSubsystemInfo pci_ss_info_13fe_1600_1612_0004 =
+ {0x1612, 0x0004, pci_subsys_13fe_1600_1612_0004, 0};
+#undef pci_ss_info_1612_0004
+#define pci_ss_info_1612_0004 pci_ss_info_13fe_1600_1612_0004
+static const pciSubsystemInfo pci_ss_info_13fe_16ff_1601_0000 =
+ {0x1601, 0x0000, pci_subsys_13fe_16ff_1601_0000, 0};
+#undef pci_ss_info_1601_0000
+#define pci_ss_info_1601_0000 pci_ss_info_13fe_16ff_1601_0000
+static const pciSubsystemInfo pci_ss_info_13fe_16ff_1602_0000 =
+ {0x1602, 0x0000, pci_subsys_13fe_16ff_1602_0000, 0};
+#undef pci_ss_info_1602_0000
+#define pci_ss_info_1602_0000 pci_ss_info_13fe_16ff_1602_0000
+static const pciSubsystemInfo pci_ss_info_13fe_16ff_1612_0000 =
+ {0x1612, 0x0000, pci_subsys_13fe_16ff_1612_0000, 0};
+#undef pci_ss_info_1612_0000
+#define pci_ss_info_1612_0000 pci_ss_info_13fe_16ff_1612_0000
+#endif
+#ifdef VENDOR_INCLUDE_NONVIDEO
static const pciSubsystemInfo pci_ss_info_1412_1712_1412_1712 =
{0x1412, 0x1712, pci_subsys_1412_1712_1412_1712, 0};
#undef pci_ss_info_1412_1712
@@ -36529,6 +38309,22 @@ static const pciSubsystemInfo pci_ss_info_1412_1724_270f_f645 =
#define pci_ss_info_270f_f645 pci_ss_info_1412_1724_270f_f645
#endif
#ifdef VENDOR_INCLUDE_NONVIDEO
+static const pciSubsystemInfo pci_ss_info_1415_9501_12c4_0201 =
+ {0x12c4, 0x0201, pci_subsys_1415_9501_12c4_0201, 0};
+#undef pci_ss_info_12c4_0201
+#define pci_ss_info_12c4_0201 pci_ss_info_1415_9501_12c4_0201
+static const pciSubsystemInfo pci_ss_info_1415_9501_12c4_0202 =
+ {0x12c4, 0x0202, pci_subsys_1415_9501_12c4_0202, 0};
+#undef pci_ss_info_12c4_0202
+#define pci_ss_info_12c4_0202 pci_ss_info_1415_9501_12c4_0202
+static const pciSubsystemInfo pci_ss_info_1415_9501_12c4_0203 =
+ {0x12c4, 0x0203, pci_subsys_1415_9501_12c4_0203, 0};
+#undef pci_ss_info_12c4_0203
+#define pci_ss_info_12c4_0203 pci_ss_info_1415_9501_12c4_0203
+static const pciSubsystemInfo pci_ss_info_1415_9501_12c4_0210 =
+ {0x12c4, 0x0210, pci_subsys_1415_9501_12c4_0210, 0};
+#undef pci_ss_info_12c4_0210
+#define pci_ss_info_12c4_0210 pci_ss_info_1415_9501_12c4_0210
static const pciSubsystemInfo pci_ss_info_1415_9501_131f_2050 =
{0x131f, 0x2050, pci_subsys_1415_9501_131f_2050, 0};
#undef pci_ss_info_131f_2050
@@ -36545,6 +38341,14 @@ static const pciSubsystemInfo pci_ss_info_1415_9501_15ed_2001 =
{0x15ed, 0x2001, pci_subsys_1415_9501_15ed_2001, 0};
#undef pci_ss_info_15ed_2001
#define pci_ss_info_15ed_2001 pci_ss_info_1415_9501_15ed_2001
+static const pciSubsystemInfo pci_ss_info_1415_9510_12c4_0200 =
+ {0x12c4, 0x0200, pci_subsys_1415_9510_12c4_0200, 0};
+#undef pci_ss_info_12c4_0200
+#define pci_ss_info_12c4_0200 pci_ss_info_1415_9510_12c4_0200
+static const pciSubsystemInfo pci_ss_info_1415_9511_12c4_0211 =
+ {0x12c4, 0x0211, pci_subsys_1415_9511_12c4_0211, 0};
+#undef pci_ss_info_12c4_0211
+#define pci_ss_info_12c4_0211 pci_ss_info_1415_9511_12c4_0211
static const pciSubsystemInfo pci_ss_info_1415_9511_15ed_2000 =
{0x15ed, 0x2000, pci_subsys_1415_9511_15ed_2000, 0};
#undef pci_ss_info_15ed_2000
@@ -36555,6 +38359,18 @@ static const pciSubsystemInfo pci_ss_info_1415_9511_15ed_2001 =
#define pci_ss_info_15ed_2001 pci_ss_info_1415_9511_15ed_2001
#endif
#ifdef VENDOR_INCLUDE_NONVIDEO
+#endif
+static const pciSubsystemInfo pci_ss_info_14c1_8043_103c_1240 =
+ {0x103c, 0x1240, pci_subsys_14c1_8043_103c_1240, 0};
+#undef pci_ss_info_103c_1240
+#define pci_ss_info_103c_1240 pci_ss_info_14c1_8043_103c_1240
+#ifdef VENDOR_INCLUDE_NONVIDEO
+#endif
+#ifdef VENDOR_INCLUDE_NONVIDEO
+static const pciSubsystemInfo pci_ss_info_14e4_1600_107b_5048 =
+ {0x107b, 0x5048, pci_subsys_14e4_1600_107b_5048, 0};
+#undef pci_ss_info_107b_5048
+#define pci_ss_info_107b_5048 pci_ss_info_14e4_1600_107b_5048
static const pciSubsystemInfo pci_ss_info_14e4_1644_1014_0277 =
{0x1014, 0x0277, pci_subsys_14e4_1644_1014_0277, 0};
#undef pci_ss_info_1014_0277
@@ -36825,6 +38641,22 @@ static const pciSubsystemInfo pci_ss_info_14e4_1648_0e11_00d1 =
#undef pci_ss_info_0e11_00d1
#define pci_ss_info_0e11_00d1 pci_ss_info_14e4_1648_0e11_00d1
#ifdef VENDOR_INCLUDE_NONVIDEO
+static const pciSubsystemInfo pci_ss_info_14e4_1648_10a9_8013 =
+ {0x10a9, 0x8013, pci_subsys_14e4_1648_10a9_8013, 0};
+#undef pci_ss_info_10a9_8013
+#define pci_ss_info_10a9_8013 pci_ss_info_14e4_1648_10a9_8013
+static const pciSubsystemInfo pci_ss_info_14e4_1648_10a9_8018 =
+ {0x10a9, 0x8018, pci_subsys_14e4_1648_10a9_8018, 0};
+#undef pci_ss_info_10a9_8018
+#define pci_ss_info_10a9_8018 pci_ss_info_14e4_1648_10a9_8018
+static const pciSubsystemInfo pci_ss_info_14e4_1648_10a9_801a =
+ {0x10a9, 0x801a, pci_subsys_14e4_1648_10a9_801a, 0};
+#undef pci_ss_info_10a9_801a
+#define pci_ss_info_10a9_801a pci_ss_info_14e4_1648_10a9_801a
+static const pciSubsystemInfo pci_ss_info_14e4_1648_10a9_801b =
+ {0x10a9, 0x801b, pci_subsys_14e4_1648_10a9_801b, 0};
+#undef pci_ss_info_10a9_801b
+#define pci_ss_info_10a9_801b pci_ss_info_14e4_1648_10a9_801b
static const pciSubsystemInfo pci_ss_info_14e4_1648_10b7_2000 =
{0x10b7, 0x2000, pci_subsys_14e4_1648_10b7_2000, 0};
#undef pci_ss_info_10b7_2000
@@ -36842,12 +38674,30 @@ static const pciSubsystemInfo pci_ss_info_14e4_1648_1734_100b =
#undef pci_ss_info_1734_100b
#define pci_ss_info_1734_100b pci_ss_info_14e4_1648_1734_100b
#endif
+static const pciSubsystemInfo pci_ss_info_14e4_164a_103c_3070 =
+ {0x103c, 0x3070, pci_subsys_14e4_164a_103c_3070, 0};
+#undef pci_ss_info_103c_3070
+#define pci_ss_info_103c_3070 pci_ss_info_14e4_164a_103c_3070
+#ifdef VENDOR_INCLUDE_NONVIDEO
+#endif
static const pciSubsystemInfo pci_ss_info_14e4_164a_103c_3101 =
{0x103c, 0x3101, pci_subsys_14e4_164a_103c_3101, 0};
#undef pci_ss_info_103c_3101
#define pci_ss_info_103c_3101 pci_ss_info_14e4_164a_103c_3101
#ifdef VENDOR_INCLUDE_NONVIDEO
#endif
+static const pciSubsystemInfo pci_ss_info_14e4_164c_103c_7037 =
+ {0x103c, 0x7037, pci_subsys_14e4_164c_103c_7037, 0};
+#undef pci_ss_info_103c_7037
+#define pci_ss_info_103c_7037 pci_ss_info_14e4_164c_103c_7037
+#ifdef VENDOR_INCLUDE_NONVIDEO
+#endif
+static const pciSubsystemInfo pci_ss_info_14e4_164c_103c_7038 =
+ {0x103c, 0x7038, pci_subsys_14e4_164c_103c_7038, 0};
+#undef pci_ss_info_103c_7038
+#define pci_ss_info_103c_7038 pci_ss_info_14e4_164c_103c_7038
+#ifdef VENDOR_INCLUDE_NONVIDEO
+#endif
static const pciSubsystemInfo pci_ss_info_14e4_1653_0e11_00e3 =
{0x0e11, 0x00e3, pci_subsys_14e4_1653_0e11_00e3, 0};
#undef pci_ss_info_0e11_00e3
@@ -36956,11 +38806,27 @@ static const pciSubsystemInfo pci_ss_info_14e4_1677_1734_105d =
#undef pci_ss_info_1734_105d
#define pci_ss_info_1734_105d pci_ss_info_14e4_1677_1734_105d
#endif
+static const pciSubsystemInfo pci_ss_info_14e4_1679_103c_1707 =
+ {0x103c, 0x1707, pci_subsys_14e4_1679_103c_1707, 0};
+#undef pci_ss_info_103c_1707
+#define pci_ss_info_103c_1707 pci_ss_info_14e4_1679_103c_1707
+#ifdef VENDOR_INCLUDE_NONVIDEO
+#endif
+static const pciSubsystemInfo pci_ss_info_14e4_1679_103c_170c =
+ {0x103c, 0x170c, pci_subsys_14e4_1679_103c_170c, 0};
+#undef pci_ss_info_103c_170c
+#define pci_ss_info_103c_170c pci_ss_info_14e4_1679_103c_170c
+#ifdef VENDOR_INCLUDE_NONVIDEO
+#endif
static const pciSubsystemInfo pci_ss_info_14e4_1679_103c_703c =
{0x103c, 0x703c, pci_subsys_14e4_1679_103c_703c, 0};
#undef pci_ss_info_103c_703c
#define pci_ss_info_103c_703c pci_ss_info_14e4_1679_103c_703c
#ifdef VENDOR_INCLUDE_NONVIDEO
+static const pciSubsystemInfo pci_ss_info_14e4_167d_17aa_2081 =
+ {0x17aa, 0x2081, pci_subsys_14e4_167d_17aa_2081, 0};
+#undef pci_ss_info_17aa_2081
+#define pci_ss_info_17aa_2081 pci_ss_info_14e4_167d_17aa_2081
#endif
static const pciSubsystemInfo pci_ss_info_14e4_1696_103c_12bc =
{0x103c, 0x12bc, pci_subsys_14e4_1696_103c_12bc, 0};
@@ -37025,6 +38891,14 @@ static const pciSubsystemInfo pci_ss_info_14e4_16a7_14e4_800a =
{0x14e4, 0x800a, pci_subsys_14e4_16a7_14e4_800a, 0};
#undef pci_ss_info_14e4_800a
#define pci_ss_info_14e4_800a pci_ss_info_14e4_16a7_14e4_800a
+static const pciSubsystemInfo pci_ss_info_14e4_16a8_10a9_8014 =
+ {0x10a9, 0x8014, pci_subsys_14e4_16a8_10a9_8014, 0};
+#undef pci_ss_info_10a9_8014
+#define pci_ss_info_10a9_8014 pci_ss_info_14e4_16a8_10a9_8014
+static const pciSubsystemInfo pci_ss_info_14e4_16a8_10a9_801c =
+ {0x10a9, 0x801c, pci_subsys_14e4_16a8_10a9_801c, 0};
+#undef pci_ss_info_10a9_801c
+#define pci_ss_info_10a9_801c pci_ss_info_14e4_16a8_10a9_801c
static const pciSubsystemInfo pci_ss_info_14e4_16a8_10b7_2001 =
{0x10b7, 0x2001, pci_subsys_14e4_16a8_10b7_2001, 0};
#undef pci_ss_info_10b7_2001
@@ -37035,6 +38909,24 @@ static const pciSubsystemInfo pci_ss_info_14e4_16aa_103c_3102 =
#undef pci_ss_info_103c_3102
#define pci_ss_info_103c_3102 pci_ss_info_14e4_16aa_103c_3102
#ifdef VENDOR_INCLUDE_NONVIDEO
+#endif
+static const pciSubsystemInfo pci_ss_info_14e4_16ac_103c_1706 =
+ {0x103c, 0x1706, pci_subsys_14e4_16ac_103c_1706, 0};
+#undef pci_ss_info_103c_1706
+#define pci_ss_info_103c_1706 pci_ss_info_14e4_16ac_103c_1706
+#ifdef VENDOR_INCLUDE_NONVIDEO
+#endif
+static const pciSubsystemInfo pci_ss_info_14e4_16ac_103c_703b =
+ {0x103c, 0x703b, pci_subsys_14e4_16ac_103c_703b, 0};
+#undef pci_ss_info_103c_703b
+#define pci_ss_info_103c_703b pci_ss_info_14e4_16ac_103c_703b
+#ifdef VENDOR_INCLUDE_NONVIDEO
+#endif
+static const pciSubsystemInfo pci_ss_info_14e4_16ac_103c_703d =
+ {0x103c, 0x703d, pci_subsys_14e4_16ac_103c_703d, 0};
+#undef pci_ss_info_103c_703d
+#define pci_ss_info_103c_703d pci_ss_info_14e4_16ac_103c_703d
+#ifdef VENDOR_INCLUDE_NONVIDEO
static const pciSubsystemInfo pci_ss_info_14e4_16c6_10b7_1100 =
{0x10b7, 0x1100, pci_subsys_14e4_16c6_10b7_1100, 0};
#undef pci_ss_info_10b7_1100
@@ -37235,6 +39127,12 @@ static const pciSubsystemInfo pci_ss_info_14e4_4325_1414_0004 =
{0x1414, 0x0004, pci_subsys_14e4_4325_1414_0004, 0};
#undef pci_ss_info_1414_0004
#define pci_ss_info_1414_0004 pci_ss_info_14e4_4325_1414_0004
+#endif
+static const pciSubsystemInfo pci_ss_info_14e4_4401_103c_08b0 =
+ {0x103c, 0x08b0, pci_subsys_14e4_4401_103c_08b0, 0};
+#undef pci_ss_info_103c_08b0
+#define pci_ss_info_103c_08b0 pci_ss_info_14e4_4401_103c_08b0
+#ifdef VENDOR_INCLUDE_NONVIDEO
static const pciSubsystemInfo pci_ss_info_14e4_4401_1043_80a8 =
{0x1043, 0x80a8, pci_subsys_14e4_4401_1043_80a8, 0};
#undef pci_ss_info_1043_80a8
@@ -37901,6 +39799,10 @@ static const pciSubsystemInfo pci_ss_info_168c_0013_14b7_0a60 =
{0x14b7, 0x0a60, pci_subsys_168c_0013_14b7_0a60, 0};
#undef pci_ss_info_14b7_0a60
#define pci_ss_info_14b7_0a60 pci_ss_info_168c_0013_14b7_0a60
+static const pciSubsystemInfo pci_ss_info_168c_0013_1668_1026 =
+ {0x1668, 0x1026, pci_subsys_168c_0013_1668_1026, 0};
+#undef pci_ss_info_1668_1026
+#define pci_ss_info_1668_1026 pci_ss_info_168c_0013_1668_1026
static const pciSubsystemInfo pci_ss_info_168c_0013_168c_0013 =
{0x168c, 0x0013, pci_subsys_168c_0013_168c_0013, 0};
#undef pci_ss_info_168c_0013
@@ -37913,6 +39815,10 @@ static const pciSubsystemInfo pci_ss_info_168c_0013_168c_1027 =
{0x168c, 0x1027, pci_subsys_168c_0013_168c_1027, 0};
#undef pci_ss_info_168c_1027
#define pci_ss_info_168c_1027 pci_ss_info_168c_0013_168c_1027
+static const pciSubsystemInfo pci_ss_info_168c_0013_168c_1042 =
+ {0x168c, 0x1042, pci_subsys_168c_0013_168c_1042, 0};
+#undef pci_ss_info_168c_1042
+#define pci_ss_info_168c_1042 pci_ss_info_168c_0013_168c_1042
static const pciSubsystemInfo pci_ss_info_168c_0013_168c_2026 =
{0x168c, 0x2026, pci_subsys_168c_0013_168c_2026, 0};
#undef pci_ss_info_168c_2026
@@ -37925,6 +39831,10 @@ static const pciSubsystemInfo pci_ss_info_168c_0013_168c_2042 =
{0x168c, 0x2042, pci_subsys_168c_0013_168c_2042, 0};
#undef pci_ss_info_168c_2042
#define pci_ss_info_168c_2042 pci_ss_info_168c_0013_168c_2042
+static const pciSubsystemInfo pci_ss_info_168c_0013_168c_2051 =
+ {0x168c, 0x2051, pci_subsys_168c_0013_168c_2051, 0};
+#undef pci_ss_info_168c_2051
+#define pci_ss_info_168c_2051 pci_ss_info_168c_0013_168c_2051
static const pciSubsystemInfo pci_ss_info_168c_0013_16ab_7302 =
{0x16ab, 0x7302, pci_subsys_168c_0013_16ab_7302, 0};
#undef pci_ss_info_16ab_7302
@@ -37957,6 +39867,10 @@ static const pciSubsystemInfo pci_ss_info_168c_001a_1186_3a24 =
{0x1186, 0x3a24, pci_subsys_168c_001a_1186_3a24, 0};
#undef pci_ss_info_1186_3a24
#define pci_ss_info_1186_3a24 pci_ss_info_168c_001a_1186_3a24
+static const pciSubsystemInfo pci_ss_info_168c_001a_168c_001a =
+ {0x168c, 0x001a, pci_subsys_168c_001a_168c_001a, 0};
+#undef pci_ss_info_168c_001a
+#define pci_ss_info_168c_001a pci_ss_info_168c_001a_168c_001a
static const pciSubsystemInfo pci_ss_info_168c_001a_168c_1052 =
{0x168c, 0x1052, pci_subsys_168c_001a_168c_1052, 0};
#undef pci_ss_info_168c_1052
@@ -37977,6 +39891,10 @@ static const pciSubsystemInfo pci_ss_info_168c_001b_168c_2063 =
{0x168c, 0x2063, pci_subsys_168c_001b_168c_2063, 0};
#undef pci_ss_info_168c_2063
#define pci_ss_info_168c_2063 pci_ss_info_168c_001b_168c_2063
+static const pciSubsystemInfo pci_ss_info_168c_1014_1014_058a =
+ {0x1014, 0x058a, pci_subsys_168c_1014_1014_058a, 0};
+#undef pci_ss_info_1014_058a
+#define pci_ss_info_1014_058a pci_ss_info_168c_1014_1014_058a
#endif
#ifdef VENDOR_INCLUDE_NONVIDEO
static const pciSubsystemInfo pci_ss_info_1737_1032_1737_0015 =
@@ -38005,6 +39923,18 @@ static const pciSubsystemInfo pci_ss_info_17d5_5831_103c_12d5 =
#undef pci_ss_info_103c_12d5
#define pci_ss_info_103c_12d5 pci_ss_info_17d5_5831_103c_12d5
#ifdef VENDOR_INCLUDE_NONVIDEO
+static const pciSubsystemInfo pci_ss_info_17d5_5831_10a9_8020 =
+ {0x10a9, 0x8020, pci_subsys_17d5_5831_10a9_8020, 0};
+#undef pci_ss_info_10a9_8020
+#define pci_ss_info_10a9_8020 pci_ss_info_17d5_5831_10a9_8020
+static const pciSubsystemInfo pci_ss_info_17d5_5831_10a9_8024 =
+ {0x10a9, 0x8024, pci_subsys_17d5_5831_10a9_8024, 0};
+#undef pci_ss_info_10a9_8024
+#define pci_ss_info_10a9_8024 pci_ss_info_17d5_5831_10a9_8024
+static const pciSubsystemInfo pci_ss_info_17d5_5832_10a9_8021 =
+ {0x10a9, 0x8021, pci_subsys_17d5_5832_10a9_8021, 0};
+#undef pci_ss_info_10a9_8021
+#define pci_ss_info_10a9_8021 pci_ss_info_17d5_5832_10a9_8021
#endif
#ifdef VENDOR_INCLUDE_NONVIDEO
static const pciSubsystemInfo pci_ss_info_17fe_2220_17fe_2220 =
@@ -38131,6 +40061,10 @@ static const pciSubsystemInfo pci_ss_info_18ec_c058_18ec_d004 =
#define pci_ss_info_18ec_d004 pci_ss_info_18ec_c058_18ec_d004
#endif
#ifdef VENDOR_INCLUDE_NONVIDEO
+static const pciSubsystemInfo pci_ss_info_3388_0021_1775_ce90 =
+ {0x1775, 0xce90, pci_subsys_3388_0021_1775_ce90, 0};
+#undef pci_ss_info_1775_ce90
+#define pci_ss_info_1775_ce90 pci_ss_info_3388_0021_1775_ce90
static const pciSubsystemInfo pci_ss_info_3388_0021_4c53_1050 =
{0x4c53, 0x1050, pci_subsys_3388_0021_4c53_1050, 0};
#undef pci_ss_info_4c53_1050
@@ -38309,6 +40243,14 @@ static const pciSubsystemInfo pci_ss_info_4444_0016_0270_0801 =
{0x0270, 0x0801, pci_subsys_4444_0016_0270_0801, 0};
#undef pci_ss_info_0270_0801
#define pci_ss_info_0270_0801 pci_ss_info_4444_0016_0270_0801
+static const pciSubsystemInfo pci_ss_info_4444_0016_10fc_d038 =
+ {0x10fc, 0xd038, pci_subsys_4444_0016_10fc_d038, 0};
+#undef pci_ss_info_10fc_d038
+#define pci_ss_info_10fc_d038 pci_ss_info_4444_0016_10fc_d038
+static const pciSubsystemInfo pci_ss_info_4444_0016_10fc_d039 =
+ {0x10fc, 0xd039, pci_subsys_4444_0016_10fc_d039, 0};
+#undef pci_ss_info_10fc_d039
+#define pci_ss_info_10fc_d039 pci_ss_info_4444_0016_10fc_d039
static const pciSubsystemInfo pci_ss_info_4444_0016_12ab_fff3 =
{0x12ab, 0xfff3, pci_subsys_4444_0016_12ab_fff3, 0};
#undef pci_ss_info_12ab_fff3
@@ -38317,6 +40259,10 @@ static const pciSubsystemInfo pci_ss_info_4444_0016_12ab_ffff =
{0x12ab, 0xffff, pci_subsys_4444_0016_12ab_ffff, 0};
#undef pci_ss_info_12ab_ffff
#define pci_ss_info_12ab_ffff pci_ss_info_4444_0016_12ab_ffff
+static const pciSubsystemInfo pci_ss_info_4444_0016_1461_c019 =
+ {0x1461, 0xc019, pci_subsys_4444_0016_1461_c019, 0};
+#undef pci_ss_info_1461_c019
+#define pci_ss_info_1461_c019 pci_ss_info_4444_0016_1461_c019
static const pciSubsystemInfo pci_ss_info_4444_0016_9005_0092 =
{0x9005, 0x0092, pci_subsys_4444_0016_9005_0092, 0};
#undef pci_ss_info_9005_0092
@@ -38738,14 +40684,14 @@ static const pciSubsystemInfo pci_ss_info_8086_100e_1014_026a =
{0x1014, 0x026a, pci_subsys_8086_100e_1014_026a, 0};
#undef pci_ss_info_1014_026a
#define pci_ss_info_1014_026a pci_ss_info_8086_100e_1014_026a
-static const pciSubsystemInfo pci_ss_info_8086_100e_1024_0134 =
- {0x1024, 0x0134, pci_subsys_8086_100e_1024_0134, 0};
-#undef pci_ss_info_1024_0134
-#define pci_ss_info_1024_0134 pci_ss_info_8086_100e_1024_0134
static const pciSubsystemInfo pci_ss_info_8086_100e_1028_002e =
{0x1028, 0x002e, pci_subsys_8086_100e_1028_002e, 0};
#undef pci_ss_info_1028_002e
#define pci_ss_info_1028_002e pci_ss_info_8086_100e_1028_002e
+static const pciSubsystemInfo pci_ss_info_8086_100e_1028_0134 =
+ {0x1028, 0x0134, pci_subsys_8086_100e_1028_0134, 0};
+#undef pci_ss_info_1028_0134
+#define pci_ss_info_1028_0134 pci_ss_info_8086_100e_1028_0134
static const pciSubsystemInfo pci_ss_info_8086_100e_1028_0151 =
{0x1028, 0x0151, pci_subsys_8086_100e_1028_0151, 0};
#undef pci_ss_info_1028_0151
@@ -38858,6 +40804,18 @@ static const pciSubsystemInfo pci_ss_info_8086_1013_8086_1113 =
{0x8086, 0x1113, pci_subsys_8086_1013_8086_1113, 0};
#undef pci_ss_info_8086_1113
#define pci_ss_info_8086_1113 pci_ss_info_8086_1013_8086_1113
+static const pciSubsystemInfo pci_ss_info_8086_1014_8086_0014 =
+ {0x8086, 0x0014, pci_subsys_8086_1014_8086_0014, 0};
+#undef pci_ss_info_8086_0014
+#define pci_ss_info_8086_0014 pci_ss_info_8086_1014_8086_0014
+static const pciSubsystemInfo pci_ss_info_8086_1014_8086_1014 =
+ {0x8086, 0x1014, pci_subsys_8086_1014_8086_1014, 0};
+#undef pci_ss_info_8086_1014
+#define pci_ss_info_8086_1014 pci_ss_info_8086_1014_8086_1014
+static const pciSubsystemInfo pci_ss_info_8086_1015_8086_1015 =
+ {0x8086, 0x1015, pci_subsys_8086_1015_8086_1015, 0};
+#undef pci_ss_info_8086_1015
+#define pci_ss_info_8086_1015 pci_ss_info_8086_1015_8086_1015
static const pciSubsystemInfo pci_ss_info_8086_1016_1014_052c =
{0x1014, 0x052c, pci_subsys_8086_1016_1014_052c, 0};
#undef pci_ss_info_1014_052c
@@ -38902,6 +40860,10 @@ static const pciSubsystemInfo pci_ss_info_8086_1019_8086_3427 =
{0x8086, 0x3427, pci_subsys_8086_1019_8086_3427, 0};
#undef pci_ss_info_8086_3427
#define pci_ss_info_8086_3427 pci_ss_info_8086_1019_8086_3427
+static const pciSubsystemInfo pci_ss_info_8086_101a_8086_101a =
+ {0x8086, 0x101a, pci_subsys_8086_101a_8086_101a, 0};
+#undef pci_ss_info_8086_101a
+#define pci_ss_info_8086_101a pci_ss_info_8086_101a_8086_101a
static const pciSubsystemInfo pci_ss_info_8086_101d_8086_1000 =
{0x8086, 0x1000, pci_subsys_8086_101d_8086_1000, 0};
#undef pci_ss_info_8086_1000
@@ -38934,6 +40896,10 @@ static const pciSubsystemInfo pci_ss_info_8086_1026_8086_1002 =
{0x8086, 0x1002, pci_subsys_8086_1026_8086_1002, 0};
#undef pci_ss_info_8086_1002
#define pci_ss_info_8086_1002 pci_ss_info_8086_1026_8086_1002
+static const pciSubsystemInfo pci_ss_info_8086_1026_8086_1003 =
+ {0x8086, 0x1003, pci_subsys_8086_1026_8086_1003, 0};
+#undef pci_ss_info_8086_1003
+#define pci_ss_info_8086_1003 pci_ss_info_8086_1026_8086_1003
static const pciSubsystemInfo pci_ss_info_8086_1026_8086_1026 =
{0x8086, 0x1026, pci_subsys_8086_1026_8086_1026, 0};
#undef pci_ss_info_8086_1026
@@ -39006,14 +40972,30 @@ static const pciSubsystemInfo pci_ss_info_8086_1039_1014_0267 =
{0x1014, 0x0267, pci_subsys_8086_1039_1014_0267, 0};
#undef pci_ss_info_1014_0267
#define pci_ss_info_1014_0267 pci_ss_info_8086_1039_1014_0267
+static const pciSubsystemInfo pci_ss_info_8086_103d_1014_0522 =
+ {0x1014, 0x0522, pci_subsys_8086_103d_1014_0522, 0};
+#undef pci_ss_info_1014_0522
+#define pci_ss_info_1014_0522 pci_ss_info_8086_103d_1014_0522
static const pciSubsystemInfo pci_ss_info_8086_1040_16be_1040 =
{0x16be, 0x1040, pci_subsys_8086_1040_16be_1040, 0};
#undef pci_ss_info_16be_1040
#define pci_ss_info_16be_1040 pci_ss_info_8086_1040_16be_1040
+static const pciSubsystemInfo pci_ss_info_8086_1043_103c_08b0 =
+ {0x103c, 0x08b0, pci_subsys_8086_1043_103c_08b0, 0};
+#undef pci_ss_info_103c_08b0
+#define pci_ss_info_103c_08b0 pci_ss_info_8086_1043_103c_08b0
+static const pciSubsystemInfo pci_ss_info_8086_1043_8086_2522 =
+ {0x8086, 0x2522, pci_subsys_8086_1043_8086_2522, 0};
+#undef pci_ss_info_8086_2522
+#define pci_ss_info_8086_2522 pci_ss_info_8086_1043_8086_2522
static const pciSubsystemInfo pci_ss_info_8086_1043_8086_2527 =
{0x8086, 0x2527, pci_subsys_8086_1043_8086_2527, 0};
#undef pci_ss_info_8086_2527
#define pci_ss_info_8086_2527 pci_ss_info_8086_1043_8086_2527
+static const pciSubsystemInfo pci_ss_info_8086_1043_8086_2581 =
+ {0x8086, 0x2581, pci_subsys_8086_1043_8086_2581, 0};
+#undef pci_ss_info_8086_2581
+#define pci_ss_info_8086_2581 pci_ss_info_8086_1043_8086_2581
static const pciSubsystemInfo pci_ss_info_8086_1048_8086_a01f =
{0x8086, 0xa01f, pci_subsys_8086_1048_8086_a01f, 0};
#undef pci_ss_info_8086_a01f
@@ -39042,10 +41024,62 @@ static const pciSubsystemInfo pci_ss_info_8086_1050_8086_3427 =
{0x8086, 0x3427, pci_subsys_8086_1050_8086_3427, 0};
#undef pci_ss_info_8086_3427
#define pci_ss_info_8086_3427 pci_ss_info_8086_1050_8086_3427
+static const pciSubsystemInfo pci_ss_info_8086_105e_103c_7044 =
+ {0x103c, 0x7044, pci_subsys_8086_105e_103c_7044, 0};
+#undef pci_ss_info_103c_7044
+#define pci_ss_info_103c_7044 pci_ss_info_8086_105e_103c_7044
static const pciSubsystemInfo pci_ss_info_8086_105e_1775_6003 =
{0x1775, 0x6003, pci_subsys_8086_105e_1775_6003, 0};
#undef pci_ss_info_1775_6003
#define pci_ss_info_1775_6003 pci_ss_info_8086_105e_1775_6003
+static const pciSubsystemInfo pci_ss_info_8086_105e_8086_005e =
+ {0x8086, 0x005e, pci_subsys_8086_105e_8086_005e, 0};
+#undef pci_ss_info_8086_005e
+#define pci_ss_info_8086_005e pci_ss_info_8086_105e_8086_005e
+static const pciSubsystemInfo pci_ss_info_8086_105e_8086_105e =
+ {0x8086, 0x105e, pci_subsys_8086_105e_8086_105e, 0};
+#undef pci_ss_info_8086_105e
+#define pci_ss_info_8086_105e pci_ss_info_8086_105e_8086_105e
+static const pciSubsystemInfo pci_ss_info_8086_105e_8086_115e =
+ {0x8086, 0x115e, pci_subsys_8086_105e_8086_115e, 0};
+#undef pci_ss_info_8086_115e
+#define pci_ss_info_8086_115e pci_ss_info_8086_105e_8086_115e
+static const pciSubsystemInfo pci_ss_info_8086_105e_8086_116e =
+ {0x8086, 0x116e, pci_subsys_8086_105e_8086_116e, 0};
+#undef pci_ss_info_8086_116e
+#define pci_ss_info_8086_116e pci_ss_info_8086_105e_8086_116e
+static const pciSubsystemInfo pci_ss_info_8086_105e_8086_125e =
+ {0x8086, 0x125e, pci_subsys_8086_105e_8086_125e, 0};
+#undef pci_ss_info_8086_125e
+#define pci_ss_info_8086_125e pci_ss_info_8086_105e_8086_125e
+static const pciSubsystemInfo pci_ss_info_8086_105e_8086_135e =
+ {0x8086, 0x135e, pci_subsys_8086_105e_8086_135e, 0};
+#undef pci_ss_info_8086_135e
+#define pci_ss_info_8086_135e pci_ss_info_8086_105e_8086_135e
+static const pciSubsystemInfo pci_ss_info_8086_105f_8086_115f =
+ {0x8086, 0x115f, pci_subsys_8086_105f_8086_115f, 0};
+#undef pci_ss_info_8086_115f
+#define pci_ss_info_8086_115f pci_ss_info_8086_105f_8086_115f
+static const pciSubsystemInfo pci_ss_info_8086_105f_8086_116f =
+ {0x8086, 0x116f, pci_subsys_8086_105f_8086_116f, 0};
+#undef pci_ss_info_8086_116f
+#define pci_ss_info_8086_116f pci_ss_info_8086_105f_8086_116f
+static const pciSubsystemInfo pci_ss_info_8086_105f_8086_125f =
+ {0x8086, 0x125f, pci_subsys_8086_105f_8086_125f, 0};
+#undef pci_ss_info_8086_125f
+#define pci_ss_info_8086_125f pci_ss_info_8086_105f_8086_125f
+static const pciSubsystemInfo pci_ss_info_8086_105f_8086_135f =
+ {0x8086, 0x135f, pci_subsys_8086_105f_8086_135f, 0};
+#undef pci_ss_info_8086_135f
+#define pci_ss_info_8086_135f pci_ss_info_8086_105f_8086_135f
+static const pciSubsystemInfo pci_ss_info_8086_1060_8086_0060 =
+ {0x8086, 0x0060, pci_subsys_8086_1060_8086_0060, 0};
+#undef pci_ss_info_8086_0060
+#define pci_ss_info_8086_0060 pci_ss_info_8086_1060_8086_0060
+static const pciSubsystemInfo pci_ss_info_8086_1060_8086_1060 =
+ {0x8086, 0x1060, pci_subsys_8086_1060_8086_1060, 0};
+#undef pci_ss_info_8086_1060
+#define pci_ss_info_8086_1060 pci_ss_info_8086_1060_8086_1060
static const pciSubsystemInfo pci_ss_info_8086_1064_1043_80f8 =
{0x1043, 0x80f8, pci_subsys_8086_1064_1043_80f8, 0};
#undef pci_ss_info_1043_80f8
@@ -39110,6 +41144,14 @@ static const pciSubsystemInfo pci_ss_info_8086_1079_103c_12cf =
{0x103c, 0x12cf, pci_subsys_8086_1079_103c_12cf, 0};
#undef pci_ss_info_103c_12cf
#define pci_ss_info_103c_12cf pci_ss_info_8086_1079_103c_12cf
+static const pciSubsystemInfo pci_ss_info_8086_1079_1775_10d0 =
+ {0x1775, 0x10d0, pci_subsys_8086_1079_1775_10d0, 0};
+#undef pci_ss_info_1775_10d0
+#define pci_ss_info_1775_10d0 pci_ss_info_8086_1079_1775_10d0
+static const pciSubsystemInfo pci_ss_info_8086_1079_1775_ce90 =
+ {0x1775, 0xce90, pci_subsys_8086_1079_1775_ce90, 0};
+#undef pci_ss_info_1775_ce90
+#define pci_ss_info_1775_ce90 pci_ss_info_8086_1079_1775_ce90
static const pciSubsystemInfo pci_ss_info_8086_1079_1fc1_0027 =
{0x1fc1, 0x0027, pci_subsys_8086_1079_1fc1_0027, 0};
#undef pci_ss_info_1fc1_0027
@@ -39158,14 +41200,102 @@ static const pciSubsystemInfo pci_ss_info_8086_107b_8086_107b =
{0x8086, 0x107b, pci_subsys_8086_107b_8086_107b, 0};
#undef pci_ss_info_8086_107b
#define pci_ss_info_8086_107b pci_ss_info_8086_107b_8086_107b
+static const pciSubsystemInfo pci_ss_info_8086_107c_8086_1376 =
+ {0x8086, 0x1376, pci_subsys_8086_107c_8086_1376, 0};
+#undef pci_ss_info_8086_1376
+#define pci_ss_info_8086_1376 pci_ss_info_8086_107c_8086_1376
+static const pciSubsystemInfo pci_ss_info_8086_107c_8086_1476 =
+ {0x8086, 0x1476, pci_subsys_8086_107c_8086_1476, 0};
+#undef pci_ss_info_8086_1476
+#define pci_ss_info_8086_1476 pci_ss_info_8086_107c_8086_1476
+static const pciSubsystemInfo pci_ss_info_8086_107d_8086_1082 =
+ {0x8086, 0x1082, pci_subsys_8086_107d_8086_1082, 0};
+#undef pci_ss_info_8086_1082
+#define pci_ss_info_8086_1082 pci_ss_info_8086_107d_8086_1082
+static const pciSubsystemInfo pci_ss_info_8086_107d_8086_1092 =
+ {0x8086, 0x1092, pci_subsys_8086_107d_8086_1092, 0};
+#undef pci_ss_info_8086_1092
+#define pci_ss_info_8086_1092 pci_ss_info_8086_107d_8086_1092
+static const pciSubsystemInfo pci_ss_info_8086_107e_8086_1084 =
+ {0x8086, 0x1084, pci_subsys_8086_107e_8086_1084, 0};
+#undef pci_ss_info_8086_1084
+#define pci_ss_info_8086_1084 pci_ss_info_8086_107e_8086_1084
+static const pciSubsystemInfo pci_ss_info_8086_107e_8086_1094 =
+ {0x8086, 0x1094, pci_subsys_8086_107e_8086_1094, 0};
+#undef pci_ss_info_8086_1094
+#define pci_ss_info_8086_1094 pci_ss_info_8086_107e_8086_1094
+static const pciSubsystemInfo pci_ss_info_8086_108a_8086_108a =
+ {0x8086, 0x108a, pci_subsys_8086_108a_8086_108a, 0};
+#undef pci_ss_info_8086_108a
+#define pci_ss_info_8086_108a pci_ss_info_8086_108a_8086_108a
+static const pciSubsystemInfo pci_ss_info_8086_108a_8086_118a =
+ {0x8086, 0x118a, pci_subsys_8086_108a_8086_118a, 0};
+#undef pci_ss_info_8086_118a
+#define pci_ss_info_8086_118a pci_ss_info_8086_108a_8086_118a
+static const pciSubsystemInfo pci_ss_info_8086_1099_8086_1099 =
+ {0x8086, 0x1099, pci_subsys_8086_1099_8086_1099, 0};
+#undef pci_ss_info_8086_1099
+#define pci_ss_info_8086_1099 pci_ss_info_8086_1099_8086_1099
+static const pciSubsystemInfo pci_ss_info_8086_109a_1179_ff10 =
+ {0x1179, 0xff10, pci_subsys_8086_109a_1179_ff10, 0};
+#undef pci_ss_info_1179_ff10
+#define pci_ss_info_1179_ff10 pci_ss_info_8086_109a_1179_ff10
+static const pciSubsystemInfo pci_ss_info_8086_109a_17aa_2001 =
+ {0x17aa, 0x2001, pci_subsys_8086_109a_17aa_2001, 0};
+#undef pci_ss_info_17aa_2001
+#define pci_ss_info_17aa_2001 pci_ss_info_8086_109a_17aa_2001
static const pciSubsystemInfo pci_ss_info_8086_109a_17aa_207e =
{0x17aa, 0x207e, pci_subsys_8086_109a_17aa_207e, 0};
#undef pci_ss_info_17aa_207e
#define pci_ss_info_17aa_207e pci_ss_info_8086_109a_17aa_207e
+static const pciSubsystemInfo pci_ss_info_8086_109a_8086_109a =
+ {0x8086, 0x109a, pci_subsys_8086_109a_8086_109a, 0};
+#undef pci_ss_info_8086_109a
+#define pci_ss_info_8086_109a pci_ss_info_8086_109a_8086_109a
+static const pciSubsystemInfo pci_ss_info_8086_109e_8086_a01f =
+ {0x8086, 0xa01f, pci_subsys_8086_109e_8086_a01f, 0};
+#undef pci_ss_info_8086_a01f
+#define pci_ss_info_8086_a01f pci_ss_info_8086_109e_8086_a01f
+static const pciSubsystemInfo pci_ss_info_8086_109e_8086_a11f =
+ {0x8086, 0xa11f, pci_subsys_8086_109e_8086_a11f, 0};
+#undef pci_ss_info_8086_a11f
+#define pci_ss_info_8086_a11f pci_ss_info_8086_109e_8086_a11f
+static const pciSubsystemInfo pci_ss_info_8086_10a4_8086_10a4 =
+ {0x8086, 0x10a4, pci_subsys_8086_10a4_8086_10a4, 0};
+#undef pci_ss_info_8086_10a4
+#define pci_ss_info_8086_10a4 pci_ss_info_8086_10a4_8086_10a4
+static const pciSubsystemInfo pci_ss_info_8086_10a4_8086_11a4 =
+ {0x8086, 0x11a4, pci_subsys_8086_10a4_8086_11a4, 0};
+#undef pci_ss_info_8086_11a4
+#define pci_ss_info_8086_11a4 pci_ss_info_8086_10a4_8086_11a4
static const pciSubsystemInfo pci_ss_info_8086_10b5_103c_3109 =
{0x103c, 0x3109, pci_subsys_8086_10b5_103c_3109, 0};
#undef pci_ss_info_103c_3109
#define pci_ss_info_103c_3109 pci_ss_info_8086_10b5_103c_3109
+static const pciSubsystemInfo pci_ss_info_8086_10b5_8086_1099 =
+ {0x8086, 0x1099, pci_subsys_8086_10b5_8086_1099, 0};
+#undef pci_ss_info_8086_1099
+#define pci_ss_info_8086_1099 pci_ss_info_8086_10b5_8086_1099
+static const pciSubsystemInfo pci_ss_info_8086_10b5_8086_1199 =
+ {0x8086, 0x1199, pci_subsys_8086_10b5_8086_1199, 0};
+#undef pci_ss_info_8086_1199
+#define pci_ss_info_8086_1199 pci_ss_info_8086_10b5_8086_1199
+static const pciSubsystemInfo pci_ss_info_8086_10b9_8086_1083 =
+ {0x8086, 0x1083, pci_subsys_8086_10b9_8086_1083, 0};
+#undef pci_ss_info_8086_1083
+#define pci_ss_info_8086_1083 pci_ss_info_8086_10b9_8086_1083
+static const pciSubsystemInfo pci_ss_info_8086_10b9_8086_1093 =
+ {0x8086, 0x1093, pci_subsys_8086_10b9_8086_1093, 0};
+#undef pci_ss_info_8086_1093
+#define pci_ss_info_8086_1093 pci_ss_info_8086_10b9_8086_1093
+static const pciSubsystemInfo pci_ss_info_8086_10bc_8086_10bc =
+ {0x8086, 0x10bc, pci_subsys_8086_10bc_8086_10bc, 0};
+#undef pci_ss_info_8086_10bc
+#define pci_ss_info_8086_10bc pci_ss_info_8086_10bc_8086_10bc
+static const pciSubsystemInfo pci_ss_info_8086_10bc_8086_11bc =
+ {0x8086, 0x11bc, pci_subsys_8086_10bc_8086_11bc, 0};
+#undef pci_ss_info_8086_11bc
+#define pci_ss_info_8086_11bc pci_ss_info_8086_10bc_8086_11bc
static const pciSubsystemInfo pci_ss_info_8086_1130_1025_1016 =
{0x1025, 0x1016, pci_subsys_8086_1130_1025_1016, 0};
#undef pci_ss_info_1025_1016
@@ -39498,6 +41628,10 @@ static const pciSubsystemInfo pci_ss_info_8086_1229_1668_1100 =
{0x1668, 0x1100, pci_subsys_8086_1229_1668_1100, 0};
#undef pci_ss_info_1668_1100
#define pci_ss_info_1668_1100 pci_ss_info_8086_1229_1668_1100
+static const pciSubsystemInfo pci_ss_info_8086_1229_1775_ce90 =
+ {0x1775, 0xce90, pci_subsys_8086_1229_1775_ce90, 0};
+#undef pci_ss_info_1775_ce90
+#define pci_ss_info_1775_ce90 pci_ss_info_8086_1229_1775_ce90
static const pciSubsystemInfo pci_ss_info_8086_1229_4c53_1080 =
{0x4c53, 0x1080, pci_subsys_8086_1229_4c53_1080, 0};
#undef pci_ss_info_4c53_1080
@@ -39962,6 +42096,14 @@ static const pciSubsystemInfo pci_ss_info_8086_1a30_1028_010e =
{0x1028, 0x010e, pci_subsys_8086_1a30_1028_010e, 0};
#undef pci_ss_info_1028_010e
#define pci_ss_info_1028_010e pci_ss_info_8086_1a30_1028_010e
+static const pciSubsystemInfo pci_ss_info_8086_1b48_8086_a01f =
+ {0x8086, 0xa01f, pci_subsys_8086_1b48_8086_a01f, 0};
+#undef pci_ss_info_8086_a01f
+#define pci_ss_info_8086_a01f pci_ss_info_8086_1b48_8086_a01f
+static const pciSubsystemInfo pci_ss_info_8086_1b48_8086_a11f =
+ {0x8086, 0xa11f, pci_subsys_8086_1b48_8086_a11f, 0};
+#undef pci_ss_info_8086_a11f
+#define pci_ss_info_8086_a11f pci_ss_info_8086_1b48_8086_a11f
static const pciSubsystemInfo pci_ss_info_8086_2415_1028_0095 =
{0x1028, 0x0095, pci_subsys_8086_2415_1028_0095, 0};
#undef pci_ss_info_1028_0095
@@ -40002,6 +42144,10 @@ static const pciSubsystemInfo pci_ss_info_8086_2442_1025_1016 =
{0x1025, 0x1016, pci_subsys_8086_2442_1025_1016, 0};
#undef pci_ss_info_1025_1016
#define pci_ss_info_1025_1016 pci_ss_info_8086_2442_1025_1016
+static const pciSubsystemInfo pci_ss_info_8086_2442_1028_00c7 =
+ {0x1028, 0x00c7, pci_subsys_8086_2442_1028_00c7, 0};
+#undef pci_ss_info_1028_00c7
+#define pci_ss_info_1028_00c7 pci_ss_info_8086_2442_1028_00c7
static const pciSubsystemInfo pci_ss_info_8086_2442_1028_010e =
{0x1028, 0x010e, pci_subsys_8086_2442_1028_010e, 0};
#undef pci_ss_info_1028_010e
@@ -40034,6 +42180,10 @@ static const pciSubsystemInfo pci_ss_info_8086_2443_1025_1016 =
{0x1025, 0x1016, pci_subsys_8086_2443_1025_1016, 0};
#undef pci_ss_info_1025_1016
#define pci_ss_info_1025_1016 pci_ss_info_8086_2443_1025_1016
+static const pciSubsystemInfo pci_ss_info_8086_2443_1028_00c7 =
+ {0x1028, 0x00c7, pci_subsys_8086_2443_1028_00c7, 0};
+#undef pci_ss_info_1028_00c7
+#define pci_ss_info_1028_00c7 pci_ss_info_8086_2443_1028_00c7
static const pciSubsystemInfo pci_ss_info_8086_2443_1028_010e =
{0x1028, 0x010e, pci_subsys_8086_2443_1028_010e, 0};
#undef pci_ss_info_1028_010e
@@ -40062,6 +42212,10 @@ static const pciSubsystemInfo pci_ss_info_8086_2444_1025_1016 =
{0x1025, 0x1016, pci_subsys_8086_2444_1025_1016, 0};
#undef pci_ss_info_1025_1016
#define pci_ss_info_1025_1016 pci_ss_info_8086_2444_1025_1016
+static const pciSubsystemInfo pci_ss_info_8086_2444_1028_00c7 =
+ {0x1028, 0x00c7, pci_subsys_8086_2444_1028_00c7, 0};
+#undef pci_ss_info_1028_00c7
+#define pci_ss_info_1028_00c7 pci_ss_info_8086_2444_1028_00c7
static const pciSubsystemInfo pci_ss_info_8086_2444_1028_010e =
{0x1028, 0x010e, pci_subsys_8086_2444_1028_010e, 0};
#undef pci_ss_info_1028_010e
@@ -40082,6 +42236,10 @@ static const pciSubsystemInfo pci_ss_info_8086_2444_8086_4532 =
{0x8086, 0x4532, pci_subsys_8086_2444_8086_4532, 0};
#undef pci_ss_info_8086_4532
#define pci_ss_info_8086_4532 pci_ss_info_8086_2444_8086_4532
+static const pciSubsystemInfo pci_ss_info_8086_2445_0e11_000b =
+ {0x0e11, 0x000b, pci_subsys_8086_2445_0e11_000b, 0};
+#undef pci_ss_info_0e11_000b
+#define pci_ss_info_0e11_000b pci_ss_info_8086_2445_0e11_000b
static const pciSubsystemInfo pci_ss_info_8086_2445_0e11_0088 =
{0x0e11, 0x0088, pci_subsys_8086_2445_0e11_0088, 0};
#undef pci_ss_info_0e11_0088
@@ -40122,6 +42280,10 @@ static const pciSubsystemInfo pci_ss_info_8086_2448_103c_099c =
{0x103c, 0x099c, pci_subsys_8086_2448_103c_099c, 0};
#undef pci_ss_info_103c_099c
#define pci_ss_info_103c_099c pci_ss_info_8086_2448_103c_099c
+static const pciSubsystemInfo pci_ss_info_8086_2448_144d_c00c =
+ {0x144d, 0xc00c, pci_subsys_8086_2448_144d_c00c, 0};
+#undef pci_ss_info_144d_c00c
+#define pci_ss_info_144d_c00c pci_ss_info_8086_2448_144d_c00c
static const pciSubsystemInfo pci_ss_info_8086_2448_1734_1055 =
{0x1734, 0x1055, pci_subsys_8086_2448_1734_1055, 0};
#undef pci_ss_info_1734_1055
@@ -40258,6 +42420,10 @@ static const pciSubsystemInfo pci_ss_info_8086_244b_1014_01c6 =
{0x1014, 0x01c6, pci_subsys_8086_244b_1014_01c6, 0};
#undef pci_ss_info_1014_01c6
#define pci_ss_info_1014_01c6 pci_ss_info_8086_244b_1014_01c6
+static const pciSubsystemInfo pci_ss_info_8086_244b_1028_00c7 =
+ {0x1028, 0x00c7, pci_subsys_8086_244b_1028_00c7, 0};
+#undef pci_ss_info_1028_00c7
+#define pci_ss_info_1028_00c7 pci_ss_info_8086_244b_1028_00c7
static const pciSubsystemInfo pci_ss_info_8086_244b_1028_010e =
{0x1028, 0x010e, pci_subsys_8086_244b_1028_010e, 0};
#undef pci_ss_info_1028_010e
@@ -40458,6 +42624,10 @@ static const pciSubsystemInfo pci_ss_info_8086_24c2_1014_0267 =
{0x1014, 0x0267, pci_subsys_8086_24c2_1014_0267, 0};
#undef pci_ss_info_1014_0267
#define pci_ss_info_1014_0267 pci_ss_info_8086_24c2_1014_0267
+static const pciSubsystemInfo pci_ss_info_8086_24c2_1014_052d =
+ {0x1014, 0x052d, pci_subsys_8086_24c2_1014_052d, 0};
+#undef pci_ss_info_1014_052d
+#define pci_ss_info_1014_052d pci_ss_info_8086_24c2_1014_052d
static const pciSubsystemInfo pci_ss_info_8086_24c2_1025_005a =
{0x1025, 0x005a, pci_subsys_8086_24c2_1025_005a, 0};
#undef pci_ss_info_1025_005a
@@ -40482,10 +42652,18 @@ static const pciSubsystemInfo pci_ss_info_8086_24c2_103c_0890 =
{0x103c, 0x0890, pci_subsys_8086_24c2_103c_0890, 0};
#undef pci_ss_info_103c_0890
#define pci_ss_info_103c_0890 pci_ss_info_8086_24c2_103c_0890
+static const pciSubsystemInfo pci_ss_info_8086_24c2_103c_08b0 =
+ {0x103c, 0x08b0, pci_subsys_8086_24c2_103c_08b0, 0};
+#undef pci_ss_info_103c_08b0
+#define pci_ss_info_103c_08b0 pci_ss_info_8086_24c2_103c_08b0
static const pciSubsystemInfo pci_ss_info_8086_24c2_1071_8160 =
{0x1071, 0x8160, pci_subsys_8086_24c2_1071_8160, 0};
#undef pci_ss_info_1071_8160
#define pci_ss_info_1071_8160 pci_ss_info_8086_24c2_1071_8160
+static const pciSubsystemInfo pci_ss_info_8086_24c2_144d_c00c =
+ {0x144d, 0xc00c, pci_subsys_8086_24c2_144d_c00c, 0};
+#undef pci_ss_info_144d_c00c
+#define pci_ss_info_144d_c00c pci_ss_info_8086_24c2_144d_c00c
static const pciSubsystemInfo pci_ss_info_8086_24c2_1462_5800 =
{0x1462, 0x5800, pci_subsys_8086_24c2_1462_5800, 0};
#undef pci_ss_info_1462_5800
@@ -40514,6 +42692,10 @@ static const pciSubsystemInfo pci_ss_info_8086_24c3_1014_0267 =
{0x1014, 0x0267, pci_subsys_8086_24c3_1014_0267, 0};
#undef pci_ss_info_1014_0267
#define pci_ss_info_1014_0267 pci_ss_info_8086_24c3_1014_0267
+static const pciSubsystemInfo pci_ss_info_8086_24c3_1014_052d =
+ {0x1014, 0x052d, pci_subsys_8086_24c3_1014_052d, 0};
+#undef pci_ss_info_1014_052d
+#define pci_ss_info_1014_052d pci_ss_info_8086_24c3_1014_052d
static const pciSubsystemInfo pci_ss_info_8086_24c3_1025_005a =
{0x1025, 0x005a, pci_subsys_8086_24c3_1025_005a, 0};
#undef pci_ss_info_1025_005a
@@ -40530,6 +42712,10 @@ static const pciSubsystemInfo pci_ss_info_8086_24c3_103c_0890 =
{0x103c, 0x0890, pci_subsys_8086_24c3_103c_0890, 0};
#undef pci_ss_info_103c_0890
#define pci_ss_info_103c_0890 pci_ss_info_8086_24c3_103c_0890
+static const pciSubsystemInfo pci_ss_info_8086_24c3_103c_08b0 =
+ {0x103c, 0x08b0, pci_subsys_8086_24c3_103c_08b0, 0};
+#undef pci_ss_info_103c_08b0
+#define pci_ss_info_103c_08b0 pci_ss_info_8086_24c3_103c_08b0
static const pciSubsystemInfo pci_ss_info_8086_24c3_1071_8160 =
{0x1071, 0x8160, pci_subsys_8086_24c3_1071_8160, 0};
#undef pci_ss_info_1071_8160
@@ -40558,6 +42744,10 @@ static const pciSubsystemInfo pci_ss_info_8086_24c4_1014_0267 =
{0x1014, 0x0267, pci_subsys_8086_24c4_1014_0267, 0};
#undef pci_ss_info_1014_0267
#define pci_ss_info_1014_0267 pci_ss_info_8086_24c4_1014_0267
+static const pciSubsystemInfo pci_ss_info_8086_24c4_1014_052d =
+ {0x1014, 0x052d, pci_subsys_8086_24c4_1014_052d, 0};
+#undef pci_ss_info_1014_052d
+#define pci_ss_info_1014_052d pci_ss_info_8086_24c4_1014_052d
static const pciSubsystemInfo pci_ss_info_8086_24c4_1025_005a =
{0x1025, 0x005a, pci_subsys_8086_24c4_1025_005a, 0};
#undef pci_ss_info_1025_005a
@@ -40582,10 +42772,18 @@ static const pciSubsystemInfo pci_ss_info_8086_24c4_103c_0890 =
{0x103c, 0x0890, pci_subsys_8086_24c4_103c_0890, 0};
#undef pci_ss_info_103c_0890
#define pci_ss_info_103c_0890 pci_ss_info_8086_24c4_103c_0890
+static const pciSubsystemInfo pci_ss_info_8086_24c4_103c_08b0 =
+ {0x103c, 0x08b0, pci_subsys_8086_24c4_103c_08b0, 0};
+#undef pci_ss_info_103c_08b0
+#define pci_ss_info_103c_08b0 pci_ss_info_8086_24c4_103c_08b0
static const pciSubsystemInfo pci_ss_info_8086_24c4_1071_8160 =
{0x1071, 0x8160, pci_subsys_8086_24c4_1071_8160, 0};
#undef pci_ss_info_1071_8160
#define pci_ss_info_1071_8160 pci_ss_info_8086_24c4_1071_8160
+static const pciSubsystemInfo pci_ss_info_8086_24c4_144d_c00c =
+ {0x144d, 0xc00c, pci_subsys_8086_24c4_144d_c00c, 0};
+#undef pci_ss_info_144d_c00c
+#define pci_ss_info_144d_c00c pci_ss_info_8086_24c4_144d_c00c
static const pciSubsystemInfo pci_ss_info_8086_24c4_1462_5800 =
{0x1462, 0x5800, pci_subsys_8086_24c4_1462_5800, 0};
#undef pci_ss_info_1462_5800
@@ -40614,6 +42812,10 @@ static const pciSubsystemInfo pci_ss_info_8086_24c5_1014_0267 =
{0x1014, 0x0267, pci_subsys_8086_24c5_1014_0267, 0};
#undef pci_ss_info_1014_0267
#define pci_ss_info_1014_0267 pci_ss_info_8086_24c5_1014_0267
+static const pciSubsystemInfo pci_ss_info_8086_24c5_1014_055f =
+ {0x1014, 0x055f, pci_subsys_8086_24c5_1014_055f, 0};
+#undef pci_ss_info_1014_055f
+#define pci_ss_info_1014_055f pci_ss_info_8086_24c5_1014_055f
static const pciSubsystemInfo pci_ss_info_8086_24c5_1025_005a =
{0x1025, 0x005a, pci_subsys_8086_24c5_1025_005a, 0};
#undef pci_ss_info_1025_005a
@@ -40638,10 +42840,18 @@ static const pciSubsystemInfo pci_ss_info_8086_24c5_103c_0890 =
{0x103c, 0x0890, pci_subsys_8086_24c5_103c_0890, 0};
#undef pci_ss_info_103c_0890
#define pci_ss_info_103c_0890 pci_ss_info_8086_24c5_103c_0890
+static const pciSubsystemInfo pci_ss_info_8086_24c5_103c_08b0 =
+ {0x103c, 0x08b0, pci_subsys_8086_24c5_103c_08b0, 0};
+#undef pci_ss_info_103c_08b0
+#define pci_ss_info_103c_08b0 pci_ss_info_8086_24c5_103c_08b0
static const pciSubsystemInfo pci_ss_info_8086_24c5_1071_8160 =
{0x1071, 0x8160, pci_subsys_8086_24c5_1071_8160, 0};
#undef pci_ss_info_1071_8160
#define pci_ss_info_1071_8160 pci_ss_info_8086_24c5_1071_8160
+static const pciSubsystemInfo pci_ss_info_8086_24c5_144d_c00c =
+ {0x144d, 0xc00c, pci_subsys_8086_24c5_144d_c00c, 0};
+#undef pci_ss_info_144d_c00c
+#define pci_ss_info_144d_c00c pci_ss_info_8086_24c5_144d_c00c
static const pciSubsystemInfo pci_ss_info_8086_24c5_1458_a002 =
{0x1458, 0xa002, pci_subsys_8086_24c5_1458_a002, 0};
#undef pci_ss_info_1458_a002
@@ -40658,6 +42868,10 @@ static const pciSubsystemInfo pci_ss_info_8086_24c5_1734_1055 =
{0x1734, 0x1055, pci_subsys_8086_24c5_1734_1055, 0};
#undef pci_ss_info_1734_1055
#define pci_ss_info_1734_1055 pci_ss_info_8086_24c5_1734_1055
+static const pciSubsystemInfo pci_ss_info_8086_24c6_1014_0559 =
+ {0x1014, 0x0559, pci_subsys_8086_24c6_1014_0559, 0};
+#undef pci_ss_info_1014_0559
+#define pci_ss_info_1014_0559 pci_ss_info_8086_24c6_1014_0559
static const pciSubsystemInfo pci_ss_info_8086_24c6_1025_003c =
{0x1025, 0x003c, pci_subsys_8086_24c6_1025_003c, 0};
#undef pci_ss_info_1025_003c
@@ -40678,14 +42892,26 @@ static const pciSubsystemInfo pci_ss_info_8086_24c6_103c_0890 =
{0x103c, 0x0890, pci_subsys_8086_24c6_103c_0890, 0};
#undef pci_ss_info_103c_0890
#define pci_ss_info_103c_0890 pci_ss_info_8086_24c6_103c_0890
+static const pciSubsystemInfo pci_ss_info_8086_24c6_103c_08b0 =
+ {0x103c, 0x08b0, pci_subsys_8086_24c6_103c_08b0, 0};
+#undef pci_ss_info_103c_08b0
+#define pci_ss_info_103c_08b0 pci_ss_info_8086_24c6_103c_08b0
static const pciSubsystemInfo pci_ss_info_8086_24c6_1071_8160 =
{0x1071, 0x8160, pci_subsys_8086_24c6_1071_8160, 0};
#undef pci_ss_info_1071_8160
#define pci_ss_info_1071_8160 pci_ss_info_8086_24c6_1071_8160
+static const pciSubsystemInfo pci_ss_info_8086_24c6_144d_c00c =
+ {0x144d, 0xc00c, pci_subsys_8086_24c6_144d_c00c, 0};
+#undef pci_ss_info_144d_c00c
+#define pci_ss_info_144d_c00c pci_ss_info_8086_24c6_144d_c00c
static const pciSubsystemInfo pci_ss_info_8086_24c7_1014_0267 =
{0x1014, 0x0267, pci_subsys_8086_24c7_1014_0267, 0};
#undef pci_ss_info_1014_0267
#define pci_ss_info_1014_0267 pci_ss_info_8086_24c7_1014_0267
+static const pciSubsystemInfo pci_ss_info_8086_24c7_1014_052d =
+ {0x1014, 0x052d, pci_subsys_8086_24c7_1014_052d, 0};
+#undef pci_ss_info_1014_052d
+#define pci_ss_info_1014_052d pci_ss_info_8086_24c7_1014_052d
static const pciSubsystemInfo pci_ss_info_8086_24c7_1025_005a =
{0x1025, 0x005a, pci_subsys_8086_24c7_1025_005a, 0};
#undef pci_ss_info_1025_005a
@@ -40710,10 +42936,18 @@ static const pciSubsystemInfo pci_ss_info_8086_24c7_103c_0890 =
{0x103c, 0x0890, pci_subsys_8086_24c7_103c_0890, 0};
#undef pci_ss_info_103c_0890
#define pci_ss_info_103c_0890 pci_ss_info_8086_24c7_103c_0890
+static const pciSubsystemInfo pci_ss_info_8086_24c7_103c_08b0 =
+ {0x103c, 0x08b0, pci_subsys_8086_24c7_103c_08b0, 0};
+#undef pci_ss_info_103c_08b0
+#define pci_ss_info_103c_08b0 pci_ss_info_8086_24c7_103c_08b0
static const pciSubsystemInfo pci_ss_info_8086_24c7_1071_8160 =
{0x1071, 0x8160, pci_subsys_8086_24c7_1071_8160, 0};
#undef pci_ss_info_1071_8160
#define pci_ss_info_1071_8160 pci_ss_info_8086_24c7_1071_8160
+static const pciSubsystemInfo pci_ss_info_8086_24c7_144d_c00c =
+ {0x144d, 0xc00c, pci_subsys_8086_24c7_144d_c00c, 0};
+#undef pci_ss_info_144d_c00c
+#define pci_ss_info_144d_c00c pci_ss_info_8086_24c7_144d_c00c
static const pciSubsystemInfo pci_ss_info_8086_24c7_1462_5800 =
{0x1462, 0x5800, pci_subsys_8086_24c7_1462_5800, 0};
#undef pci_ss_info_1462_5800
@@ -40734,6 +42968,10 @@ static const pciSubsystemInfo pci_ss_info_8086_24c7_8086_4541 =
{0x8086, 0x4541, pci_subsys_8086_24c7_8086_4541, 0};
#undef pci_ss_info_8086_4541
#define pci_ss_info_8086_4541 pci_ss_info_8086_24c7_8086_4541
+static const pciSubsystemInfo pci_ss_info_8086_24ca_1014_052d =
+ {0x1014, 0x052d, pci_subsys_8086_24ca_1014_052d, 0};
+#undef pci_ss_info_1014_052d
+#define pci_ss_info_1014_052d pci_ss_info_8086_24ca_1014_052d
static const pciSubsystemInfo pci_ss_info_8086_24ca_1025_005a =
{0x1025, 0x005a, pci_subsys_8086_24ca_1025_005a, 0};
#undef pci_ss_info_1025_005a
@@ -40754,10 +42992,18 @@ static const pciSubsystemInfo pci_ss_info_8086_24ca_103c_0890 =
{0x103c, 0x0890, pci_subsys_8086_24ca_103c_0890, 0};
#undef pci_ss_info_103c_0890
#define pci_ss_info_103c_0890 pci_ss_info_8086_24ca_103c_0890
+static const pciSubsystemInfo pci_ss_info_8086_24ca_103c_08b0 =
+ {0x103c, 0x08b0, pci_subsys_8086_24ca_103c_08b0, 0};
+#undef pci_ss_info_103c_08b0
+#define pci_ss_info_103c_08b0 pci_ss_info_8086_24ca_103c_08b0
static const pciSubsystemInfo pci_ss_info_8086_24ca_1071_8160 =
{0x1071, 0x8160, pci_subsys_8086_24ca_1071_8160, 0};
#undef pci_ss_info_1071_8160
#define pci_ss_info_1071_8160 pci_ss_info_8086_24ca_1071_8160
+static const pciSubsystemInfo pci_ss_info_8086_24ca_144d_c00c =
+ {0x144d, 0xc00c, pci_subsys_8086_24ca_144d_c00c, 0};
+#undef pci_ss_info_144d_c00c
+#define pci_ss_info_144d_c00c pci_ss_info_8086_24ca_144d_c00c
static const pciSubsystemInfo pci_ss_info_8086_24ca_1734_1055 =
{0x1734, 0x1055, pci_subsys_8086_24ca_1734_1055, 0};
#undef pci_ss_info_1734_1055
@@ -40790,6 +43036,10 @@ static const pciSubsystemInfo pci_ss_info_8086_24cb_4c53_1090 =
{0x4c53, 0x1090, pci_subsys_8086_24cb_4c53_1090, 0};
#undef pci_ss_info_4c53_1090
#define pci_ss_info_4c53_1090 pci_ss_info_8086_24cb_4c53_1090
+static const pciSubsystemInfo pci_ss_info_8086_24cc_144d_c00c =
+ {0x144d, 0xc00c, pci_subsys_8086_24cc_144d_c00c, 0};
+#undef pci_ss_info_144d_c00c
+#define pci_ss_info_144d_c00c pci_ss_info_8086_24cc_144d_c00c
static const pciSubsystemInfo pci_ss_info_8086_24cc_1734_1055 =
{0x1734, 0x1055, pci_subsys_8086_24cc_1734_1055, 0};
#undef pci_ss_info_1734_1055
@@ -40798,6 +43048,10 @@ static const pciSubsystemInfo pci_ss_info_8086_24cd_1014_0267 =
{0x1014, 0x0267, pci_subsys_8086_24cd_1014_0267, 0};
#undef pci_ss_info_1014_0267
#define pci_ss_info_1014_0267 pci_ss_info_8086_24cd_1014_0267
+static const pciSubsystemInfo pci_ss_info_8086_24cd_1014_052e =
+ {0x1014, 0x052e, pci_subsys_8086_24cd_1014_052e, 0};
+#undef pci_ss_info_1014_052e
+#define pci_ss_info_1014_052e pci_ss_info_8086_24cd_1014_052e
static const pciSubsystemInfo pci_ss_info_8086_24cd_1025_005a =
{0x1025, 0x005a, pci_subsys_8086_24cd_1025_005a, 0};
#undef pci_ss_info_1025_005a
@@ -40830,10 +43084,22 @@ static const pciSubsystemInfo pci_ss_info_8086_24cd_103c_0890 =
{0x103c, 0x0890, pci_subsys_8086_24cd_103c_0890, 0};
#undef pci_ss_info_103c_0890
#define pci_ss_info_103c_0890 pci_ss_info_8086_24cd_103c_0890
+static const pciSubsystemInfo pci_ss_info_8086_24cd_103c_08b0 =
+ {0x103c, 0x08b0, pci_subsys_8086_24cd_103c_08b0, 0};
+#undef pci_ss_info_103c_08b0
+#define pci_ss_info_103c_08b0 pci_ss_info_8086_24cd_103c_08b0
static const pciSubsystemInfo pci_ss_info_8086_24cd_1071_8160 =
{0x1071, 0x8160, pci_subsys_8086_24cd_1071_8160, 0};
#undef pci_ss_info_1071_8160
#define pci_ss_info_1071_8160 pci_ss_info_8086_24cd_1071_8160
+static const pciSubsystemInfo pci_ss_info_8086_24cd_1179_ff00 =
+ {0x1179, 0xff00, pci_subsys_8086_24cd_1179_ff00, 0};
+#undef pci_ss_info_1179_ff00
+#define pci_ss_info_1179_ff00 pci_ss_info_8086_24cd_1179_ff00
+static const pciSubsystemInfo pci_ss_info_8086_24cd_144d_c00c =
+ {0x144d, 0xc00c, pci_subsys_8086_24cd_144d_c00c, 0};
+#undef pci_ss_info_144d_c00c
+#define pci_ss_info_144d_c00c pci_ss_info_8086_24cd_144d_c00c
static const pciSubsystemInfo pci_ss_info_8086_24cd_1462_3981 =
{0x1462, 0x3981, pci_subsys_8086_24cd_1462_3981, 0};
#undef pci_ss_info_1462_3981
@@ -40890,6 +43156,10 @@ static const pciSubsystemInfo pci_ss_info_8086_24d1_8086_4246 =
{0x8086, 0x4246, pci_subsys_8086_24d1_8086_4246, 0};
#undef pci_ss_info_8086_4246
#define pci_ss_info_8086_4246 pci_ss_info_8086_24d1_8086_4246
+static const pciSubsystemInfo pci_ss_info_8086_24d1_8086_4c43 =
+ {0x8086, 0x4c43, pci_subsys_8086_24d1_8086_4c43, 0};
+#undef pci_ss_info_8086_4c43
+#define pci_ss_info_8086_4c43 pci_ss_info_8086_24d1_8086_4c43
static const pciSubsystemInfo pci_ss_info_8086_24d1_8086_524c =
{0x8086, 0x524c, pci_subsys_8086_24d1_8086_524c, 0};
#undef pci_ss_info_8086_524c
@@ -40946,6 +43216,10 @@ static const pciSubsystemInfo pci_ss_info_8086_24d2_8086_4246 =
{0x8086, 0x4246, pci_subsys_8086_24d2_8086_4246, 0};
#undef pci_ss_info_8086_4246
#define pci_ss_info_8086_4246 pci_ss_info_8086_24d2_8086_4246
+static const pciSubsystemInfo pci_ss_info_8086_24d2_8086_4c43 =
+ {0x8086, 0x4c43, pci_subsys_8086_24d2_8086_4c43, 0};
+#undef pci_ss_info_8086_4c43
+#define pci_ss_info_8086_4c43 pci_ss_info_8086_24d2_8086_4c43
static const pciSubsystemInfo pci_ss_info_8086_24d2_8086_524c =
{0x8086, 0x524c, pci_subsys_8086_24d2_8086_524c, 0};
#undef pci_ss_info_8086_524c
@@ -40962,6 +43236,10 @@ static const pciSubsystemInfo pci_ss_info_8086_24d3_1028_0169 =
{0x1028, 0x0169, pci_subsys_8086_24d3_1028_0169, 0};
#undef pci_ss_info_1028_0169
#define pci_ss_info_1028_0169 pci_ss_info_8086_24d3_1028_0169
+static const pciSubsystemInfo pci_ss_info_8086_24d3_103c_12bc =
+ {0x103c, 0x12bc, pci_subsys_8086_24d3_103c_12bc, 0};
+#undef pci_ss_info_103c_12bc
+#define pci_ss_info_103c_12bc pci_ss_info_8086_24d3_103c_12bc
static const pciSubsystemInfo pci_ss_info_8086_24d3_1043_80a6 =
{0x1043, 0x80a6, pci_subsys_8086_24d3_1043_80a6, 0};
#undef pci_ss_info_1043_80a6
@@ -40990,6 +43268,10 @@ static const pciSubsystemInfo pci_ss_info_8086_24d3_8086_4246 =
{0x8086, 0x4246, pci_subsys_8086_24d3_8086_4246, 0};
#undef pci_ss_info_8086_4246
#define pci_ss_info_8086_4246 pci_ss_info_8086_24d3_8086_4246
+static const pciSubsystemInfo pci_ss_info_8086_24d3_8086_4c43 =
+ {0x8086, 0x4c43, pci_subsys_8086_24d3_8086_4c43, 0};
+#undef pci_ss_info_8086_4c43
+#define pci_ss_info_8086_4c43 pci_ss_info_8086_24d3_8086_4c43
static const pciSubsystemInfo pci_ss_info_8086_24d3_8086_524c =
{0x8086, 0x524c, pci_subsys_8086_24d3_8086_524c, 0};
#undef pci_ss_info_8086_524c
@@ -41046,10 +43328,18 @@ static const pciSubsystemInfo pci_ss_info_8086_24d4_8086_4246 =
{0x8086, 0x4246, pci_subsys_8086_24d4_8086_4246, 0};
#undef pci_ss_info_8086_4246
#define pci_ss_info_8086_4246 pci_ss_info_8086_24d4_8086_4246
+static const pciSubsystemInfo pci_ss_info_8086_24d4_8086_4c43 =
+ {0x8086, 0x4c43, pci_subsys_8086_24d4_8086_4c43, 0};
+#undef pci_ss_info_8086_4c43
+#define pci_ss_info_8086_4c43 pci_ss_info_8086_24d4_8086_4c43
static const pciSubsystemInfo pci_ss_info_8086_24d4_8086_524c =
{0x8086, 0x524c, pci_subsys_8086_24d4_8086_524c, 0};
#undef pci_ss_info_8086_524c
#define pci_ss_info_8086_524c pci_ss_info_8086_24d4_8086_524c
+static const pciSubsystemInfo pci_ss_info_8086_24d5_100a_147b =
+ {0x100a, 0x147b, pci_subsys_8086_24d5_100a_147b, 0};
+#undef pci_ss_info_100a_147b
+#define pci_ss_info_100a_147b pci_ss_info_8086_24d5_100a_147b
static const pciSubsystemInfo pci_ss_info_8086_24d5_1028_0169 =
{0x1028, 0x0169, pci_subsys_8086_24d5_1028_0169, 0};
#undef pci_ss_info_1028_0169
@@ -41094,6 +43384,10 @@ static const pciSubsystemInfo pci_ss_info_8086_24d5_8086_e001 =
{0x8086, 0xe001, pci_subsys_8086_24d5_8086_e001, 0};
#undef pci_ss_info_8086_e001
#define pci_ss_info_8086_e001 pci_ss_info_8086_24d5_8086_e001
+static const pciSubsystemInfo pci_ss_info_8086_24d5_8086_e002 =
+ {0x8086, 0xe002, pci_subsys_8086_24d5_8086_e002, 0};
+#undef pci_ss_info_8086_e002
+#define pci_ss_info_8086_e002 pci_ss_info_8086_24d5_8086_e002
static const pciSubsystemInfo pci_ss_info_8086_24d6_103c_006a =
{0x103c, 0x006a, pci_subsys_8086_24d6_103c_006a, 0};
#undef pci_ss_info_103c_006a
@@ -41146,6 +43440,10 @@ static const pciSubsystemInfo pci_ss_info_8086_24d7_8086_4246 =
{0x8086, 0x4246, pci_subsys_8086_24d7_8086_4246, 0};
#undef pci_ss_info_8086_4246
#define pci_ss_info_8086_4246 pci_ss_info_8086_24d7_8086_4246
+static const pciSubsystemInfo pci_ss_info_8086_24d7_8086_4c43 =
+ {0x8086, 0x4c43, pci_subsys_8086_24d7_8086_4c43, 0};
+#undef pci_ss_info_8086_4c43
+#define pci_ss_info_8086_4c43 pci_ss_info_8086_24d7_8086_4c43
static const pciSubsystemInfo pci_ss_info_8086_24d7_8086_524c =
{0x8086, 0x524c, pci_subsys_8086_24d7_8086_524c, 0};
#undef pci_ss_info_8086_524c
@@ -41206,6 +43504,10 @@ static const pciSubsystemInfo pci_ss_info_8086_24db_8086_4246 =
{0x8086, 0x4246, pci_subsys_8086_24db_8086_4246, 0};
#undef pci_ss_info_8086_4246
#define pci_ss_info_8086_4246 pci_ss_info_8086_24db_8086_4246
+static const pciSubsystemInfo pci_ss_info_8086_24db_8086_4c43 =
+ {0x8086, 0x4c43, pci_subsys_8086_24db_8086_4c43, 0};
+#undef pci_ss_info_8086_4c43
+#define pci_ss_info_8086_4c43 pci_ss_info_8086_24db_8086_4c43
static const pciSubsystemInfo pci_ss_info_8086_24db_8086_524c =
{0x8086, 0x524c, pci_subsys_8086_24db_8086_524c, 0};
#undef pci_ss_info_8086_524c
@@ -41254,6 +43556,10 @@ static const pciSubsystemInfo pci_ss_info_8086_24dd_8086_4246 =
{0x8086, 0x4246, pci_subsys_8086_24dd_8086_4246, 0};
#undef pci_ss_info_8086_4246
#define pci_ss_info_8086_4246 pci_ss_info_8086_24dd_8086_4246
+static const pciSubsystemInfo pci_ss_info_8086_24dd_8086_4c43 =
+ {0x8086, 0x4c43, pci_subsys_8086_24dd_8086_4c43, 0};
+#undef pci_ss_info_8086_4c43
+#define pci_ss_info_8086_4c43 pci_ss_info_8086_24dd_8086_4c43
static const pciSubsystemInfo pci_ss_info_8086_24dd_8086_524c =
{0x8086, 0x524c, pci_subsys_8086_24dd_8086_524c, 0};
#undef pci_ss_info_8086_524c
@@ -41294,6 +43600,10 @@ static const pciSubsystemInfo pci_ss_info_8086_24de_8086_4246 =
{0x8086, 0x4246, pci_subsys_8086_24de_8086_4246, 0};
#undef pci_ss_info_8086_4246
#define pci_ss_info_8086_4246 pci_ss_info_8086_24de_8086_4246
+static const pciSubsystemInfo pci_ss_info_8086_24de_8086_4c43 =
+ {0x8086, 0x4c43, pci_subsys_8086_24de_8086_4c43, 0};
+#undef pci_ss_info_8086_4c43
+#define pci_ss_info_8086_4c43 pci_ss_info_8086_24de_8086_4c43
static const pciSubsystemInfo pci_ss_info_8086_24de_8086_524c =
{0x8086, 0x524c, pci_subsys_8086_24de_8086_524c, 0};
#undef pci_ss_info_8086_524c
@@ -41310,6 +43620,10 @@ static const pciSubsystemInfo pci_ss_info_8086_2501_1043_801c =
{0x1043, 0x801c, pci_subsys_8086_2501_1043_801c, 0};
#undef pci_ss_info_1043_801c
#define pci_ss_info_1043_801c pci_ss_info_8086_2501_1043_801c
+static const pciSubsystemInfo pci_ss_info_8086_2530_1028_00c7 =
+ {0x1028, 0x00c7, pci_subsys_8086_2530_1028_00c7, 0};
+#undef pci_ss_info_1028_00c7
+#define pci_ss_info_1028_00c7 pci_ss_info_8086_2530_1028_00c7
static const pciSubsystemInfo pci_ss_info_8086_2530_147b_0507 =
{0x147b, 0x0507, pci_subsys_8086_2530_147b_0507, 0};
#undef pci_ss_info_147b_0507
@@ -41370,6 +43684,10 @@ static const pciSubsystemInfo pci_ss_info_8086_2570_103c_006a =
{0x103c, 0x006a, pci_subsys_8086_2570_103c_006a, 0};
#undef pci_ss_info_103c_006a
#define pci_ss_info_103c_006a pci_ss_info_8086_2570_103c_006a
+static const pciSubsystemInfo pci_ss_info_8086_2570_103c_12bc =
+ {0x103c, 0x12bc, pci_subsys_8086_2570_103c_12bc, 0};
+#undef pci_ss_info_103c_12bc
+#define pci_ss_info_103c_12bc pci_ss_info_8086_2570_103c_12bc
static const pciSubsystemInfo pci_ss_info_8086_2570_1043_80f2 =
{0x1043, 0x80f2, pci_subsys_8086_2570_1043_80f2, 0};
#undef pci_ss_info_1043_80f2
@@ -41394,6 +43712,10 @@ static const pciSubsystemInfo pci_ss_info_8086_2572_8086_4246 =
{0x8086, 0x4246, pci_subsys_8086_2572_8086_4246, 0};
#undef pci_ss_info_8086_4246
#define pci_ss_info_8086_4246 pci_ss_info_8086_2572_8086_4246
+static const pciSubsystemInfo pci_ss_info_8086_2572_8086_4c43 =
+ {0x8086, 0x4c43, pci_subsys_8086_2572_8086_4c43, 0};
+#undef pci_ss_info_8086_4c43
+#define pci_ss_info_8086_4c43 pci_ss_info_8086_2572_8086_4c43
static const pciSubsystemInfo pci_ss_info_8086_2578_1458_2578 =
{0x1458, 0x2578, pci_subsys_8086_2578_1458_2578, 0};
#undef pci_ss_info_1458_2578
@@ -41462,6 +43784,14 @@ static const pciSubsystemInfo pci_ss_info_8086_2592_1043_1881 =
{0x1043, 0x1881, pci_subsys_8086_2592_1043_1881, 0};
#undef pci_ss_info_1043_1881
#define pci_ss_info_1043_1881 pci_ss_info_8086_2592_1043_1881
+static const pciSubsystemInfo pci_ss_info_8086_25a2_1775_10d0 =
+ {0x1775, 0x10d0, pci_subsys_8086_25a2_1775_10d0, 0};
+#undef pci_ss_info_1775_10d0
+#define pci_ss_info_1775_10d0 pci_ss_info_8086_25a2_1775_10d0
+static const pciSubsystemInfo pci_ss_info_8086_25a2_1775_ce90 =
+ {0x1775, 0xce90, pci_subsys_8086_25a2_1775_ce90, 0};
+#undef pci_ss_info_1775_ce90
+#define pci_ss_info_1775_ce90 pci_ss_info_8086_25a2_1775_ce90
static const pciSubsystemInfo pci_ss_info_8086_25a2_4c53_10b0 =
{0x4c53, 0x10b0, pci_subsys_8086_25a2_4c53_10b0, 0};
#undef pci_ss_info_4c53_10b0
@@ -41470,6 +43800,10 @@ static const pciSubsystemInfo pci_ss_info_8086_25a2_4c53_10e0 =
{0x4c53, 0x10e0, pci_subsys_8086_25a2_4c53_10e0, 0};
#undef pci_ss_info_4c53_10e0
#define pci_ss_info_4c53_10e0 pci_ss_info_8086_25a2_4c53_10e0
+static const pciSubsystemInfo pci_ss_info_8086_25a3_1775_ce90 =
+ {0x1775, 0xce90, pci_subsys_8086_25a3_1775_ce90, 0};
+#undef pci_ss_info_1775_ce90
+#define pci_ss_info_1775_ce90 pci_ss_info_8086_25a3_1775_ce90
static const pciSubsystemInfo pci_ss_info_8086_25a3_4c53_10b0 =
{0x4c53, 0x10b0, pci_subsys_8086_25a3_4c53_10b0, 0};
#undef pci_ss_info_4c53_10b0
@@ -41482,6 +43816,14 @@ static const pciSubsystemInfo pci_ss_info_8086_25a3_4c53_10e0 =
{0x4c53, 0x10e0, pci_subsys_8086_25a3_4c53_10e0, 0};
#undef pci_ss_info_4c53_10e0
#define pci_ss_info_4c53_10e0 pci_ss_info_8086_25a3_4c53_10e0
+static const pciSubsystemInfo pci_ss_info_8086_25a4_1775_10d0 =
+ {0x1775, 0x10d0, pci_subsys_8086_25a4_1775_10d0, 0};
+#undef pci_ss_info_1775_10d0
+#define pci_ss_info_1775_10d0 pci_ss_info_8086_25a4_1775_10d0
+static const pciSubsystemInfo pci_ss_info_8086_25a4_1775_ce90 =
+ {0x1775, 0xce90, pci_subsys_8086_25a4_1775_ce90, 0};
+#undef pci_ss_info_1775_ce90
+#define pci_ss_info_1775_ce90 pci_ss_info_8086_25a4_1775_ce90
static const pciSubsystemInfo pci_ss_info_8086_25a4_4c53_10b0 =
{0x4c53, 0x10b0, pci_subsys_8086_25a4_4c53_10b0, 0};
#undef pci_ss_info_4c53_10b0
@@ -41494,10 +43836,22 @@ static const pciSubsystemInfo pci_ss_info_8086_25a4_4c53_10e0 =
{0x4c53, 0x10e0, pci_subsys_8086_25a4_4c53_10e0, 0};
#undef pci_ss_info_4c53_10e0
#define pci_ss_info_4c53_10e0 pci_ss_info_8086_25a4_4c53_10e0
+static const pciSubsystemInfo pci_ss_info_8086_25a6_1775_ce90 =
+ {0x1775, 0xce90, pci_subsys_8086_25a6_1775_ce90, 0};
+#undef pci_ss_info_1775_ce90
+#define pci_ss_info_1775_ce90 pci_ss_info_8086_25a6_1775_ce90
static const pciSubsystemInfo pci_ss_info_8086_25a6_4c53_10b0 =
{0x4c53, 0x10b0, pci_subsys_8086_25a6_4c53_10b0, 0};
#undef pci_ss_info_4c53_10b0
#define pci_ss_info_4c53_10b0 pci_ss_info_8086_25a6_4c53_10b0
+static const pciSubsystemInfo pci_ss_info_8086_25a9_1775_10d0 =
+ {0x1775, 0x10d0, pci_subsys_8086_25a9_1775_10d0, 0};
+#undef pci_ss_info_1775_10d0
+#define pci_ss_info_1775_10d0 pci_ss_info_8086_25a9_1775_10d0
+static const pciSubsystemInfo pci_ss_info_8086_25a9_1775_ce90 =
+ {0x1775, 0xce90, pci_subsys_8086_25a9_1775_ce90, 0};
+#undef pci_ss_info_1775_ce90
+#define pci_ss_info_1775_ce90 pci_ss_info_8086_25a9_1775_ce90
static const pciSubsystemInfo pci_ss_info_8086_25a9_4c53_10b0 =
{0x4c53, 0x10b0, pci_subsys_8086_25a9_4c53_10b0, 0};
#undef pci_ss_info_4c53_10b0
@@ -41510,6 +43864,10 @@ static const pciSubsystemInfo pci_ss_info_8086_25a9_4c53_10e0 =
{0x4c53, 0x10e0, pci_subsys_8086_25a9_4c53_10e0, 0};
#undef pci_ss_info_4c53_10e0
#define pci_ss_info_4c53_10e0 pci_ss_info_8086_25a9_4c53_10e0
+static const pciSubsystemInfo pci_ss_info_8086_25aa_1775_ce90 =
+ {0x1775, 0xce90, pci_subsys_8086_25aa_1775_ce90, 0};
+#undef pci_ss_info_1775_ce90
+#define pci_ss_info_1775_ce90 pci_ss_info_8086_25aa_1775_ce90
static const pciSubsystemInfo pci_ss_info_8086_25aa_4c53_10b0 =
{0x4c53, 0x10b0, pci_subsys_8086_25aa_4c53_10b0, 0};
#undef pci_ss_info_4c53_10b0
@@ -41518,6 +43876,14 @@ static const pciSubsystemInfo pci_ss_info_8086_25aa_4c53_10e0 =
{0x4c53, 0x10e0, pci_subsys_8086_25aa_4c53_10e0, 0};
#undef pci_ss_info_4c53_10e0
#define pci_ss_info_4c53_10e0 pci_ss_info_8086_25aa_4c53_10e0
+static const pciSubsystemInfo pci_ss_info_8086_25ab_1775_10d0 =
+ {0x1775, 0x10d0, pci_subsys_8086_25ab_1775_10d0, 0};
+#undef pci_ss_info_1775_10d0
+#define pci_ss_info_1775_10d0 pci_ss_info_8086_25ab_1775_10d0
+static const pciSubsystemInfo pci_ss_info_8086_25ab_1775_ce90 =
+ {0x1775, 0xce90, pci_subsys_8086_25ab_1775_ce90, 0};
+#undef pci_ss_info_1775_ce90
+#define pci_ss_info_1775_ce90 pci_ss_info_8086_25ab_1775_ce90
static const pciSubsystemInfo pci_ss_info_8086_25ab_4c53_10b0 =
{0x4c53, 0x10b0, pci_subsys_8086_25ab_4c53_10b0, 0};
#undef pci_ss_info_4c53_10b0
@@ -41530,6 +43896,14 @@ static const pciSubsystemInfo pci_ss_info_8086_25ab_4c53_10e0 =
{0x4c53, 0x10e0, pci_subsys_8086_25ab_4c53_10e0, 0};
#undef pci_ss_info_4c53_10e0
#define pci_ss_info_4c53_10e0 pci_ss_info_8086_25ab_4c53_10e0
+static const pciSubsystemInfo pci_ss_info_8086_25ac_1775_10d0 =
+ {0x1775, 0x10d0, pci_subsys_8086_25ac_1775_10d0, 0};
+#undef pci_ss_info_1775_10d0
+#define pci_ss_info_1775_10d0 pci_ss_info_8086_25ac_1775_10d0
+static const pciSubsystemInfo pci_ss_info_8086_25ac_1775_ce90 =
+ {0x1775, 0xce90, pci_subsys_8086_25ac_1775_ce90, 0};
+#undef pci_ss_info_1775_ce90
+#define pci_ss_info_1775_ce90 pci_ss_info_8086_25ac_1775_ce90
static const pciSubsystemInfo pci_ss_info_8086_25ac_4c53_10b0 =
{0x4c53, 0x10b0, pci_subsys_8086_25ac_4c53_10b0, 0};
#undef pci_ss_info_4c53_10b0
@@ -41542,6 +43916,14 @@ static const pciSubsystemInfo pci_ss_info_8086_25ac_4c53_10e0 =
{0x4c53, 0x10e0, pci_subsys_8086_25ac_4c53_10e0, 0};
#undef pci_ss_info_4c53_10e0
#define pci_ss_info_4c53_10e0 pci_ss_info_8086_25ac_4c53_10e0
+static const pciSubsystemInfo pci_ss_info_8086_25ad_1775_10d0 =
+ {0x1775, 0x10d0, pci_subsys_8086_25ad_1775_10d0, 0};
+#undef pci_ss_info_1775_10d0
+#define pci_ss_info_1775_10d0 pci_ss_info_8086_25ad_1775_10d0
+static const pciSubsystemInfo pci_ss_info_8086_25ad_1775_ce90 =
+ {0x1775, 0xce90, pci_subsys_8086_25ad_1775_ce90, 0};
+#undef pci_ss_info_1775_ce90
+#define pci_ss_info_1775_ce90 pci_ss_info_8086_25ad_1775_ce90
static const pciSubsystemInfo pci_ss_info_8086_25ad_4c53_10b0 =
{0x4c53, 0x10b0, pci_subsys_8086_25ad_4c53_10b0, 0};
#undef pci_ss_info_4c53_10b0
@@ -41714,10 +44096,18 @@ static const pciSubsystemInfo pci_ss_info_8086_265c_1734_105c =
{0x1734, 0x105c, pci_subsys_8086_265c_1734_105c, 0};
#undef pci_ss_info_1734_105c
#define pci_ss_info_1734_105c pci_ss_info_8086_265c_1734_105c
+static const pciSubsystemInfo pci_ss_info_8086_265c_8086_265c =
+ {0x8086, 0x265c, pci_subsys_8086_265c_8086_265c, 0};
+#undef pci_ss_info_8086_265c
+#define pci_ss_info_8086_265c pci_ss_info_8086_265c_8086_265c
static const pciSubsystemInfo pci_ss_info_8086_2660_103c_099c =
{0x103c, 0x099c, pci_subsys_8086_2660_103c_099c, 0};
#undef pci_ss_info_103c_099c
#define pci_ss_info_103c_099c pci_ss_info_8086_2660_103c_099c
+static const pciSubsystemInfo pci_ss_info_8086_2668_103c_2a09 =
+ {0x103c, 0x2a09, pci_subsys_8086_2668_103c_2a09, 0};
+#undef pci_ss_info_103c_2a09
+#define pci_ss_info_103c_2a09 pci_ss_info_8086_2668_103c_2a09
static const pciSubsystemInfo pci_ss_info_8086_2668_1043_814e =
{0x1043, 0x814e, pci_subsys_8086_2668_1043_814e, 0};
#undef pci_ss_info_1043_814e
@@ -41810,6 +44200,10 @@ static const pciSubsystemInfo pci_ss_info_8086_266f_1734_105c =
{0x1734, 0x105c, pci_subsys_8086_266f_1734_105c, 0};
#undef pci_ss_info_1734_105c
#define pci_ss_info_1734_105c pci_ss_info_8086_266f_1734_105c
+static const pciSubsystemInfo pci_ss_info_8086_2770_107b_5048 =
+ {0x107b, 0x5048, pci_subsys_8086_2770_107b_5048, 0};
+#undef pci_ss_info_107b_5048
+#define pci_ss_info_107b_5048 pci_ss_info_8086_2770_107b_5048
static const pciSubsystemInfo pci_ss_info_8086_2770_8086_544e =
{0x8086, 0x544e, pci_subsys_8086_2770_8086_544e, 0};
#undef pci_ss_info_8086_544e
@@ -41834,34 +44228,130 @@ static const pciSubsystemInfo pci_ss_info_8086_2792_1043_1881 =
{0x1043, 0x1881, pci_subsys_8086_2792_1043_1881, 0};
#undef pci_ss_info_1043_1881
#define pci_ss_info_1043_1881 pci_ss_info_8086_2792_1043_1881
+static const pciSubsystemInfo pci_ss_info_8086_27a0_17aa_2017 =
+ {0x17aa, 0x2017, pci_subsys_8086_27a0_17aa_2017, 0};
+#undef pci_ss_info_17aa_2017
+#define pci_ss_info_17aa_2017 pci_ss_info_8086_27a0_17aa_2017
+static const pciSubsystemInfo pci_ss_info_8086_27a2_17aa_201a =
+ {0x17aa, 0x201a, pci_subsys_8086_27a2_17aa_201a, 0};
+#undef pci_ss_info_17aa_201a
+#define pci_ss_info_17aa_201a pci_ss_info_8086_27a2_17aa_201a
+static const pciSubsystemInfo pci_ss_info_8086_27a6_17aa_201a =
+ {0x17aa, 0x201a, pci_subsys_8086_27a6_17aa_201a, 0};
+#undef pci_ss_info_17aa_201a
+#define pci_ss_info_17aa_201a pci_ss_info_8086_27a6_17aa_201a
+static const pciSubsystemInfo pci_ss_info_8086_27b8_107b_5048 =
+ {0x107b, 0x5048, pci_subsys_8086_27b8_107b_5048, 0};
+#undef pci_ss_info_107b_5048
+#define pci_ss_info_107b_5048 pci_ss_info_8086_27b8_107b_5048
static const pciSubsystemInfo pci_ss_info_8086_27b8_8086_544e =
{0x8086, 0x544e, pci_subsys_8086_27b8_8086_544e, 0};
#undef pci_ss_info_8086_544e
#define pci_ss_info_8086_544e pci_ss_info_8086_27b8_8086_544e
+static const pciSubsystemInfo pci_ss_info_8086_27b9_10f7_8338 =
+ {0x10f7, 0x8338, pci_subsys_8086_27b9_10f7_8338, 0};
+#undef pci_ss_info_10f7_8338
+#define pci_ss_info_10f7_8338 pci_ss_info_8086_27b9_10f7_8338
+static const pciSubsystemInfo pci_ss_info_8086_27b9_17aa_2009 =
+ {0x17aa, 0x2009, pci_subsys_8086_27b9_17aa_2009, 0};
+#undef pci_ss_info_17aa_2009
+#define pci_ss_info_17aa_2009 pci_ss_info_8086_27b9_17aa_2009
+static const pciSubsystemInfo pci_ss_info_8086_27c0_107b_5048 =
+ {0x107b, 0x5048, pci_subsys_8086_27c0_107b_5048, 0};
+#undef pci_ss_info_107b_5048
+#define pci_ss_info_107b_5048 pci_ss_info_8086_27c0_107b_5048
static const pciSubsystemInfo pci_ss_info_8086_27c0_8086_544e =
{0x8086, 0x544e, pci_subsys_8086_27c0_8086_544e, 0};
#undef pci_ss_info_8086_544e
#define pci_ss_info_8086_544e pci_ss_info_8086_27c0_8086_544e
+static const pciSubsystemInfo pci_ss_info_8086_27c5_17aa_200d =
+ {0x17aa, 0x200d, pci_subsys_8086_27c5_17aa_200d, 0};
+#undef pci_ss_info_17aa_200d
+#define pci_ss_info_17aa_200d pci_ss_info_8086_27c5_17aa_200d
+static const pciSubsystemInfo pci_ss_info_8086_27c8_107b_5048 =
+ {0x107b, 0x5048, pci_subsys_8086_27c8_107b_5048, 0};
+#undef pci_ss_info_107b_5048
+#define pci_ss_info_107b_5048 pci_ss_info_8086_27c8_107b_5048
+static const pciSubsystemInfo pci_ss_info_8086_27c8_17aa_200a =
+ {0x17aa, 0x200a, pci_subsys_8086_27c8_17aa_200a, 0};
+#undef pci_ss_info_17aa_200a
+#define pci_ss_info_17aa_200a pci_ss_info_8086_27c8_17aa_200a
static const pciSubsystemInfo pci_ss_info_8086_27c8_8086_544e =
{0x8086, 0x544e, pci_subsys_8086_27c8_8086_544e, 0};
#undef pci_ss_info_8086_544e
#define pci_ss_info_8086_544e pci_ss_info_8086_27c8_8086_544e
+static const pciSubsystemInfo pci_ss_info_8086_27c9_107b_5048 =
+ {0x107b, 0x5048, pci_subsys_8086_27c9_107b_5048, 0};
+#undef pci_ss_info_107b_5048
+#define pci_ss_info_107b_5048 pci_ss_info_8086_27c9_107b_5048
+static const pciSubsystemInfo pci_ss_info_8086_27c9_17aa_200a =
+ {0x17aa, 0x200a, pci_subsys_8086_27c9_17aa_200a, 0};
+#undef pci_ss_info_17aa_200a
+#define pci_ss_info_17aa_200a pci_ss_info_8086_27c9_17aa_200a
static const pciSubsystemInfo pci_ss_info_8086_27c9_8086_544e =
{0x8086, 0x544e, pci_subsys_8086_27c9_8086_544e, 0};
#undef pci_ss_info_8086_544e
#define pci_ss_info_8086_544e pci_ss_info_8086_27c9_8086_544e
+static const pciSubsystemInfo pci_ss_info_8086_27ca_107b_5048 =
+ {0x107b, 0x5048, pci_subsys_8086_27ca_107b_5048, 0};
+#undef pci_ss_info_107b_5048
+#define pci_ss_info_107b_5048 pci_ss_info_8086_27ca_107b_5048
+static const pciSubsystemInfo pci_ss_info_8086_27ca_17aa_200a =
+ {0x17aa, 0x200a, pci_subsys_8086_27ca_17aa_200a, 0};
+#undef pci_ss_info_17aa_200a
+#define pci_ss_info_17aa_200a pci_ss_info_8086_27ca_17aa_200a
static const pciSubsystemInfo pci_ss_info_8086_27ca_8086_544e =
{0x8086, 0x544e, pci_subsys_8086_27ca_8086_544e, 0};
#undef pci_ss_info_8086_544e
#define pci_ss_info_8086_544e pci_ss_info_8086_27ca_8086_544e
+static const pciSubsystemInfo pci_ss_info_8086_27cb_107b_5048 =
+ {0x107b, 0x5048, pci_subsys_8086_27cb_107b_5048, 0};
+#undef pci_ss_info_107b_5048
+#define pci_ss_info_107b_5048 pci_ss_info_8086_27cb_107b_5048
+static const pciSubsystemInfo pci_ss_info_8086_27cb_17aa_200a =
+ {0x17aa, 0x200a, pci_subsys_8086_27cb_17aa_200a, 0};
+#undef pci_ss_info_17aa_200a
+#define pci_ss_info_17aa_200a pci_ss_info_8086_27cb_17aa_200a
static const pciSubsystemInfo pci_ss_info_8086_27cb_8086_544e =
{0x8086, 0x544e, pci_subsys_8086_27cb_8086_544e, 0};
#undef pci_ss_info_8086_544e
#define pci_ss_info_8086_544e pci_ss_info_8086_27cb_8086_544e
+static const pciSubsystemInfo pci_ss_info_8086_27cc_17aa_200b =
+ {0x17aa, 0x200b, pci_subsys_8086_27cc_17aa_200b, 0};
+#undef pci_ss_info_17aa_200b
+#define pci_ss_info_17aa_200b pci_ss_info_8086_27cc_17aa_200b
static const pciSubsystemInfo pci_ss_info_8086_27cc_8086_544e =
{0x8086, 0x544e, pci_subsys_8086_27cc_8086_544e, 0};
#undef pci_ss_info_8086_544e
#define pci_ss_info_8086_544e pci_ss_info_8086_27cc_8086_544e
+static const pciSubsystemInfo pci_ss_info_8086_27d8_107b_5048 =
+ {0x107b, 0x5048, pci_subsys_8086_27d8_107b_5048, 0};
+#undef pci_ss_info_107b_5048
+#define pci_ss_info_107b_5048 pci_ss_info_8086_27d8_107b_5048
+static const pciSubsystemInfo pci_ss_info_8086_27d8_10f7_8338 =
+ {0x10f7, 0x8338, pci_subsys_8086_27d8_10f7_8338, 0};
+#undef pci_ss_info_10f7_8338
+#define pci_ss_info_10f7_8338 pci_ss_info_8086_27d8_10f7_8338
+static const pciSubsystemInfo pci_ss_info_8086_27d8_1179_ff31 =
+ {0x1179, 0xff31, pci_subsys_8086_27d8_1179_ff31, 0};
+#undef pci_ss_info_1179_ff31
+#define pci_ss_info_1179_ff31 pci_ss_info_8086_27d8_1179_ff31
+static const pciSubsystemInfo pci_ss_info_8086_27d8_152d_0753 =
+ {0x152d, 0x0753, pci_subsys_8086_27d8_152d_0753, 0};
+#undef pci_ss_info_152d_0753
+#define pci_ss_info_152d_0753 pci_ss_info_8086_27d8_152d_0753
+static const pciSubsystemInfo pci_ss_info_8086_27d8_17aa_2010 =
+ {0x17aa, 0x2010, pci_subsys_8086_27d8_17aa_2010, 0};
+#undef pci_ss_info_17aa_2010
+#define pci_ss_info_17aa_2010 pci_ss_info_8086_27d8_17aa_2010
+static const pciSubsystemInfo pci_ss_info_8086_27da_10f7_8338 =
+ {0x10f7, 0x8338, pci_subsys_8086_27da_10f7_8338, 0};
+#undef pci_ss_info_10f7_8338
+#define pci_ss_info_10f7_8338 pci_ss_info_8086_27da_10f7_8338
+static const pciSubsystemInfo pci_ss_info_8086_27da_17aa_200f =
+ {0x17aa, 0x200f, pci_subsys_8086_27da_17aa_200f, 0};
+#undef pci_ss_info_17aa_200f
+#define pci_ss_info_17aa_200f pci_ss_info_8086_27da_17aa_200f
static const pciSubsystemInfo pci_ss_info_8086_27da_8086_544e =
{0x8086, 0x544e, pci_subsys_8086_27da_8086_544e, 0};
#undef pci_ss_info_8086_544e
@@ -41870,10 +44360,54 @@ static const pciSubsystemInfo pci_ss_info_8086_27dc_8086_308d =
{0x8086, 0x308d, pci_subsys_8086_27dc_8086_308d, 0};
#undef pci_ss_info_8086_308d
#define pci_ss_info_8086_308d pci_ss_info_8086_27dc_8086_308d
+static const pciSubsystemInfo pci_ss_info_8086_27df_107b_5048 =
+ {0x107b, 0x5048, pci_subsys_8086_27df_107b_5048, 0};
+#undef pci_ss_info_107b_5048
+#define pci_ss_info_107b_5048 pci_ss_info_8086_27df_107b_5048
+static const pciSubsystemInfo pci_ss_info_8086_27df_10f7_8338 =
+ {0x10f7, 0x8338, pci_subsys_8086_27df_10f7_8338, 0};
+#undef pci_ss_info_10f7_8338
+#define pci_ss_info_10f7_8338 pci_ss_info_8086_27df_10f7_8338
+static const pciSubsystemInfo pci_ss_info_8086_27df_17aa_200c =
+ {0x17aa, 0x200c, pci_subsys_8086_27df_17aa_200c, 0};
+#undef pci_ss_info_17aa_200c
+#define pci_ss_info_17aa_200c pci_ss_info_8086_27df_17aa_200c
static const pciSubsystemInfo pci_ss_info_8086_27df_8086_544e =
{0x8086, 0x544e, pci_subsys_8086_27df_8086_544e, 0};
#undef pci_ss_info_8086_544e
#define pci_ss_info_8086_544e pci_ss_info_8086_27df_8086_544e
+static const pciSubsystemInfo pci_ss_info_8086_2820_1462_7235 =
+ {0x1462, 0x7235, pci_subsys_8086_2820_1462_7235, 0};
+#undef pci_ss_info_1462_7235
+#define pci_ss_info_1462_7235 pci_ss_info_8086_2820_1462_7235
+static const pciSubsystemInfo pci_ss_info_8086_2825_1462_7235 =
+ {0x1462, 0x7235, pci_subsys_8086_2825_1462_7235, 0};
+#undef pci_ss_info_1462_7235
+#define pci_ss_info_1462_7235 pci_ss_info_8086_2825_1462_7235
+static const pciSubsystemInfo pci_ss_info_8086_2830_1462_7235 =
+ {0x1462, 0x7235, pci_subsys_8086_2830_1462_7235, 0};
+#undef pci_ss_info_1462_7235
+#define pci_ss_info_1462_7235 pci_ss_info_8086_2830_1462_7235
+static const pciSubsystemInfo pci_ss_info_8086_2831_1462_7235 =
+ {0x1462, 0x7235, pci_subsys_8086_2831_1462_7235, 0};
+#undef pci_ss_info_1462_7235
+#define pci_ss_info_1462_7235 pci_ss_info_8086_2831_1462_7235
+static const pciSubsystemInfo pci_ss_info_8086_2834_1462_7235 =
+ {0x1462, 0x7235, pci_subsys_8086_2834_1462_7235, 0};
+#undef pci_ss_info_1462_7235
+#define pci_ss_info_1462_7235 pci_ss_info_8086_2834_1462_7235
+static const pciSubsystemInfo pci_ss_info_8086_2836_1462_7235 =
+ {0x1462, 0x7235, pci_subsys_8086_2836_1462_7235, 0};
+#undef pci_ss_info_1462_7235
+#define pci_ss_info_1462_7235 pci_ss_info_8086_2836_1462_7235
+static const pciSubsystemInfo pci_ss_info_8086_283e_1462_7235 =
+ {0x1462, 0x7235, pci_subsys_8086_283e_1462_7235, 0};
+#undef pci_ss_info_1462_7235
+#define pci_ss_info_1462_7235 pci_ss_info_8086_283e_1462_7235
+static const pciSubsystemInfo pci_ss_info_8086_3200_1775_c200 =
+ {0x1775, 0xc200, pci_subsys_8086_3200_1775_c200, 0};
+#undef pci_ss_info_1775_c200
+#define pci_ss_info_1775_c200 pci_ss_info_8086_3200_1775_c200
static const pciSubsystemInfo pci_ss_info_8086_3340_1025_005a =
{0x1025, 0x005a, pci_subsys_8086_3340_1025_005a, 0};
#undef pci_ss_info_1025_005a
@@ -41886,6 +44420,18 @@ static const pciSubsystemInfo pci_ss_info_8086_3340_103c_0890 =
{0x103c, 0x0890, pci_subsys_8086_3340_103c_0890, 0};
#undef pci_ss_info_103c_0890
#define pci_ss_info_103c_0890 pci_ss_info_8086_3340_103c_0890
+static const pciSubsystemInfo pci_ss_info_8086_3340_103c_08b0 =
+ {0x103c, 0x08b0, pci_subsys_8086_3340_103c_08b0, 0};
+#undef pci_ss_info_103c_08b0
+#define pci_ss_info_103c_08b0 pci_ss_info_8086_3340_103c_08b0
+static const pciSubsystemInfo pci_ss_info_8086_3340_144d_c00c =
+ {0x144d, 0xc00c, pci_subsys_8086_3340_144d_c00c, 0};
+#undef pci_ss_info_144d_c00c
+#define pci_ss_info_144d_c00c pci_ss_info_8086_3340_144d_c00c
+static const pciSubsystemInfo pci_ss_info_8086_3341_144d_c00c =
+ {0x144d, 0xc00c, pci_subsys_8086_3341_144d_c00c, 0};
+#undef pci_ss_info_144d_c00c
+#define pci_ss_info_144d_c00c pci_ss_info_8086_3341_144d_c00c
static const pciSubsystemInfo pci_ss_info_8086_3575_0e11_0030 =
{0x0e11, 0x0030, pci_subsys_8086_3575_0e11_0030, 0};
#undef pci_ss_info_0e11_0030
@@ -41902,6 +44448,10 @@ static const pciSubsystemInfo pci_ss_info_8086_3577_1014_0513 =
{0x1014, 0x0513, pci_subsys_8086_3577_1014_0513, 0};
#undef pci_ss_info_1014_0513
#define pci_ss_info_1014_0513 pci_ss_info_8086_3577_1014_0513
+static const pciSubsystemInfo pci_ss_info_8086_3580_1014_055c =
+ {0x1014, 0x055c, pci_subsys_8086_3580_1014_055c, 0};
+#undef pci_ss_info_1014_055c
+#define pci_ss_info_1014_055c pci_ss_info_8086_3580_1014_055c
static const pciSubsystemInfo pci_ss_info_8086_3580_1028_0139 =
{0x1028, 0x0139, pci_subsys_8086_3580_1028_0139, 0};
#undef pci_ss_info_1028_0139
@@ -41918,6 +44468,14 @@ static const pciSubsystemInfo pci_ss_info_8086_3580_1734_1055 =
{0x1734, 0x1055, pci_subsys_8086_3580_1734_1055, 0};
#undef pci_ss_info_1734_1055
#define pci_ss_info_1734_1055 pci_ss_info_8086_3580_1734_1055
+static const pciSubsystemInfo pci_ss_info_8086_3580_1775_10d0 =
+ {0x1775, 0x10d0, pci_subsys_8086_3580_1775_10d0, 0};
+#undef pci_ss_info_1775_10d0
+#define pci_ss_info_1775_10d0 pci_ss_info_8086_3580_1775_10d0
+static const pciSubsystemInfo pci_ss_info_8086_3580_1775_ce90 =
+ {0x1775, 0xce90, pci_subsys_8086_3580_1775_ce90, 0};
+#undef pci_ss_info_1775_ce90
+#define pci_ss_info_1775_ce90 pci_ss_info_8086_3580_1775_ce90
static const pciSubsystemInfo pci_ss_info_8086_3580_4c53_10b0 =
{0x4c53, 0x10b0, pci_subsys_8086_3580_4c53_10b0, 0};
#undef pci_ss_info_4c53_10b0
@@ -41930,6 +44488,10 @@ static const pciSubsystemInfo pci_ss_info_8086_3581_1734_1055 =
{0x1734, 0x1055, pci_subsys_8086_3581_1734_1055, 0};
#undef pci_ss_info_1734_1055
#define pci_ss_info_1734_1055 pci_ss_info_8086_3581_1734_1055
+static const pciSubsystemInfo pci_ss_info_8086_3582_1014_0562 =
+ {0x1014, 0x0562, pci_subsys_8086_3582_1014_0562, 0};
+#undef pci_ss_info_1014_0562
+#define pci_ss_info_1014_0562 pci_ss_info_8086_3582_1014_0562
static const pciSubsystemInfo pci_ss_info_8086_3582_1028_0139 =
{0x1028, 0x0139, pci_subsys_8086_3582_1028_0139, 0};
#undef pci_ss_info_1028_0139
@@ -41938,6 +44500,14 @@ static const pciSubsystemInfo pci_ss_info_8086_3582_1028_0163 =
{0x1028, 0x0163, pci_subsys_8086_3582_1028_0163, 0};
#undef pci_ss_info_1028_0163
#define pci_ss_info_1028_0163 pci_ss_info_8086_3582_1028_0163
+static const pciSubsystemInfo pci_ss_info_8086_3582_1775_10d0 =
+ {0x1775, 0x10d0, pci_subsys_8086_3582_1775_10d0, 0};
+#undef pci_ss_info_1775_10d0
+#define pci_ss_info_1775_10d0 pci_ss_info_8086_3582_1775_10d0
+static const pciSubsystemInfo pci_ss_info_8086_3582_1775_ce90 =
+ {0x1775, 0xce90, pci_subsys_8086_3582_1775_ce90, 0};
+#undef pci_ss_info_1775_ce90
+#define pci_ss_info_1775_ce90 pci_ss_info_8086_3582_1775_ce90
static const pciSubsystemInfo pci_ss_info_8086_3582_4c53_10b0 =
{0x4c53, 0x10b0, pci_subsys_8086_3582_4c53_10b0, 0};
#undef pci_ss_info_4c53_10b0
@@ -41946,6 +44516,10 @@ static const pciSubsystemInfo pci_ss_info_8086_3582_4c53_10e0 =
{0x4c53, 0x10e0, pci_subsys_8086_3582_4c53_10e0, 0};
#undef pci_ss_info_4c53_10e0
#define pci_ss_info_4c53_10e0 pci_ss_info_8086_3582_4c53_10e0
+static const pciSubsystemInfo pci_ss_info_8086_3584_1014_055d =
+ {0x1014, 0x055d, pci_subsys_8086_3584_1014_055d, 0};
+#undef pci_ss_info_1014_055d
+#define pci_ss_info_1014_055d pci_ss_info_8086_3584_1014_055d
static const pciSubsystemInfo pci_ss_info_8086_3584_1028_0139 =
{0x1028, 0x0139, pci_subsys_8086_3584_1028_0139, 0};
#undef pci_ss_info_1028_0139
@@ -41962,6 +44536,14 @@ static const pciSubsystemInfo pci_ss_info_8086_3584_1734_1055 =
{0x1734, 0x1055, pci_subsys_8086_3584_1734_1055, 0};
#undef pci_ss_info_1734_1055
#define pci_ss_info_1734_1055 pci_ss_info_8086_3584_1734_1055
+static const pciSubsystemInfo pci_ss_info_8086_3584_1775_10d0 =
+ {0x1775, 0x10d0, pci_subsys_8086_3584_1775_10d0, 0};
+#undef pci_ss_info_1775_10d0
+#define pci_ss_info_1775_10d0 pci_ss_info_8086_3584_1775_10d0
+static const pciSubsystemInfo pci_ss_info_8086_3584_1775_ce90 =
+ {0x1775, 0xce90, pci_subsys_8086_3584_1775_ce90, 0};
+#undef pci_ss_info_1775_ce90
+#define pci_ss_info_1775_ce90 pci_ss_info_8086_3584_1775_ce90
static const pciSubsystemInfo pci_ss_info_8086_3584_4c53_10b0 =
{0x4c53, 0x10b0, pci_subsys_8086_3584_4c53_10b0, 0};
#undef pci_ss_info_4c53_10b0
@@ -41970,6 +44552,10 @@ static const pciSubsystemInfo pci_ss_info_8086_3584_4c53_10e0 =
{0x4c53, 0x10e0, pci_subsys_8086_3584_4c53_10e0, 0};
#undef pci_ss_info_4c53_10e0
#define pci_ss_info_4c53_10e0 pci_ss_info_8086_3584_4c53_10e0
+static const pciSubsystemInfo pci_ss_info_8086_3585_1014_055e =
+ {0x1014, 0x055e, pci_subsys_8086_3585_1014_055e, 0};
+#undef pci_ss_info_1014_055e
+#define pci_ss_info_1014_055e pci_ss_info_8086_3585_1014_055e
static const pciSubsystemInfo pci_ss_info_8086_3585_1028_0139 =
{0x1028, 0x0139, pci_subsys_8086_3585_1028_0139, 0};
#undef pci_ss_info_1028_0139
@@ -41986,6 +44572,14 @@ static const pciSubsystemInfo pci_ss_info_8086_3585_1734_1055 =
{0x1734, 0x1055, pci_subsys_8086_3585_1734_1055, 0};
#undef pci_ss_info_1734_1055
#define pci_ss_info_1734_1055 pci_ss_info_8086_3585_1734_1055
+static const pciSubsystemInfo pci_ss_info_8086_3585_1775_10d0 =
+ {0x1775, 0x10d0, pci_subsys_8086_3585_1775_10d0, 0};
+#undef pci_ss_info_1775_10d0
+#define pci_ss_info_1775_10d0 pci_ss_info_8086_3585_1775_10d0
+static const pciSubsystemInfo pci_ss_info_8086_3585_1775_ce90 =
+ {0x1775, 0xce90, pci_subsys_8086_3585_1775_ce90, 0};
+#undef pci_ss_info_1775_ce90
+#define pci_ss_info_1775_ce90 pci_ss_info_8086_3585_1775_ce90
static const pciSubsystemInfo pci_ss_info_8086_3585_4c53_10b0 =
{0x4c53, 0x10b0, pci_subsys_8086_3585_4c53_10b0, 0};
#undef pci_ss_info_4c53_10b0
@@ -42202,6 +44796,14 @@ static const pciSubsystemInfo pci_ss_info_8086_8500_1993_0def =
{0x1993, 0x0def, pci_subsys_8086_8500_1993_0def, 0};
#undef pci_ss_info_1993_0def
#define pci_ss_info_1993_0def pci_ss_info_8086_8500_1993_0def
+static const pciSubsystemInfo pci_ss_info_8086_b555_12c7_5005 =
+ {0x12c7, 0x5005, pci_subsys_8086_b555_12c7_5005, 0};
+#undef pci_ss_info_12c7_5005
+#define pci_ss_info_12c7_5005 pci_ss_info_8086_b555_12c7_5005
+static const pciSubsystemInfo pci_ss_info_8086_b555_12c7_5006 =
+ {0x12c7, 0x5006, pci_subsys_8086_b555_12c7_5006, 0};
+#undef pci_ss_info_12c7_5006
+#define pci_ss_info_12c7_5006 pci_ss_info_8086_b555_12c7_5006
static const pciSubsystemInfo pci_ss_info_8086_b555_12d9_000a =
{0x12d9, 0x000a, pci_subsys_8086_b555_12d9_000a, 0};
#undef pci_ss_info_12d9_000a
@@ -42607,6 +45209,22 @@ static const pciSubsystemInfo pci_ss_info_9005_0285_9005_029a =
{0x9005, 0x029a, pci_subsys_9005_0285_9005_029a, 0};
#undef pci_ss_info_9005_029a
#define pci_ss_info_9005_029a pci_ss_info_9005_0285_9005_029a
+static const pciSubsystemInfo pci_ss_info_9005_0285_9005_02b5 =
+ {0x9005, 0x02b5, pci_subsys_9005_0285_9005_02b5, 0};
+#undef pci_ss_info_9005_02b5
+#define pci_ss_info_9005_02b5 pci_ss_info_9005_0285_9005_02b5
+static const pciSubsystemInfo pci_ss_info_9005_0285_9005_02b6 =
+ {0x9005, 0x02b6, pci_subsys_9005_0285_9005_02b6, 0};
+#undef pci_ss_info_9005_02b6
+#define pci_ss_info_9005_02b6 pci_ss_info_9005_0285_9005_02b6
+static const pciSubsystemInfo pci_ss_info_9005_0285_9005_02b7 =
+ {0x9005, 0x02b7, pci_subsys_9005_0285_9005_02b7, 0};
+#undef pci_ss_info_9005_02b7
+#define pci_ss_info_9005_02b7 pci_ss_info_9005_0285_9005_02b7
+static const pciSubsystemInfo pci_ss_info_9005_0286_1014_034d =
+ {0x1014, 0x034d, pci_subsys_9005_0286_1014_034d, 0};
+#undef pci_ss_info_1014_034d
+#define pci_ss_info_1014_034d pci_ss_info_9005_0286_1014_034d
static const pciSubsystemInfo pci_ss_info_9005_0286_1014_9540 =
{0x1014, 0x9540, pci_subsys_9005_0286_1014_9540, 0};
#undef pci_ss_info_1014_9540
@@ -42687,10 +45305,50 @@ static const pciSubsystemInfo pci_ss_info_9005_0286_9005_02aa =
{0x9005, 0x02aa, pci_subsys_9005_0286_9005_02aa, 0};
#undef pci_ss_info_9005_02aa
#define pci_ss_info_9005_02aa pci_ss_info_9005_0286_9005_02aa
+static const pciSubsystemInfo pci_ss_info_9005_0286_9005_02ac =
+ {0x9005, 0x02ac, pci_subsys_9005_0286_9005_02ac, 0};
+#undef pci_ss_info_9005_02ac
+#define pci_ss_info_9005_02ac pci_ss_info_9005_0286_9005_02ac
+static const pciSubsystemInfo pci_ss_info_9005_0286_9005_02b3 =
+ {0x9005, 0x02b3, pci_subsys_9005_0286_9005_02b3, 0};
+#undef pci_ss_info_9005_02b3
+#define pci_ss_info_9005_02b3 pci_ss_info_9005_0286_9005_02b3
+static const pciSubsystemInfo pci_ss_info_9005_0286_9005_02b4 =
+ {0x9005, 0x02b4, pci_subsys_9005_0286_9005_02b4, 0};
+#undef pci_ss_info_9005_02b4
+#define pci_ss_info_9005_02b4 pci_ss_info_9005_0286_9005_02b4
static const pciSubsystemInfo pci_ss_info_9005_0286_9005_0800 =
{0x9005, 0x0800, pci_subsys_9005_0286_9005_0800, 0};
#undef pci_ss_info_9005_0800
#define pci_ss_info_9005_0800 pci_ss_info_9005_0286_9005_0800
+static const pciSubsystemInfo pci_ss_info_9005_0410_9005_0410 =
+ {0x9005, 0x0410, pci_subsys_9005_0410_9005_0410, 0};
+#undef pci_ss_info_9005_0410
+#define pci_ss_info_9005_0410 pci_ss_info_9005_0410_9005_0410
+static const pciSubsystemInfo pci_ss_info_9005_0410_9005_0411 =
+ {0x9005, 0x0411, pci_subsys_9005_0410_9005_0411, 0};
+#undef pci_ss_info_9005_0411
+#define pci_ss_info_9005_0411 pci_ss_info_9005_0410_9005_0411
+static const pciSubsystemInfo pci_ss_info_9005_0412_9005_0412 =
+ {0x9005, 0x0412, pci_subsys_9005_0412_9005_0412, 0};
+#undef pci_ss_info_9005_0412
+#define pci_ss_info_9005_0412 pci_ss_info_9005_0412_9005_0412
+static const pciSubsystemInfo pci_ss_info_9005_0412_9005_0413 =
+ {0x9005, 0x0413, pci_subsys_9005_0412_9005_0413, 0};
+#undef pci_ss_info_9005_0413
+#define pci_ss_info_9005_0413 pci_ss_info_9005_0412_9005_0413
+static const pciSubsystemInfo pci_ss_info_9005_041f_9005_041f =
+ {0x9005, 0x041f, pci_subsys_9005_041f_9005_041f, 0};
+#undef pci_ss_info_9005_041f
+#define pci_ss_info_9005_041f pci_ss_info_9005_041f_9005_041f
+static const pciSubsystemInfo pci_ss_info_9005_0430_9005_0430 =
+ {0x9005, 0x0430, pci_subsys_9005_0430_9005_0430, 0};
+#undef pci_ss_info_9005_0430
+#define pci_ss_info_9005_0430 pci_ss_info_9005_0430_9005_0430
+static const pciSubsystemInfo pci_ss_info_9005_0432_9005_0432 =
+ {0x9005, 0x0432, pci_subsys_9005_0432_9005_0432, 0};
+#undef pci_ss_info_9005_0432
+#define pci_ss_info_9005_0432 pci_ss_info_9005_0432_9005_0432
static const pciSubsystemInfo pci_ss_info_9005_0500_1014_02c1 =
{0x1014, 0x02c1, pci_subsys_9005_0500_1014_02c1, 0};
#undef pci_ss_info_1014_02c1
@@ -42778,8 +45436,10 @@ static const pciSubsystemInfo pci_ss_info_e159_0001_8086_0003 =
#define pci_ss_list_045e_006e NULL
#define pci_ss_list_045e_00c2 NULL
#define pci_ss_list_04cf_8818 NULL
+#define pci_ss_list_050d_001a NULL
#define pci_ss_list_050d_0109 NULL
#define pci_ss_list_050d_7050 NULL
+#define pci_ss_list_05a9_8519 NULL
#define pci_ss_list_05e3_0701 NULL
#define pci_ss_list_066f_3410 NULL
#define pci_ss_list_066f_3500 NULL
@@ -42787,6 +45447,7 @@ static const pciSubsystemInfo pci_ss_info_e159_0001_8086_0003 =
#define pci_ss_list_0675_1702 NULL
#define pci_ss_list_0675_1703 NULL
#define pci_ss_list_0675_1704 NULL
+#define pci_ss_list_067b_2303 NULL
#define pci_ss_list_067b_3507 NULL
#define pci_ss_list_09c1_0704 NULL
#define pci_ss_list_0b0b_0105 NULL
@@ -42795,7 +45456,10 @@ static const pciSubsystemInfo pci_ss_info_e159_0001_8086_0003 =
#define pci_ss_list_0b0b_0405 NULL
#define pci_ss_list_0b0b_0505 NULL
#define pci_ss_list_0b0b_0506 NULL
+#define pci_ss_list_0b0b_0605 NULL
+#define pci_ss_list_0b0b_0705 NULL
#define pci_ss_list_0b49_064f NULL
+#define pci_ss_list_0ccd_0038 NULL
#define pci_ss_list_0e11_0001 NULL
#define pci_ss_list_0e11_0002 NULL
static const pciSubsystemInfo *pci_ss_list_0e11_0046[] = {
@@ -42928,6 +45592,7 @@ static const pciSubsystemInfo *pci_ss_list_1000_0006[] = {
NULL
};
static const pciSubsystemInfo *pci_ss_list_1000_000a[] = {
+ &pci_ss_info_1000_000a_0e11_b143,
&pci_ss_info_1000_000a_1000_1000,
NULL
};
@@ -42953,6 +45618,8 @@ static const pciSubsystemInfo *pci_ss_list_1000_000f[] = {
&pci_ss_info_1000_000f_1000_1010,
&pci_ss_info_1000_000f_1000_1020,
&pci_ss_info_1000_000f_1092_8760,
+ &pci_ss_info_1000_000f_1775_10d0,
+ &pci_ss_info_1000_000f_1775_10d1,
&pci_ss_info_1000_000f_1de1_3904,
&pci_ss_info_1000_000f_4c53_1000,
&pci_ss_info_1000_000f_4c53_1050,
@@ -42974,12 +45641,15 @@ static const pciSubsystemInfo *pci_ss_list_1000_0013[] = {
};
static const pciSubsystemInfo *pci_ss_list_1000_0020[] = {
&pci_ss_info_1000_0020_1000_1000,
+ &pci_ss_info_1000_0020_107b_1040,
&pci_ss_info_1000_0020_1de1_1020,
NULL
};
static const pciSubsystemInfo *pci_ss_list_1000_0021[] = {
&pci_ss_info_1000_0021_1000_1000,
&pci_ss_info_1000_0021_1000_1010,
+ &pci_ss_info_1000_0021_103c_1330,
+ &pci_ss_info_1000_0021_103c_1340,
&pci_ss_info_1000_0021_124b_1070,
&pci_ss_info_1000_0021_4c53_1080,
&pci_ss_info_1000_0021_4c53_1300,
@@ -42993,6 +45663,7 @@ static const pciSubsystemInfo *pci_ss_list_1000_0030[] = {
&pci_ss_info_1000_0030_1028_016c,
&pci_ss_info_1000_0030_1028_0183,
&pci_ss_info_1000_0030_1028_1010,
+ &pci_ss_info_1000_0030_103c_12c5,
&pci_ss_info_1000_0030_124b_1170,
&pci_ss_info_1000_0030_1734_1052,
NULL
@@ -43016,7 +45687,13 @@ static const pciSubsystemInfo *pci_ss_list_1000_0040[] = {
#define pci_ss_list_1000_005a NULL
#define pci_ss_list_1000_005c NULL
#define pci_ss_list_1000_005e NULL
-#define pci_ss_list_1000_0060 NULL
+static const pciSubsystemInfo *pci_ss_list_1000_0060[] = {
+ &pci_ss_info_1000_0060_1028_1f0a,
+ &pci_ss_info_1000_0060_1028_1f0b,
+ &pci_ss_info_1000_0060_1028_1f0c,
+ &pci_ss_info_1000_0060_1028_1f0d,
+ NULL
+};
static const pciSubsystemInfo *pci_ss_list_1000_0062[] = {
&pci_ss_info_1000_0062_1000_0062,
NULL
@@ -43054,6 +45731,30 @@ static const pciSubsystemInfo *pci_ss_list_1000_0409[] = {
&pci_ss_info_1000_0409_8086_3499,
NULL
};
+static const pciSubsystemInfo *pci_ss_list_1000_0411[] = {
+ &pci_ss_info_1000_0411_1000_1001,
+ &pci_ss_info_1000_0411_1000_1002,
+ &pci_ss_info_1000_0411_1000_1003,
+ &pci_ss_info_1000_0411_1000_1004,
+ &pci_ss_info_1000_0411_1000_100c,
+ &pci_ss_info_1000_0411_1000_100d,
+ &pci_ss_info_1000_0411_1000_2004,
+ &pci_ss_info_1000_0411_1000_2005,
+ &pci_ss_info_1000_0411_1033_8287,
+ &pci_ss_info_1000_0411_1054_3016,
+ &pci_ss_info_1000_0411_1734_1081,
+ &pci_ss_info_1000_0411_1734_10a3,
+ &pci_ss_info_1000_0411_8086_1001,
+ &pci_ss_info_1000_0411_8086_1003,
+ &pci_ss_info_1000_0411_8086_3500,
+ &pci_ss_info_1000_0411_8086_3501,
+ &pci_ss_info_1000_0411_8086_3504,
+ NULL
+};
+static const pciSubsystemInfo *pci_ss_list_1000_0413[] = {
+ &pci_ss_info_1000_0413_1000_1005,
+ NULL
+};
#define pci_ss_list_1000_0621 NULL
static const pciSubsystemInfo *pci_ss_list_1000_0622[] = {
&pci_ss_info_1000_0622_1000_1020,
@@ -43151,6 +45852,7 @@ static const pciSubsystemInfo *pci_ss_list_1002_4152[] = {
NULL
};
static const pciSubsystemInfo *pci_ss_list_1002_4153[] = {
+ &pci_ss_info_1002_4153_1043_010c,
&pci_ss_info_1002_4153_1462_932c,
NULL
};
@@ -43186,7 +45888,10 @@ static const pciSubsystemInfo *pci_ss_list_1002_4172[] = {
&pci_ss_info_1002_4172_1787_4003,
NULL
};
-#define pci_ss_list_1002_4173 NULL
+static const pciSubsystemInfo *pci_ss_list_1002_4173[] = {
+ &pci_ss_info_1002_4173_1043_010d,
+ NULL
+};
#define pci_ss_list_1002_4237 NULL
static const pciSubsystemInfo *pci_ss_list_1002_4242[] = {
&pci_ss_info_1002_4242_1002_02aa,
@@ -43346,6 +46051,7 @@ static const pciSubsystemInfo *pci_ss_list_1002_4752[] = {
&pci_ss_info_1002_4752_1028_00d9,
&pci_ss_info_1002_4752_1028_0134,
&pci_ss_info_1002_4752_103c_10e1,
+ &pci_ss_info_1002_4752_107b_6400,
&pci_ss_info_1002_4752_1734_007a,
&pci_ss_info_1002_4752_8086_3411,
&pci_ss_info_1002_4752_8086_3427,
@@ -43642,12 +46348,14 @@ static const pciSubsystemInfo *pci_ss_list_1002_5159[] = {
&pci_ss_info_1002_5159_1014_029a,
&pci_ss_info_1002_5159_1014_02c8,
&pci_ss_info_1002_5159_1028_019a,
+ &pci_ss_info_1002_5159_103c_1292,
&pci_ss_info_1002_5159_1458_4002,
&pci_ss_info_1002_5159_148c_2003,
&pci_ss_info_1002_5159_148c_2023,
&pci_ss_info_1002_5159_174b_7112,
&pci_ss_info_1002_5159_174b_7c28,
&pci_ss_info_1002_5159_1787_0202,
+ &pci_ss_info_1002_5159_17ee_1001,
NULL
};
#define pci_ss_list_1002_515a NULL
@@ -43733,9 +46441,11 @@ static const pciSubsystemInfo *pci_ss_list_1002_5452[] = {
#define pci_ss_list_1002_5551 NULL
#define pci_ss_list_1002_5552 NULL
#define pci_ss_list_1002_5554 NULL
+#define pci_ss_list_1002_5569 NULL
#define pci_ss_list_1002_556b NULL
#define pci_ss_list_1002_556d NULL
#define pci_ss_list_1002_556f NULL
+#define pci_ss_list_1002_5571 NULL
#define pci_ss_list_1002_564a NULL
#define pci_ss_list_1002_564b NULL
#define pci_ss_list_1002_564f NULL
@@ -43811,6 +46521,7 @@ static const pciSubsystemInfo *pci_ss_list_1002_5964[] = {
#define pci_ss_list_1002_5969 NULL
#define pci_ss_list_1002_5974 NULL
#define pci_ss_list_1002_5975 NULL
+#define pci_ss_list_1002_5a33 NULL
#define pci_ss_list_1002_5a34 NULL
#define pci_ss_list_1002_5a36 NULL
#define pci_ss_list_1002_5a38 NULL
@@ -43889,18 +46600,28 @@ static const pciSubsystemInfo *pci_ss_list_1002_5e6d[] = {
#define pci_ss_list_1002_700f NULL
#define pci_ss_list_1002_7010 NULL
#define pci_ss_list_1002_7100 NULL
+#define pci_ss_list_1002_7102 NULL
+#define pci_ss_list_1002_7103 NULL
+#define pci_ss_list_1002_7104 NULL
#define pci_ss_list_1002_7105 NULL
+#define pci_ss_list_1002_7106 NULL
+#define pci_ss_list_1002_7108 NULL
static const pciSubsystemInfo *pci_ss_list_1002_7109[] = {
&pci_ss_info_1002_7109_1002_0322,
&pci_ss_info_1002_7109_1002_0d02,
NULL
};
+#define pci_ss_list_1002_710a NULL
+#define pci_ss_list_1002_710b NULL
+#define pci_ss_list_1002_710c NULL
#define pci_ss_list_1002_7120 NULL
+#define pci_ss_list_1002_7124 NULL
static const pciSubsystemInfo *pci_ss_list_1002_7129[] = {
&pci_ss_info_1002_7129_1002_0323,
&pci_ss_info_1002_7129_1002_0d03,
NULL
};
+#define pci_ss_list_1002_7140 NULL
static const pciSubsystemInfo *pci_ss_list_1002_7142[] = {
&pci_ss_info_1002_7142_1002_0322,
NULL
@@ -43914,6 +46635,10 @@ static const pciSubsystemInfo *pci_ss_list_1002_7146[] = {
#define pci_ss_list_1002_714a NULL
#define pci_ss_list_1002_714b NULL
#define pci_ss_list_1002_714c NULL
+#define pci_ss_list_1002_714d NULL
+#define pci_ss_list_1002_714e NULL
+#define pci_ss_list_1002_7152 NULL
+#define pci_ss_list_1002_715e NULL
static const pciSubsystemInfo *pci_ss_list_1002_7162[] = {
&pci_ss_info_1002_7162_1002_0323,
NULL
@@ -43922,12 +46647,42 @@ static const pciSubsystemInfo *pci_ss_list_1002_7166[] = {
&pci_ss_info_1002_7166_1002_0323,
NULL
};
+#define pci_ss_list_1002_7172 NULL
+#define pci_ss_list_1002_7180 NULL
+#define pci_ss_list_1002_7181 NULL
+#define pci_ss_list_1002_71a0 NULL
+#define pci_ss_list_1002_71a1 NULL
#define pci_ss_list_1002_71c0 NULL
#define pci_ss_list_1002_71c2 NULL
-#define pci_ss_list_1002_71c4 NULL
+static const pciSubsystemInfo *pci_ss_list_1002_71c4[] = {
+ &pci_ss_info_1002_71c4_17aa_2007,
+ NULL
+};
#define pci_ss_list_1002_71c5 NULL
+#define pci_ss_list_1002_71c6 NULL
+#define pci_ss_list_1002_71ce NULL
+#define pci_ss_list_1002_71d5 NULL
+#define pci_ss_list_1002_71d6 NULL
+#define pci_ss_list_1002_71de NULL
#define pci_ss_list_1002_71e0 NULL
#define pci_ss_list_1002_71e2 NULL
+#define pci_ss_list_1002_7240 NULL
+#define pci_ss_list_1002_7241 NULL
+#define pci_ss_list_1002_7242 NULL
+#define pci_ss_list_1002_7243 NULL
+#define pci_ss_list_1002_7244 NULL
+#define pci_ss_list_1002_7245 NULL
+#define pci_ss_list_1002_7246 NULL
+#define pci_ss_list_1002_7247 NULL
+#define pci_ss_list_1002_7248 NULL
+#define pci_ss_list_1002_7249 NULL
+#define pci_ss_list_1002_724a NULL
+#define pci_ss_list_1002_724b NULL
+#define pci_ss_list_1002_724c NULL
+#define pci_ss_list_1002_724d NULL
+#define pci_ss_list_1002_724e NULL
+#define pci_ss_list_1002_7269 NULL
+#define pci_ss_list_1002_726e NULL
#define pci_ss_list_1002_7833 NULL
#define pci_ss_list_1002_7834 NULL
#define pci_ss_list_1002_7835 NULL
@@ -44070,6 +46825,7 @@ static const pciSubsystemInfo *pci_ss_list_1011_0019[] = {
&pci_ss_info_1011_0019_1025_0315,
&pci_ss_info_1011_0019_1033_800c,
&pci_ss_info_1011_0019_1033_800d,
+ &pci_ss_info_1011_0019_103c_125a,
&pci_ss_info_1011_0019_108d_0016,
&pci_ss_info_1011_0019_108d_0017,
&pci_ss_info_1011_0019_10b8_2005,
@@ -44097,6 +46853,9 @@ static const pciSubsystemInfo *pci_ss_list_1011_0019[] = {
&pci_ss_info_1011_0019_1385_2100,
&pci_ss_info_1011_0019_1395_0001,
&pci_ss_info_1011_0019_13d1_ab01,
+ &pci_ss_info_1011_0019_1498_000a,
+ &pci_ss_info_1011_0019_1498_000b,
+ &pci_ss_info_1011_0019_1498_000c,
&pci_ss_info_1011_0019_14cb_0100,
&pci_ss_info_1011_0019_8086_0001,
NULL
@@ -44172,9 +46931,11 @@ static const pciSubsystemInfo *pci_ss_list_1013_6001[] = {
static const pciSubsystemInfo *pci_ss_list_1013_6003[] = {
&pci_ss_info_1013_6003_1013_4280,
&pci_ss_info_1013_6003_1014_0153,
+ &pci_ss_info_1013_6003_153b_112e,
&pci_ss_info_1013_6003_153b_1136,
&pci_ss_info_1013_6003_1681_0050,
&pci_ss_info_1013_6003_1681_a011,
+ &pci_ss_info_1013_6003_5053_3357,
NULL
};
#define pci_ss_list_1013_6004 NULL
@@ -44238,6 +46999,7 @@ static const pciSubsystemInfo *pci_ss_list_1014_003e[] = {
#define pci_ss_list_1014_0053 NULL
#define pci_ss_list_1014_0054 NULL
#define pci_ss_list_1014_0057 NULL
+#define pci_ss_list_1014_0058 NULL
#define pci_ss_list_1014_005c NULL
#define pci_ss_list_1014_005e NULL
#define pci_ss_list_1014_007c NULL
@@ -44330,6 +47092,7 @@ static const pciSubsystemInfo *pci_ss_list_1014_02bd[] = {
NULL
};
#define pci_ss_list_1014_0302 NULL
+#define pci_ss_list_1014_0308 NULL
#define pci_ss_list_1014_0314 NULL
#define pci_ss_list_1014_3022 NULL
#define pci_ss_list_1014_4022 NULL
@@ -44398,6 +47161,7 @@ static const pciSubsystemInfo *pci_ss_list_1022_2000[] = {
&pci_ss_info_1022_2000_1259_2701,
&pci_ss_info_1022_2000_1259_2702,
&pci_ss_info_1022_2000_1259_2703,
+ &pci_ss_info_1022_2000_1259_2704,
&pci_ss_info_1022_2000_4c53_1000,
&pci_ss_info_1022_2000_4c53_1010,
&pci_ss_info_1022_2000_4c53_1020,
@@ -44566,6 +47330,7 @@ static const pciSubsystemInfo *pci_ss_list_1023_9880[] = {
};
#define pci_ss_list_1023_9910 NULL
#define pci_ss_list_1023_9930 NULL
+#define pci_ss_list_1025_0090 NULL
#define pci_ss_list_1025_1435 NULL
#define pci_ss_list_1025_1445 NULL
#define pci_ss_list_1025_1449 NULL
@@ -44855,6 +47620,9 @@ static const pciSubsystemInfo *pci_ss_list_102b_2538[] = {
NULL
};
#define pci_ss_list_102b_4536 NULL
+#define pci_ss_list_102b_4cdc NULL
+#define pci_ss_list_102b_4fc5 NULL
+#define pci_ss_list_102b_5e10 NULL
#define pci_ss_list_102b_6573 NULL
#define pci_ss_list_102c_00b8 NULL
static const pciSubsystemInfo *pci_ss_list_102c_00c0[] = {
@@ -44979,6 +47747,7 @@ static const pciSubsystemInfo *pci_ss_list_1033_00e0[] = {
#define pci_ss_list_1033_00f3 NULL
#define pci_ss_list_1033_010c NULL
#define pci_ss_list_1033_0125 NULL
+#define pci_ss_list_1033_013a NULL
#define pci_ss_list_1036_0000 NULL
#define pci_ss_list_1039_0001 NULL
#define pci_ss_list_1039_0002 NULL
@@ -44993,6 +47762,7 @@ static const pciSubsystemInfo *pci_ss_list_1033_00e0[] = {
#define pci_ss_list_1039_0180 NULL
#define pci_ss_list_1039_0181 NULL
#define pci_ss_list_1039_0182 NULL
+#define pci_ss_list_1039_0186 NULL
#define pci_ss_list_1039_0190 NULL
#define pci_ss_list_1039_0191 NULL
static const pciSubsystemInfo *pci_ss_list_1039_0200[] = {
@@ -45028,6 +47798,7 @@ static const pciSubsystemInfo *pci_ss_list_1039_0300[] = {
#define pci_ss_list_1039_0655 NULL
#define pci_ss_list_1039_0660 NULL
#define pci_ss_list_1039_0661 NULL
+#define pci_ss_list_1039_0662 NULL
#define pci_ss_list_1039_0730 NULL
#define pci_ss_list_1039_0733 NULL
#define pci_ss_list_1039_0735 NULL
@@ -45049,6 +47820,13 @@ static const pciSubsystemInfo *pci_ss_list_1039_0900[] = {
#define pci_ss_list_1039_0963 NULL
#define pci_ss_list_1039_0964 NULL
#define pci_ss_list_1039_0965 NULL
+#define pci_ss_list_1039_0966 NULL
+#define pci_ss_list_1039_0968 NULL
+#define pci_ss_list_1039_1180 NULL
+#define pci_ss_list_1039_1182 NULL
+#define pci_ss_list_1039_1183 NULL
+#define pci_ss_list_1039_1184 NULL
+#define pci_ss_list_1039_1185 NULL
#define pci_ss_list_1039_3602 NULL
#define pci_ss_list_1039_5107 NULL
#define pci_ss_list_1039_5300 NULL
@@ -45095,6 +47873,8 @@ static const pciSubsystemInfo *pci_ss_list_1039_6330[] = {
&pci_ss_info_1039_6330_1039_6330,
NULL
};
+#define pci_ss_list_1039_6350 NULL
+#define pci_ss_list_1039_6351 NULL
static const pciSubsystemInfo *pci_ss_list_1039_7001[] = {
&pci_ss_info_1039_7001_1019_0a14,
&pci_ss_info_1039_7001_1039_7000,
@@ -45141,6 +47921,7 @@ static const pciSubsystemInfo *pci_ss_list_1039_7018[] = {
NULL
};
#define pci_ss_list_1039_7019 NULL
+#define pci_ss_list_1039_7502 NULL
#define pci_ss_list_103c_002a NULL
#define pci_ss_list_103c_1005 NULL
#define pci_ss_list_103c_1008 NULL
@@ -45193,18 +47974,30 @@ static const pciSubsystemInfo *pci_ss_list_103c_1048[] = {
#define pci_ss_list_103c_1229 NULL
#define pci_ss_list_103c_122a NULL
#define pci_ss_list_103c_122e NULL
+#define pci_ss_list_103c_127b NULL
#define pci_ss_list_103c_127c NULL
#define pci_ss_list_103c_1290 NULL
#define pci_ss_list_103c_1291 NULL
#define pci_ss_list_103c_12b4 NULL
+#define pci_ss_list_103c_12eb NULL
+#define pci_ss_list_103c_12ec NULL
+#define pci_ss_list_103c_12ee NULL
#define pci_ss_list_103c_12f8 NULL
#define pci_ss_list_103c_12fa NULL
#define pci_ss_list_103c_2910 NULL
#define pci_ss_list_103c_2925 NULL
#define pci_ss_list_103c_3080 NULL
#define pci_ss_list_103c_3085 NULL
-#define pci_ss_list_103c_3220 NULL
+static const pciSubsystemInfo *pci_ss_list_103c_3220[] = {
+ &pci_ss_info_103c_3220_103c_3225,
+ NULL
+};
#define pci_ss_list_103c_3230 NULL
+#define pci_ss_list_103c_4030 NULL
+#define pci_ss_list_103c_4031 NULL
+#define pci_ss_list_103c_4037 NULL
+#define pci_ss_list_103c_403b NULL
+#define pci_ss_list_103c_60e8 NULL
#define pci_ss_list_1042_1000 NULL
#define pci_ss_list_1042_1001 NULL
#define pci_ss_list_1042_3000 NULL
@@ -45222,12 +48015,14 @@ static const pciSubsystemInfo *pci_ss_list_1043_0675[] = {
#define pci_ss_list_1043_4021 NULL
#define pci_ss_list_1043_4057 NULL
#define pci_ss_list_1043_8043 NULL
+#define pci_ss_list_1043_8047 NULL
#define pci_ss_list_1043_807b NULL
#define pci_ss_list_1043_8095 NULL
#define pci_ss_list_1043_80ac NULL
#define pci_ss_list_1043_80bb NULL
#define pci_ss_list_1043_80c5 NULL
#define pci_ss_list_1043_80df NULL
+#define pci_ss_list_1043_815a NULL
#define pci_ss_list_1043_8187 NULL
#define pci_ss_list_1043_8188 NULL
#endif
@@ -45319,7 +48114,10 @@ static const pciSubsystemInfo *pci_ss_list_1048_8901[] = {
#define pci_ss_list_104a_0210 NULL
#define pci_ss_list_104a_021a NULL
#define pci_ss_list_104a_021b NULL
-#define pci_ss_list_104a_0500 NULL
+static const pciSubsystemInfo *pci_ss_list_104a_0500[] = {
+ &pci_ss_info_104a_0500_104a_0500,
+ NULL
+};
#define pci_ss_list_104a_0564 NULL
#define pci_ss_list_104a_0981 NULL
#define pci_ss_list_104a_1746 NULL
@@ -45380,6 +48178,7 @@ static const pciSubsystemInfo *pci_ss_list_104c_8019[] = {
};
static const pciSubsystemInfo *pci_ss_list_104c_8020[] = {
&pci_ss_info_104c_8020_11bd_000f,
+ &pci_ss_info_104c_8020_11bd_001c,
NULL
};
static const pciSubsystemInfo *pci_ss_list_104c_8021[] = {
@@ -45450,8 +48249,26 @@ static const pciSubsystemInfo *pci_ss_list_104c_8035[] = {
};
#define pci_ss_list_104c_8036 NULL
#define pci_ss_list_104c_8038 NULL
-#define pci_ss_list_104c_8039 NULL
-#define pci_ss_list_104c_803b NULL
+static const pciSubsystemInfo *pci_ss_list_104c_8039[] = {
+ &pci_ss_info_104c_8039_103c_309f,
+ NULL
+};
+static const pciSubsystemInfo *pci_ss_list_104c_803a[] = {
+ &pci_ss_info_104c_803a_103c_309f,
+ NULL
+};
+static const pciSubsystemInfo *pci_ss_list_104c_803b[] = {
+ &pci_ss_info_104c_803b_103c_309f,
+ NULL
+};
+static const pciSubsystemInfo *pci_ss_list_104c_803c[] = {
+ &pci_ss_info_104c_803c_103c_309f,
+ NULL
+};
+static const pciSubsystemInfo *pci_ss_list_104c_803d[] = {
+ &pci_ss_info_104c_803d_103c_309f,
+ NULL
+};
#define pci_ss_list_104c_8201 NULL
static const pciSubsystemInfo *pci_ss_list_104c_8204[] = {
&pci_ss_info_104c_8204_1028_0139,
@@ -45557,13 +48374,18 @@ static const pciSubsystemInfo *pci_ss_list_104c_ac51[] = {
};
#define pci_ss_list_104c_ac52 NULL
#define pci_ss_list_104c_ac53 NULL
-#define pci_ss_list_104c_ac54 NULL
+static const pciSubsystemInfo *pci_ss_list_104c_ac54[] = {
+ &pci_ss_info_104c_ac54_103c_08b0,
+ NULL
+};
static const pciSubsystemInfo *pci_ss_list_104c_ac55[] = {
&pci_ss_info_104c_ac55_1014_0512,
NULL
};
static const pciSubsystemInfo *pci_ss_list_104c_ac56[] = {
+ &pci_ss_info_104c_ac56_1014_0512,
&pci_ss_info_104c_ac56_1014_0528,
+ &pci_ss_info_104c_ac56_17aa_2012,
NULL
};
static const pciSubsystemInfo *pci_ss_list_104c_ac60[] = {
@@ -45625,6 +48447,7 @@ static const pciSubsystemInfo *pci_ss_list_1050_6692[] = {
#define pci_ss_list_1057_0006 NULL
#define pci_ss_list_1057_0008 NULL
#define pci_ss_list_1057_0009 NULL
+#define pci_ss_list_1057_0012 NULL
#define pci_ss_list_1057_0100 NULL
#define pci_ss_list_1057_0431 NULL
static const pciSubsystemInfo *pci_ss_list_1057_1801[] = {
@@ -45656,6 +48479,7 @@ static const pciSubsystemInfo *pci_ss_list_1057_1801[] = {
};
#define pci_ss_list_1057_18c0 NULL
#define pci_ss_list_1057_18c1 NULL
+#define pci_ss_list_1057_3055 NULL
static const pciSubsystemInfo *pci_ss_list_1057_3410[] = {
&pci_ss_info_1057_3410_ecc0_0050,
&pci_ss_info_1057_3410_ecc0_0051,
@@ -45739,6 +48563,7 @@ static const pciSubsystemInfo *pci_ss_list_105a_3376[] = {
#define pci_ss_list_105a_3d18 NULL
#define pci_ss_list_105a_3d73 NULL
#define pci_ss_list_105a_3d75 NULL
+#define pci_ss_list_105a_4302 NULL
static const pciSubsystemInfo *pci_ss_list_105a_4d30[] = {
&pci_ss_info_105a_4d30_105a_4d33,
&pci_ss_info_105a_4d30_105a_4d39,
@@ -45785,6 +48610,8 @@ static const pciSubsystemInfo *pci_ss_list_105a_6269[] = {
#define pci_ss_list_105a_6629 NULL
#define pci_ss_list_105a_7275 NULL
#define pci_ss_list_105a_8002 NULL
+#define pci_ss_list_105a_8350 NULL
+#define pci_ss_list_105a_c350 NULL
#endif
#define pci_ss_list_105d_2309 NULL
static const pciSubsystemInfo *pci_ss_list_105d_2339[] = {
@@ -46038,14 +48865,24 @@ static const pciSubsystemInfo *pci_ss_list_1077_2200[] = {
NULL
};
#define pci_ss_list_1077_2300 NULL
-#define pci_ss_list_1077_2312 NULL
+static const pciSubsystemInfo *pci_ss_list_1077_2312[] = {
+ &pci_ss_info_1077_2312_103c_0131,
+ &pci_ss_info_1077_2312_103c_12ba,
+ NULL
+};
#define pci_ss_list_1077_2322 NULL
-#define pci_ss_list_1077_2422 NULL
+static const pciSubsystemInfo *pci_ss_list_1077_2422[] = {
+ &pci_ss_info_1077_2422_103c_12d7,
+ &pci_ss_info_1077_2422_103c_12dd,
+ NULL
+};
#define pci_ss_list_1077_2432 NULL
-#define pci_ss_list_1077_3010 NULL
#define pci_ss_list_1077_3022 NULL
+#define pci_ss_list_1077_3032 NULL
#define pci_ss_list_1077_4010 NULL
#define pci_ss_list_1077_4022 NULL
+#define pci_ss_list_1077_4032 NULL
+#define pci_ss_list_1077_5432 NULL
#define pci_ss_list_1077_6312 NULL
#define pci_ss_list_1077_6322 NULL
#endif
@@ -46432,8 +49269,6 @@ static const pciSubsystemInfo *pci_ss_list_10a9_0009[] = {
#define pci_ss_list_10a9_4002 NULL
#define pci_ss_list_10a9_8001 NULL
#define pci_ss_list_10a9_8002 NULL
-#define pci_ss_list_10a9_8010 NULL
-#define pci_ss_list_10a9_8018 NULL
#endif
#define pci_ss_list_10aa_0000 NULL
#define pci_ss_list_10ad_0001 NULL
@@ -46564,13 +49399,22 @@ static const pciSubsystemInfo *pci_ss_list_10b5_906d[] = {
static const pciSubsystemInfo *pci_ss_list_10b5_9080[] = {
&pci_ss_info_10b5_9080_103c_10eb,
&pci_ss_info_10b5_9080_103c_10ec,
+ &pci_ss_info_10b5_9080_10b5_1123,
&pci_ss_info_10b5_9080_10b5_9080,
&pci_ss_info_10b5_9080_129d_0002,
&pci_ss_info_10b5_9080_12d9_0002,
&pci_ss_info_10b5_9080_12df_4422,
+ &pci_ss_info_10b5_9080_1517_000b,
+ NULL
+};
+static const pciSubsystemInfo *pci_ss_list_10b5_9656[] = {
+ &pci_ss_info_10b5_9656_1517_000f,
+ &pci_ss_info_10b5_9656_1885_0700,
+ &pci_ss_info_10b5_9656_1885_0701,
NULL
};
#define pci_ss_list_10b5_bb04 NULL
+#define pci_ss_list_10b5_c001 NULL
#endif
#define pci_ss_list_10b6_0001 NULL
#ifdef VENDOR_INCLUDE_NONVIDEO
@@ -46709,6 +49553,10 @@ static const pciSubsystemInfo *pci_ss_list_10b7_9005[] = {
#define pci_ss_list_10b7_900a NULL
#define pci_ss_list_10b7_9050 NULL
#define pci_ss_list_10b7_9051 NULL
+static const pciSubsystemInfo *pci_ss_list_10b7_9054[] = {
+ &pci_ss_info_10b7_9054_10b7_9054,
+ NULL
+};
static const pciSubsystemInfo *pci_ss_list_10b7_9055[] = {
&pci_ss_info_10b7_9055_1028_0080,
&pci_ss_info_10b7_9055_1028_0081,
@@ -46884,6 +49732,7 @@ static const pciSubsystemInfo *pci_ss_list_10b9_5229[] = {
&pci_ss_info_10b9_5229_1014_053d,
&pci_ss_info_10b9_5229_103c_0024,
&pci_ss_info_10b9_5229_1043_8053,
+ &pci_ss_info_10b9_5229_1849_5229,
NULL
};
#define pci_ss_list_10b9_5235 NULL
@@ -47003,6 +49852,7 @@ static const pciSubsystemInfo *pci_ss_list_10c8_8005[] = {
#ifdef VENDOR_INCLUDE_NONVIDEO
static const pciSubsystemInfo *pci_ss_list_10cd_1300[] = {
&pci_ss_info_10cd_1300_10cd_1310,
+ &pci_ss_info_10cd_1300_1195_1320,
NULL
};
#define pci_ss_list_10cd_2300 NULL
@@ -47153,6 +50003,7 @@ static const pciSubsystemInfo *pci_ss_list_10de_0047[] = {
};
#define pci_ss_list_10de_0048 NULL
#define pci_ss_list_10de_0049 NULL
+#define pci_ss_list_10de_004d NULL
#define pci_ss_list_10de_004e NULL
static const pciSubsystemInfo *pci_ss_list_10de_0050[] = {
&pci_ss_info_10de_0050_1043_815a,
@@ -47313,7 +50164,10 @@ static const pciSubsystemInfo *pci_ss_list_10de_00a0[] = {
#define pci_ss_list_10de_00c8 NULL
#define pci_ss_list_10de_00c9 NULL
#define pci_ss_list_10de_00cc NULL
-#define pci_ss_list_10de_00cd NULL
+static const pciSubsystemInfo *pci_ss_list_10de_00cd[] = {
+ &pci_ss_info_10de_00cd_10de_029b,
+ NULL
+};
#define pci_ss_list_10de_00ce NULL
#define pci_ss_list_10de_00d0 NULL
#define pci_ss_list_10de_00d1 NULL
@@ -47334,10 +50188,12 @@ static const pciSubsystemInfo *pci_ss_list_10de_00df[] = {
};
static const pciSubsystemInfo *pci_ss_list_10de_00e0[] = {
&pci_ss_info_10de_00e0_10de_0c11,
+ &pci_ss_info_10de_00e0_1462_7030,
&pci_ss_info_10de_00e0_147b_1c0b,
NULL
};
static const pciSubsystemInfo *pci_ss_list_10de_00e1[] = {
+ &pci_ss_info_10de_00e1_1462_7030,
&pci_ss_info_10de_00e1_147b_1c0b,
NULL
};
@@ -47349,22 +50205,26 @@ static const pciSubsystemInfo *pci_ss_list_10de_00e3[] = {
};
static const pciSubsystemInfo *pci_ss_list_10de_00e4[] = {
&pci_ss_info_10de_00e4_105b_0c43,
+ &pci_ss_info_10de_00e4_1462_7030,
&pci_ss_info_10de_00e4_147b_1c0b,
NULL
};
static const pciSubsystemInfo *pci_ss_list_10de_00e5[] = {
&pci_ss_info_10de_00e5_105b_0c43,
+ &pci_ss_info_10de_00e5_1462_7030,
&pci_ss_info_10de_00e5_147b_1c0b,
NULL
};
#define pci_ss_list_10de_00e6 NULL
static const pciSubsystemInfo *pci_ss_list_10de_00e7[] = {
&pci_ss_info_10de_00e7_105b_0c43,
+ &pci_ss_info_10de_00e7_1462_7030,
&pci_ss_info_10de_00e7_147b_1c0b,
NULL
};
static const pciSubsystemInfo *pci_ss_list_10de_00e8[] = {
&pci_ss_info_10de_00e8_105b_0c43,
+ &pci_ss_info_10de_00e8_1462_7030,
&pci_ss_info_10de_00e8_147b_1c0b,
NULL
};
@@ -47388,7 +50248,10 @@ static const pciSubsystemInfo *pci_ss_list_10de_00f2[] = {
#define pci_ss_list_10de_00f3 NULL
#define pci_ss_list_10de_00f4 NULL
#define pci_ss_list_10de_00f5 NULL
-#define pci_ss_list_10de_00f6 NULL
+static const pciSubsystemInfo *pci_ss_list_10de_00f6[] = {
+ &pci_ss_info_10de_00f6_1682_217e,
+ NULL
+};
#define pci_ss_list_10de_00f8 NULL
static const pciSubsystemInfo *pci_ss_list_10de_00f9[] = {
&pci_ss_info_10de_00f9_1682_2120,
@@ -47463,6 +50326,7 @@ static const pciSubsystemInfo *pci_ss_list_10de_0141[] = {
#define pci_ss_list_10de_0149 NULL
#define pci_ss_list_10de_014a NULL
#define pci_ss_list_10de_014c NULL
+#define pci_ss_list_10de_014d NULL
#define pci_ss_list_10de_014e NULL
#define pci_ss_list_10de_014f NULL
static const pciSubsystemInfo *pci_ss_list_10de_0150[] = {
@@ -47471,6 +50335,7 @@ static const pciSubsystemInfo *pci_ss_list_10de_0150[] = {
&pci_ss_info_10de_0150_1048_0c52,
&pci_ss_info_10de_0150_107d_2840,
&pci_ss_info_10de_0150_107d_2842,
+ &pci_ss_info_10de_0150_10de_002e,
&pci_ss_info_10de_0150_1462_8831,
NULL
};
@@ -47509,6 +50374,7 @@ static const pciSubsystemInfo *pci_ss_list_10de_0171[] = {
#define pci_ss_list_10de_0174 NULL
#define pci_ss_list_10de_0175 NULL
static const pciSubsystemInfo *pci_ss_list_10de_0176[] = {
+ &pci_ss_info_10de_0176_103c_08b0,
&pci_ss_info_10de_0176_4c53_1090,
NULL
};
@@ -47523,6 +50389,7 @@ static const pciSubsystemInfo *pci_ss_list_10de_0179[] = {
#define pci_ss_list_10de_017c NULL
#define pci_ss_list_10de_017d NULL
static const pciSubsystemInfo *pci_ss_list_10de_0181[] = {
+ &pci_ss_info_10de_0181_1043_8063,
&pci_ss_info_10de_0181_1043_806f,
&pci_ss_info_10de_0181_1462_8880,
&pci_ss_info_10de_0181_1462_8900,
@@ -47555,7 +50422,11 @@ static const pciSubsystemInfo *pci_ss_list_10de_0181[] = {
#define pci_ss_list_10de_01c1 NULL
#define pci_ss_list_10de_01c2 NULL
#define pci_ss_list_10de_01c3 NULL
-#define pci_ss_list_10de_01d1 NULL
+static const pciSubsystemInfo *pci_ss_list_10de_01d1[] = {
+ &pci_ss_info_10de_01d1_1462_0345,
+ NULL
+};
+#define pci_ss_list_10de_01d6 NULL
#define pci_ss_list_10de_01d7 NULL
#define pci_ss_list_10de_01d8 NULL
#define pci_ss_list_10de_01da NULL
@@ -47713,11 +50584,15 @@ static const pciSubsystemInfo *pci_ss_list_10de_027f[] = {
#define pci_ss_list_10de_028c NULL
#define pci_ss_list_10de_0290 NULL
#define pci_ss_list_10de_0291 NULL
+#define pci_ss_list_10de_0292 NULL
+#define pci_ss_list_10de_0298 NULL
+#define pci_ss_list_10de_0299 NULL
#define pci_ss_list_10de_029a NULL
#define pci_ss_list_10de_029b NULL
#define pci_ss_list_10de_029c NULL
#define pci_ss_list_10de_029d NULL
#define pci_ss_list_10de_029e NULL
+#define pci_ss_list_10de_029f NULL
#define pci_ss_list_10de_02a0 NULL
#define pci_ss_list_10de_02e1 NULL
static const pciSubsystemInfo *pci_ss_list_10de_02f0[] = {
@@ -47833,19 +50708,62 @@ static const pciSubsystemInfo *pci_ss_list_10de_0347[] = {
#define pci_ss_list_10de_0368 NULL
#define pci_ss_list_10de_0369 NULL
#define pci_ss_list_10de_036a NULL
+#define pci_ss_list_10de_036b NULL
#define pci_ss_list_10de_036c NULL
#define pci_ss_list_10de_036d NULL
#define pci_ss_list_10de_036e NULL
+#define pci_ss_list_10de_0370 NULL
#define pci_ss_list_10de_0371 NULL
#define pci_ss_list_10de_0372 NULL
#define pci_ss_list_10de_0373 NULL
+#define pci_ss_list_10de_0374 NULL
+#define pci_ss_list_10de_0375 NULL
+#define pci_ss_list_10de_0376 NULL
+#define pci_ss_list_10de_0377 NULL
+#define pci_ss_list_10de_0378 NULL
#define pci_ss_list_10de_037a NULL
#define pci_ss_list_10de_037e NULL
#define pci_ss_list_10de_037f NULL
#define pci_ss_list_10de_0391 NULL
-#define pci_ss_list_10de_0392 NULL
+static const pciSubsystemInfo *pci_ss_list_10de_0392[] = {
+ &pci_ss_info_10de_0392_1462_0622,
+ NULL
+};
+#define pci_ss_list_10de_0393 NULL
#define pci_ss_list_10de_0398 NULL
#define pci_ss_list_10de_039e NULL
+#define pci_ss_list_10de_03a0 NULL
+#define pci_ss_list_10de_03a1 NULL
+#define pci_ss_list_10de_03a2 NULL
+#define pci_ss_list_10de_03a3 NULL
+#define pci_ss_list_10de_03a4 NULL
+#define pci_ss_list_10de_03a5 NULL
+#define pci_ss_list_10de_03a6 NULL
+#define pci_ss_list_10de_03a7 NULL
+#define pci_ss_list_10de_03a8 NULL
+#define pci_ss_list_10de_03a9 NULL
+#define pci_ss_list_10de_03aa NULL
+#define pci_ss_list_10de_03ab NULL
+#define pci_ss_list_10de_03ac NULL
+#define pci_ss_list_10de_03ad NULL
+#define pci_ss_list_10de_03ae NULL
+#define pci_ss_list_10de_03af NULL
+#define pci_ss_list_10de_03b0 NULL
+#define pci_ss_list_10de_03b1 NULL
+#define pci_ss_list_10de_03b2 NULL
+#define pci_ss_list_10de_03b3 NULL
+#define pci_ss_list_10de_03b4 NULL
+#define pci_ss_list_10de_03b5 NULL
+#define pci_ss_list_10de_03b6 NULL
+#define pci_ss_list_10de_03b7 NULL
+#define pci_ss_list_10de_03b8 NULL
+#define pci_ss_list_10de_03b9 NULL
+#define pci_ss_list_10de_03ba NULL
+#define pci_ss_list_10de_03bb NULL
+#define pci_ss_list_10de_03d0 NULL
+#define pci_ss_list_10de_03d1 NULL
+#define pci_ss_list_10de_03d2 NULL
+#define pci_ss_list_10de_03d5 NULL
#define pci_ss_list_10de_03e0 NULL
#define pci_ss_list_10de_03e1 NULL
#define pci_ss_list_10de_03e2 NULL
@@ -47854,6 +50772,8 @@ static const pciSubsystemInfo *pci_ss_list_10de_0347[] = {
#define pci_ss_list_10de_03e5 NULL
#define pci_ss_list_10de_03e6 NULL
#define pci_ss_list_10de_03e7 NULL
+#define pci_ss_list_10de_03e8 NULL
+#define pci_ss_list_10de_03e9 NULL
#define pci_ss_list_10de_03ea NULL
#define pci_ss_list_10de_03eb NULL
#define pci_ss_list_10de_03ec NULL
@@ -47862,9 +50782,42 @@ static const pciSubsystemInfo *pci_ss_list_10de_0347[] = {
#define pci_ss_list_10de_03f0 NULL
#define pci_ss_list_10de_03f1 NULL
#define pci_ss_list_10de_03f2 NULL
+#define pci_ss_list_10de_03f3 NULL
+#define pci_ss_list_10de_03f4 NULL
#define pci_ss_list_10de_03f5 NULL
#define pci_ss_list_10de_03f6 NULL
#define pci_ss_list_10de_03f7 NULL
+#define pci_ss_list_10de_0440 NULL
+#define pci_ss_list_10de_0441 NULL
+#define pci_ss_list_10de_0442 NULL
+#define pci_ss_list_10de_0443 NULL
+#define pci_ss_list_10de_0444 NULL
+#define pci_ss_list_10de_0445 NULL
+#define pci_ss_list_10de_0446 NULL
+#define pci_ss_list_10de_0447 NULL
+#define pci_ss_list_10de_0448 NULL
+#define pci_ss_list_10de_0449 NULL
+#define pci_ss_list_10de_044a NULL
+#define pci_ss_list_10de_044b NULL
+#define pci_ss_list_10de_044c NULL
+#define pci_ss_list_10de_044d NULL
+#define pci_ss_list_10de_044e NULL
+#define pci_ss_list_10de_044f NULL
+#define pci_ss_list_10de_0450 NULL
+#define pci_ss_list_10de_0451 NULL
+#define pci_ss_list_10de_0452 NULL
+#define pci_ss_list_10de_0453 NULL
+#define pci_ss_list_10de_0454 NULL
+#define pci_ss_list_10de_0455 NULL
+#define pci_ss_list_10de_0456 NULL
+#define pci_ss_list_10de_0457 NULL
+#define pci_ss_list_10de_0458 NULL
+#define pci_ss_list_10de_0459 NULL
+#define pci_ss_list_10de_045a NULL
+#define pci_ss_list_10de_045c NULL
+#define pci_ss_list_10de_045d NULL
+#define pci_ss_list_10de_045e NULL
+#define pci_ss_list_10de_045f NULL
#define pci_ss_list_10df_1ae5 NULL
#define pci_ss_list_10df_f085 NULL
#define pci_ss_list_10df_f095 NULL
@@ -47909,11 +50862,13 @@ static const pciSubsystemInfo *pci_ss_list_10e1_0391[] = {
#define pci_ss_list_10e1_dc29 NULL
#endif
#define pci_ss_list_10e3_0000 NULL
+#define pci_ss_list_10e3_0108 NULL
#define pci_ss_list_10e3_0148 NULL
#define pci_ss_list_10e3_0860 NULL
#define pci_ss_list_10e3_0862 NULL
#define pci_ss_list_10e3_8260 NULL
#define pci_ss_list_10e3_8261 NULL
+#define pci_ss_list_10e3_a108 NULL
#define pci_ss_list_10e4_8029 NULL
#define pci_ss_list_10e8_1072 NULL
#define pci_ss_list_10e8_2011 NULL
@@ -47954,6 +50909,10 @@ static const pciSubsystemInfo *pci_ss_list_10e1_0391[] = {
#define pci_ss_list_10eb_8111 NULL
#define pci_ss_list_10ec_0139 NULL
#ifdef VENDOR_INCLUDE_NONVIDEO
+static const pciSubsystemInfo *pci_ss_list_10ec_0883[] = {
+ &pci_ss_info_10ec_0883_1025_1605,
+ NULL
+};
static const pciSubsystemInfo *pci_ss_list_10ec_8029[] = {
&pci_ss_info_10ec_8029_10b8_2011,
&pci_ss_info_10ec_8029_10ec_8029,
@@ -47966,6 +50925,7 @@ static const pciSubsystemInfo *pci_ss_list_10ec_8129[] = {
&pci_ss_info_10ec_8129_10ec_8129,
NULL
};
+#define pci_ss_list_10ec_8136 NULL
static const pciSubsystemInfo *pci_ss_list_10ec_8138[] = {
&pci_ss_info_10ec_8138_10ec_8138,
NULL
@@ -48007,6 +50967,8 @@ static const pciSubsystemInfo *pci_ss_list_10ec_8139[] = {
&pci_ss_info_10ec_8139_a0a0_0007,
NULL
};
+#define pci_ss_list_10ec_8167 NULL
+#define pci_ss_list_10ec_8168 NULL
static const pciSubsystemInfo *pci_ss_list_10ec_8169[] = {
&pci_ss_info_10ec_8169_1025_0079,
&pci_ss_info_10ec_8169_1259_c107,
@@ -48042,6 +51004,7 @@ static const pciSubsystemInfo *pci_ss_list_10ec_8169[] = {
#define pci_ss_list_10fc_0003 NULL
#define pci_ss_list_10fc_0005 NULL
#define pci_ss_list_1101_1060 NULL
+#define pci_ss_list_1101_1622 NULL
#define pci_ss_list_1101_9100 NULL
#define pci_ss_list_1101_9400 NULL
#define pci_ss_list_1101_9401 NULL
@@ -48078,6 +51041,11 @@ static const pciSubsystemInfo *pci_ss_list_1102_0004[] = {
&pci_ss_info_1102_0004_1102_2002,
NULL
};
+static const pciSubsystemInfo *pci_ss_list_1102_0005[] = {
+ &pci_ss_info_1102_0005_1102_0021,
+ &pci_ss_info_1102_0005_1102_1003,
+ NULL
+};
#define pci_ss_list_1102_0006 NULL
static const pciSubsystemInfo *pci_ss_list_1102_0007[] = {
&pci_ss_info_1102_0007_1102_0007,
@@ -48866,12 +51834,20 @@ static const pciSubsystemInfo *pci_ss_list_1131_7133[] = {
&pci_ss_info_1131_7133_185b_c100,
&pci_ss_info_1131_7133_5168_0306,
&pci_ss_info_1131_7133_5168_0319,
+ &pci_ss_info_1131_7133_5168_0502,
+ &pci_ss_info_1131_7133_5168_0520,
+ &pci_ss_info_1131_7133_5168_1502,
+ &pci_ss_info_1131_7133_5168_2502,
+ &pci_ss_info_1131_7133_5168_2520,
+ &pci_ss_info_1131_7133_5168_3502,
+ &pci_ss_info_1131_7133_5168_3520,
NULL
};
static const pciSubsystemInfo *pci_ss_list_1131_7134[] = {
&pci_ss_info_1131_7134_1019_4cb4,
&pci_ss_info_1131_7134_1043_0210,
&pci_ss_info_1131_7134_1043_4840,
+ &pci_ss_info_1131_7134_1043_4842,
&pci_ss_info_1131_7134_1131_2004,
&pci_ss_info_1131_7134_1131_4e85,
&pci_ss_info_1131_7134_1131_6752,
@@ -48926,7 +51902,10 @@ static const pciSubsystemInfo *pci_ss_list_1131_7146[] = {
&pci_ss_info_1131_7146_153b_1156,
NULL
};
-#define pci_ss_list_1131_9730 NULL
+static const pciSubsystemInfo *pci_ss_list_1131_9730[] = {
+ &pci_ss_info_1131_9730_1131_0000,
+ NULL
+};
#endif
#define pci_ss_list_1133_7901 NULL
#define pci_ss_list_1133_7902 NULL
@@ -49267,6 +52246,7 @@ static const pciSubsystemInfo *pci_ss_list_1163_2000[] = {
#define pci_ss_list_1166_0017 NULL
#define pci_ss_list_1166_0036 NULL
#define pci_ss_list_1166_0101 NULL
+#define pci_ss_list_1166_0103 NULL
#define pci_ss_list_1166_0104 NULL
#define pci_ss_list_1166_0110 NULL
#define pci_ss_list_1166_0130 NULL
@@ -49275,6 +52255,9 @@ static const pciSubsystemInfo *pci_ss_list_1166_0132[] = {
&pci_ss_info_1166_0132_1166_0132,
NULL
};
+#define pci_ss_list_1166_0140 NULL
+#define pci_ss_list_1166_0141 NULL
+#define pci_ss_list_1166_0142 NULL
#define pci_ss_list_1166_0200 NULL
static const pciSubsystemInfo *pci_ss_list_1166_0201[] = {
&pci_ss_info_1166_0201_4c53_1080,
@@ -49291,6 +52274,7 @@ static const pciSubsystemInfo *pci_ss_list_1166_0212[] = {
NULL
};
static const pciSubsystemInfo *pci_ss_list_1166_0213[] = {
+ &pci_ss_info_1166_0213_1028_4134,
&pci_ss_info_1166_0213_1028_c134,
&pci_ss_info_1166_0213_1734_1012,
NULL
@@ -49446,6 +52430,7 @@ static const pciSubsystemInfo *pci_ss_list_1186_1300[] = {
NULL
};
#define pci_ss_list_1186_1340 NULL
+#define pci_ss_list_1186_1405 NULL
#define pci_ss_list_1186_1541 NULL
#define pci_ss_list_1186_1561 NULL
#define pci_ss_list_1186_2027 NULL
@@ -49464,6 +52449,7 @@ static const pciSubsystemInfo *pci_ss_list_1186_1300[] = {
#define pci_ss_list_1186_3a63 NULL
#define pci_ss_list_1186_4000 NULL
#define pci_ss_list_1186_4300 NULL
+#define pci_ss_list_1186_4800 NULL
#define pci_ss_list_1186_4b01 NULL
static const pciSubsystemInfo *pci_ss_list_1186_4c00[] = {
&pci_ss_info_1186_4c00_1186_4c00,
@@ -49667,6 +52653,7 @@ static const pciSubsystemInfo *pci_ss_list_11ab_4362[] = {
#define pci_ss_list_11ab_6081 NULL
#define pci_ss_list_11ab_6460 NULL
#define pci_ss_list_11ab_6480 NULL
+#define pci_ss_list_11ab_6485 NULL
#define pci_ss_list_11ab_f003 NULL
#endif
#ifdef VENDOR_INCLUDE_NONVIDEO
@@ -49842,6 +52829,7 @@ static const pciSubsystemInfo *pci_ss_list_11c1_ab30[] = {
NULL
};
#define pci_ss_list_11c1_ed00 NULL
+#define pci_ss_list_11c1_ed01 NULL
#endif
#define pci_ss_list_11c8_0658 NULL
#define pci_ss_list_11c8_d665 NULL
@@ -49956,6 +52944,7 @@ static const pciSubsystemInfo *pci_ss_list_1202_4300[] = {
#define pci_ss_list_120e_0321 NULL
#define pci_ss_list_120e_0400 NULL
#define pci_ss_list_120f_0001 NULL
+#define pci_ss_list_1217_00f7 NULL
#define pci_ss_list_1217_6729 NULL
#define pci_ss_list_1217_673a NULL
#define pci_ss_list_1217_6832 NULL
@@ -49981,7 +52970,10 @@ static const pciSubsystemInfo *pci_ss_list_1217_7110[] = {
#define pci_ss_list_1217_7112 NULL
#define pci_ss_list_1217_7113 NULL
#define pci_ss_list_1217_7114 NULL
+#define pci_ss_list_1217_7120 NULL
+#define pci_ss_list_1217_7130 NULL
#define pci_ss_list_1217_7134 NULL
+#define pci_ss_list_1217_7135 NULL
#define pci_ss_list_1217_71e2 NULL
#define pci_ss_list_1217_7212 NULL
#define pci_ss_list_1217_7213 NULL
@@ -50132,6 +53124,7 @@ static const pciSubsystemInfo *pci_ss_list_124b_0040[] = {
#define pci_ss_list_1256_5201 NULL
#define pci_ss_list_1259_2560 NULL
#define pci_ss_list_1259_a117 NULL
+#define pci_ss_list_1259_a11e NULL
#define pci_ss_list_1259_a120 NULL
#ifdef VENDOR_INCLUDE_NONVIDEO
static const pciSubsystemInfo *pci_ss_list_125b_1400[] = {
@@ -50224,6 +53217,7 @@ static const pciSubsystemInfo *pci_ss_list_1260_3890[] = {
&pci_ss_info_1260_3890_1113_ee08,
&pci_ss_info_1260_3890_1186_3202,
&pci_ss_info_1260_3890_1259_c104,
+ &pci_ss_info_1260_3890_1260_0000,
&pci_ss_info_1260_3890_1385_4800,
&pci_ss_info_1260_3890_16a5_1605,
&pci_ss_info_1260_3890_17cf_0014,
@@ -50893,6 +53887,11 @@ static const pciSubsystemInfo *pci_ss_list_134d_7891[] = {
#define pci_ss_list_1360_0204 NULL
#define pci_ss_list_1360_0301 NULL
#define pci_ss_list_1360_0302 NULL
+#define pci_ss_list_1360_0303 NULL
+#define pci_ss_list_136a_0004 NULL
+#define pci_ss_list_136a_0007 NULL
+#define pci_ss_list_136a_0008 NULL
+#define pci_ss_list_136a_000a NULL
#define pci_ss_list_136b_ff01 NULL
#ifdef VENDOR_INCLUDE_NONVIDEO
static const pciSubsystemInfo *pci_ss_list_1371_434e[] = {
@@ -50956,6 +53955,10 @@ static const pciSubsystemInfo *pci_ss_list_1371_434e[] = {
#define pci_ss_list_1385_630a NULL
#define pci_ss_list_1385_6b00 NULL
#define pci_ss_list_1385_6d00 NULL
+#define pci_ss_list_1385_7b00 NULL
+#define pci_ss_list_1385_7c00 NULL
+#define pci_ss_list_1385_7d00 NULL
+#define pci_ss_list_1385_7e00 NULL
#define pci_ss_list_1385_f004 NULL
#define pci_ss_list_1389_0001 NULL
#define pci_ss_list_1393_1040 NULL
@@ -51058,11 +54061,24 @@ static const pciSubsystemInfo *pci_ss_list_13f6_0111[] = {
#define pci_ss_list_13f6_0211 NULL
#endif
#define pci_ss_list_13fe_1240 NULL
-#define pci_ss_list_13fe_1600 NULL
+#ifdef VENDOR_INCLUDE_NONVIDEO
+static const pciSubsystemInfo *pci_ss_list_13fe_1600[] = {
+ &pci_ss_info_13fe_1600_1601_0002,
+ &pci_ss_info_13fe_1600_1602_0002,
+ &pci_ss_info_13fe_1600_1612_0004,
+ NULL
+};
+static const pciSubsystemInfo *pci_ss_list_13fe_16ff[] = {
+ &pci_ss_info_13fe_16ff_1601_0000,
+ &pci_ss_info_13fe_16ff_1602_0000,
+ &pci_ss_info_13fe_16ff_1612_0000,
+ NULL
+};
#define pci_ss_list_13fe_1733 NULL
#define pci_ss_list_13fe_1752 NULL
#define pci_ss_list_13fe_1754 NULL
#define pci_ss_list_13fe_1756 NULL
+#endif
#define pci_ss_list_1400_1401 NULL
#define pci_ss_list_1407_0100 NULL
#define pci_ss_list_1407_0101 NULL
@@ -51123,8 +54139,13 @@ static const pciSubsystemInfo *pci_ss_list_1412_1724[] = {
};
#endif
#define pci_ss_list_1415_8403 NULL
+#define pci_ss_list_1415_9500 NULL
#ifdef VENDOR_INCLUDE_NONVIDEO
static const pciSubsystemInfo *pci_ss_list_1415_9501[] = {
+ &pci_ss_info_1415_9501_12c4_0201,
+ &pci_ss_info_1415_9501_12c4_0202,
+ &pci_ss_info_1415_9501_12c4_0203,
+ &pci_ss_info_1415_9501_12c4_0210,
&pci_ss_info_1415_9501_131f_2050,
&pci_ss_info_1415_9501_131f_2051,
&pci_ss_info_1415_9501_15ed_2000,
@@ -51133,12 +54154,18 @@ static const pciSubsystemInfo *pci_ss_list_1415_9501[] = {
};
#define pci_ss_list_1415_950a NULL
#define pci_ss_list_1415_950b NULL
-#define pci_ss_list_1415_9510 NULL
+static const pciSubsystemInfo *pci_ss_list_1415_9510[] = {
+ &pci_ss_info_1415_9510_12c4_0200,
+ NULL
+};
static const pciSubsystemInfo *pci_ss_list_1415_9511[] = {
+ &pci_ss_info_1415_9511_12c4_0211,
&pci_ss_info_1415_9511_15ed_2000,
&pci_ss_info_1415_9511_15ed_2001,
NULL
};
+#define pci_ss_list_1415_9512 NULL
+#define pci_ss_list_1415_9513 NULL
#define pci_ss_list_1415_9521 NULL
#define pci_ss_list_1415_9523 NULL
#endif
@@ -51148,6 +54175,13 @@ static const pciSubsystemInfo *pci_ss_list_1415_9511[] = {
#define pci_ss_list_142e_4020 NULL
#define pci_ss_list_142e_4337 NULL
#define pci_ss_list_1432_9130 NULL
+#define pci_ss_list_1435_4520 NULL
+#define pci_ss_list_1435_6020 NULL
+#define pci_ss_list_1435_6030 NULL
+#define pci_ss_list_1435_6420 NULL
+#define pci_ss_list_1435_6430 NULL
+#define pci_ss_list_1435_7520 NULL
+#define pci_ss_list_1435_7820 NULL
#define pci_ss_list_144a_7296 NULL
#define pci_ss_list_144a_7432 NULL
#define pci_ss_list_144a_7433 NULL
@@ -51182,6 +54216,7 @@ static const pciSubsystemInfo *pci_ss_list_1415_9511[] = {
#define pci_ss_list_1497_1497 NULL
#define pci_ss_list_1498_0330 NULL
#define pci_ss_list_1498_0385 NULL
+#define pci_ss_list_1498_21cc NULL
#define pci_ss_list_1498_21cd NULL
#define pci_ss_list_1498_30c8 NULL
#define pci_ss_list_149d_0001 NULL
@@ -51204,8 +54239,15 @@ static const pciSubsystemInfo *pci_ss_list_1415_9511[] = {
#define pci_ss_list_14b9_a504 NULL
#define pci_ss_list_14b9_a505 NULL
#define pci_ss_list_14b9_a506 NULL
+#define pci_ss_list_14bc_d002 NULL
+#define pci_ss_list_14bc_d00f NULL
#define pci_ss_list_14c1_0008 NULL
-#define pci_ss_list_14c1_8043 NULL
+#ifdef VENDOR_INCLUDE_NONVIDEO
+static const pciSubsystemInfo *pci_ss_list_14c1_8043[] = {
+ &pci_ss_info_14c1_8043_103c_1240,
+ NULL
+};
+#endif
#define pci_ss_list_14d2_8001 NULL
#define pci_ss_list_14d2_8002 NULL
#define pci_ss_list_14d2_8010 NULL
@@ -51246,9 +54288,12 @@ static const pciSubsystemInfo *pci_ss_list_1415_9511[] = {
#define pci_ss_list_14e4_080f NULL
#define pci_ss_list_14e4_0811 NULL
#define pci_ss_list_14e4_0816 NULL
-#define pci_ss_list_14e4_1600 NULL
-#define pci_ss_list_14e4_1601 NULL
#ifdef VENDOR_INCLUDE_NONVIDEO
+static const pciSubsystemInfo *pci_ss_list_14e4_1600[] = {
+ &pci_ss_info_14e4_1600_107b_5048,
+ NULL
+};
+#define pci_ss_list_14e4_1601 NULL
static const pciSubsystemInfo *pci_ss_list_14e4_1644[] = {
&pci_ss_info_14e4_1644_1014_0277,
&pci_ss_info_14e4_1644_1028_00d1,
@@ -51318,6 +54363,10 @@ static const pciSubsystemInfo *pci_ss_list_14e4_1648[] = {
&pci_ss_info_14e4_1648_0e11_00cf,
&pci_ss_info_14e4_1648_0e11_00d0,
&pci_ss_info_14e4_1648_0e11_00d1,
+ &pci_ss_info_14e4_1648_10a9_8013,
+ &pci_ss_info_14e4_1648_10a9_8018,
+ &pci_ss_info_14e4_1648_10a9_801a,
+ &pci_ss_info_14e4_1648_10a9_801b,
&pci_ss_info_14e4_1648_10b7_2000,
&pci_ss_info_14e4_1648_10b7_3000,
&pci_ss_info_14e4_1648_1166_1648,
@@ -51325,10 +54374,15 @@ static const pciSubsystemInfo *pci_ss_list_14e4_1648[] = {
NULL
};
static const pciSubsystemInfo *pci_ss_list_14e4_164a[] = {
+ &pci_ss_info_14e4_164a_103c_3070,
&pci_ss_info_14e4_164a_103c_3101,
NULL
};
-#define pci_ss_list_14e4_164c NULL
+static const pciSubsystemInfo *pci_ss_list_14e4_164c[] = {
+ &pci_ss_info_14e4_164c_103c_7037,
+ &pci_ss_info_14e4_164c_103c_7038,
+ NULL
+};
#define pci_ss_list_14e4_164d NULL
static const pciSubsystemInfo *pci_ss_list_14e4_1653[] = {
&pci_ss_info_14e4_1653_0e11_00e3,
@@ -51378,12 +54432,17 @@ static const pciSubsystemInfo *pci_ss_list_14e4_1677[] = {
};
#define pci_ss_list_14e4_1678 NULL
static const pciSubsystemInfo *pci_ss_list_14e4_1679[] = {
+ &pci_ss_info_14e4_1679_103c_1707,
+ &pci_ss_info_14e4_1679_103c_170c,
&pci_ss_info_14e4_1679_103c_703c,
NULL
};
#define pci_ss_list_14e4_167a NULL
#define pci_ss_list_14e4_167b NULL
-#define pci_ss_list_14e4_167d NULL
+static const pciSubsystemInfo *pci_ss_list_14e4_167d[] = {
+ &pci_ss_info_14e4_167d_17aa_2081,
+ NULL
+};
#define pci_ss_list_14e4_167e NULL
#define pci_ss_list_14e4_1693 NULL
static const pciSubsystemInfo *pci_ss_list_14e4_1696[] = {
@@ -51391,6 +54450,7 @@ static const pciSubsystemInfo *pci_ss_list_14e4_1696[] = {
&pci_ss_info_14e4_1696_14e4_000d,
NULL
};
+#define pci_ss_list_14e4_169a NULL
#define pci_ss_list_14e4_169b NULL
static const pciSubsystemInfo *pci_ss_list_14e4_169c[] = {
&pci_ss_info_14e4_169c_103c_308b,
@@ -51414,6 +54474,8 @@ static const pciSubsystemInfo *pci_ss_list_14e4_16a7[] = {
NULL
};
static const pciSubsystemInfo *pci_ss_list_14e4_16a8[] = {
+ &pci_ss_info_14e4_16a8_10a9_8014,
+ &pci_ss_info_14e4_16a8_10a9_801c,
&pci_ss_info_14e4_16a8_10b7_2001,
NULL
};
@@ -51421,7 +54483,12 @@ static const pciSubsystemInfo *pci_ss_list_14e4_16aa[] = {
&pci_ss_info_14e4_16aa_103c_3102,
NULL
};
-#define pci_ss_list_14e4_16ac NULL
+static const pciSubsystemInfo *pci_ss_list_14e4_16ac[] = {
+ &pci_ss_info_14e4_16ac_103c_1706,
+ &pci_ss_info_14e4_16ac_103c_703b,
+ &pci_ss_info_14e4_16ac_103c_703d,
+ NULL
+};
static const pciSubsystemInfo *pci_ss_list_14e4_16c6[] = {
&pci_ss_info_14e4_16c6_10b7_1100,
&pci_ss_info_14e4_16c6_14e4_000c,
@@ -51466,6 +54533,7 @@ static const pciSubsystemInfo *pci_ss_list_14e4_4301[] = {
#define pci_ss_list_14e4_4306 NULL
#define pci_ss_list_14e4_4307 NULL
#define pci_ss_list_14e4_4310 NULL
+#define pci_ss_list_14e4_4311 NULL
#define pci_ss_list_14e4_4312 NULL
#define pci_ss_list_14e4_4313 NULL
#define pci_ss_list_14e4_4315 NULL
@@ -51512,7 +54580,9 @@ static const pciSubsystemInfo *pci_ss_list_14e4_4325[] = {
NULL
};
#define pci_ss_list_14e4_4326 NULL
+#define pci_ss_list_14e4_4329 NULL
static const pciSubsystemInfo *pci_ss_list_14e4_4401[] = {
+ &pci_ss_info_14e4_4401_103c_08b0,
&pci_ss_info_14e4_4401_1043_80a8,
NULL
};
@@ -51904,6 +54974,7 @@ static const pciSubsystemInfo *pci_ss_list_1524_1411[] = {
#define pci_ss_list_153b_1147 NULL
#define pci_ss_list_153b_1158 NULL
#define pci_ss_list_153f_0001 NULL
+#define pci_ss_list_1542_9260 NULL
#define pci_ss_list_1543_3052 NULL
#define pci_ss_list_1543_4c22 NULL
#define pci_ss_list_1571_a001 NULL
@@ -51982,6 +55053,7 @@ static const pciSubsystemInfo *pci_ss_list_1524_1411[] = {
#define pci_ss_list_166d_0002 NULL
#define pci_ss_list_1677_104e NULL
#define pci_ss_list_1677_12d7 NULL
+#define pci_ss_list_1677_20ad NULL
#ifdef VENDOR_INCLUDE_NONVIDEO
static const pciSubsystemInfo *pci_ss_list_167b_2102[] = {
&pci_ss_info_167b_2102_187e_3406,
@@ -52011,12 +55083,15 @@ static const pciSubsystemInfo *pci_ss_list_168c_0013[] = {
&pci_ss_info_168c_0013_1385_4d00,
&pci_ss_info_168c_0013_1458_e911,
&pci_ss_info_168c_0013_14b7_0a60,
+ &pci_ss_info_168c_0013_1668_1026,
&pci_ss_info_168c_0013_168c_0013,
&pci_ss_info_168c_0013_168c_1025,
&pci_ss_info_168c_0013_168c_1027,
+ &pci_ss_info_168c_0013_168c_1042,
&pci_ss_info_168c_0013_168c_2026,
&pci_ss_info_168c_0013_168c_2041,
&pci_ss_info_168c_0013_168c_2042,
+ &pci_ss_info_168c_0013_168c_2051,
&pci_ss_info_168c_0013_16ab_7302,
&pci_ss_info_168c_0013_185f_2012,
NULL
@@ -52028,6 +55103,7 @@ static const pciSubsystemInfo *pci_ss_list_168c_001a[] = {
&pci_ss_info_168c_001a_1186_3a16,
&pci_ss_info_168c_001a_1186_3a23,
&pci_ss_info_168c_001a_1186_3a24,
+ &pci_ss_info_168c_001a_168c_001a,
&pci_ss_info_168c_001a_168c_1052,
NULL
};
@@ -52039,7 +55115,10 @@ static const pciSubsystemInfo *pci_ss_list_168c_001b[] = {
NULL
};
#define pci_ss_list_168c_0020 NULL
-#define pci_ss_list_168c_1014 NULL
+static const pciSubsystemInfo *pci_ss_list_168c_1014[] = {
+ &pci_ss_info_168c_1014_1014_058a,
+ NULL
+};
#endif
#define pci_ss_list_169c_0044 NULL
#define pci_ss_list_16ab_1100 NULL
@@ -52051,8 +55130,10 @@ static const pciSubsystemInfo *pci_ss_list_168c_001b[] = {
#define pci_ss_list_16ca_0001 NULL
#define pci_ss_list_16d5_4d4e NULL
#define pci_ss_list_16e3_1e0f NULL
+#define pci_ss_list_16e5_6000 NULL
#define pci_ss_list_16ec_00ff NULL
#define pci_ss_list_16ec_0116 NULL
+#define pci_ss_list_16ec_2f00 NULL
#define pci_ss_list_16ec_3685 NULL
#define pci_ss_list_16ed_1001 NULL
#define pci_ss_list_16f4_8000 NULL
@@ -52121,10 +55202,20 @@ static const pciSubsystemInfo *pci_ss_list_173b_03ea[] = {
#ifdef VENDOR_INCLUDE_NONVIDEO
static const pciSubsystemInfo *pci_ss_list_17d5_5831[] = {
&pci_ss_info_17d5_5831_103c_12d5,
+ &pci_ss_info_17d5_5831_10a9_8020,
+ &pci_ss_info_17d5_5831_10a9_8024,
+ NULL
+};
+static const pciSubsystemInfo *pci_ss_list_17d5_5832[] = {
+ &pci_ss_info_17d5_5832_10a9_8021,
NULL
};
-#define pci_ss_list_17d5_5832 NULL
#endif
+#define pci_ss_list_17e4_0001 NULL
+#define pci_ss_list_17e4_0002 NULL
+#define pci_ss_list_17e6_0010 NULL
+#define pci_ss_list_17e6_0011 NULL
+#define pci_ss_list_17e6_0021 NULL
#define pci_ss_list_17fe_2120 NULL
#ifdef VENDOR_INCLUDE_NONVIDEO
static const pciSubsystemInfo *pci_ss_list_17fe_2220[] = {
@@ -52183,6 +55274,7 @@ static const pciSubsystemInfo *pci_ss_list_1814_0302[] = {
#define pci_ss_list_183b_08a7 NULL
#define pci_ss_list_183b_08a8 NULL
#define pci_ss_list_183b_08a9 NULL
+#define pci_ss_list_183b_08b0 NULL
#define pci_ss_list_1864_2110 NULL
#define pci_ss_list_1867_5a44 NULL
#define pci_ss_list_1867_5a45 NULL
@@ -52196,6 +55288,7 @@ static const pciSubsystemInfo *pci_ss_list_1814_0302[] = {
#define pci_ss_list_1888_0710 NULL
#define pci_ss_list_1888_0720 NULL
#define pci_ss_list_18ac_d500 NULL
+#define pci_ss_list_18ac_d800 NULL
#define pci_ss_list_18ac_d810 NULL
#define pci_ss_list_18ac_d820 NULL
#define pci_ss_list_18b8_b001 NULL
@@ -52222,6 +55315,9 @@ static const pciSubsystemInfo *pci_ss_list_18ec_c058[] = {
NULL
};
#endif
+#define pci_ss_list_18f6_1000 NULL
+#define pci_ss_list_18f6_1050 NULL
+#define pci_ss_list_18f6_2000 NULL
#define pci_ss_list_18f7_0001 NULL
#define pci_ss_list_18f7_0002 NULL
#define pci_ss_list_18f7_0004 NULL
@@ -52230,9 +55326,16 @@ static const pciSubsystemInfo *pci_ss_list_18ec_c058[] = {
#define pci_ss_list_1904_8139 NULL
#define pci_ss_list_1923_0040 NULL
#define pci_ss_list_1923_0100 NULL
+#define pci_ss_list_1923_0300 NULL
#define pci_ss_list_1923_0400 NULL
#define pci_ss_list_1931_000c NULL
#define pci_ss_list_1942_e511 NULL
+#define pci_ss_list_194a_1111 NULL
+#define pci_ss_list_194a_1112 NULL
+#define pci_ss_list_194a_1113 NULL
+#define pci_ss_list_194a_1114 NULL
+#define pci_ss_list_194a_1115 NULL
+#define pci_ss_list_1957_0012 NULL
#define pci_ss_list_1957_0080 NULL
#define pci_ss_list_1957_0081 NULL
#define pci_ss_list_1957_0082 NULL
@@ -52242,6 +55345,7 @@ static const pciSubsystemInfo *pci_ss_list_18ec_c058[] = {
#define pci_ss_list_1957_0086 NULL
#define pci_ss_list_1957_0087 NULL
#define pci_ss_list_1966_1975 NULL
+#define pci_ss_list_1969_1048 NULL
#define pci_ss_list_196a_0101 NULL
#define pci_ss_list_196a_0102 NULL
#define pci_ss_list_197b_2360 NULL
@@ -52253,6 +55357,11 @@ static const pciSubsystemInfo *pci_ss_list_18ec_c058[] = {
#define pci_ss_list_1989_8001 NULL
#define pci_ss_list_19ac_0001 NULL
#define pci_ss_list_19ae_0520 NULL
+#define pci_ss_list_19e7_1001 NULL
+#define pci_ss_list_19e7_1002 NULL
+#define pci_ss_list_19e7_1003 NULL
+#define pci_ss_list_19e7_1004 NULL
+#define pci_ss_list_19e7_1005 NULL
#define pci_ss_list_1a03_2000 NULL
#define pci_ss_list_1a08_0000 NULL
#define pci_ss_list_1c1c_0001 NULL
@@ -52271,6 +55380,7 @@ static const pciSubsystemInfo *pci_ss_list_18ec_c058[] = {
#define pci_ss_list_3388_0020 NULL
#ifdef VENDOR_INCLUDE_NONVIDEO
static const pciSubsystemInfo *pci_ss_list_3388_0021[] = {
+ &pci_ss_info_3388_0021_1775_ce90,
&pci_ss_info_3388_0021_4c53_1050,
&pci_ss_info_3388_0021_4c53_1080,
&pci_ss_info_3388_0021_4c53_1090,
@@ -52393,8 +55503,11 @@ static const pciSubsystemInfo *pci_ss_list_4444_0016[] = {
&pci_ss_info_4444_0016_0070_e817,
&pci_ss_info_4444_0016_0070_ff92,
&pci_ss_info_4444_0016_0270_0801,
+ &pci_ss_info_4444_0016_10fc_d038,
+ &pci_ss_info_4444_0016_10fc_d039,
&pci_ss_info_4444_0016_12ab_fff3,
&pci_ss_info_4444_0016_12ab_ffff,
+ &pci_ss_info_4444_0016_1461_c019,
&pci_ss_info_4444_0016_9005_0092,
&pci_ss_info_4444_0016_9005_0093,
NULL
@@ -52626,6 +55739,7 @@ static const pciSubsystemInfo *pci_ss_list_5333_9102[] = {
#define pci_ss_list_6666_0101 NULL
#define pci_ss_list_7063_2000 NULL
#define pci_ss_list_7063_3000 NULL
+#define pci_ss_list_7063_5500 NULL
#define pci_ss_list_8008_0010 NULL
#define pci_ss_list_8008_0011 NULL
#define pci_ss_list_8086_0007 NULL
@@ -52749,8 +55863,8 @@ static const pciSubsystemInfo *pci_ss_list_8086_100e[] = {
&pci_ss_info_8086_100e_1014_0265,
&pci_ss_info_8086_100e_1014_0267,
&pci_ss_info_8086_100e_1014_026a,
- &pci_ss_info_8086_100e_1024_0134,
&pci_ss_info_8086_100e_1028_002e,
+ &pci_ss_info_8086_100e_1028_0134,
&pci_ss_info_8086_100e_1028_0151,
&pci_ss_info_8086_100e_107b_8920,
&pci_ss_info_8086_100e_8086_001e,
@@ -52796,8 +55910,15 @@ static const pciSubsystemInfo *pci_ss_list_8086_1013[] = {
&pci_ss_info_8086_1013_8086_1113,
NULL
};
-#define pci_ss_list_8086_1014 NULL
-#define pci_ss_list_8086_1015 NULL
+static const pciSubsystemInfo *pci_ss_list_8086_1014[] = {
+ &pci_ss_info_8086_1014_8086_0014,
+ &pci_ss_info_8086_1014_8086_1014,
+ NULL
+};
+static const pciSubsystemInfo *pci_ss_list_8086_1015[] = {
+ &pci_ss_info_8086_1015_8086_1015,
+ NULL
+};
static const pciSubsystemInfo *pci_ss_list_8086_1016[] = {
&pci_ss_info_8086_1016_1014_052c,
&pci_ss_info_8086_1016_1179_0001,
@@ -52821,7 +55942,10 @@ static const pciSubsystemInfo *pci_ss_list_8086_1019[] = {
&pci_ss_info_8086_1019_8086_3427,
NULL
};
-#define pci_ss_list_8086_101a NULL
+static const pciSubsystemInfo *pci_ss_list_8086_101a[] = {
+ &pci_ss_info_8086_101a_8086_101a,
+ NULL
+};
static const pciSubsystemInfo *pci_ss_list_8086_101d[] = {
&pci_ss_info_8086_101d_8086_1000,
NULL
@@ -52837,6 +55961,7 @@ static const pciSubsystemInfo *pci_ss_list_8086_1026[] = {
&pci_ss_info_8086_1026_8086_1000,
&pci_ss_info_8086_1026_8086_1001,
&pci_ss_info_8086_1026_8086_1002,
+ &pci_ss_info_8086_1026_8086_1003,
&pci_ss_info_8086_1026_8086_1026,
NULL
};
@@ -52883,14 +56008,20 @@ static const pciSubsystemInfo *pci_ss_list_8086_1039[] = {
#define pci_ss_list_8086_103a NULL
#define pci_ss_list_8086_103b NULL
#define pci_ss_list_8086_103c NULL
-#define pci_ss_list_8086_103d NULL
+static const pciSubsystemInfo *pci_ss_list_8086_103d[] = {
+ &pci_ss_info_8086_103d_1014_0522,
+ NULL
+};
#define pci_ss_list_8086_103e NULL
static const pciSubsystemInfo *pci_ss_list_8086_1040[] = {
&pci_ss_info_8086_1040_16be_1040,
NULL
};
static const pciSubsystemInfo *pci_ss_list_8086_1043[] = {
+ &pci_ss_info_8086_1043_103c_08b0,
+ &pci_ss_info_8086_1043_8086_2522,
&pci_ss_info_8086_1043_8086_2527,
+ &pci_ss_info_8086_1043_8086_2581,
NULL
};
static const pciSubsystemInfo *pci_ss_list_8086_1048[] = {
@@ -52898,7 +56029,11 @@ static const pciSubsystemInfo *pci_ss_list_8086_1048[] = {
&pci_ss_info_8086_1048_8086_a11f,
NULL
};
+#define pci_ss_list_8086_1049 NULL
+#define pci_ss_list_8086_104a NULL
#define pci_ss_list_8086_104b NULL
+#define pci_ss_list_8086_104c NULL
+#define pci_ss_list_8086_104d NULL
static const pciSubsystemInfo *pci_ss_list_8086_1050[] = {
&pci_ss_info_8086_1050_1462_728c,
&pci_ss_info_8086_1050_1462_758c,
@@ -52910,13 +56045,35 @@ static const pciSubsystemInfo *pci_ss_list_8086_1050[] = {
#define pci_ss_list_8086_1051 NULL
#define pci_ss_list_8086_1052 NULL
#define pci_ss_list_8086_1053 NULL
+#define pci_ss_list_8086_1054 NULL
+#define pci_ss_list_8086_1055 NULL
+#define pci_ss_list_8086_1056 NULL
+#define pci_ss_list_8086_1057 NULL
#define pci_ss_list_8086_1059 NULL
+#define pci_ss_list_8086_105b NULL
static const pciSubsystemInfo *pci_ss_list_8086_105e[] = {
+ &pci_ss_info_8086_105e_103c_7044,
&pci_ss_info_8086_105e_1775_6003,
+ &pci_ss_info_8086_105e_8086_005e,
+ &pci_ss_info_8086_105e_8086_105e,
+ &pci_ss_info_8086_105e_8086_115e,
+ &pci_ss_info_8086_105e_8086_116e,
+ &pci_ss_info_8086_105e_8086_125e,
+ &pci_ss_info_8086_105e_8086_135e,
+ NULL
+};
+static const pciSubsystemInfo *pci_ss_list_8086_105f[] = {
+ &pci_ss_info_8086_105f_8086_115f,
+ &pci_ss_info_8086_105f_8086_116f,
+ &pci_ss_info_8086_105f_8086_125f,
+ &pci_ss_info_8086_105f_8086_135f,
+ NULL
+};
+static const pciSubsystemInfo *pci_ss_list_8086_1060[] = {
+ &pci_ss_info_8086_1060_8086_0060,
+ &pci_ss_info_8086_1060_8086_1060,
NULL
};
-#define pci_ss_list_8086_105f NULL
-#define pci_ss_list_8086_1060 NULL
static const pciSubsystemInfo *pci_ss_list_8086_1064[] = {
&pci_ss_info_8086_1064_1043_80f8,
NULL
@@ -52956,6 +56113,8 @@ static const pciSubsystemInfo *pci_ss_list_8086_1078[] = {
static const pciSubsystemInfo *pci_ss_list_8086_1079[] = {
&pci_ss_info_8086_1079_103c_12a6,
&pci_ss_info_8086_1079_103c_12cf,
+ &pci_ss_info_8086_1079_1775_10d0,
+ &pci_ss_info_8086_1079_1775_ce90,
&pci_ss_info_8086_1079_1fc1_0027,
&pci_ss_info_8086_1079_4c53_1090,
&pci_ss_info_8086_1079_4c53_10b0,
@@ -52976,9 +56135,21 @@ static const pciSubsystemInfo *pci_ss_list_8086_107b[] = {
&pci_ss_info_8086_107b_8086_107b,
NULL
};
-#define pci_ss_list_8086_107c NULL
-#define pci_ss_list_8086_107d NULL
-#define pci_ss_list_8086_107e NULL
+static const pciSubsystemInfo *pci_ss_list_8086_107c[] = {
+ &pci_ss_info_8086_107c_8086_1376,
+ &pci_ss_info_8086_107c_8086_1476,
+ NULL
+};
+static const pciSubsystemInfo *pci_ss_list_8086_107d[] = {
+ &pci_ss_info_8086_107d_8086_1082,
+ &pci_ss_info_8086_107d_8086_1092,
+ NULL
+};
+static const pciSubsystemInfo *pci_ss_list_8086_107e[] = {
+ &pci_ss_info_8086_107e_8086_1084,
+ &pci_ss_info_8086_107e_8086_1094,
+ NULL
+};
#define pci_ss_list_8086_107f NULL
#define pci_ss_list_8086_1080 NULL
#define pci_ss_list_8086_1081 NULL
@@ -52989,31 +56160,71 @@ static const pciSubsystemInfo *pci_ss_list_8086_107b[] = {
#define pci_ss_list_8086_1086 NULL
#define pci_ss_list_8086_1087 NULL
#define pci_ss_list_8086_1089 NULL
-#define pci_ss_list_8086_108a NULL
+static const pciSubsystemInfo *pci_ss_list_8086_108a[] = {
+ &pci_ss_info_8086_108a_8086_108a,
+ &pci_ss_info_8086_108a_8086_118a,
+ NULL
+};
#define pci_ss_list_8086_108b NULL
#define pci_ss_list_8086_108c NULL
#define pci_ss_list_8086_108e NULL
#define pci_ss_list_8086_108f NULL
+#define pci_ss_list_8086_1091 NULL
#define pci_ss_list_8086_1092 NULL
+#define pci_ss_list_8086_1093 NULL
+#define pci_ss_list_8086_1094 NULL
+#define pci_ss_list_8086_1095 NULL
#define pci_ss_list_8086_1096 NULL
#define pci_ss_list_8086_1097 NULL
#define pci_ss_list_8086_1098 NULL
-#define pci_ss_list_8086_1099 NULL
+static const pciSubsystemInfo *pci_ss_list_8086_1099[] = {
+ &pci_ss_info_8086_1099_8086_1099,
+ NULL
+};
static const pciSubsystemInfo *pci_ss_list_8086_109a[] = {
+ &pci_ss_info_8086_109a_1179_ff10,
+ &pci_ss_info_8086_109a_17aa_2001,
&pci_ss_info_8086_109a_17aa_207e,
+ &pci_ss_info_8086_109a_8086_109a,
NULL
};
#define pci_ss_list_8086_109b NULL
+static const pciSubsystemInfo *pci_ss_list_8086_109e[] = {
+ &pci_ss_info_8086_109e_8086_a01f,
+ &pci_ss_info_8086_109e_8086_a11f,
+ NULL
+};
#define pci_ss_list_8086_10a0 NULL
#define pci_ss_list_8086_10a1 NULL
+static const pciSubsystemInfo *pci_ss_list_8086_10a4[] = {
+ &pci_ss_info_8086_10a4_8086_10a4,
+ &pci_ss_info_8086_10a4_8086_11a4,
+ NULL
+};
#define pci_ss_list_8086_10b0 NULL
#define pci_ss_list_8086_10b2 NULL
#define pci_ss_list_8086_10b3 NULL
#define pci_ss_list_8086_10b4 NULL
static const pciSubsystemInfo *pci_ss_list_8086_10b5[] = {
&pci_ss_info_8086_10b5_103c_3109,
+ &pci_ss_info_8086_10b5_8086_1099,
+ &pci_ss_info_8086_10b5_8086_1199,
NULL
};
+static const pciSubsystemInfo *pci_ss_list_8086_10b9[] = {
+ &pci_ss_info_8086_10b9_8086_1083,
+ &pci_ss_info_8086_10b9_8086_1093,
+ NULL
+};
+#define pci_ss_list_8086_10ba NULL
+#define pci_ss_list_8086_10bb NULL
+static const pciSubsystemInfo *pci_ss_list_8086_10bc[] = {
+ &pci_ss_info_8086_10bc_8086_10bc,
+ &pci_ss_info_8086_10bc_8086_11bc,
+ NULL
+};
+#define pci_ss_list_8086_10c4 NULL
+#define pci_ss_list_8086_10c5 NULL
#define pci_ss_list_8086_1107 NULL
static const pciSubsystemInfo *pci_ss_list_8086_1130[] = {
&pci_ss_info_8086_1130_1025_1016,
@@ -53123,6 +56334,7 @@ static const pciSubsystemInfo *pci_ss_list_8086_1229[] = {
&pci_ss_info_8086_1229_144d_2501,
&pci_ss_info_8086_1229_144d_2502,
&pci_ss_info_8086_1229_1668_1100,
+ &pci_ss_info_8086_1229_1775_ce90,
&pci_ss_info_8086_1229_4c53_1080,
&pci_ss_info_8086_1229_4c53_10e0,
&pci_ss_info_8086_1229_8086_0001,
@@ -53281,6 +56493,11 @@ static const pciSubsystemInfo *pci_ss_list_8086_1a30[] = {
#define pci_ss_list_8086_1a31 NULL
#define pci_ss_list_8086_1a38 NULL
#define pci_ss_list_8086_1a48 NULL
+static const pciSubsystemInfo *pci_ss_list_8086_1b48[] = {
+ &pci_ss_info_8086_1b48_8086_a01f,
+ &pci_ss_info_8086_1b48_8086_a11f,
+ NULL
+};
#define pci_ss_list_8086_2410 NULL
#define pci_ss_list_8086_2411 NULL
#define pci_ss_list_8086_2412 NULL
@@ -53311,6 +56528,7 @@ static const pciSubsystemInfo *pci_ss_list_8086_2425[] = {
static const pciSubsystemInfo *pci_ss_list_8086_2442[] = {
&pci_ss_info_8086_2442_1014_01c6,
&pci_ss_info_8086_2442_1025_1016,
+ &pci_ss_info_8086_2442_1028_00c7,
&pci_ss_info_8086_2442_1028_010e,
&pci_ss_info_8086_2442_1043_8027,
&pci_ss_info_8086_2442_104d_80df,
@@ -53322,6 +56540,7 @@ static const pciSubsystemInfo *pci_ss_list_8086_2442[] = {
static const pciSubsystemInfo *pci_ss_list_8086_2443[] = {
&pci_ss_info_8086_2443_1014_01c6,
&pci_ss_info_8086_2443_1025_1016,
+ &pci_ss_info_8086_2443_1028_00c7,
&pci_ss_info_8086_2443_1028_010e,
&pci_ss_info_8086_2443_1043_8027,
&pci_ss_info_8086_2443_104d_80df,
@@ -53332,6 +56551,7 @@ static const pciSubsystemInfo *pci_ss_list_8086_2443[] = {
};
static const pciSubsystemInfo *pci_ss_list_8086_2444[] = {
&pci_ss_info_8086_2444_1025_1016,
+ &pci_ss_info_8086_2444_1028_00c7,
&pci_ss_info_8086_2444_1028_010e,
&pci_ss_info_8086_2444_1043_8027,
&pci_ss_info_8086_2444_104d_80df,
@@ -53340,6 +56560,7 @@ static const pciSubsystemInfo *pci_ss_list_8086_2444[] = {
NULL
};
static const pciSubsystemInfo *pci_ss_list_8086_2445[] = {
+ &pci_ss_info_8086_2445_0e11_000b,
&pci_ss_info_8086_2445_0e11_0088,
&pci_ss_info_8086_2445_1014_01c6,
&pci_ss_info_8086_2445_1025_1016,
@@ -53356,6 +56577,7 @@ static const pciSubsystemInfo *pci_ss_list_8086_2446[] = {
};
static const pciSubsystemInfo *pci_ss_list_8086_2448[] = {
&pci_ss_info_8086_2448_103c_099c,
+ &pci_ss_info_8086_2448_144d_c00c,
&pci_ss_info_8086_2448_1734_1055,
NULL
};
@@ -53399,6 +56621,7 @@ static const pciSubsystemInfo *pci_ss_list_8086_244a[] = {
};
static const pciSubsystemInfo *pci_ss_list_8086_244b[] = {
&pci_ss_info_8086_244b_1014_01c6,
+ &pci_ss_info_8086_244b_1028_00c7,
&pci_ss_info_8086_244b_1028_010e,
&pci_ss_info_8086_244b_1043_8027,
&pci_ss_info_8086_244b_147b_0507,
@@ -53493,13 +56716,16 @@ static const pciSubsystemInfo *pci_ss_list_8086_24c0[] = {
#define pci_ss_list_8086_24c1 NULL
static const pciSubsystemInfo *pci_ss_list_8086_24c2[] = {
&pci_ss_info_8086_24c2_1014_0267,
+ &pci_ss_info_8086_24c2_1014_052d,
&pci_ss_info_8086_24c2_1025_005a,
&pci_ss_info_8086_24c2_1028_0126,
&pci_ss_info_8086_24c2_1028_0163,
&pci_ss_info_8086_24c2_1028_0196,
&pci_ss_info_8086_24c2_103c_088c,
&pci_ss_info_8086_24c2_103c_0890,
+ &pci_ss_info_8086_24c2_103c_08b0,
&pci_ss_info_8086_24c2_1071_8160,
+ &pci_ss_info_8086_24c2_144d_c00c,
&pci_ss_info_8086_24c2_1462_5800,
&pci_ss_info_8086_24c2_1509_2990,
&pci_ss_info_8086_24c2_1734_1004,
@@ -53510,10 +56736,12 @@ static const pciSubsystemInfo *pci_ss_list_8086_24c2[] = {
};
static const pciSubsystemInfo *pci_ss_list_8086_24c3[] = {
&pci_ss_info_8086_24c3_1014_0267,
+ &pci_ss_info_8086_24c3_1014_052d,
&pci_ss_info_8086_24c3_1025_005a,
&pci_ss_info_8086_24c3_1028_0126,
&pci_ss_info_8086_24c3_103c_088c,
&pci_ss_info_8086_24c3_103c_0890,
+ &pci_ss_info_8086_24c3_103c_08b0,
&pci_ss_info_8086_24c3_1071_8160,
&pci_ss_info_8086_24c3_1458_24c2,
&pci_ss_info_8086_24c3_1462_5800,
@@ -53524,13 +56752,16 @@ static const pciSubsystemInfo *pci_ss_list_8086_24c3[] = {
};
static const pciSubsystemInfo *pci_ss_list_8086_24c4[] = {
&pci_ss_info_8086_24c4_1014_0267,
+ &pci_ss_info_8086_24c4_1014_052d,
&pci_ss_info_8086_24c4_1025_005a,
&pci_ss_info_8086_24c4_1028_0126,
&pci_ss_info_8086_24c4_1028_0163,
&pci_ss_info_8086_24c4_1028_0196,
&pci_ss_info_8086_24c4_103c_088c,
&pci_ss_info_8086_24c4_103c_0890,
+ &pci_ss_info_8086_24c4_103c_08b0,
&pci_ss_info_8086_24c4_1071_8160,
+ &pci_ss_info_8086_24c4_144d_c00c,
&pci_ss_info_8086_24c4_1462_5800,
&pci_ss_info_8086_24c4_1509_2990,
&pci_ss_info_8086_24c4_1734_1004,
@@ -53541,13 +56772,16 @@ static const pciSubsystemInfo *pci_ss_list_8086_24c4[] = {
static const pciSubsystemInfo *pci_ss_list_8086_24c5[] = {
&pci_ss_info_8086_24c5_0e11_00b8,
&pci_ss_info_8086_24c5_1014_0267,
+ &pci_ss_info_8086_24c5_1014_055f,
&pci_ss_info_8086_24c5_1025_005a,
&pci_ss_info_8086_24c5_1028_0139,
&pci_ss_info_8086_24c5_1028_0163,
&pci_ss_info_8086_24c5_1028_0196,
&pci_ss_info_8086_24c5_103c_088c,
&pci_ss_info_8086_24c5_103c_0890,
+ &pci_ss_info_8086_24c5_103c_08b0,
&pci_ss_info_8086_24c5_1071_8160,
+ &pci_ss_info_8086_24c5_144d_c00c,
&pci_ss_info_8086_24c5_1458_a002,
&pci_ss_info_8086_24c5_1462_5800,
&pci_ss_info_8086_24c5_1734_1005,
@@ -53555,23 +56789,29 @@ static const pciSubsystemInfo *pci_ss_list_8086_24c5[] = {
NULL
};
static const pciSubsystemInfo *pci_ss_list_8086_24c6[] = {
+ &pci_ss_info_8086_24c6_1014_0559,
&pci_ss_info_8086_24c6_1025_003c,
&pci_ss_info_8086_24c6_1025_005a,
&pci_ss_info_8086_24c6_1028_0196,
&pci_ss_info_8086_24c6_103c_088c,
&pci_ss_info_8086_24c6_103c_0890,
+ &pci_ss_info_8086_24c6_103c_08b0,
&pci_ss_info_8086_24c6_1071_8160,
+ &pci_ss_info_8086_24c6_144d_c00c,
NULL
};
static const pciSubsystemInfo *pci_ss_list_8086_24c7[] = {
&pci_ss_info_8086_24c7_1014_0267,
+ &pci_ss_info_8086_24c7_1014_052d,
&pci_ss_info_8086_24c7_1025_005a,
&pci_ss_info_8086_24c7_1028_0126,
&pci_ss_info_8086_24c7_1028_0163,
&pci_ss_info_8086_24c7_1028_0196,
&pci_ss_info_8086_24c7_103c_088c,
&pci_ss_info_8086_24c7_103c_0890,
+ &pci_ss_info_8086_24c7_103c_08b0,
&pci_ss_info_8086_24c7_1071_8160,
+ &pci_ss_info_8086_24c7_144d_c00c,
&pci_ss_info_8086_24c7_1462_5800,
&pci_ss_info_8086_24c7_1509_2990,
&pci_ss_info_8086_24c7_1734_1004,
@@ -53580,12 +56820,15 @@ static const pciSubsystemInfo *pci_ss_list_8086_24c7[] = {
NULL
};
static const pciSubsystemInfo *pci_ss_list_8086_24ca[] = {
+ &pci_ss_info_8086_24ca_1014_052d,
&pci_ss_info_8086_24ca_1025_005a,
&pci_ss_info_8086_24ca_1028_0163,
&pci_ss_info_8086_24ca_1028_0196,
&pci_ss_info_8086_24ca_103c_088c,
&pci_ss_info_8086_24ca_103c_0890,
+ &pci_ss_info_8086_24ca_103c_08b0,
&pci_ss_info_8086_24ca_1071_8160,
+ &pci_ss_info_8086_24ca_144d_c00c,
&pci_ss_info_8086_24ca_1734_1055,
&pci_ss_info_8086_24ca_8086_4541,
NULL
@@ -53600,11 +56843,13 @@ static const pciSubsystemInfo *pci_ss_list_8086_24cb[] = {
NULL
};
static const pciSubsystemInfo *pci_ss_list_8086_24cc[] = {
+ &pci_ss_info_8086_24cc_144d_c00c,
&pci_ss_info_8086_24cc_1734_1055,
NULL
};
static const pciSubsystemInfo *pci_ss_list_8086_24cd[] = {
&pci_ss_info_8086_24cd_1014_0267,
+ &pci_ss_info_8086_24cd_1014_052e,
&pci_ss_info_8086_24cd_1025_005a,
&pci_ss_info_8086_24cd_1028_011d,
&pci_ss_info_8086_24cd_1028_0126,
@@ -53613,7 +56858,10 @@ static const pciSubsystemInfo *pci_ss_list_8086_24cd[] = {
&pci_ss_info_8086_24cd_1028_0196,
&pci_ss_info_8086_24cd_103c_088c,
&pci_ss_info_8086_24cd_103c_0890,
+ &pci_ss_info_8086_24cd_103c_08b0,
&pci_ss_info_8086_24cd_1071_8160,
+ &pci_ss_info_8086_24cd_1179_ff00,
+ &pci_ss_info_8086_24cd_144d_c00c,
&pci_ss_info_8086_24cd_1462_3981,
&pci_ss_info_8086_24cd_1509_1968,
&pci_ss_info_8086_24cd_1734_1004,
@@ -53632,6 +56880,7 @@ static const pciSubsystemInfo *pci_ss_list_8086_24d1[] = {
&pci_ss_info_8086_24d1_15d9_4580,
&pci_ss_info_8086_24d1_8086_3427,
&pci_ss_info_8086_24d1_8086_4246,
+ &pci_ss_info_8086_24d1_8086_4c43,
&pci_ss_info_8086_24d1_8086_524c,
NULL
};
@@ -53649,6 +56898,7 @@ static const pciSubsystemInfo *pci_ss_list_8086_24d2[] = {
&pci_ss_info_8086_24d2_1734_101c,
&pci_ss_info_8086_24d2_8086_3427,
&pci_ss_info_8086_24d2_8086_4246,
+ &pci_ss_info_8086_24d2_8086_4c43,
&pci_ss_info_8086_24d2_8086_524c,
NULL
};
@@ -53656,6 +56906,7 @@ static const pciSubsystemInfo *pci_ss_list_8086_24d3[] = {
&pci_ss_info_8086_24d3_1014_02ed,
&pci_ss_info_8086_24d3_1028_0156,
&pci_ss_info_8086_24d3_1028_0169,
+ &pci_ss_info_8086_24d3_103c_12bc,
&pci_ss_info_8086_24d3_1043_80a6,
&pci_ss_info_8086_24d3_1458_24d2,
&pci_ss_info_8086_24d3_1462_7280,
@@ -53663,6 +56914,7 @@ static const pciSubsystemInfo *pci_ss_list_8086_24d3[] = {
&pci_ss_info_8086_24d3_1734_101c,
&pci_ss_info_8086_24d3_8086_3427,
&pci_ss_info_8086_24d3_8086_4246,
+ &pci_ss_info_8086_24d3_8086_4c43,
&pci_ss_info_8086_24d3_8086_524c,
NULL
};
@@ -53680,10 +56932,12 @@ static const pciSubsystemInfo *pci_ss_list_8086_24d4[] = {
&pci_ss_info_8086_24d4_1734_101c,
&pci_ss_info_8086_24d4_8086_3427,
&pci_ss_info_8086_24d4_8086_4246,
+ &pci_ss_info_8086_24d4_8086_4c43,
&pci_ss_info_8086_24d4_8086_524c,
NULL
};
static const pciSubsystemInfo *pci_ss_list_8086_24d5[] = {
+ &pci_ss_info_8086_24d5_100a_147b,
&pci_ss_info_8086_24d5_1028_0169,
&pci_ss_info_8086_24d5_103c_006a,
&pci_ss_info_8086_24d5_103c_12bc,
@@ -53695,6 +56949,7 @@ static const pciSubsystemInfo *pci_ss_list_8086_24d5[] = {
&pci_ss_info_8086_24d5_8086_a000,
&pci_ss_info_8086_24d5_8086_e000,
&pci_ss_info_8086_24d5_8086_e001,
+ &pci_ss_info_8086_24d5_8086_e002,
NULL
};
static const pciSubsystemInfo *pci_ss_list_8086_24d6[] = {
@@ -53714,6 +56969,7 @@ static const pciSubsystemInfo *pci_ss_list_8086_24d7[] = {
&pci_ss_info_8086_24d7_1734_101c,
&pci_ss_info_8086_24d7_8086_3427,
&pci_ss_info_8086_24d7_8086_4246,
+ &pci_ss_info_8086_24d7_8086_4c43,
&pci_ss_info_8086_24d7_8086_524c,
NULL
};
@@ -53732,6 +56988,7 @@ static const pciSubsystemInfo *pci_ss_list_8086_24db[] = {
&pci_ss_info_8086_24db_8086_24db,
&pci_ss_info_8086_24db_8086_3427,
&pci_ss_info_8086_24db_8086_4246,
+ &pci_ss_info_8086_24db_8086_4c43,
&pci_ss_info_8086_24db_8086_524c,
NULL
};
@@ -53748,6 +57005,7 @@ static const pciSubsystemInfo *pci_ss_list_8086_24dd[] = {
&pci_ss_info_8086_24dd_1462_7280,
&pci_ss_info_8086_24dd_8086_3427,
&pci_ss_info_8086_24dd_8086_4246,
+ &pci_ss_info_8086_24dd_8086_4c43,
&pci_ss_info_8086_24dd_8086_524c,
NULL
};
@@ -53761,6 +57019,7 @@ static const pciSubsystemInfo *pci_ss_list_8086_24de[] = {
&pci_ss_info_8086_24de_1734_101c,
&pci_ss_info_8086_24de_8086_3427,
&pci_ss_info_8086_24de_8086_4246,
+ &pci_ss_info_8086_24de_8086_4c43,
&pci_ss_info_8086_24de_8086_524c,
NULL
};
@@ -53779,6 +57038,7 @@ static const pciSubsystemInfo *pci_ss_list_8086_2501[] = {
#define pci_ss_list_8086_2520 NULL
#define pci_ss_list_8086_2521 NULL
static const pciSubsystemInfo *pci_ss_list_8086_2530[] = {
+ &pci_ss_info_8086_2530_1028_00c7,
&pci_ss_info_8086_2530_147b_0507,
NULL
};
@@ -53831,6 +57091,7 @@ static const pciSubsystemInfo *pci_ss_list_8086_2562[] = {
};
static const pciSubsystemInfo *pci_ss_list_8086_2570[] = {
&pci_ss_info_8086_2570_103c_006a,
+ &pci_ss_info_8086_2570_103c_12bc,
&pci_ss_info_8086_2570_1043_80f2,
&pci_ss_info_8086_2570_1458_2570,
NULL
@@ -53841,6 +57102,7 @@ static const pciSubsystemInfo *pci_ss_list_8086_2572[] = {
&pci_ss_info_8086_2572_103c_12bc,
&pci_ss_info_8086_2572_1043_80a5,
&pci_ss_info_8086_2572_8086_4246,
+ &pci_ss_info_8086_2572_8086_4c43,
NULL
};
#define pci_ss_list_8086_2573 NULL
@@ -53889,51 +57151,66 @@ static const pciSubsystemInfo *pci_ss_list_8086_2592[] = {
};
#define pci_ss_list_8086_25a1 NULL
static const pciSubsystemInfo *pci_ss_list_8086_25a2[] = {
+ &pci_ss_info_8086_25a2_1775_10d0,
+ &pci_ss_info_8086_25a2_1775_ce90,
&pci_ss_info_8086_25a2_4c53_10b0,
&pci_ss_info_8086_25a2_4c53_10e0,
NULL
};
static const pciSubsystemInfo *pci_ss_list_8086_25a3[] = {
+ &pci_ss_info_8086_25a3_1775_ce90,
&pci_ss_info_8086_25a3_4c53_10b0,
&pci_ss_info_8086_25a3_4c53_10d0,
&pci_ss_info_8086_25a3_4c53_10e0,
NULL
};
static const pciSubsystemInfo *pci_ss_list_8086_25a4[] = {
+ &pci_ss_info_8086_25a4_1775_10d0,
+ &pci_ss_info_8086_25a4_1775_ce90,
&pci_ss_info_8086_25a4_4c53_10b0,
&pci_ss_info_8086_25a4_4c53_10d0,
&pci_ss_info_8086_25a4_4c53_10e0,
NULL
};
static const pciSubsystemInfo *pci_ss_list_8086_25a6[] = {
+ &pci_ss_info_8086_25a6_1775_ce90,
&pci_ss_info_8086_25a6_4c53_10b0,
NULL
};
#define pci_ss_list_8086_25a7 NULL
static const pciSubsystemInfo *pci_ss_list_8086_25a9[] = {
+ &pci_ss_info_8086_25a9_1775_10d0,
+ &pci_ss_info_8086_25a9_1775_ce90,
&pci_ss_info_8086_25a9_4c53_10b0,
&pci_ss_info_8086_25a9_4c53_10d0,
&pci_ss_info_8086_25a9_4c53_10e0,
NULL
};
static const pciSubsystemInfo *pci_ss_list_8086_25aa[] = {
+ &pci_ss_info_8086_25aa_1775_ce90,
&pci_ss_info_8086_25aa_4c53_10b0,
&pci_ss_info_8086_25aa_4c53_10e0,
NULL
};
static const pciSubsystemInfo *pci_ss_list_8086_25ab[] = {
+ &pci_ss_info_8086_25ab_1775_10d0,
+ &pci_ss_info_8086_25ab_1775_ce90,
&pci_ss_info_8086_25ab_4c53_10b0,
&pci_ss_info_8086_25ab_4c53_10d0,
&pci_ss_info_8086_25ab_4c53_10e0,
NULL
};
static const pciSubsystemInfo *pci_ss_list_8086_25ac[] = {
+ &pci_ss_info_8086_25ac_1775_10d0,
+ &pci_ss_info_8086_25ac_1775_ce90,
&pci_ss_info_8086_25ac_4c53_10b0,
&pci_ss_info_8086_25ac_4c53_10d0,
&pci_ss_info_8086_25ac_4c53_10e0,
NULL
};
static const pciSubsystemInfo *pci_ss_list_8086_25ad[] = {
+ &pci_ss_info_8086_25ad_1775_10d0,
+ &pci_ss_info_8086_25ad_1775_ce90,
&pci_ss_info_8086_25ad_4c53_10b0,
&pci_ss_info_8086_25ad_4c53_10d0,
&pci_ss_info_8086_25ad_4c53_10e0,
@@ -53955,7 +57232,6 @@ static const pciSubsystemInfo *pci_ss_list_8086_25b0[] = {
#define pci_ss_list_8086_25e5 NULL
#define pci_ss_list_8086_25e6 NULL
#define pci_ss_list_8086_25e7 NULL
-#define pci_ss_list_8086_25e8 NULL
#define pci_ss_list_8086_25f0 NULL
#define pci_ss_list_8086_25f1 NULL
#define pci_ss_list_8086_25f3 NULL
@@ -54064,6 +57340,7 @@ static const pciSubsystemInfo *pci_ss_list_8086_265c[] = {
&pci_ss_info_8086_265c_1458_5006,
&pci_ss_info_8086_265c_1462_7028,
&pci_ss_info_8086_265c_1734_105c,
+ &pci_ss_info_8086_265c_8086_265c,
NULL
};
static const pciSubsystemInfo *pci_ss_list_8086_2660[] = {
@@ -54074,6 +57351,7 @@ static const pciSubsystemInfo *pci_ss_list_8086_2660[] = {
#define pci_ss_list_8086_2664 NULL
#define pci_ss_list_8086_2666 NULL
static const pciSubsystemInfo *pci_ss_list_8086_2668[] = {
+ &pci_ss_info_8086_2668_103c_2a09,
&pci_ss_info_8086_2668_1043_814e,
NULL
};
@@ -54132,6 +57410,7 @@ static const pciSubsystemInfo *pci_ss_list_8086_266f[] = {
#define pci_ss_list_8086_269b NULL
#define pci_ss_list_8086_269e NULL
static const pciSubsystemInfo *pci_ss_list_8086_2770[] = {
+ &pci_ss_info_8086_2770_107b_5048,
&pci_ss_info_8086_2770_8086_544e,
NULL
};
@@ -54158,43 +57437,70 @@ static const pciSubsystemInfo *pci_ss_list_8086_2792[] = {
&pci_ss_info_8086_2792_1043_1881,
NULL
};
-#define pci_ss_list_8086_27a0 NULL
+static const pciSubsystemInfo *pci_ss_list_8086_27a0[] = {
+ &pci_ss_info_8086_27a0_17aa_2017,
+ NULL
+};
#define pci_ss_list_8086_27a1 NULL
-#define pci_ss_list_8086_27a2 NULL
-#define pci_ss_list_8086_27a6 NULL
+static const pciSubsystemInfo *pci_ss_list_8086_27a2[] = {
+ &pci_ss_info_8086_27a2_17aa_201a,
+ NULL
+};
+static const pciSubsystemInfo *pci_ss_list_8086_27a6[] = {
+ &pci_ss_info_8086_27a6_17aa_201a,
+ NULL
+};
#define pci_ss_list_8086_27b0 NULL
static const pciSubsystemInfo *pci_ss_list_8086_27b8[] = {
+ &pci_ss_info_8086_27b8_107b_5048,
&pci_ss_info_8086_27b8_8086_544e,
NULL
};
-#define pci_ss_list_8086_27b9 NULL
+static const pciSubsystemInfo *pci_ss_list_8086_27b9[] = {
+ &pci_ss_info_8086_27b9_10f7_8338,
+ &pci_ss_info_8086_27b9_17aa_2009,
+ NULL
+};
#define pci_ss_list_8086_27bd NULL
static const pciSubsystemInfo *pci_ss_list_8086_27c0[] = {
+ &pci_ss_info_8086_27c0_107b_5048,
&pci_ss_info_8086_27c0_8086_544e,
NULL
};
#define pci_ss_list_8086_27c1 NULL
#define pci_ss_list_8086_27c3 NULL
#define pci_ss_list_8086_27c4 NULL
-#define pci_ss_list_8086_27c5 NULL
+static const pciSubsystemInfo *pci_ss_list_8086_27c5[] = {
+ &pci_ss_info_8086_27c5_17aa_200d,
+ NULL
+};
#define pci_ss_list_8086_27c6 NULL
static const pciSubsystemInfo *pci_ss_list_8086_27c8[] = {
+ &pci_ss_info_8086_27c8_107b_5048,
+ &pci_ss_info_8086_27c8_17aa_200a,
&pci_ss_info_8086_27c8_8086_544e,
NULL
};
static const pciSubsystemInfo *pci_ss_list_8086_27c9[] = {
+ &pci_ss_info_8086_27c9_107b_5048,
+ &pci_ss_info_8086_27c9_17aa_200a,
&pci_ss_info_8086_27c9_8086_544e,
NULL
};
static const pciSubsystemInfo *pci_ss_list_8086_27ca[] = {
+ &pci_ss_info_8086_27ca_107b_5048,
+ &pci_ss_info_8086_27ca_17aa_200a,
&pci_ss_info_8086_27ca_8086_544e,
NULL
};
static const pciSubsystemInfo *pci_ss_list_8086_27cb[] = {
+ &pci_ss_info_8086_27cb_107b_5048,
+ &pci_ss_info_8086_27cb_17aa_200a,
&pci_ss_info_8086_27cb_8086_544e,
NULL
};
static const pciSubsystemInfo *pci_ss_list_8086_27cc[] = {
+ &pci_ss_info_8086_27cc_17aa_200b,
&pci_ss_info_8086_27cc_8086_544e,
NULL
};
@@ -54202,8 +57508,17 @@ static const pciSubsystemInfo *pci_ss_list_8086_27cc[] = {
#define pci_ss_list_8086_27d2 NULL
#define pci_ss_list_8086_27d4 NULL
#define pci_ss_list_8086_27d6 NULL
-#define pci_ss_list_8086_27d8 NULL
+static const pciSubsystemInfo *pci_ss_list_8086_27d8[] = {
+ &pci_ss_info_8086_27d8_107b_5048,
+ &pci_ss_info_8086_27d8_10f7_8338,
+ &pci_ss_info_8086_27d8_1179_ff31,
+ &pci_ss_info_8086_27d8_152d_0753,
+ &pci_ss_info_8086_27d8_17aa_2010,
+ NULL
+};
static const pciSubsystemInfo *pci_ss_list_8086_27da[] = {
+ &pci_ss_info_8086_27da_10f7_8338,
+ &pci_ss_info_8086_27da_17aa_200f,
&pci_ss_info_8086_27da_8086_544e,
NULL
};
@@ -54214,6 +57529,9 @@ static const pciSubsystemInfo *pci_ss_list_8086_27dc[] = {
#define pci_ss_list_8086_27dd NULL
#define pci_ss_list_8086_27de NULL
static const pciSubsystemInfo *pci_ss_list_8086_27df[] = {
+ &pci_ss_info_8086_27df_107b_5048,
+ &pci_ss_info_8086_27df_10f7_8338,
+ &pci_ss_info_8086_27df_17aa_200c,
&pci_ss_info_8086_27df_8086_544e,
NULL
};
@@ -54224,22 +57542,43 @@ static const pciSubsystemInfo *pci_ss_list_8086_27df[] = {
#define pci_ss_list_8086_2812 NULL
#define pci_ss_list_8086_2814 NULL
#define pci_ss_list_8086_2815 NULL
-#define pci_ss_list_8086_2820 NULL
+static const pciSubsystemInfo *pci_ss_list_8086_2820[] = {
+ &pci_ss_info_8086_2820_1462_7235,
+ NULL
+};
#define pci_ss_list_8086_2821 NULL
#define pci_ss_list_8086_2822 NULL
#define pci_ss_list_8086_2824 NULL
-#define pci_ss_list_8086_2825 NULL
+static const pciSubsystemInfo *pci_ss_list_8086_2825[] = {
+ &pci_ss_info_8086_2825_1462_7235,
+ NULL
+};
#define pci_ss_list_8086_2828 NULL
#define pci_ss_list_8086_2829 NULL
#define pci_ss_list_8086_282a NULL
-#define pci_ss_list_8086_2830 NULL
-#define pci_ss_list_8086_2831 NULL
+static const pciSubsystemInfo *pci_ss_list_8086_2830[] = {
+ &pci_ss_info_8086_2830_1462_7235,
+ NULL
+};
+static const pciSubsystemInfo *pci_ss_list_8086_2831[] = {
+ &pci_ss_info_8086_2831_1462_7235,
+ NULL
+};
#define pci_ss_list_8086_2832 NULL
-#define pci_ss_list_8086_2834 NULL
+static const pciSubsystemInfo *pci_ss_list_8086_2834[] = {
+ &pci_ss_info_8086_2834_1462_7235,
+ NULL
+};
#define pci_ss_list_8086_2835 NULL
-#define pci_ss_list_8086_2836 NULL
+static const pciSubsystemInfo *pci_ss_list_8086_2836[] = {
+ &pci_ss_info_8086_2836_1462_7235,
+ NULL
+};
#define pci_ss_list_8086_283a NULL
-#define pci_ss_list_8086_283e NULL
+static const pciSubsystemInfo *pci_ss_list_8086_283e[] = {
+ &pci_ss_info_8086_283e_1462_7235,
+ NULL
+};
#define pci_ss_list_8086_283f NULL
#define pci_ss_list_8086_2841 NULL
#define pci_ss_list_8086_2843 NULL
@@ -54254,8 +57593,12 @@ static const pciSubsystemInfo *pci_ss_list_8086_27df[] = {
#define pci_ss_list_8086_2972 NULL
#define pci_ss_list_8086_2973 NULL
#define pci_ss_list_8086_2974 NULL
+#define pci_ss_list_8086_2975 NULL
#define pci_ss_list_8086_2976 NULL
#define pci_ss_list_8086_2977 NULL
+#define pci_ss_list_8086_2980 NULL
+#define pci_ss_list_8086_2981 NULL
+#define pci_ss_list_8086_2982 NULL
#define pci_ss_list_8086_2990 NULL
#define pci_ss_list_8086_2991 NULL
#define pci_ss_list_8086_2992 NULL
@@ -54276,15 +57619,27 @@ static const pciSubsystemInfo *pci_ss_list_8086_27df[] = {
#define pci_ss_list_8086_2a01 NULL
#define pci_ss_list_8086_2a02 NULL
#define pci_ss_list_8086_2a03 NULL
+#define pci_ss_list_8086_2a04 NULL
+#define pci_ss_list_8086_2a05 NULL
+#define pci_ss_list_8086_2a06 NULL
+#define pci_ss_list_8086_2a07 NULL
#define pci_ss_list_8086_3092 NULL
-#define pci_ss_list_8086_3200 NULL
+static const pciSubsystemInfo *pci_ss_list_8086_3200[] = {
+ &pci_ss_info_8086_3200_1775_c200,
+ NULL
+};
static const pciSubsystemInfo *pci_ss_list_8086_3340[] = {
&pci_ss_info_8086_3340_1025_005a,
&pci_ss_info_8086_3340_103c_088c,
&pci_ss_info_8086_3340_103c_0890,
+ &pci_ss_info_8086_3340_103c_08b0,
+ &pci_ss_info_8086_3340_144d_c00c,
+ NULL
+};
+static const pciSubsystemInfo *pci_ss_list_8086_3341[] = {
+ &pci_ss_info_8086_3341_144d_c00c,
NULL
};
-#define pci_ss_list_8086_3341 NULL
#define pci_ss_list_8086_3500 NULL
#define pci_ss_list_8086_3501 NULL
#define pci_ss_list_8086_3504 NULL
@@ -54310,10 +57665,13 @@ static const pciSubsystemInfo *pci_ss_list_8086_3577[] = {
};
#define pci_ss_list_8086_3578 NULL
static const pciSubsystemInfo *pci_ss_list_8086_3580[] = {
+ &pci_ss_info_8086_3580_1014_055c,
&pci_ss_info_8086_3580_1028_0139,
&pci_ss_info_8086_3580_1028_0163,
&pci_ss_info_8086_3580_1028_0196,
&pci_ss_info_8086_3580_1734_1055,
+ &pci_ss_info_8086_3580_1775_10d0,
+ &pci_ss_info_8086_3580_1775_ce90,
&pci_ss_info_8086_3580_4c53_10b0,
&pci_ss_info_8086_3580_4c53_10e0,
NULL
@@ -54323,26 +57681,35 @@ static const pciSubsystemInfo *pci_ss_list_8086_3581[] = {
NULL
};
static const pciSubsystemInfo *pci_ss_list_8086_3582[] = {
+ &pci_ss_info_8086_3582_1014_0562,
&pci_ss_info_8086_3582_1028_0139,
&pci_ss_info_8086_3582_1028_0163,
+ &pci_ss_info_8086_3582_1775_10d0,
+ &pci_ss_info_8086_3582_1775_ce90,
&pci_ss_info_8086_3582_4c53_10b0,
&pci_ss_info_8086_3582_4c53_10e0,
NULL
};
static const pciSubsystemInfo *pci_ss_list_8086_3584[] = {
+ &pci_ss_info_8086_3584_1014_055d,
&pci_ss_info_8086_3584_1028_0139,
&pci_ss_info_8086_3584_1028_0163,
&pci_ss_info_8086_3584_1028_0196,
&pci_ss_info_8086_3584_1734_1055,
+ &pci_ss_info_8086_3584_1775_10d0,
+ &pci_ss_info_8086_3584_1775_ce90,
&pci_ss_info_8086_3584_4c53_10b0,
&pci_ss_info_8086_3584_4c53_10e0,
NULL
};
static const pciSubsystemInfo *pci_ss_list_8086_3585[] = {
+ &pci_ss_info_8086_3585_1014_055e,
&pci_ss_info_8086_3585_1028_0139,
&pci_ss_info_8086_3585_1028_0163,
&pci_ss_info_8086_3585_1028_0196,
&pci_ss_info_8086_3585_1734_1055,
+ &pci_ss_info_8086_3585_1775_10d0,
+ &pci_ss_info_8086_3585_1775_ce90,
&pci_ss_info_8086_3585_4c53_10b0,
&pci_ss_info_8086_3585_4c53_10e0,
NULL
@@ -54375,6 +57742,12 @@ static const pciSubsystemInfo *pci_ss_list_8086_359e[] = {
&pci_ss_info_8086_359e_1028_0169,
NULL
};
+#define pci_ss_list_8086_35b0 NULL
+#define pci_ss_list_8086_35b1 NULL
+#define pci_ss_list_8086_35b5 NULL
+#define pci_ss_list_8086_35b6 NULL
+#define pci_ss_list_8086_35b7 NULL
+#define pci_ss_list_8086_35c8 NULL
#define pci_ss_list_8086_4220 NULL
static const pciSubsystemInfo *pci_ss_list_8086_4222[] = {
&pci_ss_info_8086_4222_8086_1005,
@@ -54392,6 +57765,7 @@ static const pciSubsystemInfo *pci_ss_list_8086_4227[] = {
&pci_ss_info_8086_4227_8086_1014,
NULL
};
+#define pci_ss_list_8086_5001 NULL
#define pci_ss_list_8086_5200 NULL
static const pciSubsystemInfo *pci_ss_list_8086_5201[] = {
&pci_ss_info_8086_5201_8086_0001,
@@ -54529,12 +57903,15 @@ static const pciSubsystemInfo *pci_ss_list_8086_8500[] = {
#define pci_ss_list_8086_b152 NULL
#define pci_ss_list_8086_b154 NULL
static const pciSubsystemInfo *pci_ss_list_8086_b555[] = {
+ &pci_ss_info_8086_b555_12c7_5005,
+ &pci_ss_info_8086_b555_12c7_5006,
&pci_ss_info_8086_b555_12d9_000a,
&pci_ss_info_8086_b555_4c53_1050,
&pci_ss_info_8086_b555_4c53_1051,
&pci_ss_info_8086_b555_e4bf_1000,
NULL
};
+#define pci_ss_list_8686_1010 NULL
#define pci_ss_list_8800_2008 NULL
#define pci_ss_list_8c4a_1980 NULL
#define pci_ss_list_8e2e_3000 NULL
@@ -54788,9 +58165,13 @@ static const pciSubsystemInfo *pci_ss_list_9005_0285[] = {
&pci_ss_info_9005_0285_9005_0298,
&pci_ss_info_9005_0285_9005_0299,
&pci_ss_info_9005_0285_9005_029a,
+ &pci_ss_info_9005_0285_9005_02b5,
+ &pci_ss_info_9005_0285_9005_02b6,
+ &pci_ss_info_9005_0285_9005_02b7,
NULL
};
static const pciSubsystemInfo *pci_ss_list_9005_0286[] = {
+ &pci_ss_info_9005_0286_1014_034d,
&pci_ss_info_9005_0286_1014_9540,
&pci_ss_info_9005_0286_1014_9580,
&pci_ss_info_9005_0286_9005_028c,
@@ -54811,9 +58192,37 @@ static const pciSubsystemInfo *pci_ss_list_9005_0286[] = {
&pci_ss_info_9005_0286_9005_02a8,
&pci_ss_info_9005_0286_9005_02a9,
&pci_ss_info_9005_0286_9005_02aa,
+ &pci_ss_info_9005_0286_9005_02ac,
+ &pci_ss_info_9005_0286_9005_02b3,
+ &pci_ss_info_9005_0286_9005_02b4,
&pci_ss_info_9005_0286_9005_0800,
NULL
};
+static const pciSubsystemInfo *pci_ss_list_9005_0410[] = {
+ &pci_ss_info_9005_0410_9005_0410,
+ &pci_ss_info_9005_0410_9005_0411,
+ NULL
+};
+static const pciSubsystemInfo *pci_ss_list_9005_0412[] = {
+ &pci_ss_info_9005_0412_9005_0412,
+ &pci_ss_info_9005_0412_9005_0413,
+ NULL
+};
+#define pci_ss_list_9005_041e NULL
+static const pciSubsystemInfo *pci_ss_list_9005_041f[] = {
+ &pci_ss_info_9005_041f_9005_041f,
+ NULL
+};
+static const pciSubsystemInfo *pci_ss_list_9005_0430[] = {
+ &pci_ss_info_9005_0430_9005_0430,
+ NULL
+};
+static const pciSubsystemInfo *pci_ss_list_9005_0432[] = {
+ &pci_ss_info_9005_0432_9005_0432,
+ NULL
+};
+#define pci_ss_list_9005_043e NULL
+#define pci_ss_list_9005_043f NULL
static const pciSubsystemInfo *pci_ss_list_9005_0500[] = {
&pci_ss_info_9005_0500_1014_02c1,
&pci_ss_info_9005_0500_1014_02c2,
@@ -54892,6 +58301,7 @@ static const pciSubsystemInfo *pci_ss_list_9710_9855[] = {
#define pci_ss_list_9902_0003 NULL
#define pci_ss_list_a727_0013 NULL
#define pci_ss_list_aecb_6250 NULL
+#define pci_ss_list_affe_02e1 NULL
#define pci_ss_list_affe_dead NULL
#define pci_ss_list_cafe_0003 NULL
#define pci_ss_list_cddd_0101 NULL
@@ -55048,8 +58458,10 @@ static const pciSubsystemInfo *pci_ss_list_0357[] = {
#endif
#define pci_ss_list_0432 NULL
#define pci_ss_list_045e NULL
+#define pci_ss_list_0482 NULL
#define pci_ss_list_04cf NULL
#define pci_ss_list_050d NULL
+#define pci_ss_list_05a9 NULL
#define pci_ss_list_05e3 NULL
#define pci_ss_list_066f NULL
#ifdef VENDOR_INCLUDE_NONVIDEO
@@ -55069,11 +58481,14 @@ static const pciSubsystemInfo *pci_ss_list_0925[] = {
NULL
};
#endif
+#define pci_ss_list_093a NULL
#define pci_ss_list_09c1 NULL
#define pci_ss_list_0a89 NULL
#define pci_ss_list_0b0b NULL
#define pci_ss_list_0b49 NULL
+#define pci_ss_list_0ccd NULL
static const pciSubsystemInfo *pci_ss_list_0e11[] = {
+ &pci_ss_info_0e11_000b,
&pci_ss_info_0e11_0012,
&pci_ss_info_0e11_001e,
&pci_ss_info_0e11_0022,
@@ -55173,6 +58588,7 @@ static const pciSubsystemInfo *pci_ss_list_0e11[] = {
&pci_ss_info_0e11_b126,
&pci_ss_info_0e11_b134,
&pci_ss_info_0e11_b13c,
+ &pci_ss_info_0e11_b143,
&pci_ss_info_0e11_b144,
&pci_ss_info_0e11_b14d,
&pci_ss_info_0e11_b15a,
@@ -55193,6 +58609,7 @@ static const pciSubsystemInfo *pci_ss_list_0e11[] = {
};
#define pci_ss_list_0e21 NULL
#define pci_ss_list_0e55 NULL
+#define pci_ss_list_0eac NULL
#ifdef VENDOR_INCLUDE_NONVIDEO
static const pciSubsystemInfo *pci_ss_list_1000[] = {
&pci_ss_info_1000_0001,
@@ -55213,8 +58630,17 @@ static const pciSubsystemInfo *pci_ss_list_1000[] = {
&pci_ss_info_1000_0531,
&pci_ss_info_1000_0532,
&pci_ss_info_1000_1000,
+ &pci_ss_info_1000_1001,
+ &pci_ss_info_1000_1002,
+ &pci_ss_info_1000_1003,
+ &pci_ss_info_1000_1004,
+ &pci_ss_info_1000_1005,
+ &pci_ss_info_1000_100c,
+ &pci_ss_info_1000_100d,
&pci_ss_info_1000_1010,
&pci_ss_info_1000_1020,
+ &pci_ss_info_1000_2004,
+ &pci_ss_info_1000_2005,
&pci_ss_info_1000_3004,
&pci_ss_info_1000_3008,
&pci_ss_info_1000_4523,
@@ -55325,7 +58751,12 @@ static const pciSubsystemInfo *pci_ss_list_1005[] = {
#define pci_ss_list_1006 NULL
#define pci_ss_list_1007 NULL
#define pci_ss_list_1008 NULL
-#define pci_ss_list_100a NULL
+#ifdef VENDOR_INCLUDE_NONVIDEO
+static const pciSubsystemInfo *pci_ss_list_100a[] = {
+ &pci_ss_info_100a_147b,
+ NULL
+};
+#endif
#define pci_ss_list_100b NULL
#define pci_ss_list_100c NULL
#define pci_ss_list_100d NULL
@@ -55465,6 +58896,7 @@ static const pciSubsystemInfo *pci_ss_list_1014[] = {
&pci_ss_info_1014_02ed,
&pci_ss_info_1014_02f2,
&pci_ss_info_1014_030d,
+ &pci_ss_info_1014_034d,
&pci_ss_info_1014_0502,
&pci_ss_info_1014_0503,
&pci_ss_info_1014_0506,
@@ -55477,8 +58909,11 @@ static const pciSubsystemInfo *pci_ss_list_1014[] = {
&pci_ss_info_1014_0517,
&pci_ss_info_1014_051a,
&pci_ss_info_1014_051c,
+ &pci_ss_info_1014_0522,
&pci_ss_info_1014_0528,
&pci_ss_info_1014_052c,
+ &pci_ss_info_1014_052d,
+ &pci_ss_info_1014_052e,
&pci_ss_info_1014_0535,
&pci_ss_info_1014_053a,
&pci_ss_info_1014_053b,
@@ -55489,6 +58924,13 @@ static const pciSubsystemInfo *pci_ss_list_1014[] = {
&pci_ss_info_1014_0545,
&pci_ss_info_1014_0549,
&pci_ss_info_1014_0556,
+ &pci_ss_info_1014_0559,
+ &pci_ss_info_1014_055c,
+ &pci_ss_info_1014_055d,
+ &pci_ss_info_1014_055e,
+ &pci_ss_info_1014_055f,
+ &pci_ss_info_1014_0562,
+ &pci_ss_info_1014_058a,
&pci_ss_info_1014_0598,
&pci_ss_info_1014_1010,
&pci_ss_info_1014_1025,
@@ -55580,12 +59022,7 @@ static const pciSubsystemInfo *pci_ss_list_1023[] = {
&pci_ss_info_1023_9880,
NULL
};
-#ifdef VENDOR_INCLUDE_NONVIDEO
-static const pciSubsystemInfo *pci_ss_list_1024[] = {
- &pci_ss_info_1024_0134,
- NULL
-};
-#endif
+#define pci_ss_list_1024 NULL
static const pciSubsystemInfo *pci_ss_list_1025[] = {
&pci_ss_info_1025_000e,
&pci_ss_info_1025_0018,
@@ -55600,6 +59037,7 @@ static const pciSubsystemInfo *pci_ss_list_1025[] = {
&pci_ss_info_1025_1003,
&pci_ss_info_1025_1007,
&pci_ss_info_1025_1016,
+ &pci_ss_info_1025_1605,
&pci_ss_info_1025_8013,
&pci_ss_info_1025_8920,
&pci_ss_info_1025_8921,
@@ -55641,6 +59079,7 @@ static const pciSubsystemInfo *pci_ss_list_1028[] = {
&pci_ss_info_1028_00b1,
&pci_ss_info_1028_00bb,
&pci_ss_info_1028_00c5,
+ &pci_ss_info_1028_00c7,
&pci_ss_info_1028_00ce,
&pci_ss_info_1028_00d1,
&pci_ss_info_1028_00d9,
@@ -55696,6 +59135,10 @@ static const pciSubsystemInfo *pci_ss_list_1028[] = {
&pci_ss_info_1028_1010,
&pci_ss_info_1028_1079,
&pci_ss_info_1028_1111,
+ &pci_ss_info_1028_1f0a,
+ &pci_ss_info_1028_1f0b,
+ &pci_ss_info_1028_1f0c,
+ &pci_ss_info_1028_1f0d,
&pci_ss_info_1028_4082,
&pci_ss_info_1028_4134,
&pci_ss_info_1028_8082,
@@ -55865,6 +59308,7 @@ static const pciSubsystemInfo *pci_ss_list_1033[] = {
&pci_ss_info_1033_80e5,
&pci_ss_info_1033_8110,
&pci_ss_info_1033_8112,
+ &pci_ss_info_1033_8287,
NULL
};
#define pci_ss_list_1034 NULL
@@ -55892,10 +59336,12 @@ static const pciSubsystemInfo *pci_ss_list_103c[] = {
&pci_ss_info_103c_000d,
&pci_ss_info_103c_0024,
&pci_ss_info_103c_006a,
+ &pci_ss_info_103c_0131,
&pci_ss_info_103c_03a2,
&pci_ss_info_103c_0850,
&pci_ss_info_103c_088c,
&pci_ss_info_103c_0890,
+ &pci_ss_info_103c_08b0,
&pci_ss_info_103c_0944,
&pci_ss_info_103c_099c,
&pci_ss_info_103c_1040,
@@ -55929,40 +59375,61 @@ static const pciSubsystemInfo *pci_ss_list_103c[] = {
&pci_ss_info_103c_1223,
&pci_ss_info_103c_1226,
&pci_ss_info_103c_1227,
+ &pci_ss_info_103c_1240,
+ &pci_ss_info_103c_125a,
&pci_ss_info_103c_1279,
&pci_ss_info_103c_1282,
&pci_ss_info_103c_128a,
&pci_ss_info_103c_128b,
+ &pci_ss_info_103c_1292,
&pci_ss_info_103c_12a4,
&pci_ss_info_103c_12a6,
&pci_ss_info_103c_12a8,
+ &pci_ss_info_103c_12ba,
&pci_ss_info_103c_12bc,
&pci_ss_info_103c_12c1,
&pci_ss_info_103c_12c3,
+ &pci_ss_info_103c_12c5,
&pci_ss_info_103c_12ca,
&pci_ss_info_103c_12cf,
&pci_ss_info_103c_12d5,
+ &pci_ss_info_103c_12d7,
+ &pci_ss_info_103c_12dd,
&pci_ss_info_103c_12f4,
&pci_ss_info_103c_12fa,
&pci_ss_info_103c_1300,
&pci_ss_info_103c_1301,
+ &pci_ss_info_103c_1330,
+ &pci_ss_info_103c_1340,
&pci_ss_info_103c_1356,
+ &pci_ss_info_103c_1706,
+ &pci_ss_info_103c_1707,
+ &pci_ss_info_103c_170c,
+ &pci_ss_info_103c_2a09,
&pci_ss_info_103c_2a0d,
&pci_ss_info_103c_3006,
+ &pci_ss_info_103c_3070,
&pci_ss_info_103c_308a,
&pci_ss_info_103c_308b,
+ &pci_ss_info_103c_309f,
&pci_ss_info_103c_3100,
&pci_ss_info_103c_3101,
&pci_ss_info_103c_3102,
&pci_ss_info_103c_3103,
&pci_ss_info_103c_3109,
+ &pci_ss_info_103c_3225,
&pci_ss_info_103c_3226,
&pci_ss_info_103c_3227,
&pci_ss_info_103c_60e7,
&pci_ss_info_103c_7031,
&pci_ss_info_103c_7032,
+ &pci_ss_info_103c_7037,
+ &pci_ss_info_103c_7038,
&pci_ss_info_103c_7039,
+ &pci_ss_info_103c_703b,
&pci_ss_info_103c_703c,
+ &pci_ss_info_103c_703d,
+ &pci_ss_info_103c_7044,
&pci_ss_info_103c_def1,
NULL
};
@@ -55985,6 +59452,8 @@ static const pciSubsystemInfo *pci_ss_list_1042[] = {
#ifdef VENDOR_INCLUDE_NONVIDEO
static const pciSubsystemInfo *pci_ss_list_1043[] = {
&pci_ss_info_1043_002a,
+ &pci_ss_info_1043_010c,
+ &pci_ss_info_1043_010d,
&pci_ss_info_1043_0120,
&pci_ss_info_1043_0127,
&pci_ss_info_1043_0200,
@@ -56020,6 +59489,7 @@ static const pciSubsystemInfo *pci_ss_list_1043[] = {
&pci_ss_info_1043_405f,
&pci_ss_info_1043_4823,
&pci_ss_info_1043_4840,
+ &pci_ss_info_1043_4842,
&pci_ss_info_1043_4843,
&pci_ss_info_1043_4845,
&pci_ss_info_1043_4862,
@@ -56037,6 +59507,7 @@ static const pciSubsystemInfo *pci_ss_list_1043[] = {
&pci_ss_info_1043_8044,
&pci_ss_info_1043_8052,
&pci_ss_info_1043_8053,
+ &pci_ss_info_1043_8063,
&pci_ss_info_1043_8064,
&pci_ss_info_1043_806f,
&pci_ss_info_1043_8077,
@@ -56191,7 +59662,10 @@ static const pciSubsystemInfo *pci_ss_list_1048[] = {
};
#endif
#define pci_ss_list_1049 NULL
-#define pci_ss_list_104a NULL
+static const pciSubsystemInfo *pci_ss_list_104a[] = {
+ &pci_ss_info_104a_0500,
+ NULL
+};
#define pci_ss_list_104b NULL
static const pciSubsystemInfo *pci_ss_list_104c[] = {
&pci_ss_info_104c_9066,
@@ -56238,6 +59712,7 @@ static const pciSubsystemInfo *pci_ss_list_1050[] = {
#define pci_ss_list_1053 NULL
#ifdef VENDOR_INCLUDE_NONVIDEO
static const pciSubsystemInfo *pci_ss_list_1054[] = {
+ &pci_ss_info_1054_3016,
&pci_ss_info_1054_7018,
NULL
};
@@ -56395,9 +59870,12 @@ static const pciSubsystemInfo *pci_ss_list_107a[] = {
#ifdef VENDOR_INCLUDE_NONVIDEO
static const pciSubsystemInfo *pci_ss_list_107b[] = {
&pci_ss_info_107b_0300,
+ &pci_ss_info_107b_1040,
&pci_ss_info_107b_3015,
&pci_ss_info_107b_4009,
+ &pci_ss_info_107b_5048,
&pci_ss_info_107b_5350,
+ &pci_ss_info_107b_6400,
&pci_ss_info_107b_8030,
&pci_ss_info_107b_8054,
&pci_ss_info_107b_8920,
@@ -56599,6 +60077,15 @@ static const pciSubsystemInfo *pci_ss_list_10a9[] = {
&pci_ss_info_10a9_8010,
&pci_ss_info_10a9_8011,
&pci_ss_info_10a9_8012,
+ &pci_ss_info_10a9_8013,
+ &pci_ss_info_10a9_8014,
+ &pci_ss_info_10a9_8018,
+ &pci_ss_info_10a9_801a,
+ &pci_ss_info_10a9_801b,
+ &pci_ss_info_10a9_801c,
+ &pci_ss_info_10a9_8020,
+ &pci_ss_info_10a9_8021,
+ &pci_ss_info_10a9_8024,
NULL
};
#endif
@@ -56647,6 +60134,7 @@ static const pciSubsystemInfo *pci_ss_list_10b4[] = {
#ifdef VENDOR_INCLUDE_NONVIDEO
static const pciSubsystemInfo *pci_ss_list_10b5[] = {
&pci_ss_info_10b5_1067,
+ &pci_ss_info_10b5_1123,
&pci_ss_info_10b5_1172,
&pci_ss_info_10b5_2036,
&pci_ss_info_10b5_2221,
@@ -56719,6 +60207,7 @@ static const pciSubsystemInfo *pci_ss_list_10b7[] = {
&pci_ss_info_10b7_7000,
&pci_ss_info_10b7_9004,
&pci_ss_info_10b7_9005,
+ &pci_ss_info_10b7_9054,
&pci_ss_info_10b7_9055,
&pci_ss_info_10b7_9800,
&pci_ss_info_10b7_9805,
@@ -56857,11 +60346,13 @@ static const pciSubsystemInfo *pci_ss_list_10de[] = {
&pci_ss_info_10de_000f,
&pci_ss_info_10de_001e,
&pci_ss_info_10de_0020,
+ &pci_ss_info_10de_002e,
&pci_ss_info_10de_006b,
&pci_ss_info_10de_0091,
&pci_ss_info_10de_00a1,
&pci_ss_info_10de_0179,
&pci_ss_info_10de_01dc,
+ &pci_ss_info_10de_029b,
&pci_ss_info_10de_0c11,
NULL
};
@@ -56935,6 +60426,8 @@ static const pciSubsystemInfo *pci_ss_list_10f7[] = {
static const pciSubsystemInfo *pci_ss_list_10fc[] = {
&pci_ss_info_10fc_d003,
&pci_ss_info_10fc_d035,
+ &pci_ss_info_10fc_d038,
+ &pci_ss_info_10fc_d039,
NULL
};
#endif
@@ -56967,6 +60460,7 @@ static const pciSubsystemInfo *pci_ss_list_1102[] = {
&pci_ss_info_1102_0058,
&pci_ss_info_1102_1001,
&pci_ss_info_1102_1002,
+ &pci_ss_info_1102_1003,
&pci_ss_info_1102_1006,
&pci_ss_info_1102_1007,
&pci_ss_info_1102_100a,
@@ -57158,6 +60652,7 @@ static const pciSubsystemInfo *pci_ss_list_1127[] = {
#define pci_ss_list_1130 NULL
#ifdef VENDOR_INCLUDE_NONVIDEO
static const pciSubsystemInfo *pci_ss_list_1131[] = {
+ &pci_ss_info_1131_0000,
&pci_ss_info_1131_2001,
&pci_ss_info_1131_2004,
&pci_ss_info_1131_2005,
@@ -57378,6 +60873,7 @@ static const pciSubsystemInfo *pci_ss_list_1179[] = {
&pci_ss_info_1179_ff00,
&pci_ss_info_1179_ff01,
&pci_ss_info_1179_ff10,
+ &pci_ss_info_1179_ff31,
NULL
};
#endif
@@ -57463,7 +60959,12 @@ static const pciSubsystemInfo *pci_ss_list_1186[] = {
#define pci_ss_list_1192 NULL
#define pci_ss_list_1193 NULL
#define pci_ss_list_1194 NULL
-#define pci_ss_list_1195 NULL
+#ifdef VENDOR_INCLUDE_NONVIDEO
+static const pciSubsystemInfo *pci_ss_list_1195[] = {
+ &pci_ss_info_1195_1320,
+ NULL
+};
+#endif
#define pci_ss_list_1196 NULL
#define pci_ss_list_1197 NULL
#define pci_ss_list_1198 NULL
@@ -57853,6 +61354,7 @@ static const pciSubsystemInfo *pci_ss_list_1259[] = {
&pci_ss_info_1259_2701,
&pci_ss_info_1259_2702,
&pci_ss_info_1259_2703,
+ &pci_ss_info_1259_2704,
&pci_ss_info_1259_2800,
&pci_ss_info_1259_2970,
&pci_ss_info_1259_2971,
@@ -58111,12 +61613,24 @@ static const pciSubsystemInfo *pci_ss_list_12be[] = {
#define pci_ss_list_12c1 NULL
#define pci_ss_list_12c2 NULL
#define pci_ss_list_12c3 NULL
-#define pci_ss_list_12c4 NULL
+#ifdef VENDOR_INCLUDE_NONVIDEO
+static const pciSubsystemInfo *pci_ss_list_12c4[] = {
+ &pci_ss_info_12c4_0200,
+ &pci_ss_info_12c4_0201,
+ &pci_ss_info_12c4_0202,
+ &pci_ss_info_12c4_0203,
+ &pci_ss_info_12c4_0210,
+ &pci_ss_info_12c4_0211,
+ NULL
+};
+#endif
#define pci_ss_list_12c5 NULL
#define pci_ss_list_12c6 NULL
#ifdef VENDOR_INCLUDE_NONVIDEO
static const pciSubsystemInfo *pci_ss_list_12c7[] = {
&pci_ss_info_12c7_4001,
+ &pci_ss_info_12c7_5005,
+ &pci_ss_info_12c7_5006,
NULL
};
#endif
@@ -59005,6 +62519,7 @@ static const pciSubsystemInfo *pci_ss_list_1461[] = {
&pci_ss_info_1461_a3cf,
&pci_ss_info_1461_a70a,
&pci_ss_info_1461_a70b,
+ &pci_ss_info_1461_c019,
&pci_ss_info_1461_d6ee,
&pci_ss_info_1461_f31f,
NULL
@@ -59014,11 +62529,13 @@ static const pciSubsystemInfo *pci_ss_list_1461[] = {
static const pciSubsystemInfo *pci_ss_list_1462[] = {
&pci_ss_info_1462_0080,
&pci_ss_info_1462_0311,
+ &pci_ss_info_1462_0345,
&pci_ss_info_1462_0400,
&pci_ss_info_1462_0402,
&pci_ss_info_1462_0403,
&pci_ss_info_1462_052c,
&pci_ss_info_1462_058c,
+ &pci_ss_info_1462_0622,
&pci_ss_info_1462_1009,
&pci_ss_info_1462_207d,
&pci_ss_info_1462_3091,
@@ -59055,8 +62572,10 @@ static const pciSubsystemInfo *pci_ss_list_1462[] = {
&pci_ss_info_1462_702c,
&pci_ss_info_1462_702d,
&pci_ss_info_1462_702e,
+ &pci_ss_info_1462_7030,
&pci_ss_info_1462_7100,
&pci_ss_info_1462_7207,
+ &pci_ss_info_1462_7235,
&pci_ss_info_1462_7280,
&pci_ss_info_1462_728c,
&pci_ss_info_1462_7580,
@@ -59216,6 +62735,9 @@ static const pciSubsystemInfo *pci_ss_list_1494[] = {
#define pci_ss_list_1497 NULL
#ifdef VENDOR_INCLUDE_NONVIDEO
static const pciSubsystemInfo *pci_ss_list_1498[] = {
+ &pci_ss_info_1498_000a,
+ &pci_ss_info_1498_000b,
+ &pci_ss_info_1498_000c,
&pci_ss_info_1498_0362,
NULL
};
@@ -59519,7 +63041,13 @@ static const pciSubsystemInfo *pci_ss_list_1509[] = {
#define pci_ss_list_1514 NULL
#define pci_ss_list_1515 NULL
#define pci_ss_list_1516 NULL
-#define pci_ss_list_1517 NULL
+#ifdef VENDOR_INCLUDE_NONVIDEO
+static const pciSubsystemInfo *pci_ss_list_1517[] = {
+ &pci_ss_info_1517_000b,
+ &pci_ss_info_1517_000f,
+ NULL
+};
+#endif
#ifdef VENDOR_INCLUDE_NONVIDEO
static const pciSubsystemInfo *pci_ss_list_1518[] = {
&pci_ss_info_1518_0200,
@@ -59577,6 +63105,7 @@ static const pciSubsystemInfo *pci_ss_list_1522[] = {
#ifdef VENDOR_INCLUDE_NONVIDEO
static const pciSubsystemInfo *pci_ss_list_152d[] = {
&pci_ss_info_152d_0745,
+ &pci_ss_info_152d_0753,
&pci_ss_info_152d_8801,
&pci_ss_info_152d_8802,
&pci_ss_info_152d_8803,
@@ -59605,6 +63134,7 @@ static const pciSubsystemInfo *pci_ss_list_153b[] = {
&pci_ss_info_153b_1125,
&pci_ss_info_153b_112b,
&pci_ss_info_153b_112c,
+ &pci_ss_info_153b_112e,
&pci_ss_info_153b_1130,
&pci_ss_info_153b_1136,
&pci_ss_info_153b_1138,
@@ -59910,8 +63440,20 @@ static const pciSubsystemInfo *pci_ss_list_15ed[] = {
#define pci_ss_list_15fe NULL
#define pci_ss_list_15ff NULL
#define pci_ss_list_1600 NULL
-#define pci_ss_list_1601 NULL
-#define pci_ss_list_1602 NULL
+#ifdef VENDOR_INCLUDE_NONVIDEO
+static const pciSubsystemInfo *pci_ss_list_1601[] = {
+ &pci_ss_info_1601_0000,
+ &pci_ss_info_1601_0002,
+ NULL
+};
+#endif
+#ifdef VENDOR_INCLUDE_NONVIDEO
+static const pciSubsystemInfo *pci_ss_list_1602[] = {
+ &pci_ss_info_1602_0000,
+ &pci_ss_info_1602_0002,
+ NULL
+};
+#endif
#define pci_ss_list_1603 NULL
#define pci_ss_list_1604 NULL
#define pci_ss_list_1605 NULL
@@ -59919,7 +63461,13 @@ static const pciSubsystemInfo *pci_ss_list_15ed[] = {
#define pci_ss_list_1607 NULL
#define pci_ss_list_1608 NULL
#define pci_ss_list_1609 NULL
-#define pci_ss_list_1612 NULL
+#ifdef VENDOR_INCLUDE_NONVIDEO
+static const pciSubsystemInfo *pci_ss_list_1612[] = {
+ &pci_ss_info_1612_0000,
+ &pci_ss_info_1612_0004,
+ NULL
+};
+#endif
#define pci_ss_list_1619 NULL
#ifdef VENDOR_INCLUDE_NONVIDEO
static const pciSubsystemInfo *pci_ss_list_161f[] = {
@@ -59947,6 +63495,7 @@ static const pciSubsystemInfo *pci_ss_list_1668[] = {
&pci_ss_info_1668_0302,
&pci_ss_info_1668_0414,
&pci_ss_info_1668_0440,
+ &pci_ss_info_1668_1026,
&pci_ss_info_1668_1100,
&pci_ss_info_1668_2400,
NULL
@@ -59974,6 +63523,7 @@ static const pciSubsystemInfo *pci_ss_list_1682[] = {
&pci_ss_info_1682_2119,
&pci_ss_info_1682_211c,
&pci_ss_info_1682_2120,
+ &pci_ss_info_1682_217e,
NULL
};
#endif
@@ -59981,12 +63531,15 @@ static const pciSubsystemInfo *pci_ss_list_1682[] = {
#ifdef VENDOR_INCLUDE_NONVIDEO
static const pciSubsystemInfo *pci_ss_list_168c[] = {
&pci_ss_info_168c_0013,
+ &pci_ss_info_168c_001a,
&pci_ss_info_168c_1025,
&pci_ss_info_168c_1027,
+ &pci_ss_info_168c_1042,
&pci_ss_info_168c_1052,
&pci_ss_info_168c_2026,
&pci_ss_info_168c_2041,
&pci_ss_info_168c_2042,
+ &pci_ss_info_168c_2051,
&pci_ss_info_168c_2062,
&pci_ss_info_168c_2063,
NULL
@@ -60054,6 +63607,7 @@ static const pciSubsystemInfo *pci_ss_list_16df[] = {
};
#endif
#define pci_ss_list_16e3 NULL
+#define pci_ss_list_16e5 NULL
#ifdef VENDOR_INCLUDE_NONVIDEO
static const pciSubsystemInfo *pci_ss_list_16ec[] = {
&pci_ss_info_16ec_0119,
@@ -60104,6 +63658,8 @@ static const pciSubsystemInfo *pci_ss_list_1734[] = {
&pci_ss_info_1734_1061,
&pci_ss_info_1734_1065,
&pci_ss_info_1734_106c,
+ &pci_ss_info_1734_1081,
+ &pci_ss_info_1734_10a3,
NULL
};
#endif
@@ -60165,7 +63721,11 @@ static const pciSubsystemInfo *pci_ss_list_175c[] = {
#define pci_ss_list_175e NULL
#ifdef VENDOR_INCLUDE_NONVIDEO
static const pciSubsystemInfo *pci_ss_list_1775[] = {
+ &pci_ss_info_1775_10d0,
+ &pci_ss_info_1775_10d1,
&pci_ss_info_1775_6003,
+ &pci_ss_info_1775_c200,
+ &pci_ss_info_1775_ce90,
NULL
};
#endif
@@ -60200,10 +63760,23 @@ static const pciSubsystemInfo *pci_ss_list_1799[] = {
static const pciSubsystemInfo *pci_ss_list_17aa[] = {
&pci_ss_info_17aa_0286,
&pci_ss_info_17aa_0287,
+ &pci_ss_info_17aa_2001,
+ &pci_ss_info_17aa_2007,
+ &pci_ss_info_17aa_2009,
+ &pci_ss_info_17aa_200a,
+ &pci_ss_info_17aa_200b,
+ &pci_ss_info_17aa_200c,
+ &pci_ss_info_17aa_200d,
+ &pci_ss_info_17aa_200f,
+ &pci_ss_info_17aa_2010,
+ &pci_ss_info_17aa_2012,
+ &pci_ss_info_17aa_2017,
+ &pci_ss_info_17aa_201a,
&pci_ss_info_17aa_201c,
&pci_ss_info_17aa_201d,
&pci_ss_info_17aa_201e,
&pci_ss_info_17aa_207e,
+ &pci_ss_info_17aa_2081,
NULL
};
#endif
@@ -60235,6 +63808,7 @@ static const pciSubsystemInfo *pci_ss_list_17cf[] = {
#endif
#define pci_ss_list_17d3 NULL
#define pci_ss_list_17d5 NULL
+#define pci_ss_list_17db NULL
#ifdef VENDOR_INCLUDE_NONVIDEO
static const pciSubsystemInfo *pci_ss_list_17de[] = {
&pci_ss_info_17de_08a1,
@@ -60244,8 +63818,11 @@ static const pciSubsystemInfo *pci_ss_list_17de[] = {
NULL
};
#endif
+#define pci_ss_list_17e4 NULL
+#define pci_ss_list_17e6 NULL
#ifdef VENDOR_INCLUDE_NONVIDEO
static const pciSubsystemInfo *pci_ss_list_17ee[] = {
+ &pci_ss_info_17ee_1001,
&pci_ss_info_17ee_2002,
&pci_ss_info_17ee_2003,
NULL
@@ -60306,12 +63883,14 @@ static const pciSubsystemInfo *pci_ss_list_1849[] = {
&pci_ss_info_1849_3177,
&pci_ss_info_1849_3189,
&pci_ss_info_1849_3227,
+ &pci_ss_info_1849_5229,
&pci_ss_info_1849_8052,
&pci_ss_info_1849_8053,
&pci_ss_info_1849_9761,
NULL
};
#endif
+#define pci_ss_list_184a NULL
#ifdef VENDOR_INCLUDE_NONVIDEO
static const pciSubsystemInfo *pci_ss_list_1851[] = {
&pci_ss_info_1851_1850,
@@ -60380,6 +63959,13 @@ static const pciSubsystemInfo *pci_ss_list_187e[] = {
NULL
};
#endif
+#ifdef VENDOR_INCLUDE_NONVIDEO
+static const pciSubsystemInfo *pci_ss_list_1885[] = {
+ &pci_ss_info_1885_0700,
+ &pci_ss_info_1885_0701,
+ NULL
+};
+#endif
#define pci_ss_list_1888 NULL
#define pci_ss_list_188a NULL
#define pci_ss_list_1890 NULL
@@ -60435,6 +64021,7 @@ static const pciSubsystemInfo *pci_ss_list_18ec[] = {
NULL
};
#endif
+#define pci_ss_list_18f6 NULL
#define pci_ss_list_18f7 NULL
#ifdef VENDOR_INCLUDE_NONVIDEO
static const pciSubsystemInfo *pci_ss_list_18fb[] = {
@@ -60459,9 +64046,11 @@ static const pciSubsystemInfo *pci_ss_list_1931[] = {
};
#endif
#define pci_ss_list_1942 NULL
+#define pci_ss_list_194a NULL
#define pci_ss_list_1957 NULL
#define pci_ss_list_1958 NULL
#define pci_ss_list_1966 NULL
+#define pci_ss_list_1969 NULL
#define pci_ss_list_196a NULL
#ifdef VENDOR_INCLUDE_NONVIDEO
static const pciSubsystemInfo *pci_ss_list_196d[] = {
@@ -60486,10 +64075,12 @@ static const pciSubsystemInfo *pci_ss_list_1993[] = {
#define pci_ss_list_19ae NULL
#define pci_ss_list_19d4 NULL
#define pci_ss_list_19e2 NULL
+#define pci_ss_list_19e7 NULL
#define pci_ss_list_1a03 NULL
#define pci_ss_list_1a08 NULL
#define pci_ss_list_1a1d NULL
#define pci_ss_list_1a29 NULL
+#define pci_ss_list_1a51 NULL
#define pci_ss_list_1b13 NULL
#define pci_ss_list_1c1c NULL
#define pci_ss_list_1d44 NULL
@@ -60644,6 +64235,7 @@ static const pciSubsystemInfo *pci_ss_list_4c53[] = {
static const pciSubsystemInfo *pci_ss_list_5053[] = {
&pci_ss_info_5053_3355,
&pci_ss_info_5053_3356,
+ &pci_ss_info_5053_3357,
NULL
};
#endif
@@ -60655,6 +64247,13 @@ static const pciSubsystemInfo *pci_ss_list_5168[] = {
&pci_ss_info_5168_0138,
&pci_ss_info_5168_0306,
&pci_ss_info_5168_0319,
+ &pci_ss_info_5168_0502,
+ &pci_ss_info_5168_0520,
+ &pci_ss_info_5168_1502,
+ &pci_ss_info_5168_2502,
+ &pci_ss_info_5168_2520,
+ &pci_ss_info_5168_3502,
+ &pci_ss_info_5168_3520,
NULL
};
#endif
@@ -60733,6 +64332,7 @@ static const pciSubsystemInfo *pci_ss_list_8086[] = {
&pci_ss_info_8086_0011,
&pci_ss_info_8086_0012,
&pci_ss_info_8086_0013,
+ &pci_ss_info_8086_0014,
&pci_ss_info_8086_001e,
&pci_ss_info_8086_002a,
&pci_ss_info_8086_002b,
@@ -60743,6 +64343,8 @@ static const pciSubsystemInfo *pci_ss_list_8086[] = {
&pci_ss_info_8086_0041,
&pci_ss_info_8086_0042,
&pci_ss_info_8086_0050,
+ &pci_ss_info_8086_005e,
+ &pci_ss_info_8086_0060,
&pci_ss_info_8086_0075,
&pci_ss_info_8086_0076,
&pci_ss_info_8086_0077,
@@ -60787,6 +64389,8 @@ static const pciSubsystemInfo *pci_ss_list_8086[] = {
&pci_ss_info_8086_1050,
&pci_ss_info_8086_1051,
&pci_ss_info_8086_1052,
+ &pci_ss_info_8086_105e,
+ &pci_ss_info_8086_1060,
&pci_ss_info_8086_1075,
&pci_ss_info_8086_1076,
&pci_ss_info_8086_1077,
@@ -60794,18 +64398,41 @@ static const pciSubsystemInfo *pci_ss_list_8086[] = {
&pci_ss_info_8086_1079,
&pci_ss_info_8086_107a,
&pci_ss_info_8086_107b,
+ &pci_ss_info_8086_1082,
+ &pci_ss_info_8086_1083,
+ &pci_ss_info_8086_1084,
+ &pci_ss_info_8086_108a,
+ &pci_ss_info_8086_1092,
+ &pci_ss_info_8086_1093,
+ &pci_ss_info_8086_1094,
+ &pci_ss_info_8086_1099,
+ &pci_ss_info_8086_109a,
+ &pci_ss_info_8086_10a4,
+ &pci_ss_info_8086_10bc,
&pci_ss_info_8086_10f0,
&pci_ss_info_8086_1107,
&pci_ss_info_8086_1109,
&pci_ss_info_8086_110d,
&pci_ss_info_8086_1112,
&pci_ss_info_8086_1113,
+ &pci_ss_info_8086_115e,
+ &pci_ss_info_8086_115f,
&pci_ss_info_8086_1161,
+ &pci_ss_info_8086_116e,
+ &pci_ss_info_8086_116f,
&pci_ss_info_8086_1176,
&pci_ss_info_8086_1179,
&pci_ss_info_8086_117a,
+ &pci_ss_info_8086_118a,
+ &pci_ss_info_8086_1199,
+ &pci_ss_info_8086_11a4,
+ &pci_ss_info_8086_11bc,
+ &pci_ss_info_8086_125e,
+ &pci_ss_info_8086_125f,
&pci_ss_info_8086_1276,
&pci_ss_info_8086_127a,
+ &pci_ss_info_8086_135e,
+ &pci_ss_info_8086_135f,
&pci_ss_info_8086_1361,
&pci_ss_info_8086_1376,
&pci_ss_info_8086_1476,
@@ -60852,7 +64479,10 @@ static const pciSubsystemInfo *pci_ss_list_8086[] = {
&pci_ss_info_8086_2413,
&pci_ss_info_8086_24db,
&pci_ss_info_8086_2513,
+ &pci_ss_info_8086_2522,
&pci_ss_info_8086_2527,
+ &pci_ss_info_8086_2581,
+ &pci_ss_info_8086_265c,
&pci_ss_info_8086_3000,
&pci_ss_info_8086_3001,
&pci_ss_info_8086_3002,
@@ -60881,6 +64511,9 @@ static const pciSubsystemInfo *pci_ss_list_8086[] = {
&pci_ss_info_8086_3431,
&pci_ss_info_8086_3439,
&pci_ss_info_8086_3499,
+ &pci_ss_info_8086_3500,
+ &pci_ss_info_8086_3501,
+ &pci_ss_info_8086_3504,
&pci_ss_info_8086_4147,
&pci_ss_info_8086_4152,
&pci_ss_info_8086_4246,
@@ -60894,6 +64527,7 @@ static const pciSubsystemInfo *pci_ss_list_8086[] = {
&pci_ss_info_8086_4557,
&pci_ss_info_8086_4649,
&pci_ss_info_8086_464a,
+ &pci_ss_info_8086_4c43,
&pci_ss_info_8086_4d4f,
&pci_ss_info_8086_4f43,
&pci_ss_info_8086_5243,
@@ -60910,9 +64544,11 @@ static const pciSubsystemInfo *pci_ss_list_8086[] = {
&pci_ss_info_8086_a11f,
&pci_ss_info_8086_e000,
&pci_ss_info_8086_e001,
+ &pci_ss_info_8086_e002,
NULL
};
#define pci_ss_list_8401 NULL
+#define pci_ss_list_8686 NULL
#define pci_ss_list_8800 NULL
#define pci_ss_list_8866 NULL
#define pci_ss_list_8888 NULL
@@ -61014,8 +64650,21 @@ static const pciSubsystemInfo *pci_ss_list_9005[] = {
&pci_ss_info_9005_02a8,
&pci_ss_info_9005_02a9,
&pci_ss_info_9005_02aa,
+ &pci_ss_info_9005_02ac,
+ &pci_ss_info_9005_02b3,
+ &pci_ss_info_9005_02b4,
+ &pci_ss_info_9005_02b5,
+ &pci_ss_info_9005_02b6,
+ &pci_ss_info_9005_02b7,
&pci_ss_info_9005_0364,
&pci_ss_info_9005_0365,
+ &pci_ss_info_9005_0410,
+ &pci_ss_info_9005_0411,
+ &pci_ss_info_9005_0412,
+ &pci_ss_info_9005_0413,
+ &pci_ss_info_9005_041f,
+ &pci_ss_info_9005_0430,
+ &pci_ss_info_9005_0432,
&pci_ss_info_9005_0800,
&pci_ss_info_9005_1364,
&pci_ss_info_9005_1365,
@@ -61076,6 +64725,7 @@ static const pciSubsystemInfo *pci_ss_list_a304[] = {
#define pci_ss_list_ac3d NULL
#define pci_ss_list_aecb NULL
#define pci_ss_list_affe NULL
+#define pci_ss_list_b10b NULL
#define pci_ss_list_b1b3 NULL
#ifdef VENDOR_INCLUDE_NONVIDEO
static const pciSubsystemInfo *pci_ss_list_bd11[] = {
@@ -61090,6 +64740,7 @@ static const pciSubsystemInfo *pci_ss_list_bd11[] = {
#define pci_ss_list_ca50 NULL
#define pci_ss_list_cafe NULL
#define pci_ss_list_cccc NULL
+#define pci_ss_list_ccec NULL
#define pci_ss_list_cddd NULL
#define pci_ss_list_d161 NULL
#define pci_ss_list_d4d4 NULL
@@ -61290,6 +64941,15 @@ static const pciDeviceInfo pci_dev_info_04cf_8818 = {
};
#endif
#ifdef VENDOR_INCLUDE_NONVIDEO
+static const pciDeviceInfo pci_dev_info_050d_001a = {
+ 0x001a, pci_device_050d_001a,
+#ifdef INIT_SUBSYS_INFO
+ pci_ss_list_050d_001a,
+#else
+ NULL,
+#endif
+ 0
+};
static const pciDeviceInfo pci_dev_info_050d_0109 = {
0x0109, pci_device_050d_0109,
#ifdef INIT_SUBSYS_INFO
@@ -61310,6 +64970,17 @@ static const pciDeviceInfo pci_dev_info_050d_7050 = {
};
#endif
#ifdef VENDOR_INCLUDE_NONVIDEO
+static const pciDeviceInfo pci_dev_info_05a9_8519 = {
+ 0x8519, pci_device_05a9_8519,
+#ifdef INIT_SUBSYS_INFO
+ pci_ss_list_05a9_8519,
+#else
+ NULL,
+#endif
+ 0
+};
+#endif
+#ifdef VENDOR_INCLUDE_NONVIDEO
static const pciDeviceInfo pci_dev_info_05e3_0701 = {
0x0701, pci_device_05e3_0701,
#ifdef INIT_SUBSYS_INFO
@@ -61379,6 +65050,15 @@ static const pciDeviceInfo pci_dev_info_0675_1704 = {
};
#endif
#ifdef VENDOR_INCLUDE_NONVIDEO
+static const pciDeviceInfo pci_dev_info_067b_2303 = {
+ 0x2303, pci_device_067b_2303,
+#ifdef INIT_SUBSYS_INFO
+ pci_ss_list_067b_2303,
+#else
+ NULL,
+#endif
+ 0
+};
static const pciDeviceInfo pci_dev_info_067b_3507 = {
0x3507, pci_device_067b_3507,
#ifdef INIT_SUBSYS_INFO
@@ -61455,6 +65135,24 @@ static const pciDeviceInfo pci_dev_info_0b0b_0506 = {
#endif
0
};
+static const pciDeviceInfo pci_dev_info_0b0b_0605 = {
+ 0x0605, pci_device_0b0b_0605,
+#ifdef INIT_SUBSYS_INFO
+ pci_ss_list_0b0b_0605,
+#else
+ NULL,
+#endif
+ 0
+};
+static const pciDeviceInfo pci_dev_info_0b0b_0705 = {
+ 0x0705, pci_device_0b0b_0705,
+#ifdef INIT_SUBSYS_INFO
+ pci_ss_list_0b0b_0705,
+#else
+ NULL,
+#endif
+ 0
+};
#endif
#ifdef VENDOR_INCLUDE_NONVIDEO
static const pciDeviceInfo pci_dev_info_0b49_064f = {
@@ -61467,6 +65165,17 @@ static const pciDeviceInfo pci_dev_info_0b49_064f = {
0
};
#endif
+#ifdef VENDOR_INCLUDE_NONVIDEO
+static const pciDeviceInfo pci_dev_info_0ccd_0038 = {
+ 0x0038, pci_device_0ccd_0038,
+#ifdef INIT_SUBSYS_INFO
+ pci_ss_list_0ccd_0038,
+#else
+ NULL,
+#endif
+ 0
+};
+#endif
static const pciDeviceInfo pci_dev_info_0e11_0001 = {
0x0001, pci_device_0e11_0001,
#ifdef INIT_SUBSYS_INFO
@@ -62629,6 +66338,24 @@ static const pciDeviceInfo pci_dev_info_1000_0409 = {
#endif
0
};
+static const pciDeviceInfo pci_dev_info_1000_0411 = {
+ 0x0411, pci_device_1000_0411,
+#ifdef INIT_SUBSYS_INFO
+ pci_ss_list_1000_0411,
+#else
+ NULL,
+#endif
+ 0
+};
+static const pciDeviceInfo pci_dev_info_1000_0413 = {
+ 0x0413, pci_device_1000_0413,
+#ifdef INIT_SUBSYS_INFO
+ pci_ss_list_1000_0413,
+#else
+ NULL,
+#endif
+ 0
+};
static const pciDeviceInfo pci_dev_info_1000_0621 = {
0x0621, pci_device_1000_0621,
#ifdef INIT_SUBSYS_INFO
@@ -65179,6 +68906,15 @@ static const pciDeviceInfo pci_dev_info_1002_5554 = {
#endif
0
};
+static const pciDeviceInfo pci_dev_info_1002_5569 = {
+ 0x5569, pci_device_1002_5569,
+#ifdef INIT_SUBSYS_INFO
+ pci_ss_list_1002_5569,
+#else
+ NULL,
+#endif
+ 0
+};
static const pciDeviceInfo pci_dev_info_1002_556b = {
0x556b, pci_device_1002_556b,
#ifdef INIT_SUBSYS_INFO
@@ -65206,6 +68942,15 @@ static const pciDeviceInfo pci_dev_info_1002_556f = {
#endif
0
};
+static const pciDeviceInfo pci_dev_info_1002_5571 = {
+ 0x5571, pci_device_1002_5571,
+#ifdef INIT_SUBSYS_INFO
+ pci_ss_list_1002_5571,
+#else
+ NULL,
+#endif
+ 0
+};
static const pciDeviceInfo pci_dev_info_1002_564a = {
0x564a, pci_device_1002_564a,
#ifdef INIT_SUBSYS_INFO
@@ -65467,6 +69212,15 @@ static const pciDeviceInfo pci_dev_info_1002_5975 = {
#endif
0
};
+static const pciDeviceInfo pci_dev_info_1002_5a33 = {
+ 0x5a33, pci_device_1002_5a33,
+#ifdef INIT_SUBSYS_INFO
+ pci_ss_list_1002_5a33,
+#else
+ NULL,
+#endif
+ 0
+};
static const pciDeviceInfo pci_dev_info_1002_5a34 = {
0x5a34, pci_device_1002_5a34,
#ifdef INIT_SUBSYS_INFO
@@ -65872,6 +69626,33 @@ static const pciDeviceInfo pci_dev_info_1002_7100 = {
#endif
0
};
+static const pciDeviceInfo pci_dev_info_1002_7102 = {
+ 0x7102, pci_device_1002_7102,
+#ifdef INIT_SUBSYS_INFO
+ pci_ss_list_1002_7102,
+#else
+ NULL,
+#endif
+ 0
+};
+static const pciDeviceInfo pci_dev_info_1002_7103 = {
+ 0x7103, pci_device_1002_7103,
+#ifdef INIT_SUBSYS_INFO
+ pci_ss_list_1002_7103,
+#else
+ NULL,
+#endif
+ 0
+};
+static const pciDeviceInfo pci_dev_info_1002_7104 = {
+ 0x7104, pci_device_1002_7104,
+#ifdef INIT_SUBSYS_INFO
+ pci_ss_list_1002_7104,
+#else
+ NULL,
+#endif
+ 0
+};
static const pciDeviceInfo pci_dev_info_1002_7105 = {
0x7105, pci_device_1002_7105,
#ifdef INIT_SUBSYS_INFO
@@ -65881,6 +69662,24 @@ static const pciDeviceInfo pci_dev_info_1002_7105 = {
#endif
0
};
+static const pciDeviceInfo pci_dev_info_1002_7106 = {
+ 0x7106, pci_device_1002_7106,
+#ifdef INIT_SUBSYS_INFO
+ pci_ss_list_1002_7106,
+#else
+ NULL,
+#endif
+ 0
+};
+static const pciDeviceInfo pci_dev_info_1002_7108 = {
+ 0x7108, pci_device_1002_7108,
+#ifdef INIT_SUBSYS_INFO
+ pci_ss_list_1002_7108,
+#else
+ NULL,
+#endif
+ 0
+};
static const pciDeviceInfo pci_dev_info_1002_7109 = {
0x7109, pci_device_1002_7109,
#ifdef INIT_SUBSYS_INFO
@@ -65890,6 +69689,33 @@ static const pciDeviceInfo pci_dev_info_1002_7109 = {
#endif
0
};
+static const pciDeviceInfo pci_dev_info_1002_710a = {
+ 0x710a, pci_device_1002_710a,
+#ifdef INIT_SUBSYS_INFO
+ pci_ss_list_1002_710a,
+#else
+ NULL,
+#endif
+ 0
+};
+static const pciDeviceInfo pci_dev_info_1002_710b = {
+ 0x710b, pci_device_1002_710b,
+#ifdef INIT_SUBSYS_INFO
+ pci_ss_list_1002_710b,
+#else
+ NULL,
+#endif
+ 0
+};
+static const pciDeviceInfo pci_dev_info_1002_710c = {
+ 0x710c, pci_device_1002_710c,
+#ifdef INIT_SUBSYS_INFO
+ pci_ss_list_1002_710c,
+#else
+ NULL,
+#endif
+ 0
+};
static const pciDeviceInfo pci_dev_info_1002_7120 = {
0x7120, pci_device_1002_7120,
#ifdef INIT_SUBSYS_INFO
@@ -65899,6 +69725,15 @@ static const pciDeviceInfo pci_dev_info_1002_7120 = {
#endif
0
};
+static const pciDeviceInfo pci_dev_info_1002_7124 = {
+ 0x7124, pci_device_1002_7124,
+#ifdef INIT_SUBSYS_INFO
+ pci_ss_list_1002_7124,
+#else
+ NULL,
+#endif
+ 0
+};
static const pciDeviceInfo pci_dev_info_1002_7129 = {
0x7129, pci_device_1002_7129,
#ifdef INIT_SUBSYS_INFO
@@ -65908,6 +69743,15 @@ static const pciDeviceInfo pci_dev_info_1002_7129 = {
#endif
0
};
+static const pciDeviceInfo pci_dev_info_1002_7140 = {
+ 0x7140, pci_device_1002_7140,
+#ifdef INIT_SUBSYS_INFO
+ pci_ss_list_1002_7140,
+#else
+ NULL,
+#endif
+ 0
+};
static const pciDeviceInfo pci_dev_info_1002_7142 = {
0x7142, pci_device_1002_7142,
#ifdef INIT_SUBSYS_INFO
@@ -65971,6 +69815,42 @@ static const pciDeviceInfo pci_dev_info_1002_714c = {
#endif
0
};
+static const pciDeviceInfo pci_dev_info_1002_714d = {
+ 0x714d, pci_device_1002_714d,
+#ifdef INIT_SUBSYS_INFO
+ pci_ss_list_1002_714d,
+#else
+ NULL,
+#endif
+ 0
+};
+static const pciDeviceInfo pci_dev_info_1002_714e = {
+ 0x714e, pci_device_1002_714e,
+#ifdef INIT_SUBSYS_INFO
+ pci_ss_list_1002_714e,
+#else
+ NULL,
+#endif
+ 0
+};
+static const pciDeviceInfo pci_dev_info_1002_7152 = {
+ 0x7152, pci_device_1002_7152,
+#ifdef INIT_SUBSYS_INFO
+ pci_ss_list_1002_7152,
+#else
+ NULL,
+#endif
+ 0
+};
+static const pciDeviceInfo pci_dev_info_1002_715e = {
+ 0x715e, pci_device_1002_715e,
+#ifdef INIT_SUBSYS_INFO
+ pci_ss_list_1002_715e,
+#else
+ NULL,
+#endif
+ 0
+};
static const pciDeviceInfo pci_dev_info_1002_7162 = {
0x7162, pci_device_1002_7162,
#ifdef INIT_SUBSYS_INFO
@@ -65989,6 +69869,51 @@ static const pciDeviceInfo pci_dev_info_1002_7166 = {
#endif
0
};
+static const pciDeviceInfo pci_dev_info_1002_7172 = {
+ 0x7172, pci_device_1002_7172,
+#ifdef INIT_SUBSYS_INFO
+ pci_ss_list_1002_7172,
+#else
+ NULL,
+#endif
+ 0
+};
+static const pciDeviceInfo pci_dev_info_1002_7180 = {
+ 0x7180, pci_device_1002_7180,
+#ifdef INIT_SUBSYS_INFO
+ pci_ss_list_1002_7180,
+#else
+ NULL,
+#endif
+ 0
+};
+static const pciDeviceInfo pci_dev_info_1002_7181 = {
+ 0x7181, pci_device_1002_7181,
+#ifdef INIT_SUBSYS_INFO
+ pci_ss_list_1002_7181,
+#else
+ NULL,
+#endif
+ 0
+};
+static const pciDeviceInfo pci_dev_info_1002_71a0 = {
+ 0x71a0, pci_device_1002_71a0,
+#ifdef INIT_SUBSYS_INFO
+ pci_ss_list_1002_71a0,
+#else
+ NULL,
+#endif
+ 0
+};
+static const pciDeviceInfo pci_dev_info_1002_71a1 = {
+ 0x71a1, pci_device_1002_71a1,
+#ifdef INIT_SUBSYS_INFO
+ pci_ss_list_1002_71a1,
+#else
+ NULL,
+#endif
+ 0
+};
static const pciDeviceInfo pci_dev_info_1002_71c0 = {
0x71c0, pci_device_1002_71c0,
#ifdef INIT_SUBSYS_INFO
@@ -66025,6 +69950,51 @@ static const pciDeviceInfo pci_dev_info_1002_71c5 = {
#endif
0
};
+static const pciDeviceInfo pci_dev_info_1002_71c6 = {
+ 0x71c6, pci_device_1002_71c6,
+#ifdef INIT_SUBSYS_INFO
+ pci_ss_list_1002_71c6,
+#else
+ NULL,
+#endif
+ 0
+};
+static const pciDeviceInfo pci_dev_info_1002_71ce = {
+ 0x71ce, pci_device_1002_71ce,
+#ifdef INIT_SUBSYS_INFO
+ pci_ss_list_1002_71ce,
+#else
+ NULL,
+#endif
+ 0
+};
+static const pciDeviceInfo pci_dev_info_1002_71d5 = {
+ 0x71d5, pci_device_1002_71d5,
+#ifdef INIT_SUBSYS_INFO
+ pci_ss_list_1002_71d5,
+#else
+ NULL,
+#endif
+ 0
+};
+static const pciDeviceInfo pci_dev_info_1002_71d6 = {
+ 0x71d6, pci_device_1002_71d6,
+#ifdef INIT_SUBSYS_INFO
+ pci_ss_list_1002_71d6,
+#else
+ NULL,
+#endif
+ 0
+};
+static const pciDeviceInfo pci_dev_info_1002_71de = {
+ 0x71de, pci_device_1002_71de,
+#ifdef INIT_SUBSYS_INFO
+ pci_ss_list_1002_71de,
+#else
+ NULL,
+#endif
+ 0
+};
static const pciDeviceInfo pci_dev_info_1002_71e0 = {
0x71e0, pci_device_1002_71e0,
#ifdef INIT_SUBSYS_INFO
@@ -66043,6 +70013,159 @@ static const pciDeviceInfo pci_dev_info_1002_71e2 = {
#endif
0
};
+static const pciDeviceInfo pci_dev_info_1002_7240 = {
+ 0x7240, pci_device_1002_7240,
+#ifdef INIT_SUBSYS_INFO
+ pci_ss_list_1002_7240,
+#else
+ NULL,
+#endif
+ 0
+};
+static const pciDeviceInfo pci_dev_info_1002_7241 = {
+ 0x7241, pci_device_1002_7241,
+#ifdef INIT_SUBSYS_INFO
+ pci_ss_list_1002_7241,
+#else
+ NULL,
+#endif
+ 0
+};
+static const pciDeviceInfo pci_dev_info_1002_7242 = {
+ 0x7242, pci_device_1002_7242,
+#ifdef INIT_SUBSYS_INFO
+ pci_ss_list_1002_7242,
+#else
+ NULL,
+#endif
+ 0
+};
+static const pciDeviceInfo pci_dev_info_1002_7243 = {
+ 0x7243, pci_device_1002_7243,
+#ifdef INIT_SUBSYS_INFO
+ pci_ss_list_1002_7243,
+#else
+ NULL,
+#endif
+ 0
+};
+static const pciDeviceInfo pci_dev_info_1002_7244 = {
+ 0x7244, pci_device_1002_7244,
+#ifdef INIT_SUBSYS_INFO
+ pci_ss_list_1002_7244,
+#else
+ NULL,
+#endif
+ 0
+};
+static const pciDeviceInfo pci_dev_info_1002_7245 = {
+ 0x7245, pci_device_1002_7245,
+#ifdef INIT_SUBSYS_INFO
+ pci_ss_list_1002_7245,
+#else
+ NULL,
+#endif
+ 0
+};
+static const pciDeviceInfo pci_dev_info_1002_7246 = {
+ 0x7246, pci_device_1002_7246,
+#ifdef INIT_SUBSYS_INFO
+ pci_ss_list_1002_7246,
+#else
+ NULL,
+#endif
+ 0
+};
+static const pciDeviceInfo pci_dev_info_1002_7247 = {
+ 0x7247, pci_device_1002_7247,
+#ifdef INIT_SUBSYS_INFO
+ pci_ss_list_1002_7247,
+#else
+ NULL,
+#endif
+ 0
+};
+static const pciDeviceInfo pci_dev_info_1002_7248 = {
+ 0x7248, pci_device_1002_7248,
+#ifdef INIT_SUBSYS_INFO
+ pci_ss_list_1002_7248,
+#else
+ NULL,
+#endif
+ 0
+};
+static const pciDeviceInfo pci_dev_info_1002_7249 = {
+ 0x7249, pci_device_1002_7249,
+#ifdef INIT_SUBSYS_INFO
+ pci_ss_list_1002_7249,
+#else
+ NULL,
+#endif
+ 0
+};
+static const pciDeviceInfo pci_dev_info_1002_724a = {
+ 0x724a, pci_device_1002_724a,
+#ifdef INIT_SUBSYS_INFO
+ pci_ss_list_1002_724a,
+#else
+ NULL,
+#endif
+ 0
+};
+static const pciDeviceInfo pci_dev_info_1002_724b = {
+ 0x724b, pci_device_1002_724b,
+#ifdef INIT_SUBSYS_INFO
+ pci_ss_list_1002_724b,
+#else
+ NULL,
+#endif
+ 0
+};
+static const pciDeviceInfo pci_dev_info_1002_724c = {
+ 0x724c, pci_device_1002_724c,
+#ifdef INIT_SUBSYS_INFO
+ pci_ss_list_1002_724c,
+#else
+ NULL,
+#endif
+ 0
+};
+static const pciDeviceInfo pci_dev_info_1002_724d = {
+ 0x724d, pci_device_1002_724d,
+#ifdef INIT_SUBSYS_INFO
+ pci_ss_list_1002_724d,
+#else
+ NULL,
+#endif
+ 0
+};
+static const pciDeviceInfo pci_dev_info_1002_724e = {
+ 0x724e, pci_device_1002_724e,
+#ifdef INIT_SUBSYS_INFO
+ pci_ss_list_1002_724e,
+#else
+ NULL,
+#endif
+ 0
+};
+static const pciDeviceInfo pci_dev_info_1002_7269 = {
+ 0x7269, pci_device_1002_7269,
+#ifdef INIT_SUBSYS_INFO
+ pci_ss_list_1002_7269,
+#else
+ NULL,
+#endif
+ 0
+};
+static const pciDeviceInfo pci_dev_info_1002_726e = {
+ 0x726e, pci_device_1002_726e,
+#ifdef INIT_SUBSYS_INFO
+ pci_ss_list_1002_726e,
+#else
+ NULL,
+#endif
+ 0
+};
static const pciDeviceInfo pci_dev_info_1002_7833 = {
0x7833, pci_device_1002_7833,
#ifdef INIT_SUBSYS_INFO
@@ -67479,6 +71602,15 @@ static const pciDeviceInfo pci_dev_info_1014_0057 = {
#endif
0
};
+static const pciDeviceInfo pci_dev_info_1014_0058 = {
+ 0x0058, pci_device_1014_0058,
+#ifdef INIT_SUBSYS_INFO
+ pci_ss_list_1014_0058,
+#else
+ NULL,
+#endif
+ 0
+};
static const pciDeviceInfo pci_dev_info_1014_005c = {
0x005c, pci_device_1014_005c,
#ifdef INIT_SUBSYS_INFO
@@ -67902,6 +72034,15 @@ static const pciDeviceInfo pci_dev_info_1014_0302 = {
#endif
0
};
+static const pciDeviceInfo pci_dev_info_1014_0308 = {
+ 0x0308, pci_device_1014_0308,
+#ifdef INIT_SUBSYS_INFO
+ pci_ss_list_1014_0308,
+#else
+ NULL,
+#endif
+ 0
+};
static const pciDeviceInfo pci_dev_info_1014_0314 = {
0x0314, pci_device_1014_0314,
#ifdef INIT_SUBSYS_INFO
@@ -69135,6 +73276,15 @@ static const pciDeviceInfo pci_dev_info_1023_9930 = {
#endif
0
};
+static const pciDeviceInfo pci_dev_info_1025_0090 = {
+ 0x0090, pci_device_1025_0090,
+#ifdef INIT_SUBSYS_INFO
+ pci_ss_list_1025_0090,
+#else
+ NULL,
+#endif
+ 0
+};
static const pciDeviceInfo pci_dev_info_1025_1435 = {
0x1435, pci_device_1025_1435,
#ifdef INIT_SUBSYS_INFO
@@ -70010,6 +74160,33 @@ static const pciDeviceInfo pci_dev_info_102b_4536 = {
#endif
0
};
+static const pciDeviceInfo pci_dev_info_102b_4cdc = {
+ 0x4cdc, pci_device_102b_4cdc,
+#ifdef INIT_SUBSYS_INFO
+ pci_ss_list_102b_4cdc,
+#else
+ NULL,
+#endif
+ 0
+};
+static const pciDeviceInfo pci_dev_info_102b_4fc5 = {
+ 0x4fc5, pci_device_102b_4fc5,
+#ifdef INIT_SUBSYS_INFO
+ pci_ss_list_102b_4fc5,
+#else
+ NULL,
+#endif
+ 0
+};
+static const pciDeviceInfo pci_dev_info_102b_5e10 = {
+ 0x5e10, pci_device_102b_5e10,
+#ifdef INIT_SUBSYS_INFO
+ pci_ss_list_102b_5e10,
+#else
+ NULL,
+#endif
+ 0
+};
static const pciDeviceInfo pci_dev_info_102b_6573 = {
0x6573, pci_device_102b_6573,
#ifdef INIT_SUBSYS_INFO
@@ -70626,6 +74803,15 @@ static const pciDeviceInfo pci_dev_info_1033_0125 = {
#endif
0
};
+static const pciDeviceInfo pci_dev_info_1033_013a = {
+ 0x013a, pci_device_1033_013a,
+#ifdef INIT_SUBSYS_INFO
+ pci_ss_list_1033_013a,
+#else
+ NULL,
+#endif
+ 0
+};
#ifdef VENDOR_INCLUDE_NONVIDEO
static const pciDeviceInfo pci_dev_info_1036_0000 = {
0x0000, pci_device_1036_0000,
@@ -70754,6 +74940,15 @@ static const pciDeviceInfo pci_dev_info_1039_0182 = {
#endif
0
};
+static const pciDeviceInfo pci_dev_info_1039_0186 = {
+ 0x0186, pci_device_1039_0186,
+#ifdef INIT_SUBSYS_INFO
+ pci_ss_list_1039_0186,
+#else
+ NULL,
+#endif
+ 0
+};
static const pciDeviceInfo pci_dev_info_1039_0190 = {
0x0190, pci_device_1039_0190,
#ifdef INIT_SUBSYS_INFO
@@ -71015,6 +75210,15 @@ static const pciDeviceInfo pci_dev_info_1039_0661 = {
#endif
0
};
+static const pciDeviceInfo pci_dev_info_1039_0662 = {
+ 0x0662, pci_device_1039_0662,
+#ifdef INIT_SUBSYS_INFO
+ pci_ss_list_1039_0662,
+#else
+ NULL,
+#endif
+ 0
+};
static const pciDeviceInfo pci_dev_info_1039_0730 = {
0x0730, pci_device_1039_0730,
#ifdef INIT_SUBSYS_INFO
@@ -71159,6 +75363,69 @@ static const pciDeviceInfo pci_dev_info_1039_0965 = {
#endif
0
};
+static const pciDeviceInfo pci_dev_info_1039_0966 = {
+ 0x0966, pci_device_1039_0966,
+#ifdef INIT_SUBSYS_INFO
+ pci_ss_list_1039_0966,
+#else
+ NULL,
+#endif
+ 0
+};
+static const pciDeviceInfo pci_dev_info_1039_0968 = {
+ 0x0968, pci_device_1039_0968,
+#ifdef INIT_SUBSYS_INFO
+ pci_ss_list_1039_0968,
+#else
+ NULL,
+#endif
+ 0
+};
+static const pciDeviceInfo pci_dev_info_1039_1180 = {
+ 0x1180, pci_device_1039_1180,
+#ifdef INIT_SUBSYS_INFO
+ pci_ss_list_1039_1180,
+#else
+ NULL,
+#endif
+ 0
+};
+static const pciDeviceInfo pci_dev_info_1039_1182 = {
+ 0x1182, pci_device_1039_1182,
+#ifdef INIT_SUBSYS_INFO
+ pci_ss_list_1039_1182,
+#else
+ NULL,
+#endif
+ 0
+};
+static const pciDeviceInfo pci_dev_info_1039_1183 = {
+ 0x1183, pci_device_1039_1183,
+#ifdef INIT_SUBSYS_INFO
+ pci_ss_list_1039_1183,
+#else
+ NULL,
+#endif
+ 0
+};
+static const pciDeviceInfo pci_dev_info_1039_1184 = {
+ 0x1184, pci_device_1039_1184,
+#ifdef INIT_SUBSYS_INFO
+ pci_ss_list_1039_1184,
+#else
+ NULL,
+#endif
+ 0
+};
+static const pciDeviceInfo pci_dev_info_1039_1185 = {
+ 0x1185, pci_device_1039_1185,
+#ifdef INIT_SUBSYS_INFO
+ pci_ss_list_1039_1185,
+#else
+ NULL,
+#endif
+ 0
+};
static const pciDeviceInfo pci_dev_info_1039_3602 = {
0x3602, pci_device_1039_3602,
#ifdef INIT_SUBSYS_INFO
@@ -71366,6 +75633,24 @@ static const pciDeviceInfo pci_dev_info_1039_6330 = {
#endif
0
};
+static const pciDeviceInfo pci_dev_info_1039_6350 = {
+ 0x6350, pci_device_1039_6350,
+#ifdef INIT_SUBSYS_INFO
+ pci_ss_list_1039_6350,
+#else
+ NULL,
+#endif
+ 0
+};
+static const pciDeviceInfo pci_dev_info_1039_6351 = {
+ 0x6351, pci_device_1039_6351,
+#ifdef INIT_SUBSYS_INFO
+ pci_ss_list_1039_6351,
+#else
+ NULL,
+#endif
+ 0
+};
static const pciDeviceInfo pci_dev_info_1039_7001 = {
0x7001, pci_device_1039_7001,
#ifdef INIT_SUBSYS_INFO
@@ -71438,6 +75723,15 @@ static const pciDeviceInfo pci_dev_info_1039_7019 = {
#endif
0
};
+static const pciDeviceInfo pci_dev_info_1039_7502 = {
+ 0x7502, pci_device_1039_7502,
+#ifdef INIT_SUBSYS_INFO
+ pci_ss_list_1039_7502,
+#else
+ NULL,
+#endif
+ 0
+};
static const pciDeviceInfo pci_dev_info_103c_002a = {
0x002a, pci_device_103c_002a,
#ifdef INIT_SUBSYS_INFO
@@ -71681,6 +75975,15 @@ static const pciDeviceInfo pci_dev_info_103c_122e = {
#endif
0
};
+static const pciDeviceInfo pci_dev_info_103c_127b = {
+ 0x127b, pci_device_103c_127b,
+#ifdef INIT_SUBSYS_INFO
+ pci_ss_list_103c_127b,
+#else
+ NULL,
+#endif
+ 0
+};
static const pciDeviceInfo pci_dev_info_103c_127c = {
0x127c, pci_device_103c_127c,
#ifdef INIT_SUBSYS_INFO
@@ -71717,6 +76020,33 @@ static const pciDeviceInfo pci_dev_info_103c_12b4 = {
#endif
0
};
+static const pciDeviceInfo pci_dev_info_103c_12eb = {
+ 0x12eb, pci_device_103c_12eb,
+#ifdef INIT_SUBSYS_INFO
+ pci_ss_list_103c_12eb,
+#else
+ NULL,
+#endif
+ 0
+};
+static const pciDeviceInfo pci_dev_info_103c_12ec = {
+ 0x12ec, pci_device_103c_12ec,
+#ifdef INIT_SUBSYS_INFO
+ pci_ss_list_103c_12ec,
+#else
+ NULL,
+#endif
+ 0
+};
+static const pciDeviceInfo pci_dev_info_103c_12ee = {
+ 0x12ee, pci_device_103c_12ee,
+#ifdef INIT_SUBSYS_INFO
+ pci_ss_list_103c_12ee,
+#else
+ NULL,
+#endif
+ 0
+};
static const pciDeviceInfo pci_dev_info_103c_12f8 = {
0x12f8, pci_device_103c_12f8,
#ifdef INIT_SUBSYS_INFO
@@ -71789,6 +76119,51 @@ static const pciDeviceInfo pci_dev_info_103c_3230 = {
#endif
0
};
+static const pciDeviceInfo pci_dev_info_103c_4030 = {
+ 0x4030, pci_device_103c_4030,
+#ifdef INIT_SUBSYS_INFO
+ pci_ss_list_103c_4030,
+#else
+ NULL,
+#endif
+ 0
+};
+static const pciDeviceInfo pci_dev_info_103c_4031 = {
+ 0x4031, pci_device_103c_4031,
+#ifdef INIT_SUBSYS_INFO
+ pci_ss_list_103c_4031,
+#else
+ NULL,
+#endif
+ 0
+};
+static const pciDeviceInfo pci_dev_info_103c_4037 = {
+ 0x4037, pci_device_103c_4037,
+#ifdef INIT_SUBSYS_INFO
+ pci_ss_list_103c_4037,
+#else
+ NULL,
+#endif
+ 0
+};
+static const pciDeviceInfo pci_dev_info_103c_403b = {
+ 0x403b, pci_device_103c_403b,
+#ifdef INIT_SUBSYS_INFO
+ pci_ss_list_103c_403b,
+#else
+ NULL,
+#endif
+ 0
+};
+static const pciDeviceInfo pci_dev_info_103c_60e8 = {
+ 0x60e8, pci_device_103c_60e8,
+#ifdef INIT_SUBSYS_INFO
+ pci_ss_list_103c_60e8,
+#else
+ NULL,
+#endif
+ 0
+};
#ifdef VENDOR_INCLUDE_NONVIDEO
static const pciDeviceInfo pci_dev_info_1042_1000 = {
0x1000, pci_device_1042_1000,
@@ -71891,6 +76266,15 @@ static const pciDeviceInfo pci_dev_info_1043_8043 = {
#endif
0
};
+static const pciDeviceInfo pci_dev_info_1043_8047 = {
+ 0x8047, pci_device_1043_8047,
+#ifdef INIT_SUBSYS_INFO
+ pci_ss_list_1043_8047,
+#else
+ NULL,
+#endif
+ 0
+};
static const pciDeviceInfo pci_dev_info_1043_807b = {
0x807b, pci_device_1043_807b,
#ifdef INIT_SUBSYS_INFO
@@ -71945,6 +76329,15 @@ static const pciDeviceInfo pci_dev_info_1043_80df = {
#endif
0
};
+static const pciDeviceInfo pci_dev_info_1043_815a = {
+ 0x815a, pci_device_1043_815a,
+#ifdef INIT_SUBSYS_INFO
+ pci_ss_list_1043_815a,
+#else
+ NULL,
+#endif
+ 0
+};
static const pciDeviceInfo pci_dev_info_1043_8187 = {
0x8187, pci_device_1043_8187,
#ifdef INIT_SUBSYS_INFO
@@ -72683,6 +77076,15 @@ static const pciDeviceInfo pci_dev_info_104c_8039 = {
#endif
0
};
+static const pciDeviceInfo pci_dev_info_104c_803a = {
+ 0x803a, pci_device_104c_803a,
+#ifdef INIT_SUBSYS_INFO
+ pci_ss_list_104c_803a,
+#else
+ NULL,
+#endif
+ 0
+};
static const pciDeviceInfo pci_dev_info_104c_803b = {
0x803b, pci_device_104c_803b,
#ifdef INIT_SUBSYS_INFO
@@ -72692,6 +77094,24 @@ static const pciDeviceInfo pci_dev_info_104c_803b = {
#endif
0
};
+static const pciDeviceInfo pci_dev_info_104c_803c = {
+ 0x803c, pci_device_104c_803c,
+#ifdef INIT_SUBSYS_INFO
+ pci_ss_list_104c_803c,
+#else
+ NULL,
+#endif
+ 0
+};
+static const pciDeviceInfo pci_dev_info_104c_803d = {
+ 0x803d, pci_device_104c_803d,
+#ifdef INIT_SUBSYS_INFO
+ pci_ss_list_104c_803d,
+#else
+ NULL,
+#endif
+ 0
+};
static const pciDeviceInfo pci_dev_info_104c_8201 = {
0x8201, pci_device_104c_8201,
#ifdef INIT_SUBSYS_INFO
@@ -73479,6 +77899,15 @@ static const pciDeviceInfo pci_dev_info_1057_0009 = {
#endif
0
};
+static const pciDeviceInfo pci_dev_info_1057_0012 = {
+ 0x0012, pci_device_1057_0012,
+#ifdef INIT_SUBSYS_INFO
+ pci_ss_list_1057_0012,
+#else
+ NULL,
+#endif
+ 0
+};
static const pciDeviceInfo pci_dev_info_1057_0100 = {
0x0100, pci_device_1057_0100,
#ifdef INIT_SUBSYS_INFO
@@ -73524,6 +77953,15 @@ static const pciDeviceInfo pci_dev_info_1057_18c1 = {
#endif
0
};
+static const pciDeviceInfo pci_dev_info_1057_3055 = {
+ 0x3055, pci_device_1057_3055,
+#ifdef INIT_SUBSYS_INFO
+ pci_ss_list_1057_3055,
+#else
+ NULL,
+#endif
+ 0
+};
static const pciDeviceInfo pci_dev_info_1057_3410 = {
0x3410, pci_device_1057_3410,
#ifdef INIT_SUBSYS_INFO
@@ -73822,6 +78260,15 @@ static const pciDeviceInfo pci_dev_info_105a_3d75 = {
#endif
0
};
+static const pciDeviceInfo pci_dev_info_105a_4302 = {
+ 0x4302, pci_device_105a_4302,
+#ifdef INIT_SUBSYS_INFO
+ pci_ss_list_105a_4302,
+#else
+ NULL,
+#endif
+ 0
+};
static const pciDeviceInfo pci_dev_info_105a_4d30 = {
0x4d30, pci_device_105a_4d30,
#ifdef INIT_SUBSYS_INFO
@@ -73966,6 +78413,24 @@ static const pciDeviceInfo pci_dev_info_105a_8002 = {
#endif
0
};
+static const pciDeviceInfo pci_dev_info_105a_8350 = {
+ 0x8350, pci_device_105a_8350,
+#ifdef INIT_SUBSYS_INFO
+ pci_ss_list_105a_8350,
+#else
+ NULL,
+#endif
+ 0
+};
+static const pciDeviceInfo pci_dev_info_105a_c350 = {
+ 0xc350, pci_device_105a_c350,
+#ifdef INIT_SUBSYS_INFO
+ pci_ss_list_105a_c350,
+#else
+ NULL,
+#endif
+ 0
+};
#endif
static const pciDeviceInfo pci_dev_info_105d_2309 = {
0x2309, pci_device_105d_2309,
@@ -75302,19 +79767,19 @@ static const pciDeviceInfo pci_dev_info_1077_2432 = {
#endif
0
};
-static const pciDeviceInfo pci_dev_info_1077_3010 = {
- 0x3010, pci_device_1077_3010,
+static const pciDeviceInfo pci_dev_info_1077_3022 = {
+ 0x3022, pci_device_1077_3022,
#ifdef INIT_SUBSYS_INFO
- pci_ss_list_1077_3010,
+ pci_ss_list_1077_3022,
#else
NULL,
#endif
0
};
-static const pciDeviceInfo pci_dev_info_1077_3022 = {
- 0x3022, pci_device_1077_3022,
+static const pciDeviceInfo pci_dev_info_1077_3032 = {
+ 0x3032, pci_device_1077_3032,
#ifdef INIT_SUBSYS_INFO
- pci_ss_list_1077_3022,
+ pci_ss_list_1077_3032,
#else
NULL,
#endif
@@ -75338,6 +79803,24 @@ static const pciDeviceInfo pci_dev_info_1077_4022 = {
#endif
0
};
+static const pciDeviceInfo pci_dev_info_1077_4032 = {
+ 0x4032, pci_device_1077_4032,
+#ifdef INIT_SUBSYS_INFO
+ pci_ss_list_1077_4032,
+#else
+ NULL,
+#endif
+ 0
+};
+static const pciDeviceInfo pci_dev_info_1077_5432 = {
+ 0x5432, pci_device_1077_5432,
+#ifdef INIT_SUBSYS_INFO
+ pci_ss_list_1077_5432,
+#else
+ NULL,
+#endif
+ 0
+};
static const pciDeviceInfo pci_dev_info_1077_6312 = {
0x6312, pci_device_1077_6312,
#ifdef INIT_SUBSYS_INFO
@@ -77231,24 +81714,6 @@ static const pciDeviceInfo pci_dev_info_10a9_8002 = {
#endif
0
};
-static const pciDeviceInfo pci_dev_info_10a9_8010 = {
- 0x8010, pci_device_10a9_8010,
-#ifdef INIT_SUBSYS_INFO
- pci_ss_list_10a9_8010,
-#else
- NULL,
-#endif
- 0
-};
-static const pciDeviceInfo pci_dev_info_10a9_8018 = {
- 0x8018, pci_device_10a9_8018,
-#ifdef INIT_SUBSYS_INFO
- pci_ss_list_10a9_8018,
-#else
- NULL,
-#endif
- 0
-};
#endif
#ifdef VENDOR_INCLUDE_NONVIDEO
static const pciDeviceInfo pci_dev_info_10aa_0000 = {
@@ -77583,6 +82048,15 @@ static const pciDeviceInfo pci_dev_info_10b5_9080 = {
#endif
0
};
+static const pciDeviceInfo pci_dev_info_10b5_9656 = {
+ 0x9656, pci_device_10b5_9656,
+#ifdef INIT_SUBSYS_INFO
+ pci_ss_list_10b5_9656,
+#else
+ NULL,
+#endif
+ 0
+};
static const pciDeviceInfo pci_dev_info_10b5_bb04 = {
0xbb04, pci_device_10b5_bb04,
#ifdef INIT_SUBSYS_INFO
@@ -77592,6 +82066,15 @@ static const pciDeviceInfo pci_dev_info_10b5_bb04 = {
#endif
0
};
+static const pciDeviceInfo pci_dev_info_10b5_c001 = {
+ 0xc001, pci_device_10b5_c001,
+#ifdef INIT_SUBSYS_INFO
+ pci_ss_list_10b5_c001,
+#else
+ NULL,
+#endif
+ 0
+};
#endif
#ifdef VENDOR_INCLUDE_NONVIDEO
static const pciDeviceInfo pci_dev_info_10b6_0001 = {
@@ -78118,6 +82601,15 @@ static const pciDeviceInfo pci_dev_info_10b7_9051 = {
#endif
0
};
+static const pciDeviceInfo pci_dev_info_10b7_9054 = {
+ 0x9054, pci_device_10b7_9054,
+#ifdef INIT_SUBSYS_INFO
+ pci_ss_list_10b7_9054,
+#else
+ NULL,
+#endif
+ 0
+};
static const pciDeviceInfo pci_dev_info_10b7_9055 = {
0x9055, pci_device_10b7_9055,
#ifdef INIT_SUBSYS_INFO
@@ -79772,6 +84264,15 @@ static const pciDeviceInfo pci_dev_info_10de_0049 = {
#endif
0
};
+static const pciDeviceInfo pci_dev_info_10de_004d = {
+ 0x004d, pci_device_10de_004d,
+#ifdef INIT_SUBSYS_INFO
+ pci_ss_list_10de_004d,
+#else
+ NULL,
+#endif
+ 0
+};
static const pciDeviceInfo pci_dev_info_10de_004e = {
0x004e, pci_device_10de_004e,
#ifdef INIT_SUBSYS_INFO
@@ -80789,6 +85290,15 @@ static const pciDeviceInfo pci_dev_info_10de_014c = {
#endif
0
};
+static const pciDeviceInfo pci_dev_info_10de_014d = {
+ 0x014d, pci_device_10de_014d,
+#ifdef INIT_SUBSYS_INFO
+ pci_ss_list_10de_014d,
+#else
+ NULL,
+#endif
+ 0
+};
static const pciDeviceInfo pci_dev_info_10de_014e = {
0x014e, pci_device_10de_014e,
#ifdef INIT_SUBSYS_INFO
@@ -81302,6 +85812,15 @@ static const pciDeviceInfo pci_dev_info_10de_01d1 = {
#endif
0
};
+static const pciDeviceInfo pci_dev_info_10de_01d6 = {
+ 0x01d6, pci_device_10de_01d6,
+#ifdef INIT_SUBSYS_INFO
+ pci_ss_list_10de_01d6,
+#else
+ NULL,
+#endif
+ 0
+};
static const pciDeviceInfo pci_dev_info_10de_01d7 = {
0x01d7, pci_device_10de_01d7,
#ifdef INIT_SUBSYS_INFO
@@ -81986,6 +86505,33 @@ static const pciDeviceInfo pci_dev_info_10de_0291 = {
#endif
0
};
+static const pciDeviceInfo pci_dev_info_10de_0292 = {
+ 0x0292, pci_device_10de_0292,
+#ifdef INIT_SUBSYS_INFO
+ pci_ss_list_10de_0292,
+#else
+ NULL,
+#endif
+ 0
+};
+static const pciDeviceInfo pci_dev_info_10de_0298 = {
+ 0x0298, pci_device_10de_0298,
+#ifdef INIT_SUBSYS_INFO
+ pci_ss_list_10de_0298,
+#else
+ NULL,
+#endif
+ 0
+};
+static const pciDeviceInfo pci_dev_info_10de_0299 = {
+ 0x0299, pci_device_10de_0299,
+#ifdef INIT_SUBSYS_INFO
+ pci_ss_list_10de_0299,
+#else
+ NULL,
+#endif
+ 0
+};
static const pciDeviceInfo pci_dev_info_10de_029a = {
0x029a, pci_device_10de_029a,
#ifdef INIT_SUBSYS_INFO
@@ -82031,6 +86577,15 @@ static const pciDeviceInfo pci_dev_info_10de_029e = {
#endif
0
};
+static const pciDeviceInfo pci_dev_info_10de_029f = {
+ 0x029f, pci_device_10de_029f,
+#ifdef INIT_SUBSYS_INFO
+ pci_ss_list_10de_029f,
+#else
+ NULL,
+#endif
+ 0
+};
static const pciDeviceInfo pci_dev_info_10de_02a0 = {
0x02a0, pci_device_10de_02a0,
#ifdef INIT_SUBSYS_INFO
@@ -82751,6 +87306,15 @@ static const pciDeviceInfo pci_dev_info_10de_036a = {
#endif
0
};
+static const pciDeviceInfo pci_dev_info_10de_036b = {
+ 0x036b, pci_device_10de_036b,
+#ifdef INIT_SUBSYS_INFO
+ pci_ss_list_10de_036b,
+#else
+ NULL,
+#endif
+ 0
+};
static const pciDeviceInfo pci_dev_info_10de_036c = {
0x036c, pci_device_10de_036c,
#ifdef INIT_SUBSYS_INFO
@@ -82778,6 +87342,15 @@ static const pciDeviceInfo pci_dev_info_10de_036e = {
#endif
0
};
+static const pciDeviceInfo pci_dev_info_10de_0370 = {
+ 0x0370, pci_device_10de_0370,
+#ifdef INIT_SUBSYS_INFO
+ pci_ss_list_10de_0370,
+#else
+ NULL,
+#endif
+ 0
+};
static const pciDeviceInfo pci_dev_info_10de_0371 = {
0x0371, pci_device_10de_0371,
#ifdef INIT_SUBSYS_INFO
@@ -82805,6 +87378,51 @@ static const pciDeviceInfo pci_dev_info_10de_0373 = {
#endif
0
};
+static const pciDeviceInfo pci_dev_info_10de_0374 = {
+ 0x0374, pci_device_10de_0374,
+#ifdef INIT_SUBSYS_INFO
+ pci_ss_list_10de_0374,
+#else
+ NULL,
+#endif
+ 0
+};
+static const pciDeviceInfo pci_dev_info_10de_0375 = {
+ 0x0375, pci_device_10de_0375,
+#ifdef INIT_SUBSYS_INFO
+ pci_ss_list_10de_0375,
+#else
+ NULL,
+#endif
+ 0
+};
+static const pciDeviceInfo pci_dev_info_10de_0376 = {
+ 0x0376, pci_device_10de_0376,
+#ifdef INIT_SUBSYS_INFO
+ pci_ss_list_10de_0376,
+#else
+ NULL,
+#endif
+ 0
+};
+static const pciDeviceInfo pci_dev_info_10de_0377 = {
+ 0x0377, pci_device_10de_0377,
+#ifdef INIT_SUBSYS_INFO
+ pci_ss_list_10de_0377,
+#else
+ NULL,
+#endif
+ 0
+};
+static const pciDeviceInfo pci_dev_info_10de_0378 = {
+ 0x0378, pci_device_10de_0378,
+#ifdef INIT_SUBSYS_INFO
+ pci_ss_list_10de_0378,
+#else
+ NULL,
+#endif
+ 0
+};
static const pciDeviceInfo pci_dev_info_10de_037a = {
0x037a, pci_device_10de_037a,
#ifdef INIT_SUBSYS_INFO
@@ -82850,6 +87468,15 @@ static const pciDeviceInfo pci_dev_info_10de_0392 = {
#endif
0
};
+static const pciDeviceInfo pci_dev_info_10de_0393 = {
+ 0x0393, pci_device_10de_0393,
+#ifdef INIT_SUBSYS_INFO
+ pci_ss_list_10de_0393,
+#else
+ NULL,
+#endif
+ 0
+};
static const pciDeviceInfo pci_dev_info_10de_0398 = {
0x0398, pci_device_10de_0398,
#ifdef INIT_SUBSYS_INFO
@@ -82868,6 +87495,294 @@ static const pciDeviceInfo pci_dev_info_10de_039e = {
#endif
0
};
+static const pciDeviceInfo pci_dev_info_10de_03a0 = {
+ 0x03a0, pci_device_10de_03a0,
+#ifdef INIT_SUBSYS_INFO
+ pci_ss_list_10de_03a0,
+#else
+ NULL,
+#endif
+ 0
+};
+static const pciDeviceInfo pci_dev_info_10de_03a1 = {
+ 0x03a1, pci_device_10de_03a1,
+#ifdef INIT_SUBSYS_INFO
+ pci_ss_list_10de_03a1,
+#else
+ NULL,
+#endif
+ 0
+};
+static const pciDeviceInfo pci_dev_info_10de_03a2 = {
+ 0x03a2, pci_device_10de_03a2,
+#ifdef INIT_SUBSYS_INFO
+ pci_ss_list_10de_03a2,
+#else
+ NULL,
+#endif
+ 0
+};
+static const pciDeviceInfo pci_dev_info_10de_03a3 = {
+ 0x03a3, pci_device_10de_03a3,
+#ifdef INIT_SUBSYS_INFO
+ pci_ss_list_10de_03a3,
+#else
+ NULL,
+#endif
+ 0
+};
+static const pciDeviceInfo pci_dev_info_10de_03a4 = {
+ 0x03a4, pci_device_10de_03a4,
+#ifdef INIT_SUBSYS_INFO
+ pci_ss_list_10de_03a4,
+#else
+ NULL,
+#endif
+ 0
+};
+static const pciDeviceInfo pci_dev_info_10de_03a5 = {
+ 0x03a5, pci_device_10de_03a5,
+#ifdef INIT_SUBSYS_INFO
+ pci_ss_list_10de_03a5,
+#else
+ NULL,
+#endif
+ 0
+};
+static const pciDeviceInfo pci_dev_info_10de_03a6 = {
+ 0x03a6, pci_device_10de_03a6,
+#ifdef INIT_SUBSYS_INFO
+ pci_ss_list_10de_03a6,
+#else
+ NULL,
+#endif
+ 0
+};
+static const pciDeviceInfo pci_dev_info_10de_03a7 = {
+ 0x03a7, pci_device_10de_03a7,
+#ifdef INIT_SUBSYS_INFO
+ pci_ss_list_10de_03a7,
+#else
+ NULL,
+#endif
+ 0
+};
+static const pciDeviceInfo pci_dev_info_10de_03a8 = {
+ 0x03a8, pci_device_10de_03a8,
+#ifdef INIT_SUBSYS_INFO
+ pci_ss_list_10de_03a8,
+#else
+ NULL,
+#endif
+ 0
+};
+static const pciDeviceInfo pci_dev_info_10de_03a9 = {
+ 0x03a9, pci_device_10de_03a9,
+#ifdef INIT_SUBSYS_INFO
+ pci_ss_list_10de_03a9,
+#else
+ NULL,
+#endif
+ 0
+};
+static const pciDeviceInfo pci_dev_info_10de_03aa = {
+ 0x03aa, pci_device_10de_03aa,
+#ifdef INIT_SUBSYS_INFO
+ pci_ss_list_10de_03aa,
+#else
+ NULL,
+#endif
+ 0
+};
+static const pciDeviceInfo pci_dev_info_10de_03ab = {
+ 0x03ab, pci_device_10de_03ab,
+#ifdef INIT_SUBSYS_INFO
+ pci_ss_list_10de_03ab,
+#else
+ NULL,
+#endif
+ 0
+};
+static const pciDeviceInfo pci_dev_info_10de_03ac = {
+ 0x03ac, pci_device_10de_03ac,
+#ifdef INIT_SUBSYS_INFO
+ pci_ss_list_10de_03ac,
+#else
+ NULL,
+#endif
+ 0
+};
+static const pciDeviceInfo pci_dev_info_10de_03ad = {
+ 0x03ad, pci_device_10de_03ad,
+#ifdef INIT_SUBSYS_INFO
+ pci_ss_list_10de_03ad,
+#else
+ NULL,
+#endif
+ 0
+};
+static const pciDeviceInfo pci_dev_info_10de_03ae = {
+ 0x03ae, pci_device_10de_03ae,
+#ifdef INIT_SUBSYS_INFO
+ pci_ss_list_10de_03ae,
+#else
+ NULL,
+#endif
+ 0
+};
+static const pciDeviceInfo pci_dev_info_10de_03af = {
+ 0x03af, pci_device_10de_03af,
+#ifdef INIT_SUBSYS_INFO
+ pci_ss_list_10de_03af,
+#else
+ NULL,
+#endif
+ 0
+};
+static const pciDeviceInfo pci_dev_info_10de_03b0 = {
+ 0x03b0, pci_device_10de_03b0,
+#ifdef INIT_SUBSYS_INFO
+ pci_ss_list_10de_03b0,
+#else
+ NULL,
+#endif
+ 0
+};
+static const pciDeviceInfo pci_dev_info_10de_03b1 = {
+ 0x03b1, pci_device_10de_03b1,
+#ifdef INIT_SUBSYS_INFO
+ pci_ss_list_10de_03b1,
+#else
+ NULL,
+#endif
+ 0
+};
+static const pciDeviceInfo pci_dev_info_10de_03b2 = {
+ 0x03b2, pci_device_10de_03b2,
+#ifdef INIT_SUBSYS_INFO
+ pci_ss_list_10de_03b2,
+#else
+ NULL,
+#endif
+ 0
+};
+static const pciDeviceInfo pci_dev_info_10de_03b3 = {
+ 0x03b3, pci_device_10de_03b3,
+#ifdef INIT_SUBSYS_INFO
+ pci_ss_list_10de_03b3,
+#else
+ NULL,
+#endif
+ 0
+};
+static const pciDeviceInfo pci_dev_info_10de_03b4 = {
+ 0x03b4, pci_device_10de_03b4,
+#ifdef INIT_SUBSYS_INFO
+ pci_ss_list_10de_03b4,
+#else
+ NULL,
+#endif
+ 0
+};
+static const pciDeviceInfo pci_dev_info_10de_03b5 = {
+ 0x03b5, pci_device_10de_03b5,
+#ifdef INIT_SUBSYS_INFO
+ pci_ss_list_10de_03b5,
+#else
+ NULL,
+#endif
+ 0
+};
+static const pciDeviceInfo pci_dev_info_10de_03b6 = {
+ 0x03b6, pci_device_10de_03b6,
+#ifdef INIT_SUBSYS_INFO
+ pci_ss_list_10de_03b6,
+#else
+ NULL,
+#endif
+ 0
+};
+static const pciDeviceInfo pci_dev_info_10de_03b7 = {
+ 0x03b7, pci_device_10de_03b7,
+#ifdef INIT_SUBSYS_INFO
+ pci_ss_list_10de_03b7,
+#else
+ NULL,
+#endif
+ 0
+};
+static const pciDeviceInfo pci_dev_info_10de_03b8 = {
+ 0x03b8, pci_device_10de_03b8,
+#ifdef INIT_SUBSYS_INFO
+ pci_ss_list_10de_03b8,
+#else
+ NULL,
+#endif
+ 0
+};
+static const pciDeviceInfo pci_dev_info_10de_03b9 = {
+ 0x03b9, pci_device_10de_03b9,
+#ifdef INIT_SUBSYS_INFO
+ pci_ss_list_10de_03b9,
+#else
+ NULL,
+#endif
+ 0
+};
+static const pciDeviceInfo pci_dev_info_10de_03ba = {
+ 0x03ba, pci_device_10de_03ba,
+#ifdef INIT_SUBSYS_INFO
+ pci_ss_list_10de_03ba,
+#else
+ NULL,
+#endif
+ 0
+};
+static const pciDeviceInfo pci_dev_info_10de_03bb = {
+ 0x03bb, pci_device_10de_03bb,
+#ifdef INIT_SUBSYS_INFO
+ pci_ss_list_10de_03bb,
+#else
+ NULL,
+#endif
+ 0
+};
+static const pciDeviceInfo pci_dev_info_10de_03d0 = {
+ 0x03d0, pci_device_10de_03d0,
+#ifdef INIT_SUBSYS_INFO
+ pci_ss_list_10de_03d0,
+#else
+ NULL,
+#endif
+ 0
+};
+static const pciDeviceInfo pci_dev_info_10de_03d1 = {
+ 0x03d1, pci_device_10de_03d1,
+#ifdef INIT_SUBSYS_INFO
+ pci_ss_list_10de_03d1,
+#else
+ NULL,
+#endif
+ 0
+};
+static const pciDeviceInfo pci_dev_info_10de_03d2 = {
+ 0x03d2, pci_device_10de_03d2,
+#ifdef INIT_SUBSYS_INFO
+ pci_ss_list_10de_03d2,
+#else
+ NULL,
+#endif
+ 0
+};
+static const pciDeviceInfo pci_dev_info_10de_03d5 = {
+ 0x03d5, pci_device_10de_03d5,
+#ifdef INIT_SUBSYS_INFO
+ pci_ss_list_10de_03d5,
+#else
+ NULL,
+#endif
+ 0
+};
static const pciDeviceInfo pci_dev_info_10de_03e0 = {
0x03e0, pci_device_10de_03e0,
#ifdef INIT_SUBSYS_INFO
@@ -82940,6 +87855,24 @@ static const pciDeviceInfo pci_dev_info_10de_03e7 = {
#endif
0
};
+static const pciDeviceInfo pci_dev_info_10de_03e8 = {
+ 0x03e8, pci_device_10de_03e8,
+#ifdef INIT_SUBSYS_INFO
+ pci_ss_list_10de_03e8,
+#else
+ NULL,
+#endif
+ 0
+};
+static const pciDeviceInfo pci_dev_info_10de_03e9 = {
+ 0x03e9, pci_device_10de_03e9,
+#ifdef INIT_SUBSYS_INFO
+ pci_ss_list_10de_03e9,
+#else
+ NULL,
+#endif
+ 0
+};
static const pciDeviceInfo pci_dev_info_10de_03ea = {
0x03ea, pci_device_10de_03ea,
#ifdef INIT_SUBSYS_INFO
@@ -83012,6 +87945,24 @@ static const pciDeviceInfo pci_dev_info_10de_03f2 = {
#endif
0
};
+static const pciDeviceInfo pci_dev_info_10de_03f3 = {
+ 0x03f3, pci_device_10de_03f3,
+#ifdef INIT_SUBSYS_INFO
+ pci_ss_list_10de_03f3,
+#else
+ NULL,
+#endif
+ 0
+};
+static const pciDeviceInfo pci_dev_info_10de_03f4 = {
+ 0x03f4, pci_device_10de_03f4,
+#ifdef INIT_SUBSYS_INFO
+ pci_ss_list_10de_03f4,
+#else
+ NULL,
+#endif
+ 0
+};
static const pciDeviceInfo pci_dev_info_10de_03f5 = {
0x03f5, pci_device_10de_03f5,
#ifdef INIT_SUBSYS_INFO
@@ -83039,6 +87990,285 @@ static const pciDeviceInfo pci_dev_info_10de_03f7 = {
#endif
0
};
+static const pciDeviceInfo pci_dev_info_10de_0440 = {
+ 0x0440, pci_device_10de_0440,
+#ifdef INIT_SUBSYS_INFO
+ pci_ss_list_10de_0440,
+#else
+ NULL,
+#endif
+ 0
+};
+static const pciDeviceInfo pci_dev_info_10de_0441 = {
+ 0x0441, pci_device_10de_0441,
+#ifdef INIT_SUBSYS_INFO
+ pci_ss_list_10de_0441,
+#else
+ NULL,
+#endif
+ 0
+};
+static const pciDeviceInfo pci_dev_info_10de_0442 = {
+ 0x0442, pci_device_10de_0442,
+#ifdef INIT_SUBSYS_INFO
+ pci_ss_list_10de_0442,
+#else
+ NULL,
+#endif
+ 0
+};
+static const pciDeviceInfo pci_dev_info_10de_0443 = {
+ 0x0443, pci_device_10de_0443,
+#ifdef INIT_SUBSYS_INFO
+ pci_ss_list_10de_0443,
+#else
+ NULL,
+#endif
+ 0
+};
+static const pciDeviceInfo pci_dev_info_10de_0444 = {
+ 0x0444, pci_device_10de_0444,
+#ifdef INIT_SUBSYS_INFO
+ pci_ss_list_10de_0444,
+#else
+ NULL,
+#endif
+ 0
+};
+static const pciDeviceInfo pci_dev_info_10de_0445 = {
+ 0x0445, pci_device_10de_0445,
+#ifdef INIT_SUBSYS_INFO
+ pci_ss_list_10de_0445,
+#else
+ NULL,
+#endif
+ 0
+};
+static const pciDeviceInfo pci_dev_info_10de_0446 = {
+ 0x0446, pci_device_10de_0446,
+#ifdef INIT_SUBSYS_INFO
+ pci_ss_list_10de_0446,
+#else
+ NULL,
+#endif
+ 0
+};
+static const pciDeviceInfo pci_dev_info_10de_0447 = {
+ 0x0447, pci_device_10de_0447,
+#ifdef INIT_SUBSYS_INFO
+ pci_ss_list_10de_0447,
+#else
+ NULL,
+#endif
+ 0
+};
+static const pciDeviceInfo pci_dev_info_10de_0448 = {
+ 0x0448, pci_device_10de_0448,
+#ifdef INIT_SUBSYS_INFO
+ pci_ss_list_10de_0448,
+#else
+ NULL,
+#endif
+ 0
+};
+static const pciDeviceInfo pci_dev_info_10de_0449 = {
+ 0x0449, pci_device_10de_0449,
+#ifdef INIT_SUBSYS_INFO
+ pci_ss_list_10de_0449,
+#else
+ NULL,
+#endif
+ 0
+};
+static const pciDeviceInfo pci_dev_info_10de_044a = {
+ 0x044a, pci_device_10de_044a,
+#ifdef INIT_SUBSYS_INFO
+ pci_ss_list_10de_044a,
+#else
+ NULL,
+#endif
+ 0
+};
+static const pciDeviceInfo pci_dev_info_10de_044b = {
+ 0x044b, pci_device_10de_044b,
+#ifdef INIT_SUBSYS_INFO
+ pci_ss_list_10de_044b,
+#else
+ NULL,
+#endif
+ 0
+};
+static const pciDeviceInfo pci_dev_info_10de_044c = {
+ 0x044c, pci_device_10de_044c,
+#ifdef INIT_SUBSYS_INFO
+ pci_ss_list_10de_044c,
+#else
+ NULL,
+#endif
+ 0
+};
+static const pciDeviceInfo pci_dev_info_10de_044d = {
+ 0x044d, pci_device_10de_044d,
+#ifdef INIT_SUBSYS_INFO
+ pci_ss_list_10de_044d,
+#else
+ NULL,
+#endif
+ 0
+};
+static const pciDeviceInfo pci_dev_info_10de_044e = {
+ 0x044e, pci_device_10de_044e,
+#ifdef INIT_SUBSYS_INFO
+ pci_ss_list_10de_044e,
+#else
+ NULL,
+#endif
+ 0
+};
+static const pciDeviceInfo pci_dev_info_10de_044f = {
+ 0x044f, pci_device_10de_044f,
+#ifdef INIT_SUBSYS_INFO
+ pci_ss_list_10de_044f,
+#else
+ NULL,
+#endif
+ 0
+};
+static const pciDeviceInfo pci_dev_info_10de_0450 = {
+ 0x0450, pci_device_10de_0450,
+#ifdef INIT_SUBSYS_INFO
+ pci_ss_list_10de_0450,
+#else
+ NULL,
+#endif
+ 0
+};
+static const pciDeviceInfo pci_dev_info_10de_0451 = {
+ 0x0451, pci_device_10de_0451,
+#ifdef INIT_SUBSYS_INFO
+ pci_ss_list_10de_0451,
+#else
+ NULL,
+#endif
+ 0
+};
+static const pciDeviceInfo pci_dev_info_10de_0452 = {
+ 0x0452, pci_device_10de_0452,
+#ifdef INIT_SUBSYS_INFO
+ pci_ss_list_10de_0452,
+#else
+ NULL,
+#endif
+ 0
+};
+static const pciDeviceInfo pci_dev_info_10de_0453 = {
+ 0x0453, pci_device_10de_0453,
+#ifdef INIT_SUBSYS_INFO
+ pci_ss_list_10de_0453,
+#else
+ NULL,
+#endif
+ 0
+};
+static const pciDeviceInfo pci_dev_info_10de_0454 = {
+ 0x0454, pci_device_10de_0454,
+#ifdef INIT_SUBSYS_INFO
+ pci_ss_list_10de_0454,
+#else
+ NULL,
+#endif
+ 0
+};
+static const pciDeviceInfo pci_dev_info_10de_0455 = {
+ 0x0455, pci_device_10de_0455,
+#ifdef INIT_SUBSYS_INFO
+ pci_ss_list_10de_0455,
+#else
+ NULL,
+#endif
+ 0
+};
+static const pciDeviceInfo pci_dev_info_10de_0456 = {
+ 0x0456, pci_device_10de_0456,
+#ifdef INIT_SUBSYS_INFO
+ pci_ss_list_10de_0456,
+#else
+ NULL,
+#endif
+ 0
+};
+static const pciDeviceInfo pci_dev_info_10de_0457 = {
+ 0x0457, pci_device_10de_0457,
+#ifdef INIT_SUBSYS_INFO
+ pci_ss_list_10de_0457,
+#else
+ NULL,
+#endif
+ 0
+};
+static const pciDeviceInfo pci_dev_info_10de_0458 = {
+ 0x0458, pci_device_10de_0458,
+#ifdef INIT_SUBSYS_INFO
+ pci_ss_list_10de_0458,
+#else
+ NULL,
+#endif
+ 0
+};
+static const pciDeviceInfo pci_dev_info_10de_0459 = {
+ 0x0459, pci_device_10de_0459,
+#ifdef INIT_SUBSYS_INFO
+ pci_ss_list_10de_0459,
+#else
+ NULL,
+#endif
+ 0
+};
+static const pciDeviceInfo pci_dev_info_10de_045a = {
+ 0x045a, pci_device_10de_045a,
+#ifdef INIT_SUBSYS_INFO
+ pci_ss_list_10de_045a,
+#else
+ NULL,
+#endif
+ 0
+};
+static const pciDeviceInfo pci_dev_info_10de_045c = {
+ 0x045c, pci_device_10de_045c,
+#ifdef INIT_SUBSYS_INFO
+ pci_ss_list_10de_045c,
+#else
+ NULL,
+#endif
+ 0
+};
+static const pciDeviceInfo pci_dev_info_10de_045d = {
+ 0x045d, pci_device_10de_045d,
+#ifdef INIT_SUBSYS_INFO
+ pci_ss_list_10de_045d,
+#else
+ NULL,
+#endif
+ 0
+};
+static const pciDeviceInfo pci_dev_info_10de_045e = {
+ 0x045e, pci_device_10de_045e,
+#ifdef INIT_SUBSYS_INFO
+ pci_ss_list_10de_045e,
+#else
+ NULL,
+#endif
+ 0
+};
+static const pciDeviceInfo pci_dev_info_10de_045f = {
+ 0x045f, pci_device_10de_045f,
+#ifdef INIT_SUBSYS_INFO
+ pci_ss_list_10de_045f,
+#else
+ NULL,
+#endif
+ 0
+};
#ifdef VENDOR_INCLUDE_NONVIDEO
static const pciDeviceInfo pci_dev_info_10df_1ae5 = {
0x1ae5, pci_device_10df_1ae5,
@@ -83395,6 +88625,15 @@ static const pciDeviceInfo pci_dev_info_10e3_0000 = {
#endif
0
};
+static const pciDeviceInfo pci_dev_info_10e3_0108 = {
+ 0x0108, pci_device_10e3_0108,
+#ifdef INIT_SUBSYS_INFO
+ pci_ss_list_10e3_0108,
+#else
+ NULL,
+#endif
+ 0
+};
static const pciDeviceInfo pci_dev_info_10e3_0148 = {
0x0148, pci_device_10e3_0148,
#ifdef INIT_SUBSYS_INFO
@@ -83440,6 +88679,15 @@ static const pciDeviceInfo pci_dev_info_10e3_8261 = {
#endif
0
};
+static const pciDeviceInfo pci_dev_info_10e3_a108 = {
+ 0xa108, pci_device_10e3_a108,
+#ifdef INIT_SUBSYS_INFO
+ pci_ss_list_10e3_a108,
+#else
+ NULL,
+#endif
+ 0
+};
#endif
#ifdef VENDOR_INCLUDE_NONVIDEO
static const pciDeviceInfo pci_dev_info_10e4_8029 = {
@@ -83799,6 +89047,15 @@ static const pciDeviceInfo pci_dev_info_10ec_0139 = {
#endif
0
};
+static const pciDeviceInfo pci_dev_info_10ec_0883 = {
+ 0x0883, pci_device_10ec_0883,
+#ifdef INIT_SUBSYS_INFO
+ pci_ss_list_10ec_0883,
+#else
+ NULL,
+#endif
+ 0
+};
static const pciDeviceInfo pci_dev_info_10ec_8029 = {
0x8029, pci_device_10ec_8029,
#ifdef INIT_SUBSYS_INFO
@@ -83817,6 +89074,15 @@ static const pciDeviceInfo pci_dev_info_10ec_8129 = {
#endif
0
};
+static const pciDeviceInfo pci_dev_info_10ec_8136 = {
+ 0x8136, pci_device_10ec_8136,
+#ifdef INIT_SUBSYS_INFO
+ pci_ss_list_10ec_8136,
+#else
+ NULL,
+#endif
+ 0
+};
static const pciDeviceInfo pci_dev_info_10ec_8138 = {
0x8138, pci_device_10ec_8138,
#ifdef INIT_SUBSYS_INFO
@@ -83835,6 +89101,24 @@ static const pciDeviceInfo pci_dev_info_10ec_8139 = {
#endif
0
};
+static const pciDeviceInfo pci_dev_info_10ec_8167 = {
+ 0x8167, pci_device_10ec_8167,
+#ifdef INIT_SUBSYS_INFO
+ pci_ss_list_10ec_8167,
+#else
+ NULL,
+#endif
+ 0
+};
+static const pciDeviceInfo pci_dev_info_10ec_8168 = {
+ 0x8168, pci_device_10ec_8168,
+#ifdef INIT_SUBSYS_INFO
+ pci_ss_list_10ec_8168,
+#else
+ NULL,
+#endif
+ 0
+};
static const pciDeviceInfo pci_dev_info_10ec_8169 = {
0x8169, pci_device_10ec_8169,
#ifdef INIT_SUBSYS_INFO
@@ -84096,6 +89380,15 @@ static const pciDeviceInfo pci_dev_info_1101_1060 = {
#endif
0
};
+static const pciDeviceInfo pci_dev_info_1101_1622 = {
+ 0x1622, pci_device_1101_1622,
+#ifdef INIT_SUBSYS_INFO
+ pci_ss_list_1101_1622,
+#else
+ NULL,
+#endif
+ 0
+};
static const pciDeviceInfo pci_dev_info_1101_9100 = {
0x9100, pci_device_1101_9100,
#ifdef INIT_SUBSYS_INFO
@@ -84161,6 +89454,15 @@ static const pciDeviceInfo pci_dev_info_1102_0004 = {
#endif
0
};
+static const pciDeviceInfo pci_dev_info_1102_0005 = {
+ 0x0005, pci_device_1102_0005,
+#ifdef INIT_SUBSYS_INFO
+ pci_ss_list_1102_0005,
+#else
+ NULL,
+#endif
+ 0
+};
static const pciDeviceInfo pci_dev_info_1102_0006 = {
0x0006, pci_device_1102_0006,
#ifdef INIT_SUBSYS_INFO
@@ -89731,6 +95033,15 @@ static const pciDeviceInfo pci_dev_info_1166_0101 = {
#endif
0
};
+static const pciDeviceInfo pci_dev_info_1166_0103 = {
+ 0x0103, pci_device_1166_0103,
+#ifdef INIT_SUBSYS_INFO
+ pci_ss_list_1166_0103,
+#else
+ NULL,
+#endif
+ 0
+};
static const pciDeviceInfo pci_dev_info_1166_0104 = {
0x0104, pci_device_1166_0104,
#ifdef INIT_SUBSYS_INFO
@@ -89767,6 +95078,33 @@ static const pciDeviceInfo pci_dev_info_1166_0132 = {
#endif
0
};
+static const pciDeviceInfo pci_dev_info_1166_0140 = {
+ 0x0140, pci_device_1166_0140,
+#ifdef INIT_SUBSYS_INFO
+ pci_ss_list_1166_0140,
+#else
+ NULL,
+#endif
+ 0
+};
+static const pciDeviceInfo pci_dev_info_1166_0141 = {
+ 0x0141, pci_device_1166_0141,
+#ifdef INIT_SUBSYS_INFO
+ pci_ss_list_1166_0141,
+#else
+ NULL,
+#endif
+ 0
+};
+static const pciDeviceInfo pci_dev_info_1166_0142 = {
+ 0x0142, pci_device_1166_0142,
+#ifdef INIT_SUBSYS_INFO
+ pci_ss_list_1166_0142,
+#else
+ NULL,
+#endif
+ 0
+};
static const pciDeviceInfo pci_dev_info_1166_0200 = {
0x0200, pci_device_1166_0200,
#ifdef INIT_SUBSYS_INFO
@@ -90382,6 +95720,15 @@ static const pciDeviceInfo pci_dev_info_1186_1340 = {
#endif
0
};
+static const pciDeviceInfo pci_dev_info_1186_1405 = {
+ 0x1405, pci_device_1186_1405,
+#ifdef INIT_SUBSYS_INFO
+ pci_ss_list_1186_1405,
+#else
+ NULL,
+#endif
+ 0
+};
static const pciDeviceInfo pci_dev_info_1186_1541 = {
0x1541, pci_device_1186_1541,
#ifdef INIT_SUBSYS_INFO
@@ -90544,6 +95891,15 @@ static const pciDeviceInfo pci_dev_info_1186_4300 = {
#endif
0
};
+static const pciDeviceInfo pci_dev_info_1186_4800 = {
+ 0x4800, pci_device_1186_4800,
+#ifdef INIT_SUBSYS_INFO
+ pci_ss_list_1186_4800,
+#else
+ NULL,
+#endif
+ 0
+};
static const pciDeviceInfo pci_dev_info_1186_4b01 = {
0x4b01, pci_device_1186_4b01,
#ifdef INIT_SUBSYS_INFO
@@ -91284,6 +96640,15 @@ static const pciDeviceInfo pci_dev_info_11ab_6480 = {
#endif
0
};
+static const pciDeviceInfo pci_dev_info_11ab_6485 = {
+ 0x6485, pci_device_11ab_6485,
+#ifdef INIT_SUBSYS_INFO
+ pci_ss_list_11ab_6485,
+#else
+ NULL,
+#endif
+ 0
+};
static const pciDeviceInfo pci_dev_info_11ab_f003 = {
0xf003, pci_device_11ab_f003,
#ifdef INIT_SUBSYS_INFO
@@ -91822,6 +97187,15 @@ static const pciDeviceInfo pci_dev_info_11c1_ed00 = {
#endif
0
};
+static const pciDeviceInfo pci_dev_info_11c1_ed01 = {
+ 0xed01, pci_device_11c1_ed01,
+#ifdef INIT_SUBSYS_INFO
+ pci_ss_list_11c1_ed01,
+#else
+ NULL,
+#endif
+ 0
+};
#endif
#ifdef VENDOR_INCLUDE_NONVIDEO
static const pciDeviceInfo pci_dev_info_11c8_0658 = {
@@ -92562,6 +97936,15 @@ static const pciDeviceInfo pci_dev_info_120f_0001 = {
};
#endif
#ifdef VENDOR_INCLUDE_NONVIDEO
+static const pciDeviceInfo pci_dev_info_1217_00f7 = {
+ 0x00f7, pci_device_1217_00f7,
+#ifdef INIT_SUBSYS_INFO
+ pci_ss_list_1217_00f7,
+#else
+ NULL,
+#endif
+ 0
+};
static const pciDeviceInfo pci_dev_info_1217_6729 = {
0x6729, pci_device_1217_6729,
#ifdef INIT_SUBSYS_INFO
@@ -92670,6 +98053,24 @@ static const pciDeviceInfo pci_dev_info_1217_7114 = {
#endif
0
};
+static const pciDeviceInfo pci_dev_info_1217_7120 = {
+ 0x7120, pci_device_1217_7120,
+#ifdef INIT_SUBSYS_INFO
+ pci_ss_list_1217_7120,
+#else
+ NULL,
+#endif
+ 0
+};
+static const pciDeviceInfo pci_dev_info_1217_7130 = {
+ 0x7130, pci_device_1217_7130,
+#ifdef INIT_SUBSYS_INFO
+ pci_ss_list_1217_7130,
+#else
+ NULL,
+#endif
+ 0
+};
static const pciDeviceInfo pci_dev_info_1217_7134 = {
0x7134, pci_device_1217_7134,
#ifdef INIT_SUBSYS_INFO
@@ -92679,6 +98080,15 @@ static const pciDeviceInfo pci_dev_info_1217_7134 = {
#endif
0
};
+static const pciDeviceInfo pci_dev_info_1217_7135 = {
+ 0x7135, pci_device_1217_7135,
+#ifdef INIT_SUBSYS_INFO
+ pci_ss_list_1217_7135,
+#else
+ NULL,
+#endif
+ 0
+};
static const pciDeviceInfo pci_dev_info_1217_71e2 = {
0x71e2, pci_device_1217_71e2,
#ifdef INIT_SUBSYS_INFO
@@ -93305,6 +98715,15 @@ static const pciDeviceInfo pci_dev_info_1259_a117 = {
#endif
0
};
+static const pciDeviceInfo pci_dev_info_1259_a11e = {
+ 0xa11e, pci_device_1259_a11e,
+#ifdef INIT_SUBSYS_INFO
+ pci_ss_list_1259_a11e,
+#else
+ NULL,
+#endif
+ 0
+};
static const pciDeviceInfo pci_dev_info_1259_a120 = {
0xa120, pci_device_1259_a120,
#ifdef INIT_SUBSYS_INFO
@@ -96411,6 +101830,53 @@ static const pciDeviceInfo pci_dev_info_1360_0302 = {
#endif
0
};
+static const pciDeviceInfo pci_dev_info_1360_0303 = {
+ 0x0303, pci_device_1360_0303,
+#ifdef INIT_SUBSYS_INFO
+ pci_ss_list_1360_0303,
+#else
+ NULL,
+#endif
+ 0
+};
+#endif
+#ifdef VENDOR_INCLUDE_NONVIDEO
+static const pciDeviceInfo pci_dev_info_136a_0004 = {
+ 0x0004, pci_device_136a_0004,
+#ifdef INIT_SUBSYS_INFO
+ pci_ss_list_136a_0004,
+#else
+ NULL,
+#endif
+ 0
+};
+static const pciDeviceInfo pci_dev_info_136a_0007 = {
+ 0x0007, pci_device_136a_0007,
+#ifdef INIT_SUBSYS_INFO
+ pci_ss_list_136a_0007,
+#else
+ NULL,
+#endif
+ 0
+};
+static const pciDeviceInfo pci_dev_info_136a_0008 = {
+ 0x0008, pci_device_136a_0008,
+#ifdef INIT_SUBSYS_INFO
+ pci_ss_list_136a_0008,
+#else
+ NULL,
+#endif
+ 0
+};
+static const pciDeviceInfo pci_dev_info_136a_000a = {
+ 0x000a, pci_device_136a_000a,
+#ifdef INIT_SUBSYS_INFO
+ pci_ss_list_136a_000a,
+#else
+ NULL,
+#endif
+ 0
+};
#endif
#ifdef VENDOR_INCLUDE_NONVIDEO
static const pciDeviceInfo pci_dev_info_136b_ff01 = {
@@ -96945,6 +102411,42 @@ static const pciDeviceInfo pci_dev_info_1385_6d00 = {
#endif
0
};
+static const pciDeviceInfo pci_dev_info_1385_7b00 = {
+ 0x7b00, pci_device_1385_7b00,
+#ifdef INIT_SUBSYS_INFO
+ pci_ss_list_1385_7b00,
+#else
+ NULL,
+#endif
+ 0
+};
+static const pciDeviceInfo pci_dev_info_1385_7c00 = {
+ 0x7c00, pci_device_1385_7c00,
+#ifdef INIT_SUBSYS_INFO
+ pci_ss_list_1385_7c00,
+#else
+ NULL,
+#endif
+ 0
+};
+static const pciDeviceInfo pci_dev_info_1385_7d00 = {
+ 0x7d00, pci_device_1385_7d00,
+#ifdef INIT_SUBSYS_INFO
+ pci_ss_list_1385_7d00,
+#else
+ NULL,
+#endif
+ 0
+};
+static const pciDeviceInfo pci_dev_info_1385_7e00 = {
+ 0x7e00, pci_device_1385_7e00,
+#ifdef INIT_SUBSYS_INFO
+ pci_ss_list_1385_7e00,
+#else
+ NULL,
+#endif
+ 0
+};
static const pciDeviceInfo pci_dev_info_1385_f004 = {
0xf004, pci_device_1385_f004,
#ifdef INIT_SUBSYS_INFO
@@ -97523,6 +103025,15 @@ static const pciDeviceInfo pci_dev_info_13fe_1600 = {
#endif
0
};
+static const pciDeviceInfo pci_dev_info_13fe_16ff = {
+ 0x16ff, pci_device_13fe_16ff,
+#ifdef INIT_SUBSYS_INFO
+ pci_ss_list_13fe_16ff,
+#else
+ NULL,
+#endif
+ 0
+};
static const pciDeviceInfo pci_dev_info_13fe_1733 = {
0x1733, pci_device_13fe_1733,
#ifdef INIT_SUBSYS_INFO
@@ -97803,6 +103314,15 @@ static const pciDeviceInfo pci_dev_info_1415_8403 = {
#endif
0
};
+static const pciDeviceInfo pci_dev_info_1415_9500 = {
+ 0x9500, pci_device_1415_9500,
+#ifdef INIT_SUBSYS_INFO
+ pci_ss_list_1415_9500,
+#else
+ NULL,
+#endif
+ 0
+};
static const pciDeviceInfo pci_dev_info_1415_9501 = {
0x9501, pci_device_1415_9501,
#ifdef INIT_SUBSYS_INFO
@@ -97848,6 +103368,24 @@ static const pciDeviceInfo pci_dev_info_1415_9511 = {
#endif
0
};
+static const pciDeviceInfo pci_dev_info_1415_9512 = {
+ 0x9512, pci_device_1415_9512,
+#ifdef INIT_SUBSYS_INFO
+ pci_ss_list_1415_9512,
+#else
+ NULL,
+#endif
+ 0
+};
+static const pciDeviceInfo pci_dev_info_1415_9513 = {
+ 0x9513, pci_device_1415_9513,
+#ifdef INIT_SUBSYS_INFO
+ pci_ss_list_1415_9513,
+#else
+ NULL,
+#endif
+ 0
+};
static const pciDeviceInfo pci_dev_info_1415_9521 = {
0x9521, pci_device_1415_9521,
#ifdef INIT_SUBSYS_INFO
@@ -97930,6 +103468,71 @@ static const pciDeviceInfo pci_dev_info_1432_9130 = {
};
#endif
#ifdef VENDOR_INCLUDE_NONVIDEO
+static const pciDeviceInfo pci_dev_info_1435_4520 = {
+ 0x4520, pci_device_1435_4520,
+#ifdef INIT_SUBSYS_INFO
+ pci_ss_list_1435_4520,
+#else
+ NULL,
+#endif
+ 0
+};
+static const pciDeviceInfo pci_dev_info_1435_6020 = {
+ 0x6020, pci_device_1435_6020,
+#ifdef INIT_SUBSYS_INFO
+ pci_ss_list_1435_6020,
+#else
+ NULL,
+#endif
+ 0
+};
+static const pciDeviceInfo pci_dev_info_1435_6030 = {
+ 0x6030, pci_device_1435_6030,
+#ifdef INIT_SUBSYS_INFO
+ pci_ss_list_1435_6030,
+#else
+ NULL,
+#endif
+ 0
+};
+static const pciDeviceInfo pci_dev_info_1435_6420 = {
+ 0x6420, pci_device_1435_6420,
+#ifdef INIT_SUBSYS_INFO
+ pci_ss_list_1435_6420,
+#else
+ NULL,
+#endif
+ 0
+};
+static const pciDeviceInfo pci_dev_info_1435_6430 = {
+ 0x6430, pci_device_1435_6430,
+#ifdef INIT_SUBSYS_INFO
+ pci_ss_list_1435_6430,
+#else
+ NULL,
+#endif
+ 0
+};
+static const pciDeviceInfo pci_dev_info_1435_7520 = {
+ 0x7520, pci_device_1435_7520,
+#ifdef INIT_SUBSYS_INFO
+ pci_ss_list_1435_7520,
+#else
+ NULL,
+#endif
+ 0
+};
+static const pciDeviceInfo pci_dev_info_1435_7820 = {
+ 0x7820, pci_device_1435_7820,
+#ifdef INIT_SUBSYS_INFO
+ pci_ss_list_1435_7820,
+#else
+ NULL,
+#endif
+ 0
+};
+#endif
+#ifdef VENDOR_INCLUDE_NONVIDEO
static const pciDeviceInfo pci_dev_info_144a_7296 = {
0x7296, pci_device_144a_7296,
#ifdef INIT_SUBSYS_INFO
@@ -98254,6 +103857,15 @@ static const pciDeviceInfo pci_dev_info_1498_0385 = {
#endif
0
};
+static const pciDeviceInfo pci_dev_info_1498_21cc = {
+ 0x21cc, pci_device_1498_21cc,
+#ifdef INIT_SUBSYS_INFO
+ pci_ss_list_1498_21cc,
+#else
+ NULL,
+#endif
+ 0
+};
static const pciDeviceInfo pci_dev_info_1498_21cd = {
0x21cd, pci_device_1498_21cd,
#ifdef INIT_SUBSYS_INFO
@@ -98466,6 +104078,26 @@ static const pciDeviceInfo pci_dev_info_14b9_a506 = {
};
#endif
#ifdef VENDOR_INCLUDE_NONVIDEO
+static const pciDeviceInfo pci_dev_info_14bc_d002 = {
+ 0xd002, pci_device_14bc_d002,
+#ifdef INIT_SUBSYS_INFO
+ pci_ss_list_14bc_d002,
+#else
+ NULL,
+#endif
+ 0
+};
+static const pciDeviceInfo pci_dev_info_14bc_d00f = {
+ 0xd00f, pci_device_14bc_d00f,
+#ifdef INIT_SUBSYS_INFO
+ pci_ss_list_14bc_d00f,
+#else
+ NULL,
+#endif
+ 0
+};
+#endif
+#ifdef VENDOR_INCLUDE_NONVIDEO
static const pciDeviceInfo pci_dev_info_14c1_0008 = {
0x0008, pci_device_14c1_0008,
#ifdef INIT_SUBSYS_INFO
@@ -99133,6 +104765,15 @@ static const pciDeviceInfo pci_dev_info_14e4_1696 = {
#endif
0
};
+static const pciDeviceInfo pci_dev_info_14e4_169a = {
+ 0x169a, pci_device_14e4_169a,
+#ifdef INIT_SUBSYS_INFO
+ pci_ss_list_14e4_169a,
+#else
+ NULL,
+#endif
+ 0
+};
static const pciDeviceInfo pci_dev_info_14e4_169b = {
0x169b, pci_device_14e4_169b,
#ifdef INIT_SUBSYS_INFO
@@ -99376,6 +105017,15 @@ static const pciDeviceInfo pci_dev_info_14e4_4310 = {
#endif
0
};
+static const pciDeviceInfo pci_dev_info_14e4_4311 = {
+ 0x4311, pci_device_14e4_4311,
+#ifdef INIT_SUBSYS_INFO
+ pci_ss_list_14e4_4311,
+#else
+ NULL,
+#endif
+ 0
+};
static const pciDeviceInfo pci_dev_info_14e4_4312 = {
0x4312, pci_device_14e4_4312,
#ifdef INIT_SUBSYS_INFO
@@ -99475,6 +105125,15 @@ static const pciDeviceInfo pci_dev_info_14e4_4326 = {
#endif
0
};
+static const pciDeviceInfo pci_dev_info_14e4_4329 = {
+ 0x4329, pci_device_14e4_4329,
+#ifdef INIT_SUBSYS_INFO
+ pci_ss_list_14e4_4329,
+#else
+ NULL,
+#endif
+ 0
+};
static const pciDeviceInfo pci_dev_info_14e4_4401 = {
0x4401, pci_device_14e4_4401,
#ifdef INIT_SUBSYS_INFO
@@ -101295,6 +106954,17 @@ static const pciDeviceInfo pci_dev_info_153f_0001 = {
};
#endif
#ifdef VENDOR_INCLUDE_NONVIDEO
+static const pciDeviceInfo pci_dev_info_1542_9260 = {
+ 0x9260, pci_device_1542_9260,
+#ifdef INIT_SUBSYS_INFO
+ pci_ss_list_1542_9260,
+#else
+ NULL,
+#endif
+ 0
+};
+#endif
+#ifdef VENDOR_INCLUDE_NONVIDEO
static const pciDeviceInfo pci_dev_info_1543_3052 = {
0x3052, pci_device_1543_3052,
#ifdef INIT_SUBSYS_INFO
@@ -102045,6 +107715,15 @@ static const pciDeviceInfo pci_dev_info_1677_12d7 = {
#endif
0
};
+static const pciDeviceInfo pci_dev_info_1677_20ad = {
+ 0x20ad, pci_device_1677_20ad,
+#ifdef INIT_SUBSYS_INFO
+ pci_ss_list_1677_20ad,
+#else
+ NULL,
+#endif
+ 0
+};
#endif
#ifdef VENDOR_INCLUDE_NONVIDEO
static const pciDeviceInfo pci_dev_info_167b_2102 = {
@@ -102269,6 +107948,17 @@ static const pciDeviceInfo pci_dev_info_16e3_1e0f = {
};
#endif
#ifdef VENDOR_INCLUDE_NONVIDEO
+static const pciDeviceInfo pci_dev_info_16e5_6000 = {
+ 0x6000, pci_device_16e5_6000,
+#ifdef INIT_SUBSYS_INFO
+ pci_ss_list_16e5_6000,
+#else
+ NULL,
+#endif
+ 0
+};
+#endif
+#ifdef VENDOR_INCLUDE_NONVIDEO
static const pciDeviceInfo pci_dev_info_16ec_00ff = {
0x00ff, pci_device_16ec_00ff,
#ifdef INIT_SUBSYS_INFO
@@ -102287,6 +107977,15 @@ static const pciDeviceInfo pci_dev_info_16ec_0116 = {
#endif
0
};
+static const pciDeviceInfo pci_dev_info_16ec_2f00 = {
+ 0x2f00, pci_device_16ec_2f00,
+#ifdef INIT_SUBSYS_INFO
+ pci_ss_list_16ec_2f00,
+#else
+ NULL,
+#endif
+ 0
+};
static const pciDeviceInfo pci_dev_info_16ec_3685 = {
0x3685, pci_device_16ec_3685,
#ifdef INIT_SUBSYS_INFO
@@ -102804,6 +108503,55 @@ static const pciDeviceInfo pci_dev_info_17d5_5832 = {
};
#endif
#ifdef VENDOR_INCLUDE_NONVIDEO
+static const pciDeviceInfo pci_dev_info_17e4_0001 = {
+ 0x0001, pci_device_17e4_0001,
+#ifdef INIT_SUBSYS_INFO
+ pci_ss_list_17e4_0001,
+#else
+ NULL,
+#endif
+ 0
+};
+static const pciDeviceInfo pci_dev_info_17e4_0002 = {
+ 0x0002, pci_device_17e4_0002,
+#ifdef INIT_SUBSYS_INFO
+ pci_ss_list_17e4_0002,
+#else
+ NULL,
+#endif
+ 0
+};
+#endif
+#ifdef VENDOR_INCLUDE_NONVIDEO
+static const pciDeviceInfo pci_dev_info_17e6_0010 = {
+ 0x0010, pci_device_17e6_0010,
+#ifdef INIT_SUBSYS_INFO
+ pci_ss_list_17e6_0010,
+#else
+ NULL,
+#endif
+ 0
+};
+static const pciDeviceInfo pci_dev_info_17e6_0011 = {
+ 0x0011, pci_device_17e6_0011,
+#ifdef INIT_SUBSYS_INFO
+ pci_ss_list_17e6_0011,
+#else
+ NULL,
+#endif
+ 0
+};
+static const pciDeviceInfo pci_dev_info_17e6_0021 = {
+ 0x0021, pci_device_17e6_0021,
+#ifdef INIT_SUBSYS_INFO
+ pci_ss_list_17e6_0021,
+#else
+ NULL,
+#endif
+ 0
+};
+#endif
+#ifdef VENDOR_INCLUDE_NONVIDEO
static const pciDeviceInfo pci_dev_info_17fe_2120 = {
0x2120, pci_device_17fe_2120,
#ifdef INIT_SUBSYS_INFO
@@ -102969,6 +108717,15 @@ static const pciDeviceInfo pci_dev_info_183b_08a9 = {
#endif
0
};
+static const pciDeviceInfo pci_dev_info_183b_08b0 = {
+ 0x08b0, pci_device_183b_08b0,
+#ifdef INIT_SUBSYS_INFO
+ pci_ss_list_183b_08b0,
+#else
+ NULL,
+#endif
+ 0
+};
#endif
#ifdef VENDOR_INCLUDE_NONVIDEO
static const pciDeviceInfo pci_dev_info_1864_2110 = {
@@ -103096,6 +108853,15 @@ static const pciDeviceInfo pci_dev_info_18ac_d500 = {
#endif
0
};
+static const pciDeviceInfo pci_dev_info_18ac_d800 = {
+ 0xd800, pci_device_18ac_d800,
+#ifdef INIT_SUBSYS_INFO
+ pci_ss_list_18ac_d800,
+#else
+ NULL,
+#endif
+ 0
+};
static const pciDeviceInfo pci_dev_info_18ac_d810 = {
0xd810, pci_device_18ac_d810,
#ifdef INIT_SUBSYS_INFO
@@ -103218,6 +108984,35 @@ static const pciDeviceInfo pci_dev_info_18ec_c058 = {
};
#endif
#ifdef VENDOR_INCLUDE_NONVIDEO
+static const pciDeviceInfo pci_dev_info_18f6_1000 = {
+ 0x1000, pci_device_18f6_1000,
+#ifdef INIT_SUBSYS_INFO
+ pci_ss_list_18f6_1000,
+#else
+ NULL,
+#endif
+ 0
+};
+static const pciDeviceInfo pci_dev_info_18f6_1050 = {
+ 0x1050, pci_device_18f6_1050,
+#ifdef INIT_SUBSYS_INFO
+ pci_ss_list_18f6_1050,
+#else
+ NULL,
+#endif
+ 0
+};
+static const pciDeviceInfo pci_dev_info_18f6_2000 = {
+ 0x2000, pci_device_18f6_2000,
+#ifdef INIT_SUBSYS_INFO
+ pci_ss_list_18f6_2000,
+#else
+ NULL,
+#endif
+ 0
+};
+#endif
+#ifdef VENDOR_INCLUDE_NONVIDEO
static const pciDeviceInfo pci_dev_info_18f7_0001 = {
0x0001, pci_device_18f7_0001,
#ifdef INIT_SUBSYS_INFO
@@ -103294,6 +109089,15 @@ static const pciDeviceInfo pci_dev_info_1923_0100 = {
#endif
0
};
+static const pciDeviceInfo pci_dev_info_1923_0300 = {
+ 0x0300, pci_device_1923_0300,
+#ifdef INIT_SUBSYS_INFO
+ pci_ss_list_1923_0300,
+#else
+ NULL,
+#endif
+ 0
+};
static const pciDeviceInfo pci_dev_info_1923_0400 = {
0x0400, pci_device_1923_0400,
#ifdef INIT_SUBSYS_INFO
@@ -103327,6 +109131,62 @@ static const pciDeviceInfo pci_dev_info_1942_e511 = {
};
#endif
#ifdef VENDOR_INCLUDE_NONVIDEO
+static const pciDeviceInfo pci_dev_info_194a_1111 = {
+ 0x1111, pci_device_194a_1111,
+#ifdef INIT_SUBSYS_INFO
+ pci_ss_list_194a_1111,
+#else
+ NULL,
+#endif
+ 0
+};
+static const pciDeviceInfo pci_dev_info_194a_1112 = {
+ 0x1112, pci_device_194a_1112,
+#ifdef INIT_SUBSYS_INFO
+ pci_ss_list_194a_1112,
+#else
+ NULL,
+#endif
+ 0
+};
+static const pciDeviceInfo pci_dev_info_194a_1113 = {
+ 0x1113, pci_device_194a_1113,
+#ifdef INIT_SUBSYS_INFO
+ pci_ss_list_194a_1113,
+#else
+ NULL,
+#endif
+ 0
+};
+static const pciDeviceInfo pci_dev_info_194a_1114 = {
+ 0x1114, pci_device_194a_1114,
+#ifdef INIT_SUBSYS_INFO
+ pci_ss_list_194a_1114,
+#else
+ NULL,
+#endif
+ 0
+};
+static const pciDeviceInfo pci_dev_info_194a_1115 = {
+ 0x1115, pci_device_194a_1115,
+#ifdef INIT_SUBSYS_INFO
+ pci_ss_list_194a_1115,
+#else
+ NULL,
+#endif
+ 0
+};
+#endif
+#ifdef VENDOR_INCLUDE_NONVIDEO
+static const pciDeviceInfo pci_dev_info_1957_0012 = {
+ 0x0012, pci_device_1957_0012,
+#ifdef INIT_SUBSYS_INFO
+ pci_ss_list_1957_0012,
+#else
+ NULL,
+#endif
+ 0
+};
static const pciDeviceInfo pci_dev_info_1957_0080 = {
0x0080, pci_device_1957_0080,
#ifdef INIT_SUBSYS_INFO
@@ -103412,6 +109272,17 @@ static const pciDeviceInfo pci_dev_info_1966_1975 = {
};
#endif
#ifdef VENDOR_INCLUDE_NONVIDEO
+static const pciDeviceInfo pci_dev_info_1969_1048 = {
+ 0x1048, pci_device_1969_1048,
+#ifdef INIT_SUBSYS_INFO
+ pci_ss_list_1969_1048,
+#else
+ NULL,
+#endif
+ 0
+};
+#endif
+#ifdef VENDOR_INCLUDE_NONVIDEO
static const pciDeviceInfo pci_dev_info_196a_0101 = {
0x0101, pci_device_196a_0101,
#ifdef INIT_SUBSYS_INFO
@@ -103521,6 +109392,52 @@ static const pciDeviceInfo pci_dev_info_19ae_0520 = {
};
#endif
#ifdef VENDOR_INCLUDE_NONVIDEO
+static const pciDeviceInfo pci_dev_info_19e7_1001 = {
+ 0x1001, pci_device_19e7_1001,
+#ifdef INIT_SUBSYS_INFO
+ pci_ss_list_19e7_1001,
+#else
+ NULL,
+#endif
+ 0
+};
+static const pciDeviceInfo pci_dev_info_19e7_1002 = {
+ 0x1002, pci_device_19e7_1002,
+#ifdef INIT_SUBSYS_INFO
+ pci_ss_list_19e7_1002,
+#else
+ NULL,
+#endif
+ 0
+};
+static const pciDeviceInfo pci_dev_info_19e7_1003 = {
+ 0x1003, pci_device_19e7_1003,
+#ifdef INIT_SUBSYS_INFO
+ pci_ss_list_19e7_1003,
+#else
+ NULL,
+#endif
+ 0
+};
+static const pciDeviceInfo pci_dev_info_19e7_1004 = {
+ 0x1004, pci_device_19e7_1004,
+#ifdef INIT_SUBSYS_INFO
+ pci_ss_list_19e7_1004,
+#else
+ NULL,
+#endif
+ 0
+};
+static const pciDeviceInfo pci_dev_info_19e7_1005 = {
+ 0x1005, pci_device_19e7_1005,
+#ifdef INIT_SUBSYS_INFO
+ pci_ss_list_19e7_1005,
+#else
+ NULL,
+#endif
+ 0
+};
+#endif
static const pciDeviceInfo pci_dev_info_1a03_2000 = {
0x2000, pci_device_1a03_2000,
#ifdef INIT_SUBSYS_INFO
@@ -103530,7 +109447,6 @@ static const pciDeviceInfo pci_dev_info_1a03_2000 = {
#endif
0
};
-#endif
#ifdef VENDOR_INCLUDE_NONVIDEO
static const pciDeviceInfo pci_dev_info_1a08_0000 = {
0x0000, pci_device_1a08_0000,
@@ -105306,6 +111222,15 @@ static const pciDeviceInfo pci_dev_info_7063_3000 = {
#endif
0
};
+static const pciDeviceInfo pci_dev_info_7063_5500 = {
+ 0x5500, pci_device_7063_5500,
+#ifdef INIT_SUBSYS_INFO
+ pci_ss_list_7063_5500,
+#else
+ NULL,
+#endif
+ 0
+};
#endif
#ifdef VENDOR_INCLUDE_NONVIDEO
static const pciDeviceInfo pci_dev_info_8008_0010 = {
@@ -106236,6 +112161,24 @@ static const pciDeviceInfo pci_dev_info_8086_1048 = {
#endif
0
};
+static const pciDeviceInfo pci_dev_info_8086_1049 = {
+ 0x1049, pci_device_8086_1049,
+#ifdef INIT_SUBSYS_INFO
+ pci_ss_list_8086_1049,
+#else
+ NULL,
+#endif
+ 0
+};
+static const pciDeviceInfo pci_dev_info_8086_104a = {
+ 0x104a, pci_device_8086_104a,
+#ifdef INIT_SUBSYS_INFO
+ pci_ss_list_8086_104a,
+#else
+ NULL,
+#endif
+ 0
+};
static const pciDeviceInfo pci_dev_info_8086_104b = {
0x104b, pci_device_8086_104b,
#ifdef INIT_SUBSYS_INFO
@@ -106245,6 +112188,24 @@ static const pciDeviceInfo pci_dev_info_8086_104b = {
#endif
0
};
+static const pciDeviceInfo pci_dev_info_8086_104c = {
+ 0x104c, pci_device_8086_104c,
+#ifdef INIT_SUBSYS_INFO
+ pci_ss_list_8086_104c,
+#else
+ NULL,
+#endif
+ 0
+};
+static const pciDeviceInfo pci_dev_info_8086_104d = {
+ 0x104d, pci_device_8086_104d,
+#ifdef INIT_SUBSYS_INFO
+ pci_ss_list_8086_104d,
+#else
+ NULL,
+#endif
+ 0
+};
static const pciDeviceInfo pci_dev_info_8086_1050 = {
0x1050, pci_device_8086_1050,
#ifdef INIT_SUBSYS_INFO
@@ -106281,6 +112242,42 @@ static const pciDeviceInfo pci_dev_info_8086_1053 = {
#endif
0
};
+static const pciDeviceInfo pci_dev_info_8086_1054 = {
+ 0x1054, pci_device_8086_1054,
+#ifdef INIT_SUBSYS_INFO
+ pci_ss_list_8086_1054,
+#else
+ NULL,
+#endif
+ 0
+};
+static const pciDeviceInfo pci_dev_info_8086_1055 = {
+ 0x1055, pci_device_8086_1055,
+#ifdef INIT_SUBSYS_INFO
+ pci_ss_list_8086_1055,
+#else
+ NULL,
+#endif
+ 0
+};
+static const pciDeviceInfo pci_dev_info_8086_1056 = {
+ 0x1056, pci_device_8086_1056,
+#ifdef INIT_SUBSYS_INFO
+ pci_ss_list_8086_1056,
+#else
+ NULL,
+#endif
+ 0
+};
+static const pciDeviceInfo pci_dev_info_8086_1057 = {
+ 0x1057, pci_device_8086_1057,
+#ifdef INIT_SUBSYS_INFO
+ pci_ss_list_8086_1057,
+#else
+ NULL,
+#endif
+ 0
+};
static const pciDeviceInfo pci_dev_info_8086_1059 = {
0x1059, pci_device_8086_1059,
#ifdef INIT_SUBSYS_INFO
@@ -106290,6 +112287,15 @@ static const pciDeviceInfo pci_dev_info_8086_1059 = {
#endif
0
};
+static const pciDeviceInfo pci_dev_info_8086_105b = {
+ 0x105b, pci_device_8086_105b,
+#ifdef INIT_SUBSYS_INFO
+ pci_ss_list_8086_105b,
+#else
+ NULL,
+#endif
+ 0
+};
static const pciDeviceInfo pci_dev_info_8086_105e = {
0x105e, pci_device_8086_105e,
#ifdef INIT_SUBSYS_INFO
@@ -106614,6 +112620,15 @@ static const pciDeviceInfo pci_dev_info_8086_108f = {
#endif
0
};
+static const pciDeviceInfo pci_dev_info_8086_1091 = {
+ 0x1091, pci_device_8086_1091,
+#ifdef INIT_SUBSYS_INFO
+ pci_ss_list_8086_1091,
+#else
+ NULL,
+#endif
+ 0
+};
static const pciDeviceInfo pci_dev_info_8086_1092 = {
0x1092, pci_device_8086_1092,
#ifdef INIT_SUBSYS_INFO
@@ -106623,6 +112638,33 @@ static const pciDeviceInfo pci_dev_info_8086_1092 = {
#endif
0
};
+static const pciDeviceInfo pci_dev_info_8086_1093 = {
+ 0x1093, pci_device_8086_1093,
+#ifdef INIT_SUBSYS_INFO
+ pci_ss_list_8086_1093,
+#else
+ NULL,
+#endif
+ 0
+};
+static const pciDeviceInfo pci_dev_info_8086_1094 = {
+ 0x1094, pci_device_8086_1094,
+#ifdef INIT_SUBSYS_INFO
+ pci_ss_list_8086_1094,
+#else
+ NULL,
+#endif
+ 0
+};
+static const pciDeviceInfo pci_dev_info_8086_1095 = {
+ 0x1095, pci_device_8086_1095,
+#ifdef INIT_SUBSYS_INFO
+ pci_ss_list_8086_1095,
+#else
+ NULL,
+#endif
+ 0
+};
static const pciDeviceInfo pci_dev_info_8086_1096 = {
0x1096, pci_device_8086_1096,
#ifdef INIT_SUBSYS_INFO
@@ -106677,6 +112719,15 @@ static const pciDeviceInfo pci_dev_info_8086_109b = {
#endif
0
};
+static const pciDeviceInfo pci_dev_info_8086_109e = {
+ 0x109e, pci_device_8086_109e,
+#ifdef INIT_SUBSYS_INFO
+ pci_ss_list_8086_109e,
+#else
+ NULL,
+#endif
+ 0
+};
static const pciDeviceInfo pci_dev_info_8086_10a0 = {
0x10a0, pci_device_8086_10a0,
#ifdef INIT_SUBSYS_INFO
@@ -106695,6 +112746,15 @@ static const pciDeviceInfo pci_dev_info_8086_10a1 = {
#endif
0
};
+static const pciDeviceInfo pci_dev_info_8086_10a4 = {
+ 0x10a4, pci_device_8086_10a4,
+#ifdef INIT_SUBSYS_INFO
+ pci_ss_list_8086_10a4,
+#else
+ NULL,
+#endif
+ 0
+};
static const pciDeviceInfo pci_dev_info_8086_10b0 = {
0x10b0, pci_device_8086_10b0,
#ifdef INIT_SUBSYS_INFO
@@ -106740,6 +112800,60 @@ static const pciDeviceInfo pci_dev_info_8086_10b5 = {
#endif
0
};
+static const pciDeviceInfo pci_dev_info_8086_10b9 = {
+ 0x10b9, pci_device_8086_10b9,
+#ifdef INIT_SUBSYS_INFO
+ pci_ss_list_8086_10b9,
+#else
+ NULL,
+#endif
+ 0
+};
+static const pciDeviceInfo pci_dev_info_8086_10ba = {
+ 0x10ba, pci_device_8086_10ba,
+#ifdef INIT_SUBSYS_INFO
+ pci_ss_list_8086_10ba,
+#else
+ NULL,
+#endif
+ 0
+};
+static const pciDeviceInfo pci_dev_info_8086_10bb = {
+ 0x10bb, pci_device_8086_10bb,
+#ifdef INIT_SUBSYS_INFO
+ pci_ss_list_8086_10bb,
+#else
+ NULL,
+#endif
+ 0
+};
+static const pciDeviceInfo pci_dev_info_8086_10bc = {
+ 0x10bc, pci_device_8086_10bc,
+#ifdef INIT_SUBSYS_INFO
+ pci_ss_list_8086_10bc,
+#else
+ NULL,
+#endif
+ 0
+};
+static const pciDeviceInfo pci_dev_info_8086_10c4 = {
+ 0x10c4, pci_device_8086_10c4,
+#ifdef INIT_SUBSYS_INFO
+ pci_ss_list_8086_10c4,
+#else
+ NULL,
+#endif
+ 0
+};
+static const pciDeviceInfo pci_dev_info_8086_10c5 = {
+ 0x10c5, pci_device_8086_10c5,
+#ifdef INIT_SUBSYS_INFO
+ pci_ss_list_8086_10c5,
+#else
+ NULL,
+#endif
+ 0
+};
static const pciDeviceInfo pci_dev_info_8086_1107 = {
0x1107, pci_device_8086_1107,
#ifdef INIT_SUBSYS_INFO
@@ -107154,6 +113268,15 @@ static const pciDeviceInfo pci_dev_info_8086_1a48 = {
#endif
0
};
+static const pciDeviceInfo pci_dev_info_8086_1b48 = {
+ 0x1b48, pci_device_8086_1b48,
+#ifdef INIT_SUBSYS_INFO
+ pci_ss_list_8086_1b48,
+#else
+ NULL,
+#endif
+ 0
+};
static const pciDeviceInfo pci_dev_info_8086_2410 = {
0x2410, pci_device_8086_2410,
#ifdef INIT_SUBSYS_INFO
@@ -108414,15 +114537,6 @@ static const pciDeviceInfo pci_dev_info_8086_25e7 = {
#endif
0
};
-static const pciDeviceInfo pci_dev_info_8086_25e8 = {
- 0x25e8, pci_device_8086_25e8,
-#ifdef INIT_SUBSYS_INFO
- pci_ss_list_8086_25e8,
-#else
- NULL,
-#endif
- 0
-};
static const pciDeviceInfo pci_dev_info_8086_25f0 = {
0x25f0, pci_device_8086_25f0,
#ifdef INIT_SUBSYS_INFO
@@ -109881,6 +115995,15 @@ static const pciDeviceInfo pci_dev_info_8086_2974 = {
#endif
0
};
+static const pciDeviceInfo pci_dev_info_8086_2975 = {
+ 0x2975, pci_device_8086_2975,
+#ifdef INIT_SUBSYS_INFO
+ pci_ss_list_8086_2975,
+#else
+ NULL,
+#endif
+ 0
+};
static const pciDeviceInfo pci_dev_info_8086_2976 = {
0x2976, pci_device_8086_2976,
#ifdef INIT_SUBSYS_INFO
@@ -109899,6 +116022,33 @@ static const pciDeviceInfo pci_dev_info_8086_2977 = {
#endif
0
};
+static const pciDeviceInfo pci_dev_info_8086_2980 = {
+ 0x2980, pci_device_8086_2980,
+#ifdef INIT_SUBSYS_INFO
+ pci_ss_list_8086_2980,
+#else
+ NULL,
+#endif
+ 0
+};
+static const pciDeviceInfo pci_dev_info_8086_2981 = {
+ 0x2981, pci_device_8086_2981,
+#ifdef INIT_SUBSYS_INFO
+ pci_ss_list_8086_2981,
+#else
+ NULL,
+#endif
+ 0
+};
+static const pciDeviceInfo pci_dev_info_8086_2982 = {
+ 0x2982, pci_device_8086_2982,
+#ifdef INIT_SUBSYS_INFO
+ pci_ss_list_8086_2982,
+#else
+ NULL,
+#endif
+ 0
+};
static const pciDeviceInfo pci_dev_info_8086_2990 = {
0x2990, pci_device_8086_2990,
#ifdef INIT_SUBSYS_INFO
@@ -110079,6 +116229,42 @@ static const pciDeviceInfo pci_dev_info_8086_2a03 = {
#endif
0
};
+static const pciDeviceInfo pci_dev_info_8086_2a04 = {
+ 0x2a04, pci_device_8086_2a04,
+#ifdef INIT_SUBSYS_INFO
+ pci_ss_list_8086_2a04,
+#else
+ NULL,
+#endif
+ 0
+};
+static const pciDeviceInfo pci_dev_info_8086_2a05 = {
+ 0x2a05, pci_device_8086_2a05,
+#ifdef INIT_SUBSYS_INFO
+ pci_ss_list_8086_2a05,
+#else
+ NULL,
+#endif
+ 0
+};
+static const pciDeviceInfo pci_dev_info_8086_2a06 = {
+ 0x2a06, pci_device_8086_2a06,
+#ifdef INIT_SUBSYS_INFO
+ pci_ss_list_8086_2a06,
+#else
+ NULL,
+#endif
+ 0
+};
+static const pciDeviceInfo pci_dev_info_8086_2a07 = {
+ 0x2a07, pci_device_8086_2a07,
+#ifdef INIT_SUBSYS_INFO
+ pci_ss_list_8086_2a07,
+#else
+ NULL,
+#endif
+ 0
+};
static const pciDeviceInfo pci_dev_info_8086_3092 = {
0x3092, pci_device_8086_3092,
#ifdef INIT_SUBSYS_INFO
@@ -110421,6 +116607,60 @@ static const pciDeviceInfo pci_dev_info_8086_359e = {
#endif
0
};
+static const pciDeviceInfo pci_dev_info_8086_35b0 = {
+ 0x35b0, pci_device_8086_35b0,
+#ifdef INIT_SUBSYS_INFO
+ pci_ss_list_8086_35b0,
+#else
+ NULL,
+#endif
+ 0
+};
+static const pciDeviceInfo pci_dev_info_8086_35b1 = {
+ 0x35b1, pci_device_8086_35b1,
+#ifdef INIT_SUBSYS_INFO
+ pci_ss_list_8086_35b1,
+#else
+ NULL,
+#endif
+ 0
+};
+static const pciDeviceInfo pci_dev_info_8086_35b5 = {
+ 0x35b5, pci_device_8086_35b5,
+#ifdef INIT_SUBSYS_INFO
+ pci_ss_list_8086_35b5,
+#else
+ NULL,
+#endif
+ 0
+};
+static const pciDeviceInfo pci_dev_info_8086_35b6 = {
+ 0x35b6, pci_device_8086_35b6,
+#ifdef INIT_SUBSYS_INFO
+ pci_ss_list_8086_35b6,
+#else
+ NULL,
+#endif
+ 0
+};
+static const pciDeviceInfo pci_dev_info_8086_35b7 = {
+ 0x35b7, pci_device_8086_35b7,
+#ifdef INIT_SUBSYS_INFO
+ pci_ss_list_8086_35b7,
+#else
+ NULL,
+#endif
+ 0
+};
+static const pciDeviceInfo pci_dev_info_8086_35c8 = {
+ 0x35c8, pci_device_8086_35c8,
+#ifdef INIT_SUBSYS_INFO
+ pci_ss_list_8086_35c8,
+#else
+ NULL,
+#endif
+ 0
+};
static const pciDeviceInfo pci_dev_info_8086_4220 = {
0x4220, pci_device_8086_4220,
#ifdef INIT_SUBSYS_INFO
@@ -110466,6 +116706,15 @@ static const pciDeviceInfo pci_dev_info_8086_4227 = {
#endif
0
};
+static const pciDeviceInfo pci_dev_info_8086_5001 = {
+ 0x5001, pci_device_8086_5001,
+#ifdef INIT_SUBSYS_INFO
+ pci_ss_list_8086_5001,
+#else
+ NULL,
+#endif
+ 0
+};
static const pciDeviceInfo pci_dev_info_8086_5200 = {
0x5200, pci_device_8086_5200,
#ifdef INIT_SUBSYS_INFO
@@ -111061,6 +117310,17 @@ static const pciDeviceInfo pci_dev_info_8086_b555 = {
0
};
#ifdef VENDOR_INCLUDE_NONVIDEO
+static const pciDeviceInfo pci_dev_info_8686_1010 = {
+ 0x1010, pci_device_8686_1010,
+#ifdef INIT_SUBSYS_INFO
+ pci_ss_list_8686_1010,
+#else
+ NULL,
+#endif
+ 0
+};
+#endif
+#ifdef VENDOR_INCLUDE_NONVIDEO
static const pciDeviceInfo pci_dev_info_8800_2008 = {
0x2008, pci_device_8800_2008,
#ifdef INIT_SUBSYS_INFO
@@ -112041,6 +118301,78 @@ static const pciDeviceInfo pci_dev_info_9005_0286 = {
#endif
0
};
+static const pciDeviceInfo pci_dev_info_9005_0410 = {
+ 0x0410, pci_device_9005_0410,
+#ifdef INIT_SUBSYS_INFO
+ pci_ss_list_9005_0410,
+#else
+ NULL,
+#endif
+ 0
+};
+static const pciDeviceInfo pci_dev_info_9005_0412 = {
+ 0x0412, pci_device_9005_0412,
+#ifdef INIT_SUBSYS_INFO
+ pci_ss_list_9005_0412,
+#else
+ NULL,
+#endif
+ 0
+};
+static const pciDeviceInfo pci_dev_info_9005_041e = {
+ 0x041e, pci_device_9005_041e,
+#ifdef INIT_SUBSYS_INFO
+ pci_ss_list_9005_041e,
+#else
+ NULL,
+#endif
+ 0
+};
+static const pciDeviceInfo pci_dev_info_9005_041f = {
+ 0x041f, pci_device_9005_041f,
+#ifdef INIT_SUBSYS_INFO
+ pci_ss_list_9005_041f,
+#else
+ NULL,
+#endif
+ 0
+};
+static const pciDeviceInfo pci_dev_info_9005_0430 = {
+ 0x0430, pci_device_9005_0430,
+#ifdef INIT_SUBSYS_INFO
+ pci_ss_list_9005_0430,
+#else
+ NULL,
+#endif
+ 0
+};
+static const pciDeviceInfo pci_dev_info_9005_0432 = {
+ 0x0432, pci_device_9005_0432,
+#ifdef INIT_SUBSYS_INFO
+ pci_ss_list_9005_0432,
+#else
+ NULL,
+#endif
+ 0
+};
+static const pciDeviceInfo pci_dev_info_9005_043e = {
+ 0x043e, pci_device_9005_043e,
+#ifdef INIT_SUBSYS_INFO
+ pci_ss_list_9005_043e,
+#else
+ NULL,
+#endif
+ 0
+};
+static const pciDeviceInfo pci_dev_info_9005_043f = {
+ 0x043f, pci_device_9005_043f,
+#ifdef INIT_SUBSYS_INFO
+ pci_ss_list_9005_043f,
+#else
+ NULL,
+#endif
+ 0
+};
static const pciDeviceInfo pci_dev_info_9005_0500 = {
0x0500, pci_device_9005_0500,
#ifdef INIT_SUBSYS_INFO
@@ -112471,6 +118803,15 @@ static const pciDeviceInfo pci_dev_info_aecb_6250 = {
};
#endif
#ifdef VENDOR_INCLUDE_NONVIDEO
+static const pciDeviceInfo pci_dev_info_affe_02e1 = {
+ 0x02e1, pci_device_affe_02e1,
+#ifdef INIT_SUBSYS_INFO
+ pci_ss_list_affe_02e1,
+#else
+ NULL,
+#endif
+ 0
+};
static const pciDeviceInfo pci_dev_info_affe_dead = {
0xdead, pci_device_affe_dead,
#ifdef INIT_SUBSYS_INFO
@@ -113108,6 +119449,7 @@ static const pciDeviceInfo *pci_dev_list_045e[] = {
NULL
};
#endif
+#define pci_dev_list_0482 NULL
#ifdef VENDOR_INCLUDE_NONVIDEO
static const pciDeviceInfo *pci_dev_list_04cf[] = {
&pci_dev_info_04cf_8818,
@@ -113116,12 +119458,19 @@ static const pciDeviceInfo *pci_dev_list_04cf[] = {
#endif
#ifdef VENDOR_INCLUDE_NONVIDEO
static const pciDeviceInfo *pci_dev_list_050d[] = {
+ &pci_dev_info_050d_001a,
&pci_dev_info_050d_0109,
&pci_dev_info_050d_7050,
NULL
};
#endif
#ifdef VENDOR_INCLUDE_NONVIDEO
+static const pciDeviceInfo *pci_dev_list_05a9[] = {
+ &pci_dev_info_05a9_8519,
+ NULL
+};
+#endif
+#ifdef VENDOR_INCLUDE_NONVIDEO
static const pciDeviceInfo *pci_dev_list_05e3[] = {
&pci_dev_info_05e3_0701,
NULL
@@ -113145,6 +119494,7 @@ static const pciDeviceInfo *pci_dev_list_0675[] = {
#endif
#ifdef VENDOR_INCLUDE_NONVIDEO
static const pciDeviceInfo *pci_dev_list_067b[] = {
+ &pci_dev_info_067b_2303,
&pci_dev_info_067b_3507,
NULL
};
@@ -113152,6 +119502,7 @@ static const pciDeviceInfo *pci_dev_list_067b[] = {
#define pci_dev_list_0721 NULL
#define pci_dev_list_07e2 NULL
#define pci_dev_list_0925 NULL
+#define pci_dev_list_093a NULL
#ifdef VENDOR_INCLUDE_NONVIDEO
static const pciDeviceInfo *pci_dev_list_09c1[] = {
&pci_dev_info_09c1_0704,
@@ -113167,6 +119518,8 @@ static const pciDeviceInfo *pci_dev_list_0b0b[] = {
&pci_dev_info_0b0b_0405,
&pci_dev_info_0b0b_0505,
&pci_dev_info_0b0b_0506,
+ &pci_dev_info_0b0b_0605,
+ &pci_dev_info_0b0b_0705,
NULL
};
#endif
@@ -113176,6 +119529,12 @@ static const pciDeviceInfo *pci_dev_list_0b49[] = {
NULL
};
#endif
+#ifdef VENDOR_INCLUDE_NONVIDEO
+static const pciDeviceInfo *pci_dev_list_0ccd[] = {
+ &pci_dev_info_0ccd_0038,
+ NULL
+};
+#endif
static const pciDeviceInfo *pci_dev_list_0e11[] = {
&pci_dev_info_0e11_0001,
&pci_dev_info_0e11_0002,
@@ -113275,6 +119634,7 @@ static const pciDeviceInfo *pci_dev_list_0e11[] = {
};
#define pci_dev_list_0e21 NULL
#define pci_dev_list_0e55 NULL
+#define pci_dev_list_0eac NULL
#ifdef VENDOR_INCLUDE_NONVIDEO
static const pciDeviceInfo *pci_dev_list_1000[] = {
&pci_dev_info_1000_0001,
@@ -113312,6 +119672,8 @@ static const pciDeviceInfo *pci_dev_list_1000[] = {
&pci_dev_info_1000_0407,
&pci_dev_info_1000_0408,
&pci_dev_info_1000_0409,
+ &pci_dev_info_1000_0411,
+ &pci_dev_info_1000_0413,
&pci_dev_info_1000_0621,
&pci_dev_info_1000_0622,
&pci_dev_info_1000_0623,
@@ -113604,9 +119966,11 @@ static const pciDeviceInfo *pci_dev_list_1002[] = {
&pci_dev_info_1002_5551,
&pci_dev_info_1002_5552,
&pci_dev_info_1002_5554,
+ &pci_dev_info_1002_5569,
&pci_dev_info_1002_556b,
&pci_dev_info_1002_556d,
&pci_dev_info_1002_556f,
+ &pci_dev_info_1002_5571,
&pci_dev_info_1002_564a,
&pci_dev_info_1002_564b,
&pci_dev_info_1002_564f,
@@ -113636,6 +120000,7 @@ static const pciDeviceInfo *pci_dev_list_1002[] = {
&pci_dev_info_1002_5969,
&pci_dev_info_1002_5974,
&pci_dev_info_1002_5975,
+ &pci_dev_info_1002_5a33,
&pci_dev_info_1002_5a34,
&pci_dev_info_1002_5a36,
&pci_dev_info_1002_5a38,
@@ -113681,10 +120046,20 @@ static const pciDeviceInfo *pci_dev_list_1002[] = {
&pci_dev_info_1002_700f,
&pci_dev_info_1002_7010,
&pci_dev_info_1002_7100,
+ &pci_dev_info_1002_7102,
+ &pci_dev_info_1002_7103,
+ &pci_dev_info_1002_7104,
&pci_dev_info_1002_7105,
+ &pci_dev_info_1002_7106,
+ &pci_dev_info_1002_7108,
&pci_dev_info_1002_7109,
+ &pci_dev_info_1002_710a,
+ &pci_dev_info_1002_710b,
+ &pci_dev_info_1002_710c,
&pci_dev_info_1002_7120,
+ &pci_dev_info_1002_7124,
&pci_dev_info_1002_7129,
+ &pci_dev_info_1002_7140,
&pci_dev_info_1002_7142,
&pci_dev_info_1002_7145,
&pci_dev_info_1002_7146,
@@ -113692,14 +120067,45 @@ static const pciDeviceInfo *pci_dev_list_1002[] = {
&pci_dev_info_1002_714a,
&pci_dev_info_1002_714b,
&pci_dev_info_1002_714c,
+ &pci_dev_info_1002_714d,
+ &pci_dev_info_1002_714e,
+ &pci_dev_info_1002_7152,
+ &pci_dev_info_1002_715e,
&pci_dev_info_1002_7162,
&pci_dev_info_1002_7166,
+ &pci_dev_info_1002_7172,
+ &pci_dev_info_1002_7180,
+ &pci_dev_info_1002_7181,
+ &pci_dev_info_1002_71a0,
+ &pci_dev_info_1002_71a1,
&pci_dev_info_1002_71c0,
&pci_dev_info_1002_71c2,
&pci_dev_info_1002_71c4,
&pci_dev_info_1002_71c5,
+ &pci_dev_info_1002_71c6,
+ &pci_dev_info_1002_71ce,
+ &pci_dev_info_1002_71d5,
+ &pci_dev_info_1002_71d6,
+ &pci_dev_info_1002_71de,
&pci_dev_info_1002_71e0,
&pci_dev_info_1002_71e2,
+ &pci_dev_info_1002_7240,
+ &pci_dev_info_1002_7241,
+ &pci_dev_info_1002_7242,
+ &pci_dev_info_1002_7243,
+ &pci_dev_info_1002_7244,
+ &pci_dev_info_1002_7245,
+ &pci_dev_info_1002_7246,
+ &pci_dev_info_1002_7247,
+ &pci_dev_info_1002_7248,
+ &pci_dev_info_1002_7249,
+ &pci_dev_info_1002_724a,
+ &pci_dev_info_1002_724b,
+ &pci_dev_info_1002_724c,
+ &pci_dev_info_1002_724d,
+ &pci_dev_info_1002_724e,
+ &pci_dev_info_1002_7269,
+ &pci_dev_info_1002_726e,
&pci_dev_info_1002_7833,
&pci_dev_info_1002_7834,
&pci_dev_info_1002_7835,
@@ -113898,6 +120304,7 @@ static const pciDeviceInfo *pci_dev_list_1014[] = {
&pci_dev_info_1014_0053,
&pci_dev_info_1014_0054,
&pci_dev_info_1014_0057,
+ &pci_dev_info_1014_0058,
&pci_dev_info_1014_005c,
&pci_dev_info_1014_005e,
&pci_dev_info_1014_007c,
@@ -113945,6 +120352,7 @@ static const pciDeviceInfo *pci_dev_list_1014[] = {
&pci_dev_info_1014_02a1,
&pci_dev_info_1014_02bd,
&pci_dev_info_1014_0302,
+ &pci_dev_info_1014_0308,
&pci_dev_info_1014_0314,
&pci_dev_info_1014_3022,
&pci_dev_info_1014_4022,
@@ -114120,6 +120528,7 @@ static const pciDeviceInfo *pci_dev_list_1023[] = {
};
#define pci_dev_list_1024 NULL
static const pciDeviceInfo *pci_dev_list_1025[] = {
+ &pci_dev_info_1025_0090,
&pci_dev_info_1025_1435,
&pci_dev_info_1025_1445,
&pci_dev_info_1025_1449,
@@ -114229,6 +120638,9 @@ static const pciDeviceInfo *pci_dev_list_102b[] = {
&pci_dev_info_102b_2537,
&pci_dev_info_102b_2538,
&pci_dev_info_102b_4536,
+ &pci_dev_info_102b_4cdc,
+ &pci_dev_info_102b_4fc5,
+ &pci_dev_info_102b_5e10,
&pci_dev_info_102b_6573,
NULL
};
@@ -114319,6 +120731,7 @@ static const pciDeviceInfo *pci_dev_list_1033[] = {
&pci_dev_info_1033_00f3,
&pci_dev_info_1033_010c,
&pci_dev_info_1033_0125,
+ &pci_dev_info_1033_013a,
NULL
};
#define pci_dev_list_1034 NULL
@@ -114345,6 +120758,7 @@ static const pciDeviceInfo *pci_dev_list_1039[] = {
&pci_dev_info_1039_0180,
&pci_dev_info_1039_0181,
&pci_dev_info_1039_0182,
+ &pci_dev_info_1039_0186,
&pci_dev_info_1039_0190,
&pci_dev_info_1039_0191,
&pci_dev_info_1039_0200,
@@ -114374,6 +120788,7 @@ static const pciDeviceInfo *pci_dev_list_1039[] = {
&pci_dev_info_1039_0655,
&pci_dev_info_1039_0660,
&pci_dev_info_1039_0661,
+ &pci_dev_info_1039_0662,
&pci_dev_info_1039_0730,
&pci_dev_info_1039_0733,
&pci_dev_info_1039_0735,
@@ -114390,6 +120805,13 @@ static const pciDeviceInfo *pci_dev_list_1039[] = {
&pci_dev_info_1039_0963,
&pci_dev_info_1039_0964,
&pci_dev_info_1039_0965,
+ &pci_dev_info_1039_0966,
+ &pci_dev_info_1039_0968,
+ &pci_dev_info_1039_1180,
+ &pci_dev_info_1039_1182,
+ &pci_dev_info_1039_1183,
+ &pci_dev_info_1039_1184,
+ &pci_dev_info_1039_1185,
&pci_dev_info_1039_3602,
&pci_dev_info_1039_5107,
&pci_dev_info_1039_5300,
@@ -114413,6 +120835,8 @@ static const pciDeviceInfo *pci_dev_list_1039[] = {
&pci_dev_info_1039_6325,
&pci_dev_info_1039_6326,
&pci_dev_info_1039_6330,
+ &pci_dev_info_1039_6350,
+ &pci_dev_info_1039_6351,
&pci_dev_info_1039_7001,
&pci_dev_info_1039_7002,
&pci_dev_info_1039_7007,
@@ -114421,6 +120845,7 @@ static const pciDeviceInfo *pci_dev_list_1039[] = {
&pci_dev_info_1039_7016,
&pci_dev_info_1039_7018,
&pci_dev_info_1039_7019,
+ &pci_dev_info_1039_7502,
NULL
};
#define pci_dev_list_103a NULL
@@ -114453,10 +120878,14 @@ static const pciDeviceInfo *pci_dev_list_103c[] = {
&pci_dev_info_103c_1229,
&pci_dev_info_103c_122a,
&pci_dev_info_103c_122e,
+ &pci_dev_info_103c_127b,
&pci_dev_info_103c_127c,
&pci_dev_info_103c_1290,
&pci_dev_info_103c_1291,
&pci_dev_info_103c_12b4,
+ &pci_dev_info_103c_12eb,
+ &pci_dev_info_103c_12ec,
+ &pci_dev_info_103c_12ee,
&pci_dev_info_103c_12f8,
&pci_dev_info_103c_12fa,
&pci_dev_info_103c_2910,
@@ -114465,6 +120894,11 @@ static const pciDeviceInfo *pci_dev_list_103c[] = {
&pci_dev_info_103c_3085,
&pci_dev_info_103c_3220,
&pci_dev_info_103c_3230,
+ &pci_dev_info_103c_4030,
+ &pci_dev_info_103c_4031,
+ &pci_dev_info_103c_4037,
+ &pci_dev_info_103c_403b,
+ &pci_dev_info_103c_60e8,
NULL
};
#define pci_dev_list_103e NULL
@@ -114489,12 +120923,14 @@ static const pciDeviceInfo *pci_dev_list_1043[] = {
&pci_dev_info_1043_4021,
&pci_dev_info_1043_4057,
&pci_dev_info_1043_8043,
+ &pci_dev_info_1043_8047,
&pci_dev_info_1043_807b,
&pci_dev_info_1043_8095,
&pci_dev_info_1043_80ac,
&pci_dev_info_1043_80bb,
&pci_dev_info_1043_80c5,
&pci_dev_info_1043_80df,
+ &pci_dev_info_1043_815a,
&pci_dev_info_1043_8187,
&pci_dev_info_1043_8188,
NULL
@@ -114606,7 +121042,10 @@ static const pciDeviceInfo *pci_dev_list_104c[] = {
&pci_dev_info_104c_8036,
&pci_dev_info_104c_8038,
&pci_dev_info_104c_8039,
+ &pci_dev_info_104c_803a,
&pci_dev_info_104c_803b,
+ &pci_dev_info_104c_803c,
+ &pci_dev_info_104c_803d,
&pci_dev_info_104c_8201,
&pci_dev_info_104c_8204,
&pci_dev_info_104c_8231,
@@ -114719,11 +121158,13 @@ static const pciDeviceInfo *pci_dev_list_1057[] = {
&pci_dev_info_1057_0006,
&pci_dev_info_1057_0008,
&pci_dev_info_1057_0009,
+ &pci_dev_info_1057_0012,
&pci_dev_info_1057_0100,
&pci_dev_info_1057_0431,
&pci_dev_info_1057_1801,
&pci_dev_info_1057_18c0,
&pci_dev_info_1057_18c1,
+ &pci_dev_info_1057_3055,
&pci_dev_info_1057_3410,
&pci_dev_info_1057_4801,
&pci_dev_info_1057_4802,
@@ -114763,6 +121204,7 @@ static const pciDeviceInfo *pci_dev_list_105a[] = {
&pci_dev_info_105a_3d18,
&pci_dev_info_105a_3d73,
&pci_dev_info_105a_3d75,
+ &pci_dev_info_105a_4302,
&pci_dev_info_105a_4d30,
&pci_dev_info_105a_4d33,
&pci_dev_info_105a_4d38,
@@ -114779,6 +121221,8 @@ static const pciDeviceInfo *pci_dev_list_105a[] = {
&pci_dev_info_105a_6629,
&pci_dev_info_105a_7275,
&pci_dev_info_105a_8002,
+ &pci_dev_info_105a_8350,
+ &pci_dev_info_105a_c350,
NULL
};
#endif
@@ -115000,10 +121444,12 @@ static const pciDeviceInfo *pci_dev_list_1077[] = {
&pci_dev_info_1077_2322,
&pci_dev_info_1077_2422,
&pci_dev_info_1077_2432,
- &pci_dev_info_1077_3010,
&pci_dev_info_1077_3022,
+ &pci_dev_info_1077_3032,
&pci_dev_info_1077_4010,
&pci_dev_info_1077_4022,
+ &pci_dev_info_1077_4032,
+ &pci_dev_info_1077_5432,
&pci_dev_info_1077_6312,
&pci_dev_info_1077_6322,
NULL
@@ -115328,8 +121774,6 @@ static const pciDeviceInfo *pci_dev_list_10a9[] = {
&pci_dev_info_10a9_4002,
&pci_dev_info_10a9_8001,
&pci_dev_info_10a9_8002,
- &pci_dev_info_10a9_8010,
- &pci_dev_info_10a9_8018,
NULL
};
#endif
@@ -115398,7 +121842,9 @@ static const pciDeviceInfo *pci_dev_list_10b5[] = {
&pci_dev_info_10b5_906d,
&pci_dev_info_10b5_906e,
&pci_dev_info_10b5_9080,
+ &pci_dev_info_10b5_9656,
&pci_dev_info_10b5_bb04,
+ &pci_dev_info_10b5_c001,
NULL
};
#endif
@@ -115467,6 +121913,7 @@ static const pciDeviceInfo *pci_dev_list_10b7[] = {
&pci_dev_info_10b7_900a,
&pci_dev_info_10b7_9050,
&pci_dev_info_10b7_9051,
+ &pci_dev_info_10b7_9054,
&pci_dev_info_10b7_9055,
&pci_dev_info_10b7_9056,
&pci_dev_info_10b7_9058,
@@ -115739,6 +122186,7 @@ static const pciDeviceInfo *pci_dev_list_10de[] = {
&pci_dev_info_10de_0047,
&pci_dev_info_10de_0048,
&pci_dev_info_10de_0049,
+ &pci_dev_info_10de_004d,
&pci_dev_info_10de_004e,
&pci_dev_info_10de_0050,
&pci_dev_info_10de_0051,
@@ -115852,6 +122300,7 @@ static const pciDeviceInfo *pci_dev_list_10de[] = {
&pci_dev_info_10de_0149,
&pci_dev_info_10de_014a,
&pci_dev_info_10de_014c,
+ &pci_dev_info_10de_014d,
&pci_dev_info_10de_014e,
&pci_dev_info_10de_014f,
&pci_dev_info_10de_0150,
@@ -115909,6 +122358,7 @@ static const pciDeviceInfo *pci_dev_list_10de[] = {
&pci_dev_info_10de_01c2,
&pci_dev_info_10de_01c3,
&pci_dev_info_10de_01d1,
+ &pci_dev_info_10de_01d6,
&pci_dev_info_10de_01d7,
&pci_dev_info_10de_01d8,
&pci_dev_info_10de_01da,
@@ -115985,11 +122435,15 @@ static const pciDeviceInfo *pci_dev_list_10de[] = {
&pci_dev_info_10de_028c,
&pci_dev_info_10de_0290,
&pci_dev_info_10de_0291,
+ &pci_dev_info_10de_0292,
+ &pci_dev_info_10de_0298,
+ &pci_dev_info_10de_0299,
&pci_dev_info_10de_029a,
&pci_dev_info_10de_029b,
&pci_dev_info_10de_029c,
&pci_dev_info_10de_029d,
&pci_dev_info_10de_029e,
+ &pci_dev_info_10de_029f,
&pci_dev_info_10de_02a0,
&pci_dev_info_10de_02e1,
&pci_dev_info_10de_02f0,
@@ -116070,19 +122524,59 @@ static const pciDeviceInfo *pci_dev_list_10de[] = {
&pci_dev_info_10de_0368,
&pci_dev_info_10de_0369,
&pci_dev_info_10de_036a,
+ &pci_dev_info_10de_036b,
&pci_dev_info_10de_036c,
&pci_dev_info_10de_036d,
&pci_dev_info_10de_036e,
+ &pci_dev_info_10de_0370,
&pci_dev_info_10de_0371,
&pci_dev_info_10de_0372,
&pci_dev_info_10de_0373,
+ &pci_dev_info_10de_0374,
+ &pci_dev_info_10de_0375,
+ &pci_dev_info_10de_0376,
+ &pci_dev_info_10de_0377,
+ &pci_dev_info_10de_0378,
&pci_dev_info_10de_037a,
&pci_dev_info_10de_037e,
&pci_dev_info_10de_037f,
&pci_dev_info_10de_0391,
&pci_dev_info_10de_0392,
+ &pci_dev_info_10de_0393,
&pci_dev_info_10de_0398,
&pci_dev_info_10de_039e,
+ &pci_dev_info_10de_03a0,
+ &pci_dev_info_10de_03a1,
+ &pci_dev_info_10de_03a2,
+ &pci_dev_info_10de_03a3,
+ &pci_dev_info_10de_03a4,
+ &pci_dev_info_10de_03a5,
+ &pci_dev_info_10de_03a6,
+ &pci_dev_info_10de_03a7,
+ &pci_dev_info_10de_03a8,
+ &pci_dev_info_10de_03a9,
+ &pci_dev_info_10de_03aa,
+ &pci_dev_info_10de_03ab,
+ &pci_dev_info_10de_03ac,
+ &pci_dev_info_10de_03ad,
+ &pci_dev_info_10de_03ae,
+ &pci_dev_info_10de_03af,
+ &pci_dev_info_10de_03b0,
+ &pci_dev_info_10de_03b1,
+ &pci_dev_info_10de_03b2,
+ &pci_dev_info_10de_03b3,
+ &pci_dev_info_10de_03b4,
+ &pci_dev_info_10de_03b5,
+ &pci_dev_info_10de_03b6,
+ &pci_dev_info_10de_03b7,
+ &pci_dev_info_10de_03b8,
+ &pci_dev_info_10de_03b9,
+ &pci_dev_info_10de_03ba,
+ &pci_dev_info_10de_03bb,
+ &pci_dev_info_10de_03d0,
+ &pci_dev_info_10de_03d1,
+ &pci_dev_info_10de_03d2,
+ &pci_dev_info_10de_03d5,
&pci_dev_info_10de_03e0,
&pci_dev_info_10de_03e1,
&pci_dev_info_10de_03e2,
@@ -116091,6 +122585,8 @@ static const pciDeviceInfo *pci_dev_list_10de[] = {
&pci_dev_info_10de_03e5,
&pci_dev_info_10de_03e6,
&pci_dev_info_10de_03e7,
+ &pci_dev_info_10de_03e8,
+ &pci_dev_info_10de_03e9,
&pci_dev_info_10de_03ea,
&pci_dev_info_10de_03eb,
&pci_dev_info_10de_03ec,
@@ -116099,9 +122595,42 @@ static const pciDeviceInfo *pci_dev_list_10de[] = {
&pci_dev_info_10de_03f0,
&pci_dev_info_10de_03f1,
&pci_dev_info_10de_03f2,
+ &pci_dev_info_10de_03f3,
+ &pci_dev_info_10de_03f4,
&pci_dev_info_10de_03f5,
&pci_dev_info_10de_03f6,
&pci_dev_info_10de_03f7,
+ &pci_dev_info_10de_0440,
+ &pci_dev_info_10de_0441,
+ &pci_dev_info_10de_0442,
+ &pci_dev_info_10de_0443,
+ &pci_dev_info_10de_0444,
+ &pci_dev_info_10de_0445,
+ &pci_dev_info_10de_0446,
+ &pci_dev_info_10de_0447,
+ &pci_dev_info_10de_0448,
+ &pci_dev_info_10de_0449,
+ &pci_dev_info_10de_044a,
+ &pci_dev_info_10de_044b,
+ &pci_dev_info_10de_044c,
+ &pci_dev_info_10de_044d,
+ &pci_dev_info_10de_044e,
+ &pci_dev_info_10de_044f,
+ &pci_dev_info_10de_0450,
+ &pci_dev_info_10de_0451,
+ &pci_dev_info_10de_0452,
+ &pci_dev_info_10de_0453,
+ &pci_dev_info_10de_0454,
+ &pci_dev_info_10de_0455,
+ &pci_dev_info_10de_0456,
+ &pci_dev_info_10de_0457,
+ &pci_dev_info_10de_0458,
+ &pci_dev_info_10de_0459,
+ &pci_dev_info_10de_045a,
+ &pci_dev_info_10de_045c,
+ &pci_dev_info_10de_045d,
+ &pci_dev_info_10de_045e,
+ &pci_dev_info_10de_045f,
NULL
};
#ifdef VENDOR_INCLUDE_NONVIDEO
@@ -116159,11 +122688,13 @@ static const pciDeviceInfo *pci_dev_list_10e1[] = {
#ifdef VENDOR_INCLUDE_NONVIDEO
static const pciDeviceInfo *pci_dev_list_10e3[] = {
&pci_dev_info_10e3_0000,
+ &pci_dev_info_10e3_0108,
&pci_dev_info_10e3_0148,
&pci_dev_info_10e3_0860,
&pci_dev_info_10e3_0862,
&pci_dev_info_10e3_8260,
&pci_dev_info_10e3_8261,
+ &pci_dev_info_10e3_a108,
NULL
};
#endif
@@ -116230,10 +122761,14 @@ static const pciDeviceInfo *pci_dev_list_10eb[] = {
#ifdef VENDOR_INCLUDE_NONVIDEO
static const pciDeviceInfo *pci_dev_list_10ec[] = {
&pci_dev_info_10ec_0139,
+ &pci_dev_info_10ec_0883,
&pci_dev_info_10ec_8029,
&pci_dev_info_10ec_8129,
+ &pci_dev_info_10ec_8136,
&pci_dev_info_10ec_8138,
&pci_dev_info_10ec_8139,
+ &pci_dev_info_10ec_8167,
+ &pci_dev_info_10ec_8168,
&pci_dev_info_10ec_8169,
&pci_dev_info_10ec_8180,
&pci_dev_info_10ec_8185,
@@ -116318,6 +122853,7 @@ static const pciDeviceInfo *pci_dev_list_10fc[] = {
#ifdef VENDOR_INCLUDE_NONVIDEO
static const pciDeviceInfo *pci_dev_list_1101[] = {
&pci_dev_info_1101_1060,
+ &pci_dev_info_1101_1622,
&pci_dev_info_1101_9100,
&pci_dev_info_1101_9400,
&pci_dev_info_1101_9401,
@@ -116330,6 +122866,7 @@ static const pciDeviceInfo *pci_dev_list_1101[] = {
static const pciDeviceInfo *pci_dev_list_1102[] = {
&pci_dev_info_1102_0002,
&pci_dev_info_1102_0004,
+ &pci_dev_info_1102_0005,
&pci_dev_info_1102_0006,
&pci_dev_info_1102_0007,
&pci_dev_info_1102_0008,
@@ -117203,10 +123740,14 @@ static const pciDeviceInfo *pci_dev_list_1166[] = {
&pci_dev_info_1166_0017,
&pci_dev_info_1166_0036,
&pci_dev_info_1166_0101,
+ &pci_dev_info_1166_0103,
&pci_dev_info_1166_0104,
&pci_dev_info_1166_0110,
&pci_dev_info_1166_0130,
&pci_dev_info_1166_0132,
+ &pci_dev_info_1166_0140,
+ &pci_dev_info_1166_0141,
+ &pci_dev_info_1166_0142,
&pci_dev_info_1166_0200,
&pci_dev_info_1166_0201,
&pci_dev_info_1166_0203,
@@ -117329,6 +123870,7 @@ static const pciDeviceInfo *pci_dev_list_1186[] = {
&pci_dev_info_1186_1043,
&pci_dev_info_1186_1300,
&pci_dev_info_1186_1340,
+ &pci_dev_info_1186_1405,
&pci_dev_info_1186_1541,
&pci_dev_info_1186_1561,
&pci_dev_info_1186_2027,
@@ -117347,6 +123889,7 @@ static const pciDeviceInfo *pci_dev_list_1186[] = {
&pci_dev_info_1186_3a63,
&pci_dev_info_1186_4000,
&pci_dev_info_1186_4300,
+ &pci_dev_info_1186_4800,
&pci_dev_info_1186_4b01,
&pci_dev_info_1186_4c00,
&pci_dev_info_1186_8400,
@@ -117504,6 +124047,7 @@ static const pciDeviceInfo *pci_dev_list_11ab[] = {
&pci_dev_info_11ab_6081,
&pci_dev_info_11ab_6460,
&pci_dev_info_11ab_6480,
+ &pci_dev_info_11ab_6485,
&pci_dev_info_11ab_f003,
NULL
};
@@ -117616,6 +124160,7 @@ static const pciDeviceInfo *pci_dev_list_11c1[] = {
&pci_dev_info_11c1_ab21,
&pci_dev_info_11c1_ab30,
&pci_dev_info_11c1_ed00,
+ &pci_dev_info_11c1_ed01,
NULL
};
#endif
@@ -117855,6 +124400,7 @@ static const pciDeviceInfo *pci_dev_list_120f[] = {
#define pci_dev_list_1216 NULL
#ifdef VENDOR_INCLUDE_NONVIDEO
static const pciDeviceInfo *pci_dev_list_1217[] = {
+ &pci_dev_info_1217_00f7,
&pci_dev_info_1217_6729,
&pci_dev_info_1217_673a,
&pci_dev_info_1217_6832,
@@ -117867,7 +124413,10 @@ static const pciDeviceInfo *pci_dev_list_1217[] = {
&pci_dev_info_1217_7112,
&pci_dev_info_1217_7113,
&pci_dev_info_1217_7114,
+ &pci_dev_info_1217_7120,
+ &pci_dev_info_1217_7130,
&pci_dev_info_1217_7134,
+ &pci_dev_info_1217_7135,
&pci_dev_info_1217_71e2,
&pci_dev_info_1217_7212,
&pci_dev_info_1217_7213,
@@ -118064,6 +124613,7 @@ static const pciDeviceInfo *pci_dev_list_1256[] = {
static const pciDeviceInfo *pci_dev_list_1259[] = {
&pci_dev_info_1259_2560,
&pci_dev_info_1259_a117,
+ &pci_dev_info_1259_a11e,
&pci_dev_info_1259_a120,
NULL
};
@@ -118850,6 +125400,7 @@ static const pciDeviceInfo *pci_dev_list_1360[] = {
&pci_dev_info_1360_0204,
&pci_dev_info_1360_0301,
&pci_dev_info_1360_0302,
+ &pci_dev_info_1360_0303,
NULL
};
#endif
@@ -118862,7 +125413,15 @@ static const pciDeviceInfo *pci_dev_list_1360[] = {
#define pci_dev_list_1367 NULL
#define pci_dev_list_1368 NULL
#define pci_dev_list_1369 NULL
-#define pci_dev_list_136a NULL
+#ifdef VENDOR_INCLUDE_NONVIDEO
+static const pciDeviceInfo *pci_dev_list_136a[] = {
+ &pci_dev_info_136a_0004,
+ &pci_dev_info_136a_0007,
+ &pci_dev_info_136a_0008,
+ &pci_dev_info_136a_000a,
+ NULL
+};
+#endif
#ifdef VENDOR_INCLUDE_NONVIDEO
static const pciDeviceInfo *pci_dev_list_136b[] = {
&pci_dev_info_136b_ff01,
@@ -118967,6 +125526,10 @@ static const pciDeviceInfo *pci_dev_list_1385[] = {
&pci_dev_info_1385_630a,
&pci_dev_info_1385_6b00,
&pci_dev_info_1385_6d00,
+ &pci_dev_info_1385_7b00,
+ &pci_dev_info_1385_7c00,
+ &pci_dev_info_1385_7d00,
+ &pci_dev_info_1385_7e00,
&pci_dev_info_1385_f004,
NULL
};
@@ -119224,6 +125787,7 @@ static const pciDeviceInfo *pci_dev_list_13f6[] = {
static const pciDeviceInfo *pci_dev_list_13fe[] = {
&pci_dev_info_13fe_1240,
&pci_dev_info_13fe_1600,
+ &pci_dev_info_13fe_16ff,
&pci_dev_info_13fe_1733,
&pci_dev_info_13fe_1752,
&pci_dev_info_13fe_1754,
@@ -119297,11 +125861,14 @@ static const pciDeviceInfo *pci_dev_list_1412[] = {
#ifdef VENDOR_INCLUDE_NONVIDEO
static const pciDeviceInfo *pci_dev_list_1415[] = {
&pci_dev_info_1415_8403,
+ &pci_dev_info_1415_9500,
&pci_dev_info_1415_9501,
&pci_dev_info_1415_950a,
&pci_dev_info_1415_950b,
&pci_dev_info_1415_9510,
&pci_dev_info_1415_9511,
+ &pci_dev_info_1415_9512,
+ &pci_dev_info_1415_9513,
&pci_dev_info_1415_9521,
&pci_dev_info_1415_9523,
NULL
@@ -119358,7 +125925,18 @@ static const pciDeviceInfo *pci_dev_list_1432[] = {
};
#endif
#define pci_dev_list_1433 NULL
-#define pci_dev_list_1435 NULL
+#ifdef VENDOR_INCLUDE_NONVIDEO
+static const pciDeviceInfo *pci_dev_list_1435[] = {
+ &pci_dev_info_1435_4520,
+ &pci_dev_info_1435_6020,
+ &pci_dev_info_1435_6030,
+ &pci_dev_info_1435_6420,
+ &pci_dev_info_1435_6430,
+ &pci_dev_info_1435_7520,
+ &pci_dev_info_1435_7820,
+ NULL
+};
+#endif
#define pci_dev_list_1436 NULL
#define pci_dev_list_1437 NULL
#define pci_dev_list_1438 NULL
@@ -119528,6 +126106,7 @@ static const pciDeviceInfo *pci_dev_list_1497[] = {
static const pciDeviceInfo *pci_dev_list_1498[] = {
&pci_dev_info_1498_0330,
&pci_dev_info_1498_0385,
+ &pci_dev_info_1498_21cc,
&pci_dev_info_1498_21cd,
&pci_dev_info_1498_30c8,
NULL
@@ -119612,7 +126191,13 @@ static const pciDeviceInfo *pci_dev_list_14b9[] = {
#endif
#define pci_dev_list_14ba NULL
#define pci_dev_list_14bb NULL
-#define pci_dev_list_14bc NULL
+#ifdef VENDOR_INCLUDE_NONVIDEO
+static const pciDeviceInfo *pci_dev_list_14bc[] = {
+ &pci_dev_info_14bc_d002,
+ &pci_dev_info_14bc_d00f,
+ NULL
+};
+#endif
#define pci_dev_list_14bd NULL
#define pci_dev_list_14be NULL
#define pci_dev_list_14bf NULL
@@ -119746,6 +126331,7 @@ static const pciDeviceInfo *pci_dev_list_14e4[] = {
&pci_dev_info_14e4_167e,
&pci_dev_info_14e4_1693,
&pci_dev_info_14e4_1696,
+ &pci_dev_info_14e4_169a,
&pci_dev_info_14e4_169b,
&pci_dev_info_14e4_169c,
&pci_dev_info_14e4_169d,
@@ -119773,6 +126359,7 @@ static const pciDeviceInfo *pci_dev_list_14e4[] = {
&pci_dev_info_14e4_4306,
&pci_dev_info_14e4_4307,
&pci_dev_info_14e4_4310,
+ &pci_dev_info_14e4_4311,
&pci_dev_info_14e4_4312,
&pci_dev_info_14e4_4313,
&pci_dev_info_14e4_4315,
@@ -119784,6 +126371,7 @@ static const pciDeviceInfo *pci_dev_list_14e4[] = {
&pci_dev_info_14e4_4324,
&pci_dev_info_14e4_4325,
&pci_dev_info_14e4_4326,
+ &pci_dev_info_14e4_4329,
&pci_dev_info_14e4_4401,
&pci_dev_info_14e4_4402,
&pci_dev_info_14e4_4403,
@@ -120149,7 +126737,12 @@ static const pciDeviceInfo *pci_dev_list_153f[] = {
#endif
#define pci_dev_list_1540 NULL
#define pci_dev_list_1541 NULL
-#define pci_dev_list_1542 NULL
+#ifdef VENDOR_INCLUDE_NONVIDEO
+static const pciDeviceInfo *pci_dev_list_1542[] = {
+ &pci_dev_info_1542_9260,
+ NULL
+};
+#endif
#ifdef VENDOR_INCLUDE_NONVIDEO
static const pciDeviceInfo *pci_dev_list_1543[] = {
&pci_dev_info_1543_3052,
@@ -120538,6 +127131,7 @@ static const pciDeviceInfo *pci_dev_list_166d[] = {
static const pciDeviceInfo *pci_dev_list_1677[] = {
&pci_dev_info_1677_104e,
&pci_dev_info_1677_12d7,
+ &pci_dev_info_1677_20ad,
NULL
};
#endif
@@ -120636,9 +127230,16 @@ static const pciDeviceInfo *pci_dev_list_16e3[] = {
};
#endif
#ifdef VENDOR_INCLUDE_NONVIDEO
+static const pciDeviceInfo *pci_dev_list_16e5[] = {
+ &pci_dev_info_16e5_6000,
+ NULL
+};
+#endif
+#ifdef VENDOR_INCLUDE_NONVIDEO
static const pciDeviceInfo *pci_dev_list_16ec[] = {
&pci_dev_info_16ec_00ff,
&pci_dev_info_16ec_0116,
+ &pci_dev_info_16ec_2f00,
&pci_dev_info_16ec_3685,
NULL
};
@@ -120808,7 +127409,23 @@ static const pciDeviceInfo *pci_dev_list_17d5[] = {
NULL
};
#endif
+#define pci_dev_list_17db NULL
#define pci_dev_list_17de NULL
+#ifdef VENDOR_INCLUDE_NONVIDEO
+static const pciDeviceInfo *pci_dev_list_17e4[] = {
+ &pci_dev_info_17e4_0001,
+ &pci_dev_info_17e4_0002,
+ NULL
+};
+#endif
+#ifdef VENDOR_INCLUDE_NONVIDEO
+static const pciDeviceInfo *pci_dev_list_17e6[] = {
+ &pci_dev_info_17e6_0010,
+ &pci_dev_info_17e6_0011,
+ &pci_dev_info_17e6_0021,
+ NULL
+};
+#endif
#define pci_dev_list_17ee NULL
#define pci_dev_list_17f2 NULL
#ifdef VENDOR_INCLUDE_NONVIDEO
@@ -120864,10 +127481,12 @@ static const pciDeviceInfo *pci_dev_list_183b[] = {
&pci_dev_info_183b_08a7,
&pci_dev_info_183b_08a8,
&pci_dev_info_183b_08a9,
+ &pci_dev_info_183b_08b0,
NULL
};
#endif
#define pci_dev_list_1849 NULL
+#define pci_dev_list_184a NULL
#define pci_dev_list_1851 NULL
#define pci_dev_list_1852 NULL
#define pci_dev_list_1853 NULL
@@ -120897,6 +127516,7 @@ static const pciDeviceInfo *pci_dev_list_187e[] = {
NULL
};
#endif
+#define pci_dev_list_1885 NULL
#ifdef VENDOR_INCLUDE_NONVIDEO
static const pciDeviceInfo *pci_dev_list_1888[] = {
&pci_dev_info_1888_0301,
@@ -120914,6 +127534,7 @@ static const pciDeviceInfo *pci_dev_list_1888[] = {
#ifdef VENDOR_INCLUDE_NONVIDEO
static const pciDeviceInfo *pci_dev_list_18ac[] = {
&pci_dev_info_18ac_d500,
+ &pci_dev_info_18ac_d800,
&pci_dev_info_18ac_d810,
&pci_dev_info_18ac_d820,
NULL
@@ -120964,6 +127585,14 @@ static const pciDeviceInfo *pci_dev_list_18ec[] = {
};
#endif
#ifdef VENDOR_INCLUDE_NONVIDEO
+static const pciDeviceInfo *pci_dev_list_18f6[] = {
+ &pci_dev_info_18f6_1000,
+ &pci_dev_info_18f6_1050,
+ &pci_dev_info_18f6_2000,
+ NULL
+};
+#endif
+#ifdef VENDOR_INCLUDE_NONVIDEO
static const pciDeviceInfo *pci_dev_list_18f7[] = {
&pci_dev_info_18f7_0001,
&pci_dev_info_18f7_0002,
@@ -120984,6 +127613,7 @@ static const pciDeviceInfo *pci_dev_list_1904[] = {
static const pciDeviceInfo *pci_dev_list_1923[] = {
&pci_dev_info_1923_0040,
&pci_dev_info_1923_0100,
+ &pci_dev_info_1923_0300,
&pci_dev_info_1923_0400,
NULL
};
@@ -121003,7 +127633,18 @@ static const pciDeviceInfo *pci_dev_list_1942[] = {
};
#endif
#ifdef VENDOR_INCLUDE_NONVIDEO
+static const pciDeviceInfo *pci_dev_list_194a[] = {
+ &pci_dev_info_194a_1111,
+ &pci_dev_info_194a_1112,
+ &pci_dev_info_194a_1113,
+ &pci_dev_info_194a_1114,
+ &pci_dev_info_194a_1115,
+ NULL
+};
+#endif
+#ifdef VENDOR_INCLUDE_NONVIDEO
static const pciDeviceInfo *pci_dev_list_1957[] = {
+ &pci_dev_info_1957_0012,
&pci_dev_info_1957_0080,
&pci_dev_info_1957_0081,
&pci_dev_info_1957_0082,
@@ -121023,6 +127664,12 @@ static const pciDeviceInfo *pci_dev_list_1966[] = {
};
#endif
#ifdef VENDOR_INCLUDE_NONVIDEO
+static const pciDeviceInfo *pci_dev_list_1969[] = {
+ &pci_dev_info_1969_1048,
+ NULL
+};
+#endif
+#ifdef VENDOR_INCLUDE_NONVIDEO
static const pciDeviceInfo *pci_dev_list_196a[] = {
&pci_dev_info_196a_0101,
&pci_dev_info_196a_0102,
@@ -121065,11 +127712,19 @@ static const pciDeviceInfo *pci_dev_list_19ae[] = {
#define pci_dev_list_19d4 NULL
#define pci_dev_list_19e2 NULL
#ifdef VENDOR_INCLUDE_NONVIDEO
+static const pciDeviceInfo *pci_dev_list_19e7[] = {
+ &pci_dev_info_19e7_1001,
+ &pci_dev_info_19e7_1002,
+ &pci_dev_info_19e7_1003,
+ &pci_dev_info_19e7_1004,
+ &pci_dev_info_19e7_1005,
+ NULL
+};
+#endif
static const pciDeviceInfo *pci_dev_list_1a03[] = {
&pci_dev_info_1a03_2000,
NULL
};
-#endif
#ifdef VENDOR_INCLUDE_NONVIDEO
static const pciDeviceInfo *pci_dev_list_1a08[] = {
&pci_dev_info_1a08_0000,
@@ -121078,6 +127733,7 @@ static const pciDeviceInfo *pci_dev_list_1a08[] = {
#endif
#define pci_dev_list_1a1d NULL
#define pci_dev_list_1a29 NULL
+#define pci_dev_list_1a51 NULL
#define pci_dev_list_1b13 NULL
#ifdef VENDOR_INCLUDE_NONVIDEO
static const pciDeviceInfo *pci_dev_list_1c1c[] = {
@@ -121470,6 +128126,7 @@ static const pciDeviceInfo *pci_dev_list_6666[] = {
static const pciDeviceInfo *pci_dev_list_7063[] = {
&pci_dev_info_7063_2000,
&pci_dev_info_7063_3000,
+ &pci_dev_info_7063_5500,
NULL
};
#endif
@@ -121586,12 +128243,21 @@ static const pciDeviceInfo *pci_dev_list_8086[] = {
&pci_dev_info_8086_1040,
&pci_dev_info_8086_1043,
&pci_dev_info_8086_1048,
+ &pci_dev_info_8086_1049,
+ &pci_dev_info_8086_104a,
&pci_dev_info_8086_104b,
+ &pci_dev_info_8086_104c,
+ &pci_dev_info_8086_104d,
&pci_dev_info_8086_1050,
&pci_dev_info_8086_1051,
&pci_dev_info_8086_1052,
&pci_dev_info_8086_1053,
+ &pci_dev_info_8086_1054,
+ &pci_dev_info_8086_1055,
+ &pci_dev_info_8086_1056,
+ &pci_dev_info_8086_1057,
&pci_dev_info_8086_1059,
+ &pci_dev_info_8086_105b,
&pci_dev_info_8086_105e,
&pci_dev_info_8086_105f,
&pci_dev_info_8086_1060,
@@ -121628,20 +128294,32 @@ static const pciDeviceInfo *pci_dev_list_8086[] = {
&pci_dev_info_8086_108c,
&pci_dev_info_8086_108e,
&pci_dev_info_8086_108f,
+ &pci_dev_info_8086_1091,
&pci_dev_info_8086_1092,
+ &pci_dev_info_8086_1093,
+ &pci_dev_info_8086_1094,
+ &pci_dev_info_8086_1095,
&pci_dev_info_8086_1096,
&pci_dev_info_8086_1097,
&pci_dev_info_8086_1098,
&pci_dev_info_8086_1099,
&pci_dev_info_8086_109a,
&pci_dev_info_8086_109b,
+ &pci_dev_info_8086_109e,
&pci_dev_info_8086_10a0,
&pci_dev_info_8086_10a1,
+ &pci_dev_info_8086_10a4,
&pci_dev_info_8086_10b0,
&pci_dev_info_8086_10b2,
&pci_dev_info_8086_10b3,
&pci_dev_info_8086_10b4,
&pci_dev_info_8086_10b5,
+ &pci_dev_info_8086_10b9,
+ &pci_dev_info_8086_10ba,
+ &pci_dev_info_8086_10bb,
+ &pci_dev_info_8086_10bc,
+ &pci_dev_info_8086_10c4,
+ &pci_dev_info_8086_10c5,
&pci_dev_info_8086_1107,
&pci_dev_info_8086_1130,
&pci_dev_info_8086_1131,
@@ -121688,6 +128366,7 @@ static const pciDeviceInfo *pci_dev_list_8086[] = {
&pci_dev_info_8086_1a31,
&pci_dev_info_8086_1a38,
&pci_dev_info_8086_1a48,
+ &pci_dev_info_8086_1b48,
&pci_dev_info_8086_2410,
&pci_dev_info_8086_2411,
&pci_dev_info_8086_2412,
@@ -121828,7 +128507,6 @@ static const pciDeviceInfo *pci_dev_list_8086[] = {
&pci_dev_info_8086_25e5,
&pci_dev_info_8086_25e6,
&pci_dev_info_8086_25e7,
- &pci_dev_info_8086_25e8,
&pci_dev_info_8086_25f0,
&pci_dev_info_8086_25f1,
&pci_dev_info_8086_25f3,
@@ -121991,8 +128669,12 @@ static const pciDeviceInfo *pci_dev_list_8086[] = {
&pci_dev_info_8086_2972,
&pci_dev_info_8086_2973,
&pci_dev_info_8086_2974,
+ &pci_dev_info_8086_2975,
&pci_dev_info_8086_2976,
&pci_dev_info_8086_2977,
+ &pci_dev_info_8086_2980,
+ &pci_dev_info_8086_2981,
+ &pci_dev_info_8086_2982,
&pci_dev_info_8086_2990,
&pci_dev_info_8086_2991,
&pci_dev_info_8086_2992,
@@ -122013,6 +128695,10 @@ static const pciDeviceInfo *pci_dev_list_8086[] = {
&pci_dev_info_8086_2a01,
&pci_dev_info_8086_2a02,
&pci_dev_info_8086_2a03,
+ &pci_dev_info_8086_2a04,
+ &pci_dev_info_8086_2a05,
+ &pci_dev_info_8086_2a06,
+ &pci_dev_info_8086_2a07,
&pci_dev_info_8086_3092,
&pci_dev_info_8086_3200,
&pci_dev_info_8086_3340,
@@ -122051,11 +128737,18 @@ static const pciDeviceInfo *pci_dev_list_8086[] = {
&pci_dev_info_8086_359a,
&pci_dev_info_8086_359b,
&pci_dev_info_8086_359e,
+ &pci_dev_info_8086_35b0,
+ &pci_dev_info_8086_35b1,
+ &pci_dev_info_8086_35b5,
+ &pci_dev_info_8086_35b6,
+ &pci_dev_info_8086_35b7,
+ &pci_dev_info_8086_35c8,
&pci_dev_info_8086_4220,
&pci_dev_info_8086_4222,
&pci_dev_info_8086_4223,
&pci_dev_info_8086_4224,
&pci_dev_info_8086_4227,
+ &pci_dev_info_8086_5001,
&pci_dev_info_8086_5200,
&pci_dev_info_8086_5201,
&pci_dev_info_8086_530d,
@@ -122126,6 +128819,12 @@ static const pciDeviceInfo *pci_dev_list_8086[] = {
};
#define pci_dev_list_8401 NULL
#ifdef VENDOR_INCLUDE_NONVIDEO
+static const pciDeviceInfo *pci_dev_list_8686[] = {
+ &pci_dev_info_8686_1010,
+ NULL
+};
+#endif
+#ifdef VENDOR_INCLUDE_NONVIDEO
static const pciDeviceInfo *pci_dev_list_8800[] = {
&pci_dev_info_8800_2008,
NULL
@@ -122259,6 +128958,14 @@ static const pciDeviceInfo *pci_dev_list_9005[] = {
&pci_dev_info_9005_0284,
&pci_dev_info_9005_0285,
&pci_dev_info_9005_0286,
+ &pci_dev_info_9005_0410,
+ &pci_dev_info_9005_0412,
+ &pci_dev_info_9005_041e,
+ &pci_dev_info_9005_041f,
+ &pci_dev_info_9005_0430,
+ &pci_dev_info_9005_0432,
+ &pci_dev_info_9005_043e,
+ &pci_dev_info_9005_043f,
&pci_dev_info_9005_0500,
&pci_dev_info_9005_0503,
&pci_dev_info_9005_0910,
@@ -122355,10 +129062,12 @@ static const pciDeviceInfo *pci_dev_list_aecb[] = {
#endif
#ifdef VENDOR_INCLUDE_NONVIDEO
static const pciDeviceInfo *pci_dev_list_affe[] = {
+ &pci_dev_info_affe_02e1,
&pci_dev_info_affe_dead,
NULL
};
#endif
+#define pci_dev_list_b10b NULL
#define pci_dev_list_b1b3 NULL
#define pci_dev_list_bd11 NULL
#define pci_dev_list_c001 NULL
@@ -122373,6 +129082,7 @@ static const pciDeviceInfo *pci_dev_list_cafe[] = {
};
#endif
#define pci_dev_list_cccc NULL
+#define pci_dev_list_ccec NULL
#ifdef VENDOR_INCLUDE_NONVIDEO
static const pciDeviceInfo *pci_dev_list_cddd[] = {
&pci_dev_info_cddd_0101,
@@ -122588,12 +129298,18 @@ static const pciVendorInfo pciVendorInfoList[] = {
{0x045e, pci_vendor_045e, pci_dev_list_045e},
#endif
#ifdef VENDOR_INCLUDE_NONVIDEO
+ {0x0482, pci_vendor_0482, pci_dev_list_0482},
+#endif
+#ifdef VENDOR_INCLUDE_NONVIDEO
{0x04cf, pci_vendor_04cf, pci_dev_list_04cf},
#endif
#ifdef VENDOR_INCLUDE_NONVIDEO
{0x050d, pci_vendor_050d, pci_dev_list_050d},
#endif
#ifdef VENDOR_INCLUDE_NONVIDEO
+ {0x05a9, pci_vendor_05a9, pci_dev_list_05a9},
+#endif
+#ifdef VENDOR_INCLUDE_NONVIDEO
{0x05e3, pci_vendor_05e3, pci_dev_list_05e3},
#endif
#ifdef VENDOR_INCLUDE_NONVIDEO
@@ -122615,6 +129331,9 @@ static const pciVendorInfo pciVendorInfoList[] = {
{0x0925, pci_vendor_0925, pci_dev_list_0925},
#endif
#ifdef VENDOR_INCLUDE_NONVIDEO
+ {0x093a, pci_vendor_093a, pci_dev_list_093a},
+#endif
+#ifdef VENDOR_INCLUDE_NONVIDEO
{0x09c1, pci_vendor_09c1, pci_dev_list_09c1},
#endif
#ifdef VENDOR_INCLUDE_NONVIDEO
@@ -122626,6 +129345,9 @@ static const pciVendorInfo pciVendorInfoList[] = {
#ifdef VENDOR_INCLUDE_NONVIDEO
{0x0b49, pci_vendor_0b49, pci_dev_list_0b49},
#endif
+#ifdef VENDOR_INCLUDE_NONVIDEO
+ {0x0ccd, pci_vendor_0ccd, pci_dev_list_0ccd},
+#endif
{0x0e11, pci_vendor_0e11, pci_dev_list_0e11},
#ifdef VENDOR_INCLUDE_NONVIDEO
{0x0e21, pci_vendor_0e21, pci_dev_list_0e21},
@@ -122634,6 +129356,9 @@ static const pciVendorInfo pciVendorInfoList[] = {
{0x0e55, pci_vendor_0e55, pci_dev_list_0e55},
#endif
#ifdef VENDOR_INCLUDE_NONVIDEO
+ {0x0eac, pci_vendor_0eac, pci_dev_list_0eac},
+#endif
+#ifdef VENDOR_INCLUDE_NONVIDEO
{0x1000, pci_vendor_1000, pci_dev_list_1000},
#endif
#ifdef VENDOR_INCLUDE_NONVIDEO
@@ -127197,6 +133922,9 @@ static const pciVendorInfo pciVendorInfoList[] = {
{0x16e3, pci_vendor_16e3, pci_dev_list_16e3},
#endif
#ifdef VENDOR_INCLUDE_NONVIDEO
+ {0x16e5, pci_vendor_16e5, pci_dev_list_16e5},
+#endif
+#ifdef VENDOR_INCLUDE_NONVIDEO
{0x16ec, pci_vendor_16ec, pci_dev_list_16ec},
#endif
#ifdef VENDOR_INCLUDE_NONVIDEO
@@ -127311,9 +134039,18 @@ static const pciVendorInfo pciVendorInfoList[] = {
{0x17d5, pci_vendor_17d5, pci_dev_list_17d5},
#endif
#ifdef VENDOR_INCLUDE_NONVIDEO
+ {0x17db, pci_vendor_17db, pci_dev_list_17db},
+#endif
+#ifdef VENDOR_INCLUDE_NONVIDEO
{0x17de, pci_vendor_17de, pci_dev_list_17de},
#endif
#ifdef VENDOR_INCLUDE_NONVIDEO
+ {0x17e4, pci_vendor_17e4, pci_dev_list_17e4},
+#endif
+#ifdef VENDOR_INCLUDE_NONVIDEO
+ {0x17e6, pci_vendor_17e6, pci_dev_list_17e6},
+#endif
+#ifdef VENDOR_INCLUDE_NONVIDEO
{0x17ee, pci_vendor_17ee, pci_dev_list_17ee},
#endif
#ifdef VENDOR_INCLUDE_NONVIDEO
@@ -127356,6 +134093,9 @@ static const pciVendorInfo pciVendorInfoList[] = {
{0x1849, pci_vendor_1849, pci_dev_list_1849},
#endif
#ifdef VENDOR_INCLUDE_NONVIDEO
+ {0x184a, pci_vendor_184a, pci_dev_list_184a},
+#endif
+#ifdef VENDOR_INCLUDE_NONVIDEO
{0x1851, pci_vendor_1851, pci_dev_list_1851},
#endif
#ifdef VENDOR_INCLUDE_NONVIDEO
@@ -127383,6 +134123,9 @@ static const pciVendorInfo pciVendorInfoList[] = {
{0x187e, pci_vendor_187e, pci_dev_list_187e},
#endif
#ifdef VENDOR_INCLUDE_NONVIDEO
+ {0x1885, pci_vendor_1885, pci_dev_list_1885},
+#endif
+#ifdef VENDOR_INCLUDE_NONVIDEO
{0x1888, pci_vendor_1888, pci_dev_list_1888},
#endif
#ifdef VENDOR_INCLUDE_NONVIDEO
@@ -127434,6 +134177,9 @@ static const pciVendorInfo pciVendorInfoList[] = {
{0x18ec, pci_vendor_18ec, pci_dev_list_18ec},
#endif
#ifdef VENDOR_INCLUDE_NONVIDEO
+ {0x18f6, pci_vendor_18f6, pci_dev_list_18f6},
+#endif
+#ifdef VENDOR_INCLUDE_NONVIDEO
{0x18f7, pci_vendor_18f7, pci_dev_list_18f7},
#endif
#ifdef VENDOR_INCLUDE_NONVIDEO
@@ -127458,6 +134204,9 @@ static const pciVendorInfo pciVendorInfoList[] = {
{0x1942, pci_vendor_1942, pci_dev_list_1942},
#endif
#ifdef VENDOR_INCLUDE_NONVIDEO
+ {0x194a, pci_vendor_194a, pci_dev_list_194a},
+#endif
+#ifdef VENDOR_INCLUDE_NONVIDEO
{0x1957, pci_vendor_1957, pci_dev_list_1957},
#endif
#ifdef VENDOR_INCLUDE_NONVIDEO
@@ -127467,6 +134216,9 @@ static const pciVendorInfo pciVendorInfoList[] = {
{0x1966, pci_vendor_1966, pci_dev_list_1966},
#endif
#ifdef VENDOR_INCLUDE_NONVIDEO
+ {0x1969, pci_vendor_1969, pci_dev_list_1969},
+#endif
+#ifdef VENDOR_INCLUDE_NONVIDEO
{0x196a, pci_vendor_196a, pci_dev_list_196a},
#endif
#ifdef VENDOR_INCLUDE_NONVIDEO
@@ -127500,8 +134252,9 @@ static const pciVendorInfo pciVendorInfoList[] = {
{0x19e2, pci_vendor_19e2, pci_dev_list_19e2},
#endif
#ifdef VENDOR_INCLUDE_NONVIDEO
- {0x1a03, pci_vendor_1a03, pci_dev_list_1a03},
+ {0x19e7, pci_vendor_19e7, pci_dev_list_19e7},
#endif
+ {0x1a03, pci_vendor_1a03, pci_dev_list_1a03},
#ifdef VENDOR_INCLUDE_NONVIDEO
{0x1a08, pci_vendor_1a08, pci_dev_list_1a08},
#endif
@@ -127512,6 +134265,9 @@ static const pciVendorInfo pciVendorInfoList[] = {
{0x1a29, pci_vendor_1a29, pci_dev_list_1a29},
#endif
#ifdef VENDOR_INCLUDE_NONVIDEO
+ {0x1a51, pci_vendor_1a51, pci_dev_list_1a51},
+#endif
+#ifdef VENDOR_INCLUDE_NONVIDEO
{0x1b13, pci_vendor_1b13, pci_dev_list_1b13},
#endif
#ifdef VENDOR_INCLUDE_NONVIDEO
@@ -127739,6 +134495,9 @@ static const pciVendorInfo pciVendorInfoList[] = {
{0x8401, pci_vendor_8401, pci_dev_list_8401},
#endif
#ifdef VENDOR_INCLUDE_NONVIDEO
+ {0x8686, pci_vendor_8686, pci_dev_list_8686},
+#endif
+#ifdef VENDOR_INCLUDE_NONVIDEO
{0x8800, pci_vendor_8800, pci_dev_list_8800},
#endif
#ifdef VENDOR_INCLUDE_NONVIDEO
@@ -127820,6 +134579,9 @@ static const pciVendorInfo pciVendorInfoList[] = {
{0xaffe, pci_vendor_affe, pci_dev_list_affe},
#endif
#ifdef VENDOR_INCLUDE_NONVIDEO
+ {0xb10b, pci_vendor_b10b, pci_dev_list_b10b},
+#endif
+#ifdef VENDOR_INCLUDE_NONVIDEO
{0xb1b3, pci_vendor_b1b3, pci_dev_list_b1b3},
#endif
#ifdef VENDOR_INCLUDE_NONVIDEO
@@ -127847,6 +134609,9 @@ static const pciVendorInfo pciVendorInfoList[] = {
{0xcccc, pci_vendor_cccc, pci_dev_list_cccc},
#endif
#ifdef VENDOR_INCLUDE_NONVIDEO
+ {0xccec, pci_vendor_ccec, pci_dev_list_ccec},
+#endif
+#ifdef VENDOR_INCLUDE_NONVIDEO
{0xcddd, pci_vendor_cddd, pci_dev_list_cddd},
#endif
#ifdef VENDOR_INCLUDE_NONVIDEO
@@ -127992,12 +134757,18 @@ static const pciVendorSubsysInfo pciVendorSubsysInfoList[] = {
{0x045e, pci_vendor_045e, pci_ss_list_045e},
#endif
#ifdef VENDOR_INCLUDE_NONVIDEO
+ {0x0482, pci_vendor_0482, pci_ss_list_0482},
+#endif
+#ifdef VENDOR_INCLUDE_NONVIDEO
{0x04cf, pci_vendor_04cf, pci_ss_list_04cf},
#endif
#ifdef VENDOR_INCLUDE_NONVIDEO
{0x050d, pci_vendor_050d, pci_ss_list_050d},
#endif
#ifdef VENDOR_INCLUDE_NONVIDEO
+ {0x05a9, pci_vendor_05a9, pci_ss_list_05a9},
+#endif
+#ifdef VENDOR_INCLUDE_NONVIDEO
{0x05e3, pci_vendor_05e3, pci_ss_list_05e3},
#endif
#ifdef VENDOR_INCLUDE_NONVIDEO
@@ -128019,6 +134790,9 @@ static const pciVendorSubsysInfo pciVendorSubsysInfoList[] = {
{0x0925, pci_vendor_0925, pci_ss_list_0925},
#endif
#ifdef VENDOR_INCLUDE_NONVIDEO
+ {0x093a, pci_vendor_093a, pci_ss_list_093a},
+#endif
+#ifdef VENDOR_INCLUDE_NONVIDEO
{0x09c1, pci_vendor_09c1, pci_ss_list_09c1},
#endif
#ifdef VENDOR_INCLUDE_NONVIDEO
@@ -128030,6 +134804,9 @@ static const pciVendorSubsysInfo pciVendorSubsysInfoList[] = {
#ifdef VENDOR_INCLUDE_NONVIDEO
{0x0b49, pci_vendor_0b49, pci_ss_list_0b49},
#endif
+#ifdef VENDOR_INCLUDE_NONVIDEO
+ {0x0ccd, pci_vendor_0ccd, pci_ss_list_0ccd},
+#endif
{0x0e11, pci_vendor_0e11, pci_ss_list_0e11},
#ifdef VENDOR_INCLUDE_NONVIDEO
{0x0e21, pci_vendor_0e21, pci_ss_list_0e21},
@@ -128038,6 +134815,9 @@ static const pciVendorSubsysInfo pciVendorSubsysInfoList[] = {
{0x0e55, pci_vendor_0e55, pci_ss_list_0e55},
#endif
#ifdef VENDOR_INCLUDE_NONVIDEO
+ {0x0eac, pci_vendor_0eac, pci_ss_list_0eac},
+#endif
+#ifdef VENDOR_INCLUDE_NONVIDEO
{0x1000, pci_vendor_1000, pci_ss_list_1000},
#endif
#ifdef VENDOR_INCLUDE_NONVIDEO
@@ -132601,6 +139381,9 @@ static const pciVendorSubsysInfo pciVendorSubsysInfoList[] = {
{0x16e3, pci_vendor_16e3, pci_ss_list_16e3},
#endif
#ifdef VENDOR_INCLUDE_NONVIDEO
+ {0x16e5, pci_vendor_16e5, pci_ss_list_16e5},
+#endif
+#ifdef VENDOR_INCLUDE_NONVIDEO
{0x16ec, pci_vendor_16ec, pci_ss_list_16ec},
#endif
#ifdef VENDOR_INCLUDE_NONVIDEO
@@ -132715,9 +139498,18 @@ static const pciVendorSubsysInfo pciVendorSubsysInfoList[] = {
{0x17d5, pci_vendor_17d5, pci_ss_list_17d5},
#endif
#ifdef VENDOR_INCLUDE_NONVIDEO
+ {0x17db, pci_vendor_17db, pci_ss_list_17db},
+#endif
+#ifdef VENDOR_INCLUDE_NONVIDEO
{0x17de, pci_vendor_17de, pci_ss_list_17de},
#endif
#ifdef VENDOR_INCLUDE_NONVIDEO
+ {0x17e4, pci_vendor_17e4, pci_ss_list_17e4},
+#endif
+#ifdef VENDOR_INCLUDE_NONVIDEO
+ {0x17e6, pci_vendor_17e6, pci_ss_list_17e6},
+#endif
+#ifdef VENDOR_INCLUDE_NONVIDEO
{0x17ee, pci_vendor_17ee, pci_ss_list_17ee},
#endif
#ifdef VENDOR_INCLUDE_NONVIDEO
@@ -132760,6 +139552,9 @@ static const pciVendorSubsysInfo pciVendorSubsysInfoList[] = {
{0x1849, pci_vendor_1849, pci_ss_list_1849},
#endif
#ifdef VENDOR_INCLUDE_NONVIDEO
+ {0x184a, pci_vendor_184a, pci_ss_list_184a},
+#endif
+#ifdef VENDOR_INCLUDE_NONVIDEO
{0x1851, pci_vendor_1851, pci_ss_list_1851},
#endif
#ifdef VENDOR_INCLUDE_NONVIDEO
@@ -132787,6 +139582,9 @@ static const pciVendorSubsysInfo pciVendorSubsysInfoList[] = {
{0x187e, pci_vendor_187e, pci_ss_list_187e},
#endif
#ifdef VENDOR_INCLUDE_NONVIDEO
+ {0x1885, pci_vendor_1885, pci_ss_list_1885},
+#endif
+#ifdef VENDOR_INCLUDE_NONVIDEO
{0x1888, pci_vendor_1888, pci_ss_list_1888},
#endif
#ifdef VENDOR_INCLUDE_NONVIDEO
@@ -132838,6 +139636,9 @@ static const pciVendorSubsysInfo pciVendorSubsysInfoList[] = {
{0x18ec, pci_vendor_18ec, pci_ss_list_18ec},
#endif
#ifdef VENDOR_INCLUDE_NONVIDEO
+ {0x18f6, pci_vendor_18f6, pci_ss_list_18f6},
+#endif
+#ifdef VENDOR_INCLUDE_NONVIDEO
{0x18f7, pci_vendor_18f7, pci_ss_list_18f7},
#endif
#ifdef VENDOR_INCLUDE_NONVIDEO
@@ -132862,6 +139663,9 @@ static const pciVendorSubsysInfo pciVendorSubsysInfoList[] = {
{0x1942, pci_vendor_1942, pci_ss_list_1942},
#endif
#ifdef VENDOR_INCLUDE_NONVIDEO
+ {0x194a, pci_vendor_194a, pci_ss_list_194a},
+#endif
+#ifdef VENDOR_INCLUDE_NONVIDEO
{0x1957, pci_vendor_1957, pci_ss_list_1957},
#endif
#ifdef VENDOR_INCLUDE_NONVIDEO
@@ -132871,6 +139675,9 @@ static const pciVendorSubsysInfo pciVendorSubsysInfoList[] = {
{0x1966, pci_vendor_1966, pci_ss_list_1966},
#endif
#ifdef VENDOR_INCLUDE_NONVIDEO
+ {0x1969, pci_vendor_1969, pci_ss_list_1969},
+#endif
+#ifdef VENDOR_INCLUDE_NONVIDEO
{0x196a, pci_vendor_196a, pci_ss_list_196a},
#endif
#ifdef VENDOR_INCLUDE_NONVIDEO
@@ -132904,8 +139711,9 @@ static const pciVendorSubsysInfo pciVendorSubsysInfoList[] = {
{0x19e2, pci_vendor_19e2, pci_ss_list_19e2},
#endif
#ifdef VENDOR_INCLUDE_NONVIDEO
- {0x1a03, pci_vendor_1a03, pci_ss_list_1a03},
+ {0x19e7, pci_vendor_19e7, pci_ss_list_19e7},
#endif
+ {0x1a03, pci_vendor_1a03, pci_ss_list_1a03},
#ifdef VENDOR_INCLUDE_NONVIDEO
{0x1a08, pci_vendor_1a08, pci_ss_list_1a08},
#endif
@@ -132916,6 +139724,9 @@ static const pciVendorSubsysInfo pciVendorSubsysInfoList[] = {
{0x1a29, pci_vendor_1a29, pci_ss_list_1a29},
#endif
#ifdef VENDOR_INCLUDE_NONVIDEO
+ {0x1a51, pci_vendor_1a51, pci_ss_list_1a51},
+#endif
+#ifdef VENDOR_INCLUDE_NONVIDEO
{0x1b13, pci_vendor_1b13, pci_ss_list_1b13},
#endif
#ifdef VENDOR_INCLUDE_NONVIDEO
@@ -133143,6 +139954,9 @@ static const pciVendorSubsysInfo pciVendorSubsysInfoList[] = {
{0x8401, pci_vendor_8401, pci_ss_list_8401},
#endif
#ifdef VENDOR_INCLUDE_NONVIDEO
+ {0x8686, pci_vendor_8686, pci_ss_list_8686},
+#endif
+#ifdef VENDOR_INCLUDE_NONVIDEO
{0x8800, pci_vendor_8800, pci_ss_list_8800},
#endif
#ifdef VENDOR_INCLUDE_NONVIDEO
@@ -133224,6 +140038,9 @@ static const pciVendorSubsysInfo pciVendorSubsysInfoList[] = {
{0xaffe, pci_vendor_affe, pci_ss_list_affe},
#endif
#ifdef VENDOR_INCLUDE_NONVIDEO
+ {0xb10b, pci_vendor_b10b, pci_ss_list_b10b},
+#endif
+#ifdef VENDOR_INCLUDE_NONVIDEO
{0xb1b3, pci_vendor_b1b3, pci_ss_list_b1b3},
#endif
#ifdef VENDOR_INCLUDE_NONVIDEO
@@ -133251,6 +140068,9 @@ static const pciVendorSubsysInfo pciVendorSubsysInfoList[] = {
{0xcccc, pci_vendor_cccc, pci_ss_list_cccc},
#endif
#ifdef VENDOR_INCLUDE_NONVIDEO
+ {0xccec, pci_vendor_ccec, pci_ss_list_ccec},
+#endif
+#ifdef VENDOR_INCLUDE_NONVIDEO
{0xcddd, pci_vendor_cddd, pci_ss_list_cddd},
#endif
#ifdef VENDOR_INCLUDE_NONVIDEO
diff --git a/hw/xfree86/scanpci/xf86PciStr.h b/hw/xfree86/scanpci/xf86PciStr.h
index 307dfacdf..41b039c2c 100644
--- a/hw/xfree86/scanpci/xf86PciStr.h
+++ b/hw/xfree86/scanpci/xf86PciStr.h
@@ -1,4 +1,3 @@
-/* $XFree86: xc/programs/Xserver/hw/xfree86/scanpci/xf86PciStr.h,v 1.2 2003/08/24 17:37:10 dawes Exp $ */
/*
* Copyright (c) 2002 by The XFree86 Project, Inc.
*
diff --git a/hw/xfree86/scanpci/xf86ScanPci.h b/hw/xfree86/scanpci/xf86ScanPci.h
index 9107b9e32..93ecee8dc 100644
--- a/hw/xfree86/scanpci/xf86ScanPci.h
+++ b/hw/xfree86/scanpci/xf86ScanPci.h
@@ -1,4 +1,3 @@
-/* $XFree86: xc/programs/Xserver/hw/xfree86/scanpci/xf86ScanPci.h,v 1.3 2003/08/24 17:37:10 dawes Exp $ */
/*
* Copyright (c) 2000-2002 by The XFree86 Project, Inc.
*
diff --git a/hw/xfree86/shadowfb/Makefile.am b/hw/xfree86/shadowfb/Makefile.am
index c373e8178..02d2dd4ea 100644
--- a/hw/xfree86/shadowfb/Makefile.am
+++ b/hw/xfree86/shadowfb/Makefile.am
@@ -6,4 +6,4 @@ sdk_HEADERS = shadowfb.h
INCLUDES = $(XORG_INCS)
-AM_CFLAGS = $(XORG_CFLAGS) @SERVER_DEFINES@ @MODULE_DEFINES@ @LOADER_DEFINES@
+AM_CFLAGS = $(DIX_CFLAGS) $(XORG_CFLAGS)
diff --git a/hw/xfree86/shadowfb/shadow.c b/hw/xfree86/shadowfb/shadow.c
index cea2571b3..2fc02a7b8 100644
--- a/hw/xfree86/shadowfb/shadow.c
+++ b/hw/xfree86/shadowfb/shadow.c
@@ -6,7 +6,6 @@
Pre-fb-write callbacks and RENDER support - Nolan Leake (nolan@vmware.com)
*/
-/* $XFree86: xc/programs/Xserver/hw/xfree86/shadowfb/shadow.c,v 1.20tsi Exp $ */
#ifdef HAVE_XORG_CONFIG_H
#include <xorg-config.h>
diff --git a/hw/xfree86/shadowfb/shadowfb.h b/hw/xfree86/shadowfb/shadowfb.h
index e42822600..6c9635879 100644
--- a/hw/xfree86/shadowfb/shadowfb.h
+++ b/hw/xfree86/shadowfb/shadowfb.h
@@ -1,4 +1,3 @@
-/* $XFree86: xc/programs/Xserver/hw/xfree86/shadowfb/shadowfb.h,v 1.3 2002/10/16 22:12:54 alanh Exp $ */
#ifndef _SHADOWFB_H
#define _SHADOWFB_H
diff --git a/hw/xfree86/utils/cvt/Makefile.am b/hw/xfree86/utils/cvt/Makefile.am
index 9dcff80a3..365c6cb88 100644
--- a/hw/xfree86/utils/cvt/Makefile.am
+++ b/hw/xfree86/utils/cvt/Makefile.am
@@ -31,9 +31,10 @@ bin_PROGRAMS = cvt
INCLUDES = $(XORG_INCS)
DUMMYLIB_SRCDIR = $(XFREE86_SRCDIR)/dummylib
-cvt_SOURCES = cvt.c
-cvt_CFLAGS = $(XORG_CFLAGS)
-cvt_LDADD = ../../dummylib/libdummy-nonserver.a
+# gah
+cvt_SOURCES = cvt.c $(top_srcdir)/hw/xfree86/common/xf86cvt.c
+cvt_CFLAGS = $(DIX_CFLAGS) $(XORG_CFLAGS)
+cvt_LDADD = $(top_builddir)/hw/xfree86/dummylib/libdummy-nonserver.a
man1_MANS = cvt.man
diff --git a/hw/xfree86/utils/cvt/cvt.c b/hw/xfree86/utils/cvt/cvt.c
index b039ae6a0..fee4f7c3e 100644
--- a/hw/xfree86/utils/cvt/cvt.c
+++ b/hw/xfree86/utils/cvt/cvt.c
@@ -26,269 +26,6 @@
#include "xf86.h"
/*
- * Generate a CVT standard mode from HDisplay, VDisplay and VRefresh.
- *
- * These calculations are stolen from the CVT calculation spreadsheet written
- * by Graham Loveridge. He seems to be claiming no copyright and there seems to
- * be no license attached to this. He apparently just wants to see his name
- * mentioned.
- *
- * This file can be found at http://www.vesa.org/Public/CVT/CVTd6r1.xls
- *
- * Comments and structure corresponds to the comments and structure of the xls.
- * This should ease importing of future changes to the standard (not very
- * likely though).
- *
- * About margins; i'm sure that they are to be the bit between HDisplay and
- * HBlankStart, HBlankEnd and HTotal, VDisplay and VBlankStart, VBlankEnd and
- * VTotal, where the overscan colour is shown. FB seems to call _all_ blanking
- * outside sync "margin" for some reason. Since we prefer seeing proper
- * blanking instead of the overscan colour, and since the Crtc* values will
- * probably get altered after us, we will disable margins altogether. With
- * these calculations, Margins will plainly expand H/VDisplay, and we don't
- * want that. -- libv
- *
- */
-static DisplayModePtr
-xf86CVTMode(int HDisplay, int VDisplay, float VRefresh, Bool Reduced,
- Bool Interlaced)
-{
- DisplayModeRec *Mode = xnfalloc(sizeof(DisplayModeRec));
-
- /* 1) top/bottom margin size (% of height) - default: 1.8 */
-#define CVT_MARGIN_PERCENTAGE 1.8
-
- /* 2) character cell horizontal granularity (pixels) - default 8 */
-#define CVT_H_GRANULARITY 8
-
- /* 4) Minimum vertical porch (lines) - default 3 */
-#define CVT_MIN_V_PORCH 3
-
- /* 4) Minimum number of vertical back porch lines - default 6 */
-#define CVT_MIN_V_BPORCH 6
-
- /* Pixel Clock step (kHz) */
-#define CVT_CLOCK_STEP 250
-
- Bool Margins = FALSE;
- float VFieldRate, HPeriod;
- int HDisplayRnd, HMargin;
- int VDisplayRnd, VMargin, VSync;
- float Interlace; /* Please rename this */
-
- memset(Mode, 0, sizeof(DisplayModeRec));
-
- /* CVT default is 60.0Hz */
- if (!VRefresh)
- VRefresh = 60.0;
-
- /* 1. Required field rate */
- if (Interlaced)
- VFieldRate = VRefresh * 2;
- else
- VFieldRate = VRefresh;
-
- /* 2. Horizontal pixels */
- HDisplayRnd = HDisplay - (HDisplay % CVT_H_GRANULARITY);
-
- /* 3. Determine left and right borders */
- if (Margins) {
- /* right margin is actually exactly the same as left */
- HMargin = (((float) HDisplayRnd) * CVT_MARGIN_PERCENTAGE / 100.0);
- HMargin -= HMargin % CVT_H_GRANULARITY;
- } else
- HMargin = 0;
-
- /* 4. Find total active pixels */
- Mode->HDisplay = HDisplayRnd + 2*HMargin;
-
- /* 5. Find number of lines per field */
- if (Interlaced)
- VDisplayRnd = VDisplay / 2;
- else
- VDisplayRnd = VDisplay;
-
- /* 6. Find top and bottom margins */
- /* nope. */
- if (Margins)
- /* top and bottom margins are equal again. */
- VMargin = (((float) VDisplayRnd) * CVT_MARGIN_PERCENTAGE / 100.0);
- else
- VMargin = 0;
-
- Mode->VDisplay = VDisplay + 2*VMargin;
-
- /* 7. Interlace */
- if (Interlaced)
- Interlace = 0.5;
- else
- Interlace = 0.0;
-
- /* Determine VSync Width from aspect ratio */
- if (!(VDisplay % 3) && ((VDisplay * 4 / 3) == HDisplay))
- VSync = 4;
- else if (!(VDisplay % 9) && ((VDisplay * 16 / 9) == HDisplay))
- VSync = 5;
- else if (!(VDisplay % 10) && ((VDisplay * 16 / 10) == HDisplay))
- VSync = 6;
- else if (!(VDisplay % 4) && ((VDisplay * 5 / 4) == HDisplay))
- VSync = 7;
- else if (!(VDisplay % 9) && ((VDisplay * 15 / 9) == HDisplay))
- VSync = 7;
- else /* Custom */
- VSync = 10;
-
- if (!Reduced) { /* simplified GTF calculation */
-
- /* 4) Minimum time of vertical sync + back porch interval (µs)
- * default 550.0 */
-#define CVT_MIN_VSYNC_BP 550.0
-
- /* 3) Nominal HSync width (% of line period) - default 8 */
-#define CVT_HSYNC_PERCENTAGE 8
-
- float HBlankPercentage;
- int VSyncAndBackPorch, VBackPorch;
- int HBlank;
-
- /* 8. Estimated Horizontal period */
- HPeriod = ((float) (1000000.0 / VFieldRate - CVT_MIN_VSYNC_BP)) /
- (VDisplayRnd + 2 * VMargin + CVT_MIN_V_PORCH + Interlace);
-
- /* 9. Find number of lines in sync + backporch */
- if (((int)(CVT_MIN_VSYNC_BP / HPeriod) + 1) < (VSync + CVT_MIN_V_PORCH))
- VSyncAndBackPorch = VSync + CVT_MIN_V_PORCH;
- else
- VSyncAndBackPorch = (int)(CVT_MIN_VSYNC_BP / HPeriod) + 1;
-
- /* 10. Find number of lines in back porch */
- VBackPorch = VSyncAndBackPorch - VSync;
-
- /* 11. Find total number of lines in vertical field */
- Mode->VTotal = VDisplayRnd + 2 * VMargin + VSyncAndBackPorch + Interlace
- + CVT_MIN_V_PORCH;
-
- /* 5) Definition of Horizontal blanking time limitation */
- /* Gradient (%/kHz) - default 600 */
-#define CVT_M_FACTOR 600
-
- /* Offset (%) - default 40 */
-#define CVT_C_FACTOR 40
-
- /* Blanking time scaling factor - default 128 */
-#define CVT_K_FACTOR 128
-
- /* Scaling factor weighting - default 20 */
-#define CVT_J_FACTOR 20
-
-#define CVT_M_PRIME CVT_M_FACTOR * CVT_K_FACTOR / 256
-#define CVT_C_PRIME (CVT_C_FACTOR - CVT_J_FACTOR) * CVT_K_FACTOR / 256 + \
- CVT_J_FACTOR
-
- /* 12. Find ideal blanking duty cycle from formula */
- HBlankPercentage = CVT_C_PRIME - CVT_M_PRIME * HPeriod/1000.0;
-
- /* 13. Blanking time */
- if (HBlankPercentage < 20)
- HBlankPercentage = 20;
-
- HBlank = Mode->HDisplay * HBlankPercentage/(100.0 - HBlankPercentage);
- HBlank -= HBlank % (2*CVT_H_GRANULARITY);
-
- /* 14. Find total number of pixels in a line. */
- Mode->HTotal = Mode->HDisplay + HBlank;
-
- /* Fill in HSync values */
- Mode->HSyncEnd = Mode->HDisplay + HBlank / 2;
-
- Mode->HSyncStart = Mode->HSyncEnd -
- (Mode->HTotal * CVT_HSYNC_PERCENTAGE) / 100;
- Mode->HSyncStart += CVT_H_GRANULARITY -
- Mode->HSyncStart % CVT_H_GRANULARITY;
-
- /* Fill in VSync values */
- Mode->VSyncStart = Mode->VDisplay + CVT_MIN_V_PORCH;
- Mode->VSyncEnd = Mode->VSyncStart + VSync;
-
- } else { /* Reduced blanking */
- /* Minimum vertical blanking interval time (µs) - default 460 */
-#define CVT_RB_MIN_VBLANK 460.0
-
- /* Fixed number of clocks for horizontal sync */
-#define CVT_RB_H_SYNC 32.0
-
- /* Fixed number of clocks for horizontal blanking */
-#define CVT_RB_H_BLANK 160.0
-
- /* Fixed number of lines for vertical front porch - default 3 */
-#define CVT_RB_VFPORCH 3
-
- int VBILines;
-
- /* 8. Estimate Horizontal period. */
- HPeriod = ((float) (1000000.0 / VFieldRate - CVT_RB_MIN_VBLANK)) /
- (VDisplayRnd + 2*VMargin);
-
- /* 9. Find number of lines in vertical blanking */
- VBILines = ((float) CVT_RB_MIN_VBLANK) / HPeriod + 1;
-
- /* 10. Check if vertical blanking is sufficient */
- if (VBILines < (CVT_RB_VFPORCH + VSync + CVT_MIN_V_BPORCH))
- VBILines = CVT_RB_VFPORCH + VSync + CVT_MIN_V_BPORCH;
-
- /* 11. Find total number of lines in vertical field */
- Mode->VTotal = VDisplayRnd + 2 * VMargin + Interlace + VBILines;
-
- /* 12. Find total number of pixels in a line */
- Mode->HTotal = Mode->HDisplay + CVT_RB_H_BLANK;
-
- /* Fill in HSync values */
- Mode->HSyncEnd = Mode->HDisplay + CVT_RB_H_BLANK / 2;
- Mode->HSyncStart = Mode->HSyncEnd - CVT_RB_H_SYNC;
-
- /* Fill in VSync values */
- Mode->VSyncStart = Mode->VDisplay + CVT_RB_VFPORCH;
- Mode->VSyncEnd = Mode->VSyncStart + VSync;
- }
-
- /* 15/13. Find pixel clock frequency (kHz for xf86) */
- Mode->Clock = Mode->HTotal * 1000.0 / HPeriod;
- Mode->Clock -= Mode->Clock % CVT_CLOCK_STEP;
-
- /* 16/14. Find actual Horizontal Frequency (kHz) */
- Mode->HSync = ((float) Mode->Clock) / ((float) Mode->HTotal);
-
- /* 17/15. Find actual Field rate */
- Mode->VRefresh = (1000.0 * ((float) Mode->Clock)) /
- ((float) (Mode->HTotal * Mode->VTotal));
-
- /* 18/16. Find actual vertical frame frequency */
- /* ignore - just set the mode flag for interlaced */
- if (Interlaced)
- Mode->VTotal *= 2;
-
- {
- char Name[256];
- Name[0] = 0;
-
- snprintf(Name, 256, "%dx%d", HDisplay, VDisplay);
-
- Mode->name = xnfalloc(strlen(Name) + 1);
- memcpy(Mode->name, Name, strlen(Name) + 1);
- }
-
- if (Reduced)
- Mode->Flags |= V_PHSYNC | V_NVSYNC;
- else
- Mode->Flags |= V_NHSYNC | V_PVSYNC;
-
- if (Interlaced)
- Mode->Flags |= V_INTERLACE;
-
- return Mode;
-}
-
-/*
* Quickly check wether this is a CVT standard mode.
*/
static Bool
diff --git a/hw/xfree86/utils/gtf/.gitignore b/hw/xfree86/utils/gtf/.gitignore
new file mode 100644
index 000000000..741071d52
--- /dev/null
+++ b/hw/xfree86/utils/gtf/.gitignore
@@ -0,0 +1,2 @@
+gtf.1
+gtf.1x
diff --git a/hw/xfree86/utils/gtf/gtf.c b/hw/xfree86/utils/gtf/gtf.c
index 109e2bbb3..fd4a4f23c 100644
--- a/hw/xfree86/utils/gtf/gtf.c
+++ b/hw/xfree86/utils/gtf/gtf.c
@@ -1,4 +1,3 @@
-/* $XdotOrg: xc/programs/Xserver/hw/xfree86/etc/gtf.c,v 1.2 2004/04/23 19:53:57 eich Exp $ */
/* gtf.c Generate mode timings using the GTF Timing Standard
*
* gcc gtf.c -o gtf -lm -Wall
@@ -103,7 +102,6 @@
* o Error checking.
*
*/
-/* $XFree86: xc/programs/Xserver/hw/xfree86/etc/gtf.c,v 1.2 2002/11/15 17:01:53tsi Exp $ */
#ifdef HAVE_XORG_CONFIG_H
# include <xorg-config.h>
diff --git a/hw/xfree86/utils/ioport/Makefile.am b/hw/xfree86/utils/ioport/Makefile.am
index e96681bbf..1839c9a60 100644
--- a/hw/xfree86/utils/ioport/Makefile.am
+++ b/hw/xfree86/utils/ioport/Makefile.am
@@ -33,7 +33,7 @@ DUMMYLIB_SRCDIR = $(XFREE86_SRCDIR)/dummylib
INCLUDES = $(XORG_INCS) -I$(DUMMYLIB_SRCDIR)
-ioport_CFLAGS = $(XORG_CFLAGS)
+ioport_CFLAGS = $(DIX_CFLAGS) $(XORG_CFLAGS)
ioport_LDADD = \
../../os-support/libxorgos.la \
../../dummylib/libdummy-nonserver.a \
diff --git a/hw/xfree86/utils/ioport/ioport.c b/hw/xfree86/utils/ioport/ioport.c
index bd42f637f..32213642e 100644
--- a/hw/xfree86/utils/ioport/ioport.c
+++ b/hw/xfree86/utils/ioport/ioport.c
@@ -1,4 +1,3 @@
-/* $XFree86: xc/programs/Xserver/hw/xfree86/etc/ioport.c,v 1.4 2003/01/01 19:16:41 tsi Exp $ */
/*
* Copyright 2002 through 2004 by Marc Aurele La France (TSI @ UQV), tsi@xfree86.org
*
diff --git a/hw/xfree86/utils/kbd_mode/bsd-kbd_mode.c b/hw/xfree86/utils/kbd_mode/bsd-kbd_mode.c
index 865a59113..afa8510b0 100644
--- a/hw/xfree86/utils/kbd_mode/bsd-kbd_mode.c
+++ b/hw/xfree86/utils/kbd_mode/bsd-kbd_mode.c
@@ -1,4 +1,3 @@
-/* $XFree86: xc/programs/Xserver/hw/xfree86/etc/kbd_mode.c,v 3.5 1996/12/23 06:47:13 dawes Exp $ */
/* Keyboard mode control program for 386BSD */
diff --git a/hw/xfree86/utils/kbd_mode/sun-kbd_mode.c b/hw/xfree86/utils/kbd_mode/sun-kbd_mode.c
index c96839c0a..96a4644a0 100644
--- a/hw/xfree86/utils/kbd_mode/sun-kbd_mode.c
+++ b/hw/xfree86/utils/kbd_mode/sun-kbd_mode.c
@@ -1,4 +1,3 @@
-/* $Xorg: kbd_mode.c,v 1.3 2000/08/17 19:48:29 cpqbld Exp $ */
/* $XdotOrg: $ */
/************************************************************
Copyright 1987 by Sun Microsystems, Inc. Mountain View, CA.
@@ -28,7 +27,6 @@ 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";
diff --git a/hw/xfree86/utils/pcitweak/.gitignore b/hw/xfree86/utils/pcitweak/.gitignore
new file mode 100644
index 000000000..c866baf62
--- /dev/null
+++ b/hw/xfree86/utils/pcitweak/.gitignore
@@ -0,0 +1,3 @@
+pcitweak.1
+pcitweak.1x
+
diff --git a/hw/xfree86/utils/pcitweak/Makefile.am b/hw/xfree86/utils/pcitweak/Makefile.am
index 9a565adc8..5c2a6eb56 100644
--- a/hw/xfree86/utils/pcitweak/Makefile.am
+++ b/hw/xfree86/utils/pcitweak/Makefile.am
@@ -33,7 +33,7 @@ DUMMYLIB_SRCDIR = $(XFREE86_SRCDIR)/dummylib
INCLUDES = $(XORG_INCS) -I$(DUMMYLIB_SRCDIR)
-pcitweak_CFLAGS = $(XORG_CFLAGS)
+pcitweak_CFLAGS = $(DIX_CFLAGS) $(XORG_CFLAGS)
pcitweak_LDADD = \
../../os-support/libxorgos.la \
../../dummylib/libdummy-nonserver.a \
diff --git a/hw/xfree86/utils/pcitweak/pcitweak.c b/hw/xfree86/utils/pcitweak/pcitweak.c
index a7c6a3263..5648e796d 100644
--- a/hw/xfree86/utils/pcitweak/pcitweak.c
+++ b/hw/xfree86/utils/pcitweak/pcitweak.c
@@ -1,4 +1,3 @@
-/* $XFree86: xc/programs/Xserver/hw/xfree86/etc/pcitweak.c,v 1.17 2003/08/24 17:37:01 dawes Exp $ */
/*
* Copyright (c) 1999-2002 by The XFree86 Project, Inc.
*
diff --git a/hw/xfree86/utils/scanpci/.gitignore b/hw/xfree86/utils/scanpci/.gitignore
new file mode 100644
index 000000000..b752c7455
--- /dev/null
+++ b/hw/xfree86/utils/scanpci/.gitignore
@@ -0,0 +1,2 @@
+scanpci.1
+scanpci.1x
diff --git a/hw/xfree86/utils/scanpci/Makefile.am b/hw/xfree86/utils/scanpci/Makefile.am
index f4e2cbb37..6af8eaee5 100644
--- a/hw/xfree86/utils/scanpci/Makefile.am
+++ b/hw/xfree86/utils/scanpci/Makefile.am
@@ -34,7 +34,7 @@ DUMMYLIB_SRCDIR = $(XFREE86_SRCDIR)/dummylib
INCLUDES = $(XORG_INCS) -I$(SCANPCI_SRCDIR) -I$(DUMMYLIB_SRCDIR)
-scanpci_CFLAGS = $(XORG_CFLAGS)
+scanpci_CFLAGS = $(DIX_CFLAGS) $(XORG_CFLAGS)
scanpci_LDADD = \
../../scanpci/libscanpci.la \
../../os-support/libxorgos.la \
diff --git a/hw/xfree86/utils/scanpci/scanpci.c b/hw/xfree86/utils/scanpci/scanpci.c
index dac7d45af..609f1faaf 100644
--- a/hw/xfree86/utils/scanpci/scanpci.c
+++ b/hw/xfree86/utils/scanpci/scanpci.c
@@ -23,7 +23,6 @@
* OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
*
*/
-/* $XFree86: xc/programs/Xserver/hw/xfree86/etc/scanpci.c,v 3.91tsi Exp $ */
#include <X11/X.h>
#include "os.h"
diff --git a/hw/xfree86/utils/xorgcfg/.gitignore b/hw/xfree86/utils/xorgcfg/.gitignore
new file mode 100644
index 000000000..378869b1c
--- /dev/null
+++ b/hw/xfree86/utils/xorgcfg/.gitignore
@@ -0,0 +1,2 @@
+xorgcfg.1
+xorgcfg.1x
diff --git a/hw/xfree86/utils/xorgcfg/Makefile.am b/hw/xfree86/utils/xorgcfg/Makefile.am
index 0705eb5bb..309ed5c0a 100644
--- a/hw/xfree86/utils/xorgcfg/Makefile.am
+++ b/hw/xfree86/utils/xorgcfg/Makefile.am
@@ -33,7 +33,7 @@ INCLUDES = $(XORG_INCS) -I$(top_srcdir)/hw/xfree86/parser
OPTIONSPATH=$(libdir)/X11
-xorgcfg_CFLAGS = @SERVER_DEFINES@ $(XORG_CFLAGS) $(CURSESDEFINES) \
+xorgcfg_CFLAGS = $(XORG_CFLAGS) $(CURSESDEFINES) \
$(XORGCFG_DEP_CFLAGS) -DXKB_RULES_DIR=\"$(XKB_BASE_DIRECTORY)/rules\" \
-DPROJECT_ROOT=\"$(PROJECTROOT)\" -DOPTIONSPATH=\"$(OPTIONSPATH)\"
xorgcfg_LDADD = $(XORGCFG_DEP_LIBS) ../../parser/libxf86config.a $(LOADERLIB) \
@@ -56,6 +56,7 @@ endif
if NEED_STRLCAT
STRL_SRCS = $(top_srcdir)/os/strlcat.c $(top_srcdir)/os/strlcpy.c
endif
+endif BUILD_XORGCFG
xorgcfg_SOURCES = \
accessx.c \
@@ -95,10 +96,7 @@ xorgcfg_SOURCES = \
xf86config.h \
$(STRL_SRCS)
-XBMdir = $(includedir)/X11/bitmaps
-XPMdir = $(includedir)/X11/pixmaps
-
-XBM_DATA = \
+BITMAPS = \
card.xbm \
keyboard.xbm \
monitor.xbm \
@@ -112,7 +110,7 @@ XBM_DATA = \
shorter.xbm \
taller.xbm
-XPM_DATA = \
+PIXMAPS = \
card.xpm \
computer.xpm \
keyboard.xpm \
@@ -122,6 +120,13 @@ XPM_DATA = \
# Rules needed to cpp man page & app-defaults
include $(top_srcdir)/cpprules.in
+if BUILD_XORGCFG
+XBMdir = $(includedir)/X11/bitmaps
+XPMdir = $(includedir)/X11/pixmaps
+
+XBM_DATA = $(BITMAPS)
+XPM_DATA = $(PIXMAPS)
+
# App default files (*.ad)
appdefaultdir = @APPDEFAULTDIR@
@@ -146,7 +151,6 @@ appman_DATA = $(appman_PRE:man=@APP_MAN_SUFFIX@)
all-local: $(appman_PRE) $(appman_DATA)
-EXTRA_DIST = $(XBM_DATA) $(XPM_DATA) XOrgCfg.pre xorgcfg.man.pre
BUILT_SOURCES = $(appman_PRE)
CLEANFILES = $(APPDEFAULTFILES) $(BUILT_SOURCES) $(appman_DATA)
@@ -156,4 +160,6 @@ SUFFIXES += .$(APP_MAN_SUFFIX) .man
-rm -f $@
$(LN_S) $< $@
-endif
+endif BUILD_XORGCFG
+
+EXTRA_DIST = $(BITMAPS) $(PIXMAPS) XOrgCfg.pre xorgcfg.man.pre
diff --git a/hw/xfree86/utils/xorgcfg/accessx.c b/hw/xfree86/utils/xorgcfg/accessx.c
index cb8929b81..38bda383a 100644
--- a/hw/xfree86/utils/xorgcfg/accessx.c
+++ b/hw/xfree86/utils/xorgcfg/accessx.c
@@ -26,7 +26,6 @@
*
* Author: Paulo César Pereira de Andrade <pcpa@conectiva.com.br>
*
- * $XFree86: xc/programs/Xserver/hw/xfree86/xf86cfg/accessx.c,v 1.8 2001/01/26 21:17:40 paulo Exp $
*/
#include "config.h"
diff --git a/hw/xfree86/utils/xorgcfg/card-cfg.c b/hw/xfree86/utils/xorgcfg/card-cfg.c
index 3970f02c8..1f3b7555e 100644
--- a/hw/xfree86/utils/xorgcfg/card-cfg.c
+++ b/hw/xfree86/utils/xorgcfg/card-cfg.c
@@ -26,7 +26,6 @@
*
* Author: Paulo César Pereira de Andrade <pcpa@conectiva.com.br>
*
- * $XFree86: xc/programs/Xserver/hw/xfree86/xf86cfg/card-cfg.c,v 1.11tsi Exp $
*/
#include "xf86config.h"
diff --git a/hw/xfree86/utils/xorgcfg/cards.c b/hw/xfree86/utils/xorgcfg/cards.c
index 62bcfbbda..dcd5828cb 100644
--- a/hw/xfree86/utils/xorgcfg/cards.c
+++ b/hw/xfree86/utils/xorgcfg/cards.c
@@ -26,7 +26,6 @@
*
* Author: Paulo César Pereira de Andrade <pcpa@conectiva.com.br>
*
- * $XFree86: xc/programs/Xserver/hw/xfree86/xf86cfg/cards.c,v 1.14 2002/09/12 15:19:07 tsi Exp $
*/
#define CARDS_PRIVATE
diff --git a/hw/xfree86/utils/xorgcfg/cards.h b/hw/xfree86/utils/xorgcfg/cards.h
index 913d9c8b8..8557e96df 100644
--- a/hw/xfree86/utils/xorgcfg/cards.h
+++ b/hw/xfree86/utils/xorgcfg/cards.h
@@ -26,7 +26,6 @@
*
* Author: Paulo César Pereira de Andrade <pcpa@conectiva.com.br>
*
- * $XFree86: xc/programs/Xserver/hw/xfree86/xf86cfg/cards.h,v 1.2 2001/07/06 02:04:10 paulo Exp $
*/
#include <stdio.h>
diff --git a/hw/xfree86/utils/xorgcfg/config.c b/hw/xfree86/utils/xorgcfg/config.c
index 4d656a53d..8c985bf34 100644
--- a/hw/xfree86/utils/xorgcfg/config.c
+++ b/hw/xfree86/utils/xorgcfg/config.c
@@ -26,7 +26,6 @@
*
* Author: Paulo César Pereira de Andrade <pcpa@conectiva.com.br>
*
- * $XFree86: xc/programs/Xserver/hw/xfree86/xf86cfg/config.c,v 1.8tsi Exp $
*/
#include "config.h"
diff --git a/hw/xfree86/utils/xorgcfg/config.h b/hw/xfree86/utils/xorgcfg/config.h
index 6cbdc5e30..62187b0d4 100644
--- a/hw/xfree86/utils/xorgcfg/config.h
+++ b/hw/xfree86/utils/xorgcfg/config.h
@@ -26,7 +26,6 @@
*
* Author: Paulo César Pereira de Andrade <pcpa@conectiva.com.br>
*
- * $XFree86: xc/programs/Xserver/hw/xfree86/xf86cfg/config.h,v 1.21 2004/02/13 23:58:52 dawes Exp $
*/
#ifdef HAVE_CONFIG_H
diff --git a/hw/xfree86/utils/xorgcfg/expert.c b/hw/xfree86/utils/xorgcfg/expert.c
index 06bffb79a..5c22a6e70 100644
--- a/hw/xfree86/utils/xorgcfg/expert.c
+++ b/hw/xfree86/utils/xorgcfg/expert.c
@@ -26,7 +26,6 @@
*
* Author: Paulo César Pereira de Andrade <pcpa@conectiva.com.br>
*
- * $XFree86: xc/programs/Xserver/hw/xfree86/xf86cfg/expert.c,v 1.14tsi Exp $
*/
#include "config.h"
diff --git a/hw/xfree86/utils/xorgcfg/help.c b/hw/xfree86/utils/xorgcfg/help.c
index c6bfcbad2..cd5c2c2f4 100644
--- a/hw/xfree86/utils/xorgcfg/help.c
+++ b/hw/xfree86/utils/xorgcfg/help.c
@@ -26,7 +26,6 @@
*
* Author: Paulo César Pereira de Andrade <pcpa@conectiva.com.br>
*
- * $XFree86: xc/programs/Xserver/hw/xfree86/xf86cfg/help.c,v 1.7tsi Exp $
*/
#include <X11/IntrinsicP.h>
diff --git a/hw/xfree86/utils/xorgcfg/interface.c b/hw/xfree86/utils/xorgcfg/interface.c
index b6ac82a06..9b22dc7cb 100644
--- a/hw/xfree86/utils/xorgcfg/interface.c
+++ b/hw/xfree86/utils/xorgcfg/interface.c
@@ -1,4 +1,3 @@
-/* $XdotOrg: xserver/xorg/hw/xfree86/utils/xorgcfg/interface.c,v 1.8 2005/11/08 06:33:30 jkj Exp $ */
/*
* Copyright (c) 2000 by Conectiva S.A. (http://www.conectiva.com)
*
@@ -27,7 +26,6 @@
*
* Author: Paulo César Pereira de Andrade <pcpa@conectiva.com.br>
*
- * $XFree86: xc/programs/Xserver/hw/xfree86/xf86cfg/interface.c,v 1.36 2002/10/19 20:04:21 herrb Exp $
*/
#include <X11/IntrinsicP.h>
@@ -68,8 +66,7 @@
#define DefaultXFree86Dir "/usr"
#endif
-#define IS_KBDDRIV(S) ((strcasecmp((S),"kbd") == 0) || \
- (strcasecmp((S), "keyboard") == 0))
+#define IS_KBDDRIV(S) ((strcasecmp((S),"kbd") == 0))
/*
* Prototypes
diff --git a/hw/xfree86/utils/xorgcfg/keyboard-cfg.c b/hw/xfree86/utils/xorgcfg/keyboard-cfg.c
index 2e82323be..545a67067 100644
--- a/hw/xfree86/utils/xorgcfg/keyboard-cfg.c
+++ b/hw/xfree86/utils/xorgcfg/keyboard-cfg.c
@@ -26,7 +26,6 @@
*
* Author: Paulo César Pereira de Andrade <pcpa@conectiva.com.br>
*
- * $XFree86: xc/programs/Xserver/hw/xfree86/xf86cfg/keyboard-cfg.c,v 1.21 2002/12/05 20:24:21 paulo Exp $
*/
#include "xf86config.h"
@@ -38,8 +37,7 @@
#include <X11/Xaw/SimpleMenu.h>
#include <X11/Xaw/SmeBSB.h>
-#define IS_KBDDRIV(X) ((strcasecmp((X),"kbd") == 0) || \
- (strcasecmp((X), "keyboard") == 0))
+#define IS_KBDDRIV(X) ((strcasecmp((X),"kbd") == 0))
/*
* Types
@@ -255,11 +253,7 @@ KeyboardConfig(XtPointer config)
keyboard = XtNew(XF86ConfInputRec);
keyboard->list.next = NULL;
keyboard->inp_identifier = XtNewString(ident_string);
-#if defined(USE_DEPRECATED_KEYBOARD_DRIVER)
- keyboard->inp_driver = XtNewString("keyboard");
-#else
keyboard->inp_driver = XtNewString("kbd");
-#endif
keyboard->inp_option_lst = xf86newOption(XtNewString(XkbRules),
XtNewString(rules));
xf86addNewOption(keyboard->inp_option_lst,
diff --git a/hw/xfree86/utils/xorgcfg/keyboard-cfg.h b/hw/xfree86/utils/xorgcfg/keyboard-cfg.h
index 64438bd71..512a19d7a 100644
--- a/hw/xfree86/utils/xorgcfg/keyboard-cfg.h
+++ b/hw/xfree86/utils/xorgcfg/keyboard-cfg.h
@@ -26,7 +26,6 @@
*
* Author: Paulo César Pereira de Andrade <pcpa@conectiva.com.br>
*
- * $XFree86: xc/programs/Xserver/hw/xfree86/xf86cfg/keyboard-cfg.h,v 1.2 2000/06/13 23:15:51 dawes Exp $
*/
#include "config.h"
diff --git a/hw/xfree86/utils/xorgcfg/loader.c b/hw/xfree86/utils/xorgcfg/loader.c
index 37378701e..8a9ad1aef 100644
--- a/hw/xfree86/utils/xorgcfg/loader.c
+++ b/hw/xfree86/utils/xorgcfg/loader.c
@@ -26,8 +26,6 @@
*
* Author: Paulo César Pereira de Andrade <pcpa@conectiva.com.br>
*
- * $XdotOrg: xserver/xorg/hw/xfree86/utils/xorgcfg/loader.c,v 1.5 2005/12/08 17:54:40 kem Exp $
- * $XFree86: xc/programs/Xserver/hw/xfree86/xf86cfg/loader.c,v 1.19 2002/06/06 21:03:32 paulo Exp $
*/
#include "config.h"
diff --git a/hw/xfree86/utils/xorgcfg/loader.h b/hw/xfree86/utils/xorgcfg/loader.h
index 92ca70485..16c527327 100644
--- a/hw/xfree86/utils/xorgcfg/loader.h
+++ b/hw/xfree86/utils/xorgcfg/loader.h
@@ -26,7 +26,6 @@
*
* Author: Paulo César Pereira de Andrade <pcpa@conectiva.com.br>
*
- * $XFree86: xc/programs/Xserver/hw/xfree86/xf86cfg/loader.h,v 1.6 2001/07/07 01:43:58 paulo Exp $
*/
#ifdef USE_MODULES
@@ -36,9 +35,6 @@
#else
-#ifndef XFree86LOADER
-#define XFree86LOADER /* not really */
-#endif
#define IN_LOADER
#include "xf86.h"
diff --git a/hw/xfree86/utils/xorgcfg/loadmod.c b/hw/xfree86/utils/xorgcfg/loadmod.c
index 8f970cb72..6f83f3509 100644
--- a/hw/xfree86/utils/xorgcfg/loadmod.c
+++ b/hw/xfree86/utils/xorgcfg/loadmod.c
@@ -26,7 +26,6 @@
*
* Author: Paulo César Pereira de Andrade <pcpa@conectiva.com.br>
*
- * $XFree86: xc/programs/Xserver/hw/xfree86/xf86cfg/loadmod.c,v 1.16 2003/03/12 16:40:28 tsi Exp $
*/
#ifdef USE_MODULES
@@ -182,7 +181,7 @@ LOOKUP xfree86LookupTab[] = {
SYMFUNC(xf86memchr)
SYMFUNC(xf86memcmp)
SYMFUNC(xf86memcpy)
-#if (defined(__powerpc__) && (defined(Lynx) || defined(linux))) || defined(__sparc__) || defined(__ia64__) || defined (__amd64__)
+#if (defined(__powerpc__) && (defined(Lynx) || defined(linux))) || defined(__sparc__) || defined(__sparc) || defined(__ia64__) || defined (__amd64__)
/*
* Some PPC, SPARC, and IA64 compilers generate calls to memcpy to handle
* structure copies. This causes a problem both here and in shared
diff --git a/hw/xfree86/utils/xorgcfg/monitor-cfg.c b/hw/xfree86/utils/xorgcfg/monitor-cfg.c
index abe3cbf28..a443c54c2 100644
--- a/hw/xfree86/utils/xorgcfg/monitor-cfg.c
+++ b/hw/xfree86/utils/xorgcfg/monitor-cfg.c
@@ -26,7 +26,6 @@
*
* Author: Paulo César Pereira de Andrade <pcpa@conectiva.com.br>
*
- * $XFree86: xc/programs/Xserver/hw/xfree86/xf86cfg/monitor-cfg.c,v 1.6 2001/02/21 23:37:03 paulo Exp $
*/
#include "xf86config.h"
diff --git a/hw/xfree86/utils/xorgcfg/monitor-cfg.h b/hw/xfree86/utils/xorgcfg/monitor-cfg.h
index b480358f7..48fc804bf 100644
--- a/hw/xfree86/utils/xorgcfg/monitor-cfg.h
+++ b/hw/xfree86/utils/xorgcfg/monitor-cfg.h
@@ -26,7 +26,6 @@
*
* Author: Paulo César Pereira de Andrade <pcpa@conectiva.com.br>
*
- * $XFree86: xc/programs/Xserver/hw/xfree86/xf86cfg/monitor-cfg.h,v 1.1 2000/04/04 22:37:00 dawes Exp $
*/
#include "config.h"
diff --git a/hw/xfree86/utils/xorgcfg/mouse-cfg.c b/hw/xfree86/utils/xorgcfg/mouse-cfg.c
index 49bfc61a2..5bae6d326 100644
--- a/hw/xfree86/utils/xorgcfg/mouse-cfg.c
+++ b/hw/xfree86/utils/xorgcfg/mouse-cfg.c
@@ -26,7 +26,6 @@
*
* Author: Paulo César Pereira de Andrade <pcpa@conectiva.com.br>
*
- * $XFree86: xc/programs/Xserver/hw/xfree86/xf86cfg/mouse-cfg.c,v 1.11tsi Exp $
*/
#include "xf86config.h"
@@ -61,9 +60,6 @@ static struct MouseProtocol {
#ifdef __SCO__
{"OsMouse", MTYPE_AUTOMOUSE},
#endif
-#if defined(__UNIXWARE__)
- {"Xqueue", MTYPE_XQUEUE},
-#endif
#ifdef WSCONS_SUPPORT
{"wsmouse", MTYPE_AUTOMOUSE},
#endif
diff --git a/hw/xfree86/utils/xorgcfg/options.c b/hw/xfree86/utils/xorgcfg/options.c
index 4187c1c3d..d229bb17f 100644
--- a/hw/xfree86/utils/xorgcfg/options.c
+++ b/hw/xfree86/utils/xorgcfg/options.c
@@ -26,7 +26,6 @@
*
* Author: Paulo César Pereira de Andrade <pcpa@conectiva.com.br>
*
- * $XFree86: xc/programs/Xserver/hw/xfree86/xf86cfg/options.c,v 1.11 2001/10/28 03:34:08 tsi Exp $
*/
#include "options.h"
diff --git a/hw/xfree86/utils/xorgcfg/options.h b/hw/xfree86/utils/xorgcfg/options.h
index 066de7d3a..2d08ca448 100644
--- a/hw/xfree86/utils/xorgcfg/options.h
+++ b/hw/xfree86/utils/xorgcfg/options.h
@@ -26,7 +26,6 @@
*
* Author: Paulo César Pereira de Andrade <pcpa@conectiva.com.br>
*
- * $XFree86: xc/programs/Xserver/hw/xfree86/xf86cfg/options.h,v 1.6 2001/06/01 18:43:50 tsi Exp $
*/
#include "config.h"
diff --git a/hw/xfree86/utils/xorgcfg/screen-cfg.c b/hw/xfree86/utils/xorgcfg/screen-cfg.c
index c20c84cba..4c67d725a 100644
--- a/hw/xfree86/utils/xorgcfg/screen-cfg.c
+++ b/hw/xfree86/utils/xorgcfg/screen-cfg.c
@@ -26,7 +26,6 @@
*
* Author: Paulo César Pereira de Andrade <pcpa@conectiva.com.br>
*
- * $XFree86: xc/programs/Xserver/hw/xfree86/xf86cfg/screen-cfg.c,v 1.13tsi Exp $
*/
#include "xf86config.h"
diff --git a/hw/xfree86/utils/xorgcfg/screen-cfg.h b/hw/xfree86/utils/xorgcfg/screen-cfg.h
index 6098c71fe..07e9bc3ee 100644
--- a/hw/xfree86/utils/xorgcfg/screen-cfg.h
+++ b/hw/xfree86/utils/xorgcfg/screen-cfg.h
@@ -26,7 +26,6 @@
*
* Author: Paulo César Pereira de Andrade <pcpa@conectiva.com.br>
*
- * $XFree86: xc/programs/Xserver/hw/xfree86/xf86cfg/screen-cfg.h,v 1.1 2000/04/04 22:37:02 dawes Exp $
*/
#include "config.h"
diff --git a/hw/xfree86/utils/xorgcfg/screen.c b/hw/xfree86/utils/xorgcfg/screen.c
index 6ee6f0241..6b411de15 100644
--- a/hw/xfree86/utils/xorgcfg/screen.c
+++ b/hw/xfree86/utils/xorgcfg/screen.c
@@ -26,7 +26,6 @@
*
* Author: Paulo César Pereira de Andrade <pcpa@conectiva.com.br>
*
- * $XFree86: xc/programs/Xserver/hw/xfree86/xf86cfg/screen.c,v 1.8 2001/10/28 03:34:08 tsi Exp $
*/
#include <X11/IntrinsicP.h>
diff --git a/hw/xfree86/utils/xorgcfg/screen.h b/hw/xfree86/utils/xorgcfg/screen.h
index 135eeb51a..293820db4 100644
--- a/hw/xfree86/utils/xorgcfg/screen.h
+++ b/hw/xfree86/utils/xorgcfg/screen.h
@@ -26,7 +26,6 @@
*
* Author: Paulo César Pereira de Andrade <pcpa@conectiva.com.br>
*
- * $XFree86: xc/programs/Xserver/hw/xfree86/xf86cfg/screen.h,v 1.1 2000/04/04 22:37:02 dawes Exp $
*/
#include "xf86config.h"
diff --git a/hw/xfree86/utils/xorgcfg/startx.c b/hw/xfree86/utils/xorgcfg/startx.c
index 8d12ff802..7b730c9aa 100644
--- a/hw/xfree86/utils/xorgcfg/startx.c
+++ b/hw/xfree86/utils/xorgcfg/startx.c
@@ -26,7 +26,6 @@
*
* Author: Paulo César Pereira de Andrade <pcpa@conectiva.com.br>
*
- * $XFree86: xc/programs/Xserver/hw/xfree86/xf86cfg/startx.c,v 1.7 2002/01/07 20:38:29 dawes Exp $
*/
#include "config.h"
diff --git a/hw/xfree86/utils/xorgcfg/stubs.c b/hw/xfree86/utils/xorgcfg/stubs.c
index a8b0566de..47b2c2d5a 100644
--- a/hw/xfree86/utils/xorgcfg/stubs.c
+++ b/hw/xfree86/utils/xorgcfg/stubs.c
@@ -26,7 +26,6 @@
*
* Author: Paulo César Pereira de Andrade <pcpa@conectiva.com.br>
*
- * $XFree86: xc/programs/Xserver/hw/xfree86/xf86cfg/stubs.c,v 1.3 2002/11/09 11:12:53 herrb Exp $
*/
#include <stdio.h>
diff --git a/hw/xfree86/utils/xorgcfg/stubs.h b/hw/xfree86/utils/xorgcfg/stubs.h
index 9b661f3d8..c2f9f76b0 100644
--- a/hw/xfree86/utils/xorgcfg/stubs.h
+++ b/hw/xfree86/utils/xorgcfg/stubs.h
@@ -26,7 +26,6 @@
*
* Author: Paulo César Pereira de Andrade <pcpa@conectiva.com.br>
*
- * $XFree86: xc/programs/Xserver/hw/xfree86/xf86cfg/stubs.h,v 1.2 2000/10/23 21:16:52 tsi Exp $
*/
#ifndef _xf86cfg_stubs_h
diff --git a/hw/xfree86/utils/xorgcfg/text-mode.c b/hw/xfree86/utils/xorgcfg/text-mode.c
index 8537252e6..9797ca283 100644
--- a/hw/xfree86/utils/xorgcfg/text-mode.c
+++ b/hw/xfree86/utils/xorgcfg/text-mode.c
@@ -1,4 +1,3 @@
-/* $XdotOrg: xserver/xorg/hw/xfree86/utils/xorgcfg/text-mode.c,v 1.8 2006/05/03 17:50:10 ajax Exp $ */
/*
* Copyright (c) 2000 by Conectiva S.A. (http://www.conectiva.com)
*
@@ -27,7 +26,6 @@
*
* Author: Paulo César Pereira de Andrade <pcpa@conectiva.com.br>
*
- * $XFree86: xc/programs/Xserver/hw/xfree86/xf86cfg/text-mode.c,v 1.25 2003/11/12 00:10:30 dawes Exp $
*/
#include <stdio.h>
@@ -48,8 +46,7 @@
#include "xf86config.h"
#include "loader.h"
-#define IS_KBDDRIV(X) ((strcmp((X),"kbd") == 0) || \
- (strcmp((X), "keyboard") == 0))
+#define IS_KBDDRIV(X) ((strcmp((X),"kbd") == 0))
#ifndef PROJECT_ROOT
#define PROJECT_ROOT "/usr"
@@ -364,9 +361,6 @@ static char *protocols[] = {
#ifdef __SCO__
"OsMouse",
#endif
-#ifdef __UNIXWARE__
- "Xqueue",
-#endif
#ifdef WSCONS_SUPPORT
"wsmouse",
#endif
@@ -553,7 +547,7 @@ MouseConfig(void)
if (str == NULL)
#ifdef WSCONS_SUPPORT
str = "/dev/wsmouse";
-#elif defined(__FreeBSD__)
+#elif defined(__FreeBSD__) || defined(__DragonFly__)
str = "/dev/sysmouse";
#elif defined(__UNIXOS2__)
str = "mouse$";
@@ -746,11 +740,7 @@ KeyboardConfig(void)
input->inp_option_lst =
xf86addNewOption(input->inp_option_lst,
XtNewString("XkbLayout"), XtNewString("us"));
-#if defined(USE_DEPRECATED_KEYBOARD_DRIVER)
- input->inp_driver = XtNewString("keyboard");
-#else
input->inp_driver = XtNewString("kbd");
-#endif
XF86Config->conf_input_lst =
xf86addInput(XF86Config, input);
}
@@ -826,11 +816,7 @@ KeyboardConfig(void)
XtNewString("XkbLayout"), XtNewString(layout));
if (input->inp_driver == NULL) {
-#if defined(USE_DEPRECATED_KEYBOARD_DRIVER)
- input->inp_driver = XtNewString("keyboard");
-#else
input->inp_driver = XtNewString("kbd");
-#endif
XF86Config->conf_input_lst =
xf86addInput(XF86Config->conf_input_lst, input);
}
@@ -1130,6 +1116,7 @@ CardConfig(void)
static char *xdrivers[] = {
"apm",
"ark",
+ "ast",
"ati",
"r128",
"radeon",
diff --git a/hw/xfree86/utils/xorgcfg/vidmode.c b/hw/xfree86/utils/xorgcfg/vidmode.c
index 5226a5fc4..2d613b6df 100644
--- a/hw/xfree86/utils/xorgcfg/vidmode.c
+++ b/hw/xfree86/utils/xorgcfg/vidmode.c
@@ -26,7 +26,6 @@
*
* Author: Paulo César Pereira de Andrade <pcpa@conectiva.com.br>
*
- * $XFree86: xc/programs/Xserver/hw/xfree86/xf86cfg/vidmode.c,v 1.7tsi Exp $
*/
/*
diff --git a/hw/xfree86/utils/xorgcfg/vidmode.h b/hw/xfree86/utils/xorgcfg/vidmode.h
index 4f2058cea..d0c71d5c6 100644
--- a/hw/xfree86/utils/xorgcfg/vidmode.h
+++ b/hw/xfree86/utils/xorgcfg/vidmode.h
@@ -26,7 +26,6 @@
*
* Author: Paulo César Pereira de Andrade <pcpa@conectiva.com.br>
*
- * $XFree86: xc/programs/Xserver/hw/xfree86/xf86cfg/vidmode.h,v 1.1 2000/05/18 16:30:00 dawes Exp $
*/
#ifndef _xf86cfg_vidmode_h
diff --git a/hw/xfree86/utils/xorgcfg/xf86config.c b/hw/xfree86/utils/xorgcfg/xf86config.c
index 6d93afe34..2c667dcde 100644
--- a/hw/xfree86/utils/xorgcfg/xf86config.c
+++ b/hw/xfree86/utils/xorgcfg/xf86config.c
@@ -26,7 +26,6 @@
*
* Author: Paulo César Pereira de Andrade <pcpa@conectiva.com.br>
*
- * $XFree86: xc/programs/Xserver/hw/xfree86/xf86cfg/xf86config.c,v 1.5tsi Exp $
*/
#include "xf86config.h"
diff --git a/hw/xfree86/utils/xorgcfg/xf86config.h b/hw/xfree86/utils/xorgcfg/xf86config.h
index 6c198cde0..9387d782f 100644
--- a/hw/xfree86/utils/xorgcfg/xf86config.h
+++ b/hw/xfree86/utils/xorgcfg/xf86config.h
@@ -26,7 +26,6 @@
*
* Author: Paulo César Pereira de Andrade <pcpa@conectiva.com.br>
*
- * $XFree86: xc/programs/Xserver/hw/xfree86/xf86cfg/xf86config.h,v 1.2 2000/05/18 16:30:01 dawes Exp $
*/
#include "config.h"
diff --git a/hw/xfree86/utils/xorgconfig/.gitignore b/hw/xfree86/utils/xorgconfig/.gitignore
new file mode 100644
index 000000000..6f3cabd65
--- /dev/null
+++ b/hw/xfree86/utils/xorgconfig/.gitignore
@@ -0,0 +1 @@
+xorgconfig.1
diff --git a/hw/xfree86/utils/xorgconfig/Cards b/hw/xfree86/utils/xorgconfig/Cards
index bf30eab1d..b95928c37 100644
--- a/hw/xfree86/utils/xorgconfig/Cards
+++ b/hw/xfree86/utils/xorgconfig/Cards
@@ -51,6 +51,11 @@ NAME ** Ark Logic (generic) [ark]
SERVER SVGA
DRIVER ark
+NAME ** ASPEED Technology (generic) [ast]
+#CHIPSET ast
+SERVER SVGA
+DRIVER ast
+
NAME ** ATI (generic) [ati]
#CHIPSET ati
SERVER SVGA
diff --git a/hw/xfree86/utils/xorgconfig/Makefile.am b/hw/xfree86/utils/xorgconfig/Makefile.am
index ec0b01fe1..dabfc3214 100644
--- a/hw/xfree86/utils/xorgconfig/Makefile.am
+++ b/hw/xfree86/utils/xorgconfig/Makefile.am
@@ -31,7 +31,7 @@ bin_PROGRAMS = xorgconfig
X11dir = $(libdir)/X11
dist_X11_DATA = Cards
-xorgconfig_CFLAGS = @SERVER_DEFINES@ @XORGCONFIG_DEP_CFLAGS@ \
+xorgconfig_CFLAGS = @XORGCONFIG_DEP_CFLAGS@ \
-DCARD_DATABASE_FILE='"$(X11dir)/Cards"' \
-DPROJECTROOT='"$(PROJECTROOT)"' \
-DFILEMANSUFFIX='"$(FILE_MAN_SUFFIX)"' \
diff --git a/hw/xfree86/utils/xorgconfig/cards.c b/hw/xfree86/utils/xorgconfig/cards.c
index b5f23a00f..f903d7f9c 100644
--- a/hw/xfree86/utils/xorgconfig/cards.c
+++ b/hw/xfree86/utils/xorgconfig/cards.c
@@ -1,11 +1,9 @@
-/* $XdotOrg: xserver/xorg/hw/xfree86/utils/xorgconfig/cards.c,v 1.4 2005/07/01 22:43:35 daniels Exp $ */
/* $XConsortium: cards.c /main/9 1996/10/19 18:15:32 kaleb $ */
-/* $XFree86: xc/programs/Xserver/hw/xfree86/xf86config/cards.c,v 3.16 2001/07/25 15:05:09 dawes Exp $ */
/*
* Functions to manipulate card database.
diff --git a/hw/xfree86/utils/xorgconfig/cards.h b/hw/xfree86/utils/xorgconfig/cards.h
index 1d9892491..b667ec685 100644
--- a/hw/xfree86/utils/xorgconfig/cards.h
+++ b/hw/xfree86/utils/xorgconfig/cards.h
@@ -1,4 +1,3 @@
-/* $XFree86: xc/programs/Xserver/hw/xfree86/xf86config/cards.h,v 3.4 1999/03/28 15:33:07 dawes Exp $ */
diff --git a/hw/xfree86/utils/xorgconfig/xorgconfig.c b/hw/xfree86/utils/xorgconfig/xorgconfig.c
index ab3c1d03c..3e60fdabb 100644
--- a/hw/xfree86/utils/xorgconfig/xorgconfig.c
+++ b/hw/xfree86/utils/xorgconfig/xorgconfig.c
@@ -1,4 +1,3 @@
-/* $XFree86: xc/programs/Xserver/hw/xfree86/xf86config/xf86config.c,v 3.69 2003/02/20 04:05:15 dawes Exp $ */
/*
* This is a configuration program that will create a base XF86Config
@@ -93,7 +92,6 @@
* Chisato Yamauchi(cyamauch@phyas.aichi-edu.ac.jp)
*/
/* $XConsortium: xf86config.c /main/21 1996/10/28 05:43:57 kaleb $ */
-/* $XdotOrg: xserver/xorg/hw/xfree86/utils/xorgconfig/xorgconfig.c,v 1.20 2006/04/18 17:28:44 spyderous Exp $ */
#ifdef HAVE_CONFIG_H
# include "xorg-server.h"
@@ -492,7 +490,7 @@ struct {
#ifdef WSCONS_SUPPORT
# define DEF_MOUSEDEV "/dev/wsmouse";
-#elif defined(__FreeBSD__)
+#elif defined(__FreeBSD__) || defined(__DragonFly__)
# define DEF_MOUSEDEV "/dev/sysmouse";
#elif defined(__linux__)
# define DEF_MOUSEDEV "/dev/input/mice";
@@ -2068,17 +2066,7 @@ static char *XF86Config_fontpathchunk_text =
"Section \"InputDevice\"\n"
"\n"
" Identifier \"Keyboard1\"\n"
-#ifdef USE_DEPRECATED_KEYBOARD_DRIVER
-" Driver \"Keyboard\"\n"
-#else
" Driver \"kbd\"\n"
-#endif
-"\n"
-"# For most OSs the protocol can be omitted (it defaults to \"Standard\").\n"
-"# When using XQUEUE (only for SVR3 and SVR4, but not Solaris),\n"
-"# uncomment the following line.\n"
-"\n"
-"# Option \"Protocol\" \"Xqueue\"\n"
"\n"
" Option \"AutoRepeat\" \"500 30\"\n"
"\n"
@@ -2131,7 +2119,7 @@ static char *pointersection_text1 =
"\n"
"# Identifier and driver\n"
"\n"
-#if defined(__UNIXWARE__) || defined(XQUEUE)
+#if defined(__UNIXWARE__)
"# Identifier \"Mouse1\"\n"
"# Driver \"mouse\"\n"
#else
@@ -2142,15 +2130,6 @@ static char *pointersection_text1 =
static char *pointersection_text2 =
"\n"
-"# When using XQUEUE, comment out the above two lines, and uncomment\n"
-"# the following line.\n"
-"\n"
-#if defined(__UNIXWARE__) || defined(XQUEUE)
-" Option \"Protocol\" \"Xqueue\"\n"
-#else
-"# Option \"Protocol\" \"Xqueue\"\n"
-#endif
-"\n"
"# Mouse-speed setting for PS/2 mouse.\n"
"\n"
"# Option \"Resolution\" \"256\"\n"
diff --git a/hw/xfree86/vbe/Makefile.am b/hw/xfree86/vbe/Makefile.am
index 7da8f124b..85c6fd82a 100644
--- a/hw/xfree86/vbe/Makefile.am
+++ b/hw/xfree86/vbe/Makefile.am
@@ -4,7 +4,7 @@ libvbe_la_SOURCES = vbe.c vbeModes.c vbe_module.c
sdk_HEADERS = vbe.h vbeModes.h
-AM_CFLAGS = $(XORG_CFLAGS) @SERVER_DEFINES@ @MODULE_DEFINES@ @LOADER_DEFINES@
+AM_CFLAGS = $(DIX_CFLAGS) $(XORG_CFLAGS)
INCLUDES = $(XORG_INCS) -I$(srcdir)/../ddc -I$(srcdir)/../i2c \
-I$(srcdir)/../int10
diff --git a/hw/xfree86/vbe/vbe.c b/hw/xfree86/vbe/vbe.c
index 7528ad164..3ca985167 100644
--- a/hw/xfree86/vbe/vbe.c
+++ b/hw/xfree86/vbe/vbe.c
@@ -1,4 +1,3 @@
-/* $XFree86: xc/programs/Xserver/hw/xfree86/vbe/vbe.c,v 1.2tsi Exp $ */
/*
* XFree86 vbe module
@@ -40,11 +39,6 @@
static unsigned char * vbeReadEDID(vbeInfoPtr pVbe);
static Bool vbeProbeDDC(vbeInfoPtr pVbe);
-const char *vbe_ddcSymbols[] = {
- "xf86InterpretEDID",
- NULL
-};
-
static const char vbeVersionString[] = "VBE2";
vbeInfoPtr
@@ -328,8 +322,6 @@ vbeDoEDID(vbeInfoPtr pVbe, pointer pDDCModule)
xf86LoadSubModule(xf86Screens[pVbe->pInt10->scrnIndex], "ddc");
if (!pModule)
return NULL;
-
- xf86LoaderReqSymLists(vbe_ddcSymbols, NULL);
}
DDC_data = vbeReadEDID(pVbe);
diff --git a/hw/xfree86/vbe/vbe.h b/hw/xfree86/vbe/vbe.h
index c7970abd0..83b5a99b1 100644
--- a/hw/xfree86/vbe/vbe.h
+++ b/hw/xfree86/vbe/vbe.h
@@ -1,4 +1,3 @@
-/* $XFree86: xc/programs/Xserver/hw/xfree86/vbe/vbe.h,v 1.4 2004/01/07 04:28:06 dawes Exp $ */
/*
* XFree86 vbe module
diff --git a/hw/xfree86/vbe/vbeModes.c b/hw/xfree86/vbe/vbeModes.c
index 436a8a8dd..ef2c728f4 100644
--- a/hw/xfree86/vbe/vbeModes.c
+++ b/hw/xfree86/vbe/vbeModes.c
@@ -27,7 +27,6 @@
*
* Authors: David Dawes <dawes@xfree86.org>
*
- * $XFree86: xc/programs/Xserver/hw/xfree86/vbe/vbeModes.c,v 1.3tsi Exp $
*/
#ifdef HAVE_XORG_CONFIG_H
diff --git a/hw/xfree86/vbe/vbeModes.h b/hw/xfree86/vbe/vbeModes.h
index 2a8d1b33a..c28cdaa37 100644
--- a/hw/xfree86/vbe/vbeModes.h
+++ b/hw/xfree86/vbe/vbeModes.h
@@ -26,7 +26,6 @@
*
* Authors: David Dawes <dawes@xfree86.org>
*
- * $XFree86: xc/programs/Xserver/hw/xfree86/os-support/vbe/vbeModes.h,v 1.1 2002/08/06 13:46:28 dawes Exp $
*/
#ifndef _VBE_MODES_H
diff --git a/hw/xfree86/vbe/vbe_module.c b/hw/xfree86/vbe/vbe_module.c
index 7c7d87660..cf37ef951 100644
--- a/hw/xfree86/vbe/vbe_module.c
+++ b/hw/xfree86/vbe/vbe_module.c
@@ -6,8 +6,6 @@
#include "xf86str.h"
#include "vbe.h"
-extern const char *vbe_ddcSymbols[];
-
static MODULESETUPPROTO(vbeSetup);
static XF86ModuleVersionInfo vbeVersRec =
@@ -29,19 +27,5 @@ _X_EXPORT XF86ModuleData vbeModuleData = { &vbeVersRec, vbeSetup, NULL };
static pointer
vbeSetup(pointer module, pointer opts, int *errmaj, int *errmin)
{
- static Bool setupDone = FALSE;
-
- if (!setupDone) {
- setupDone = TRUE;
- LoaderRefSymLists(vbe_ddcSymbols,NULL);
- /*
- * Tell the loader about symbols from other modules that this module
- * might refer to.
- */
- }
- /*
- * The return value must be non-NULL on success even though there
- * is no TearDownProc.
- */
return (pointer)1;
}
diff --git a/hw/xfree86/vgahw/Makefile.am b/hw/xfree86/vgahw/Makefile.am
index 6c7fe1b28..f48e46a11 100644
--- a/hw/xfree86/vgahw/Makefile.am
+++ b/hw/xfree86/vgahw/Makefile.am
@@ -2,7 +2,7 @@ module_LTLIBRARIES = libvgahw.la
libvgahw_la_LDFLAGS = -avoid-version
libvgahw_la_SOURCES = vgaHW.c vgaHWmodule.c
INCLUDES = $(XORG_INCS) -I$(srcdir)/../ddc -I$(srcdir)/../i2c
-AM_CFLAGS = $(XORG_CFLAGS) @SERVER_DEFINES@ @MODULE_DEFINES@ @LOADER_DEFINES@
+AM_CFLAGS = $(DIX_CFLAGS) $(XORG_CFLAGS)
sdk_HEADERS = vgaHW.h
diff --git a/hw/xfree86/vgahw/vgaCmap.c b/hw/xfree86/vgahw/vgaCmap.c
index d3f6d427d..c7c58d582 100644
--- a/hw/xfree86/vgahw/vgaCmap.c
+++ b/hw/xfree86/vgahw/vgaCmap.c
@@ -1,4 +1,3 @@
-/* $XFree86: xc/programs/Xserver/hw/xfree86/vgahw/vgaCmap.c,v 1.5 1998/11/22 10:37:38 dawes Exp $ */
/*
* Copyright 1990,91 by Thomas Roell, Dinkelscherben, Germany.
*
diff --git a/hw/xfree86/vgahw/vgaHW.c b/hw/xfree86/vgahw/vgaHW.c
index 6df7dee18..36fd0099d 100644
--- a/hw/xfree86/vgahw/vgaHW.c
+++ b/hw/xfree86/vgahw/vgaHW.c
@@ -1,4 +1,3 @@
-/* $XFree86: xc/programs/Xserver/hw/xfree86/vgahw/vgaHW.c,v 1.59 2004/02/11 22:06:22 tsi Exp $ */
/*
*
diff --git a/hw/xfree86/vgahw/vgaHW.h b/hw/xfree86/vgahw/vgaHW.h
index c200aee9a..ff7d1e5e0 100644
--- a/hw/xfree86/vgahw/vgaHW.h
+++ b/hw/xfree86/vgahw/vgaHW.h
@@ -1,4 +1,3 @@
-/* $XFree86: xc/programs/Xserver/hw/xfree86/vgahw/vgaHW.h,v 1.31 2002/04/04 14:05:56 eich Exp $ */
/*
@@ -176,7 +175,7 @@ typedef struct _vgaHWRec {
#define BITS_PER_GUN 6
#define COLORMAP_SIZE 256
-#if defined(__powerpc__)
+#if defined(__powerpc__) || defined(__arm__) || defined(__s390__)
#define DACDelay(hw) /* No legacy VGA support */
#else
#define DACDelay(hw) \
diff --git a/hw/xfree86/x86emu/Makefile.am b/hw/xfree86/x86emu/Makefile.am
index 5959c867a..9f9c87f4f 100644
--- a/hw/xfree86/x86emu/Makefile.am
+++ b/hw/xfree86/x86emu/Makefile.am
@@ -11,7 +11,7 @@ libx86emu_a_SOURCES = debug.c \
INCLUDES =
-AM_CFLAGS = $(XORG_CFLAGS)
+AM_CFLAGS = $(DIX_CFLAGS) $(XORG_CFLAGS)
EXTRA_DIST = validate.c \
x86emu/debug.h \
diff --git a/hw/xfree86/xaa/Makefile.am b/hw/xfree86/xaa/Makefile.am
index 39f0155a6..5d529b118 100644
--- a/hw/xfree86/xaa/Makefile.am
+++ b/hw/xfree86/xaa/Makefile.am
@@ -68,4 +68,4 @@ EXTRA_DIST = xaacexp.h xaawrap.h xaaLine.c xaaDashLine.c \
INCLUDES = $(XORG_INCS)
-AM_CFLAGS = $(XORG_CFLAGS) @SERVER_DEFINES@ @MODULE_DEFINES@ @LOADER_DEFINES@
+AM_CFLAGS = $(DIX_CFLAGS) $(XORG_CFLAGS)
diff --git a/hw/xfree86/xaa/xaa.h b/hw/xfree86/xaa/xaa.h
index d4ff7bbd8..c8d0467e9 100644
--- a/hw/xfree86/xaa/xaa.h
+++ b/hw/xfree86/xaa/xaa.h
@@ -1,4 +1,3 @@
-/* $XFree86: xc/programs/Xserver/hw/xfree86/xaa/xaa.h,v 1.38 2002/10/21 01:54:04 mvojkovi Exp $ */
#ifndef _XAA_H
#define _XAA_H
diff --git a/hw/xfree86/xaa/xaaBitBlt.c b/hw/xfree86/xaa/xaaBitBlt.c
index 3639ec787..6c81f6413 100644
--- a/hw/xfree86/xaa/xaaBitBlt.c
+++ b/hw/xfree86/xaa/xaaBitBlt.c
@@ -1,4 +1,3 @@
-/* $XFree86: xc/programs/Xserver/hw/xfree86/xaa/xaaBitBlt.c,v 1.3tsi Exp $ */
/*
This is a lighter version of cfbBitBlt. We calculate the boxes
diff --git a/hw/xfree86/xaa/xaaBitOrder.c b/hw/xfree86/xaa/xaaBitOrder.c
index eda0b02ca..9dbd00f3c 100644
--- a/hw/xfree86/xaa/xaaBitOrder.c
+++ b/hw/xfree86/xaa/xaaBitOrder.c
@@ -1,4 +1,3 @@
-/* $XFree86: xc/programs/Xserver/hw/xfree86/xaa/xaaBitOrder.c,v 1.7 2001/05/18 20:22:31 tsi Exp $ */
#ifdef HAVE_XORG_CONFIG_H
#include <xorg-config.h>
diff --git a/hw/xfree86/xaa/xaaBitmap.c b/hw/xfree86/xaa/xaaBitmap.c
index 940525927..f7ae78d3f 100644
--- a/hw/xfree86/xaa/xaaBitmap.c
+++ b/hw/xfree86/xaa/xaaBitmap.c
@@ -1,4 +1,3 @@
-/* $XFree86: xc/programs/Xserver/hw/xfree86/xaa/xaaBitmap.c,v 1.9 2000/06/29 10:55:41 alanh Exp $ */
#ifdef HAVE_XORG_CONFIG_H
diff --git a/hw/xfree86/xaa/xaaCpyArea.c b/hw/xfree86/xaa/xaaCpyArea.c
index 2fe3ab1c3..89b4441ab 100644
--- a/hw/xfree86/xaa/xaaCpyArea.c
+++ b/hw/xfree86/xaa/xaaCpyArea.c
@@ -1,4 +1,3 @@
-/* $XFree86: xc/programs/Xserver/hw/xfree86/xaa/xaaCpyArea.c,v 1.12 2000/09/28 20:47:59 mvojkovi Exp $ */
#ifdef HAVE_XORG_CONFIG_H
#include <xorg-config.h>
diff --git a/hw/xfree86/xaa/xaaCpyPlane.c b/hw/xfree86/xaa/xaaCpyPlane.c
index 95a22adf5..cd9e9d47f 100644
--- a/hw/xfree86/xaa/xaaCpyPlane.c
+++ b/hw/xfree86/xaa/xaaCpyPlane.c
@@ -1,4 +1,3 @@
-/* $XFree86: xc/programs/Xserver/hw/xfree86/xaa/xaaCpyPlane.c,v 1.13tsi Exp $ */
/*
A CopyPlane function that handles bitmap->screen copies and
diff --git a/hw/xfree86/xaa/xaaCpyWin.c b/hw/xfree86/xaa/xaaCpyWin.c
index 198f8e95c..1ff955c6c 100644
--- a/hw/xfree86/xaa/xaaCpyWin.c
+++ b/hw/xfree86/xaa/xaaCpyWin.c
@@ -1,4 +1,3 @@
-/* $XFree86: xc/programs/Xserver/hw/xfree86/xaa/xaaCpyWin.c,v 1.3tsi Exp $ */
#ifdef HAVE_XORG_CONFIG_H
#include <xorg-config.h>
diff --git a/hw/xfree86/xaa/xaaDashLine.c b/hw/xfree86/xaa/xaaDashLine.c
index 22645ea1b..2a94a9e6c 100644
--- a/hw/xfree86/xaa/xaaDashLine.c
+++ b/hw/xfree86/xaa/xaaDashLine.c
@@ -1,4 +1,3 @@
-/* $XFree86: xc/programs/Xserver/hw/xfree86/xaa/xaaDashLine.c,v 1.4 2001/10/28 03:34:04 tsi Exp $ */
#ifdef HAVE_XORG_CONFIG_H
#include <xorg-config.h>
diff --git a/hw/xfree86/xaa/xaaFallback.c b/hw/xfree86/xaa/xaaFallback.c
index 111bd45e3..7ab4031f8 100644
--- a/hw/xfree86/xaa/xaaFallback.c
+++ b/hw/xfree86/xaa/xaaFallback.c
@@ -1,4 +1,3 @@
-/* $XFree86: xc/programs/Xserver/hw/xfree86/xaa/xaaFallback.c,v 1.4 1999/03/14 11:18:09 dawes Exp $ */
#ifdef HAVE_XORG_CONFIG_H
#include <xorg-config.h>
diff --git a/hw/xfree86/xaa/xaaFillArc.c b/hw/xfree86/xaa/xaaFillArc.c
index d8e2739c6..d3ebc22fc 100644
--- a/hw/xfree86/xaa/xaaFillArc.c
+++ b/hw/xfree86/xaa/xaaFillArc.c
@@ -21,7 +21,6 @@
*
* Written by Harm Hanemaayer (H.Hanemaayer@inter.nl.net).
*/
-/* $XFree86: xc/programs/Xserver/hw/xfree86/xaa/xaaFillArc.c,v 1.3 1998/10/25 07:12:12 dawes Exp $ */
/*
* Filled solid arcs, based on cfbfillarc.c.
diff --git a/hw/xfree86/xaa/xaaFillPoly.c b/hw/xfree86/xaa/xaaFillPoly.c
index 26a2646e7..23c27818e 100644
--- a/hw/xfree86/xaa/xaaFillPoly.c
+++ b/hw/xfree86/xaa/xaaFillPoly.c
@@ -1,4 +1,3 @@
-/* $XFree86: xc/programs/Xserver/hw/xfree86/xaa/xaaFillPoly.c,v 1.15 2001/10/28 03:34:04 tsi Exp $ */
/*
* Copyright 1996 The XFree86 Project
diff --git a/hw/xfree86/xaa/xaaFillRect.c b/hw/xfree86/xaa/xaaFillRect.c
index 1bd7bd14d..55a30bbd6 100644
--- a/hw/xfree86/xaa/xaaFillRect.c
+++ b/hw/xfree86/xaa/xaaFillRect.c
@@ -1,4 +1,3 @@
-/* $XFree86: xc/programs/Xserver/hw/xfree86/xaa/xaaFillRect.c,v 1.15tsi Exp $ */
#ifdef HAVE_XORG_CONFIG_H
#include <xorg-config.h>
diff --git a/hw/xfree86/xaa/xaaGC.c b/hw/xfree86/xaa/xaaGC.c
index ab46e9b4b..e22081103 100644
--- a/hw/xfree86/xaa/xaaGC.c
+++ b/hw/xfree86/xaa/xaaGC.c
@@ -1,4 +1,3 @@
-/* $XFree86: xc/programs/Xserver/hw/xfree86/xaa/xaaGC.c,v 1.18 2000/09/28 20:48:00 mvojkovi Exp $ */
#ifdef HAVE_XORG_CONFIG_H
#include <xorg-config.h>
diff --git a/hw/xfree86/xaa/xaaGCmisc.c b/hw/xfree86/xaa/xaaGCmisc.c
index 5a6a0abce..f7bd576f1 100644
--- a/hw/xfree86/xaa/xaaGCmisc.c
+++ b/hw/xfree86/xaa/xaaGCmisc.c
@@ -1,4 +1,3 @@
-/* $XFree86: xc/programs/Xserver/hw/xfree86/xaa/xaaGCmisc.c,v 1.14 2000/05/03 00:44:23 tsi Exp $ */
#ifdef HAVE_XORG_CONFIG_H
#include <xorg-config.h>
diff --git a/hw/xfree86/xaa/xaaImage.c b/hw/xfree86/xaa/xaaImage.c
index a0d7bfb7a..910c7e1e2 100644
--- a/hw/xfree86/xaa/xaaImage.c
+++ b/hw/xfree86/xaa/xaaImage.c
@@ -1,4 +1,3 @@
-/* $XFree86: xc/programs/Xserver/hw/xfree86/xaa/xaaImage.c,v 1.20tsi Exp $ */
#ifdef HAVE_XORG_CONFIG_H
#include <xorg-config.h>
diff --git a/hw/xfree86/xaa/xaaInit.c b/hw/xfree86/xaa/xaaInit.c
index f29a2eb3a..1542fc26e 100644
--- a/hw/xfree86/xaa/xaaInit.c
+++ b/hw/xfree86/xaa/xaaInit.c
@@ -1,4 +1,3 @@
-/* $XFree86: xc/programs/Xserver/hw/xfree86/xaa/xaaInit.c,v 1.34 2001/07/19 14:19:42 tsi Exp $ */
#ifdef HAVE_XORG_CONFIG_H
#include <xorg-config.h>
diff --git a/hw/xfree86/xaa/xaaLine.c b/hw/xfree86/xaa/xaaLine.c
index c6b78307a..7469de179 100644
--- a/hw/xfree86/xaa/xaaLine.c
+++ b/hw/xfree86/xaa/xaaLine.c
@@ -1,4 +1,3 @@
-/* $XFree86: xc/programs/Xserver/hw/xfree86/xaa/xaaLine.c,v 1.5 2001/10/28 03:34:04 tsi Exp $ */
#ifdef HAVE_XORG_CONFIG_H
#include <xorg-config.h>
diff --git a/hw/xfree86/xaa/xaaLineMisc.c b/hw/xfree86/xaa/xaaLineMisc.c
index 7bb312971..d786737af 100644
--- a/hw/xfree86/xaa/xaaLineMisc.c
+++ b/hw/xfree86/xaa/xaaLineMisc.c
@@ -1,4 +1,3 @@
-/* $XFree86: xc/programs/Xserver/hw/xfree86/xaa/xaaLineMisc.c,v 1.4 1998/09/27 04:43:45 dawes Exp $ */
#ifdef HAVE_XORG_CONFIG_H
#include <xorg-config.h>
diff --git a/hw/xfree86/xaa/xaaNonTEGlyph.c b/hw/xfree86/xaa/xaaNonTEGlyph.c
index 881707396..556650fb0 100644
--- a/hw/xfree86/xaa/xaaNonTEGlyph.c
+++ b/hw/xfree86/xaa/xaaNonTEGlyph.c
@@ -1,4 +1,3 @@
-/* $XFree86: xc/programs/Xserver/hw/xfree86/xaa/xaaNonTEGlyph.c,v 1.4 1998/09/13 05:23:55 dawes Exp $ */
#ifdef HAVE_XORG_CONFIG_H
diff --git a/hw/xfree86/xaa/xaaNonTEText.c b/hw/xfree86/xaa/xaaNonTEText.c
index 8c62af477..a5608c922 100644
--- a/hw/xfree86/xaa/xaaNonTEText.c
+++ b/hw/xfree86/xaa/xaaNonTEText.c
@@ -1,4 +1,3 @@
-/* $XFree86: xc/programs/Xserver/hw/xfree86/xaa/xaaNonTEText.c,v 1.12 2000/04/07 19:11:10 mvojkovi Exp $ */
/********************************************************************
diff --git a/hw/xfree86/xaa/xaaOffscreen.c b/hw/xfree86/xaa/xaaOffscreen.c
index d1c737c06..7c9d53270 100644
--- a/hw/xfree86/xaa/xaaOffscreen.c
+++ b/hw/xfree86/xaa/xaaOffscreen.c
@@ -1,4 +1,3 @@
-/* $XFree86: xc/programs/Xserver/hw/xfree86/xaa/xaaOffscreen.c,v 1.5 1999/07/04 06:39:17 dawes Exp $ */
/*
Copyright (c) 1999 - The XFree86 Project Inc.
diff --git a/hw/xfree86/xaa/xaaOverlay.c b/hw/xfree86/xaa/xaaOverlay.c
index 53a0827e2..016459091 100644
--- a/hw/xfree86/xaa/xaaOverlay.c
+++ b/hw/xfree86/xaa/xaaOverlay.c
@@ -1,5 +1,3 @@
-/* $XdotOrg: xserver/xorg/hw/xfree86/xaa/xaaOverlay.c,v 1.6 2005/07/03 08:53:49 daniels Exp $ */
-/* $XFree86: xc/programs/Xserver/hw/xfree86/xaa/xaaOverlay.c,v 1.14tsi Exp $ */
#ifdef HAVE_XORG_CONFIG_H
#include <xorg-config.h>
diff --git a/hw/xfree86/xaa/xaaOverlayDF.c b/hw/xfree86/xaa/xaaOverlayDF.c
index 883e94e6e..cfdac380e 100644
--- a/hw/xfree86/xaa/xaaOverlayDF.c
+++ b/hw/xfree86/xaa/xaaOverlayDF.c
@@ -3,7 +3,6 @@
Written by Mark Vojkovich
*/
-/* $XFree86: xc/programs/Xserver/hw/xfree86/xaa/xaaOverlayDF.c,v 1.1tsi Exp $ */
#ifdef HAVE_XORG_CONFIG_H
diff --git a/hw/xfree86/xaa/xaaPCache.c b/hw/xfree86/xaa/xaaPCache.c
index b8dd77465..441788cd8 100644
--- a/hw/xfree86/xaa/xaaPCache.c
+++ b/hw/xfree86/xaa/xaaPCache.c
@@ -1,4 +1,3 @@
-/* $XFree86: xc/programs/Xserver/hw/xfree86/xaa/xaaPCache.c,v 1.32tsi Exp $ */
#ifdef HAVE_XORG_CONFIG_H
#include <xorg-config.h>
diff --git a/hw/xfree86/xaa/xaaPaintWin.c b/hw/xfree86/xaa/xaaPaintWin.c
index 4a82b49c5..af5680c67 100644
--- a/hw/xfree86/xaa/xaaPaintWin.c
+++ b/hw/xfree86/xaa/xaaPaintWin.c
@@ -1,5 +1,3 @@
-/* $XdotOrg: xserver/xorg/hw/xfree86/xaa/xaaPaintWin.c,v 1.6 2005/07/03 08:53:49 daniels Exp $ */
-/* $XFree86: xc/programs/Xserver/hw/xfree86/xaa/xaaPaintWin.c,v 1.10 2001/10/28 03:34:04 tsi Exp $ */
#ifdef HAVE_XORG_CONFIG_H
#include <xorg-config.h>
diff --git a/hw/xfree86/xaa/xaaPict.c b/hw/xfree86/xaa/xaaPict.c
index f7c1f3dd0..55f0f6e99 100644
--- a/hw/xfree86/xaa/xaaPict.c
+++ b/hw/xfree86/xaa/xaaPict.c
@@ -1,5 +1,4 @@
/*
- * $XFree86: xc/programs/Xserver/hw/xfree86/xaa/xaaPict.c,v 1.18 2003/04/23 18:35:34 eich Exp $
*
* Copyright © 2000 Keith Packard, member of The XFree86 Project, Inc.
*
@@ -218,7 +217,13 @@ XAADoComposite (
if (pDst->alphaMap || pSrc->alphaMap || (pMask && pMask->alphaMap))
return FALSE;
-
+
+ if ((pSrc->repeat && pSrc->repeatType != RepeatNormal) ||
+ (pMask && pMask->repeat && pMask->repeatType != RepeatNormal))
+ {
+ return FALSE;
+ }
+
xDst += pDst->pDrawable->x;
yDst += pDst->pDrawable->y;
xSrc += pSrc->pDrawable->x;
@@ -516,7 +521,10 @@ XAAComposite (CARD8 op,
(!pSrc->repeat || (xSrc >= 0 && ySrc >= 0 &&
xSrc+width<=pSrc->pDrawable->width &&
ySrc+height<=pSrc->pDrawable->height)) &&
- ((op == PictOpSrc && pSrc->format == pDst->format) ||
+ ((op == PictOpSrc &&
+ ((pSrc->format==pDst->format) ||
+ (pSrc->format==PICT_a8r8g8b8 && pDst->format==PICT_x8r8g8b8) ||
+ (pSrc->format==PICT_a8b8g8r8 && pDst->format==PICT_x8b8g8r8))) ||
(op == PictOpOver && !pSrc->alphaMap && !pDst->alphaMap &&
pSrc->format==pDst->format &&
(pSrc->format==PICT_x8r8g8b8 || pSrc->format==PICT_x8b8g8r8))))
diff --git a/hw/xfree86/xaa/xaaRect.c b/hw/xfree86/xaa/xaaRect.c
index 1c56d80dc..0a7e174b7 100644
--- a/hw/xfree86/xaa/xaaRect.c
+++ b/hw/xfree86/xaa/xaaRect.c
@@ -1,4 +1,3 @@
-/* $XFree86: xc/programs/Xserver/hw/xfree86/xaa/xaaRect.c,v 1.2 1998/07/25 16:58:51 dawes Exp $ */
#ifdef HAVE_XORG_CONFIG_H
#include <xorg-config.h>
diff --git a/hw/xfree86/xaa/xaaSpans.c b/hw/xfree86/xaa/xaaSpans.c
index 150991d7b..7d0943d72 100644
--- a/hw/xfree86/xaa/xaaSpans.c
+++ b/hw/xfree86/xaa/xaaSpans.c
@@ -1,4 +1,3 @@
-/* $XFree86: xc/programs/Xserver/hw/xfree86/xaa/xaaSpans.c,v 1.14 2000/03/28 01:21:05 mvojkovi Exp $ */
#ifdef HAVE_XORG_CONFIG_H
#include <xorg-config.h>
diff --git a/hw/xfree86/xaa/xaaStateChange.c b/hw/xfree86/xaa/xaaStateChange.c
index 86c12cc7e..a614fe28c 100644
--- a/hw/xfree86/xaa/xaaStateChange.c
+++ b/hw/xfree86/xaa/xaaStateChange.c
@@ -1,4 +1,3 @@
-/* $XFree86: xc/programs/Xserver/hw/xfree86/xaa/xaaStateChange.c,v 3.1 2000/06/20 05:08:49 dawes Exp $ */
#ifdef HAVE_XORG_CONFIG_H
#include <xorg-config.h>
diff --git a/hw/xfree86/xaa/xaaStipple.c b/hw/xfree86/xaa/xaaStipple.c
index 7ea9a2dc2..0dd8e9fcf 100644
--- a/hw/xfree86/xaa/xaaStipple.c
+++ b/hw/xfree86/xaa/xaaStipple.c
@@ -1,4 +1,3 @@
-/* $XFree86: xc/programs/Xserver/hw/xfree86/xaa/xaaStipple.c,v 1.11 2001/10/28 03:34:04 tsi Exp $ */
#ifdef HAVE_XORG_CONFIG_H
#include <xorg-config.h>
diff --git a/hw/xfree86/xaa/xaaTEGlyph.c b/hw/xfree86/xaa/xaaTEGlyph.c
index f755ed9a9..c8d65968b 100644
--- a/hw/xfree86/xaa/xaaTEGlyph.c
+++ b/hw/xfree86/xaa/xaaTEGlyph.c
@@ -1,4 +1,3 @@
-/* $XFree86: xc/programs/Xserver/hw/xfree86/xaa/xaaTEGlyph.c,v 1.7 1999/11/06 23:14:46 mvojkovi Exp $ */
#ifdef HAVE_XORG_CONFIG_H
diff --git a/hw/xfree86/xaa/xaaTEText.c b/hw/xfree86/xaa/xaaTEText.c
index 72e1858f6..fc445726f 100644
--- a/hw/xfree86/xaa/xaaTEText.c
+++ b/hw/xfree86/xaa/xaaTEText.c
@@ -1,4 +1,3 @@
-/* $XFree86: xc/programs/Xserver/hw/xfree86/xaa/xaaTEText.c,v 1.6 1998/12/20 11:57:52 dawes Exp $ */
/********************************************************************
diff --git a/hw/xfree86/xaa/xaaTables.c b/hw/xfree86/xaa/xaaTables.c
index 6c16f11d3..829527dd6 100644
--- a/hw/xfree86/xaa/xaaTables.c
+++ b/hw/xfree86/xaa/xaaTables.c
@@ -1,4 +1,3 @@
-/* $XFree86: xc/programs/Xserver/hw/xfree86/xaa/xaaTables.c,v 1.1.2.1 1998/07/12 09:43:04 dawes Exp $ */
/*
* This is a table of 24-bit values, indexed with an 8-bit byte value, then
diff --git a/hw/xfree86/xaa/xaaWideLine.c b/hw/xfree86/xaa/xaaWideLine.c
index fbec29e7d..9479b0d7a 100644
--- a/hw/xfree86/xaa/xaaWideLine.c
+++ b/hw/xfree86/xaa/xaaWideLine.c
@@ -1,5 +1,3 @@
-/* $XFree86: xc/programs/Xserver/hw/xfree86/xaa/xaaWideLine.c,v 1.10 2001/11/16 16:47:56 dawes Exp $ */
-/* $XdotOrg: xserver/xorg/hw/xfree86/xaa/xaaWideLine.c,v 1.7 2005/07/03 08:53:49 daniels Exp $ */
/*
XAAPolylinesWideSolid does not maintain a span list and subsequently does
@@ -818,20 +816,6 @@ XAAPolylinesWideSolid (
return;
}
- if (mode == CoordModePrevious) {
- pPts->x += xorg;
- pPts->y += yorg;
- } else if(xorg | yorg) {
- register int n = npt;
- register DDXPointPtr pts = pPts;
-
- while(n--) {
- pts->x += xorg;
- pts->y += yorg;
- pts++;
- }
- }
-
x2 = pPts->x;
y2 = pPts->y;
if (npt > 1) {
@@ -869,6 +853,8 @@ XAAPolylinesWideSolid (
infoRec->ClipBox->x2 - 1, infoRec->ClipBox->y2 - 1);
}
+ x2 += xorg;
+ y2 += yorg;
while (--npt) {
x1 = x2;
y1 = y2;
@@ -878,6 +864,9 @@ XAAPolylinesWideSolid (
if (mode == CoordModePrevious) {
x2 += x1;
y2 += y1;
+ } else {
+ x2 += xorg;
+ y2 += yorg;
}
if ((x1 != x2) || (y1 != y2)) {
somethingDrawn = TRUE;
diff --git a/hw/xfree86/xaa/xaacexp.h b/hw/xfree86/xaa/xaacexp.h
index 9decdc594..56bcda69a 100644
--- a/hw/xfree86/xaa/xaacexp.h
+++ b/hw/xfree86/xaa/xaacexp.h
@@ -1,4 +1,3 @@
-/* $XFree86: xc/programs/Xserver/hw/xfree86/xaa/xaacexp.h,v 1.3 2000/01/21 02:30:06 dawes Exp $ */
#ifdef HAVE_XORG_CONFIG_H
diff --git a/hw/xfree86/xaa/xaalocal.h b/hw/xfree86/xaa/xaalocal.h
index 883e64d5b..7210d8492 100644
--- a/hw/xfree86/xaa/xaalocal.h
+++ b/hw/xfree86/xaa/xaalocal.h
@@ -1,4 +1,3 @@
-/* $XFree86: xc/programs/Xserver/hw/xfree86/xaa/xaalocal.h,v 1.36tsi Exp $ */
#ifndef _XAALOCAL_H
#define _XAALOCAL_H
diff --git a/hw/xfree86/xaa/xaawrap.h b/hw/xfree86/xaa/xaawrap.h
index 3ba0c1699..32c17a60c 100644
--- a/hw/xfree86/xaa/xaawrap.h
+++ b/hw/xfree86/xaa/xaawrap.h
@@ -1,4 +1,3 @@
-/* $XFree86: xc/programs/Xserver/hw/xfree86/xaa/xaawrap.h,v 1.3 1998/10/25 07:12:14 dawes Exp $ */
#define XAA_SCREEN_PROLOGUE(pScreen, field)\
((pScreen)->field = \
diff --git a/hw/xfree86/xf1bpp/Makefile.am b/hw/xfree86/xf1bpp/Makefile.am
index b8e4c3d53..e7c873ae8 100644
--- a/hw/xfree86/xf1bpp/Makefile.am
+++ b/hw/xfree86/xf1bpp/Makefile.am
@@ -60,8 +60,7 @@ libxf1bppmfb_a_SOURCES = \
libxf1bpp_la_SOURCES = $(libxf1bppmfb_a_SOURCES) $(libxf1bppgen_a_SOURCES)
-AM_CFLAGS = -DXF86MONO -include mfbmap.h $(DIX_CFLAGS) $(XORG_CFLAGS) \
- @SERVER_DEFINES@ @MODULE_DEFINES@ @LOADER_DEFINES@
+AM_CFLAGS = -DXF86MONO -include mfbmap.h $(DIX_CFLAGS) $(XORG_CFLAGS)
INCLUDES = $(XORG_INCS) -I$(top_srcdir)/mfb
mfbseg.c:
diff --git a/hw/xfree86/xf1bpp/mfbmap.h b/hw/xfree86/xf1bpp/mfbmap.h
index 12695003c..5825c1cf4 100644
--- a/hw/xfree86/xf1bpp/mfbmap.h
+++ b/hw/xfree86/xf1bpp/mfbmap.h
@@ -1,4 +1,3 @@
-/* $XFree86: xc/programs/Xserver/hw/xfree86/xf1bpp/mfbmap.h,v 1.1.2.2 1998/06/08 15:13:15 dawes Exp $ */
#ifndef _MFBMAP_H
#define _MFBMAP_H
diff --git a/hw/xfree86/xf1bpp/mfbunmap.h b/hw/xfree86/xf1bpp/mfbunmap.h
index 454091538..16237a163 100644
--- a/hw/xfree86/xf1bpp/mfbunmap.h
+++ b/hw/xfree86/xf1bpp/mfbunmap.h
@@ -1,4 +1,3 @@
-/* $XFree86: xc/programs/Xserver/hw/xfree86/xf1bpp/mfbunmap.h,v 1.1.2.1 1998/06/27 14:48:24 dawes Exp $ */
#ifdef _MFBMAP_H
#undef _MFBMAP_H
diff --git a/hw/xfree86/xf1bpp/xf1bpp.h b/hw/xfree86/xf1bpp/xf1bpp.h
index 18104a77e..33e5818c3 100644
--- a/hw/xfree86/xf1bpp/xf1bpp.h
+++ b/hw/xfree86/xf1bpp/xf1bpp.h
@@ -1,4 +1,3 @@
-/* $XFree86: xc/programs/Xserver/hw/xfree86/xf1bpp/xf1bpp.h,v 1.2 1998/07/25 16:59:25 dawes Exp $ */
/*
* Copyright (C) 1994-1998 The XFree86 Project, Inc. All Rights Reserved.
*
diff --git a/hw/xfree86/xf4bpp/Makefile.am b/hw/xfree86/xf4bpp/Makefile.am
index 56b690f4b..9af336446 100644
--- a/hw/xfree86/xf4bpp/Makefile.am
+++ b/hw/xfree86/xf4bpp/Makefile.am
@@ -57,6 +57,6 @@ mfbseg.c:
echo "#define POLYSEGMENT" > $@
echo "#include \"$(srcdir)/mfbline.c\"" >> $@
-INCLUDES = $(XORG_INCS) -I$(srcdir)/../xf1bpp -I$(top_srcdir)/mfb -I$(top_srcdir)/cfb
+INCLUDES = $(XORG_INCS) -I$(srcdir)/../xf1bpp -I$(top_srcdir)/mfb
-AM_CFLAGS = $(XORG_CFLAGS) @SERVER_DEFINES@ @MODULE_DEFINES@ @LOADER_DEFINES@
+AM_CFLAGS = $(DIX_CFLAGS) $(XORG_CFLAGS)
diff --git a/hw/xfree86/xf4bpp/OScompiler.h b/hw/xfree86/xf4bpp/OScompiler.h
index cc4266c3a..65f002000 100644
--- a/hw/xfree86/xf4bpp/OScompiler.h
+++ b/hw/xfree86/xf4bpp/OScompiler.h
@@ -1,4 +1,3 @@
-/* $XFree86: xc/programs/Xserver/hw/xfree86/xf4bpp/OScompiler.h,v 1.3 1999/01/31 12:22:15 dawes Exp $ */
/*
* Copyright IBM Corporation 1987,1988,1989
*
diff --git a/hw/xfree86/xf4bpp/emulOpStip.c b/hw/xfree86/xf4bpp/emulOpStip.c
index 2f63b1435..22ba90c2b 100644
--- a/hw/xfree86/xf4bpp/emulOpStip.c
+++ b/hw/xfree86/xf4bpp/emulOpStip.c
@@ -1,4 +1,3 @@
-/* $XFree86: xc/programs/Xserver/hw/xfree86/xf4bpp/emulOpStip.c,v 1.2 1998/07/25 16:59:27 dawes Exp $ */
/*
* Copyright IBM Corporation 1987,1988,1989
*
diff --git a/hw/xfree86/xf4bpp/emulRepAre.c b/hw/xfree86/xf4bpp/emulRepAre.c
index 9ae62149f..235bf9bd0 100644
--- a/hw/xfree86/xf4bpp/emulRepAre.c
+++ b/hw/xfree86/xf4bpp/emulRepAre.c
@@ -1,4 +1,3 @@
-/* $XFree86: xc/programs/Xserver/hw/xfree86/xf4bpp/emulRepAre.c,v 1.2 1998/07/25 16:59:27 dawes Exp $ */
/*
* Copyright IBM Corporation 1987,1988,1989
*
diff --git a/hw/xfree86/xf4bpp/emulTile.c b/hw/xfree86/xf4bpp/emulTile.c
index c4f15cad6..ddce1dab0 100644
--- a/hw/xfree86/xf4bpp/emulTile.c
+++ b/hw/xfree86/xf4bpp/emulTile.c
@@ -1,4 +1,3 @@
-/* $XFree86: xc/programs/Xserver/hw/xfree86/xf4bpp/emulTile.c,v 1.3tsi Exp $ */
/*
* Copyright IBM Corporation 1987,1988,1989
*
diff --git a/hw/xfree86/xf4bpp/ibmTrace.h b/hw/xfree86/xf4bpp/ibmTrace.h
index 15231a653..1bed6759f 100644
--- a/hw/xfree86/xf4bpp/ibmTrace.h
+++ b/hw/xfree86/xf4bpp/ibmTrace.h
@@ -1,4 +1,3 @@
-/* $XFree86: xc/programs/Xserver/hw/xfree86/xf4bpp/ibmTrace.h,v 1.1.2.1 1998/06/27 14:48:30 dawes Exp $ */
diff --git a/hw/xfree86/xf4bpp/mfbbres.c b/hw/xfree86/xf4bpp/mfbbres.c
index b54e23965..f0c3f7e7b 100644
--- a/hw/xfree86/xf4bpp/mfbbres.c
+++ b/hw/xfree86/xf4bpp/mfbbres.c
@@ -1,4 +1,3 @@
-/* $XFree86: xc/programs/Xserver/hw/xfree86/xf4bpp/mfbbres.c,v 1.2 1998/07/25 16:59:28 dawes Exp $ */
/* Combined Purdue/PurduePlus patches, level 2.0, 1/17/89 */
/***********************************************************
diff --git a/hw/xfree86/xf4bpp/mfbbresd.c b/hw/xfree86/xf4bpp/mfbbresd.c
index d28a6c2a3..ef800871e 100644
--- a/hw/xfree86/xf4bpp/mfbbresd.c
+++ b/hw/xfree86/xf4bpp/mfbbresd.c
@@ -1,4 +1,3 @@
-/* $XFree86: xc/programs/Xserver/hw/xfree86/xf4bpp/mfbbresd.c,v 1.3 1999/06/06 08:48:55 dawes Exp $ */
/***********************************************************
Copyright (c) 1987 X Consortium
diff --git a/hw/xfree86/xf4bpp/mfbfillarc.c b/hw/xfree86/xf4bpp/mfbfillarc.c
index e2cab12f5..88d4f72d9 100644
--- a/hw/xfree86/xf4bpp/mfbfillarc.c
+++ b/hw/xfree86/xf4bpp/mfbfillarc.c
@@ -1,4 +1,3 @@
-/* $XFree86: xc/programs/Xserver/hw/xfree86/xf4bpp/mfbfillarc.c,v 1.5tsi Exp $ */
/************************************************************
Copyright (c) 1989 X Consortium
diff --git a/hw/xfree86/xf4bpp/mfbhrzvert.c b/hw/xfree86/xf4bpp/mfbhrzvert.c
index eb510c0fb..82a205e1b 100644
--- a/hw/xfree86/xf4bpp/mfbhrzvert.c
+++ b/hw/xfree86/xf4bpp/mfbhrzvert.c
@@ -1,4 +1,3 @@
-/* $XFree86: xc/programs/Xserver/hw/xfree86/xf4bpp/mfbhrzvert.c,v 1.2 1998/07/25 16:59:29 dawes Exp $ */
/* Combined Purdue/PurduePlus patches, level 2.0, 1/17/89 */
/***********************************************************
diff --git a/hw/xfree86/xf4bpp/mfbimggblt.c b/hw/xfree86/xf4bpp/mfbimggblt.c
index 03107bbf3..b1f0b9f72 100644
--- a/hw/xfree86/xf4bpp/mfbimggblt.c
+++ b/hw/xfree86/xf4bpp/mfbimggblt.c
@@ -1,4 +1,3 @@
-/* $XFree86: xc/programs/Xserver/hw/xfree86/xf4bpp/mfbimggblt.c,v 1.8 2003/11/03 05:11:56 tsi Exp $ */
/* Combined Purdue/PurduePlus patches, level 2.0, 1/17/89 */
/***********************************************************
diff --git a/hw/xfree86/xf4bpp/mfbline.c b/hw/xfree86/xf4bpp/mfbline.c
index 5df58a7e4..82d8bd1c5 100644
--- a/hw/xfree86/xf4bpp/mfbline.c
+++ b/hw/xfree86/xf4bpp/mfbline.c
@@ -1,4 +1,3 @@
-/* $XFree86: xc/programs/Xserver/hw/xfree86/xf4bpp/mfbline.c,v 1.5 2003/11/03 05:11:56 tsi Exp $ */
/***********************************************************
Copyright (c) 1987 X Consortium
diff --git a/hw/xfree86/xf4bpp/mfbzerarc.c b/hw/xfree86/xf4bpp/mfbzerarc.c
index 54aa3b0c9..921993196 100644
--- a/hw/xfree86/xf4bpp/mfbzerarc.c
+++ b/hw/xfree86/xf4bpp/mfbzerarc.c
@@ -1,4 +1,3 @@
-/* $XFree86: xc/programs/Xserver/hw/xfree86/xf4bpp/mfbzerarc.c,v 1.4tsi Exp $ */
/************************************************************
diff --git a/hw/xfree86/xf4bpp/offscreen.c b/hw/xfree86/xf4bpp/offscreen.c
index 1bf634c80..f35bde7dd 100644
--- a/hw/xfree86/xf4bpp/offscreen.c
+++ b/hw/xfree86/xf4bpp/offscreen.c
@@ -1,4 +1,3 @@
-/* $XFree86: xc/programs/Xserver/hw/xfree86/xf4bpp/offscreen.c,v 1.4 1999/10/13 20:04:26 alanh Exp $ */
/*
* Copyright 1993 Gerrit Jan Akkerman
*
diff --git a/hw/xfree86/xf4bpp/ppcArea.c b/hw/xfree86/xf4bpp/ppcArea.c
index 56cab0d64..9c693e836 100644
--- a/hw/xfree86/xf4bpp/ppcArea.c
+++ b/hw/xfree86/xf4bpp/ppcArea.c
@@ -1,4 +1,3 @@
-/* $XFree86: xc/programs/Xserver/hw/xfree86/xf4bpp/ppcArea.c,v 1.3tsi Exp $ */
/*
* Copyright IBM Corporation 1987,1988,1989
*
diff --git a/hw/xfree86/xf4bpp/ppcBStore.c b/hw/xfree86/xf4bpp/ppcBStore.c
index 7686b6f9b..947602ef3 100644
--- a/hw/xfree86/xf4bpp/ppcBStore.c
+++ b/hw/xfree86/xf4bpp/ppcBStore.c
@@ -1,4 +1,3 @@
-/* $XFree86: xc/programs/Xserver/hw/xfree86/xf4bpp/ppcBStore.c,v 1.2 1998/07/25 16:59:32 dawes Exp $ */
/*
Copyright (c) 1987 X Consortium
diff --git a/hw/xfree86/xf4bpp/ppcCReduce.c b/hw/xfree86/xf4bpp/ppcCReduce.c
index f937aac34..ab46f85ab 100644
--- a/hw/xfree86/xf4bpp/ppcCReduce.c
+++ b/hw/xfree86/xf4bpp/ppcCReduce.c
@@ -1,4 +1,3 @@
-/* $XFree86: xc/programs/Xserver/hw/xfree86/xf4bpp/ppcCReduce.c,v 1.2 1998/07/25 16:59:32 dawes Exp $ */
/*
* Copyright IBM Corporation 1987,1988,1989
*
diff --git a/hw/xfree86/xf4bpp/ppcClip.c b/hw/xfree86/xf4bpp/ppcClip.c
index 9166bf256..acfd5bd00 100644
--- a/hw/xfree86/xf4bpp/ppcClip.c
+++ b/hw/xfree86/xf4bpp/ppcClip.c
@@ -1,4 +1,3 @@
-/* $XFree86: xc/programs/Xserver/hw/xfree86/xf4bpp/ppcClip.c,v 1.4 1999/06/06 08:48:58 dawes Exp $ */
/*
Copyright (c) 1987 X Consortium
diff --git a/hw/xfree86/xf4bpp/ppcCpArea.c b/hw/xfree86/xf4bpp/ppcCpArea.c
index e33795c77..2242074c1 100644
--- a/hw/xfree86/xf4bpp/ppcCpArea.c
+++ b/hw/xfree86/xf4bpp/ppcCpArea.c
@@ -1,4 +1,3 @@
-/* $XFree86: xc/programs/Xserver/hw/xfree86/xf4bpp/ppcCpArea.c,v 1.6tsi Exp $ */
/*
* Copyright IBM Corporation 1987,1988,1989
*
@@ -56,8 +55,7 @@ SOFTWARE.
#include "xf4bpp.h"
#include "mfbmap.h"
#define PSZ 8
-#include "cfb.h"
-#include "cfbmskbits.h"
+#include "mfb.h"
#include "mergerop.h"
#include "mi.h"
#include "pixmapstr.h"
@@ -88,8 +86,8 @@ vga16DoBitblt
int w, h;
int careful;
- widthSrc = cfbGetLongWidth(pSrc);
- widthDst = cfbGetLongWidth(pDst);
+ widthSrc = mfbGetPixelWidth(pSrc);
+ widthDst = mfbGetPixelWidth(pDst);
/* XXX we have to err on the side of safety when both are windows,
* because we don't know if IncludeInferiors is being used.
diff --git a/hw/xfree86/xf4bpp/ppcDepth.c b/hw/xfree86/xf4bpp/ppcDepth.c
index 8a67cdd30..26a53de86 100644
--- a/hw/xfree86/xf4bpp/ppcDepth.c
+++ b/hw/xfree86/xf4bpp/ppcDepth.c
@@ -1,4 +1,3 @@
-/* $XFree86: xc/programs/Xserver/hw/xfree86/xf4bpp/ppcDepth.c,v 1.2 1998/07/25 16:59:33 dawes Exp $ */
/*
* Copyright IBM Corporation 1987,1988,1989
*
diff --git a/hw/xfree86/xf4bpp/ppcFillRct.c b/hw/xfree86/xf4bpp/ppcFillRct.c
index 28c7acb6c..e501f65fb 100644
--- a/hw/xfree86/xf4bpp/ppcFillRct.c
+++ b/hw/xfree86/xf4bpp/ppcFillRct.c
@@ -1,4 +1,3 @@
-/* $XFree86: xc/programs/Xserver/hw/xfree86/xf4bpp/ppcFillRct.c,v 1.5tsi Exp $ */
/* Combined Purdue/PurduePlus patches, level 2.0, 1/17/89 */
/***********************************************************
diff --git a/hw/xfree86/xf4bpp/ppcGC.c b/hw/xfree86/xf4bpp/ppcGC.c
index 1a2de42f3..8153051f0 100644
--- a/hw/xfree86/xf4bpp/ppcGC.c
+++ b/hw/xfree86/xf4bpp/ppcGC.c
@@ -1,4 +1,3 @@
-/* $XFree86: xc/programs/Xserver/hw/xfree86/xf4bpp/ppcGC.c,v 1.7tsi Exp $ */
/*
Copyright (c) 1987 X Consortium
@@ -97,8 +96,8 @@ SOFTWARE.
*/
static GCFuncs vgaGCFuncs = {
xf4bppValidateGC,
- (void (*)())NoopDDA,
- (void (*)())NoopDDA,
+ (void (*)(GCPtr, unsigned long))NoopDDA,
+ (void (*)(GCPtr, unsigned long, GCPtr))NoopDDA,
xf4bppDestroyGC,
xf4bppChangeClip,
xf4bppDestroyClip,
diff --git a/hw/xfree86/xf4bpp/ppcGCstr.h b/hw/xfree86/xf4bpp/ppcGCstr.h
index 12a573c9d..fd064d1c1 100644
--- a/hw/xfree86/xf4bpp/ppcGCstr.h
+++ b/hw/xfree86/xf4bpp/ppcGCstr.h
@@ -1,4 +1,3 @@
-/* $XFree86: xc/programs/Xserver/hw/xfree86/xf4bpp/ppcGCstr.h,v 1.3 2003/02/18 21:29:59 tsi Exp $ */
/*
* Copyright IBM Corporation 1987,1988,1989
*
diff --git a/hw/xfree86/xf4bpp/ppcGetSp.c b/hw/xfree86/xf4bpp/ppcGetSp.c
index 0c48de4c8..dc31741f3 100644
--- a/hw/xfree86/xf4bpp/ppcGetSp.c
+++ b/hw/xfree86/xf4bpp/ppcGetSp.c
@@ -1,4 +1,3 @@
-/* $XFree86: xc/programs/Xserver/hw/xfree86/xf4bpp/ppcGetSp.c,v 1.2 1998/07/25 16:59:34 dawes Exp $ */
/*
* Copyright IBM Corporation 1987,1988,1989
*
diff --git a/hw/xfree86/xf4bpp/ppcIO.c b/hw/xfree86/xf4bpp/ppcIO.c
index 20b08ce9a..0d5afafa5 100644
--- a/hw/xfree86/xf4bpp/ppcIO.c
+++ b/hw/xfree86/xf4bpp/ppcIO.c
@@ -1,4 +1,3 @@
-/* $XFree86: xc/programs/Xserver/hw/xfree86/xf4bpp/ppcIO.c,v 1.5tsi Exp $ */
/*
Copyright (c) 1990 X Consortium
diff --git a/hw/xfree86/xf4bpp/ppcImg.c b/hw/xfree86/xf4bpp/ppcImg.c
index ab8774216..6ff7e8fef 100644
--- a/hw/xfree86/xf4bpp/ppcImg.c
+++ b/hw/xfree86/xf4bpp/ppcImg.c
@@ -1,4 +1,3 @@
-/* $XFree86: xc/programs/Xserver/hw/xfree86/xf4bpp/ppcImg.c,v 1.4tsi Exp $ */
/*
* Copyright IBM Corporation 1987,1988,1989
*
diff --git a/hw/xfree86/xf4bpp/ppcPixFS.c b/hw/xfree86/xf4bpp/ppcPixFS.c
index c8801fd32..08b09e9c7 100644
--- a/hw/xfree86/xf4bpp/ppcPixFS.c
+++ b/hw/xfree86/xf4bpp/ppcPixFS.c
@@ -1,4 +1,3 @@
-/* $XFree86: xc/programs/Xserver/hw/xfree86/xf4bpp/ppcPixFS.c,v 1.4tsi Exp $ */
/*
* Copyright IBM Corporation 1987,1988,1989
*
diff --git a/hw/xfree86/xf4bpp/ppcPixmap.c b/hw/xfree86/xf4bpp/ppcPixmap.c
index 0ccefcbd6..9f4cdc99a 100644
--- a/hw/xfree86/xf4bpp/ppcPixmap.c
+++ b/hw/xfree86/xf4bpp/ppcPixmap.c
@@ -1,4 +1,3 @@
-/* $XFree86: xc/programs/Xserver/hw/xfree86/xf4bpp/ppcPixmap.c,v 1.3 1999/01/14 13:05:34 dawes Exp $ */
/*
* Copyright IBM Corporation 1987,1988,1989
*
diff --git a/hw/xfree86/xf4bpp/ppcPntWin.c b/hw/xfree86/xf4bpp/ppcPntWin.c
index 11195e033..85ac22e6c 100644
--- a/hw/xfree86/xf4bpp/ppcPntWin.c
+++ b/hw/xfree86/xf4bpp/ppcPntWin.c
@@ -1,4 +1,3 @@
-/* $XFree86: xc/programs/Xserver/hw/xfree86/xf4bpp/ppcPntWin.c,v 1.3 1999/06/06 08:49:01 dawes Exp $ */
/*
* Copyright IBM Corporation 1987,1988,1989
*
diff --git a/hw/xfree86/xf4bpp/ppcPolyPnt.c b/hw/xfree86/xf4bpp/ppcPolyPnt.c
index c78622482..399ba3bda 100644
--- a/hw/xfree86/xf4bpp/ppcPolyPnt.c
+++ b/hw/xfree86/xf4bpp/ppcPolyPnt.c
@@ -1,4 +1,3 @@
-/* $XFree86: xc/programs/Xserver/hw/xfree86/xf4bpp/ppcPolyPnt.c,v 1.3 1999/06/06 08:49:01 dawes Exp $ */
/*
Copyright (c) 1987 X Consortium
diff --git a/hw/xfree86/xf4bpp/ppcPolyRec.c b/hw/xfree86/xf4bpp/ppcPolyRec.c
index 085cb4b25..d7f866232 100644
--- a/hw/xfree86/xf4bpp/ppcPolyRec.c
+++ b/hw/xfree86/xf4bpp/ppcPolyRec.c
@@ -1,4 +1,3 @@
-/* $XFree86: xc/programs/Xserver/hw/xfree86/xf4bpp/ppcPolyRec.c,v 1.2 1998/07/25 16:59:36 dawes Exp $ */
/*
* Copyright IBM Corporation 1987,1988,1989
*
diff --git a/hw/xfree86/xf4bpp/ppcQuery.c b/hw/xfree86/xf4bpp/ppcQuery.c
index 95914846d..810b81f24 100644
--- a/hw/xfree86/xf4bpp/ppcQuery.c
+++ b/hw/xfree86/xf4bpp/ppcQuery.c
@@ -1,4 +1,3 @@
-/* $XFree86: xc/programs/Xserver/hw/xfree86/xf4bpp/ppcQuery.c,v 1.2 1998/07/25 16:59:37 dawes Exp $ */
/*
* Copyright IBM Corporation 1987,1988,1989
*
diff --git a/hw/xfree86/xf4bpp/ppcRslvC.c b/hw/xfree86/xf4bpp/ppcRslvC.c
index ce00a8799..e4601e2af 100644
--- a/hw/xfree86/xf4bpp/ppcRslvC.c
+++ b/hw/xfree86/xf4bpp/ppcRslvC.c
@@ -1,4 +1,3 @@
-/* $XFree86: xc/programs/Xserver/hw/xfree86/xf4bpp/ppcRslvC.c,v 1.4 1999/06/06 08:49:01 dawes Exp $ */
/************************************************************
Copyright 1987 by Sun Microsystems, Inc. Mountain View, CA.
diff --git a/hw/xfree86/xf4bpp/ppcSetSp.c b/hw/xfree86/xf4bpp/ppcSetSp.c
index ffdc5d970..350cb9b14 100644
--- a/hw/xfree86/xf4bpp/ppcSetSp.c
+++ b/hw/xfree86/xf4bpp/ppcSetSp.c
@@ -1,4 +1,3 @@
-/* $XFree86: xc/programs/Xserver/hw/xfree86/xf4bpp/ppcSetSp.c,v 1.2 1998/07/25 16:59:41 dawes Exp $ */
/*
* Copyright IBM Corporation 1987,1988,1989
*
diff --git a/hw/xfree86/xf4bpp/ppcSpMcro.h b/hw/xfree86/xf4bpp/ppcSpMcro.h
index bc56ca1fc..41245ceb3 100644
--- a/hw/xfree86/xf4bpp/ppcSpMcro.h
+++ b/hw/xfree86/xf4bpp/ppcSpMcro.h
@@ -1,4 +1,3 @@
-/* $XFree86: xc/programs/Xserver/hw/xfree86/xf4bpp/ppcSpMcro.h,v 1.1.2.1 1998/06/27 14:48:49 dawes Exp $ */
/*
* Copyright IBM Corporation 1987,1988,1989
*
diff --git a/hw/xfree86/xf4bpp/ppcWinFS.c b/hw/xfree86/xf4bpp/ppcWinFS.c
index 820b80e53..bd9b1289f 100644
--- a/hw/xfree86/xf4bpp/ppcWinFS.c
+++ b/hw/xfree86/xf4bpp/ppcWinFS.c
@@ -1,4 +1,3 @@
-/* $XFree86: xc/programs/Xserver/hw/xfree86/xf4bpp/ppcWinFS.c,v 1.3tsi Exp $ */
/*
* Copyright IBM Corporation 1987,1988,1989
*
diff --git a/hw/xfree86/xf4bpp/ppcWindow.c b/hw/xfree86/xf4bpp/ppcWindow.c
index a2e910b1c..11c5e343e 100644
--- a/hw/xfree86/xf4bpp/ppcWindow.c
+++ b/hw/xfree86/xf4bpp/ppcWindow.c
@@ -1,4 +1,3 @@
-/* $XFree86: xc/programs/Xserver/hw/xfree86/xf4bpp/ppcWindow.c,v 1.3 1999/06/06 08:49:06 dawes Exp $ */
/*
Copyright (c) 1987 X Consortium
diff --git a/hw/xfree86/xf4bpp/vgaBitBlt.c b/hw/xfree86/xf4bpp/vgaBitBlt.c
index e13312233..e51e0dc1a 100644
--- a/hw/xfree86/xf4bpp/vgaBitBlt.c
+++ b/hw/xfree86/xf4bpp/vgaBitBlt.c
@@ -1,4 +1,3 @@
-/* $XFree86: xc/programs/Xserver/hw/xfree86/xf4bpp/vgaBitBlt.c,v 1.5 2003/11/03 05:11:57 tsi Exp $ */
/* GJA -- span move routines */
diff --git a/hw/xfree86/xf4bpp/vgaGC.c b/hw/xfree86/xf4bpp/vgaGC.c
index 64b4dae48..fd33727b9 100644
--- a/hw/xfree86/xf4bpp/vgaGC.c
+++ b/hw/xfree86/xf4bpp/vgaGC.c
@@ -1,4 +1,3 @@
-/* $XFree86: xc/programs/Xserver/hw/xfree86/xf4bpp/vgaGC.c,v 1.3tsi Exp $ */
/*
Copyright (c) 1987 X Consortium
diff --git a/hw/xfree86/xf4bpp/vgaImages.c b/hw/xfree86/xf4bpp/vgaImages.c
index 4806b9461..22f8d8f8e 100644
--- a/hw/xfree86/xf4bpp/vgaImages.c
+++ b/hw/xfree86/xf4bpp/vgaImages.c
@@ -1,4 +1,3 @@
-/* $XFree86: xc/programs/Xserver/hw/xfree86/xf4bpp/vgaImages.c,v 1.4tsi Exp $ */
/*
* Copyright IBM Corporation 1987,1988,1989
*
diff --git a/hw/xfree86/xf4bpp/vgaReg.h b/hw/xfree86/xf4bpp/vgaReg.h
index 552f07140..c5165256c 100644
--- a/hw/xfree86/xf4bpp/vgaReg.h
+++ b/hw/xfree86/xf4bpp/vgaReg.h
@@ -1,4 +1,3 @@
-/* $XFree86: xc/programs/Xserver/hw/xfree86/xf4bpp/vgaReg.h,v 1.3 1999/06/06 08:49:07 dawes Exp $ */
/*
* Copyright IBM Corporation 1987,1988,1989
*
diff --git a/hw/xfree86/xf4bpp/vgaSolid.c b/hw/xfree86/xf4bpp/vgaSolid.c
index 5cb47173c..562b1ebc4 100644
--- a/hw/xfree86/xf4bpp/vgaSolid.c
+++ b/hw/xfree86/xf4bpp/vgaSolid.c
@@ -1,4 +1,3 @@
-/* $XFree86: xc/programs/Xserver/hw/xfree86/xf4bpp/vgaSolid.c,v 1.5tsi Exp $ */
/*
* Copyright IBM Corporation 1987,1988,1989
*
diff --git a/hw/xfree86/xf4bpp/vgaStipple.c b/hw/xfree86/xf4bpp/vgaStipple.c
index a7bfa13d2..b81305bd4 100644
--- a/hw/xfree86/xf4bpp/vgaStipple.c
+++ b/hw/xfree86/xf4bpp/vgaStipple.c
@@ -1,4 +1,3 @@
-/* $XFree86: xc/programs/Xserver/hw/xfree86/xf4bpp/vgaStipple.c,v 1.5tsi Exp $ */
/*
* Copyright IBM Corporation 1987,1988,1989
*
diff --git a/hw/xfree86/xf4bpp/vgaVideo.h b/hw/xfree86/xf4bpp/vgaVideo.h
index ba0aae662..14e85ef79 100644
--- a/hw/xfree86/xf4bpp/vgaVideo.h
+++ b/hw/xfree86/xf4bpp/vgaVideo.h
@@ -1,4 +1,3 @@
-/* $XFree86: xc/programs/Xserver/hw/xfree86/xf4bpp/vgaVideo.h,v 1.1.2.1 1998/06/27 14:48:54 dawes Exp $ */
/*
* Copyright IBM Corporation 1987,1988,1989
*
diff --git a/hw/xfree86/xf4bpp/wm3.c b/hw/xfree86/xf4bpp/wm3.c
index 6b501b570..24ecf3dd2 100644
--- a/hw/xfree86/xf4bpp/wm3.c
+++ b/hw/xfree86/xf4bpp/wm3.c
@@ -1,4 +1,3 @@
-/* $XFree86: xc/programs/Xserver/hw/xfree86/xf4bpp/wm3.c,v 1.3 1999/06/06 08:49:08 dawes Exp $ */
diff --git a/hw/xfree86/xf4bpp/wm3.h b/hw/xfree86/xf4bpp/wm3.h
index 1def6f607..2d66557fc 100644
--- a/hw/xfree86/xf4bpp/wm3.h
+++ b/hw/xfree86/xf4bpp/wm3.h
@@ -1,4 +1,3 @@
-/* $XFree86: xc/programs/Xserver/hw/xfree86/xf4bpp/wm3.h,v 1.2 1998/07/25 16:59:46 dawes Exp $ */
diff --git a/hw/xfree86/xf4bpp/xf4bpp.h b/hw/xfree86/xf4bpp/xf4bpp.h
index 1f465374e..8d2da35a5 100644
--- a/hw/xfree86/xf4bpp/xf4bpp.h
+++ b/hw/xfree86/xf4bpp/xf4bpp.h
@@ -1,4 +1,3 @@
-/* $XFree86: xc/programs/Xserver/hw/xfree86/xf4bpp/xf4bpp.h,v 1.9 2003/11/03 05:11:57 tsi Exp $ */
#ifndef __XF4BPP_H__
#define __XF4BPP_H__
diff --git a/hw/xfree86/xf8_16bpp/Makefile.am b/hw/xfree86/xf8_16bpp/Makefile.am
index 6538d1fab..3c5b8c93d 100644
--- a/hw/xfree86/xf8_16bpp/Makefile.am
+++ b/hw/xfree86/xf8_16bpp/Makefile.am
@@ -4,7 +4,7 @@ sdk_HEADERS = cfb8_16.h
INCLUDES = $(XORG_INCS) -I$(top_srcdir)/fb
-AM_CFLAGS = $(XORG_CFLAGS) @SERVER_DEFINES@ @MODULE_DEFINES@ @LOADER_DEFINES@
+AM_CFLAGS = $(DIX_CFLAGS) $(XORG_CFLAGS)
libxf8_16bpp_la_LDFLAGS = -avoid-version
diff --git a/hw/xfree86/xf8_32bpp/Makefile.am b/hw/xfree86/xf8_32bpp/Makefile.am
index 1212fc0de..bbcd10f94 100644
--- a/hw/xfree86/xf8_32bpp/Makefile.am
+++ b/hw/xfree86/xf8_32bpp/Makefile.am
@@ -4,7 +4,7 @@ sdk_HEADERS = cfb8_32.h
INCLUDES = $(XORG_INCS) -I$(top_srcdir)/mfb -I$(top_srcdir)/cfb
-AM_CFLAGS = $(XORG_CFLAGS) @SERVER_DEFINES@ @MODULE_DEFINES@ @LOADER_DEFINES@
+AM_CFLAGS = $(DIX_CFLAGS) $(XORG_CFLAGS)
libxf8_32bpp_la_LDFLAGS = -avoid-version
diff --git a/hw/xfree86/xf8_32bpp/cfb8_32.h b/hw/xfree86/xf8_32bpp/cfb8_32.h
index 2785fa252..969fa290f 100644
--- a/hw/xfree86/xf8_32bpp/cfb8_32.h
+++ b/hw/xfree86/xf8_32bpp/cfb8_32.h
@@ -1,4 +1,3 @@
-/* $XFree86: xc/programs/Xserver/hw/xfree86/xf8_32bpp/cfb8_32.h,v 1.5 2000/03/02 02:32:52 mvojkovi Exp $ */
#ifdef HAVE_XORG_CONFIG_H
#include <xorg-config.h>
diff --git a/hw/xfree86/xf8_32bpp/cfbbstore.c b/hw/xfree86/xf8_32bpp/cfbbstore.c
index 842b872d7..f4d570f8b 100644
--- a/hw/xfree86/xf8_32bpp/cfbbstore.c
+++ b/hw/xfree86/xf8_32bpp/cfbbstore.c
@@ -1,4 +1,3 @@
-/* $XFree86: xc/programs/Xserver/hw/xfree86/xf8_32bpp/cfbbstore.c,v 1.2 1999/01/31 12:22:17 dawes Exp $ */
#define PSZ 8
#ifdef HAVE_XORG_CONFIG_H
diff --git a/hw/xfree86/xf8_32bpp/cfbcpyarea.c b/hw/xfree86/xf8_32bpp/cfbcpyarea.c
index 6958861ec..c2eb1a04e 100644
--- a/hw/xfree86/xf8_32bpp/cfbcpyarea.c
+++ b/hw/xfree86/xf8_32bpp/cfbcpyarea.c
@@ -1,4 +1,3 @@
-/* $XFree86: xc/programs/Xserver/hw/xfree86/xf8_32bpp/cfbcpyarea.c,v 1.5 2000/02/29 00:17:16 mvojkovi Exp $ */
#ifdef HAVE_XORG_CONFIG_H
#include <xorg-config.h>
diff --git a/hw/xfree86/xf8_32bpp/cfbgc.c b/hw/xfree86/xf8_32bpp/cfbgc.c
index 0ffafd048..a7787caa9 100644
--- a/hw/xfree86/xf8_32bpp/cfbgc.c
+++ b/hw/xfree86/xf8_32bpp/cfbgc.c
@@ -1,4 +1,3 @@
-/* $XFree86: xc/programs/Xserver/hw/xfree86/xf8_32bpp/cfbgc.c,v 1.3 2000/02/11 06:33:46 mvojkovi Exp $ */
/***********************************************************
Copyright 1987, 1998 The Open Group
diff --git a/hw/xfree86/xf8_32bpp/cfbgcunder.c b/hw/xfree86/xf8_32bpp/cfbgcunder.c
index 3f45a85d1..d90321355 100644
--- a/hw/xfree86/xf8_32bpp/cfbgcunder.c
+++ b/hw/xfree86/xf8_32bpp/cfbgcunder.c
@@ -1,4 +1,3 @@
-/* $XFree86: xc/programs/Xserver/hw/xfree86/xf8_32bpp/cfbgcunder.c,v 1.5 2001/12/14 19:59:52 dawes Exp $ */
/***********************************************************
Copyright 1987, 1998 The Open Group
diff --git a/hw/xfree86/xf8_32bpp/cfbimage.c b/hw/xfree86/xf8_32bpp/cfbimage.c
index 629d6bf6a..01a5a5eb6 100644
--- a/hw/xfree86/xf8_32bpp/cfbimage.c
+++ b/hw/xfree86/xf8_32bpp/cfbimage.c
@@ -1,4 +1,3 @@
-/* $XFree86: xc/programs/Xserver/hw/xfree86/xf8_32bpp/cfbimage.c,v 1.2 2000/02/25 00:21:40 mvojkovi Exp $ */
#ifdef HAVE_XORG_CONFIG_H
#include <xorg-config.h>
diff --git a/hw/xfree86/xf8_32bpp/cfbpntwin.c b/hw/xfree86/xf8_32bpp/cfbpntwin.c
index 30ddb0c4b..a1b988716 100644
--- a/hw/xfree86/xf8_32bpp/cfbpntwin.c
+++ b/hw/xfree86/xf8_32bpp/cfbpntwin.c
@@ -1,5 +1,3 @@
-/* $XdotOrg: xc/programs/Xserver/hw/xfree86/xf8_32bpp/cfbpntwin.c,v 1.3 2005/04/20 12:25:40 daniels Exp $ */
-/* $XFree86: xc/programs/Xserver/hw/xfree86/xf8_32bpp/cfbpntwin.c,v 1.1 1999/01/03 03:58:56 dawes Exp $ */
#ifdef HAVE_XORG_CONFIG_H
#include <xorg-config.h>
diff --git a/hw/xfree86/xf8_32bpp/cfbscrinit.c b/hw/xfree86/xf8_32bpp/cfbscrinit.c
index 2e4dd7296..7cbdb5a66 100644
--- a/hw/xfree86/xf8_32bpp/cfbscrinit.c
+++ b/hw/xfree86/xf8_32bpp/cfbscrinit.c
@@ -1,4 +1,3 @@
-/* $XFree86: xc/programs/Xserver/hw/xfree86/xf8_32bpp/cfbscrinit.c,v 1.11 2001/04/14 21:17:49 mvojkovi Exp $ */
#ifdef HAVE_XORG_CONFIG_H
diff --git a/hw/xfree86/xf8_32bpp/cfbwindow.c b/hw/xfree86/xf8_32bpp/cfbwindow.c
index d2d4cfb6b..ce741cb55 100644
--- a/hw/xfree86/xf8_32bpp/cfbwindow.c
+++ b/hw/xfree86/xf8_32bpp/cfbwindow.c
@@ -1,4 +1,3 @@
-/* $XFree86: xc/programs/Xserver/hw/xfree86/xf8_32bpp/cfbwindow.c,v 1.8tsi Exp $ */
#ifdef HAVE_XORG_CONFIG_H
diff --git a/hw/xfree86/xf8_32bpp/xf86overlay.c b/hw/xfree86/xf8_32bpp/xf86overlay.c
index 2316db05f..c5585ca6d 100644
--- a/hw/xfree86/xf8_32bpp/xf86overlay.c
+++ b/hw/xfree86/xf8_32bpp/xf86overlay.c
@@ -1,4 +1,3 @@
-/* $XFree86: xc/programs/Xserver/hw/xfree86/xf8_32bpp/xf86overlay.c,v 1.8 2000/03/25 20:14:43 mvojkovi Exp $ */
/*
Copyright (C) 1998. The XFree86 Project Inc.
diff --git a/hw/xfree86/xorgconf.cpp b/hw/xfree86/xorgconf.cpp
index c94c1e5a4..1995045b8 100644
--- a/hw/xfree86/xorgconf.cpp
+++ b/hw/xfree86/xorgconf.cpp
@@ -54,12 +54,8 @@ XCOMM command (or a combination of both methods)
FontPath LOCALFONTPATH
FontPath MISCFONTPATH
- FontPath DPI75USFONTPATH
- FontPath DPI100USFONTPATH
FontPath T1FONTPATH
- FontPath TRUETYPEFONTPATH
- FontPath CIDFONTPATH
- FontPath SPFONTPATH
+ FontPath TRUETYPEFONTPATH
FontPath DPI75FONTPATH
FontPath DPI100FONTPATH
@@ -179,13 +175,7 @@ XCOMM **********************************************************************
Section "InputDevice"
Identifier "Keyboard1"
- Driver "keyboard"
-
-XCOMM For most OSs the protocol can be omitted (it defaults to "Standard").
-XCOMM When using XQUEUE (only for SVR3 and SVR4, but not Solaris), comment
-XCOMM out the above line, and uncomment the following line.
-
-XCOMM Option "Protocol" "Xqueue"
+ Driver "kbd"
XCOMM Set the keyboard auto repeat parameters. Not all platforms implement
XCOMM this.
@@ -270,12 +260,6 @@ XCOMM be available.
XCOMM Option "Protocol" "PS/2"
-XCOMM When using XQUEUE (only for SVR3 and SVR4, but not Solaris), use
-XCOMM the following instead of any of the lines above. The Device line
-XCOMM is not required in this case.
-
-XCOMM Option "Protocol" "Xqueue"
-
XCOMM Baudrate and SampleRate are only for some older Logitech mice. In
XCOMM almost every case these lines should be omitted.
diff --git a/hw/xgl/Makefile.am b/hw/xgl/Makefile.am
index 0aa94f9a5..965060cd7 100644
--- a/hw/xgl/Makefile.am
+++ b/hw/xgl/Makefile.am
@@ -19,7 +19,7 @@ SUBDIRS = \
$(XEGL_SUBDIRS)
AM_CFLAGS = \
- @SERVER_DEFINES@ \
+ $(DIX_CFLAGS) \
-DHAVE_XGL_CONFIG_H \
-DHAVE_DIX_CONFIG_H \
-I$(top_srcdir)/GL/glx \
diff --git a/hw/xgl/egl/Makefile.am b/hw/xgl/egl/Makefile.am
index 701320de5..5136e58b1 100644
--- a/hw/xgl/egl/Makefile.am
+++ b/hw/xgl/egl/Makefile.am
@@ -9,7 +9,7 @@ SUBDIRS = \
$(XGL_MODULE_DIRS)
AM_CFLAGS = \
- @SERVER_DEFINES@ \
+ $(DIX_CFLAGS) \
-DHAVE_XGL_CONFIG_H \
-DHAVE_DIX_CONFIG_H \
$(XEGLMODULES_CFLAGS)
diff --git a/hw/xgl/egl/module/Makefile.am b/hw/xgl/egl/module/Makefile.am
index 7ed217322..c84f85c90 100644
--- a/hw/xgl/egl/module/Makefile.am
+++ b/hw/xgl/egl/module/Makefile.am
@@ -1,4 +1,5 @@
AM_CFLAGS = \
+ $(DIX_CFLAGS) \
-I$(srcdir)/.. \
-I$(srcdir)/../.. \
$(XEGLMODULES_CFLAGS)
diff --git a/hw/xgl/egl/module/xeglmodule.c b/hw/xgl/egl/module/xeglmodule.c
index ff695f614..abd0d0d75 100644
--- a/hw/xgl/egl/module/xeglmodule.c
+++ b/hw/xgl/egl/module/xeglmodule.c
@@ -52,7 +52,7 @@ InitOutput (ScreenInfo *pScreenInfo,
Bool
LegalModifier (unsigned int key,
- DevicePtr pDev)
+ DeviceIntPtr pDev)
{
return xeglLegalModifier (key, pDev);
}
diff --git a/hw/xgl/egl/xegl.c b/hw/xgl/egl/xegl.c
index 70db7c083..c671dbe7c 100644
--- a/hw/xgl/egl/xegl.c
+++ b/hw/xgl/egl/xegl.c
@@ -252,7 +252,7 @@ xeglInitInput (int argc,
Bool
xeglLegalModifier (unsigned int key,
- DevicePtr pDev)
+ DeviceIntPtr pDev)
{
return KdLegalModifier (key, pDev);
}
diff --git a/hw/xgl/egl/xegl.h b/hw/xgl/egl/xegl.h
index cf21fca95..be9b48c9c 100644
--- a/hw/xgl/egl/xegl.h
+++ b/hw/xgl/egl/xegl.h
@@ -173,7 +173,7 @@ KdWakeupHandler (pointer data,
Bool
KdLegalModifier (unsigned int key,
- DevicePtr pDev);
+ DeviceIntPtr pDev);
void
KdProcessInputEvents (void);
diff --git a/hw/xgl/egl/xeglinit.c b/hw/xgl/egl/xeglinit.c
index 51100a4d1..c28d946ac 100644
--- a/hw/xgl/egl/xeglinit.c
+++ b/hw/xgl/egl/xeglinit.c
@@ -58,7 +58,7 @@ InitOutput (ScreenInfo *pScreenInfo,
Bool
LegalModifier (unsigned int key,
- DevicePtr pDev)
+ DeviceIntPtr pDev)
{
return xeglLegalModifier (key, pDev);
}
diff --git a/hw/xgl/glx/Makefile.am b/hw/xgl/glx/Makefile.am
index 492921210..314c02e96 100644
--- a/hw/xgl/glx/Makefile.am
+++ b/hw/xgl/glx/Makefile.am
@@ -15,7 +15,7 @@ AM_CFLAGS = \
-I$(top_srcdir)/GL/include \
-I@MESA_SOURCE@/include \
-I@MESA_SOURCE@/src/mesa/glapi \
- @SERVER_DEFINES@ \
+ $(DIX_CFLAGS) \
-DHAVE_XGL_CONFIG_H \
-DHAVE_DIX_CONFIG_H \
$(XGLXMODULES_CFLAGS)
diff --git a/hw/xgl/glx/module/Makefile.am b/hw/xgl/glx/module/Makefile.am
index 846942a43..bd1c4b08f 100644
--- a/hw/xgl/glx/module/Makefile.am
+++ b/hw/xgl/glx/module/Makefile.am
@@ -2,7 +2,7 @@ if GLX
GLX_LIB = $(top_builddir)/hw/xgl/glxext/libxglglxext.la
endif
-AM_CFLAGS = \
+AM_CFLAGS = $(DIX_CFLAGS) \
-I$(srcdir)/.. \
-I$(srcdir)/../.. \
$(XGLXMODULES_CFLAGS)
diff --git a/hw/xgl/glx/module/xglxmodule.c b/hw/xgl/glx/module/xglxmodule.c
index 066cb8082..40af8907d 100644
--- a/hw/xgl/glx/module/xglxmodule.c
+++ b/hw/xgl/glx/module/xglxmodule.c
@@ -52,7 +52,7 @@ InitOutput (ScreenInfo *pScreenInfo,
Bool
LegalModifier (unsigned int key,
- DevicePtr pDev)
+ DeviceIntPtr pDev)
{
return xglxLegalModifier (key, pDev);
}
diff --git a/hw/xgl/glx/xglx.c b/hw/xgl/glx/xglx.c
index 1ded3e304..57cb84702 100644
--- a/hw/xgl/glx/xglx.c
+++ b/hw/xgl/glx/xglx.c
@@ -1243,7 +1243,7 @@ xglxKeybdProc (DeviceIntPtr pDevice,
Bool
xglxLegalModifier (unsigned int key,
- DevicePtr pDev)
+ DeviceIntPtr pDev)
{
return TRUE;
}
diff --git a/hw/xgl/glx/xglx.h b/hw/xgl/glx/xglx.h
index b0c5d3d70..a8c894661 100644
--- a/hw/xgl/glx/xglx.h
+++ b/hw/xgl/glx/xglx.h
@@ -91,7 +91,7 @@ xglxInitOutput (ScreenInfo *pScreenInfo,
Bool
xglxLegalModifier (unsigned int key,
- DevicePtr pDev);
+ DeviceIntPtr pDev);
void
xglxProcessInputEvents (void);
diff --git a/hw/xgl/glx/xglxinit.c b/hw/xgl/glx/xglxinit.c
index 50bbca52b..b87e5d682 100644
--- a/hw/xgl/glx/xglxinit.c
+++ b/hw/xgl/glx/xglxinit.c
@@ -81,7 +81,7 @@ InitOutput (ScreenInfo *pScreenInfo,
Bool
LegalModifier (unsigned int key,
- DevicePtr pDev)
+ DeviceIntPtr pDev)
{
return xglxLegalModifier (key, pDev);
}
diff --git a/hw/xgl/glxext/Makefile.am b/hw/xgl/glxext/Makefile.am
index f9b9c0d68..98a9b13c4 100644
--- a/hw/xgl/glxext/Makefile.am
+++ b/hw/xgl/glxext/Makefile.am
@@ -1,7 +1,7 @@
SUBDIRS = module
AM_CFLAGS = \
- @SERVER_DEFINES@ \
+ $(DIX_CFLAGS) \
-DHAVE_XGL_CONFIG_H \
-DHAVE_DIX_CONFIG_H \
$(XGLMODULES_CFLAGS) \
diff --git a/hw/xgl/glxext/module/Makefile.am b/hw/xgl/glxext/module/Makefile.am
index 660838dd9..4633f7ffa 100644
--- a/hw/xgl/glxext/module/Makefile.am
+++ b/hw/xgl/glxext/module/Makefile.am
@@ -1,5 +1,5 @@
AM_CFLAGS = \
- @SERVER_DEFINES@ \
+ $(DIX_CFLAGS) \
-DHAVE_XGL_CONFIG_H \
-DHAVE_DIX_CONFIG_H \
$(XGLMODULES_CFLAGS) \
diff --git a/hw/xgl/xglinit.c b/hw/xgl/xglinit.c
index 3d93c46cc..e0c9e7ded 100644
--- a/hw/xgl/xglinit.c
+++ b/hw/xgl/xglinit.c
@@ -192,7 +192,7 @@ InitOutput (ScreenInfo *pScreenInfo,
Bool
LegalModifier (unsigned int key,
- DevicePtr pDev)
+ DeviceIntPtr pDev)
{
return (*__ddxFunc.legalModifier) (key, pDev);
}
diff --git a/hw/xnest/.gitignore b/hw/xnest/.gitignore
new file mode 100644
index 000000000..fc92eb176
--- /dev/null
+++ b/hw/xnest/.gitignore
@@ -0,0 +1,2 @@
+Xnest.1
+Xnest.1x
diff --git a/hw/xnest/Args.c b/hw/xnest/Args.c
index a36677491..c2e8b0db7 100644
--- a/hw/xnest/Args.c
+++ b/hw/xnest/Args.c
@@ -1,4 +1,3 @@
-/* $Xorg: Args.c,v 1.3 2000/08/17 19:53:26 cpqbld Exp $ */
/*
Copyright 1993 by Davor Matic
@@ -54,6 +53,16 @@ Window xnestParentWindow = 0;
/* ddxInitGlobals - called by |InitGlobals| from os/util.c */
void ddxInitGlobals(void)
{
+#ifdef COMPOSITE
+ /* XXX terrible hack */
+ extern Bool noCompositeExtension;
+ noCompositeExtension = TRUE;
+#endif
+
+#ifdef XKB
+ extern Bool noXkbExtension;
+ noXkbExtension = TRUE;
+#endif
}
int
diff --git a/hw/xnest/Args.h b/hw/xnest/Args.h
index a0c586bcb..38090fd0e 100644
--- a/hw/xnest/Args.h
+++ b/hw/xnest/Args.h
@@ -1,4 +1,3 @@
-/* $Xorg: Args.h,v 1.3 2000/08/17 19:53:27 cpqbld Exp $ */
/*
Copyright 1993 by Davor Matic
diff --git a/hw/xnest/Color.c b/hw/xnest/Color.c
index 779633a96..2dd60971f 100644
--- a/hw/xnest/Color.c
+++ b/hw/xnest/Color.c
@@ -1,4 +1,3 @@
-/* $Xorg: Color.c,v 1.3 2000/08/17 19:53:27 cpqbld Exp $ */
/*
Copyright 1993 by Davor Matic
diff --git a/hw/xnest/Color.h b/hw/xnest/Color.h
index 9ce72a946..aec0a248c 100644
--- a/hw/xnest/Color.h
+++ b/hw/xnest/Color.h
@@ -1,4 +1,3 @@
-/* $Xorg: Color.h,v 1.3 2000/08/17 19:53:28 cpqbld Exp $ */
/*
Copyright 1993 by Davor Matic
diff --git a/hw/xnest/Cursor.c b/hw/xnest/Cursor.c
index f95860022..134276e7b 100644
--- a/hw/xnest/Cursor.c
+++ b/hw/xnest/Cursor.c
@@ -1,4 +1,3 @@
-/* $Xorg: Cursor.c,v 1.3 2000/08/17 19:53:28 cpqbld Exp $ */
/*
Copyright 1993 by Davor Matic
@@ -12,7 +11,6 @@ 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>
diff --git a/hw/xnest/Display.c b/hw/xnest/Display.c
index fa8457651..57f3a688f 100644
--- a/hw/xnest/Display.c
+++ b/hw/xnest/Display.c
@@ -1,4 +1,3 @@
-/* $Xorg: Display.c,v 1.3 2000/08/17 19:53:28 cpqbld Exp $ */
/*
Copyright 1993 by Davor Matic
@@ -12,7 +11,6 @@ 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
diff --git a/hw/xnest/Display.h b/hw/xnest/Display.h
index 85aedc583..d0eefd57c 100644
--- a/hw/xnest/Display.h
+++ b/hw/xnest/Display.h
@@ -1,4 +1,3 @@
-/* $Xorg: Display.h,v 1.3 2000/08/17 19:53:28 cpqbld Exp $ */
/*
Copyright 1993 by Davor Matic
@@ -12,7 +11,6 @@ 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
diff --git a/hw/xnest/Drawable.h b/hw/xnest/Drawable.h
index 7b96bdfee..61159c9ba 100644
--- a/hw/xnest/Drawable.h
+++ b/hw/xnest/Drawable.h
@@ -1,4 +1,3 @@
-/* $Xorg: Drawable.h,v 1.3 2000/08/17 19:53:28 cpqbld Exp $ */
/*
Copyright 1993 by Davor Matic
diff --git a/hw/xnest/Events.c b/hw/xnest/Events.c
index 3d520279c..a20924128 100644
--- a/hw/xnest/Events.c
+++ b/hw/xnest/Events.c
@@ -1,4 +1,3 @@
-/* $Xorg: Events.c,v 1.3 2000/08/17 19:53:28 cpqbld Exp $ */
/*
Copyright 1993 by Davor Matic
@@ -12,7 +11,6 @@ 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>
@@ -39,10 +37,13 @@ is" without express or implied warranty.
#include "XNWindow.h"
#include "Events.h"
#include "Keyboard.h"
+#include "Pointer.h"
#include "mipointer.h"
CARD32 lastEventTime = 0;
+extern xEvent *xnestEvents;
+
void
ProcessInputEvents()
{
@@ -103,11 +104,12 @@ xnestCollectExposures()
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);
+ int i, n;
+
+ lastEventTime = GetTimeInMillis();
+ n = GetKeyboardEvents(xnestEvents, xnestKeyboardDevice, type, keycode);
+ for (i = 0; i < n; i++)
+ mieqEnqueue(xnestKeyboardDevice, xnestEvents + i);
}
void
@@ -115,6 +117,7 @@ xnestCollectEvents()
{
XEvent X;
xEvent x;
+ int i, n, valuators[2];
ScreenPtr pScreen;
while (XCheckIfEvent(xnestDisplay, &X, xnestNotExposurePredicate, NULL)) {
@@ -131,30 +134,30 @@ xnestCollectEvents()
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);
+ lastEventTime = GetTimeInMillis();
+ n = GetPointerEvents(xnestEvents, xnestPointerDevice, ButtonPress,
+ X.xbutton.button, POINTER_RELATIVE, 0, 0, NULL);
+ for (i = 0; i < n; i++)
+ mieqEnqueue(xnestPointerDevice, xnestEvents + i);
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);
+ lastEventTime = GetTimeInMillis();
+ n = GetPointerEvents(xnestEvents, xnestPointerDevice, ButtonRelease,
+ X.xbutton.button, POINTER_RELATIVE, 0, 0, NULL);
+ for (i = 0; i < n; i++)
+ mieqEnqueue(xnestPointerDevice, xnestEvents + i);
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());
+ valuators[0] = X.xmotion.x;
+ valuators[1] = X.xmotion.y;
+ lastEventTime = GetTimeInMillis();
+ n = GetPointerEvents(xnestEvents, xnestPointerDevice, MotionNotify,
+ 0, POINTER_ABSOLUTE, 0, 2, valuators);
+ for (i = 0; i < n; i++)
+ mieqEnqueue(xnestPointerDevice, xnestEvents + i);
break;
case FocusIn:
@@ -181,15 +184,13 @@ xnestCollectEvents()
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());
+ valuators[0] = X.xcrossing.x;
+ valuators[1] = X.xcrossing.y;
+ lastEventTime = GetTimeInMillis();
+ n = GetPointerEvents(xnestEvents, xnestPointerDevice, MotionNotify,
+ 0, POINTER_ABSOLUTE, 0, 2, valuators);
+ for (i = 0; i < n; i++)
+ mieqEnqueue(xnestPointerDevice, xnestEvents + i);
xnestDirectInstallColormaps(pScreen);
}
}
diff --git a/hw/xnest/Events.h b/hw/xnest/Events.h
index c61b26c0d..cdad9f398 100644
--- a/hw/xnest/Events.h
+++ b/hw/xnest/Events.h
@@ -1,4 +1,3 @@
-/* $Xorg: Events.h,v 1.3 2000/08/17 19:53:28 cpqbld Exp $ */
/*
Copyright 1993 by Davor Matic
diff --git a/hw/xnest/Font.c b/hw/xnest/Font.c
index d86816e8f..72edcee9a 100644
--- a/hw/xnest/Font.c
+++ b/hw/xnest/Font.c
@@ -1,4 +1,3 @@
-/* $Xorg: Font.c,v 1.3 2000/08/17 19:53:28 cpqbld Exp $ */
/*
Copyright 1993 by Davor Matic
@@ -12,7 +11,6 @@ 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>
diff --git a/hw/xnest/GC.c b/hw/xnest/GC.c
index e46b48f11..a52ce1f35 100644
--- a/hw/xnest/GC.c
+++ b/hw/xnest/GC.c
@@ -1,4 +1,3 @@
-/* $Xorg: GC.c,v 1.3 2000/08/17 19:53:28 cpqbld Exp $ */
/*
Copyright 1993 by Davor Matic
@@ -12,7 +11,6 @@ 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>
diff --git a/hw/xnest/GCOps.c b/hw/xnest/GCOps.c
index 233424823..ad9668ec1 100644
--- a/hw/xnest/GCOps.c
+++ b/hw/xnest/GCOps.c
@@ -1,4 +1,3 @@
-/* $Xorg: GCOps.c,v 1.3 2000/08/17 19:53:28 cpqbld Exp $ */
/*
Copyright 1993 by Davor Matic
@@ -12,7 +11,6 @@ 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>
diff --git a/hw/xnest/GCOps.h b/hw/xnest/GCOps.h
index ccdc40ebe..fce9d6cb3 100644
--- a/hw/xnest/GCOps.h
+++ b/hw/xnest/GCOps.h
@@ -1,4 +1,3 @@
-/* $Xorg: GCOps.h,v 1.3 2000/08/17 19:53:28 cpqbld Exp $ */
/*
Copyright 1993 by Davor Matic
diff --git a/hw/xnest/GetTime.c b/hw/xnest/GetTime.c
deleted file mode 100644
index bdcc6beae..000000000
--- a/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/hw/xnest/Handlers.c b/hw/xnest/Handlers.c
index 9915502c4..a113f488a 100644
--- a/hw/xnest/Handlers.c
+++ b/hw/xnest/Handlers.c
@@ -1,4 +1,3 @@
-/* $Xorg: Handlers.c,v 1.3 2000/08/17 19:53:28 cpqbld Exp $ */
/*
Copyright 1993 by Davor Matic
@@ -12,7 +11,6 @@ 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>
diff --git a/hw/xnest/Handlers.h b/hw/xnest/Handlers.h
index 9a1e809cc..fe064213e 100644
--- a/hw/xnest/Handlers.h
+++ b/hw/xnest/Handlers.h
@@ -1,4 +1,3 @@
-/* $Xorg: Handlers.h,v 1.3 2000/08/17 19:53:28 cpqbld Exp $ */
/*
Copyright 1993 by Davor Matic
diff --git a/hw/xnest/Init.c b/hw/xnest/Init.c
index dcbd724fd..5bf0300c6 100644
--- a/hw/xnest/Init.c
+++ b/hw/xnest/Init.c
@@ -1,4 +1,3 @@
-/* $Xorg: Init.c,v 1.3 2000/08/17 19:53:28 cpqbld Exp $ */
/*
Copyright 1993 by Davor Matic
@@ -12,7 +11,6 @@ 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>
@@ -47,6 +45,8 @@ is" without express or implied warranty.
Bool xnestDoFullGeneration = True;
+xEvent *xnestEvents = NULL;
+
void
InitOutput(ScreenInfo *screenInfo, int argc, char *argv[])
{
@@ -94,10 +94,15 @@ InitInput(int argc, char *argv[])
xnestPointerDevice = AddInputDevice(xnestPointerProc, TRUE);
xnestKeyboardDevice = AddInputDevice(xnestKeyboardProc, TRUE);
+ if (!xnestEvents)
+ xnestEvents = (xEvent *) xcalloc(sizeof(xEvent), GetMaximumEventsNum());
+ if (!xnestEvents)
+ FatalError("couldn't allocate room for events\n");
+
RegisterPointerDevice(xnestPointerDevice);
RegisterKeyboardDevice(xnestKeyboardDevice);
- mieqInit((DevicePtr)xnestKeyboardDevice, (DevicePtr)xnestPointerDevice);
+ mieqInit();
AddEnabledDevice(XConnectionNumber(xnestDisplay));
diff --git a/hw/xnest/Init.h b/hw/xnest/Init.h
index 8fb9956eb..4bed0ee67 100644
--- a/hw/xnest/Init.h
+++ b/hw/xnest/Init.h
@@ -1,4 +1,3 @@
-/* $Xorg: Init.h,v 1.3 2000/08/17 19:53:28 cpqbld Exp $ */
/*
Copyright 1993 by Davor Matic
diff --git a/hw/xnest/Keyboard.c b/hw/xnest/Keyboard.c
index 9b4f1a1ab..0dacae70b 100644
--- a/hw/xnest/Keyboard.c
+++ b/hw/xnest/Keyboard.c
@@ -1,5 +1,3 @@
-/* $Xorg: Keyboard.c,v 1.3 2000/08/17 19:53:28 cpqbld Exp $ */
-/* $XdotOrg: xserver/xorg/hw/xnest/Keyboard.c,v 1.9 2006/03/27 22:25:56 daniels Exp $ */
/*
Copyright 1993 by Davor Matic
@@ -13,7 +11,6 @@ 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
@@ -97,6 +94,12 @@ xnestBell(int volume, DeviceIntPtr pDev, pointer ctrl, int cls)
}
void
+DDXRingBell(int volume, int pitch, int duration)
+{
+ XBell(xnestDisplay, volume);
+}
+
+void
xnestChangeKeyboardControl(DeviceIntPtr pDev, KeybdCtrl *ctrl)
{
#if 0
@@ -202,9 +205,6 @@ XkbError:
xnestBell, xnestChangeKeyboardControl);
#ifdef XKB
} else {
- FILE *file;
- XkbConfigRtrnRec config;
-
XkbComponentNamesRec names;
char *rules, *model, *layout, *variants, *options;
@@ -259,7 +259,7 @@ XkbError:
}
Bool
-LegalModifier(unsigned int key, DevicePtr pDev)
+LegalModifier(unsigned int key, DeviceIntPtr pDev)
{
return TRUE;
}
diff --git a/hw/xnest/Keyboard.h b/hw/xnest/Keyboard.h
index 8237dac14..d87866c73 100644
--- a/hw/xnest/Keyboard.h
+++ b/hw/xnest/Keyboard.h
@@ -1,4 +1,3 @@
-/* $Xorg: Keyboard.h,v 1.3 2000/08/17 19:53:28 cpqbld Exp $ */
/*
Copyright 1993 by Davor Matic
diff --git a/hw/xnest/Makefile.am b/hw/xnest/Makefile.am
index 67a2e981c..cce1fef94 100644
--- a/hw/xnest/Makefile.am
+++ b/hw/xnest/Makefile.am
@@ -14,7 +14,6 @@ SRCS = Args.c \
GC.c \
GCOps.c \
GCOps.h \
- GetTime.c \
Handlers.c \
Handlers.h \
Init.c \
@@ -52,7 +51,8 @@ Xnest_LDFLAGS =
AM_CFLAGS = -DHAVE_XNEST_CONFIG_H \
-DNO_HW_ONLY_EXTS \
- @SERVER_DEFINES@ \
+ -DXFree86Server \
+ $(DIX_CFLAGS) \
$(XNESTMODULES_CFLAGS)
EXTRA_DIST = os2Stub.c \
diff --git a/hw/xnest/Pixmap.c b/hw/xnest/Pixmap.c
index 046b73976..aa8bed933 100644
--- a/hw/xnest/Pixmap.c
+++ b/hw/xnest/Pixmap.c
@@ -1,4 +1,3 @@
-/* $Xorg: Pixmap.c,v 1.3 2000/08/17 19:53:28 cpqbld Exp $ */
/*
Copyright 1993 by Davor Matic
@@ -12,7 +11,6 @@ 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>
diff --git a/hw/xnest/Pointer.c b/hw/xnest/Pointer.c
index 1533a06d8..912b6fa21 100644
--- a/hw/xnest/Pointer.c
+++ b/hw/xnest/Pointer.c
@@ -1,4 +1,3 @@
-/* $Xorg: Pointer.c,v 1.3 2000/08/17 19:53:28 cpqbld Exp $ */
/*
Copyright 1993 by Davor Matic
@@ -58,9 +57,9 @@ xnestPointerProc(DeviceIntPtr pDev, int onoff)
for (i = 0; i <= nmap; i++)
map[i] = i; /* buttons are already mapped */
InitPointerDeviceStruct(&pDev->public, map, nmap,
- miPointerGetMotionEvents,
+ GetMotionHistory,
xnestChangePointerControl,
- miPointerGetMotionBufferSize());
+ GetMotionHistorySize(), 2);
break;
case DEVICE_ON:
xnestEventMask |= XNEST_POINTER_EVENT_MASK;
diff --git a/hw/xnest/Pointer.h b/hw/xnest/Pointer.h
index 872dfb8ee..2012db4c3 100644
--- a/hw/xnest/Pointer.h
+++ b/hw/xnest/Pointer.h
@@ -1,4 +1,3 @@
-/* $Xorg: Pointer.h,v 1.3 2000/08/17 19:53:28 cpqbld Exp $ */
/*
Copyright 1993 by Davor Matic
diff --git a/hw/xnest/Screen.c b/hw/xnest/Screen.c
index 660e54fe7..8e86efbdb 100644
--- a/hw/xnest/Screen.c
+++ b/hw/xnest/Screen.c
@@ -1,4 +1,3 @@
-/* $Xorg: Screen.c,v 1.3 2000/08/17 19:53:28 cpqbld Exp $ */
/*
Copyright 1993 by Davor Matic
@@ -12,7 +11,6 @@ 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>
diff --git a/hw/xnest/Screen.h b/hw/xnest/Screen.h
index f35a2872d..db298e300 100644
--- a/hw/xnest/Screen.h
+++ b/hw/xnest/Screen.h
@@ -1,4 +1,3 @@
-/* $Xorg: Screen.h,v 1.3 2000/08/17 19:53:28 cpqbld Exp $ */
/*
Copyright 1993 by Davor Matic
diff --git a/hw/xnest/Visual.c b/hw/xnest/Visual.c
index bbdb71ec6..628e22a7d 100644
--- a/hw/xnest/Visual.c
+++ b/hw/xnest/Visual.c
@@ -1,4 +1,3 @@
-/* $Xorg: Visual.c,v 1.3 2000/08/17 19:53:28 cpqbld Exp $ */
/*
Copyright 1993 by Davor Matic
diff --git a/hw/xnest/Visual.h b/hw/xnest/Visual.h
index dfa74dbdc..c2d715a65 100644
--- a/hw/xnest/Visual.h
+++ b/hw/xnest/Visual.h
@@ -1,4 +1,3 @@
-/* $Xorg: Visual.h,v 1.3 2000/08/17 19:53:28 cpqbld Exp $ */
/*
Copyright 1993 by Davor Matic
diff --git a/hw/xnest/Window.c b/hw/xnest/Window.c
index f652c342a..f87a1baa7 100644
--- a/hw/xnest/Window.c
+++ b/hw/xnest/Window.c
@@ -1,4 +1,3 @@
-/* $Xorg: Window.c,v 1.3 2000/08/17 19:53:28 cpqbld Exp $ */
/*
Copyright 1993 by Davor Matic
@@ -12,7 +11,6 @@ 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>
diff --git a/hw/xnest/XNCursor.h b/hw/xnest/XNCursor.h
index 8684a5e7f..ffec9eb0a 100644
--- a/hw/xnest/XNCursor.h
+++ b/hw/xnest/XNCursor.h
@@ -1,4 +1,3 @@
-/* $Xorg: Cursor.h,v 1.3 2000/08/17 19:53:28 cpqbld Exp $ */
/*
Copyright 1993 by Davor Matic
@@ -12,7 +11,6 @@ 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
@@ -29,6 +27,7 @@ typedef struct {
Bool xnestRealizeCursor(ScreenPtr pScreen, CursorPtr pCursor);
Bool xnestUnrealizeCursor(ScreenPtr pScreen, CursorPtr pCursor);
+void xnestRecolorCursor(ScreenPtr pScreen, CursorPtr pCursor, Bool displayed);
void xnestSetCursor (ScreenPtr pScreen, CursorPtr pCursor, int x, int y);
void xnestMoveCursor (ScreenPtr pScreen, int x, int y);
diff --git a/hw/xnest/XNFont.h b/hw/xnest/XNFont.h
index 7fb4017bd..f7b9e38c0 100644
--- a/hw/xnest/XNFont.h
+++ b/hw/xnest/XNFont.h
@@ -1,4 +1,3 @@
-/* $Xorg: XNFont.h,v 1.3 2000/08/17 19:53:28 cpqbld Exp $ */
/*
Copyright 1993 by Davor Matic
diff --git a/hw/xnest/XNGC.h b/hw/xnest/XNGC.h
index 56939cceb..a59508739 100644
--- a/hw/xnest/XNGC.h
+++ b/hw/xnest/XNGC.h
@@ -1,4 +1,3 @@
-/* $Xorg: XNGC.h,v 1.3 2000/08/17 19:53:28 cpqbld Exp $ */
/*
Copyright 1993 by Davor Matic
diff --git a/hw/xnest/XNPixmap.h b/hw/xnest/XNPixmap.h
index fab1843d1..77cba24af 100644
--- a/hw/xnest/XNPixmap.h
+++ b/hw/xnest/XNPixmap.h
@@ -1,4 +1,3 @@
-/* $Xorg: Pixmap.h,v 1.3 2000/08/17 19:53:28 cpqbld Exp $ */
/*
Copyright 1993 by Davor Matic
@@ -12,7 +11,6 @@ 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
diff --git a/hw/xnest/XNWindow.h b/hw/xnest/XNWindow.h
index 3a57646a7..21be5f5e3 100644
--- a/hw/xnest/XNWindow.h
+++ b/hw/xnest/XNWindow.h
@@ -1,4 +1,3 @@
-/* $Xorg: XNWindow.h,v 1.3 2000/08/17 19:53:28 cpqbld Exp $ */
/*
Copyright 1993 by Davor Matic
@@ -12,7 +11,6 @@ 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
diff --git a/hw/xnest/Xnest.h b/hw/xnest/Xnest.h
index ade73833f..8ed3f8902 100644
--- a/hw/xnest/Xnest.h
+++ b/hw/xnest/Xnest.h
@@ -1,4 +1,3 @@
-/* $Xorg: Xnest.h,v 1.3 2000/08/17 19:53:28 cpqbld Exp $ */
/*
Copyright (c) 1995 X Consortium
diff --git a/hw/xnest/os2Stub.c b/hw/xnest/os2Stub.c
index 0868b4480..33675ec75 100644
--- a/hw/xnest/os2Stub.c
+++ b/hw/xnest/os2Stub.c
@@ -26,7 +26,6 @@
*
*/
-/* $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 */
diff --git a/hw/xnest/xnest-config.h b/hw/xnest/xnest-config.h
index 8b477767a..4889f1fdd 100644
--- a/hw/xnest/xnest-config.h
+++ b/hw/xnest/xnest-config.h
@@ -32,6 +32,5 @@
#include <xkb-config.h>
#undef MITSHM
-#undef XFree86LOADER
#endif /* XNEST_CONFIG_H */
diff --git a/Xprint/AttrValid.c b/hw/xprint/AttrValid.c
index cf9476003..f8c292faa 100644
--- a/Xprint/AttrValid.c
+++ b/hw/xprint/AttrValid.c
@@ -1,4 +1,3 @@
-/* $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.
diff --git a/Xprint/AttrValid.h b/hw/xprint/AttrValid.h
index f2e53f6c5..7bb7ce1c8 100644
--- a/Xprint/AttrValid.h
+++ b/hw/xprint/AttrValid.h
@@ -1,4 +1,3 @@
-/* $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.
@@ -196,6 +195,9 @@ void XpPutTrayMediumListAttr(XpContextPtr pContext,
XPAttributes pool,
XpOid oid,
const XpOidTrayMediumList* tm);
+void XpValidatePrinterMediaAttrs(XpContextPtr pContext,
+ const XpOidList* valid_trays,
+ const XpOidList* valid_sizes);
/*
* Attribute pool validation
*/
@@ -204,6 +206,7 @@ void XpValidateAttributePool(XpContextPtr pContext,
const XpValidatePoolsRec* vpr);
void XpValidatePrinterPool(XpContextPtr pContext,
const XpValidatePoolsRec* vpr);
+void XpValidateNotificationProfile(XpContextPtr pContext);
void XpValidateJobPool(XpContextPtr pContext,
const XpValidatePoolsRec* vpr);
void XpValidateDocumentPool(XpContextPtr pContext,
diff --git a/Xprint/DiPrint.h b/hw/xprint/DiPrint.h
index a26477971..22cbf0d43 100644
--- a/Xprint/DiPrint.h
+++ b/hw/xprint/DiPrint.h
@@ -1,4 +1,3 @@
-/* $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.
@@ -41,6 +40,7 @@ copyright holders.
#ifdef HAVE_DIX_CONFIG_H
#include <dix-config.h>
#endif
+#include <X11/fonts/fontstruct.h>
#ifndef _XpDiPrint_H_
#define _XpDiPrint_H_ 1
@@ -74,6 +74,10 @@ extern void PrinterInitGlobals(void);
extern void PrinterInitOutput(ScreenInfo *pScreenInfo, int argc, char **argv);
+extern Bool XpClientIsPrintClient(ClientPtr client, FontPathElementPtr fpe);
+
+extern Bool XpClientIsBitmapClient(ClientPtr client);
+
extern void _XpVoidNoop(void);
extern Bool _XpBoolNoop(void);
diff --git a/Xprint/Init.c b/hw/xprint/Init.c
index 0bc1cf39e..69100d390 100644
--- a/Xprint/Init.c
+++ b/hw/xprint/Init.c
@@ -1,4 +1,3 @@
-/* $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.
@@ -288,10 +287,6 @@ static const char configFilePath[] =
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;
@@ -304,8 +299,6 @@ static Bool xprintInitGlobalsCalled = FALSE;
*/
void PrinterInitGlobals(void)
{
- extern char dispatchExceptionAtReset; /* defined in Xserver/dix/dispatch.c */
-
xprintInitGlobalsCalled = TRUE;
#ifdef DAMAGE
@@ -314,10 +307,7 @@ void PrinterInitGlobals(void)
* 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;
- }
+ noDamageExtension = TRUE;
#endif /* DAMAGE */
#ifdef SMART_SCHEDULE
@@ -382,7 +372,6 @@ PrinterOptions(
char **argv,
int i)
{
- extern void ddxUseMsg();
if(strcmp(argv[i], "-XpFile") == 0)
{
if ((i + 1) >= argc) {
@@ -697,7 +686,7 @@ StoreDriverNames(void)
* from the printerDb is store in the attribute store for the printer.
*/
static void
-StoreDescriptors()
+StoreDescriptors(void)
{
PrinterDbPtr pEntry;
@@ -806,7 +795,6 @@ GetConfigFileName(void)
static PrinterDbPtr
BuildPrinterDb(void)
{
- char *printerList, *augmentCmd = (char *)NULL;
Bool defaultAugment = TRUE, freeConfigFileName;
if(configFileName && access(configFileName, R_OK) != 0)
@@ -1156,8 +1144,8 @@ AddToFontPath(
static void
AugmentFontPath(void)
{
- char *newPath, *modelID, **allIDs = (char **)NULL;
- PrinterDbPtr pDb, pDbEntry;
+ char *modelID, **allIDs = (char **)NULL;
+ PrinterDbPtr pDbEntry;
int numModels, i;
if(!origFontPath)
@@ -1612,7 +1600,7 @@ InitPrintDrivers(
}
if(callInit == TRUE)
{
- Bool (*initFunc)();
+ Bool (*initFunc)(BFuncArgs);
initFunc = GetInitFunc(pDb->driverName);
if(initFunc(index, pScreen, argc, argv) == FALSE)
{
@@ -1649,10 +1637,9 @@ GenericScreenInit(
int argc,
char **argv)
{
- int i;
float fWidth, fHeight, maxWidth, maxHeight;
unsigned short width, height;
- PrinterDbPtr pDb, pDb2;
+ PrinterDbPtr pDb;
int res, maxRes;
/*
@@ -1705,6 +1692,7 @@ GenericScreenInit(
(unsigned short)(maxHeight + 0.5);
}
+#if 0 /* No one uses this anymore... */
/*
* QualifyName - takes an unqualified file name such as X6printers and
* a colon-separated list of directory path names such as
@@ -1715,9 +1703,7 @@ GenericScreenInit(
* freeing the associated memory.
*/
static char *
-QualifyName(fileName, searchPath)
- char *fileName;
- char *searchPath;
+QualifyName(char *fileName, char *searchPath)
{
char * curPath = searchPath;
char * nextPath;
@@ -1755,6 +1741,7 @@ QualifyName(fileName, searchPath)
}
return NULL;
}
+#endif
/*
* FillPrinterListEntry fills in a single XpDiListEntry element with data
@@ -1799,7 +1786,7 @@ GetPrinterListInfo(
int localeLen,
char *locale)
{
- PrinterDbPtr pDb, pDb2;
+ PrinterDbPtr pDb;
for(pDb = printerDb; pDb != (PrinterDbPtr)NULL; pDb = pDb->next)
{
@@ -1848,7 +1835,7 @@ XpDiGetPrinterList(
if(!nameLen || name == (char *)NULL)
{
int i;
- PrinterDbPtr pDb, pDb2;
+ PrinterDbPtr pDb;
for(pDb = printerDb, i = 0; pDb != (PrinterDbPtr)NULL;
pDb = pDb->next, i++)
@@ -1898,7 +1885,6 @@ WindowPtr
XpDiValidatePrinter(char *printerName, int printerNameLen)
{
PrinterDbPtr pCurEntry;
- WindowPtr pWin;
for(pCurEntry = printerDb;
pCurEntry != (PrinterDbPtr)NULL; pCurEntry = pCurEntry->next)
diff --git a/Xprint/Makefile.am b/hw/xprint/Makefile.am
index d2a26d641..d4f22d261 100644
--- a/Xprint/Makefile.am
+++ b/hw/xprint/Makefile.am
@@ -1,16 +1,17 @@
-SUBDIRS = doc pcl pcl-mono raster ps etc
+SUBDIRS = doc pcl pcl-mono raster ps etc config
bin_PROGRAMS = Xprt
-Xprt_CFLAGS = @SERVER_DEFINES@ @DIX_CFLAGS@ @XPRINT_CFLAGS@ \
+Xprt_CFLAGS = @DIX_CFLAGS@ @XPRINT_CFLAGS@ \
-DXPRINT -DPRINT_ONLY_SERVER -D_XP_PRINT_SERVER_ \
- -DXPRINTDIR=\"$(prefix)/X11/xserver\" \
- -DXPRASTERDDX -DXPPCLDDX -DXPMONOPCLDDX -DXPPSDDX
+ -DXPRINTDIR=\"$(libdir)/X11/xserver\" \
+ -DXPRASTERDDX -DXPPCLDDX -DXPMONOPCLDDX -DXPPSDDX \
+ -DXFree86Server
Xprt_LDFLAGS = -L$(top_srcdir)
Xprt_LDADD = @XPRINT_LIBS@ ps/libps.la raster/libraster.la \
- pcl/libpcl.la pcl-mono/libpcl.la ../fb/libfb.la \
- ../render/librender.la ../mi/libmi.la ../Xext/libXext.la \
+ pcl/libpcl.la pcl-mono/libpcl.la ../../fb/libfb.la \
+ ../../render/librender.la ../../mi/libmi.la ../../Xext/libXext.la \
@FREETYPE_LIBS@
miinitext-wrapper.c:
diff --git a/Xprint/Oid.c b/hw/xprint/Oid.c
index 7cb1230c7..a2af00108 100644
--- a/Xprint/Oid.c
+++ b/hw/xprint/Oid.c
@@ -1,4 +1,3 @@
-/* $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.
@@ -1655,8 +1654,6 @@ 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;
diff --git a/Xprint/Oid.h b/hw/xprint/Oid.h
index fc9f12a5b..79e85ec64 100644
--- a/Xprint/Oid.h
+++ b/hw/xprint/Oid.h
@@ -1,4 +1,3 @@
-/* $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.
diff --git a/Xprint/OidDefs.h b/hw/xprint/OidDefs.h
index 55b6568f0..a3b37eaaf 100644
--- a/Xprint/OidDefs.h
+++ b/hw/xprint/OidDefs.h
@@ -1,4 +1,3 @@
-/* $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.
diff --git a/Xprint/OidStrs.h b/hw/xprint/OidStrs.h
index 1792a6e16..5ed2089e0 100644
--- a/Xprint/OidStrs.h
+++ b/hw/xprint/OidStrs.h
@@ -1,4 +1,3 @@
-/* $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.
diff --git a/Xprint/Util.c b/hw/xprint/Util.c
index 12a2562a4..eb7f839c9 100644
--- a/Xprint/Util.c
+++ b/hw/xprint/Util.c
@@ -1,4 +1,3 @@
-/* $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.
@@ -30,7 +29,6 @@ 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
diff --git a/Xprint/ValTree.c b/hw/xprint/ValTree.c
index 6fa631617..60e340dc1 100644
--- a/Xprint/ValTree.c
+++ b/hw/xprint/ValTree.c
@@ -1,4 +1,3 @@
-/* $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.
diff --git a/Xprint/attributes.c b/hw/xprint/attributes.c
index 60f6803a3..a24c1076b 100644
--- a/Xprint/attributes.c
+++ b/hw/xprint/attributes.c
@@ -1,4 +1,3 @@
-/* $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.
@@ -158,7 +157,7 @@ static char NULL_STRING[] = "\0";
* where the print server configuration directory is localed.
*/
static
-char *XpGetConfigDirBase()
+char *XpGetConfigDirBase(void)
{
char *configDir;
@@ -342,7 +341,7 @@ BuildPrinterAttrs(
if(systemAttributes.printers != (XrmDatabase)NULL)
{
- char *dirName, *fileName;
+ char *fileName;
XrmDatabase modelDB = (XrmDatabase)NULL;
XrmName xrm_name[5], xrm_class[2];
XrmRepresentation rep_type;
@@ -642,7 +641,6 @@ XpGetOneAttribute(
{
ContextAttrPtr pCtxtAttrs;
XrmDatabase db = (XrmDatabase)NULL;
- char *retVal;
XrmName xrm_name[3];
XrmRepresentation rep_type;
XrmValue value;
@@ -895,7 +893,6 @@ XpGetAttributes(
{
ContextAttrPtr pCtxtAttrs;
XrmDatabase db = (XrmDatabase)NULL;
- char *retVal;
StringDbStruct enumStruct;
XrmQuark empty = NULLQUARK;
@@ -1536,8 +1533,8 @@ VectorizeCommand(
char ***pVector,
XpContextPtr pContext)
{
- char *cmdName, *curTok;
- int i, numChars;
+ char *cmdName;
+ int numChars;
if(command == (char *)NULL)
return (char *)NULL;
@@ -1563,7 +1560,7 @@ XpSubmitJob(fileName, pContext)
char *fileName;
XpContextPtr pContext;
{
- char **vector, *cmdNam, *cmdOpt, *command, *userName;
+ char **vector, *cmdNam, *command, *userName;
int i;
command = XpGetOneAttribute(pContext, XPPrinterAttr, "xp-spooler-command");
@@ -1689,7 +1686,6 @@ XpGetTrayMediumFromContext(XpContextPtr pCon,
{
char *defMedium, *defTray;
char *t, *m;
- char *pS, *pE, *pLast;
defMedium = XpGetOneAttribute( pCon, XPPageAttr,
"default-medium" );
diff --git a/Xprint/attributes.h b/hw/xprint/attributes.h
index 40df4fd0b..26864a2f0 100644
--- a/Xprint/attributes.h
+++ b/hw/xprint/attributes.h
@@ -1,4 +1,3 @@
-/* $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.
diff --git a/XpConfig/C/Makefile.am b/hw/xprint/config/C/Makefile.am
index 0390ed2d4..0390ed2d4 100644
--- a/XpConfig/C/Makefile.am
+++ b/hw/xprint/config/C/Makefile.am
diff --git a/XpConfig/C/print/Makefile.am b/hw/xprint/config/C/print/Makefile.am
index e3c01da60..e3c01da60 100644
--- a/XpConfig/C/print/Makefile.am
+++ b/hw/xprint/config/C/print/Makefile.am
diff --git a/XpConfig/C/print/Xprinters b/hw/xprint/config/C/print/Xprinters
index a32c02dc2..a32c02dc2 100644
--- a/XpConfig/C/print/Xprinters
+++ b/hw/xprint/config/C/print/Xprinters
diff --git a/XpConfig/C/print/attributes/Makefile.am b/hw/xprint/config/C/print/attributes/Makefile.am
index 0d2cceaff..0d2cceaff 100644
--- a/XpConfig/C/print/attributes/Makefile.am
+++ b/hw/xprint/config/C/print/attributes/Makefile.am
diff --git a/XpConfig/C/print/attributes/document b/hw/xprint/config/C/print/attributes/document
index b1651bd94..b1651bd94 100644
--- a/XpConfig/C/print/attributes/document
+++ b/hw/xprint/config/C/print/attributes/document
diff --git a/XpConfig/C/print/attributes/job b/hw/xprint/config/C/print/attributes/job
index aa1911dcd..aa1911dcd 100644
--- a/XpConfig/C/print/attributes/job
+++ b/hw/xprint/config/C/print/attributes/job
diff --git a/XpConfig/C/print/attributes/printer b/hw/xprint/config/C/print/attributes/printer
index 41e13b44b..41e13b44b 100644
--- a/XpConfig/C/print/attributes/printer
+++ b/hw/xprint/config/C/print/attributes/printer
diff --git a/XpConfig/C/print/ddx-config/Makefile.am b/hw/xprint/config/C/print/ddx-config/Makefile.am
index 907edca75..907edca75 100644
--- a/XpConfig/C/print/ddx-config/Makefile.am
+++ b/hw/xprint/config/C/print/ddx-config/Makefile.am
diff --git a/XpConfig/C/print/ddx-config/raster/Makefile.am b/hw/xprint/config/C/print/ddx-config/raster/Makefile.am
index 79bfb59df..79bfb59df 100644
--- a/XpConfig/C/print/ddx-config/raster/Makefile.am
+++ b/hw/xprint/config/C/print/ddx-config/raster/Makefile.am
diff --git a/XpConfig/C/print/ddx-config/raster/pcl b/hw/xprint/config/C/print/ddx-config/raster/pcl
index 15d33e7b3..15d33e7b3 100644
--- a/XpConfig/C/print/ddx-config/raster/pcl
+++ b/hw/xprint/config/C/print/ddx-config/raster/pcl
diff --git a/XpConfig/C/print/ddx-config/raster/postscript b/hw/xprint/config/C/print/ddx-config/raster/postscript
index e69de29bb..e69de29bb 100644
--- a/XpConfig/C/print/ddx-config/raster/postscript
+++ b/hw/xprint/config/C/print/ddx-config/raster/postscript
diff --git a/XpConfig/C/print/models/CANONBJ10E-GS/Makefile.am b/hw/xprint/config/C/print/models/CANONBJ10E-GS/Makefile.am
index 951b9af97..951b9af97 100644
--- a/XpConfig/C/print/models/CANONBJ10E-GS/Makefile.am
+++ b/hw/xprint/config/C/print/models/CANONBJ10E-GS/Makefile.am
diff --git a/XpConfig/C/print/models/CANONBJ10E-GS/model-config b/hw/xprint/config/C/print/models/CANONBJ10E-GS/model-config
index 97bfd8196..97bfd8196 100644
--- a/XpConfig/C/print/models/CANONBJ10E-GS/model-config
+++ b/hw/xprint/config/C/print/models/CANONBJ10E-GS/model-config
diff --git a/XpConfig/C/print/models/CANONC3200-PS/Makefile.am b/hw/xprint/config/C/print/models/CANONC3200-PS/Makefile.am
index 771b40864..771b40864 100644
--- a/XpConfig/C/print/models/CANONC3200-PS/Makefile.am
+++ b/hw/xprint/config/C/print/models/CANONC3200-PS/Makefile.am
diff --git a/XpConfig/C/print/models/CANONC3200-PS/fonts/Makefile.am b/hw/xprint/config/C/print/models/CANONC3200-PS/fonts/Makefile.am
index 5be5419ba..5be5419ba 100644
--- a/XpConfig/C/print/models/CANONC3200-PS/fonts/Makefile.am
+++ b/hw/xprint/config/C/print/models/CANONC3200-PS/fonts/Makefile.am
diff --git a/XpConfig/C/print/models/CANONC3200-PS/model-config b/hw/xprint/config/C/print/models/CANONC3200-PS/model-config
index cdb3f4958..cdb3f4958 100644
--- a/XpConfig/C/print/models/CANONC3200-PS/model-config
+++ b/hw/xprint/config/C/print/models/CANONC3200-PS/model-config
diff --git a/XpConfig/C/print/models/GSdefault/Makefile.am b/hw/xprint/config/C/print/models/GSdefault/Makefile.am
index be0426c76..be0426c76 100644
--- a/XpConfig/C/print/models/GSdefault/Makefile.am
+++ b/hw/xprint/config/C/print/models/GSdefault/Makefile.am
diff --git a/XpConfig/C/print/models/GSdefault/model-config b/hw/xprint/config/C/print/models/GSdefault/model-config
index 61dac18b8..61dac18b8 100644
--- a/XpConfig/C/print/models/GSdefault/model-config
+++ b/hw/xprint/config/C/print/models/GSdefault/model-config
diff --git a/XpConfig/C/print/models/HPDJ1600C/Makefile.am b/hw/xprint/config/C/print/models/HPDJ1600C/Makefile.am
index 1c8b3b5c6..1c8b3b5c6 100644
--- a/XpConfig/C/print/models/HPDJ1600C/Makefile.am
+++ b/hw/xprint/config/C/print/models/HPDJ1600C/Makefile.am
diff --git a/XpConfig/C/print/models/HPDJ1600C/fonts/9nb00051.pmf b/hw/xprint/config/C/print/models/HPDJ1600C/fonts/9nb00051.pmf
index 09cc489a5..09cc489a5 100644
--- a/XpConfig/C/print/models/HPDJ1600C/fonts/9nb00051.pmf
+++ b/hw/xprint/config/C/print/models/HPDJ1600C/fonts/9nb00051.pmf
Binary files differ
diff --git a/XpConfig/C/print/models/HPDJ1600C/fonts/9nb00052.pmf b/hw/xprint/config/C/print/models/HPDJ1600C/fonts/9nb00052.pmf
index b21a9a2a8..b21a9a2a8 100644
--- a/XpConfig/C/print/models/HPDJ1600C/fonts/9nb00052.pmf
+++ b/hw/xprint/config/C/print/models/HPDJ1600C/fonts/9nb00052.pmf
Binary files differ
diff --git a/XpConfig/C/print/models/HPDJ1600C/fonts/9nb00053.pmf b/hw/xprint/config/C/print/models/HPDJ1600C/fonts/9nb00053.pmf
index 485b874c5..485b874c5 100644
--- a/XpConfig/C/print/models/HPDJ1600C/fonts/9nb00053.pmf
+++ b/hw/xprint/config/C/print/models/HPDJ1600C/fonts/9nb00053.pmf
Binary files differ
diff --git a/XpConfig/C/print/models/HPDJ1600C/fonts/9nb00054.pmf b/hw/xprint/config/C/print/models/HPDJ1600C/fonts/9nb00054.pmf
index 524934c71..524934c71 100644
--- a/XpConfig/C/print/models/HPDJ1600C/fonts/9nb00054.pmf
+++ b/hw/xprint/config/C/print/models/HPDJ1600C/fonts/9nb00054.pmf
Binary files differ
diff --git a/XpConfig/C/print/models/HPDJ1600C/fonts/9nb00055.pmf b/hw/xprint/config/C/print/models/HPDJ1600C/fonts/9nb00055.pmf
index 2ef9bc52c..2ef9bc52c 100644
--- a/XpConfig/C/print/models/HPDJ1600C/fonts/9nb00055.pmf
+++ b/hw/xprint/config/C/print/models/HPDJ1600C/fonts/9nb00055.pmf
Binary files differ
diff --git a/XpConfig/C/print/models/HPDJ1600C/fonts/9nb00056.pmf b/hw/xprint/config/C/print/models/HPDJ1600C/fonts/9nb00056.pmf
index 3d69311ef..3d69311ef 100644
--- a/XpConfig/C/print/models/HPDJ1600C/fonts/9nb00056.pmf
+++ b/hw/xprint/config/C/print/models/HPDJ1600C/fonts/9nb00056.pmf
Binary files differ
diff --git a/XpConfig/C/print/models/HPDJ1600C/fonts/9nb00057.pmf b/hw/xprint/config/C/print/models/HPDJ1600C/fonts/9nb00057.pmf
index 3833d4f54..3833d4f54 100644
--- a/XpConfig/C/print/models/HPDJ1600C/fonts/9nb00057.pmf
+++ b/hw/xprint/config/C/print/models/HPDJ1600C/fonts/9nb00057.pmf
Binary files differ
diff --git a/XpConfig/C/print/models/HPDJ1600C/fonts/9nb00058.pmf b/hw/xprint/config/C/print/models/HPDJ1600C/fonts/9nb00058.pmf
index 289a95e5c..289a95e5c 100644
--- a/XpConfig/C/print/models/HPDJ1600C/fonts/9nb00058.pmf
+++ b/hw/xprint/config/C/print/models/HPDJ1600C/fonts/9nb00058.pmf
Binary files differ
diff --git a/XpConfig/C/print/models/HPDJ1600C/fonts/9nb00059.pmf b/hw/xprint/config/C/print/models/HPDJ1600C/fonts/9nb00059.pmf
index a5984bed1..a5984bed1 100644
--- a/XpConfig/C/print/models/HPDJ1600C/fonts/9nb00059.pmf
+++ b/hw/xprint/config/C/print/models/HPDJ1600C/fonts/9nb00059.pmf
Binary files differ
diff --git a/XpConfig/C/print/models/HPDJ1600C/fonts/9nb00060.pmf b/hw/xprint/config/C/print/models/HPDJ1600C/fonts/9nb00060.pmf
index df27cd71e..df27cd71e 100644
--- a/XpConfig/C/print/models/HPDJ1600C/fonts/9nb00060.pmf
+++ b/hw/xprint/config/C/print/models/HPDJ1600C/fonts/9nb00060.pmf
Binary files differ
diff --git a/XpConfig/C/print/models/HPDJ1600C/fonts/9nb00061.pmf b/hw/xprint/config/C/print/models/HPDJ1600C/fonts/9nb00061.pmf
index fb2b5a433..fb2b5a433 100644
--- a/XpConfig/C/print/models/HPDJ1600C/fonts/9nb00061.pmf
+++ b/hw/xprint/config/C/print/models/HPDJ1600C/fonts/9nb00061.pmf
Binary files differ
diff --git a/XpConfig/C/print/models/HPDJ1600C/fonts/9nb00062.pmf b/hw/xprint/config/C/print/models/HPDJ1600C/fonts/9nb00062.pmf
index f0e58c435..f0e58c435 100644
--- a/XpConfig/C/print/models/HPDJ1600C/fonts/9nb00062.pmf
+++ b/hw/xprint/config/C/print/models/HPDJ1600C/fonts/9nb00062.pmf
Binary files differ
diff --git a/XpConfig/C/print/models/HPDJ1600C/fonts/9nb00063.pmf b/hw/xprint/config/C/print/models/HPDJ1600C/fonts/9nb00063.pmf
index 8821ff155..8821ff155 100644
--- a/XpConfig/C/print/models/HPDJ1600C/fonts/9nb00063.pmf
+++ b/hw/xprint/config/C/print/models/HPDJ1600C/fonts/9nb00063.pmf
Binary files differ
diff --git a/XpConfig/C/print/models/HPDJ1600C/fonts/9nb00064.pmf b/hw/xprint/config/C/print/models/HPDJ1600C/fonts/9nb00064.pmf
index e5980fc0e..e5980fc0e 100644
--- a/XpConfig/C/print/models/HPDJ1600C/fonts/9nb00064.pmf
+++ b/hw/xprint/config/C/print/models/HPDJ1600C/fonts/9nb00064.pmf
Binary files differ
diff --git a/XpConfig/C/print/models/HPDJ1600C/fonts/9nb00065.pmf b/hw/xprint/config/C/print/models/HPDJ1600C/fonts/9nb00065.pmf
index d9a151d7f..d9a151d7f 100644
--- a/XpConfig/C/print/models/HPDJ1600C/fonts/9nb00065.pmf
+++ b/hw/xprint/config/C/print/models/HPDJ1600C/fonts/9nb00065.pmf
Binary files differ
diff --git a/XpConfig/C/print/models/HPDJ1600C/fonts/9nb00066.pmf b/hw/xprint/config/C/print/models/HPDJ1600C/fonts/9nb00066.pmf
index d14fca56f..d14fca56f 100644
--- a/XpConfig/C/print/models/HPDJ1600C/fonts/9nb00066.pmf
+++ b/hw/xprint/config/C/print/models/HPDJ1600C/fonts/9nb00066.pmf
Binary files differ
diff --git a/XpConfig/C/print/models/HPDJ1600C/fonts/9nb00067.pmf b/hw/xprint/config/C/print/models/HPDJ1600C/fonts/9nb00067.pmf
index 7a341506f..7a341506f 100644
--- a/XpConfig/C/print/models/HPDJ1600C/fonts/9nb00067.pmf
+++ b/hw/xprint/config/C/print/models/HPDJ1600C/fonts/9nb00067.pmf
Binary files differ
diff --git a/XpConfig/C/print/models/HPDJ1600C/fonts/9nb00068.pmf b/hw/xprint/config/C/print/models/HPDJ1600C/fonts/9nb00068.pmf
index c20e39a21..c20e39a21 100644
--- a/XpConfig/C/print/models/HPDJ1600C/fonts/9nb00068.pmf
+++ b/hw/xprint/config/C/print/models/HPDJ1600C/fonts/9nb00068.pmf
Binary files differ
diff --git a/XpConfig/C/print/models/HPDJ1600C/fonts/9nb00069.pmf b/hw/xprint/config/C/print/models/HPDJ1600C/fonts/9nb00069.pmf
index 4a4a35281..4a4a35281 100644
--- a/XpConfig/C/print/models/HPDJ1600C/fonts/9nb00069.pmf
+++ b/hw/xprint/config/C/print/models/HPDJ1600C/fonts/9nb00069.pmf
Binary files differ
diff --git a/XpConfig/C/print/models/HPDJ1600C/fonts/9nb00070.pmf b/hw/xprint/config/C/print/models/HPDJ1600C/fonts/9nb00070.pmf
index 8d97d4339..8d97d4339 100644
--- a/XpConfig/C/print/models/HPDJ1600C/fonts/9nb00070.pmf
+++ b/hw/xprint/config/C/print/models/HPDJ1600C/fonts/9nb00070.pmf
Binary files differ
diff --git a/XpConfig/C/print/models/HPDJ1600C/fonts/9nb00071.pmf b/hw/xprint/config/C/print/models/HPDJ1600C/fonts/9nb00071.pmf
index 19844c9c6..19844c9c6 100644
--- a/XpConfig/C/print/models/HPDJ1600C/fonts/9nb00071.pmf
+++ b/hw/xprint/config/C/print/models/HPDJ1600C/fonts/9nb00071.pmf
Binary files differ
diff --git a/XpConfig/C/print/models/HPDJ1600C/fonts/9nb00072.pmf b/hw/xprint/config/C/print/models/HPDJ1600C/fonts/9nb00072.pmf
index 5415c3f44..5415c3f44 100644
--- a/XpConfig/C/print/models/HPDJ1600C/fonts/9nb00072.pmf
+++ b/hw/xprint/config/C/print/models/HPDJ1600C/fonts/9nb00072.pmf
Binary files differ
diff --git a/XpConfig/C/print/models/HPDJ1600C/fonts/9nb00073.pmf b/hw/xprint/config/C/print/models/HPDJ1600C/fonts/9nb00073.pmf
index 038dfdb46..038dfdb46 100644
--- a/XpConfig/C/print/models/HPDJ1600C/fonts/9nb00073.pmf
+++ b/hw/xprint/config/C/print/models/HPDJ1600C/fonts/9nb00073.pmf
Binary files differ
diff --git a/XpConfig/C/print/models/HPDJ1600C/fonts/9nb00074.pmf b/hw/xprint/config/C/print/models/HPDJ1600C/fonts/9nb00074.pmf
index 382a78575..382a78575 100644
--- a/XpConfig/C/print/models/HPDJ1600C/fonts/9nb00074.pmf
+++ b/hw/xprint/config/C/print/models/HPDJ1600C/fonts/9nb00074.pmf
Binary files differ
diff --git a/XpConfig/C/print/models/HPDJ1600C/fonts/9nb00075.pmf b/hw/xprint/config/C/print/models/HPDJ1600C/fonts/9nb00075.pmf
index 1c7edf653..1c7edf653 100644
--- a/XpConfig/C/print/models/HPDJ1600C/fonts/9nb00075.pmf
+++ b/hw/xprint/config/C/print/models/HPDJ1600C/fonts/9nb00075.pmf
Binary files differ
diff --git a/XpConfig/C/print/models/HPDJ1600C/fonts/9nb00076.pmf b/hw/xprint/config/C/print/models/HPDJ1600C/fonts/9nb00076.pmf
index 2f077f40f..2f077f40f 100644
--- a/XpConfig/C/print/models/HPDJ1600C/fonts/9nb00076.pmf
+++ b/hw/xprint/config/C/print/models/HPDJ1600C/fonts/9nb00076.pmf
Binary files differ
diff --git a/XpConfig/C/print/models/HPDJ1600C/fonts/9nb00077.pmf b/hw/xprint/config/C/print/models/HPDJ1600C/fonts/9nb00077.pmf
index 1ce190d51..1ce190d51 100644
--- a/XpConfig/C/print/models/HPDJ1600C/fonts/9nb00077.pmf
+++ b/hw/xprint/config/C/print/models/HPDJ1600C/fonts/9nb00077.pmf
Binary files differ
diff --git a/XpConfig/C/print/models/HPDJ1600C/fonts/9nb00079.pmf b/hw/xprint/config/C/print/models/HPDJ1600C/fonts/9nb00079.pmf
index 45d6906ba..45d6906ba 100644
--- a/XpConfig/C/print/models/HPDJ1600C/fonts/9nb00079.pmf
+++ b/hw/xprint/config/C/print/models/HPDJ1600C/fonts/9nb00079.pmf
Binary files differ
diff --git a/XpConfig/C/print/models/HPDJ1600C/fonts/9nb00080.pmf b/hw/xprint/config/C/print/models/HPDJ1600C/fonts/9nb00080.pmf
index b991b5edb..b991b5edb 100644
--- a/XpConfig/C/print/models/HPDJ1600C/fonts/9nb00080.pmf
+++ b/hw/xprint/config/C/print/models/HPDJ1600C/fonts/9nb00080.pmf
Binary files differ
diff --git a/XpConfig/C/print/models/HPDJ1600C/fonts/9nb00081.pmf b/hw/xprint/config/C/print/models/HPDJ1600C/fonts/9nb00081.pmf
index 1935a9f00..1935a9f00 100644
--- a/XpConfig/C/print/models/HPDJ1600C/fonts/9nb00081.pmf
+++ b/hw/xprint/config/C/print/models/HPDJ1600C/fonts/9nb00081.pmf
Binary files differ
diff --git a/XpConfig/C/print/models/HPDJ1600C/fonts/9nb00082.pmf b/hw/xprint/config/C/print/models/HPDJ1600C/fonts/9nb00082.pmf
index 2000dc057..2000dc057 100644
--- a/XpConfig/C/print/models/HPDJ1600C/fonts/9nb00082.pmf
+++ b/hw/xprint/config/C/print/models/HPDJ1600C/fonts/9nb00082.pmf
Binary files differ
diff --git a/XpConfig/C/print/models/HPDJ1600C/fonts/9nb00083.pmf b/hw/xprint/config/C/print/models/HPDJ1600C/fonts/9nb00083.pmf
index 90f0e45a8..90f0e45a8 100644
--- a/XpConfig/C/print/models/HPDJ1600C/fonts/9nb00083.pmf
+++ b/hw/xprint/config/C/print/models/HPDJ1600C/fonts/9nb00083.pmf
Binary files differ
diff --git a/XpConfig/C/print/models/HPDJ1600C/fonts/9nb00084.pmf b/hw/xprint/config/C/print/models/HPDJ1600C/fonts/9nb00084.pmf
index 52ba39b96..52ba39b96 100644
--- a/XpConfig/C/print/models/HPDJ1600C/fonts/9nb00084.pmf
+++ b/hw/xprint/config/C/print/models/HPDJ1600C/fonts/9nb00084.pmf
Binary files differ
diff --git a/XpConfig/C/print/models/HPDJ1600C/fonts/9nb00085.pmf b/hw/xprint/config/C/print/models/HPDJ1600C/fonts/9nb00085.pmf
index f5c9053af..f5c9053af 100644
--- a/XpConfig/C/print/models/HPDJ1600C/fonts/9nb00085.pmf
+++ b/hw/xprint/config/C/print/models/HPDJ1600C/fonts/9nb00085.pmf
Binary files differ
diff --git a/XpConfig/C/print/models/HPDJ1600C/fonts/9nb00086.pmf b/hw/xprint/config/C/print/models/HPDJ1600C/fonts/9nb00086.pmf
index b7586ca61..b7586ca61 100644
--- a/XpConfig/C/print/models/HPDJ1600C/fonts/9nb00086.pmf
+++ b/hw/xprint/config/C/print/models/HPDJ1600C/fonts/9nb00086.pmf
Binary files differ
diff --git a/XpConfig/C/print/models/HPDJ1600C/fonts/9nb00087.pmf b/hw/xprint/config/C/print/models/HPDJ1600C/fonts/9nb00087.pmf
index 82f054999..82f054999 100644
--- a/XpConfig/C/print/models/HPDJ1600C/fonts/9nb00087.pmf
+++ b/hw/xprint/config/C/print/models/HPDJ1600C/fonts/9nb00087.pmf
Binary files differ
diff --git a/XpConfig/C/print/models/HPDJ1600C/fonts/9nb00088.pmf b/hw/xprint/config/C/print/models/HPDJ1600C/fonts/9nb00088.pmf
index 591c96b59..591c96b59 100644
--- a/XpConfig/C/print/models/HPDJ1600C/fonts/9nb00088.pmf
+++ b/hw/xprint/config/C/print/models/HPDJ1600C/fonts/9nb00088.pmf
Binary files differ
diff --git a/XpConfig/C/print/models/HPDJ1600C/fonts/9nb00089.pmf b/hw/xprint/config/C/print/models/HPDJ1600C/fonts/9nb00089.pmf
index c8160954a..c8160954a 100644
--- a/XpConfig/C/print/models/HPDJ1600C/fonts/9nb00089.pmf
+++ b/hw/xprint/config/C/print/models/HPDJ1600C/fonts/9nb00089.pmf
Binary files differ
diff --git a/XpConfig/C/print/models/HPDJ1600C/fonts/9nb00090.pmf b/hw/xprint/config/C/print/models/HPDJ1600C/fonts/9nb00090.pmf
index 895cfe26a..895cfe26a 100644
--- a/XpConfig/C/print/models/HPDJ1600C/fonts/9nb00090.pmf
+++ b/hw/xprint/config/C/print/models/HPDJ1600C/fonts/9nb00090.pmf
Binary files differ
diff --git a/XpConfig/C/print/models/HPDJ1600C/fonts/9nb00091.pmf b/hw/xprint/config/C/print/models/HPDJ1600C/fonts/9nb00091.pmf
index 3bdcae4ba..3bdcae4ba 100644
--- a/XpConfig/C/print/models/HPDJ1600C/fonts/9nb00091.pmf
+++ b/hw/xprint/config/C/print/models/HPDJ1600C/fonts/9nb00091.pmf
Binary files differ
diff --git a/XpConfig/C/print/models/HPDJ1600C/fonts/9nb00092.pmf b/hw/xprint/config/C/print/models/HPDJ1600C/fonts/9nb00092.pmf
index a56d47504..a56d47504 100644
--- a/XpConfig/C/print/models/HPDJ1600C/fonts/9nb00092.pmf
+++ b/hw/xprint/config/C/print/models/HPDJ1600C/fonts/9nb00092.pmf
Binary files differ
diff --git a/XpConfig/C/print/models/HPDJ1600C/fonts/9nb00093.pmf b/hw/xprint/config/C/print/models/HPDJ1600C/fonts/9nb00093.pmf
index c85f3b4de..c85f3b4de 100644
--- a/XpConfig/C/print/models/HPDJ1600C/fonts/9nb00093.pmf
+++ b/hw/xprint/config/C/print/models/HPDJ1600C/fonts/9nb00093.pmf
Binary files differ
diff --git a/XpConfig/C/print/models/HPDJ1600C/fonts/9nb00094.pmf b/hw/xprint/config/C/print/models/HPDJ1600C/fonts/9nb00094.pmf
index 875bf1df8..875bf1df8 100644
--- a/XpConfig/C/print/models/HPDJ1600C/fonts/9nb00094.pmf
+++ b/hw/xprint/config/C/print/models/HPDJ1600C/fonts/9nb00094.pmf
Binary files differ
diff --git a/XpConfig/C/print/models/HPDJ1600C/fonts/Makefile.am b/hw/xprint/config/C/print/models/HPDJ1600C/fonts/Makefile.am
index b32079e1d..b32079e1d 100644
--- a/XpConfig/C/print/models/HPDJ1600C/fonts/Makefile.am
+++ b/hw/xprint/config/C/print/models/HPDJ1600C/fonts/Makefile.am
diff --git a/XpConfig/C/print/models/HPDJ1600C/fonts/README b/hw/xprint/config/C/print/models/HPDJ1600C/fonts/README
index cccc2be32..cccc2be32 100644
--- a/XpConfig/C/print/models/HPDJ1600C/fonts/README
+++ b/hw/xprint/config/C/print/models/HPDJ1600C/fonts/README
diff --git a/XpConfig/C/print/models/HPDJ1600C/fonts/fonts.alias b/hw/xprint/config/C/print/models/HPDJ1600C/fonts/fonts.alias
index e69de29bb..e69de29bb 100644
--- a/XpConfig/C/print/models/HPDJ1600C/fonts/fonts.alias
+++ b/hw/xprint/config/C/print/models/HPDJ1600C/fonts/fonts.alias
diff --git a/XpConfig/C/print/models/HPDJ1600C/fonts/fonts.dir b/hw/xprint/config/C/print/models/HPDJ1600C/fonts/fonts.dir
index da702ccc1..da702ccc1 100644
--- a/XpConfig/C/print/models/HPDJ1600C/fonts/fonts.dir
+++ b/hw/xprint/config/C/print/models/HPDJ1600C/fonts/fonts.dir
diff --git a/XpConfig/C/print/models/HPDJ1600C/fonts/lpr0ye1a.pmf b/hw/xprint/config/C/print/models/HPDJ1600C/fonts/lpr0ye1a.pmf
index 483748893..483748893 100644
--- a/XpConfig/C/print/models/HPDJ1600C/fonts/lpr0ye1a.pmf
+++ b/hw/xprint/config/C/print/models/HPDJ1600C/fonts/lpr0ye1a.pmf
Binary files differ
diff --git a/XpConfig/C/print/models/HPDJ1600C/model-config b/hw/xprint/config/C/print/models/HPDJ1600C/model-config
index 5d45d4495..5d45d4495 100644
--- a/XpConfig/C/print/models/HPDJ1600C/model-config
+++ b/hw/xprint/config/C/print/models/HPDJ1600C/model-config
diff --git a/XpConfig/C/print/models/HPLJ4050-PS/Makefile.am b/hw/xprint/config/C/print/models/HPLJ4050-PS/Makefile.am
index b8cdfa6c4..b8cdfa6c4 100644
--- a/XpConfig/C/print/models/HPLJ4050-PS/Makefile.am
+++ b/hw/xprint/config/C/print/models/HPLJ4050-PS/Makefile.am
diff --git a/XpConfig/C/print/models/HPLJ4050-PS/fonts/Makefile.am b/hw/xprint/config/C/print/models/HPLJ4050-PS/fonts/Makefile.am
index 2ff9ab7e7..2ff9ab7e7 100644
--- a/XpConfig/C/print/models/HPLJ4050-PS/fonts/Makefile.am
+++ b/hw/xprint/config/C/print/models/HPLJ4050-PS/fonts/Makefile.am
diff --git a/XpConfig/C/print/models/HPLJ4050-PS/model-config b/hw/xprint/config/C/print/models/HPLJ4050-PS/model-config
index 159206de2..159206de2 100644
--- a/XpConfig/C/print/models/HPLJ4050-PS/model-config
+++ b/hw/xprint/config/C/print/models/HPLJ4050-PS/model-config
diff --git a/XpConfig/C/print/models/HPLJ4family/Makefile.am b/hw/xprint/config/C/print/models/HPLJ4family/Makefile.am
index 2089737a9..2089737a9 100644
--- a/XpConfig/C/print/models/HPLJ4family/Makefile.am
+++ b/hw/xprint/config/C/print/models/HPLJ4family/Makefile.am
diff --git a/XpConfig/C/print/models/HPLJ4family/fonts/9nb00051.pmf b/hw/xprint/config/C/print/models/HPLJ4family/fonts/9nb00051.pmf
index 09cc489a5..09cc489a5 100644
--- a/XpConfig/C/print/models/HPLJ4family/fonts/9nb00051.pmf
+++ b/hw/xprint/config/C/print/models/HPLJ4family/fonts/9nb00051.pmf
Binary files differ
diff --git a/XpConfig/C/print/models/HPLJ4family/fonts/9nb00052.pmf b/hw/xprint/config/C/print/models/HPLJ4family/fonts/9nb00052.pmf
index b21a9a2a8..b21a9a2a8 100644
--- a/XpConfig/C/print/models/HPLJ4family/fonts/9nb00052.pmf
+++ b/hw/xprint/config/C/print/models/HPLJ4family/fonts/9nb00052.pmf
Binary files differ
diff --git a/XpConfig/C/print/models/HPLJ4family/fonts/9nb00053.pmf b/hw/xprint/config/C/print/models/HPLJ4family/fonts/9nb00053.pmf
index 485b874c5..485b874c5 100644
--- a/XpConfig/C/print/models/HPLJ4family/fonts/9nb00053.pmf
+++ b/hw/xprint/config/C/print/models/HPLJ4family/fonts/9nb00053.pmf
Binary files differ
diff --git a/XpConfig/C/print/models/HPLJ4family/fonts/9nb00054.pmf b/hw/xprint/config/C/print/models/HPLJ4family/fonts/9nb00054.pmf
index 524934c71..524934c71 100644
--- a/XpConfig/C/print/models/HPLJ4family/fonts/9nb00054.pmf
+++ b/hw/xprint/config/C/print/models/HPLJ4family/fonts/9nb00054.pmf
Binary files differ
diff --git a/XpConfig/C/print/models/HPLJ4family/fonts/9nb00055.pmf b/hw/xprint/config/C/print/models/HPLJ4family/fonts/9nb00055.pmf
index 2ef9bc52c..2ef9bc52c 100644
--- a/XpConfig/C/print/models/HPLJ4family/fonts/9nb00055.pmf
+++ b/hw/xprint/config/C/print/models/HPLJ4family/fonts/9nb00055.pmf
Binary files differ
diff --git a/XpConfig/C/print/models/HPLJ4family/fonts/9nb00056.pmf b/hw/xprint/config/C/print/models/HPLJ4family/fonts/9nb00056.pmf
index 3d69311ef..3d69311ef 100644
--- a/XpConfig/C/print/models/HPLJ4family/fonts/9nb00056.pmf
+++ b/hw/xprint/config/C/print/models/HPLJ4family/fonts/9nb00056.pmf
Binary files differ
diff --git a/XpConfig/C/print/models/HPLJ4family/fonts/9nb00057.pmf b/hw/xprint/config/C/print/models/HPLJ4family/fonts/9nb00057.pmf
index 3833d4f54..3833d4f54 100644
--- a/XpConfig/C/print/models/HPLJ4family/fonts/9nb00057.pmf
+++ b/hw/xprint/config/C/print/models/HPLJ4family/fonts/9nb00057.pmf
Binary files differ
diff --git a/XpConfig/C/print/models/HPLJ4family/fonts/9nb00058.pmf b/hw/xprint/config/C/print/models/HPLJ4family/fonts/9nb00058.pmf
index 289a95e5c..289a95e5c 100644
--- a/XpConfig/C/print/models/HPLJ4family/fonts/9nb00058.pmf
+++ b/hw/xprint/config/C/print/models/HPLJ4family/fonts/9nb00058.pmf
Binary files differ
diff --git a/XpConfig/C/print/models/HPLJ4family/fonts/9nb00059.pmf b/hw/xprint/config/C/print/models/HPLJ4family/fonts/9nb00059.pmf
index a5984bed1..a5984bed1 100644
--- a/XpConfig/C/print/models/HPLJ4family/fonts/9nb00059.pmf
+++ b/hw/xprint/config/C/print/models/HPLJ4family/fonts/9nb00059.pmf
Binary files differ
diff --git a/XpConfig/C/print/models/HPLJ4family/fonts/9nb00060.pmf b/hw/xprint/config/C/print/models/HPLJ4family/fonts/9nb00060.pmf
index df27cd71e..df27cd71e 100644
--- a/XpConfig/C/print/models/HPLJ4family/fonts/9nb00060.pmf
+++ b/hw/xprint/config/C/print/models/HPLJ4family/fonts/9nb00060.pmf
Binary files differ
diff --git a/XpConfig/C/print/models/HPLJ4family/fonts/9nb00061.pmf b/hw/xprint/config/C/print/models/HPLJ4family/fonts/9nb00061.pmf
index fb2b5a433..fb2b5a433 100644
--- a/XpConfig/C/print/models/HPLJ4family/fonts/9nb00061.pmf
+++ b/hw/xprint/config/C/print/models/HPLJ4family/fonts/9nb00061.pmf
Binary files differ
diff --git a/XpConfig/C/print/models/HPLJ4family/fonts/9nb00062.pmf b/hw/xprint/config/C/print/models/HPLJ4family/fonts/9nb00062.pmf
index f0e58c435..f0e58c435 100644
--- a/XpConfig/C/print/models/HPLJ4family/fonts/9nb00062.pmf
+++ b/hw/xprint/config/C/print/models/HPLJ4family/fonts/9nb00062.pmf
Binary files differ
diff --git a/XpConfig/C/print/models/HPLJ4family/fonts/9nb00063.pmf b/hw/xprint/config/C/print/models/HPLJ4family/fonts/9nb00063.pmf
index 8821ff155..8821ff155 100644
--- a/XpConfig/C/print/models/HPLJ4family/fonts/9nb00063.pmf
+++ b/hw/xprint/config/C/print/models/HPLJ4family/fonts/9nb00063.pmf
Binary files differ
diff --git a/XpConfig/C/print/models/HPLJ4family/fonts/9nb00064.pmf b/hw/xprint/config/C/print/models/HPLJ4family/fonts/9nb00064.pmf
index e5980fc0e..e5980fc0e 100644
--- a/XpConfig/C/print/models/HPLJ4family/fonts/9nb00064.pmf
+++ b/hw/xprint/config/C/print/models/HPLJ4family/fonts/9nb00064.pmf
Binary files differ
diff --git a/XpConfig/C/print/models/HPLJ4family/fonts/9nb00065.pmf b/hw/xprint/config/C/print/models/HPLJ4family/fonts/9nb00065.pmf
index d9a151d7f..d9a151d7f 100644
--- a/XpConfig/C/print/models/HPLJ4family/fonts/9nb00065.pmf
+++ b/hw/xprint/config/C/print/models/HPLJ4family/fonts/9nb00065.pmf
Binary files differ
diff --git a/XpConfig/C/print/models/HPLJ4family/fonts/9nb00066.pmf b/hw/xprint/config/C/print/models/HPLJ4family/fonts/9nb00066.pmf
index d14fca56f..d14fca56f 100644
--- a/XpConfig/C/print/models/HPLJ4family/fonts/9nb00066.pmf
+++ b/hw/xprint/config/C/print/models/HPLJ4family/fonts/9nb00066.pmf
Binary files differ
diff --git a/XpConfig/C/print/models/HPLJ4family/fonts/9nb00067.pmf b/hw/xprint/config/C/print/models/HPLJ4family/fonts/9nb00067.pmf
index 7a341506f..7a341506f 100644
--- a/XpConfig/C/print/models/HPLJ4family/fonts/9nb00067.pmf
+++ b/hw/xprint/config/C/print/models/HPLJ4family/fonts/9nb00067.pmf
Binary files differ
diff --git a/XpConfig/C/print/models/HPLJ4family/fonts/9nb00068.pmf b/hw/xprint/config/C/print/models/HPLJ4family/fonts/9nb00068.pmf
index c20e39a21..c20e39a21 100644
--- a/XpConfig/C/print/models/HPLJ4family/fonts/9nb00068.pmf
+++ b/hw/xprint/config/C/print/models/HPLJ4family/fonts/9nb00068.pmf
Binary files differ
diff --git a/XpConfig/C/print/models/HPLJ4family/fonts/9nb00069.pmf b/hw/xprint/config/C/print/models/HPLJ4family/fonts/9nb00069.pmf
index 4a4a35281..4a4a35281 100644
--- a/XpConfig/C/print/models/HPLJ4family/fonts/9nb00069.pmf
+++ b/hw/xprint/config/C/print/models/HPLJ4family/fonts/9nb00069.pmf
Binary files differ
diff --git a/XpConfig/C/print/models/HPLJ4family/fonts/9nb00070.pmf b/hw/xprint/config/C/print/models/HPLJ4family/fonts/9nb00070.pmf
index 8d97d4339..8d97d4339 100644
--- a/XpConfig/C/print/models/HPLJ4family/fonts/9nb00070.pmf
+++ b/hw/xprint/config/C/print/models/HPLJ4family/fonts/9nb00070.pmf
Binary files differ
diff --git a/XpConfig/C/print/models/HPLJ4family/fonts/9nb00071.pmf b/hw/xprint/config/C/print/models/HPLJ4family/fonts/9nb00071.pmf
index 19844c9c6..19844c9c6 100644
--- a/XpConfig/C/print/models/HPLJ4family/fonts/9nb00071.pmf
+++ b/hw/xprint/config/C/print/models/HPLJ4family/fonts/9nb00071.pmf
Binary files differ
diff --git a/XpConfig/C/print/models/HPLJ4family/fonts/9nb00072.pmf b/hw/xprint/config/C/print/models/HPLJ4family/fonts/9nb00072.pmf
index 5415c3f44..5415c3f44 100644
--- a/XpConfig/C/print/models/HPLJ4family/fonts/9nb00072.pmf
+++ b/hw/xprint/config/C/print/models/HPLJ4family/fonts/9nb00072.pmf
Binary files differ
diff --git a/XpConfig/C/print/models/HPLJ4family/fonts/9nb00073.pmf b/hw/xprint/config/C/print/models/HPLJ4family/fonts/9nb00073.pmf
index 038dfdb46..038dfdb46 100644
--- a/XpConfig/C/print/models/HPLJ4family/fonts/9nb00073.pmf
+++ b/hw/xprint/config/C/print/models/HPLJ4family/fonts/9nb00073.pmf
Binary files differ
diff --git a/XpConfig/C/print/models/HPLJ4family/fonts/9nb00074.pmf b/hw/xprint/config/C/print/models/HPLJ4family/fonts/9nb00074.pmf
index 382a78575..382a78575 100644
--- a/XpConfig/C/print/models/HPLJ4family/fonts/9nb00074.pmf
+++ b/hw/xprint/config/C/print/models/HPLJ4family/fonts/9nb00074.pmf
Binary files differ
diff --git a/XpConfig/C/print/models/HPLJ4family/fonts/9nb00075.pmf b/hw/xprint/config/C/print/models/HPLJ4family/fonts/9nb00075.pmf
index 1c7edf653..1c7edf653 100644
--- a/XpConfig/C/print/models/HPLJ4family/fonts/9nb00075.pmf
+++ b/hw/xprint/config/C/print/models/HPLJ4family/fonts/9nb00075.pmf
Binary files differ
diff --git a/XpConfig/C/print/models/HPLJ4family/fonts/9nb00076.pmf b/hw/xprint/config/C/print/models/HPLJ4family/fonts/9nb00076.pmf
index 2f077f40f..2f077f40f 100644
--- a/XpConfig/C/print/models/HPLJ4family/fonts/9nb00076.pmf
+++ b/hw/xprint/config/C/print/models/HPLJ4family/fonts/9nb00076.pmf
Binary files differ
diff --git a/XpConfig/C/print/models/HPLJ4family/fonts/9nb00077.pmf b/hw/xprint/config/C/print/models/HPLJ4family/fonts/9nb00077.pmf
index 1ce190d51..1ce190d51 100644
--- a/XpConfig/C/print/models/HPLJ4family/fonts/9nb00077.pmf
+++ b/hw/xprint/config/C/print/models/HPLJ4family/fonts/9nb00077.pmf
Binary files differ
diff --git a/XpConfig/C/print/models/HPLJ4family/fonts/9nb00079.pmf b/hw/xprint/config/C/print/models/HPLJ4family/fonts/9nb00079.pmf
index 45d6906ba..45d6906ba 100644
--- a/XpConfig/C/print/models/HPLJ4family/fonts/9nb00079.pmf
+++ b/hw/xprint/config/C/print/models/HPLJ4family/fonts/9nb00079.pmf
Binary files differ
diff --git a/XpConfig/C/print/models/HPLJ4family/fonts/9nb00080.pmf b/hw/xprint/config/C/print/models/HPLJ4family/fonts/9nb00080.pmf
index b991b5edb..b991b5edb 100644
--- a/XpConfig/C/print/models/HPLJ4family/fonts/9nb00080.pmf
+++ b/hw/xprint/config/C/print/models/HPLJ4family/fonts/9nb00080.pmf
Binary files differ
diff --git a/XpConfig/C/print/models/HPLJ4family/fonts/9nb00081.pmf b/hw/xprint/config/C/print/models/HPLJ4family/fonts/9nb00081.pmf
index 1935a9f00..1935a9f00 100644
--- a/XpConfig/C/print/models/HPLJ4family/fonts/9nb00081.pmf
+++ b/hw/xprint/config/C/print/models/HPLJ4family/fonts/9nb00081.pmf
Binary files differ
diff --git a/XpConfig/C/print/models/HPLJ4family/fonts/9nb00082.pmf b/hw/xprint/config/C/print/models/HPLJ4family/fonts/9nb00082.pmf
index 2000dc057..2000dc057 100644
--- a/XpConfig/C/print/models/HPLJ4family/fonts/9nb00082.pmf
+++ b/hw/xprint/config/C/print/models/HPLJ4family/fonts/9nb00082.pmf
Binary files differ
diff --git a/XpConfig/C/print/models/HPLJ4family/fonts/9nb00083.pmf b/hw/xprint/config/C/print/models/HPLJ4family/fonts/9nb00083.pmf
index 90f0e45a8..90f0e45a8 100644
--- a/XpConfig/C/print/models/HPLJ4family/fonts/9nb00083.pmf
+++ b/hw/xprint/config/C/print/models/HPLJ4family/fonts/9nb00083.pmf
Binary files differ
diff --git a/XpConfig/C/print/models/HPLJ4family/fonts/9nb00084.pmf b/hw/xprint/config/C/print/models/HPLJ4family/fonts/9nb00084.pmf
index 52ba39b96..52ba39b96 100644
--- a/XpConfig/C/print/models/HPLJ4family/fonts/9nb00084.pmf
+++ b/hw/xprint/config/C/print/models/HPLJ4family/fonts/9nb00084.pmf
Binary files differ
diff --git a/XpConfig/C/print/models/HPLJ4family/fonts/9nb00085.pmf b/hw/xprint/config/C/print/models/HPLJ4family/fonts/9nb00085.pmf
index f5c9053af..f5c9053af 100644
--- a/XpConfig/C/print/models/HPLJ4family/fonts/9nb00085.pmf
+++ b/hw/xprint/config/C/print/models/HPLJ4family/fonts/9nb00085.pmf
Binary files differ
diff --git a/XpConfig/C/print/models/HPLJ4family/fonts/9nb00086.pmf b/hw/xprint/config/C/print/models/HPLJ4family/fonts/9nb00086.pmf
index b7586ca61..b7586ca61 100644
--- a/XpConfig/C/print/models/HPLJ4family/fonts/9nb00086.pmf
+++ b/hw/xprint/config/C/print/models/HPLJ4family/fonts/9nb00086.pmf
Binary files differ
diff --git a/XpConfig/C/print/models/HPLJ4family/fonts/9nb00087.pmf b/hw/xprint/config/C/print/models/HPLJ4family/fonts/9nb00087.pmf
index 82f054999..82f054999 100644
--- a/XpConfig/C/print/models/HPLJ4family/fonts/9nb00087.pmf
+++ b/hw/xprint/config/C/print/models/HPLJ4family/fonts/9nb00087.pmf
Binary files differ
diff --git a/XpConfig/C/print/models/HPLJ4family/fonts/9nb00088.pmf b/hw/xprint/config/C/print/models/HPLJ4family/fonts/9nb00088.pmf
index 591c96b59..591c96b59 100644
--- a/XpConfig/C/print/models/HPLJ4family/fonts/9nb00088.pmf
+++ b/hw/xprint/config/C/print/models/HPLJ4family/fonts/9nb00088.pmf
Binary files differ
diff --git a/XpConfig/C/print/models/HPLJ4family/fonts/9nb00089.pmf b/hw/xprint/config/C/print/models/HPLJ4family/fonts/9nb00089.pmf
index c8160954a..c8160954a 100644
--- a/XpConfig/C/print/models/HPLJ4family/fonts/9nb00089.pmf
+++ b/hw/xprint/config/C/print/models/HPLJ4family/fonts/9nb00089.pmf
Binary files differ
diff --git a/XpConfig/C/print/models/HPLJ4family/fonts/9nb00090.pmf b/hw/xprint/config/C/print/models/HPLJ4family/fonts/9nb00090.pmf
index 895cfe26a..895cfe26a 100644
--- a/XpConfig/C/print/models/HPLJ4family/fonts/9nb00090.pmf
+++ b/hw/xprint/config/C/print/models/HPLJ4family/fonts/9nb00090.pmf
Binary files differ
diff --git a/XpConfig/C/print/models/HPLJ4family/fonts/9nb00091.pmf b/hw/xprint/config/C/print/models/HPLJ4family/fonts/9nb00091.pmf
index 3bdcae4ba..3bdcae4ba 100644
--- a/XpConfig/C/print/models/HPLJ4family/fonts/9nb00091.pmf
+++ b/hw/xprint/config/C/print/models/HPLJ4family/fonts/9nb00091.pmf
Binary files differ
diff --git a/XpConfig/C/print/models/HPLJ4family/fonts/9nb00092.pmf b/hw/xprint/config/C/print/models/HPLJ4family/fonts/9nb00092.pmf
index a56d47504..a56d47504 100644
--- a/XpConfig/C/print/models/HPLJ4family/fonts/9nb00092.pmf
+++ b/hw/xprint/config/C/print/models/HPLJ4family/fonts/9nb00092.pmf
Binary files differ
diff --git a/XpConfig/C/print/models/HPLJ4family/fonts/9nb00093.pmf b/hw/xprint/config/C/print/models/HPLJ4family/fonts/9nb00093.pmf
index c85f3b4de..c85f3b4de 100644
--- a/XpConfig/C/print/models/HPLJ4family/fonts/9nb00093.pmf
+++ b/hw/xprint/config/C/print/models/HPLJ4family/fonts/9nb00093.pmf
Binary files differ
diff --git a/XpConfig/C/print/models/HPLJ4family/fonts/9nb00094.pmf b/hw/xprint/config/C/print/models/HPLJ4family/fonts/9nb00094.pmf
index 875bf1df8..875bf1df8 100644
--- a/XpConfig/C/print/models/HPLJ4family/fonts/9nb00094.pmf
+++ b/hw/xprint/config/C/print/models/HPLJ4family/fonts/9nb00094.pmf
Binary files differ
diff --git a/XpConfig/C/print/models/HPLJ4family/fonts/Makefile.am b/hw/xprint/config/C/print/models/HPLJ4family/fonts/Makefile.am
index daec9d20e..daec9d20e 100644
--- a/XpConfig/C/print/models/HPLJ4family/fonts/Makefile.am
+++ b/hw/xprint/config/C/print/models/HPLJ4family/fonts/Makefile.am
diff --git a/XpConfig/C/print/models/HPLJ4family/fonts/README b/hw/xprint/config/C/print/models/HPLJ4family/fonts/README
index 2c9821834..2c9821834 100644
--- a/XpConfig/C/print/models/HPLJ4family/fonts/README
+++ b/hw/xprint/config/C/print/models/HPLJ4family/fonts/README
diff --git a/XpConfig/C/print/models/HPLJ4family/fonts/fonts.alias b/hw/xprint/config/C/print/models/HPLJ4family/fonts/fonts.alias
index e69de29bb..e69de29bb 100644
--- a/XpConfig/C/print/models/HPLJ4family/fonts/fonts.alias
+++ b/hw/xprint/config/C/print/models/HPLJ4family/fonts/fonts.alias
diff --git a/XpConfig/C/print/models/HPLJ4family/fonts/fonts.dir b/hw/xprint/config/C/print/models/HPLJ4family/fonts/fonts.dir
index da702ccc1..da702ccc1 100644
--- a/XpConfig/C/print/models/HPLJ4family/fonts/fonts.dir
+++ b/hw/xprint/config/C/print/models/HPLJ4family/fonts/fonts.dir
diff --git a/XpConfig/C/print/models/HPLJ4family/fonts/lpr0ye1a.pmf b/hw/xprint/config/C/print/models/HPLJ4family/fonts/lpr0ye1a.pmf
index 483748893..483748893 100644
--- a/XpConfig/C/print/models/HPLJ4family/fonts/lpr0ye1a.pmf
+++ b/hw/xprint/config/C/print/models/HPLJ4family/fonts/lpr0ye1a.pmf
Binary files differ
diff --git a/XpConfig/C/print/models/HPLJ4family/model-config b/hw/xprint/config/C/print/models/HPLJ4family/model-config
index 1ac997ebe..1ac997ebe 100644
--- a/XpConfig/C/print/models/HPLJ4family/model-config
+++ b/hw/xprint/config/C/print/models/HPLJ4family/model-config
diff --git a/XpConfig/C/print/models/Makefile.am b/hw/xprint/config/C/print/models/Makefile.am
index 488a06a75..488a06a75 100644
--- a/XpConfig/C/print/models/Makefile.am
+++ b/hw/xprint/config/C/print/models/Makefile.am
diff --git a/hw/xprint/config/C/print/models/PS2PDFspooldir-GS/Makefile.am b/hw/xprint/config/C/print/models/PS2PDFspooldir-GS/Makefile.am
new file mode 100644
index 000000000..2b73b9dad
--- /dev/null
+++ b/hw/xprint/config/C/print/models/PS2PDFspooldir-GS/Makefile.am
@@ -0,0 +1,4 @@
+xpcdir = @xpconfigdir@/C/print/models/PS2PDFspooldir-GS
+
+dist_xpc_DATA = model-config
+dist_xpc_SCRIPTS = ps2pdf_spooltodir.sh
diff --git a/XpConfig/C/print/models/PS2PDFspooldir-GS/model-config b/hw/xprint/config/C/print/models/PS2PDFspooldir-GS/model-config
index 1d74b8676..1d74b8676 100644
--- a/XpConfig/C/print/models/PS2PDFspooldir-GS/model-config
+++ b/hw/xprint/config/C/print/models/PS2PDFspooldir-GS/model-config
diff --git a/XpConfig/C/print/models/PS2PDFspooldir-GS/ps2pdf_spooltodir.sh b/hw/xprint/config/C/print/models/PS2PDFspooldir-GS/ps2pdf_spooltodir.sh
index 5739807d8..5739807d8 100755
--- a/XpConfig/C/print/models/PS2PDFspooldir-GS/ps2pdf_spooltodir.sh
+++ b/hw/xprint/config/C/print/models/PS2PDFspooldir-GS/ps2pdf_spooltodir.sh
diff --git a/XpConfig/C/print/models/PSdefault/Makefile.am b/hw/xprint/config/C/print/models/PSdefault/Makefile.am
index 040f26077..040f26077 100644
--- a/XpConfig/C/print/models/PSdefault/Makefile.am
+++ b/hw/xprint/config/C/print/models/PSdefault/Makefile.am
diff --git a/XpConfig/C/print/models/PSdefault/fonts/AvantGarde-Book.pmf b/hw/xprint/config/C/print/models/PSdefault/fonts/AvantGarde-Book.pmf
index 331178985..331178985 100644
--- a/XpConfig/C/print/models/PSdefault/fonts/AvantGarde-Book.pmf
+++ b/hw/xprint/config/C/print/models/PSdefault/fonts/AvantGarde-Book.pmf
Binary files differ
diff --git a/XpConfig/C/print/models/PSdefault/fonts/AvantGarde-BookOblique.pmf b/hw/xprint/config/C/print/models/PSdefault/fonts/AvantGarde-BookOblique.pmf
index 61bcb22b9..61bcb22b9 100644
--- a/XpConfig/C/print/models/PSdefault/fonts/AvantGarde-BookOblique.pmf
+++ b/hw/xprint/config/C/print/models/PSdefault/fonts/AvantGarde-BookOblique.pmf
Binary files differ
diff --git a/XpConfig/C/print/models/PSdefault/fonts/AvantGarde-Demi.pmf b/hw/xprint/config/C/print/models/PSdefault/fonts/AvantGarde-Demi.pmf
index 88ccf0834..88ccf0834 100644
--- a/XpConfig/C/print/models/PSdefault/fonts/AvantGarde-Demi.pmf
+++ b/hw/xprint/config/C/print/models/PSdefault/fonts/AvantGarde-Demi.pmf
Binary files differ
diff --git a/XpConfig/C/print/models/PSdefault/fonts/AvantGarde-DemiOblique.pmf b/hw/xprint/config/C/print/models/PSdefault/fonts/AvantGarde-DemiOblique.pmf
index 45cc8857b..45cc8857b 100644
--- a/XpConfig/C/print/models/PSdefault/fonts/AvantGarde-DemiOblique.pmf
+++ b/hw/xprint/config/C/print/models/PSdefault/fonts/AvantGarde-DemiOblique.pmf
Binary files differ
diff --git a/XpConfig/C/print/models/PSdefault/fonts/Courier-Bold.pmf b/hw/xprint/config/C/print/models/PSdefault/fonts/Courier-Bold.pmf
index ac760fdb9..ac760fdb9 100644
--- a/XpConfig/C/print/models/PSdefault/fonts/Courier-Bold.pmf
+++ b/hw/xprint/config/C/print/models/PSdefault/fonts/Courier-Bold.pmf
Binary files differ
diff --git a/XpConfig/C/print/models/PSdefault/fonts/Courier-BoldOblique.pmf b/hw/xprint/config/C/print/models/PSdefault/fonts/Courier-BoldOblique.pmf
index 8db974018..8db974018 100644
--- a/XpConfig/C/print/models/PSdefault/fonts/Courier-BoldOblique.pmf
+++ b/hw/xprint/config/C/print/models/PSdefault/fonts/Courier-BoldOblique.pmf
Binary files differ
diff --git a/XpConfig/C/print/models/PSdefault/fonts/Courier-Oblique.pmf b/hw/xprint/config/C/print/models/PSdefault/fonts/Courier-Oblique.pmf
index 87aee16cc..87aee16cc 100644
--- a/XpConfig/C/print/models/PSdefault/fonts/Courier-Oblique.pmf
+++ b/hw/xprint/config/C/print/models/PSdefault/fonts/Courier-Oblique.pmf
Binary files differ
diff --git a/XpConfig/C/print/models/PSdefault/fonts/Courier.pmf b/hw/xprint/config/C/print/models/PSdefault/fonts/Courier.pmf
index 6109c8c11..6109c8c11 100644
--- a/XpConfig/C/print/models/PSdefault/fonts/Courier.pmf
+++ b/hw/xprint/config/C/print/models/PSdefault/fonts/Courier.pmf
Binary files differ
diff --git a/XpConfig/C/print/models/PSdefault/fonts/Helvetica-Bold.pmf b/hw/xprint/config/C/print/models/PSdefault/fonts/Helvetica-Bold.pmf
index 30d462d95..30d462d95 100644
--- a/XpConfig/C/print/models/PSdefault/fonts/Helvetica-Bold.pmf
+++ b/hw/xprint/config/C/print/models/PSdefault/fonts/Helvetica-Bold.pmf
Binary files differ
diff --git a/XpConfig/C/print/models/PSdefault/fonts/Helvetica-BoldOblique.pmf b/hw/xprint/config/C/print/models/PSdefault/fonts/Helvetica-BoldOblique.pmf
index 89619516f..89619516f 100644
--- a/XpConfig/C/print/models/PSdefault/fonts/Helvetica-BoldOblique.pmf
+++ b/hw/xprint/config/C/print/models/PSdefault/fonts/Helvetica-BoldOblique.pmf
Binary files differ
diff --git a/XpConfig/C/print/models/PSdefault/fonts/Helvetica-Oblique.pmf b/hw/xprint/config/C/print/models/PSdefault/fonts/Helvetica-Oblique.pmf
index 2a0de8afc..2a0de8afc 100644
--- a/XpConfig/C/print/models/PSdefault/fonts/Helvetica-Oblique.pmf
+++ b/hw/xprint/config/C/print/models/PSdefault/fonts/Helvetica-Oblique.pmf
Binary files differ
diff --git a/XpConfig/C/print/models/PSdefault/fonts/Helvetica.pmf b/hw/xprint/config/C/print/models/PSdefault/fonts/Helvetica.pmf
index b1fd475bb..b1fd475bb 100644
--- a/XpConfig/C/print/models/PSdefault/fonts/Helvetica.pmf
+++ b/hw/xprint/config/C/print/models/PSdefault/fonts/Helvetica.pmf
Binary files differ
diff --git a/XpConfig/C/print/models/PSdefault/fonts/LubalinGraph-Book.pmf b/hw/xprint/config/C/print/models/PSdefault/fonts/LubalinGraph-Book.pmf
index aff4b4949..aff4b4949 100644
--- a/XpConfig/C/print/models/PSdefault/fonts/LubalinGraph-Book.pmf
+++ b/hw/xprint/config/C/print/models/PSdefault/fonts/LubalinGraph-Book.pmf
Binary files differ
diff --git a/XpConfig/C/print/models/PSdefault/fonts/LubalinGraph-BookOblique.pmf b/hw/xprint/config/C/print/models/PSdefault/fonts/LubalinGraph-BookOblique.pmf
index b5b77f353..b5b77f353 100644
--- a/XpConfig/C/print/models/PSdefault/fonts/LubalinGraph-BookOblique.pmf
+++ b/hw/xprint/config/C/print/models/PSdefault/fonts/LubalinGraph-BookOblique.pmf
Binary files differ
diff --git a/XpConfig/C/print/models/PSdefault/fonts/LubalinGraph-Demi.pmf b/hw/xprint/config/C/print/models/PSdefault/fonts/LubalinGraph-Demi.pmf
index 100339854..100339854 100644
--- a/XpConfig/C/print/models/PSdefault/fonts/LubalinGraph-Demi.pmf
+++ b/hw/xprint/config/C/print/models/PSdefault/fonts/LubalinGraph-Demi.pmf
Binary files differ
diff --git a/XpConfig/C/print/models/PSdefault/fonts/LubalinGraph-DemiOblique.pmf b/hw/xprint/config/C/print/models/PSdefault/fonts/LubalinGraph-DemiOblique.pmf
index a8550e70d..a8550e70d 100644
--- a/XpConfig/C/print/models/PSdefault/fonts/LubalinGraph-DemiOblique.pmf
+++ b/hw/xprint/config/C/print/models/PSdefault/fonts/LubalinGraph-DemiOblique.pmf
Binary files differ
diff --git a/XpConfig/C/print/models/PSdefault/fonts/Makefile.am b/hw/xprint/config/C/print/models/PSdefault/fonts/Makefile.am
index 7cdfd8ee9..e7ddb6c0f 100644
--- a/XpConfig/C/print/models/PSdefault/fonts/Makefile.am
+++ b/hw/xprint/config/C/print/models/PSdefault/fonts/Makefile.am
@@ -17,7 +17,6 @@ dist_xpc_DATA = \
LubalinGraph-Book.pmf \
LubalinGraph-DemiOblique.pmf \
LubalinGraph-Demi.pmf \
- NewCenturySchlbk-BoldItalic.pmf \
NewCenturySchlbk-Bold.pmf \
NewCenturySchlbk-Italic.pmf \
NewCenturySchlbk-Roman.pmf \
diff --git a/XpConfig/C/print/models/PSdefault/fonts/NewCenturySchlbk-Bold.pmf b/hw/xprint/config/C/print/models/PSdefault/fonts/NewCenturySchlbk-Bold.pmf
index ab22aabf5..ab22aabf5 100644
--- a/XpConfig/C/print/models/PSdefault/fonts/NewCenturySchlbk-Bold.pmf
+++ b/hw/xprint/config/C/print/models/PSdefault/fonts/NewCenturySchlbk-Bold.pmf
Binary files differ
diff --git a/XpConfig/C/print/models/PSdefault/fonts/NewCenturySchlbk-BoldItalic.pmf b/hw/xprint/config/C/print/models/PSdefault/fonts/NewCenturySchlbk-BoldItalic.pmf
index e68811eb7..e68811eb7 100644
--- a/XpConfig/C/print/models/PSdefault/fonts/NewCenturySchlbk-BoldItalic.pmf
+++ b/hw/xprint/config/C/print/models/PSdefault/fonts/NewCenturySchlbk-BoldItalic.pmf
Binary files differ
diff --git a/XpConfig/C/print/models/PSdefault/fonts/NewCenturySchlbk-Italic.pmf b/hw/xprint/config/C/print/models/PSdefault/fonts/NewCenturySchlbk-Italic.pmf
index 390f223cb..390f223cb 100644
--- a/XpConfig/C/print/models/PSdefault/fonts/NewCenturySchlbk-Italic.pmf
+++ b/hw/xprint/config/C/print/models/PSdefault/fonts/NewCenturySchlbk-Italic.pmf
Binary files differ
diff --git a/XpConfig/C/print/models/PSdefault/fonts/NewCenturySchlbk-Roman.pmf b/hw/xprint/config/C/print/models/PSdefault/fonts/NewCenturySchlbk-Roman.pmf
index 655b9b6c0..655b9b6c0 100644
--- a/XpConfig/C/print/models/PSdefault/fonts/NewCenturySchlbk-Roman.pmf
+++ b/hw/xprint/config/C/print/models/PSdefault/fonts/NewCenturySchlbk-Roman.pmf
Binary files differ
diff --git a/XpConfig/C/print/models/PSdefault/fonts/Souvenir-Demi.pmf b/hw/xprint/config/C/print/models/PSdefault/fonts/Souvenir-Demi.pmf
index 5e786ec42..5e786ec42 100644
--- a/XpConfig/C/print/models/PSdefault/fonts/Souvenir-Demi.pmf
+++ b/hw/xprint/config/C/print/models/PSdefault/fonts/Souvenir-Demi.pmf
Binary files differ
diff --git a/XpConfig/C/print/models/PSdefault/fonts/Souvenir-DemiItalic.pmf b/hw/xprint/config/C/print/models/PSdefault/fonts/Souvenir-DemiItalic.pmf
index 094b348cc..094b348cc 100644
--- a/XpConfig/C/print/models/PSdefault/fonts/Souvenir-DemiItalic.pmf
+++ b/hw/xprint/config/C/print/models/PSdefault/fonts/Souvenir-DemiItalic.pmf
Binary files differ
diff --git a/XpConfig/C/print/models/PSdefault/fonts/Souvenir-Light.pmf b/hw/xprint/config/C/print/models/PSdefault/fonts/Souvenir-Light.pmf
index 0bb62bde6..0bb62bde6 100644
--- a/XpConfig/C/print/models/PSdefault/fonts/Souvenir-Light.pmf
+++ b/hw/xprint/config/C/print/models/PSdefault/fonts/Souvenir-Light.pmf
Binary files differ
diff --git a/XpConfig/C/print/models/PSdefault/fonts/Souvenir-LightItalic.pmf b/hw/xprint/config/C/print/models/PSdefault/fonts/Souvenir-LightItalic.pmf
index 3c19a7fbf..3c19a7fbf 100644
--- a/XpConfig/C/print/models/PSdefault/fonts/Souvenir-LightItalic.pmf
+++ b/hw/xprint/config/C/print/models/PSdefault/fonts/Souvenir-LightItalic.pmf
Binary files differ
diff --git a/XpConfig/C/print/models/PSdefault/fonts/Symbol.pmf b/hw/xprint/config/C/print/models/PSdefault/fonts/Symbol.pmf
index 48925f816..48925f816 100644
--- a/XpConfig/C/print/models/PSdefault/fonts/Symbol.pmf
+++ b/hw/xprint/config/C/print/models/PSdefault/fonts/Symbol.pmf
Binary files differ
diff --git a/XpConfig/C/print/models/PSdefault/fonts/Times-Bold.pmf b/hw/xprint/config/C/print/models/PSdefault/fonts/Times-Bold.pmf
index cf46ca03f..cf46ca03f 100644
--- a/XpConfig/C/print/models/PSdefault/fonts/Times-Bold.pmf
+++ b/hw/xprint/config/C/print/models/PSdefault/fonts/Times-Bold.pmf
Binary files differ
diff --git a/XpConfig/C/print/models/PSdefault/fonts/Times-BoldItalic.pmf b/hw/xprint/config/C/print/models/PSdefault/fonts/Times-BoldItalic.pmf
index ffe51af80..ffe51af80 100644
--- a/XpConfig/C/print/models/PSdefault/fonts/Times-BoldItalic.pmf
+++ b/hw/xprint/config/C/print/models/PSdefault/fonts/Times-BoldItalic.pmf
Binary files differ
diff --git a/XpConfig/C/print/models/PSdefault/fonts/Times-Italic.pmf b/hw/xprint/config/C/print/models/PSdefault/fonts/Times-Italic.pmf
index 865433f83..865433f83 100644
--- a/XpConfig/C/print/models/PSdefault/fonts/Times-Italic.pmf
+++ b/hw/xprint/config/C/print/models/PSdefault/fonts/Times-Italic.pmf
Binary files differ
diff --git a/XpConfig/C/print/models/PSdefault/fonts/Times-Roman.pmf b/hw/xprint/config/C/print/models/PSdefault/fonts/Times-Roman.pmf
index 625e0c43f..625e0c43f 100644
--- a/XpConfig/C/print/models/PSdefault/fonts/Times-Roman.pmf
+++ b/hw/xprint/config/C/print/models/PSdefault/fonts/Times-Roman.pmf
Binary files differ
diff --git a/XpConfig/C/print/models/PSdefault/fonts/ZapfDingbats.pmf b/hw/xprint/config/C/print/models/PSdefault/fonts/ZapfDingbats.pmf
index 1ae9a7688..1ae9a7688 100644
--- a/XpConfig/C/print/models/PSdefault/fonts/ZapfDingbats.pmf
+++ b/hw/xprint/config/C/print/models/PSdefault/fonts/ZapfDingbats.pmf
Binary files differ
diff --git a/XpConfig/C/print/models/PSdefault/model-config b/hw/xprint/config/C/print/models/PSdefault/model-config
index 05a19d859..05a19d859 100644
--- a/XpConfig/C/print/models/PSdefault/model-config
+++ b/hw/xprint/config/C/print/models/PSdefault/model-config
diff --git a/hw/xprint/config/C/print/models/PSspooldir/Makefile.am b/hw/xprint/config/C/print/models/PSspooldir/Makefile.am
new file mode 100644
index 000000000..717cd2c36
--- /dev/null
+++ b/hw/xprint/config/C/print/models/PSspooldir/Makefile.am
@@ -0,0 +1,4 @@
+xpcdir = @xpconfigdir@/C/print/models/PSspooldir
+
+dist_xpc_DATA = model-config
+dist_xpc_SCRIPTS = spooltodir.sh
diff --git a/XpConfig/C/print/models/PSspooldir/model-config b/hw/xprint/config/C/print/models/PSspooldir/model-config
index 6bb477767..6bb477767 100644
--- a/XpConfig/C/print/models/PSspooldir/model-config
+++ b/hw/xprint/config/C/print/models/PSspooldir/model-config
diff --git a/XpConfig/C/print/models/PSspooldir/spooltodir.sh b/hw/xprint/config/C/print/models/PSspooldir/spooltodir.sh
index aba14e1b3..aba14e1b3 100755
--- a/XpConfig/C/print/models/PSspooldir/spooltodir.sh
+++ b/hw/xprint/config/C/print/models/PSspooldir/spooltodir.sh
diff --git a/XpConfig/C/print/models/SPSPARC2/Makefile.am b/hw/xprint/config/C/print/models/SPSPARC2/Makefile.am
index 5a56f90fb..5a56f90fb 100644
--- a/XpConfig/C/print/models/SPSPARC2/Makefile.am
+++ b/hw/xprint/config/C/print/models/SPSPARC2/Makefile.am
diff --git a/XpConfig/C/print/models/SPSPARC2/fonts/Makefile.am b/hw/xprint/config/C/print/models/SPSPARC2/fonts/Makefile.am
index 8cc269459..8cc269459 100644
--- a/XpConfig/C/print/models/SPSPARC2/fonts/Makefile.am
+++ b/hw/xprint/config/C/print/models/SPSPARC2/fonts/Makefile.am
diff --git a/XpConfig/C/print/models/SPSPARC2/model-config b/hw/xprint/config/C/print/models/SPSPARC2/model-config
index 9f29b9992..9f29b9992 100644
--- a/XpConfig/C/print/models/SPSPARC2/model-config
+++ b/hw/xprint/config/C/print/models/SPSPARC2/model-config
diff --git a/XpConfig/Makefile.am b/hw/xprint/config/Makefile.am
index a5ea214c4..197d19de0 100644
--- a/XpConfig/Makefile.am
+++ b/hw/xprint/config/Makefile.am
@@ -709,4 +709,4 @@ install-data-local: remove-links
uninstall-hook: remove-links
-EXTRA_DIST = README
+dist_xpconfig_DATA = README
diff --git a/XpConfig/README b/hw/xprint/config/README
index d7447815d..d7447815d 100644
--- a/XpConfig/README
+++ b/hw/xprint/config/README
diff --git a/XpConfig/en_US/Makefile.am b/hw/xprint/config/en_US/Makefile.am
index 0390ed2d4..0390ed2d4 100644
--- a/XpConfig/en_US/Makefile.am
+++ b/hw/xprint/config/en_US/Makefile.am
diff --git a/XpConfig/en_US/print/Makefile.am b/hw/xprint/config/en_US/print/Makefile.am
index 025003339..025003339 100644
--- a/XpConfig/en_US/print/Makefile.am
+++ b/hw/xprint/config/en_US/print/Makefile.am
diff --git a/XpConfig/en_US/print/attributes/Makefile.am b/hw/xprint/config/en_US/print/attributes/Makefile.am
index 8a05004d1..8a05004d1 100644
--- a/XpConfig/en_US/print/attributes/Makefile.am
+++ b/hw/xprint/config/en_US/print/attributes/Makefile.am
diff --git a/XpConfig/en_US/print/attributes/document b/hw/xprint/config/en_US/print/attributes/document
index 253c46bce..253c46bce 100644
--- a/XpConfig/en_US/print/attributes/document
+++ b/hw/xprint/config/en_US/print/attributes/document
diff --git a/Xprint/ddxInit.c b/hw/xprint/ddxInit.c
index 67035e528..8e7ec2e0a 100644
--- a/Xprint/ddxInit.c
+++ b/hw/xprint/ddxInit.c
@@ -1,4 +1,3 @@
-/* $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.
@@ -76,8 +75,6 @@ InitOutput(
char **argv)
{
- int i;
-
pScreenInfo->imageByteOrder = IMAGE_BYTE_ORDER;
pScreenInfo->bitmapScanlineUnit = BITMAP_SCANLINE_UNIT;
pScreenInfo->bitmapScanlinePad = BITMAP_SCANLINE_PAD;
@@ -159,9 +156,9 @@ PointerProc(
{
map[0] = 0;
InitPointerDeviceStruct(pPtr, map, NUM_BUTTONS,
- miPointerGetMotionEvents,
+ GetMotionHistory,
(PtrCtrlProcPtr)_XpVoidNoop,
- miPointerGetMotionBufferSize());
+ GetMotionHistorySize(), 2);
break;
}
case DEVICE_ON:
@@ -179,7 +176,7 @@ InitInput(
int argc,
char **argv)
{
- DevicePtr ptr, kbd;
+ DeviceIntPtr ptr, kbd;
ptr = AddInputDevice((DeviceProc)PointerProc, TRUE);
kbd = AddInputDevice((DeviceProc)KeyboardProc, TRUE);
@@ -192,7 +189,7 @@ InitInput(
Bool
LegalModifier(
unsigned int key,
- DevicePtr dev)
+ DeviceIntPtr dev)
{
return TRUE;
}
@@ -239,21 +236,12 @@ OsVendorFatalError(void)
}
#endif
+#ifdef DDXBEFORERESET
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 */
@@ -295,8 +283,7 @@ ddxProcessArgument (
#include <X11/extensions/XI.h>
#include <X11/extensions/XIproto.h>
#include "XIstubs.h"
-
-extern int BadDevice;
+#include "exglobals.h"
int
ChangePointerDevice (
diff --git a/Xprint/doc/Makefile.am b/hw/xprint/doc/Makefile.am
index c0cb9d3d9..c0cb9d3d9 100644
--- a/Xprint/doc/Makefile.am
+++ b/hw/xprint/doc/Makefile.am
diff --git a/Xprint/doc/Xprt.html b/hw/xprint/doc/Xprt.html
index f84a3c134..2aa0c9e3c 100644
--- a/Xprint/doc/Xprt.html
+++ b/hw/xprint/doc/Xprt.html
@@ -4,7 +4,7 @@
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
+ </p><p>Xprint is a very flexible, extensible, scalable, 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
@@ -44,11 +44,11 @@
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>
+ 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 alternate 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).
+ (multiple values can be specified, separated 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>
diff --git a/Xprint/doc/Xprt.man.pre b/hw/xprint/doc/Xprt.man.pre
index 7599a1344..837619cb2 100644
--- a/Xprint/doc/Xprt.man.pre
+++ b/hw/xprint/doc/Xprt.man.pre
@@ -20,7 +20,7 @@ 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
+Xprint is a very flexible, extensible, scalable, 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
@@ -85,7 +85,7 @@ points for clients), but establishes at least
one.
.TP
\fB\-XpFile \fIfile\fB\fR
-Sets an altername Xprinters file (see section FILES).
+Sets an alternate Xprinters file (see section FILES).
.TP
\fB\-XpSpoolerType \fIspoolername\fB\fR
Defines the spooler system to be used for print job spooling.
@@ -113,7 +113,7 @@ other
none
-(multiple values can be specified, seperated by ':', the first active spooler will be chosen).
+(multiple values can be specified, separated by ':', the first active spooler will be chosen).
The default value is platform-specific and can be obtained via
.nf
diff --git a/Xprint/doc/Xprt.sgml b/hw/xprint/doc/Xprt.sgml
index 0ffa39fcb..a62499263 100644
--- a/Xprint/doc/Xprt.sgml
+++ b/hw/xprint/doc/Xprt.sgml
@@ -55,7 +55,7 @@ HTML generation can be done like this:
clients such as <application>mozilla</application>.
</para>
- <para>Xprint is a very flexible, extensible, scaleable, client/server
+ <para>Xprint is a very flexible, extensible, scalable, 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
@@ -155,7 +155,7 @@ HTML generation can be done like this:
<term><option>-XpFile <replaceable>file</replaceable></option>
</term>
<listitem>
- <para>Sets an altername Xprinters file (see section FILES).</para>
+ <para>Sets an alternate Xprinters file (see section FILES).</para>
</listitem>
</varlistentry>
<varlistentry>
@@ -178,7 +178,7 @@ HTML generation can be done like this:
<member>other</member>
<member>none</member>
</simplelist>
- (multiple values can be specified, seperated by ':', the first active spooler will be chosen).
+ (multiple values can be specified, separated by ':', the first active spooler will be chosen).
The default value is platform-specific and can be obtained via
<programlisting>Xprt -h</programlisting>.
</para>
diff --git a/Xprint/etc/Makefile.am b/hw/xprint/etc/Makefile.am
index 0a960cd1b..0a960cd1b 100644
--- a/Xprint/etc/Makefile.am
+++ b/hw/xprint/etc/Makefile.am
diff --git a/Xprint/etc/Xsession.d/cde_xsessiond_xprint.sh b/hw/xprint/etc/Xsession.d/92xprint-xpserverlist
index 3fb6bba7c..60d964a34 100644
--- a/Xprint/etc/Xsession.d/cde_xsessiond_xprint.sh
+++ b/hw/xprint/etc/Xsession.d/92xprint-xpserverlist
@@ -1,19 +1,19 @@
#!/bin/sh
#####################################################################
-### File: 0018.xprint
+### File: 92xprint-xpserverlist
###
-### Default Location: /usr/dt/config/Xsession.d/
+### Default Location: /etc/X11/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
+### Invoked by: /etc/X11/Xsession
###
### (c) Copyright 2003-2004 Roland Mainz <roland.mainz@nrubsig.org>
###
-### please send bugfixes or comments to http://xprint.mozdev.org/
+### please send bugfixes or comments to https://bugs.freedesktop.org
###
#####################################################################
@@ -22,8 +22,8 @@
# Obtain list of Xprint servers
#
-if [ -f "/etc/init.d/xprint" ] ; then
- XPSERVERLIST="`/bin/sh /etc/init.d/xprint get_xpserverlist`"
+if [ -x "/etc/init.d/xprint" ] ; then
+ XPSERVERLIST="`/etc/init.d/xprint get_xpserverlist`"
export XPSERVERLIST
fi
diff --git a/hw/xprint/etc/Xsession.d/Makefile.am b/hw/xprint/etc/Xsession.d/Makefile.am
new file mode 100644
index 000000000..96a5ee73b
--- /dev/null
+++ b/hw/xprint/etc/Xsession.d/Makefile.am
@@ -0,0 +1,2 @@
+xpcdir = $(sysconfdir)/X11/Xsession.d
+dist_xpc_DATA = 92xprint-xpserverlist
diff --git a/hw/xprint/etc/init.d/Makefile.am b/hw/xprint/etc/init.d/Makefile.am
new file mode 100644
index 000000000..0cf1adc92
--- /dev/null
+++ b/hw/xprint/etc/init.d/Makefile.am
@@ -0,0 +1,12 @@
+include $(top_srcdir)/cpprules.in
+
+noinst_PRE = xprint
+BUILT_SOURCES = $(noinst_PRE)
+CLEANFILES = $(noinst_PRE) xprint.pre
+
+CPP_FILES_FLAGS = -DProjectRoot='"$(PROJECTROOT)"' -DOS_LINUX
+
+xprint.pre: xprint.cpp
+ $(SED) -e 's/^\(\s\+\)#/\1XCOMM/' ${srcdir}/xprint.cpp > $@
+
+EXTRA_DIST = xprint.cpp
diff --git a/Xprint/etc/init.d/xprint.cpp b/hw/xprint/etc/init.d/xprint.cpp
index dbfd1e139..dbfd1e139 100644
--- a/Xprint/etc/init.d/xprint.cpp
+++ b/hw/xprint/etc/init.d/xprint.cpp
diff --git a/Xprint/etc/profile.d/Makefile.am b/hw/xprint/etc/profile.d/Makefile.am
index b91a9115a..b91a9115a 100644
--- a/Xprint/etc/profile.d/Makefile.am
+++ b/hw/xprint/etc/profile.d/Makefile.am
diff --git a/Xprint/etc/profile.d/xprint.csh b/hw/xprint/etc/profile.d/xprint.csh
index 7cc675840..7cc675840 100644
--- a/Xprint/etc/profile.d/xprint.csh
+++ b/hw/xprint/etc/profile.d/xprint.csh
diff --git a/Xprint/etc/profile.d/xprint.sh b/hw/xprint/etc/profile.d/xprint.sh
index b5b46c1e7..b5b46c1e7 100644
--- a/Xprint/etc/profile.d/xprint.sh
+++ b/hw/xprint/etc/profile.d/xprint.sh
diff --git a/Xprint/mediaSizes.c b/hw/xprint/mediaSizes.c
index 7f582199d..7acc70679 100644
--- a/Xprint/mediaSizes.c
+++ b/hw/xprint/mediaSizes.c
@@ -1,4 +1,3 @@
-/* $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.
diff --git a/Xprint/pcl-mono/Makefile.am b/hw/xprint/pcl-mono/Makefile.am
index 4d8dfc682..4d8dfc682 100644
--- a/Xprint/pcl-mono/Makefile.am
+++ b/hw/xprint/pcl-mono/Makefile.am
diff --git a/Xprint/pcl/Makefile.am b/hw/xprint/pcl/Makefile.am
index 90133e8e2..90133e8e2 100644
--- a/Xprint/pcl/Makefile.am
+++ b/hw/xprint/pcl/Makefile.am
diff --git a/Xprint/pcl/Makefile.am.inc b/hw/xprint/pcl/Makefile.am.inc
index 585ce4839..c3af606ee 100644
--- a/Xprint/pcl/Makefile.am.inc
+++ b/hw/xprint/pcl/Makefile.am.inc
@@ -1,7 +1,6 @@
-INCLUDES = -I$(top_srcdir)/Xprint -I$(top_srcdir)/cfb -I$(top_srcdir)/mfb
+INCLUDES = -I$(top_srcdir)/hw/xprint
-AM_CFLAGS = @SERVER_DEFINES@ @DIX_CFLAGS@ @XPRINT_CFLAGS@ \
- -D_XP_PRINT_SERVER_ -DPSZ=8 $(PCL_DRIVER)
+AM_CFLAGS = @DIX_CFLAGS@ @XPRINT_CFLAGS@ -D_XP_PRINT_SERVER_ $(PCL_DRIVER)
libpcl_la_SOURCES = \
$(srcdir)/../pcl/PclArc.c \
@@ -19,7 +18,6 @@ libpcl_la_SOURCES = \
$(srcdir)/../pcl/Pclmap.h \
$(srcdir)/../pcl/PclMisc.c \
$(srcdir)/../pcl/PclPixel.c \
- $(srcdir)/../pcl/PclPixmap.c \
$(srcdir)/../pcl/PclPolygon.c \
$(srcdir)/../pcl/PclPrint.c \
$(srcdir)/../pcl/PclSFonts.c \
diff --git a/Xprint/pcl/Pcl.h b/hw/xprint/pcl/Pcl.h
index bb1f52b2c..217e30438 100644
--- a/Xprint/pcl/Pcl.h
+++ b/hw/xprint/pcl/Pcl.h
@@ -1,4 +1,3 @@
-/* $Xorg: Pcl.h,v 1.3 2000/08/17 19:48:07 cpqbld Exp $ */
/*******************************************************************
**
** *********************************************************
@@ -44,7 +43,6 @@ 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>
diff --git a/Xprint/pcl/PclArc.c b/hw/xprint/pcl/PclArc.c
index d675e1699..0d8289e33 100644
--- a/Xprint/pcl/PclArc.c
+++ b/hw/xprint/pcl/PclArc.c
@@ -1,4 +1,3 @@
-/* $Xorg: PclArc.c,v 1.3 2000/08/17 19:48:07 cpqbld Exp $ */
/*******************************************************************
**
** *********************************************************
@@ -45,7 +44,6 @@ 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>
diff --git a/Xprint/pcl/PclArea.c b/hw/xprint/pcl/PclArea.c
index dc9156b17..59ae5e3cc 100644
--- a/Xprint/pcl/PclArea.c
+++ b/hw/xprint/pcl/PclArea.c
@@ -1,4 +1,3 @@
-/* $Xorg: PclArea.c,v 1.3 2000/08/17 19:48:07 cpqbld Exp $ */
/*******************************************************************
**
** *********************************************************
@@ -44,7 +43,6 @@ 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>
diff --git a/Xprint/pcl/PclAttVal.c b/hw/xprint/pcl/PclAttVal.c
index adbd197fd..f0f204764 100644
--- a/Xprint/pcl/PclAttVal.c
+++ b/hw/xprint/pcl/PclAttVal.c
@@ -1,5 +1,4 @@
/*
- * $Xorg: PclAttVal.c,v 1.3 2000/08/17 19:48:07 cpqbld Exp $
*/
/*
(c) Copyright 1996 Hewlett-Packard Company
diff --git a/Xprint/pcl/PclAttr.c b/hw/xprint/pcl/PclAttr.c
index 3cde053f1..b27bf4fce 100644
--- a/Xprint/pcl/PclAttr.c
+++ b/hw/xprint/pcl/PclAttr.c
@@ -1,4 +1,3 @@
-/* $Xorg: PclAttr.c,v 1.3 2000/08/17 19:48:07 cpqbld Exp $ */
/*******************************************************************
**
** *********************************************************
diff --git a/Xprint/pcl/PclColor.c b/hw/xprint/pcl/PclColor.c
index 37d42a521..8b05da056 100644
--- a/Xprint/pcl/PclColor.c
+++ b/hw/xprint/pcl/PclColor.c
@@ -1,4 +1,3 @@
-/* $Xorg: PclColor.c,v 1.3 2000/08/17 19:48:07 cpqbld Exp $ */
/*******************************************************************
**
** *********************************************************
@@ -45,7 +44,6 @@ 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>
diff --git a/Xprint/pcl/PclCursor.c b/hw/xprint/pcl/PclCursor.c
index f50c355e9..a3eeb1610 100644
--- a/Xprint/pcl/PclCursor.c
+++ b/hw/xprint/pcl/PclCursor.c
@@ -1,4 +1,3 @@
-/* $Xorg: PclCursor.c,v 1.3 2000/08/17 19:48:08 cpqbld Exp $ */
/*******************************************************************
**
** *********************************************************
@@ -44,7 +43,6 @@ 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>
diff --git a/Xprint/pcl/PclDef.h b/hw/xprint/pcl/PclDef.h
index 275bd63ec..dcd54c4fe 100644
--- a/Xprint/pcl/PclDef.h
+++ b/hw/xprint/pcl/PclDef.h
@@ -1,4 +1,3 @@
-/* $Xorg: PclDef.h,v 1.3 2000/08/17 19:48:08 cpqbld Exp $ */
/*******************************************************************
**
** *********************************************************
diff --git a/Xprint/pcl/PclFonts.c b/hw/xprint/pcl/PclFonts.c
index 591435faa..716c48d6d 100644
--- a/Xprint/pcl/PclFonts.c
+++ b/hw/xprint/pcl/PclFonts.c
@@ -1,4 +1,3 @@
-/* $Xorg: PclFonts.c,v 1.3 2000/08/17 19:48:08 cpqbld Exp $ */
/*******************************************************************
**
** *********************************************************
diff --git a/Xprint/pcl/PclGC.c b/hw/xprint/pcl/PclGC.c
index c47986eed..ba82c566a 100644
--- a/Xprint/pcl/PclGC.c
+++ b/hw/xprint/pcl/PclGC.c
@@ -1,4 +1,3 @@
-/* $Xorg: PclGC.c,v 1.4 2000/08/17 19:48:08 cpqbld Exp $ */
/*******************************************************************
**
** *********************************************************
@@ -44,7 +43,6 @@ 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>
diff --git a/Xprint/pcl/PclInit.c b/hw/xprint/pcl/PclInit.c
index 272f4da9a..734ec5f27 100644
--- a/Xprint/pcl/PclInit.c
+++ b/hw/xprint/pcl/PclInit.c
@@ -1,4 +1,3 @@
-/* $Xorg: PclInit.c,v 1.3 2000/08/17 19:48:08 cpqbld Exp $ */
/*******************************************************************
**
** *********************************************************
@@ -76,7 +75,6 @@ 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>
diff --git a/Xprint/pcl/PclLine.c b/hw/xprint/pcl/PclLine.c
index f2b564df8..52a586d17 100644
--- a/Xprint/pcl/PclLine.c
+++ b/hw/xprint/pcl/PclLine.c
@@ -1,4 +1,3 @@
-/* $Xorg: PclLine.c,v 1.3 2000/08/17 19:48:08 cpqbld Exp $ */
/*******************************************************************
**
** *********************************************************
@@ -44,7 +43,6 @@ 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>
diff --git a/Xprint/pcl/PclMisc.c b/hw/xprint/pcl/PclMisc.c
index 3a958e783..e0b7dced9 100644
--- a/Xprint/pcl/PclMisc.c
+++ b/hw/xprint/pcl/PclMisc.c
@@ -1,4 +1,3 @@
-/* $Xorg: PclMisc.c,v 1.3 2000/08/17 19:48:08 cpqbld Exp $ */
/*******************************************************************
**
** *********************************************************
@@ -44,7 +43,6 @@ 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>
diff --git a/Xprint/pcl/PclPixel.c b/hw/xprint/pcl/PclPixel.c
index bfad618ed..f41af272f 100644
--- a/Xprint/pcl/PclPixel.c
+++ b/hw/xprint/pcl/PclPixel.c
@@ -1,4 +1,3 @@
-/* $Xorg: PclPixel.c,v 1.3 2000/08/17 19:48:08 cpqbld Exp $ */
/*******************************************************************
**
** *********************************************************
@@ -44,7 +43,6 @@ 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>
diff --git a/Xprint/pcl/PclPolygon.c b/hw/xprint/pcl/PclPolygon.c
index 41ba4b1c0..9867758bb 100644
--- a/Xprint/pcl/PclPolygon.c
+++ b/hw/xprint/pcl/PclPolygon.c
@@ -1,4 +1,3 @@
-/* $Xorg: PclPolygon.c,v 1.3 2000/08/17 19:48:08 cpqbld Exp $ */
/*******************************************************************
**
** *********************************************************
@@ -44,7 +43,6 @@ 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
diff --git a/Xprint/pcl/PclPrint.c b/hw/xprint/pcl/PclPrint.c
index 701710253..176a0025a 100644
--- a/Xprint/pcl/PclPrint.c
+++ b/hw/xprint/pcl/PclPrint.c
@@ -1,4 +1,3 @@
-/* $Xorg: PclPrint.c,v 1.3 2000/08/17 19:48:08 cpqbld Exp $ */
/*******************************************************************
**
** *********************************************************
@@ -43,7 +42,6 @@ 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>
diff --git a/Xprint/pcl/PclSFonts.c b/hw/xprint/pcl/PclSFonts.c
index 287c5c14f..2474d90d7 100644
--- a/Xprint/pcl/PclSFonts.c
+++ b/hw/xprint/pcl/PclSFonts.c
@@ -1,4 +1,3 @@
-/* $Xorg: PclSFonts.c,v 1.3 2000/08/17 19:48:08 cpqbld Exp $ */
/*******************************************************************
**
** *********************************************************
@@ -45,7 +44,6 @@ 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
diff --git a/Xprint/pcl/PclSFonts.h b/hw/xprint/pcl/PclSFonts.h
index fdd62f651..c991263df 100644
--- a/Xprint/pcl/PclSFonts.h
+++ b/hw/xprint/pcl/PclSFonts.h
@@ -1,4 +1,3 @@
-/* $Xorg: PclSFonts.h,v 1.3 2000/08/17 19:48:08 cpqbld Exp $ */
#ifdef HAVE_DIX_CONFIG_H
#include <dix-config.h>
#endif
diff --git a/Xprint/pcl/PclSpans.c b/hw/xprint/pcl/PclSpans.c
index 51c0137fc..4951899ab 100644
--- a/Xprint/pcl/PclSpans.c
+++ b/hw/xprint/pcl/PclSpans.c
@@ -1,4 +1,3 @@
-/* $Xorg: PclSpans.c,v 1.3 2000/08/17 19:48:08 cpqbld Exp $ */
/*******************************************************************
**
** *********************************************************
@@ -44,7 +43,6 @@ 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
diff --git a/Xprint/pcl/PclText.c b/hw/xprint/pcl/PclText.c
index be794772c..246c0195b 100644
--- a/Xprint/pcl/PclText.c
+++ b/hw/xprint/pcl/PclText.c
@@ -1,4 +1,3 @@
-/* $Xorg: PclText.c,v 1.5 2001/03/06 16:28:48 pookie Exp $ */
/*******************************************************************
**
** *********************************************************
@@ -44,7 +43,6 @@ 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>
diff --git a/Xprint/pcl/PclWindow.c b/hw/xprint/pcl/PclWindow.c
index cac5826e9..adf03da8d 100644
--- a/Xprint/pcl/PclWindow.c
+++ b/hw/xprint/pcl/PclWindow.c
@@ -1,4 +1,3 @@
-/* $Xorg: PclWindow.c,v 1.3 2000/08/17 19:48:08 cpqbld Exp $ */
/*******************************************************************
**
** *********************************************************
@@ -44,7 +43,6 @@ 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
diff --git a/Xprint/pcl/Pclmap.h b/hw/xprint/pcl/Pclmap.h
index 5224fd9e3..ae88b5a42 100644
--- a/Xprint/pcl/Pclmap.h
+++ b/hw/xprint/pcl/Pclmap.h
@@ -1,4 +1,3 @@
-/* $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.
@@ -30,7 +29,6 @@ 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>
diff --git a/Xprint/ps/Makefile.am b/hw/xprint/ps/Makefile.am
index a05734d5f..08638b19d 100644
--- a/Xprint/ps/Makefile.am
+++ b/hw/xprint/ps/Makefile.am
@@ -1,9 +1,9 @@
noinst_LTLIBRARIES = libps.la
-INCLUDES = -I$(top_srcdir)/Xprint
+INCLUDES = -I$(top_srcdir)/hw/xprint
-AM_CFLAGS = @SERVER_DEFINES@ @DIX_CFLAGS@ @XPRINT_CFLAGS@ @FREETYPE_CFLAGS@ \
- -D_XP_PRINT_SERVER_ -DPSZ=8 -DXP_PSTEXT
+AM_CFLAGS = @DIX_CFLAGS@ @XPRINT_CFLAGS@ @FREETYPE_CFLAGS@ \
+ -D_XP_PRINT_SERVER_ -DXP_PSTEXT
libps_la_SOURCES = \
PsArc.c \
diff --git a/Xprint/ps/Ps.h b/hw/xprint/ps/Ps.h
index 781161d8a..3adad39e4 100644
--- a/Xprint/ps/Ps.h
+++ b/hw/xprint/ps/Ps.h
@@ -1,4 +1,3 @@
-/* $Xorg: Ps.h,v 1.5 2001/02/09 02:04:35 xorgcvs Exp $ */
/*
Copyright 1996, 1998 The Open Group
@@ -357,6 +356,14 @@ extern Bool InitializePsDriver(int ndx, ScreenPtr pScreen, int argc,
extern XpContextPtr PsGetContextFromWindow(WindowPtr win);
/*
+ * Functions in PsCache.c
+ */
+
+extern int PsBmIsImageCached(int gWidth, int gHeight, char *pBuffer);
+extern int PsBmPutImageInCache(int gWidth, int gHeight, char *pBuffer);
+extern void PsBmClearImageCache(void);
+
+/*
* Functions in PsPrint.c
*/
@@ -427,6 +434,9 @@ extern void PsSetSpans(DrawablePtr pDrawable, GCPtr pGC, char *pSrc,
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 PsPutScaledImageIM(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);
@@ -569,6 +579,7 @@ extern PixmapPtr PsCreatePixmap(ScreenPtr pScreen, int width, int height,
extern void PsScrubPixmap(PixmapPtr pPixmap);
extern Bool PsDestroyPixmap(PixmapPtr pPixmap);
extern DisplayListPtr PsGetFreeDisplayBlock(PsPixmapPrivPtr priv);
+extern void PsReplay(DisplayElmPtr elm, DrawablePtr pDrawable);
extern void PsReplayPixmap(PixmapPtr pix, DrawablePtr pDrawable);
extern int PsCloneDisplayElm(PixmapPtr dst,
DisplayElmPtr elm, DisplayElmPtr newElm,
diff --git a/Xprint/ps/PsArc.c b/hw/xprint/ps/PsArc.c
index 511971e7a..0684307dd 100644
--- a/Xprint/ps/PsArc.c
+++ b/hw/xprint/ps/PsArc.c
@@ -1,4 +1,3 @@
-/* $Xorg: PsArc.c,v 1.4 2001/02/09 02:04:35 xorgcvs Exp $ */
/*
Copyright 1996, 1998 The Open Group
diff --git a/Xprint/ps/PsArea.c b/hw/xprint/ps/PsArea.c
index 32a4d5cf4..6ab9fa25c 100644
--- a/Xprint/ps/PsArea.c
+++ b/hw/xprint/ps/PsArea.c
@@ -1,4 +1,3 @@
-/* $Xorg: PsArea.c,v 1.6 2001/03/14 18:27:44 pookie Exp $ */
/*
Copyright 1996, 1998 The Open Group
@@ -118,7 +117,6 @@ PsPutScaledImage(DrawablePtr pDrawable, GCPtr pGC, int depth, int x, int y,
{
int i, j;
int r, c;
- char *pt;
PsOutPtr psOut;
ColormapPtr cMap;
int pageRes, sw, sh;
@@ -230,7 +228,6 @@ PsPutScaledImageIM(DrawablePtr pDrawable, GCPtr pGC, int depth, int x, int y,
{
int i, j;
int r, c;
- char *pt;
PsOutPtr psOut;
ColormapPtr cMap;
int pageRes, sw, sh;
diff --git a/Xprint/ps/PsAttVal.c b/hw/xprint/ps/PsAttVal.c
index fc23ffef5..de2e6c8e4 100644
--- a/Xprint/ps/PsAttVal.c
+++ b/hw/xprint/ps/PsAttVal.c
@@ -1,5 +1,4 @@
/*
- * $Xorg: PsAttVal.c,v 1.5 2001/03/13 18:45:31 pookie Exp $
*/
/*
(c) Copyright 1996 Hewlett-Packard Company
diff --git a/Xprint/ps/PsAttr.c b/hw/xprint/ps/PsAttr.c
index 74da5a0e1..0925716f5 100644
--- a/Xprint/ps/PsAttr.c
+++ b/hw/xprint/ps/PsAttr.c
@@ -1,4 +1,3 @@
-/* $Xorg: PsAttr.c,v 1.4 2001/02/09 02:04:35 xorgcvs Exp $ */
/*
Copyright 1996, 1998 The Open Group
diff --git a/Xprint/ps/PsCache.c b/hw/xprint/ps/PsCache.c
index e69aa2eb7..5c823a13e 100644
--- a/Xprint/ps/PsCache.c
+++ b/hw/xprint/ps/PsCache.c
@@ -317,7 +317,7 @@ PsBmClearImageCacheList(
}
void
-PsBmClearImageCache()
+PsBmClearImageCache(void)
{
PsBmClearImageCacheList(bm_cache);
diff --git a/Xprint/ps/PsColor.c b/hw/xprint/ps/PsColor.c
index 91a44f85a..a91272db0 100644
--- a/Xprint/ps/PsColor.c
+++ b/hw/xprint/ps/PsColor.c
@@ -1,4 +1,3 @@
-/* $Xorg: PsColor.c,v 1.4 2001/02/09 02:04:36 xorgcvs Exp $ */
/*
Copyright 1996, 1998 The Open Group
diff --git a/Xprint/ps/PsDef.h b/hw/xprint/ps/PsDef.h
index cf45c8516..5af274dec 100644
--- a/Xprint/ps/PsDef.h
+++ b/hw/xprint/ps/PsDef.h
@@ -1,4 +1,3 @@
-/* $Xorg: PsDef.h,v 1.4 2001/02/09 02:04:36 xorgcvs Exp $ */
/*
Copyright 1996, 1998 The Open Group
diff --git a/Xprint/ps/PsFTFonts.c b/hw/xprint/ps/PsFTFonts.c
index 8857ae43e..8857ae43e 100644
--- a/Xprint/ps/PsFTFonts.c
+++ b/hw/xprint/ps/PsFTFonts.c
diff --git a/Xprint/ps/PsFonts.c b/hw/xprint/ps/PsFonts.c
index 515a31884..8ab631441 100644
--- a/Xprint/ps/PsFonts.c
+++ b/hw/xprint/ps/PsFonts.c
@@ -1,4 +1,3 @@
-/* $Xorg: PsFonts.c,v 1.6 2001/03/06 16:30:15 pookie Exp $ */
/*
Copyright 1996, 1998 The Open Group
@@ -286,9 +285,8 @@ char *getFontFilename(FontPtr pFont)
const char *dlfnam;
FILE *file;
struct stat statb;
- int count, i, status;
char buf[512];
- char *front, *end, *fn;
+ char *front, *fn;
char font_dir_fname[PATH_MAX], /* Full path of fonts.dir */
font_file_fname[PATH_MAX]; /* Name of font file (excluding path) */
@@ -592,7 +590,6 @@ PsFontTypeInfoRec *PsCreateFontTypeInfoRec(DrawablePtr pDrawable, FontPtr pFont)
{
char *dlfnam;
PsFontTypeInfoRec *rec;
- char *psname;
if (!(dlfnam = PsGetFontName(pFont)))
return NULL;
diff --git a/Xprint/ps/PsGC.c b/hw/xprint/ps/PsGC.c
index 61a2a2813..3ec07a77a 100644
--- a/Xprint/ps/PsGC.c
+++ b/hw/xprint/ps/PsGC.c
@@ -1,4 +1,3 @@
-/* $Xorg: PsGC.c,v 1.4 2001/02/09 02:04:36 xorgcvs Exp $ */
/*
Copyright 1996, 1998 The Open Group
@@ -181,7 +180,6 @@ PsContextPrivPtr
PsGetPsContextPriv( DrawablePtr pDrawable )
{
XpContextPtr pCon;
- PsContextPrivPtr cPriv;
switch(pDrawable->type)
{
diff --git a/Xprint/ps/PsImageUtil.c b/hw/xprint/ps/PsImageUtil.c
index 282786564..668a23f65 100644
--- a/Xprint/ps/PsImageUtil.c
+++ b/hw/xprint/ps/PsImageUtil.c
@@ -1,5 +1,4 @@
-/* $Xorg: PsImageUtil.c,v 1.1 2005/03/25 1:19:56 gisburn Exp $ */
/*
Copyright (c) 2005 Roland Mainz <roland.mainz@nrubsig.org>
@@ -33,6 +32,7 @@ copyright holders.
#include <dix-config.h>
#endif
+#include "Ps.h"
#include "gcstruct.h"
#include "windowstr.h"
#include "servermd.h"
diff --git a/Xprint/ps/PsInit.c b/hw/xprint/ps/PsInit.c
index e663fa3a3..639908f73 100644
--- a/Xprint/ps/PsInit.c
+++ b/hw/xprint/ps/PsInit.c
@@ -1,4 +1,3 @@
-/* $Xorg: PsInit.c,v 1.4 2001/02/09 02:04:36 xorgcvs Exp $ */
/*
Copyright 1996, 1998 The Open Group
@@ -119,8 +118,6 @@ InitializePsDriver(ndx, pScreen, argc, argv)
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 */
diff --git a/Xprint/ps/PsLine.c b/hw/xprint/ps/PsLine.c
index 2524769c8..aca186642 100644
--- a/Xprint/ps/PsLine.c
+++ b/hw/xprint/ps/PsLine.c
@@ -1,4 +1,3 @@
-/* $Xorg: PsLine.c,v 1.4 2001/02/09 02:04:36 xorgcvs Exp $ */
/*
Copyright 1996, 1998 The Open Group
diff --git a/Xprint/ps/PsMisc.c b/hw/xprint/ps/PsMisc.c
index b8a3ba854..0df039e0b 100644
--- a/Xprint/ps/PsMisc.c
+++ b/hw/xprint/ps/PsMisc.c
@@ -1,4 +1,3 @@
-/* $Xorg: PsMisc.c,v 1.4 2001/02/09 02:04:36 xorgcvs Exp $ */
/*
Copyright 1996, 1998 The Open Group
diff --git a/Xprint/ps/PsPixel.c b/hw/xprint/ps/PsPixel.c
index 2197f0ab9..d51cb6ecf 100644
--- a/Xprint/ps/PsPixel.c
+++ b/hw/xprint/ps/PsPixel.c
@@ -1,4 +1,3 @@
-/* $Xorg: PsPixel.c,v 1.4 2001/02/09 02:04:36 xorgcvs Exp $ */
/*
Copyright 1996, 1998 The Open Group
diff --git a/Xprint/ps/PsPixmap.c b/hw/xprint/ps/PsPixmap.c
index a698b375e..c3259c98c 100644
--- a/Xprint/ps/PsPixmap.c
+++ b/hw/xprint/ps/PsPixmap.c
@@ -1,4 +1,3 @@
-/* $Xorg: PsPixmap.c,v 1.4 2001/02/09 02:04:36 xorgcvs Exp $ */
/*
Copyright 1996, 1998 The Open Group
@@ -191,7 +190,6 @@ Bool
PsDestroyPixmap(PixmapPtr pPixmap)
{
PsPixmapPrivPtr priv = (PsPixmapPrivPtr)pPixmap->devPrivate.ptr;
- DisplayListPtr disp = priv->dispList;
if( --pPixmap->refcnt ) return TRUE;
@@ -512,6 +510,8 @@ PsCreateFillElementList(PixmapPtr pix, int *nElms)
case PolyFillArcCmd:
*nElms += elm->c.arcs.nArcs;
break;
+ default: /* keep the compiler happy with unhandled enums */
+ break;
}
}
}
@@ -574,6 +574,8 @@ PsCreateFillElementList(PixmapPtr pix, int *nElms)
*nElms += 1;
}
break;
+ default: /* keep the compiler happy with unhandled enums */
+ break;
}
}
}
diff --git a/Xprint/ps/PsPolygon.c b/hw/xprint/ps/PsPolygon.c
index a1ae67f8d..fe4626085 100644
--- a/Xprint/ps/PsPolygon.c
+++ b/hw/xprint/ps/PsPolygon.c
@@ -1,4 +1,3 @@
-/* $Xorg: PsPolygon.c,v 1.4 2001/02/09 02:04:36 xorgcvs Exp $ */
/*
Copyright 1996, 1998 The Open Group
@@ -215,8 +214,6 @@ PsPolyFillRect(
*/
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) &&
@@ -227,7 +224,7 @@ PsPolyFillRect(
#endif /* DEBUG_gismobile */
/* Remove all content from the pixmap as it would be covered
* by the whole rect anyway */
- PsScrubPixmap(pDrawable);
+ PsScrubPixmap((PixmapPtr)pDrawable);
}
}
#endif /* DBE */
diff --git a/Xprint/ps/PsPrint.c b/hw/xprint/ps/PsPrint.c
index 05e8e2588..4571c07d7 100644
--- a/Xprint/ps/PsPrint.c
+++ b/hw/xprint/ps/PsPrint.c
@@ -1,4 +1,3 @@
-/* $Xorg: PsPrint.c,v 1.7 2001/03/14 18:28:18 pookie Exp $ */
/*
Copyright 1996, 1998 The Open Group
@@ -292,13 +291,10 @@ PsStartPage(
{
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
diff --git a/Xprint/ps/PsSpans.c b/hw/xprint/ps/PsSpans.c
index d7652f8fb..c0e66ee7a 100644
--- a/Xprint/ps/PsSpans.c
+++ b/hw/xprint/ps/PsSpans.c
@@ -1,4 +1,3 @@
-/* $Xorg: PsSpans.c,v 1.4 2001/02/09 02:04:36 xorgcvs Exp $ */
/*
Copyright 1996, 1998 The Open Group
@@ -73,7 +72,6 @@ in this Software without prior written authorization from The Open Group.
** *********************************************************
**
********************************************************************/
-/* $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>
diff --git a/Xprint/ps/PsText.c b/hw/xprint/ps/PsText.c
index 228e407dc..98cf15345 100644
--- a/Xprint/ps/PsText.c
+++ b/hw/xprint/ps/PsText.c
@@ -1,4 +1,3 @@
-/* $Xorg: PsText.c,v 1.7 2001/02/09 02:04:36 xorgcvs Exp $ */
/*
Copyright 1996, 1998 The Open Group
@@ -329,11 +328,7 @@ PsPolyText16(
{
PsOutPtr psOut;
ColormapPtr cMap;
- unsigned short c,
- c_hiByte,
- c_lowByte,
- fontPage;
- int i;
+ unsigned short fontPage;
if( PsUpdateDrawableGC(pGC, pDrawable, &psOut, &cMap)==FALSE )
return x;
diff --git a/Xprint/ps/PsWindow.c b/hw/xprint/ps/PsWindow.c
index 313e51f31..1317fd704 100644
--- a/Xprint/ps/PsWindow.c
+++ b/hw/xprint/ps/PsWindow.c
@@ -1,4 +1,3 @@
-/* $Xorg: PsWindow.c,v 1.4 2001/02/09 02:04:36 xorgcvs Exp $ */
/*
Copyright 1996, 1998 The Open Group
@@ -89,13 +88,12 @@ in this Software without prior written authorization from The Open Group.
#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.
*/
+#if 0
static char *propStrings[] = {
DT_PRINT_JOB_HEADER,
DT_PRINT_JOB_TRAILER,
@@ -107,7 +105,7 @@ static char *propStrings[] = {
DT_PRINT_PAGE_COMMAND,
(char *)NULL
};
-
+#endif
/*
* PsCreateWindow - watch for the creation of the root window.
@@ -222,7 +220,6 @@ PsPaintWindow(
RegionPtr pRegion,
int what)
{
- int status;
WindowPtr pRoot;
#define FUNCTION 0
diff --git a/Xprint/ps/psout.c b/hw/xprint/ps/psout.c
index 376feec03..c24f88b3d 100644
--- a/Xprint/ps/psout.c
+++ b/hw/xprint/ps/psout.c
@@ -1,4 +1,3 @@
-/* $Xorg: psout.c,v 1.9 2001/03/26 15:25:12 coskrey Exp $ */
/*
Copyright 1996, 1998 The Open Group
@@ -82,6 +81,7 @@ in this Software without prior written authorization from The Open Group.
#include <stdio.h>
#include "os.h"
#define USE_PSOUT_PRIVATE 1
+#include "Ps.h"
#include "psout.h"
#ifdef XP_USE_FREETYPE
#include <ft2build.h>
@@ -90,9 +90,6 @@ in this Software without prior written authorization from The Open Group.
/* 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
*/
@@ -683,7 +680,6 @@ void
PsOut_EndFile(PsOutPtr self, int closeFile)
{
char coms[50];
- int i;
if (!self)
return;
@@ -1592,7 +1588,8 @@ PsOut_BeginPattern(PsOutPtr self, void *tag, int w, int h, PsFillEnum type,
switch(type) {
case PsTile: key[1] = 't'; break;
case PsStip: key[1] = 's'; break;
- case PsOpStip: key[1] = 'o'; break; }
+ case PsOpStip: key[1] = 'o'; break;
+ default: 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);
@@ -1637,7 +1634,8 @@ PsOut_SetPattern(PsOutPtr self, void *tag, PsFillEnum type)
switch(type) {
case PsTile: key[0] = 't'; break;
case PsStip: key[0] = 's'; break;
- case PsOpStip: key[0] = 'o'; break; }
+ case PsOpStip: key[0] = 'o'; break;
+ default: break; }
S_OutTok(self, key, 0);
S_OutTok(self, "spt", 1);
self->CurColor = PSOUTCOLOR_NOCOLOR;
@@ -1663,7 +1661,6 @@ typedef enum PsDownfontFontType_
int
PsOut_DownloadType1(PsOutPtr self, const char *auditmsg, const char *name, const char *fname)
{
- int i;
int stt;
char buf[256];
FILE *fp;
diff --git a/Xprint/ps/psout.h b/hw/xprint/ps/psout.h
index 8441d8d07..3e19d5a67 100644
--- a/Xprint/ps/psout.h
+++ b/hw/xprint/ps/psout.h
@@ -1,4 +1,3 @@
-/* $Xorg: psout.h,v 1.6 2001/02/09 02:04:37 xorgcvs Exp $ */
/*
Copyright 1996, 1998 The Open Group
@@ -267,6 +266,7 @@ extern void S_OutTok(PsOutPtr self, char *tok, int cr);
typedef struct PsOutRec_ *PsOutPtr;
#endif /* USE_PSOUT_PRIVATE */
+extern FILE * PsOut_ChangeFile(PsOutPtr self, FILE *fp);
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);
diff --git a/Xprint/ps/psout_ft.c b/hw/xprint/ps/psout_ft.c
index b10d9e592..b10d9e592 100644
--- a/Xprint/ps/psout_ft.c
+++ b/hw/xprint/ps/psout_ft.c
diff --git a/Xprint/ps/psout_ftpstype1.c b/hw/xprint/ps/psout_ftpstype1.c
index 2d40c186a..2d40c186a 100644
--- a/Xprint/ps/psout_ftpstype1.c
+++ b/hw/xprint/ps/psout_ftpstype1.c
diff --git a/Xprint/ps/psout_ftpstype3.c b/hw/xprint/ps/psout_ftpstype3.c
index 733b5386b..733b5386b 100644
--- a/Xprint/ps/psout_ftpstype3.c
+++ b/hw/xprint/ps/psout_ftpstype3.c
diff --git a/Xprint/ps/ttf2pt1wrap.c b/hw/xprint/ps/ttf2pt1wrap.c
index 57bb777d2..57bb777d2 100644
--- a/Xprint/ps/ttf2pt1wrap.c
+++ b/hw/xprint/ps/ttf2pt1wrap.c
diff --git a/hw/xprint/raster/Makefile.am b/hw/xprint/raster/Makefile.am
new file mode 100644
index 000000000..1ee1122f2
--- /dev/null
+++ b/hw/xprint/raster/Makefile.am
@@ -0,0 +1,10 @@
+noinst_LTLIBRARIES = libraster.la
+
+INCLUDES = -I$(top_srcdir)/hw/xprint
+
+AM_CFLAGS = @DIX_CFLAGS@ @XPRINT_CFLAGS@ -D_XP_PRINT_SERVER_
+
+libraster_la_SOURCES = \
+ RasterAttVal.c \
+ Raster.c \
+ Raster.h
diff --git a/Xprint/raster/Raster.c b/hw/xprint/raster/Raster.c
index 7ad30b446..0286a18fa 100644
--- a/Xprint/raster/Raster.c
+++ b/hw/xprint/raster/Raster.c
@@ -1,4 +1,3 @@
-/* $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.
@@ -31,7 +30,6 @@ dealings in this Software without prior written authorization from said
copyright holders.
*/
-/* $XFree86: xc/programs/Xserver/Xprint/raster/Raster.c,v 1.11tsi Exp $ */
/*******************************************************************
**
diff --git a/Xprint/raster/Raster.h b/hw/xprint/raster/Raster.h
index 25da756e5..7a613f0b0 100644
--- a/Xprint/raster/Raster.h
+++ b/hw/xprint/raster/Raster.h
@@ -1,4 +1,3 @@
-/* $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.
diff --git a/Xprint/raster/RasterAttVal.c b/hw/xprint/raster/RasterAttVal.c
index fc00cde5a..8189be47c 100644
--- a/Xprint/raster/RasterAttVal.c
+++ b/hw/xprint/raster/RasterAttVal.c
@@ -1,4 +1,3 @@
-/* $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.
@@ -30,7 +29,6 @@ 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>
diff --git a/Xprint/spooler.c b/hw/xprint/spooler.c
index f709c57ab..e3022b0c4 100644
--- a/Xprint/spooler.c
+++ b/hw/xprint/spooler.c
@@ -1,5 +1,4 @@
-/* $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.
diff --git a/Xprint/spooler.h b/hw/xprint/spooler.h
index 4e9b4aefc..4e056ceeb 100644
--- a/Xprint/spooler.h
+++ b/hw/xprint/spooler.h
@@ -6,7 +6,6 @@
#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>
diff --git a/hw/xwin/InitInput.c b/hw/xwin/InitInput.c
index 3be84efc6..52f837ede 100644
--- a/hw/xwin/InitInput.c
+++ b/hw/xwin/InitInput.c
@@ -26,7 +26,6 @@
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>
@@ -80,7 +79,7 @@ extern winDispatchProcPtr winProcQueryTreeOrig;
*/
Bool
-LegalModifier (unsigned int uiKey, DevicePtr pDevice)
+LegalModifier (unsigned int uiKey, DeviceIntPtr pDevice)
{
return TRUE;
}
diff --git a/hw/xwin/InitOutput.c b/hw/xwin/InitOutput.c
index c5242cc6f..39a5eda7f 100644
--- a/hw/xwin/InitOutput.c
+++ b/hw/xwin/InitOutput.c
@@ -26,7 +26,6 @@ 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>
@@ -695,6 +694,7 @@ winFixupPaths (void)
if (sizeof(xkbbasedir) > 0)
xkbbasedir[sizeof(xkbbasedir)-1] = 0;
XkbBaseDirectory = xkbbasedir;
+ XkbBinDirectory = basedir;
}
#endif /* XKB */
#endif /* RELOCATE_PROJECTROOT */
@@ -944,15 +944,6 @@ 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.
diff --git a/hw/xwin/Makefile.am b/hw/xwin/Makefile.am
index dbbcb0545..57e20102e 100644
--- a/hw/xwin/Makefile.am
+++ b/hw/xwin/Makefile.am
@@ -161,7 +161,7 @@ CLEANFILES = $(BUILT_SOURCES)
AM_YFLAGS = -d
AM_LFLAGS = -i
-AM_CFLAGS = -DHAVE_XWIN_CONFIG_H \
+AM_CFLAGS = -DHAVE_XWIN_CONFIG_H $(DIX_CFLAGS) \
$(XWINMODULES_CFLAGS)
dist_man1_MANS = XWin.man XWinrc.man
diff --git a/hw/xwin/win.h b/hw/xwin/win.h
index 9baee9b05..09a9fb295 100644
--- a/hw/xwin/win.h
+++ b/hw/xwin/win.h
@@ -31,7 +31,6 @@
* 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_
diff --git a/hw/xwin/winallpriv.c b/hw/xwin/winallpriv.c
index 7b4814b9b..f4decfb59 100644
--- a/hw/xwin/winallpriv.c
+++ b/hw/xwin/winallpriv.c
@@ -28,7 +28,6 @@
* 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>
diff --git a/hw/xwin/winauth.c b/hw/xwin/winauth.c
index 3d24ef426..b57a35abf 100644
--- a/hw/xwin/winauth.c
+++ b/hw/xwin/winauth.c
@@ -35,9 +35,8 @@
#include "win.h"
/* Includes for authorization */
-#include "X11/Xauth.h"
-#define _SECURITY_SERVER
-#include <X11/extensions/security.h>
+#include <X11/Xauth.h>
+#include "securitysrv.h"
#include <X11/extensions/securstr.h>
diff --git a/hw/xwin/winclipboardwndproc.c b/hw/xwin/winclipboardwndproc.c
index a006b46d3..802a74035 100644
--- a/hw/xwin/winclipboardwndproc.c
+++ b/hw/xwin/winclipboardwndproc.c
@@ -35,6 +35,8 @@
#include <sys/time.h>
#include "winclipboard.h"
+extern void winFixClipboardChain();
+
/*
* Constants
@@ -54,6 +56,8 @@ extern void *g_pClipboardDisplay;
extern Window g_iClipboardWindow;
extern Atom g_atomLastOwnedSelection;
+/* BPS - g_hwndClipboard needed for X app->Windows paste fix */
+extern HWND g_hwndClipboard;
/*
* Local function prototypes
@@ -139,6 +143,12 @@ winProcessXEventsTimeout (HWND hwnd, int iWindow, Display *pDisplay,
* Process a given Windows message
*/
+/* BPS - Define our own message, which we'll post to ourselves to facilitate
+ * resetting the delayed rendering mechanism after each paste from X app to
+ * Windows app. TODO - Perhaps move to win.h with the other WM_USER messages.
+ */
+#define WM_USER_PASTE_COMPLETE (WM_USER + 1003)
+
LRESULT CALLBACK
winClipboardWindowProc (HWND hwnd, UINT message,
WPARAM wParam, LPARAM lParam)
@@ -165,44 +175,29 @@ winClipboardWindowProc (HWND hwnd, UINT message,
case WM_CREATE:
{
+ HWND first, next;
+ DWORD error_code = 0;
winDebug ("winClipboardWindowProc - WM_CREATE\n");
+ first = GetClipboardViewer(); /* Get handle to first viewer in chain. */
+ if (first == hwnd) return 0; /* Make sure it's not us! */
/* 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.");
- }
+ next = SetClipboardViewer (hwnd);
+ error_code = GetLastError();
+ if (SUCCEEDED(error_code) && (next == first)) /* SetClipboardViewer must have succeeded, and the handle */
+ s_hwndNextViewer = next; /* it returned must have been the first window in the chain */
+ else
+ s_fCBCInitialized = FALSE;
}
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;
@@ -217,7 +212,6 @@ winClipboardWindowProc (HWND hwnd, UINT message,
SendMessage (s_hwndNextViewer, message,
wParam, lParam);
- s_fProcessingChangeCBChain = FALSE;
}
winDebug ("winClipboardWindowProc - WM_CHANGECBCHAIN: Exit\n");
return 0;
@@ -237,28 +231,27 @@ winClipboardWindowProc (HWND hwnd, UINT message,
* expensive than just putting ourselves back into the chain.
*/
+ HWND first, next;
+ DWORD error_code = 0;
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");
- }
- }
+
+ first = GetClipboardViewer(); /* Get handle to first viewer in chain. */
+ if (first == hwnd) return 0; /* Make sure it's not us! */
+ 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");
+ first = GetClipboardViewer(); /* Get handle to first viewer in chain. */
+ if (first == hwnd) return 0; /* Make sure it's not us! */
+ next = SetClipboardViewer (hwnd);
+ error_code = GetLastError();
+ if (SUCCEEDED(error_code) && (next == first)) /* SetClipboardViewer must have succeeded, and the handle */
+ s_hwndNextViewer = next; /* it returned must have been the first window in the chain */
else
- {
- winDebug (" WM_WM_REINIT: already at head of viewer chain.\n");
- }
+ s_fCBCInitialized = FALSE;
}
winDebug ("winClipboardWindowProc - WM_WM_REINIT: Exit\n");
return 0;
@@ -274,8 +267,8 @@ winClipboardWindowProc (HWND hwnd, UINT message,
winDebug ("winClipboardWindowProc - WM_DRAWCLIPBOARD: Enter\n");
/*
- * We've occasionally seen a loop in the clipboard chain. Break
- * it on the first hint of recursion.
+ * We've occasionally seen a loop in the clipboard chain.
+ * Try and fix it on the first hint of recursion.
*/
if (! s_fProcessingDrawClipboard)
{
@@ -283,16 +276,17 @@ winClipboardWindowProc (HWND hwnd, UINT message,
}
else
{
+ /* Attempt to break the nesting by getting out of the chain, twice?, and then fix and bail */
+ s_fCBCInitialized = FALSE;
+ ChangeClipboardChain (hwnd, s_hwndNextViewer);
+ winFixClipboardChain();
winErrorFVerb (1, "winClipboardWindowProc - WM_DRAWCLIPBOARD - "
- "Nested calls detected. Bailing.\n");
+ "Nested calls detected. Re-initing.\n");
winDebug ("winClipboardWindowProc - WM_DRAWCLIPBOARD: Exit\n");
+ s_fProcessingDrawClipboard = FALSE;
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)
{
@@ -318,6 +312,8 @@ winClipboardWindowProc (HWND hwnd, UINT message,
"We own the clipboard, returning.\n");
winDebug ("winClipboardWindowProc - WM_DRAWCLIPBOARD: Exit\n");
s_fProcessingDrawClipboard = FALSE;
+ if (s_hwndNextViewer)
+ SendMessage (s_hwndNextViewer, message, wParam, lParam);
return 0;
}
@@ -339,8 +335,6 @@ winClipboardWindowProc (HWND hwnd, UINT message,
* previous XSetSelectionOwner messages.
*/
XSync (pDisplay, FALSE);
-
- winDebug("winClipboardWindowProc - XSync done.\n");
/* Release PRIMARY selection if owned */
iReturn = XGetSelectionOwner (pDisplay, XA_PRIMARY);
@@ -379,6 +373,8 @@ winClipboardWindowProc (HWND hwnd, UINT message,
winDebug ("winClipboardWindowProc - WM_DRAWCLIPBOARD: Exit\n");
s_fProcessingDrawClipboard = FALSE;
+ if (s_hwndNextViewer)
+ SendMessage (s_hwndNextViewer, message, wParam, lParam);
return 0;
}
@@ -422,6 +418,9 @@ winClipboardWindowProc (HWND hwnd, UINT message,
s_fProcessingDrawClipboard = FALSE;
}
winDebug ("winClipboardWindowProc - WM_DRAWCLIPBOARD: Exit\n");
+ /* Pass the message on the next window in the clipboard viewer chain */
+ if (s_hwndNextViewer)
+ SendMessage (s_hwndNextViewer, message, wParam, lParam);
return 0;
@@ -534,6 +533,13 @@ winClipboardWindowProc (HWND hwnd, UINT message,
SetClipboardData (CF_TEXT, NULL);
}
+ /* BPS - Post ourselves a user message whose handler will reset the
+ * delayed rendering mechanism after the paste is complete. This is
+ * necessary because calling SetClipboardData() with a NULL argument
+ * here will cause the data we just put on the clipboard to be lost!
+ */
+ PostMessage(g_hwndClipboard, WM_USER_PASTE_COMPLETE, 0, 0);
+
/* Special handling for WM_RENDERALLFORMATS */
if (message == WM_RENDERALLFORMATS)
{
@@ -551,6 +557,37 @@ winClipboardWindowProc (HWND hwnd, UINT message,
winDebug ("winClipboardWindowProc - WM_RENDER*FORMAT - Returning.\n");
return 0;
}
+ /* BPS - This WM_USER message is posted by us. It gives us the opportunity
+ * to reset the delayed rendering mechanism after each and every paste
+ * from an X app to a Windows app. Without such a mechanism, subsequent
+ * changes of selection in the X app owning the selection are not
+ * reflected in pastes into Windows apps, since Windows won't send us the
+ * WM_RENDERFORMAT message unless someone has set changed data (or NULL)
+ * on the clipboard. */
+ case WM_USER_PASTE_COMPLETE:
+ {
+ if (hwnd != GetClipboardOwner ())
+ /* In case we've lost the selection since posting the message */
+ return 0;
+ winDebug ("winClipboardWindowProc - WM_USER_PASTE_COMPLETE\n");
+
+ /* Set up for another delayed rendering callback */
+ OpenClipboard (g_hwndClipboard);
+
+ /* Take ownership of the Windows clipboard */
+ EmptyClipboard ();
+
+ /* Advertise Unicode if we support it */
+ if (g_fUnicodeSupport)
+ SetClipboardData (CF_UNICODETEXT, NULL);
+
+ /* Always advertise regular text */
+ SetClipboardData (CF_TEXT, NULL);
+
+ /* Release the clipboard */
+ CloseClipboard ();
+ }
+ return 0;
}
/* Let Windows perform default processing for unhandled messages */
diff --git a/hw/xwin/winclipboardwrappers.c b/hw/xwin/winclipboardwrappers.c
index 8801f6c42..825d3dc70 100755
--- a/hw/xwin/winclipboardwrappers.c
+++ b/hw/xwin/winclipboardwrappers.c
@@ -344,13 +344,11 @@ winProcSetSelectionOwner (ClientPtr client)
if (None != stuff->window)
{
/* Grab the Window from the request */
- pWindow = (WindowPtr) SecurityLookupWindow (stuff->window, client,
- SecurityReadAccess);
- if (!pWindow)
- {
+ int rc = dixLookupWindow(&pWindow, stuff->window, client, DixReadAccess);
+ if (rc != Success) {
ErrorF ("winProcSetSelectionOwner - Found BadWindow, aborting.\n");
goto winProcSetSelectionOwner_Done;
- }
+ }
}
/* Now we either have a valid window or None */
diff --git a/hw/xwin/wincmap.c b/hw/xwin/wincmap.c
index b3b99b1b5..7ebe00244 100644
--- a/hw/xwin/wincmap.c
+++ b/hw/xwin/wincmap.c
@@ -30,7 +30,6 @@
* 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>
diff --git a/hw/xwin/winconfig.c b/hw/xwin/winconfig.c
index 514dfdc84..e3d18083e 100644
--- a/hw/xwin/winconfig.c
+++ b/hw/xwin/winconfig.c
@@ -27,7 +27,6 @@
*
* 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>
diff --git a/hw/xwin/wincreatewnd.c b/hw/xwin/wincreatewnd.c
index 7c93e4063..796a08593 100644
--- a/hw/xwin/wincreatewnd.c
+++ b/hw/xwin/wincreatewnd.c
@@ -58,6 +58,8 @@ winCreateBoundingWindowFullScreen (ScreenPtr pScreen)
{
winScreenPriv(pScreen);
winScreenInfo *pScreenInfo = pScreenPriv->pScreenInfo;
+ int iX = pScreenInfo->dwInitialX;
+ int iY = pScreenInfo->dwInitialY;
int iWidth = pScreenInfo->dwWidth;
int iHeight = pScreenInfo->dwHeight;
HWND *phwnd = &pScreenPriv->hwndScreen;
@@ -99,8 +101,8 @@ winCreateBoundingWindowFullScreen (ScreenPtr pScreen)
WINDOW_CLASS, /* Class name */
szTitle, /* Window name */
WS_POPUP,
- 0, /* Horizontal position */
- 0, /* Vertical position */
+ iX, /* Horizontal position */
+ iY, /* Vertical position */
iWidth, /* Right edge */
iHeight, /* Bottom edge */
(HWND) NULL, /* No parent or owner window */
diff --git a/hw/xwin/wincursor.c b/hw/xwin/wincursor.c
index 2036267b8..c1e619bf8 100644
--- a/hw/xwin/wincursor.c
+++ b/hw/xwin/wincursor.c
@@ -30,7 +30,6 @@
* 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>
diff --git a/hw/xwin/winfillsp.c b/hw/xwin/winfillsp.c
index 43ccde67c..7e3966965 100644
--- a/hw/xwin/winfillsp.c
+++ b/hw/xwin/winfillsp.c
@@ -28,7 +28,6 @@
* 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>
diff --git a/hw/xwin/wingetsp.c b/hw/xwin/wingetsp.c
index ec9d51a17..03f7f1012 100644
--- a/hw/xwin/wingetsp.c
+++ b/hw/xwin/wingetsp.c
@@ -28,7 +28,6 @@
* 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>
diff --git a/hw/xwin/winkeybd.c b/hw/xwin/winkeybd.c
index 3161e1f82..164e39160 100644
--- a/hw/xwin/winkeybd.c
+++ b/hw/xwin/winkeybd.c
@@ -30,7 +30,6 @@
* 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
diff --git a/hw/xwin/winkeybd.h b/hw/xwin/winkeybd.h
index f42e09fd7..09eed1491 100644
--- a/hw/xwin/winkeybd.h
+++ b/hw/xwin/winkeybd.h
@@ -29,7 +29,6 @@
*
* 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.
diff --git a/hw/xwin/winkeymap.h b/hw/xwin/winkeymap.h
index 31e6cf21b..0c633cdfc 100755..100644
--- a/hw/xwin/winkeymap.h
+++ b/hw/xwin/winkeymap.h
@@ -1,4 +1,3 @@
-/* $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 !!!!
diff --git a/hw/xwin/winkeynames.h b/hw/xwin/winkeynames.h
index f3af1907e..6d480a3f9 100755..100644
--- a/hw/xwin/winkeynames.h
+++ b/hw/xwin/winkeynames.h
@@ -1,6 +1,5 @@
#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.
*
diff --git a/hw/xwin/winmouse.c b/hw/xwin/winmouse.c
index 818652da6..f0092e9a8 100644
--- a/hw/xwin/winmouse.c
+++ b/hw/xwin/winmouse.c
@@ -30,7 +30,6 @@
* 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>
diff --git a/hw/xwin/winmultiwindowicons.c b/hw/xwin/winmultiwindowicons.c
index 5692b29c7..45ed093ec 100755..100644
--- a/hw/xwin/winmultiwindowicons.c
+++ b/hw/xwin/winmultiwindowicons.c
@@ -27,7 +27,6 @@
*
* 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>
diff --git a/hw/xwin/winmultiwindowshape.c b/hw/xwin/winmultiwindowshape.c
index 0b9650e98..33deae337 100755..100644
--- a/hw/xwin/winmultiwindowshape.c
+++ b/hw/xwin/winmultiwindowshape.c
@@ -28,7 +28,6 @@
* 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>
diff --git a/hw/xwin/winmultiwindowwindow.c b/hw/xwin/winmultiwindowwindow.c
index f1ab55252..037c881b4 100644
--- a/hw/xwin/winmultiwindowwindow.c
+++ b/hw/xwin/winmultiwindowwindow.c
@@ -29,7 +29,6 @@
* 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>
@@ -983,11 +982,10 @@ winAdjustXWindow (WindowPtr pWin, HWND hwnd)
/*
* 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));
+ vlist[0] = 0;
+ vlist[1] = 0;
+ return ConfigureWindow (pWin, CWX | CWY, vlist, wClient(pWin));
}
pDraw = &pWin->drawable;
diff --git a/hw/xwin/winmultiwindowwm.c b/hw/xwin/winmultiwindowwm.c
index 03f179345..1918e54d1 100644
--- a/hw/xwin/winmultiwindowwm.c
+++ b/hw/xwin/winmultiwindowwm.c
@@ -27,7 +27,6 @@
*
* 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
diff --git a/hw/xwin/winmultiwindowwndproc.c b/hw/xwin/winmultiwindowwndproc.c
index e12b7f42c..0df896dd3 100755..100644
--- a/hw/xwin/winmultiwindowwndproc.c
+++ b/hw/xwin/winmultiwindowwndproc.c
@@ -29,7 +29,6 @@
* 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>
@@ -305,7 +304,6 @@ winTopLevelWindowProc (HWND hwnd, UINT message,
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;
@@ -395,6 +393,15 @@ winTopLevelWindowProc (HWND hwnd, UINT message,
* currently being created.
*/
winReorderWindowsMultiWindow ();
+
+ /* Fix a 'round title bar corner background should be transparent not black' problem when first painted */
+ RECT rWindow;
+ HRGN hRgnWindow;
+ GetWindowRect(hwnd, &rWindow);
+ hRgnWindow = CreateRectRgnIndirect(&rWindow);
+ SetWindowRgn (hwnd, hRgnWindow, TRUE);
+ DeleteObject(hRgnWindow);
+
return 0;
case WM_INIT_SYS_MENU:
@@ -434,20 +441,19 @@ winTopLevelWindowProc (HWND hwnd, UINT message,
/* 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;
+ /* Avoid the BitBlt's if the PAINTSTRUCT is bogus */
+ if (ps.rcPaint.right==0 && ps.rcPaint.bottom==0 && ps.rcPaint.left==0 && ps.rcPaint.top==0)
+ {
+ EndPaint (hwndScreen, &ps);
+ return 0;
+ }
/* Try to copy from the shadow buffer */
if (!BitBlt (hdcUpdate,
- 0, 0,
- iWidth, iHeight,
+ ps.rcPaint.left, ps.rcPaint.top,
+ ps.rcPaint.right - ps.rcPaint.left, ps.rcPaint.bottom - ps.rcPaint.top,
s_pScreenPriv->hdcShadow,
- iX, iY,
+ ps.rcPaint.left + pWin->drawable.x, ps.rcPaint.top + pWin->drawable.y,
SRCCOPY))
{
LPVOID lpMsgBuf;
diff --git a/hw/xwin/winnativegdi.c b/hw/xwin/winnativegdi.c
index c67f1c7e5..48a467a2c 100644
--- a/hw/xwin/winnativegdi.c
+++ b/hw/xwin/winnativegdi.c
@@ -27,7 +27,6 @@
*
* 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>
diff --git a/hw/xwin/winpfbdd.c b/hw/xwin/winpfbdd.c
index d9d69039d..13fc1058d 100644
--- a/hw/xwin/winpfbdd.c
+++ b/hw/xwin/winpfbdd.c
@@ -30,7 +30,6 @@
* 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>
diff --git a/hw/xwin/winpixmap.c b/hw/xwin/winpixmap.c
index 2780a3921..baff60c92 100644
--- a/hw/xwin/winpixmap.c
+++ b/hw/xwin/winpixmap.c
@@ -28,7 +28,6 @@
* 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>
diff --git a/hw/xwin/winpushpxl.c b/hw/xwin/winpushpxl.c
index 594933986..72ef2d559 100644
--- a/hw/xwin/winpushpxl.c
+++ b/hw/xwin/winpushpxl.c
@@ -1,4 +1,3 @@
-/* $XFree86: xc/programs/Xserver/mi/mipushpxl.c,v 3.11 2001/01/17 22:37:07 dawes Exp $ */
/***********************************************************
Copyright 1987, 1998 The Open Group
diff --git a/hw/xwin/winscrinit.c b/hw/xwin/winscrinit.c
index a18139c28..a9b061af6 100644
--- a/hw/xwin/winscrinit.c
+++ b/hw/xwin/winscrinit.c
@@ -31,7 +31,6 @@
* 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>
diff --git a/hw/xwin/winsetsp.c b/hw/xwin/winsetsp.c
index 65b90ea39..8a3faee93 100644
--- a/hw/xwin/winsetsp.c
+++ b/hw/xwin/winsetsp.c
@@ -28,7 +28,6 @@
* 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>
diff --git a/hw/xwin/winshaddd.c b/hw/xwin/winshaddd.c
index 607a0674a..a2c1dc9b0 100644
--- a/hw/xwin/winshaddd.c
+++ b/hw/xwin/winshaddd.c
@@ -30,7 +30,6 @@
* 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>
diff --git a/hw/xwin/winshadddnl.c b/hw/xwin/winshadddnl.c
index 960cd2d70..47cc382e9 100644
--- a/hw/xwin/winshadddnl.c
+++ b/hw/xwin/winshadddnl.c
@@ -30,7 +30,6 @@
* 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>
diff --git a/hw/xwin/winshadgdi.c b/hw/xwin/winshadgdi.c
index ba9819298..04cc2f716 100644
--- a/hw/xwin/winshadgdi.c
+++ b/hw/xwin/winshadgdi.c
@@ -540,8 +540,9 @@ winShadowUpdateGDI (ScreenPtr pScreen,
* 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)
+ if (!pScreenInfo->fMultiWindow &&
+ (pScreenInfo->dwClipUpdatesNBoxes == 0 ||
+ dwBox < pScreenInfo->dwClipUpdatesNBoxes))
{
/* Loop through all boxes in the damaged region */
while (dwBox--)
@@ -566,7 +567,7 @@ winShadowUpdateGDI (ScreenPtr pScreen,
++pBox;
}
}
- else
+ else if (!pScreenInfo->fMultiWindow)
{
/* Compute a GDI region from the damaged region */
hrgnCombined = CreateRectRgn (pBox->x1, pBox->y1, pBox->x2, pBox->y2);
diff --git a/hw/xwin/winwakeup.c b/hw/xwin/winwakeup.c
index c0200ab53..e1eece34a 100644
--- a/hw/xwin/winwakeup.c
+++ b/hw/xwin/winwakeup.c
@@ -30,7 +30,6 @@
* 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>
diff --git a/hw/xwin/winwindow.c b/hw/xwin/winwindow.c
index be160196a..e844dbfb3 100644
--- a/hw/xwin/winwindow.c
+++ b/hw/xwin/winwindow.c
@@ -28,7 +28,6 @@
* 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>
diff --git a/hw/xwin/winwindow.h b/hw/xwin/winwindow.h
index d0499bcbb..9c49d6482 100644
--- a/hw/xwin/winwindow.h
+++ b/hw/xwin/winwindow.h
@@ -29,7 +29,6 @@
*
* 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
diff --git a/hw/xwin/winwindowswm.c b/hw/xwin/winwindowswm.c
index 81a161041..e1994de84 100755
--- a/hw/xwin/winwindowswm.c
+++ b/hw/xwin/winwindowswm.c
@@ -203,7 +203,7 @@ ProcWindowsWMSelectInput (register ClientPtr client)
REQUEST_SIZE_MATCH (xWindowsWMSelectInputReq);
pHead = (WMEventPtr *)SecurityLookupIDByType(client, eventResource,
- EventType, SecurityWriteAccess);
+ EventType, DixWriteAccess);
if (stuff->mask != 0)
{
if (pHead)
@@ -441,7 +441,7 @@ ProcWindowsWMFrameDraw (register ClientPtr client)
WindowPtr pWin;
win32RootlessWindowPtr pRLWinPriv;
RECT rcNew;
- int nCmdShow;
+ int nCmdShow, rc;
RegionRec newShape;
ScreenPtr pScreen;
@@ -450,11 +450,9 @@ ProcWindowsWMFrameDraw (register ClientPtr client)
#if CYGMULTIWINDOW_DEBUG
ErrorF ("ProcWindowsWMFrameDraw\n");
#endif
- if (!(pWin = SecurityLookupWindow((Drawable)stuff->window,
- client, SecurityReadAccess)))
- {
- return BadValue;
- }
+ rc = dixLookupWindow(&pWin, stuff->window, client, DixReadAccess);
+ if (rc != Success)
+ return rc;
#if CYGMULTIWINDOW_DEBUG
ErrorF ("ProcWindowsWMFrameDraw - Window found\n");
#endif
@@ -538,6 +536,7 @@ ProcWindowsWMFrameSetTitle(
REQUEST(xWindowsWMFrameSetTitleReq);
WindowPtr pWin;
win32RootlessWindowPtr pRLWinPriv;
+ int rc;
#if CYGMULTIWINDOW_DEBUG
ErrorF ("ProcWindowsWMFrameSetTitle\n");
@@ -545,11 +544,9 @@ ProcWindowsWMFrameSetTitle(
REQUEST_AT_LEAST_SIZE(xWindowsWMFrameSetTitleReq);
- if (!(pWin = SecurityLookupWindow((Drawable)stuff->window,
- client, SecurityReadAccess)))
- {
- return BadValue;
- }
+ rc = dixLookupWindow(&pWin, stuff->window, client, DixReadAccess);
+ if (rc != Success)
+ return rc;
#if CYGMULTIWINDOW_DEBUG
ErrorF ("ProcWindowsWMFrameSetTitle - Window found\n");
#endif
diff --git a/hw/xwin/winwndproc.c b/hw/xwin/winwndproc.c
index 14893f6d3..2974c41ed 100644
--- a/hw/xwin/winwndproc.c
+++ b/hw/xwin/winwndproc.c
@@ -31,7 +31,6 @@
* 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>
diff --git a/include/Makefile.am b/include/Makefile.am
index 9e340d72d..4289b818d 100644
--- a/include/Makefile.am
+++ b/include/Makefile.am
@@ -7,6 +7,7 @@ sdk_HEADERS = \
closure.h \
colormap.h \
colormapst.h \
+ hotplug.h \
cursor.h \
cursorstr.h \
dix.h \
diff --git a/include/XIstubs.h b/include/XIstubs.h
index e005493c4..6797e0732 100644
--- a/include/XIstubs.h
+++ b/include/XIstubs.h
@@ -1,4 +1,3 @@
-/* $XFree86: xc/programs/Xserver/include/XIstubs.h,v 3.1 1996/04/15 11:34:22 dawes Exp $ */
/************************************************************
Copyright 1996 by Thomas E. Dickey <dickey@clark.net>
@@ -27,18 +26,6 @@ OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
#ifndef XI_STUBS_H
#define XI_STUBS_H 1
-int
-ChangeKeyboardDevice (
- DeviceIntPtr /* old_dev */,
- DeviceIntPtr /* new_dev */);
-
-int
-ChangePointerDevice (
- DeviceIntPtr /* old_dev */,
- DeviceIntPtr /* new_dev */,
- unsigned char /* x */,
- unsigned char /* y */);
-
void
CloseInputDevice (
DeviceIntPtr /* d */,
diff --git a/include/bstore.h b/include/bstore.h
index 098abcd86..843d6bb35 100644
--- a/include/bstore.h
+++ b/include/bstore.h
@@ -1,4 +1,3 @@
-/* $XFree86: xc/programs/Xserver/include/bstore.h,v 1.1 1998/04/05 16:44:25 robin Exp $*/
/*
* Copyright (c) 1987 by the Regents of the University of California
*
diff --git a/include/bstorestr.h b/include/bstorestr.h
index 8f21855c4..14e2fe1da 100644
--- a/include/bstorestr.h
+++ b/include/bstorestr.h
@@ -1,4 +1,3 @@
-/* $XFree86: xc/programs/Xserver/include/bstorestr.h,v 1.2 2001/01/06 20:58:12 tsi Exp $*/
/*
* Copyright (c) 1987 by the Regents of the University of California
*
diff --git a/include/closestr.h b/include/closestr.h
index d70f754b2..8855a5f93 100644
--- a/include/closestr.h
+++ b/include/closestr.h
@@ -1,4 +1,3 @@
-/* $Xorg: closestr.h,v 1.4 2001/02/09 02:05:14 xorgcvs Exp $ */
/*
Copyright 1991, 1998 The Open Group
@@ -26,7 +25,6 @@ other dealings in this Software without prior written authorization
from The Open Group.
*/
-/* $XFree86: xc/programs/Xserver/include/closestr.h,v 3.4 2001/12/14 19:59:53 dawes Exp $ */
#ifndef CLOSESTR_H
diff --git a/include/closure.h b/include/closure.h
index 839303c96..b261f5e0d 100644
--- a/include/closure.h
+++ b/include/closure.h
@@ -1,4 +1,3 @@
-/* $Xorg: closure.h,v 1.4 2001/02/09 02:05:14 xorgcvs Exp $ */
/***********************************************************
Copyright 1987, 1998 The Open Group
diff --git a/include/colormap.h b/include/colormap.h
index 1f2c33075..8513c0a09 100644
--- a/include/colormap.h
+++ b/include/colormap.h
@@ -1,4 +1,3 @@
-/* $XFree86: xc/programs/Xserver/include/colormap.h,v 1.5 2001/12/14 19:59:53 dawes Exp $ */
/*
Copyright 1987, 1998 The Open Group
@@ -45,7 +44,6 @@ ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
SOFTWARE.
*/
-/* $Xorg: colormap.h,v 1.4 2001/02/09 02:05:14 xorgcvs Exp $ */
#ifndef CMAP_H
#define CMAP_H 1
diff --git a/include/colormapst.h b/include/colormapst.h
index fdfc8f397..c9d9514ad 100644
--- a/include/colormapst.h
+++ b/include/colormapst.h
@@ -44,7 +44,6 @@ ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
SOFTWARE.
*/
-/* $Xorg: colormapst.h,v 1.4 2001/02/09 02:05:14 xorgcvs Exp $ */
#ifndef CMAPSTRUCT_H
#define CMAPSTRUCT_H 1
diff --git a/include/cursor.h b/include/cursor.h
index d51cc79e6..bdf4fd301 100644
--- a/include/cursor.h
+++ b/include/cursor.h
@@ -1,5 +1,3 @@
-/* $XdotOrg: xc/programs/Xserver/include/cursor.h,v 1.2 2004/04/23 19:54:23 eich Exp $ */
-/* $XFree86: xc/programs/Xserver/include/cursor.h,v 1.6 2002/09/17 01:15:14 dawes Exp $ */
/***********************************************************
Copyright 1987, 1998 The Open Group
@@ -46,7 +44,6 @@ ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
SOFTWARE.
******************************************************************/
-/* $Xorg: cursor.h,v 1.4 2001/02/09 02:05:15 xorgcvs Exp $ */
#ifndef CURSOR_H
#define CURSOR_H
diff --git a/include/cursorstr.h b/include/cursorstr.h
index c877d6cc9..b7beaa0c5 100644
--- a/include/cursorstr.h
+++ b/include/cursorstr.h
@@ -1,4 +1,3 @@
-/* $Xorg: cursorstr.h,v 1.4 2001/02/09 02:05:15 xorgcvs Exp $ */
/***********************************************************
Copyright 1987, 1998 The Open Group
@@ -45,7 +44,6 @@ ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
SOFTWARE.
******************************************************************/
-/* $XFree86: xc/programs/Xserver/include/cursorstr.h,v 1.8 2002/11/30 06:21:51 keithp Exp $ */
#ifndef CURSORSTRUCT_H
#define CURSORSTRUCT_H
diff --git a/include/dix-config.h.in b/include/dix-config.h.in
index 4c3a4b7a0..7aabae2ec 100644
--- a/include/dix-config.h.in
+++ b/include/dix-config.h.in
@@ -112,6 +112,9 @@
/* Define to 1 if you have the `geteuid' function. */
#undef HAVE_GETEUID
+/* Define to 1 if you have the `getisax' function. */
+#undef HAVE_GETISAX
+
/* Define to 1 if you have the `getopt' function. */
#undef HAVE_GETOPT
@@ -124,6 +127,9 @@
/* Define to 1 if you have the <inttypes.h> header file. */
#undef HAVE_INTTYPES_H
+/* Define to 1 if you have version 2.2 (or newer) of the drm library */
+#undef HAVE_LIBDRM_2_2
+
/* Define to 1 if you have the `m' library (-lm). */
#undef HAVE_LIBM
@@ -222,6 +228,9 @@
/* Support IPv6 for TCP connections */
#undef IPv6
+/* Support os-specific local connections */
+#undef LOCALCONN
+
/* Support MIT Misc extension */
#undef MITMISC
@@ -231,6 +240,9 @@
/* Disable some debugging code */
#undef NDEBUG
+/* Enable some debugging code */
+#undef DEBUG
+
/* Name of package */
#undef PACKAGE
@@ -302,6 +314,9 @@
/* unaligned word accesses behave as expected */
#undef WORKING_UNALIGNED_INT
+/* Build X-ACE extension */
+#undef XACE
+
/* Support XCMisc extension */
#undef XCMISC
@@ -433,4 +448,25 @@
/* Define to 1 if modules should avoid the libcwrapper */
#undef NO_LIBCWRAPPER
+/* Support D-BUS */
+#undef HAVE_DBUS
+
+/* Use only built-in fonts */
+#undef BUILTIN_FONTS
+
+/* Avoid using font servers */
+#undef NOFONTSERVERACCESS
+
+/* Use an empty root cursor */
+#undef NULL_ROOT_CURSOR
+
+/* Have a monotonic clock from clock_gettime() */
+#undef MONOTONIC_CLOCK
+
+/* Define to 1 if the DTrace Xserver provider probes should be built in */
+#undef XSERVER_DTRACE
+
+/* Path to XErrorDB file */
+#undef XERRORDB_PATH
+
#endif /* _DIX_CONFIG_H_ */
diff --git a/include/dix.h b/include/dix.h
index 1687f751a..5c2c5b862 100644
--- a/include/dix.h
+++ b/include/dix.h
@@ -1,4 +1,3 @@
-/* $XFree86: xc/programs/Xserver/include/dix.h,v 3.26 2003/01/12 02:44:27 dawes Exp $ */
/***********************************************************
Copyright 1987, 1998 The Open Group
@@ -45,7 +44,6 @@ ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
SOFTWARE.
******************************************************************/
-/* $Xorg: dix.h,v 1.4 2001/02/09 02:05:15 xorgcvs Exp $ */
#ifndef DIX_H
#define DIX_H
@@ -83,116 +81,6 @@ SOFTWARE.
return(BadIDChoice);\
}
-/* XXX if you are using this macro, you are probably not generating Match
- * errors where appropriate */
-#define LOOKUP_DRAWABLE(did, client)\
- ((client->lastDrawableID == did) ? \
- client->lastDrawable : (DrawablePtr)LookupDrawable(did, client))
-
-#ifdef XCSECURITY
-
-#define SECURITY_VERIFY_DRAWABLE(pDraw, did, client, mode)\
- if (client->lastDrawableID == did && !client->trustLevel)\
- pDraw = client->lastDrawable;\
- else \
- {\
- pDraw = (DrawablePtr) SecurityLookupIDByClass(client, did, \
- RC_DRAWABLE, mode);\
- if (!pDraw) \
- {\
- client->errorValue = did; \
- return BadDrawable;\
- }\
- if (pDraw->type == UNDRAWABLE_WINDOW)\
- return BadMatch;\
- }
-
-#define SECURITY_VERIFY_GEOMETRABLE(pDraw, did, client, mode)\
- if (client->lastDrawableID == did && !client->trustLevel)\
- pDraw = client->lastDrawable;\
- else \
- {\
- pDraw = (DrawablePtr) SecurityLookupIDByClass(client, did, \
- RC_DRAWABLE, mode);\
- if (!pDraw) \
- {\
- client->errorValue = did; \
- return BadDrawable;\
- }\
- }
-
-#define SECURITY_VERIFY_GC(pGC, rid, client, mode)\
- if (client->lastGCID == rid && !client->trustLevel)\
- pGC = client->lastGC;\
- else\
- pGC = (GC *) SecurityLookupIDByType(client, rid, RT_GC, mode);\
- if (!pGC)\
- {\
- client->errorValue = rid;\
- return (BadGC);\
- }
-
-#define VERIFY_DRAWABLE(pDraw, did, client)\
- SECURITY_VERIFY_DRAWABLE(pDraw, did, client, SecurityUnknownAccess)
-
-#define VERIFY_GEOMETRABLE(pDraw, did, client)\
- SECURITY_VERIFY_GEOMETRABLE(pDraw, did, client, SecurityUnknownAccess)
-
-#define VERIFY_GC(pGC, rid, client)\
- SECURITY_VERIFY_GC(pGC, rid, client, SecurityUnknownAccess)
-
-#else /* not XCSECURITY */
-
-#define VERIFY_DRAWABLE(pDraw, did, client)\
- if (client->lastDrawableID == did)\
- pDraw = client->lastDrawable;\
- else \
- {\
- pDraw = (DrawablePtr) LookupIDByClass(did, RC_DRAWABLE);\
- if (!pDraw) \
- {\
- client->errorValue = did; \
- return BadDrawable;\
- }\
- if (pDraw->type == UNDRAWABLE_WINDOW)\
- return BadMatch;\
- }
-
-#define VERIFY_GEOMETRABLE(pDraw, did, client)\
- if (client->lastDrawableID == did)\
- pDraw = client->lastDrawable;\
- else \
- {\
- pDraw = (DrawablePtr) LookupIDByClass(did, RC_DRAWABLE);\
- if (!pDraw) \
- {\
- client->errorValue = did; \
- return BadDrawable;\
- }\
- }
-
-#define VERIFY_GC(pGC, rid, client)\
- if (client->lastGCID == rid)\
- pGC = client->lastGC;\
- else\
- pGC = (GC *)LookupIDByType(rid, RT_GC);\
- if (!pGC)\
- {\
- client->errorValue = rid;\
- return (BadGC);\
- }
-
-#define SECURITY_VERIFY_DRAWABLE(pDraw, did, client, mode)\
- VERIFY_DRAWABLE(pDraw, did, client)
-
-#define SECURITY_VERIFY_GEOMETRABLE(pDraw, did, client, mode)\
- VERIFY_GEOMETRABLE(pDraw, did, client)
-
-#define SECURITY_VERIFY_GC(pGC, rid, client, mode)\
- VERIFY_GC(pGC, rid, client)
-
-#endif /* XCSECURITY */
-
/*
* We think that most hardware implementations of DBE will want
* LookupID*(dbe_back_buffer_id) to return the window structure that the
@@ -250,10 +138,15 @@ SOFTWARE.
if ((stuff->gc == INVALID) || (client->lastGCID != stuff->gc) ||\
(client->lastDrawableID != drawID))\
{\
- SECURITY_VERIFY_GEOMETRABLE(pDraw, drawID, client, SecurityWriteAccess);\
- SECURITY_VERIFY_GC(pGC, stuff->gc, client, SecurityReadAccess);\
- if ((pGC->depth != pDraw->depth) ||\
- (pGC->pScreen != pDraw->pScreen))\
+ int rc;\
+ rc = dixLookupDrawable(&(pDraw), drawID, client, M_ANY,\
+ DixWriteAccess);\
+ if (rc != Success)\
+ return rc;\
+ rc = dixLookupGC(&(pGC), stuff->gc, client, DixReadAccess);\
+ if (rc != Success)\
+ return rc;\
+ if ((pGC->depth != pDraw->depth) || (pGC->pScreen != pDraw->pScreen))\
return (BadMatch);\
client->lastDrawable = pDraw;\
client->lastDrawableID = drawID;\
@@ -294,6 +187,7 @@ extern ClientPtr requestingClient;
extern ClientPtr *clients;
extern ClientPtr serverClient;
extern int currentMaxClients;
+extern char dispatchExceptionAtReset;
typedef int HWEventQueueType;
typedef HWEventQueueType* HWEventQueuePtr;
@@ -385,47 +279,41 @@ extern int CompareISOLatin1Lowered(
unsigned char * /*b*/,
int blen);
-#ifdef XCSECURITY
-
-extern WindowPtr SecurityLookupWindow(
- XID /*rid*/,
- ClientPtr /*client*/,
- Mask /*access_mode*/);
-
-extern pointer SecurityLookupDrawable(
- XID /*rid*/,
- ClientPtr /*client*/,
- Mask /*access_mode*/);
-
-extern WindowPtr LookupWindow(
- XID /*rid*/,
- ClientPtr /*client*/);
-
-extern pointer LookupDrawable(
- XID /*rid*/,
- ClientPtr /*client*/);
-
-#else
-
-extern WindowPtr LookupWindow(
- XID /*rid*/,
- ClientPtr /*client*/);
+extern int dixLookupWindow(
+ WindowPtr *result,
+ XID id,
+ ClientPtr client,
+ Mask access_mode);
+
+extern int dixLookupDrawable(
+ DrawablePtr *result,
+ XID id,
+ ClientPtr client,
+ Mask type_mask,
+ Mask access_mode);
+
+extern int dixLookupGC(
+ GCPtr *result,
+ XID id,
+ ClientPtr client,
+ Mask access_mode);
+
+extern int dixLookupClient(
+ ClientPtr *result,
+ XID id,
+ ClientPtr client,
+ Mask access_mode);
-extern pointer LookupDrawable(
- XID /*rid*/,
- ClientPtr /*client*/);
-
-#define SecurityLookupWindow(rid, client, access_mode) \
- LookupWindow(rid, client)
-
-#define SecurityLookupDrawable(rid, client, access_mode) \
- LookupDrawable(rid, client)
-
-#endif /* XCSECURITY */
-
-extern ClientPtr LookupClient(
- XID /*rid*/,
- ClientPtr /*client*/);
+/*
+ * These are deprecated compatibility functions and will be removed soon!
+ * Please use the new dixLookup*() functions above.
+ */
+extern WindowPtr SecurityLookupWindow(XID, ClientPtr, Mask);
+extern WindowPtr LookupWindow(XID, ClientPtr);
+extern pointer SecurityLookupDrawable(XID, ClientPtr, Mask);
+extern pointer LookupDrawable(XID, ClientPtr);
+extern ClientPtr LookupClient(XID, ClientPtr);
+/* end deprecated functions */
extern void NoopDDA(void);
@@ -516,6 +404,12 @@ extern void FreeAllAtoms(void);
extern void InitAtoms(void);
+/* main.c */
+
+extern void SetVendorRelease(int release);
+
+extern void SetVendorString(char *string);
+
/* events.c */
extern void SetMaskForEvent(
@@ -688,6 +582,9 @@ extern int TryClientEvents(
extern void WindowsRestructured(void);
+#ifdef PANORAMIX
+extern void ReinitializeRootWindow(WindowPtr win, int xoff, int yoff);
+#endif
#ifdef RANDR
void
@@ -702,6 +599,8 @@ extern Bool AllocateClientPrivate(
int /*index*/,
unsigned /*amount*/);
+extern int ffs(int i);
+
/*
* callback manager stuff
*/
@@ -810,4 +709,13 @@ typedef struct {
SelectionCallbackKind kind;
} SelectionInfoRec;
+/* strcasecmp.c */
+#if NEED_STRCASECMP
+#define strcasecmp xstrcasecmp
+extern int xstrcasecmp(char *s1, char *s2);
+#endif
+
+/* ffs.c */
+extern int ffs(int i);
+
#endif /* DIX_H */
diff --git a/include/dixevents.h b/include/dixevents.h
index 46a5faef0..c78fb0e85 100644
--- a/include/dixevents.h
+++ b/include/dixevents.h
@@ -1,4 +1,3 @@
-/* $XFree86: xc/programs/Xserver/include/dixevents.h,v 3.4 2001/09/04 14:03:27 dawes Exp $ */
/************************************************************
Copyright 1996 by Thomas E. Dickey <dickey@clark.net>
@@ -103,4 +102,8 @@ extern int ProcUngrabButton(ClientPtr /* client */);
extern int ProcRecolorCursor(ClientPtr /* client */);
+#ifdef PANORAMIX
+extern void PostSyntheticMotion(int x, int y, ScreenPtr pScreen, unsigned long time);
+#endif
+
#endif /* DIXEVENTS_H */
diff --git a/include/dixfont.h b/include/dixfont.h
index c6b8676da..709da6272 100644
--- a/include/dixfont.h
+++ b/include/dixfont.h
@@ -1,4 +1,3 @@
-/* $Xorg: dixfont.h,v 1.3 2000/08/17 19:53:29 cpqbld Exp $ */
/***********************************************************
Copyright 1987 by Digital Equipment Corporation, Maynard, Massachusetts.
@@ -21,7 +20,6 @@ ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
SOFTWARE.
******************************************************************/
-/* $XFree86: xc/programs/Xserver/include/dixfont.h,v 3.7 2001/02/02 21:39:02 herrb Exp $ */
#ifndef DIXFONT_H
#define DIXFONT_H 1
diff --git a/include/dixfontstr.h b/include/dixfontstr.h
index 948bf1adb..463b2fdc5 100644
--- a/include/dixfontstr.h
+++ b/include/dixfontstr.h
@@ -1,4 +1,3 @@
-/* $Xorg: dixfontstr.h,v 1.3 2000/08/17 19:53:29 cpqbld Exp $ */
/***********************************************************
Copyright 1987 by Digital Equipment Corporation, Maynard, Massachusetts.
diff --git a/include/dixgrabs.h b/include/dixgrabs.h
index 042e063db..2d66d6ba1 100644
--- a/include/dixgrabs.h
+++ b/include/dixgrabs.h
@@ -1,4 +1,3 @@
-/* $XFree86: xc/programs/Xserver/include/dixgrabs.h,v 3.0 1996/04/15 11:34:27 dawes Exp $ */
/************************************************************
Copyright 1996 by Thomas E. Dickey <dickey@clark.net>
diff --git a/include/dixstruct.h b/include/dixstruct.h
index f38a64d07..b5ffcca49 100644
--- a/include/dixstruct.h
+++ b/include/dixstruct.h
@@ -1,4 +1,3 @@
-/* $XFree86: xc/programs/Xserver/include/dixstruct.h,v 3.19tsi Exp $ */
/***********************************************************
Copyright 1987 by Digital Equipment Corporation, Maynard, Massachusetts.
@@ -21,7 +20,6 @@ ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
SOFTWARE.
******************************************************************/
-/* $Xorg: dixstruct.h,v 1.3 2000/08/17 19:53:29 cpqbld Exp $ */
#ifndef DIXSTRUCT_H
#define DIXSTRUCT_H
@@ -130,16 +128,6 @@ typedef struct _Client {
int requestLogIndex;
#endif
unsigned long replyBytesRemaining;
-#ifdef XCSECURITY
- XID authId;
- unsigned int trustLevel;
- pointer (* CheckAccess)(
- ClientPtr /*pClient*/,
- XID /*id*/,
- RESTYPE /*classes*/,
- Mask /*access_mode*/,
- pointer /*resourceval*/);
-#endif
#ifdef XAPPGROUP
struct _AppGroupRec* appgroup;
#endif
diff --git a/include/exevents.h b/include/exevents.h
index 91c7acb6b..7fbaddbb5 100644
--- a/include/exevents.h
+++ b/include/exevents.h
@@ -1,4 +1,3 @@
-/* $XFree86: xc/programs/Xserver/include/exevents.h,v 3.1 1996/04/15 11:34:29 dawes Exp $ */
/************************************************************
Copyright 1996 by Thomas E. Dickey <dickey@clark.net>
@@ -180,4 +179,17 @@ extern int DeviceEventSuppressForWindow(
Mask /* mask */,
int /* maskndx */);
+void FindInterestedChildren(
+ DeviceIntPtr /* dev */,
+ WindowPtr /* p1 */,
+ Mask /* mask */,
+ xEvent * /* ev */,
+ int /* count */);
+
+void SendEventToAllWindows(
+ DeviceIntPtr /* dev */,
+ Mask /* mask */,
+ xEvent * /* ev */,
+ int /* count */);
+
#endif /* EXEVENTS_H */
diff --git a/include/extension.h b/include/extension.h
index 34750173b..74975c50b 100644
--- a/include/extension.h
+++ b/include/extension.h
@@ -1,4 +1,3 @@
-/* $Xorg: extension.h,v 1.4 2001/02/09 02:05:15 xorgcvs Exp $ */
/***********************************************************
Copyright 1987, 1998 The Open Group
@@ -45,7 +44,6 @@ ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
SOFTWARE.
******************************************************************/
-/* $XFree86: xc/programs/Xserver/include/extension.h,v 1.5 2001/12/14 19:59:54 dawes Exp $ */
#ifndef EXTENSION_H
#define EXTENSION_H
@@ -56,6 +54,18 @@ extern unsigned short StandardMinorOpcode(ClientPtr /*client*/);
extern unsigned short MinorOpcodeOfRequest(ClientPtr /*client*/);
+extern Bool EnableDisableExtension(char *name, Bool enable);
+
+extern void EnableDisableExtensionError(char *name, Bool enable);
+
+extern void ResetExtensionPrivates(void);
+
+extern int AllocateExtensionPrivateIndex(void);
+
+extern Bool AllocateExtensionPrivate(
+ int /*index*/,
+ unsigned /*amount*/);
+
extern void InitExtensions(int argc, char **argv);
extern void InitVisualWrap(void);
diff --git a/include/extinit.h b/include/extinit.h
index 37fa9a245..2087d74d6 100644
--- a/include/extinit.h
+++ b/include/extinit.h
@@ -1,4 +1,3 @@
-/* $XFree86: xc/programs/Xserver/include/extinit.h,v 3.2 2001/08/01 00:44:58 tsi Exp $ */
/************************************************************
Copyright 1996 by Thomas E. Dickey <dickey@clark.net>
@@ -105,6 +104,12 @@ SDeviceMappingNotifyEvent (
);
void
+SDevicePresenceNotifyEvent (
+ devicePresenceNotify * /* from */,
+ devicePresenceNotify * /* to */
+ );
+
+void
FixExtensionEvents (
ExtensionEntry * /* extEntry */
);
diff --git a/include/extnsionst.h b/include/extnsionst.h
index daf37bf43..38d4bd7d9 100644
--- a/include/extnsionst.h
+++ b/include/extnsionst.h
@@ -1,4 +1,3 @@
-/* $Xorg: extnsionst.h,v 1.4 2001/02/09 02:05:15 xorgcvs Exp $ */
/***********************************************************
Copyright 1987, 1998 The Open Group
@@ -45,11 +44,11 @@ ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
SOFTWARE.
******************************************************************/
-/* $XFree86: xc/programs/Xserver/include/extnsionst.h,v 3.8 2003/04/27 21:31:04 herrb Exp $ */
#ifndef EXTENSIONSTRUCT_H
#define EXTENSIONSTRUCT_H
+#include "dix.h"
#include "misc.h"
#include "screenint.h"
#include "extension.h"
@@ -70,9 +69,7 @@ typedef struct _ExtensionEntry {
pointer extPrivate;
unsigned short (* MinorOpcode)( /* called for errors */
ClientPtr /* client */);
-#ifdef XCSECURITY
- Bool secure; /* extension visible to untrusted clients? */
-#endif
+ DevUnion *devPrivates;
} ExtensionEntry;
/*
@@ -129,6 +126,7 @@ extern Bool AddExtensionAlias(
ExtensionEntry * /*extension*/);
extern ExtensionEntry *CheckExtension(const char *extname);
+extern ExtensionEntry *GetExtensionEntry(int major);
extern ExtensionLookupProc LookupProc(
char* /*name*/,
diff --git a/include/gc.h b/include/gc.h
index 77c2f20c6..6c7add620 100644
--- a/include/gc.h
+++ b/include/gc.h
@@ -1,4 +1,3 @@
-/* $XFree86: xc/programs/Xserver/include/gc.h,v 1.5 2001/12/14 19:59:54 dawes Exp $ */
/***********************************************************
Copyright 1987, 1998 The Open Group
@@ -45,7 +44,6 @@ ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
SOFTWARE.
******************************************************************/
-/* $Xorg: gc.h,v 1.4 2001/02/09 02:05:15 xorgcvs Exp $ */
#ifndef GC_H
#define GC_H
diff --git a/include/gcstruct.h b/include/gcstruct.h
index 1d0072674..14f747836 100644
--- a/include/gcstruct.h
+++ b/include/gcstruct.h
@@ -1,4 +1,3 @@
-/* $Xorg: gcstruct.h,v 1.4 2001/02/09 02:05:15 xorgcvs Exp $ */
/***********************************************************
Copyright 1987, 1998 The Open Group
@@ -47,7 +46,6 @@ SOFTWARE.
******************************************************************/
-/* $XFree86: xc/programs/Xserver/include/gcstruct.h,v 1.7 2003/04/27 21:31:04 herrb Exp $ */
#ifndef GCSTRUCT_H
#define GCSTRUCT_H
diff --git a/include/globals.h b/include/globals.h
index 95e11fe70..821b12bdb 100644
--- a/include/globals.h
+++ b/include/globals.h
@@ -1,5 +1,3 @@
-/* $XdotOrg: xserver/xorg/include/globals.h,v 1.11 2006/04/05 21:08:45 fredrik Exp $ */
-/* $XFree86: xc/programs/Xserver/include/globals.h,v 1.3 1999/09/25 14:38:21 dawes Exp $ */
#ifndef _XSERV_GLOBAL_H_
#define _XSERV_GLOBAL_H_
@@ -50,6 +48,7 @@ extern Bool PanoramiXMapped;
extern Bool PanoramiXVisibilityNotifySent;
extern Bool PanoramiXWindowExposureSent;
extern Bool PanoramiXOneExposeRequest;
+extern Bool PanoramiXExtensionDisabledHack;
#endif
#ifdef BIGREQS
diff --git a/include/hotplug.h b/include/hotplug.h
new file mode 100644
index 000000000..0c304b15e
--- /dev/null
+++ b/include/hotplug.h
@@ -0,0 +1,31 @@
+/*
+ * Copyright © 2006 Daniel Stone
+ *
+ * Permission to use, copy, modify, distribute, and sell this software and its
+ * documentation for any purpose is hereby granted without fee, provided that
+ * the above copyright 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 and/or authors
+ * not be used in advertising or publicity pertaining to distribution of the
+ * software without specific, written prior permission. The copyright holders
+ * and/or authors 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 AND/OR AUTHORS DISCLAIM ALL WARRANTIES WITH REGARD
+ * TO THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND
+ * FITNESS, IN NO EVENT SHALL THE COPYRIGHT HOLDERS AND/OR AUTHORS BE LIABLE
+ * FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER
+ * RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER 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 CONFIG_H
+#define CONFIG_H
+
+void configInitialise(void);
+void configFini(void);
+void configDispatch(void);
+
+#endif /* CONFIG_H */
diff --git a/include/input.h b/include/input.h
index e32182d4c..ebb0915c4 100644
--- a/include/input.h
+++ b/include/input.h
@@ -1,4 +1,3 @@
-/* $Xorg: input.h,v 1.4 2001/02/09 02:05:15 xorgcvs Exp $ */
/************************************************************
Copyright 1987, 1998 The Open Group
@@ -45,7 +44,6 @@ ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
SOFTWARE.
********************************************************/
-/* $XFree86: xc/programs/Xserver/include/input.h,v 3.8 2003/04/27 21:31:04 herrb Exp $ */
#ifndef INPUT_H
#define INPUT_H
@@ -61,6 +59,10 @@ SOFTWARE.
#define DEVICE_OFF 2
#define DEVICE_CLOSE 3
+#define POINTER_RELATIVE (1 << 1)
+#define POINTER_ABSOLUTE (1 << 2)
+#define POINTER_ACCELERATE (1 << 3)
+
#define MAP_LENGTH 256
#define DOWN_LENGTH 32 /* 256/8 => number of bytes to hold 256 bits */
#define NullGrab ((GrabPtr)NULL)
@@ -163,6 +165,14 @@ extern void ResetDevicePrivateIndex(void);
extern KeybdCtrl defaultKeyboardControl;
extern PtrCtrl defaultPointerControl;
+typedef struct _InputOption {
+ char *key;
+ char *value;
+ struct _InputOption *next;
+} InputOption;
+
+extern void InitCoreDevices(void);
+
extern DeviceIntPtr AddInputDevice(
DeviceProc /*deviceProc*/,
Bool /*autoStart*/);
@@ -170,6 +180,9 @@ extern DeviceIntPtr AddInputDevice(
extern Bool EnableDevice(
DeviceIntPtr /*device*/);
+extern Bool ActivateDevice(
+ DeviceIntPtr /*device*/);
+
extern Bool DisableDevice(
DeviceIntPtr /*device*/);
@@ -177,7 +190,7 @@ extern int InitAndStartDevices(void);
extern void CloseDownDevices(void);
-extern void RemoveDevice(
+extern int RemoveDevice(
DeviceIntPtr /*dev*/);
extern int NumMotionEvents(void);
@@ -227,6 +240,9 @@ extern Bool InitValuatorClassDeviceStruct(
int /*numMotionEvents*/,
int /*mode*/);
+extern Bool InitAbsoluteClassDeviceStruct(
+ DeviceIntPtr /*device*/);
+
extern Bool InitFocusClassDeviceStruct(
DeviceIntPtr /*device*/);
@@ -296,7 +312,8 @@ extern Bool InitPointerDeviceStruct(
int /*numButtons*/,
ValuatorMotionProcPtr /*motionProc*/,
PtrCtrlProcPtr /*controlProc*/,
- int /*numMotionEvents*/);
+ int /*numMotionEvents*/,
+ int /*numAxes*/);
extern Bool InitKeyboardDeviceStruct(
DevicePtr /*device*/,
@@ -358,7 +375,7 @@ extern void CoreProcessKeyboardEvent(
extern Bool LegalModifier(
unsigned int /*key*/,
- DevicePtr /*pDev*/);
+ DeviceIntPtr /*pDev*/);
extern void ProcessInputEvents(void);
@@ -366,4 +383,73 @@ extern void InitInput(
int /*argc*/,
char ** /*argv*/);
+extern int GetMaximumEventsNum(void);
+
+extern int GetPointerEvents(
+ xEvent *events,
+ DeviceIntPtr pDev,
+ int type,
+ int buttons,
+ int flags,
+ int first_valuator,
+ int num_valuators,
+ int *valuators);
+
+extern int GetKeyboardEvents(
+ xEvent *events,
+ DeviceIntPtr pDev,
+ int type,
+ int key_code);
+
+extern int GetKeyboardValuatorEvents(
+ xEvent *events,
+ DeviceIntPtr pDev,
+ int type,
+ int key_code,
+ int first_valuator,
+ int num_valuator,
+ int *valuators);
+
+extern int GetProximityEvents(
+ xEvent *events,
+ DeviceIntPtr pDev,
+ int type,
+ int first_valuator,
+ int num_valuators,
+ int *valuators);
+
+extern void PostSyntheticMotion(
+ int x,
+ int y,
+ ScreenPtr pScreen,
+ unsigned long time);
+
+extern int GetMotionHistorySize(
+ void);
+
+extern void AllocateMotionHistory(
+ DeviceIntPtr pDev);
+
+extern int GetMotionHistory(
+ DeviceIntPtr pDev,
+ xTimecoord *buff,
+ unsigned long start,
+ unsigned long stop,
+ ScreenPtr pScreen);
+
+extern void SwitchCoreKeyboard(DeviceIntPtr pDev);
+extern void SwitchCorePointer(DeviceIntPtr pDev);
+
+extern DeviceIntPtr LookupDeviceIntRec(
+ CARD8 deviceid);
+
+/* Implemented by the DDX. */
+extern int NewInputDeviceRequest(
+ InputOption *options);
+
+extern void DDXRingBell(
+ int volume,
+ int pitch,
+ int duration);
+
#endif /* INPUT_H */
diff --git a/include/inputstr.h b/include/inputstr.h
index b54e8a1d5..ada94e6b4 100644
--- a/include/inputstr.h
+++ b/include/inputstr.h
@@ -1,4 +1,3 @@
-/* $XFree86: xc/programs/Xserver/include/inputstr.h,v 1.6 2003/04/27 21:31:04 herrb Exp $ */
/************************************************************
Copyright 1987, 1998 The Open Group
@@ -46,7 +45,6 @@ SOFTWARE.
********************************************************/
-/* $Xorg: inputstr.h,v 1.4 2001/02/09 02:05:15 xorgcvs Exp $ */
#ifndef INPUTSTRUCT_H
#define INPUTSTRUCT_H
@@ -64,6 +62,8 @@ SOFTWARE.
#define EMASKSIZE MAX_DEVICES
+extern int CoreDevicePrivatesIndex, CoreDevicePrivatesGeneration;
+
/* Kludge: OtherClients and InputClients must be compatible, see code */
typedef struct _OtherClients {
@@ -93,15 +93,15 @@ typedef struct _OtherInputMasks {
*/
#define MasksPerDetailMask 8 /* 256 keycodes and 256 possible
- modifier combinations, but only
- 3 buttons. */
+ modifier combinations, but only
+ 3 buttons. */
- typedef struct _DetailRec { /* Grab details may be bit masks */
- unsigned short exact;
- Mask *pMask;
- } DetailRec;
+typedef struct _DetailRec { /* Grab details may be bit masks */
+ unsigned short exact;
+ Mask *pMask;
+} DetailRec;
- typedef struct _GrabRec {
+typedef struct _GrabRec {
GrabPtr next; /* for chain of passive grabs */
XID resource;
DeviceIntPtr device;
@@ -131,6 +131,8 @@ typedef struct _KeyClassRec {
unsigned short prev_state;
#ifdef XKB
struct _XkbSrvInfo *xkbInfo;
+#else
+ void *pad0;
#endif
} KeyClassRec, *KeyClassPtr;
@@ -144,12 +146,20 @@ typedef struct _AxisInfo {
typedef struct _ValuatorClassRec {
ValuatorMotionProcPtr GetMotionProc;
- int numMotionEvents;
- WindowPtr motionHintWindow;
- AxisInfoPtr axes;
- unsigned short numAxes;
- int *axisVal;
- CARD8 mode;
+ int numMotionEvents;
+ int first_motion;
+ int last_motion;
+ void *motion;
+
+ WindowPtr motionHintWindow;
+
+ AxisInfoPtr axes;
+ unsigned short numAxes;
+ int *axisVal;
+ int lastx, lasty; /* last event recorded, not posted to
+ * client; see dix/devices.c */
+ int dxremaind, dyremaind; /* for acceleration */
+ CARD8 mode;
} ValuatorClassRec, *ValuatorClassPtr;
typedef struct _ButtonClassRec {
@@ -160,7 +170,9 @@ typedef struct _ButtonClassRec {
CARD8 down[DOWN_LENGTH];
CARD8 map[MAP_LENGTH];
#ifdef XKB
- union _XkbAction * xkb_acts;
+ union _XkbAction *xkb_acts;
+#else
+ void *pad0;
#endif
} ButtonClassRec, *ButtonClassPtr;
@@ -177,6 +189,26 @@ typedef struct _ProximityClassRec {
char pad;
} ProximityClassRec, *ProximityClassPtr;
+typedef struct _AbsoluteClassRec {
+ /* Calibration. */
+ int min_x;
+ int max_x;
+ int min_y;
+ int max_y;
+ int flip_x;
+ int flip_y;
+ int rotation;
+ int button_threshold;
+
+ /* Area. */
+ int offset_x;
+ int offset_y;
+ int width;
+ int height;
+ int screen;
+ XID following;
+} AbsoluteClassRec, *AbsoluteClassPtr;
+
typedef struct _KbdFeedbackClassRec *KbdFeedbackPtr;
typedef struct _PtrFeedbackClassRec *PtrFeedbackPtr;
typedef struct _IntegerFeedbackClassRec *IntegerFeedbackPtr;
@@ -191,6 +223,8 @@ typedef struct _KbdFeedbackClassRec {
KbdFeedbackPtr next;
#ifdef XKB
struct _XkbSrvLedInfo *xkb_sli;
+#else
+ void *pad0;
#endif
} KbdFeedbackClassRec;
@@ -225,6 +259,8 @@ typedef struct _LedFeedbackClassRec {
LedFeedbackPtr next;
#ifdef XKB
struct _XkbSrvLedInfo *xkb_sli;
+#else
+ void *pad0;
#endif
} LedFeedbackClassRec;
@@ -250,6 +286,8 @@ typedef struct _DeviceIntRec {
used to initialize, turn on, or
turn off the device */
Bool inited; /* TRUE if INIT returns Success */
+ Bool enabled; /* TRUE if ON returns Success */
+ Bool coreEvents; /* TRUE if device also sends core */
GrabPtr grab; /* the grabber - used by DIX */
struct {
Bool frozen;
@@ -276,6 +314,7 @@ typedef struct _DeviceIntRec {
ButtonClassPtr button;
FocusClassPtr focus;
ProximityClassPtr proximity;
+ AbsoluteClassPtr absolute;
KbdFeedbackPtr kbdfeed;
PtrFeedbackPtr ptrfeed;
IntegerFeedbackPtr intfeed;
@@ -283,7 +322,9 @@ typedef struct _DeviceIntRec {
BellFeedbackPtr bell;
LedFeedbackPtr leds;
#ifdef XKB
- struct _XkbInterest * xkb_interest;
+ struct _XkbInterest *xkb_interest;
+#else
+ void *pad0;
#endif
DevUnion *devPrivates;
int nPrivates;
diff --git a/include/kdrive-config.h.in b/include/kdrive-config.h.in
index 9e611c584..3bc779218 100644
--- a/include/kdrive-config.h.in
+++ b/include/kdrive-config.h.in
@@ -22,4 +22,13 @@
/* Support tslib touchscreen abstraction library */
#undef TSLIB
+/* Verbose debugging output hilarity */
+#undef DEBUG
+
+/* Have the backtrace() function. */
+#undef HAVE_BACKTRACE
+
+/* Have execinfo.h for backtrace(). */
+#undef HAVE_EXECINFO_H
+
#endif /* _KDRIVE_CONFIG_H_ */
diff --git a/include/misc.h b/include/misc.h
index 5944a427f..2be1d66a6 100644
--- a/include/misc.h
+++ b/include/misc.h
@@ -1,4 +1,3 @@
-/* $XFree86: xc/programs/Xserver/include/misc.h,v 3.28 2001/12/14 19:59:55 dawes Exp $ */
/***********************************************************
Copyright 1987, 1998 The Open Group
@@ -66,7 +65,6 @@ TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE
OF THIS SOFTWARE.
******************************************************************/
-/* $Xorg: misc.h,v 1.5 2001/02/09 02:05:15 xorgcvs Exp $ */
#ifndef MISC_H
#define MISC_H 1
/*
@@ -83,11 +81,7 @@ extern unsigned long serverGeneration;
#include <X11/X.h>
#include <X11/Xdefs.h>
-#ifndef IN_MODULE
-#ifndef NULL
#include <stddef.h>
-#endif
-#endif
#ifndef MAXSCREENS
#define MAXSCREENS 16
@@ -115,9 +109,7 @@ typedef struct _CallbackList *CallbackListPtr; /* also in dix.h */
typedef struct _xReq *xReqPtr;
#include "os.h" /* for ALLOCATE_LOCAL and DEALLOCATE_LOCAL */
-#ifndef IN_MODULE
#include <X11/Xfuncs.h> /* for bcopy, bzero, and bcmp */
-#endif
#define NullBox ((BoxPtr)0)
#define MILLI_PER_MIN (1000 * 60)
@@ -145,12 +137,10 @@ typedef struct _xReq *xReqPtr;
#define min(a, b) (((a) < (b)) ? (a) : (b))
#define max(a, b) (((a) > (b)) ? (a) : (b))
-#ifndef IN_MODULE
/* abs() is a function, not a macro; include the file declaring
* it in case we haven't done that yet.
- */
+ */
#include <stdlib.h>
-#endif /* IN_MODULE */
#ifndef Fabs
#define Fabs(a) ((a) > 0.0 ? (a) : -(a)) /* floating absolute value */
#endif
@@ -166,7 +156,6 @@ typedef struct _xReq *xReqPtr;
*/
#define lowbit(x) ((x) & (~(x) + 1))
-#ifndef IN_MODULE
/* XXX Not for modules */
#include <limits.h>
#if !defined(MAXSHORT) || !defined(MINSHORT) || \
@@ -177,7 +166,6 @@ typedef struct _xReq *xReqPtr;
*/
#include <math.h>
-#endif
#undef MAXSHORT
#define MAXSHORT SHRT_MAX
#undef MINSHORT
@@ -189,7 +177,7 @@ typedef struct _xReq *xReqPtr;
#include <assert.h>
#include <ctype.h>
-#include <stdio.h> /* for fopen, etc... */
+#include <stdio.h> /* for fopen, etc... */
#endif
diff --git a/include/miscstruct.h b/include/miscstruct.h
index 6a16007b7..c39f03ce8 100644
--- a/include/miscstruct.h
+++ b/include/miscstruct.h
@@ -1,4 +1,3 @@
-/* $Xorg: miscstruct.h,v 1.4 2001/02/09 02:05:15 xorgcvs Exp $ */
/***********************************************************
Copyright 1987, 1998 The Open Group
@@ -45,7 +44,6 @@ ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
SOFTWARE.
******************************************************************/
-/* $XFree86: xc/programs/Xserver/include/miscstruct.h,v 3.4 2003/04/27 21:31:04 herrb Exp $ */
#ifndef MISCSTRUCT_H
#define MISCSTRUCT_H 1
diff --git a/include/opaque.h b/include/opaque.h
index ca29afdc0..3d19d275f 100644
--- a/include/opaque.h
+++ b/include/opaque.h
@@ -1,4 +1,3 @@
-/* $Xorg: opaque.h,v 1.4 2001/02/09 02:05:15 xorgcvs Exp $ */
/*
Copyright 1987, 1998 The Open Group
@@ -26,7 +25,6 @@ other dealings in this Software without prior written authorization
from The Open Group.
*/
-/* $XFree86: xc/programs/Xserver/include/opaque.h,v 1.13 2003/07/24 13:50:25 eich Exp $ */
#ifndef OPAQUE_H
#define OPAQUE_H
@@ -72,10 +70,10 @@ extern int limitStackSpace;
#ifdef RLIMIT_NOFILE
extern int limitNoFile;
#endif
-extern Bool permitOldBugs;
extern Bool defeatAccessControl;
extern long maxBigRequestSize;
extern Bool blackRoot;
+extern Bool whiteRoot;
extern Bool CoreDump;
diff --git a/include/os.h b/include/os.h
index 0885bb298..d4eed220f 100644
--- a/include/os.h
+++ b/include/os.h
@@ -1,4 +1,3 @@
-/* $XFree86: xc/programs/Xserver/include/os.h,v 3.54 2003/10/30 21:21:06 herrb Exp $ */
/***********************************************************
Copyright 1987, 1998 The Open Group
@@ -46,7 +45,6 @@ SOFTWARE.
******************************************************************/
-/* $Xorg: os.h,v 1.4 2001/02/09 02:05:15 xorgcvs Exp $ */
#ifndef OS_H
#define OS_H
@@ -88,12 +86,8 @@ typedef struct _NewClientRec *NewClientPtr;
#define xnfstrdup(s) XNFstrdup(s)
#endif
-#ifndef IN_MODULE
-#ifdef __SCO__
#include <stdio.h>
-#endif
-#include <string.h>
-#endif
+#include <stdarg.h>
/* have to put $(SIGNAL_DEFINES) in DEFINES in Imakefile to get this right */
#ifdef SIGNALRETURNSINT
@@ -153,6 +147,10 @@ extern void CheckConnections(void);
extern void CloseDownConnection(ClientPtr /*client*/);
+extern void AddGeneralSocket(int /*fd*/);
+
+extern void RemoveGeneralSocket(int /*fd*/);
+
extern void AddEnabledDevice(int /*fd*/);
extern void RemoveEnabledDevice(int /*fd*/);
@@ -512,15 +510,15 @@ __attribute((noreturn))
#endif
;
+#ifdef DEBUG
+#define DebugF ErrorF
+#else
+#define DebugF(x, ...) /* */
+#endif
+
extern void VErrorF(const char *f, va_list args);
extern void ErrorF(const char *f, ...) _printf_attribute(1,2);
extern void Error(char *str);
extern void LogPrintMarkers(void);
-#if defined(NEED_SNPRINTF) && !defined(IN_MODULE)
-extern int snprintf(char *str, size_t size, const char *format, ...)
- _printf_attribute(3,4);
-extern int vsnprintf(char *str, size_t size, const char *format, va_list ap);
-#endif
-
#endif /* OS_H */
diff --git a/include/pixmap.h b/include/pixmap.h
index 6cea329ec..19e682a50 100644
--- a/include/pixmap.h
+++ b/include/pixmap.h
@@ -1,4 +1,3 @@
-/* $Xorg: pixmap.h,v 1.4 2001/02/09 02:05:15 xorgcvs Exp $ */
/***********************************************************
Copyright 1987, 1998 The Open Group
@@ -59,6 +58,16 @@ SOFTWARE.
#define UNDRAWABLE_WINDOW 2
#define DRAWABLE_BUFFER 3
+/* corresponding type masks for dixLookupDrawable() */
+#define M_DRAWABLE_WINDOW (1<<0)
+#define M_DRAWABLE_PIXMAP (1<<1)
+#define M_UNDRAWABLE_WINDOW (1<<2)
+#define M_DRAWABLE_BUFFER (1<<3)
+#define M_ANY (-1)
+#define M_WINDOW (M_DRAWABLE_WINDOW|M_UNDRAWABLE_WINDOW)
+#define M_DRAWABLE (M_DRAWABLE_WINDOW|M_DRAWABLE_PIXMAP|M_DRAWABLE_BUFFER)
+#define M_UNDRAWABLE (M_UNDRAWABLE_WINDOW)
+
/* flags to PaintWindow() */
#define PW_BACKGROUND 0
#define PW_BORDER 1
diff --git a/include/pixmapstr.h b/include/pixmapstr.h
index 291f2a2e9..628465b97 100644
--- a/include/pixmapstr.h
+++ b/include/pixmapstr.h
@@ -1,4 +1,3 @@
-/* $Xorg: pixmapstr.h,v 1.4 2001/02/09 02:05:15 xorgcvs Exp $ */
/***********************************************************
Copyright 1987, 1998 The Open Group
diff --git a/include/property.h b/include/property.h
index 21a38d51c..8b6dc0912 100644
--- a/include/property.h
+++ b/include/property.h
@@ -1,4 +1,3 @@
-/* $Xorg: property.h,v 1.4 2001/02/09 02:05:15 xorgcvs Exp $ */
/***********************************************************
Copyright 1987, 1998 The Open Group
@@ -45,7 +44,6 @@ ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
SOFTWARE.
******************************************************************/
-/* $XFree86: xc/programs/Xserver/include/property.h,v 1.3 2001/12/14 19:59:55 dawes Exp $ */
#ifndef PROPERTY_H
#define PROPERTY_H
diff --git a/include/propertyst.h b/include/propertyst.h
index 9502a7261..6add81d9a 100644
--- a/include/propertyst.h
+++ b/include/propertyst.h
@@ -1,4 +1,3 @@
-/* $Xorg: propertyst.h,v 1.4 2001/02/09 02:05:15 xorgcvs Exp $ */
/***********************************************************
Copyright 1987, 1998 The Open Group
@@ -45,7 +44,6 @@ ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
SOFTWARE.
******************************************************************/
-/* $XFree86: xc/programs/Xserver/include/propertyst.h,v 3.2 2001/01/17 22:36:57 dawes Exp $ */
#ifndef PROPERTYSTRUCT_H
#define PROPERTYSTRUCT_H
diff --git a/include/region.h b/include/region.h
index 0340b0db6..e9d7e778c 100644
--- a/include/region.h
+++ b/include/region.h
@@ -1,4 +1,3 @@
-/* $Xorg: region.h,v 1.4 2001/02/09 02:05:15 xorgcvs Exp $ */
/***********************************************************
Copyright 1987, 1998 The Open Group
diff --git a/include/regionstr.h b/include/regionstr.h
index f3b4ce6db..e6882e77a 100644
--- a/include/regionstr.h
+++ b/include/regionstr.h
@@ -1,5 +1,3 @@
-/* $XdotOrg: xserver/xorg/include/regionstr.h,v 1.7 2005/08/24 11:18:31 daniels Exp $ */
-/* $Xorg: regionstr.h,v 1.4 2001/02/09 02:05:15 xorgcvs Exp $ */
/***********************************************************
Copyright 1987, 1998 The Open Group
@@ -46,7 +44,6 @@ ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
SOFTWARE.
******************************************************************/
-/* $XFree86: xc/programs/Xserver/include/regionstr.h,v 1.12tsi Exp $ */
#ifndef REGIONSTRUCT_H
#define REGIONSTRUCT_H
@@ -324,4 +321,7 @@ extern void miRegionEmpty(
extern BoxPtr miRegionExtents(
RegionPtr /*pReg*/);
+extern void miPrintRegion(
+ RegionPtr /*pReg*/);
+
#endif /* REGIONSTRUCT_H */
diff --git a/include/resource.h b/include/resource.h
index 49c189869..3231e8cd9 100644
--- a/include/resource.h
+++ b/include/resource.h
@@ -1,4 +1,3 @@
-/* $Xorg: resource.h,v 1.5 2001/02/09 02:05:15 xorgcvs Exp $ */
/***********************************************************
Copyright 1987, 1989, 1998 The Open Group
@@ -45,7 +44,6 @@ ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
SOFTWARE.
******************************************************************/
-/* $XFree86: xc/programs/Xserver/include/resource.h,v 1.11 2002/03/06 21:14:04 mvojkovi Exp $ */
#ifndef RESOURCE_H
#define RESOURCE_H 1
@@ -222,12 +220,11 @@ extern pointer LookupClientResourceComplex(
* simultaneously.
*/
-#define SecurityUnknownAccess 0 /* don't know intentions */
-#define SecurityReadAccess (1<<0) /* inspecting the object */
-#define SecurityWriteAccess (1<<1) /* changing the object */
-#define SecurityDestroyAccess (1<<2) /* destroying the object */
-
-#ifdef XCSECURITY
+#define DixUnknownAccess 0 /* don't know intentions */
+#define DixReadAccess (1<<0) /* inspecting the object */
+#define DixWriteAccess (1<<1) /* changing the object */
+#define DixReadWriteAccess (DixReadAccess|DixWriteAccess)
+#define DixDestroyAccess (1<<2) /* destroying the object */
extern pointer SecurityLookupIDByType(
ClientPtr /*client*/,
@@ -241,15 +238,6 @@ extern pointer SecurityLookupIDByClass(
RESTYPE /*classes*/,
Mask /*access_mode*/);
-#else /* not XCSECURITY */
-
-#define SecurityLookupIDByType(client, id, rtype, access_mode) \
- LookupIDByType(id, rtype)
-
-#define SecurityLookupIDByClass(client, id, classes, access_mode) \
- LookupIDByClass(id, classes)
-
-#endif /* XCSECURITY */
extern void GetXIDRange(
int /*client*/,
diff --git a/include/rgb.h b/include/rgb.h
index 5741a4efa..3e768b615 100644
--- a/include/rgb.h
+++ b/include/rgb.h
@@ -44,7 +44,6 @@ ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
SOFTWARE.
******************************************************************/
-/* $Xorg: rgb.h,v 1.4 2001/02/09 02:05:15 xorgcvs Exp $ */
#ifndef RGB_H
#define RGB_H
diff --git a/include/screenint.h b/include/screenint.h
index 74d5e14a0..e60c2480c 100644
--- a/include/screenint.h
+++ b/include/screenint.h
@@ -1,4 +1,3 @@
-/* $Xorg: screenint.h,v 1.4 2001/02/09 02:05:15 xorgcvs Exp $ */
/***********************************************************
Copyright 1987, 1998 The Open Group
@@ -45,7 +44,6 @@ ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
SOFTWARE.
******************************************************************/
-/* $XFree86: xc/programs/Xserver/include/screenint.h,v 1.5 2001/12/14 19:59:56 dawes Exp $ */
#ifndef SCREENINT_H
#define SCREENINT_H
diff --git a/include/scrnintstr.h b/include/scrnintstr.h
index 19abe33a1..36135153f 100644
--- a/include/scrnintstr.h
+++ b/include/scrnintstr.h
@@ -1,4 +1,3 @@
-/* $Xorg: scrnintstr.h,v 1.4 2001/02/09 02:05:15 xorgcvs Exp $ */
/***********************************************************
Copyright 1987, 1998 The Open Group
@@ -45,7 +44,6 @@ ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
SOFTWARE.
******************************************************************/
-/* $XFree86: xc/programs/Xserver/include/scrnintstr.h,v 1.12 2003/04/27 21:31:05 herrb Exp $ */
#ifndef SCREENINTSTRUCT_H
#define SCREENINTSTRUCT_H
diff --git a/include/selection.h b/include/selection.h
index 9e6edfbd9..fbe7cfca6 100644
--- a/include/selection.h
+++ b/include/selection.h
@@ -1,4 +1,3 @@
-/* $Xorg: selection.h,v 1.4 2001/02/09 02:05:16 xorgcvs Exp $ */
#ifndef SELECTION_H
#define SELECTION_H 1
diff --git a/include/servermd.h b/include/servermd.h
index 3a3bc5f65..e6ca11ed2 100644
--- a/include/servermd.h
+++ b/include/servermd.h
@@ -1,4 +1,3 @@
-/* $XFree86: xc/programs/Xserver/include/servermd.h,v 3.56tsi Exp $ */
/***********************************************************
Copyright 1987, 1998 The Open Group
@@ -45,8 +44,6 @@ ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
SOFTWARE.
******************************************************************/
-/* $Xorg: servermd.h,v 1.3 2000/08/17 19:53:31 cpqbld Exp $ */
-/* $XdotOrg: xc/programs/Xserver/include/servermd.h,v 1.4 2005/05/21 07:46:38 alanc Exp $ */
#ifndef SERVERMD_H
#define SERVERMD_H 1
diff --git a/include/site.h b/include/site.h
index be8c003da..5b9f25815 100644
--- a/include/site.h
+++ b/include/site.h
@@ -1,4 +1,3 @@
-/* $Xorg: site.h,v 1.6 2001/02/09 02:05:16 xorgcvs Exp $ */
/************************************************************
Copyright 1987, 1998 The Open Group
@@ -45,7 +44,6 @@ ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
SOFTWARE.
********************************************************/
-/* $XFree86: xc/programs/Xserver/include/site.h,v 1.8 2001/12/19 21:37:35 dawes Exp $ */
#ifndef SITE_H
#define SITE_H
diff --git a/include/swaprep.h b/include/swaprep.h
index d18b39f0c..8a9dcf036 100644
--- a/include/swaprep.h
+++ b/include/swaprep.h
@@ -1,4 +1,3 @@
-/* $XFree86: xc/programs/Xserver/include/swaprep.h,v 3.0 1996/04/15 11:34:34 dawes Exp $ */
/************************************************************
Copyright 1996 by Thomas E. Dickey <dickey@clark.net>
diff --git a/include/swapreq.h b/include/swapreq.h
index 9c59bbf84..9c785fe62 100644
--- a/include/swapreq.h
+++ b/include/swapreq.h
@@ -1,4 +1,3 @@
-/* $XFree86: xc/programs/Xserver/include/swapreq.h,v 1.3 2003/04/27 21:31:05 herrb Exp $ */
/************************************************************
Copyright 1996 by Thomas E. Dickey <dickey@clark.net>
diff --git a/include/validate.h b/include/validate.h
index 467533d22..e88fb41a2 100644
--- a/include/validate.h
+++ b/include/validate.h
@@ -1,4 +1,3 @@
-/* $Xorg: validate.h,v 1.4 2001/02/09 02:05:16 xorgcvs Exp $ */
/*
@@ -24,7 +23,6 @@ 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/include/validate.h,v 1.4 2001/01/17 22:36:58 dawes Exp $ */
#ifndef VALIDATE_H
#define VALIDATE_H
diff --git a/include/window.h b/include/window.h
index 0aeca6ef4..bddeb252b 100644
--- a/include/window.h
+++ b/include/window.h
@@ -1,4 +1,3 @@
-/* $Xorg: window.h,v 1.4 2001/02/09 02:05:16 xorgcvs Exp $ */
/***********************************************************
Copyright 1987, 1998 The Open Group
@@ -256,6 +255,8 @@ void ResizeChildrenWinSize(
int /*dw*/,
int /*dh*/);
+extern void ShapeExtensionInit(void);
+
extern void SendShapeNotify(
WindowPtr /* pWin */,
int /* which */ );
diff --git a/include/windowstr.h b/include/windowstr.h
index 89e3ee10b..a37dc6b75 100644
--- a/include/windowstr.h
+++ b/include/windowstr.h
@@ -1,4 +1,3 @@
-/* $Xorg: windowstr.h,v 1.4 2001/02/09 02:05:16 xorgcvs Exp $ */
/***********************************************************
Copyright 1987, 1998 The Open Group
@@ -45,7 +44,6 @@ ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
SOFTWARE.
******************************************************************/
-/* $XFree86: xc/programs/Xserver/include/windowstr.h,v 1.6 2001/12/14 19:59:57 dawes Exp $ */
#ifndef WINDOWSTRUCT_H
#define WINDOWSTRUCT_H
diff --git a/include/xorg-config.h.in b/include/xorg-config.h.in
index a5074f6e1..b9643a2a4 100644
--- a/include/xorg-config.h.in
+++ b/include/xorg-config.h.in
@@ -45,6 +45,9 @@
/* Path to loadable modules. */
#undef DEFAULT_MODULE_PATH
+/* Path to installed libraries. */
+#undef DEFAULT_LIBRARY_PATH
+
/* Path to server log file. */
#undef DEFAULT_LOGPREFIX
@@ -106,4 +109,10 @@
/* Has backtrace support */
#undef HAVE_BACKTRACE
+/* Name of the period field in struct kbd_repeat */
+#undef LNX_KBD_PERIOD_NAME
+
+/* Have execinfo.h */
+#undef HAVE_EXECINFO_H
+
#endif /* _XORG_CONFIG_H_ */
diff --git a/include/xorg-server.h.in b/include/xorg-server.h.in
index f31d98a77..48196d8b6 100644
--- a/include/xorg-server.h.in
+++ b/include/xorg-server.h.in
@@ -235,4 +235,7 @@
/* System has wscons console */
#undef WSCONS_SUPPORT
+/* Loadable XFree86 server awesomeness */
+#undef XFree86LOADER
+
#endif /* _XORG_SERVER_H_ */
diff --git a/mfb/Makefile.am b/mfb/Makefile.am
index f72867e22..fe0bb1c26 100644
--- a/mfb/Makefile.am
+++ b/mfb/Makefile.am
@@ -1,6 +1,6 @@
noinst_LTLIBRARIES = libmfb.la
-AM_CFLAGS = $(DIX_CFLAGS) @SERVER_DEFINES@ @MODULE_DEFINES@ @LOADER_DEFINES@
+AM_CFLAGS = $(DIX_CFLAGS)
INCLUDES = -I$(top_srcdir)/hw/xfree86/os-support
diff --git a/mfb/fastblt.h b/mfb/fastblt.h
index 08846a41f..35ba5a2a1 100644
--- a/mfb/fastblt.h
+++ b/mfb/fastblt.h
@@ -1,4 +1,3 @@
-/* $Xorg: fastblt.h,v 1.4 2001/02/09 02:05:17 xorgcvs Exp $ */
/*
Copyright 1989, 1998 The Open Group
@@ -26,7 +25,6 @@ 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
diff --git a/mfb/maskbits.c b/mfb/maskbits.c
index d2a90962d..85b5f3048 100644
--- a/mfb/maskbits.c
+++ b/mfb/maskbits.c
@@ -1,4 +1,3 @@
-/* $Xorg: maskbits.c,v 1.4 2001/02/09 02:05:17 xorgcvs Exp $ */
/* Combined Purdue/PurduePlus patches, level 2.0, 1/17/89 */
/*
@@ -48,7 +47,6 @@ 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>
diff --git a/mfb/maskbits.h b/mfb/maskbits.h
index ed5cc2687..36a611fe7 100644
--- a/mfb/maskbits.h
+++ b/mfb/maskbits.h
@@ -1,4 +1,3 @@
-/* $XFree86: xc/programs/Xserver/mfb/maskbits.h,v 3.8tsi Exp $ */
/* Combined Purdue/PurduePlus patches, level 2.1, 1/24/89 */
/***********************************************************
Copyright 1987 by Digital Equipment Corporation, Maynard, Massachusetts.
@@ -22,7 +21,6 @@ ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
SOFTWARE.
******************************************************************/
-/* $Xorg: maskbits.h,v 1.3 2000/08/17 19:53:34 cpqbld Exp $ */
#ifdef HAVE_DIX_CONFIG_H
#include <dix-config.h>
@@ -253,7 +251,7 @@ extern PixelType mfbGetmask(int);
#define BitLeft(b,s) SCRLEFT(b,s)
#define BitRight(b,s) SCRRIGHT(b,s)
-#ifdef XFree86Server
+#if 1
#define LONG2CHARSSAMEORDER(x) ((MfbBits)(x))
#define LONG2CHARSDIFFORDER( x ) ( ( ( ( x ) & (MfbBits)0x000000FF ) << 0x18 ) \
| ( ( ( x ) & (MfbBits)0x0000FF00 ) << 0x08 ) \
diff --git a/mfb/mergerop.h b/mfb/mergerop.h
index c8652eb81..b71bfcc09 100644
--- a/mfb/mergerop.h
+++ b/mfb/mergerop.h
@@ -1,5 +1,4 @@
/*
- * $Xorg: mergerop.h,v 1.4 2001/02/09 02:05:18 xorgcvs Exp $
*
Copyright 1989, 1998 The Open Group
@@ -25,7 +24,6 @@ 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>
diff --git a/mfb/mfb.h b/mfb/mfb.h
index 3135f447b..f597b16a5 100644
--- a/mfb/mfb.h
+++ b/mfb/mfb.h
@@ -1,4 +1,3 @@
-/* $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 */
/***********************************************************
@@ -46,7 +45,6 @@ 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
diff --git a/mfb/mfbbitblt.c b/mfb/mfbbitblt.c
index 58468e3e5..0f84df354 100644
--- a/mfb/mfbbitblt.c
+++ b/mfb/mfbbitblt.c
@@ -1,4 +1,3 @@
-/* $XFree86: xc/programs/Xserver/mfb/mfbbitblt.c,v 1.7tsi Exp $ */
/* Combined Purdue/PurduePlus patches, level 2.0, 1/17/89 */
/***********************************************************
@@ -46,7 +45,6 @@ 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
diff --git a/mfb/mfbblt.c b/mfb/mfbblt.c
index e66ab6090..4c3028126 100644
--- a/mfb/mfbblt.c
+++ b/mfb/mfbblt.c
@@ -1,7 +1,6 @@
/*
* mfb copy area
*/
-/* $XFree86: xc/programs/Xserver/mfb/mfbblt.c,v 3.3 2001/10/28 03:34:14 tsi Exp $ */
/*
@@ -30,7 +29,6 @@ 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>
diff --git a/mfb/mfbbres.c b/mfb/mfbbres.c
index 07c59d184..ee2f10f33 100644
--- a/mfb/mfbbres.c
+++ b/mfb/mfbbres.c
@@ -1,5 +1,4 @@
/* 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
@@ -46,7 +45,6 @@ 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
diff --git a/mfb/mfbbresd.c b/mfb/mfbbresd.c
index 266111e65..3904c0db1 100644
--- a/mfb/mfbbresd.c
+++ b/mfb/mfbbresd.c
@@ -1,4 +1,3 @@
-/* $XFree86: xc/programs/Xserver/mfb/mfbbresd.c,v 1.4 2001/01/17 22:37:02 dawes Exp $ */
/***********************************************************
Copyright 1987, 1998 The Open Group
@@ -45,7 +44,6 @@ 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
diff --git a/mfb/mfbbstore.c b/mfb/mfbbstore.c
index 270aa78fd..784df4e84 100644
--- a/mfb/mfbbstore.c
+++ b/mfb/mfbbstore.c
@@ -1,4 +1,3 @@
-/* $Xorg: mfbbstore.c,v 1.4 2001/02/09 02:05:18 xorgcvs Exp $ */
/* Combined Purdue/PurduePlus patches, level 2.0, 1/17/89 */
/*
diff --git a/mfb/mfbclip.c b/mfb/mfbclip.c
index 2b8a9cea2..48e532aa8 100644
--- a/mfb/mfbclip.c
+++ b/mfb/mfbclip.c
@@ -1,4 +1,3 @@
-/* $XFree86: xc/programs/Xserver/mfb/mfbclip.c,v 1.5 2001/12/14 20:00:05 dawes Exp $ */
/***********************************************************
Copyright 1987, 1998 The Open Group
@@ -45,7 +44,6 @@ 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
diff --git a/mfb/mfbcmap.c b/mfb/mfbcmap.c
index a16964e15..4dabcae1a 100644
--- a/mfb/mfbcmap.c
+++ b/mfb/mfbcmap.c
@@ -1,4 +1,3 @@
-/* $XFree86: xc/programs/Xserver/mfb/mfbcmap.c,v 1.7tsi Exp $ */
/***********************************************************
Copyright 1987, 1998 The Open Group
@@ -45,7 +44,6 @@ 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
diff --git a/mfb/mfbfillarc.c b/mfb/mfbfillarc.c
index ffa948fe1..30ec00dc3 100644
--- a/mfb/mfbfillarc.c
+++ b/mfb/mfbfillarc.c
@@ -1,4 +1,3 @@
-/* $XFree86: xc/programs/Xserver/mfb/mfbfillarc.c,v 1.5 2001/12/14 20:00:06 dawes Exp $ */
/************************************************************
Copyright 1989, 1998 The Open Group
@@ -25,7 +24,6 @@ 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>
diff --git a/mfb/mfbfillrct.c b/mfb/mfbfillrct.c
index ba8a14283..f9209d096 100644
--- a/mfb/mfbfillrct.c
+++ b/mfb/mfbfillrct.c
@@ -1,4 +1,3 @@
-/* $XFree86: xc/programs/Xserver/mfb/mfbfillrct.c,v 1.5tsi Exp $ */
/* Combined Purdue/PurduePlus patches, level 2.0, 1/17/89 */
/***********************************************************
@@ -46,7 +45,6 @@ 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
diff --git a/mfb/mfbfillsp.c b/mfb/mfbfillsp.c
index f75ccb18d..112f5327c 100644
--- a/mfb/mfbfillsp.c
+++ b/mfb/mfbfillsp.c
@@ -1,4 +1,3 @@
-/* $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 */
/***********************************************************
@@ -46,7 +45,6 @@ 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
diff --git a/mfb/mfbfont.c b/mfb/mfbfont.c
index 3798cd22b..672b5d958 100644
--- a/mfb/mfbfont.c
+++ b/mfb/mfbfont.c
@@ -44,7 +44,6 @@ 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
diff --git a/mfb/mfbgc.c b/mfb/mfbgc.c
index dd20a9a36..c60e97676 100644
--- a/mfb/mfbgc.c
+++ b/mfb/mfbgc.c
@@ -1,4 +1,3 @@
-/* $XFree86: xc/programs/Xserver/mfb/mfbgc.c,v 1.9 2003/07/16 01:38:55 dawes Exp $ */
/***********************************************************
Copyright 1987, 1998 The Open Group
@@ -45,7 +44,6 @@ 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
diff --git a/mfb/mfbgetsp.c b/mfb/mfbgetsp.c
index c1017e177..befe57a1f 100644
--- a/mfb/mfbgetsp.c
+++ b/mfb/mfbgetsp.c
@@ -1,4 +1,3 @@
-/* $XFree86: xc/programs/Xserver/mfb/mfbgetsp.c,v 1.3tsi Exp $ */
/* Combined Purdue/PurduePlus patches, level 2.0, 1/17/89 */
/***********************************************************
@@ -46,7 +45,6 @@ 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
diff --git a/mfb/mfbhrzvert.c b/mfb/mfbhrzvert.c
index 9a9d20dac..7616f9bf2 100644
--- a/mfb/mfbhrzvert.c
+++ b/mfb/mfbhrzvert.c
@@ -1,4 +1,3 @@
-/* $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 */
/***********************************************************
@@ -46,7 +45,6 @@ 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
diff --git a/mfb/mfbimage.c b/mfb/mfbimage.c
index e2d2438c5..8861865a6 100644
--- a/mfb/mfbimage.c
+++ b/mfb/mfbimage.c
@@ -1,4 +1,3 @@
-/* $XFree86: xc/programs/Xserver/mfb/mfbimage.c,v 1.5 2001/01/17 22:37:03 dawes Exp $ */
/***********************************************************
Copyright 1987, 1998 The Open Group
@@ -45,7 +44,6 @@ 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>
diff --git a/mfb/mfbimggblt.c b/mfb/mfbimggblt.c
index 0c0d4140c..e5c186b89 100644
--- a/mfb/mfbimggblt.c
+++ b/mfb/mfbimggblt.c
@@ -1,4 +1,3 @@
-/* $XFree86: xc/programs/Xserver/mfb/mfbimggblt.c,v 3.5tsi Exp $ */
/* Combined Purdue/PurduePlus patches, level 2.0, 1/17/89 */
/***********************************************************
@@ -46,7 +45,6 @@ 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
diff --git a/mfb/mfbline.c b/mfb/mfbline.c
index 465dfd36e..863a6187b 100644
--- a/mfb/mfbline.c
+++ b/mfb/mfbline.c
@@ -1,4 +1,3 @@
-/* $XFree86: xc/programs/Xserver/mfb/mfbline.c,v 1.6 2001/01/17 22:37:03 dawes Exp $ */
/***********************************************************
Copyright 1987, 1998 The Open Group
@@ -45,7 +44,6 @@ 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
diff --git a/mfb/mfbmisc.c b/mfb/mfbmisc.c
index 19ab3fa75..5154e2784 100644
--- a/mfb/mfbmisc.c
+++ b/mfb/mfbmisc.c
@@ -44,7 +44,6 @@ 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
diff --git a/mfb/mfbpixmap.c b/mfb/mfbpixmap.c
index 29dcf3d33..5ec8502cb 100644
--- a/mfb/mfbpixmap.c
+++ b/mfb/mfbpixmap.c
@@ -44,7 +44,6 @@ 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
diff --git a/mfb/mfbply1rct.c b/mfb/mfbply1rct.c
index 83e59cff6..4227e894f 100644
--- a/mfb/mfbply1rct.c
+++ b/mfb/mfbply1rct.c
@@ -1,5 +1,4 @@
/*
- * $Xorg: mfbply1rct.c,v 1.4 2001/02/09 02:05:19 xorgcvs Exp $
*
Copyright 1990, 1998 The Open Group
@@ -26,7 +25,6 @@ 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>
diff --git a/mfb/mfbplygblt.c b/mfb/mfbplygblt.c
index 275e8c646..997e4a388 100644
--- a/mfb/mfbplygblt.c
+++ b/mfb/mfbplygblt.c
@@ -1,4 +1,3 @@
-/* $XFree86: xc/programs/Xserver/mfb/mfbplygblt.c,v 3.4tsi Exp $ */
/***********************************************************
Copyright 1987, 1998 The Open Group
@@ -45,7 +44,6 @@ 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>
diff --git a/mfb/mfbpntarea.c b/mfb/mfbpntarea.c
index 0719e4ebd..2906e660c 100644
--- a/mfb/mfbpntarea.c
+++ b/mfb/mfbpntarea.c
@@ -45,7 +45,6 @@ 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
diff --git a/mfb/mfbpntwin.c b/mfb/mfbpntwin.c
index d1c19b691..b18797a40 100644
--- a/mfb/mfbpntwin.c
+++ b/mfb/mfbpntwin.c
@@ -1,4 +1,3 @@
-/* $Xorg: mfbpntwin.c,v 1.4 2001/02/09 02:05:19 xorgcvs Exp $ */
/* Combined Purdue/PurduePlus patches, level 2.0, 1/17/89 */
/***********************************************************
diff --git a/mfb/mfbpolypnt.c b/mfb/mfbpolypnt.c
index e5ac4c874..1c4045126 100644
--- a/mfb/mfbpolypnt.c
+++ b/mfb/mfbpolypnt.c
@@ -1,4 +1,3 @@
-/* $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 */
/***********************************************************
@@ -46,7 +45,6 @@ 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>
diff --git a/mfb/mfbpushpxl.c b/mfb/mfbpushpxl.c
index 49211e6b7..ddf7b3c0e 100644
--- a/mfb/mfbpushpxl.c
+++ b/mfb/mfbpushpxl.c
@@ -1,4 +1,3 @@
-/* $XFree86: xc/programs/Xserver/mfb/mfbpushpxl.c,v 1.6tsi Exp $ */
/***********************************************************
Copyright 1987, 1998 The Open Group
@@ -45,7 +44,6 @@ 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>
diff --git a/mfb/mfbscrclse.c b/mfb/mfbscrclse.c
index 55445932c..97ca729fb 100644
--- a/mfb/mfbscrclse.c
+++ b/mfb/mfbscrclse.c
@@ -1,4 +1,3 @@
-/* $Xorg: mfbscrclse.c,v 1.4 2001/02/09 02:05:19 xorgcvs Exp $ */
/***********************************************************
Copyright 1987, 1998 The Open Group
@@ -45,7 +44,6 @@ 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>
diff --git a/mfb/mfbscrinit.c b/mfb/mfbscrinit.c
index db48c9c10..0707c1a74 100644
--- a/mfb/mfbscrinit.c
+++ b/mfb/mfbscrinit.c
@@ -1,4 +1,3 @@
-/* $XFree86: xc/programs/Xserver/mfb/mfbscrinit.c,v 3.8tsi Exp $ */
/***********************************************************
Copyright 1987, 1998 The Open Group
@@ -45,7 +44,6 @@ 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>
diff --git a/mfb/mfbsetsp.c b/mfb/mfbsetsp.c
index 485b4e265..24add836c 100644
--- a/mfb/mfbsetsp.c
+++ b/mfb/mfbsetsp.c
@@ -1,4 +1,3 @@
-/* $XFree86: xc/programs/Xserver/mfb/mfbsetsp.c,v 1.6tsi Exp $ */
/* Combined Purdue/PurduePlus patches, level 2.0, 1/17/89 */
/***********************************************************
@@ -46,7 +45,6 @@ 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>
diff --git a/mfb/mfbtegblt.c b/mfb/mfbtegblt.c
index ac22aee0c..ff52d8c9e 100644
--- a/mfb/mfbtegblt.c
+++ b/mfb/mfbtegblt.c
@@ -1,4 +1,3 @@
-/* $Xorg: mfbtegblt.c,v 1.4 2001/02/09 02:05:19 xorgcvs Exp $ */
/* Combined Purdue/PurduePlus patches, level 2.0, 1/17/89 */
/***********************************************************
@@ -47,7 +46,6 @@ 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>
diff --git a/mfb/mfbtile.c b/mfb/mfbtile.c
index ecfa06952..73015f57d 100644
--- a/mfb/mfbtile.c
+++ b/mfb/mfbtile.c
@@ -1,4 +1,3 @@
-/* $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 */
/***********************************************************
@@ -46,7 +45,6 @@ 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
diff --git a/mfb/mfbwindow.c b/mfb/mfbwindow.c
index ccc07df1d..f65f45ebd 100644
--- a/mfb/mfbwindow.c
+++ b/mfb/mfbwindow.c
@@ -1,4 +1,3 @@
-/* $Xorg: mfbwindow.c,v 1.4 2001/02/09 02:05:19 xorgcvs Exp $ */
/* Combined Purdue/PurduePlus patches, level 2.0, 1/17/89 */
/***********************************************************
diff --git a/mfb/mfbzerarc.c b/mfb/mfbzerarc.c
index 9fd4c07a2..964e2f100 100644
--- a/mfb/mfbzerarc.c
+++ b/mfb/mfbzerarc.c
@@ -1,4 +1,3 @@
-/* $XFree86: xc/programs/Xserver/mfb/mfbzerarc.c,v 3.7 2002/09/27 01:57:47 dawes Exp $ */
/************************************************************
Copyright 1989, 1998 The Open Group
@@ -25,7 +24,6 @@ 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"
diff --git a/mi/Makefile.am b/mi/Makefile.am
index c77eac709..42f75ae73 100644
--- a/mi/Makefile.am
+++ b/mi/Makefile.am
@@ -6,7 +6,7 @@ sdk_HEADERS = mibank.h micmap.h miline.h mipointer.h mi.h mibstore.h \
mispans.h miwideline.h mistruct.h mifpoly.h
endif
-AM_CFLAGS = $(DIX_CFLAGS) @SERVER_DEFINES@ @LOADER_DEFINES@
+AM_CFLAGS = $(DIX_CFLAGS)
# libminimi is for dmx - it has different defines for miinitext.c
libminimi_la_SOURCES = \
diff --git a/mi/cbrt.c b/mi/cbrt.c
index cfc8d84da..c703fd9d2 100644
--- a/mi/cbrt.c
+++ b/mi/cbrt.c
@@ -1,4 +1,3 @@
-/* $Xorg: cbrt.c,v 1.4 2001/02/09 02:05:19 xorgcvs Exp $ */
/*
Copyright 1990, 1998 The Open Group
@@ -26,7 +25,6 @@ other dealings in this Software without prior written authorization
from The Open Group.
*/
-/* $XFree86: xc/programs/Xserver/mi/cbrt.c,v 3.3 2001/05/29 22:24:06 dawes Exp $ */
/* simple cbrt, in case your math library doesn't have a good one */
diff --git a/mi/mi.h b/mi/mi.h
index 2de523372..8d9d120bd 100644
--- a/mi/mi.h
+++ b/mi/mi.h
@@ -1,4 +1,3 @@
-/* $Xorg: mi.h,v 1.4 2001/02/09 02:05:20 xorgcvs Exp $ */
/***********************************************************
Copyright 1987, 1998 The Open Group
@@ -45,7 +44,6 @@ ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
SOFTWARE.
******************************************************************/
-/* $XFree86: xc/programs/Xserver/mi/mi.h,v 3.9 2001/08/06 20:51:16 dawes Exp $ */
#ifndef MI_H
#define MI_H
@@ -171,11 +169,11 @@ typedef struct _DeviceRec *DevicePtr;
#endif
extern Bool mieqInit(
- DevicePtr /*pKbd*/,
- DevicePtr /*pPtr*/
+ void
);
extern void mieqEnqueue(
+ DeviceIntPtr /*pDev*/,
xEventPtr /*e*/
);
diff --git a/mi/miarc.c b/mi/miarc.c
index f6abb3ba2..2b3a0cbbc 100644
--- a/mi/miarc.c
+++ b/mi/miarc.c
@@ -1,5 +1,3 @@
-/* $XdotOrg: xserver/xorg/mi/miarc.c,v 1.7 2006/02/15 19:05:54 ajax Exp $ */
-/* $XFree86: xc/programs/Xserver/mi/miarc.c,v 3.14 2003/10/29 22:57:48 tsi Exp $ */
/***********************************************************
Copyright 1987, 1998 The Open Group
@@ -46,7 +44,6 @@ ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
SOFTWARE.
******************************************************************/
-/* $Xorg: miarc.c,v 1.4 2001/02/09 02:05:20 xorgcvs Exp $ */
/* Author: Keith Packard and Bob Scheifler */
/* Warning: this code is toxic, do not dally very long here. */
diff --git a/mi/mibank.c b/mi/mibank.c
index d7cf94b49..32e963fab 100644
--- a/mi/mibank.c
+++ b/mi/mibank.c
@@ -44,7 +44,6 @@
* CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
*/
-/* $XFree86: xc/programs/Xserver/mi/mibank.c,v 1.15 2003/11/10 18:39:16 tsi Exp $ */
/*
* This thing originated from an idea of Edwin Goei and his bank switching
diff --git a/mi/mibank.h b/mi/mibank.h
index cf27d1fae..fe93ab41b 100644
--- a/mi/mibank.h
+++ b/mi/mibank.h
@@ -20,7 +20,6 @@
* PERFORMANCE OF THIS SOFTWARE.
*/
-/* $XFree86: xc/programs/Xserver/mi/mibank.h,v 1.10 2003/01/01 19:16:42 tsi Exp $ */
#ifndef __MIBANK_H__
#define __MIBANK_H__ 1
diff --git a/mi/mibitblt.c b/mi/mibitblt.c
index b7fb4cc5d..bf0e29ac0 100644
--- a/mi/mibitblt.c
+++ b/mi/mibitblt.c
@@ -1,4 +1,3 @@
-/* $XFree86: xc/programs/Xserver/mi/mibitblt.c,v 3.10 2001/08/06 20:51:17 dawes Exp $ */
/***********************************************************
Copyright 1987, 1998 The Open Group
@@ -45,7 +44,6 @@ ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
SOFTWARE.
******************************************************************/
-/* $Xorg: mibitblt.c,v 1.5 2001/02/09 02:05:20 xorgcvs Exp $ */
/* Author: Todd Newman (aided and abetted by Mr. Drewry) */
#ifdef HAVE_DIX_CONFIG_H
@@ -360,7 +358,7 @@ miGetPlane(
* Now get the bit and insert into a bitmap in XY format.
*/
bit = (pixel >> planeNum) & 1;
-#ifndef XFree86Server
+#if 0
/* XXX assuming bit order == byte order */
#if BITMAP_BIT_ORDER == LSBFirst
bit <<= k;
diff --git a/mi/mibstore.c b/mi/mibstore.c
index b13ab4fc1..6653c2345 100644
--- a/mi/mibstore.c
+++ b/mi/mibstore.c
@@ -1,4 +1,3 @@
-/* $Xorg: mibstore.c,v 1.4 2001/02/09 02:05:20 xorgcvs Exp $ */
/***********************************************************
Copyright 1987, 1998 The Open Group
@@ -42,7 +41,6 @@ implied warranty.
******************************************************************/
-/* $XFree86: xc/programs/Xserver/mi/mibstore.c,v 1.10tsi Exp $ */
#define NEED_EVENTS
#ifdef HAVE_DIX_CONFIG_H
diff --git a/mi/mibstore.h b/mi/mibstore.h
index fb58975c6..23abde26e 100644
--- a/mi/mibstore.h
+++ b/mi/mibstore.h
@@ -12,11 +12,9 @@
* software for any purpose. It is provided "as is" without
* express or implied warranty.
*
- * "$Xorg: mibstore.h,v 1.3 2000/08/17 19:53:37 cpqbld Exp $
*/
-/* $XFree86: xc/programs/Xserver/mi/mibstore.h,v 1.4 2001/01/17 22:37:06 dawes Exp $ */
#ifndef _MIBSTORE_H
#define _MIBSTORE_H
diff --git a/mi/mibstorest.h b/mi/mibstorest.h
index 787b9d4f4..ccf4fb701 100644
--- a/mi/mibstorest.h
+++ b/mi/mibstorest.h
@@ -4,7 +4,6 @@
* internal structure definitions for mi backing store
*/
-/* $Xorg: mibstorest.h,v 1.4 2001/02/09 02:05:20 xorgcvs Exp $ */
/*
@@ -31,7 +30,6 @@ 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/mi/mibstorest.h,v 1.4 2001/01/17 22:37:06 dawes Exp $ */
#ifdef HAVE_DIX_CONFIG_H
#include <dix-config.h>
diff --git a/mi/micmap.c b/mi/micmap.c
index 0e94606b9..987affe96 100644
--- a/mi/micmap.c
+++ b/mi/micmap.c
@@ -1,4 +1,3 @@
-/* $XConsortium: cfbcmap.c,v 4.19 94/04/17 20:28:46 dpw Exp $ */
/************************************************************
Copyright 1987 by Sun Microsystems, Inc. Mountain View, CA.
@@ -27,7 +26,6 @@ OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH
THE USE OR PERFORMANCE OF THIS SOFTWARE.
********************************************************/
-/* $XFree86: xc/programs/Xserver/mi/micmap.c,v 1.10 2000/09/20 00:09:14 keithp Exp $ */
/*
* This is based on cfbcmap.c. The functions here are useful independently
diff --git a/mi/micmap.h b/mi/micmap.h
index ca2a417be..9ee9f4ae4 100644
--- a/mi/micmap.h
+++ b/mi/micmap.h
@@ -1,4 +1,3 @@
-/* $XFree86: xc/programs/Xserver/mi/micmap.h,v 1.5 1999/06/14 07:32:11 dawes Exp $ */
#include "colormapst.h"
diff --git a/mi/micoord.h b/mi/micoord.h
index e4b242475..b3d725b73 100644
--- a/mi/micoord.h
+++ b/mi/micoord.h
@@ -1,4 +1,3 @@
-/* $XFree86: xc/programs/Xserver/mi/micoord.h,v 1.7 2003/10/29 22:57:48 tsi Exp $ */
/*
* Copyright (C) 2000 The XFree86 Project, Inc. All Rights Reserved.
*
diff --git a/mi/micursor.c b/mi/micursor.c
index 2868966e6..6e06fbc07 100644
--- a/mi/micursor.c
+++ b/mi/micursor.c
@@ -1,4 +1,3 @@
-/* $XFree86: xc/programs/Xserver/mi/micursor.c,v 1.2 2001/05/29 22:24:06 dawes Exp $ */
/***********************************************************
Copyright 1987, 1998 The Open Group
@@ -45,7 +44,6 @@ ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
SOFTWARE.
******************************************************************/
-/* $Xorg: micursor.c,v 1.4 2001/02/09 02:05:20 xorgcvs Exp $ */
#ifdef HAVE_DIX_CONFIG_H
#include <dix-config.h>
#endif
diff --git a/mi/midash.c b/mi/midash.c
index 7948a48ce..6dd161a39 100644
--- a/mi/midash.c
+++ b/mi/midash.c
@@ -1,4 +1,3 @@
-/* $XFree86: xc/programs/Xserver/mi/midash.c,v 1.4 2001/12/14 20:00:21 dawes Exp $ */
/***********************************************************
Copyright 1987, 1998 The Open Group
@@ -45,7 +44,6 @@ ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
SOFTWARE.
******************************************************************/
-/* $Xorg: midash.c,v 1.4 2001/02/09 02:05:20 xorgcvs Exp $ */
#ifdef HAVE_DIX_CONFIG_H
#include <dix-config.h>
#endif
diff --git a/mi/midispcur.c b/mi/midispcur.c
index 597d27289..de009cbaf 100644
--- a/mi/midispcur.c
+++ b/mi/midispcur.c
@@ -4,7 +4,6 @@
* machine independent cursor display routines
*/
-/* $Xorg: midispcur.c,v 1.4 2001/02/09 02:05:20 xorgcvs Exp $ */
/*
@@ -30,7 +29,6 @@ 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/mi/midispcur.c,v 1.9 2002/12/09 04:10:57 tsi Exp $ */
#ifdef HAVE_DIX_CONFIG_H
#include <dix-config.h>
diff --git a/mi/mieq.c b/mi/mieq.c
index 37662625e..80915fd73 100644
--- a/mi/mieq.c
+++ b/mi/mieq.c
@@ -1,5 +1,4 @@
/*
- * $Xorg: mieq.c,v 1.4 2001/02/09 02:05:20 xorgcvs Exp $
*
Copyright 1990, 1998 The Open Group
@@ -25,7 +24,6 @@ in this Software without prior written authorization from The Open Group.
*
* Author: Keith Packard, MIT X Consortium
*/
-/* $XFree86: xc/programs/Xserver/mi/mieq.c,v 1.2 2001/05/25 18:41:01 dawes Exp $ */
/*
* mieq.c
@@ -34,6 +32,10 @@ in this Software without prior written authorization from The Open Group.
*
*/
+#if HAVE_DIX_CONFIG_H
+#include <dix-config.h>
+#endif
+
# define NEED_EVENTS
# include <X11/X.h>
# include <X11/Xmd.h>
@@ -43,39 +45,42 @@ in this Software without prior written authorization from The Open Group.
# include "pixmapstr.h"
# include "inputstr.h"
# include "mi.h"
+# include "mipointer.h"
# include "scrnintstr.h"
+# include <X11/extensions/XI.h>
+# include <X11/extensions/XIproto.h>
+# include "extinit.h"
+# include "exglobals.h"
#define QUEUE_SIZE 256
typedef struct _Event {
- xEvent event;
- ScreenPtr pScreen;
+ xEvent event[7];
+ int nevents;
+ ScreenPtr pScreen;
+ DeviceIntPtr pDev; /* device this event _originated_ from */
} 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 */
+ HWEventQueueType head, tail; /* long for SetInputCheck */
+ CARD32 lastEventTime; /* to avoid time running backwards */
+ int lastMotion; /* device ID if last event motion? */
+ EventRec events[QUEUE_SIZE]; /* static allocation for signals */
+ ScreenPtr pEnqueueScreen; /* screen events are being delivered to */
+ ScreenPtr pDequeueScreen; /* screen events are being dispatched to */
} EventQueueRec, *EventQueuePtr;
static EventQueueRec miEventQueue;
Bool
-mieqInit (pKbd, pPtr)
- DevicePtr pKbd, pPtr;
+mieqInit()
{
miEventQueue.head = miEventQueue.tail = 0;
miEventQueue.lastEventTime = GetTimeInMillis ();
- miEventQueue.pKbd = pKbd;
- miEventQueue.pPtr = pPtr;
miEventQueue.lastMotion = FALSE;
miEventQueue.pEnqueueScreen = screenInfo.screens[0];
miEventQueue.pDequeueScreen = miEventQueue.pEnqueueScreen;
- SetInputCheck (&miEventQueue.head, &miEventQueue.tail);
+ SetInputCheck(&miEventQueue.head, &miEventQueue.tail);
return TRUE;
}
@@ -87,106 +92,134 @@ mieqInit (pKbd, pPtr)
*/
void
-mieqEnqueue (e)
- xEvent *e;
+mieqEnqueue(DeviceIntPtr pDev, xEvent *e)
{
- HWEventQueueType oldtail, newtail;
- Bool isMotion;
+ HWEventQueueType oldtail = miEventQueue.tail, newtail;
+ int isMotion = 0;
+ deviceValuator *v = (deviceValuator *) e;
+ EventPtr laste = &miEventQueue.events[oldtail - 1];
+ deviceKeyButtonPointer *lastkbp = (deviceKeyButtonPointer *)
+ &laste->event[0];
+
+ if (e->u.u.type == MotionNotify)
+ isMotion = inputInfo.pointer->id;
+ else if (e->u.u.type == DeviceMotionNotify)
+ isMotion = pDev->id;
+
+ /* We silently steal valuator events: just tack them on to the last
+ * motion event they need to be attached to. Sigh. */
+ if (e->u.u.type == DeviceValuator) {
+ if (laste->nevents > 6) {
+ ErrorF("mieqEnqueue: more than six valuator events; dropping.\n");
+ return;
+ }
+ if (oldtail == miEventQueue.head ||
+ !(lastkbp->type == DeviceMotionNotify ||
+ lastkbp->type == DeviceButtonPress ||
+ lastkbp->type == DeviceButtonRelease) ||
+ ((lastkbp->deviceid & DEVICE_BITS) !=
+ (v->deviceid & DEVICE_BITS))) {
+ ErrorF("mieqEnequeue: out-of-order valuator event; dropping.\n");
+ return;
+ }
+ memcpy(&(laste->event[laste->nevents++]), e, sizeof(xEvent));
+ return;
+ }
- oldtail = miEventQueue.tail;
- isMotion = e->u.u.type == MotionNotify;
- if (isMotion && miEventQueue.lastMotion && oldtail != miEventQueue.head)
- {
+ if (isMotion && isMotion == miEventQueue.lastMotion &&
+ oldtail != miEventQueue.head) {
if (oldtail == 0)
oldtail = QUEUE_SIZE;
oldtail = oldtail - 1;
}
- else
- {
+ else {
newtail = oldtail + 1;
if (newtail == QUEUE_SIZE)
newtail = 0;
- /* Toss events which come in late */
- if (newtail == miEventQueue.head)
+ /* Toss events which come in late. Usually this means your server's
+ * stuck in an infinite loop somewhere, but SIGIO is still getting
+ * handled. */
+ if (newtail == miEventQueue.head) {
+ ErrorF("tossed event which came in late\n");
return;
+ }
miEventQueue.tail = newtail;
}
- miEventQueue.lastMotion = isMotion;
- miEventQueue.events[oldtail].event = *e;
- /*
- * Make sure that event times don't go backwards - this
- * is "unnecessary", but very useful
- */
+
+ memcpy(&(miEventQueue.events[oldtail].event[0]), e, sizeof(xEvent));
+ miEventQueue.events[oldtail].nevents = 1;
+
+ /* Make sure that event times don't go backwards - this
+ * is "unnecessary", but very useful. */
if (e->u.keyButtonPointer.time < miEventQueue.lastEventTime &&
miEventQueue.lastEventTime - e->u.keyButtonPointer.time < 10000)
- {
- miEventQueue.events[oldtail].event.u.keyButtonPointer.time =
+ miEventQueue.events[oldtail].event[0].u.keyButtonPointer.time =
miEventQueue.lastEventTime;
- }
+
miEventQueue.lastEventTime =
- miEventQueue.events[oldtail].event.u.keyButtonPointer.time;
+ miEventQueue.events[oldtail].event[0].u.keyButtonPointer.time;
miEventQueue.events[oldtail].pScreen = miEventQueue.pEnqueueScreen;
+ miEventQueue.events[oldtail].pDev = pDev;
+
+ miEventQueue.lastMotion = isMotion;
}
void
-mieqSwitchScreen (pScreen, fromDIX)
- ScreenPtr pScreen;
- Bool fromDIX;
+mieqSwitchScreen(ScreenPtr pScreen, Bool fromDIX)
{
miEventQueue.pEnqueueScreen = pScreen;
if (fromDIX)
miEventQueue.pDequeueScreen = pScreen;
}
-/*
- * Call this from ProcessInputEvents()
- */
-
-void mieqProcessInputEvents ()
+/* Call this from ProcessInputEvents(). */
+void
+mieqProcessInputEvents()
{
- EventRec *e;
- int x, y;
- xEvent xe;
-
- while (miEventQueue.head != miEventQueue.tail)
- {
- if (screenIsSaved == SCREEN_SAVER_ON)
- SaveScreens (SCREEN_SAVER_OFF, ScreenSaverReset);
-
- e = &miEventQueue.events[miEventQueue.head];
- /*
- * Assumption - screen switching can only occur on motion events
- */
- if (e->pScreen != miEventQueue.pDequeueScreen)
- {
- miEventQueue.pDequeueScreen = e->pScreen;
- x = e->event.u.keyButtonPointer.rootX;
- y = e->event.u.keyButtonPointer.rootY;
- if (miEventQueue.head == QUEUE_SIZE - 1)
- miEventQueue.head = 0;
- else
- ++miEventQueue.head;
- NewCurrentScreen (miEventQueue.pDequeueScreen, x, y);
- }
- else
- {
- xe = e->event;
- if (miEventQueue.head == QUEUE_SIZE - 1)
- miEventQueue.head = 0;
- else
- ++miEventQueue.head;
- switch (xe.u.u.type)
- {
- case KeyPress:
- case KeyRelease:
- (*miEventQueue.pKbd->processInputProc)
- (&xe, (DeviceIntPtr)miEventQueue.pKbd, 1);
- break;
- default:
- (*miEventQueue.pPtr->processInputProc)
- (&xe, (DeviceIntPtr)miEventQueue.pPtr, 1);
- break;
- }
- }
+ EventRec *e = NULL;
+ int x = 0, y = 0;
+ DeviceIntPtr dev = NULL;
+
+ while (miEventQueue.head != miEventQueue.tail) {
+ if (screenIsSaved == SCREEN_SAVER_ON)
+ SaveScreens (SCREEN_SAVER_OFF, ScreenSaverReset);
+
+ e = &miEventQueue.events[miEventQueue.head];
+ /* Assumption - screen switching can only occur on motion events. */
+ if (e->pScreen != miEventQueue.pDequeueScreen) {
+ miEventQueue.pDequeueScreen = e->pScreen;
+ x = e->event[0].u.keyButtonPointer.rootX;
+ y = e->event[0].u.keyButtonPointer.rootY;
+ if (miEventQueue.head == QUEUE_SIZE - 1)
+ miEventQueue.head = 0;
+ else
+ ++miEventQueue.head;
+ NewCurrentScreen (miEventQueue.pDequeueScreen, x, y);
+ }
+ else {
+ if (miEventQueue.head == QUEUE_SIZE - 1)
+ miEventQueue.head = 0;
+ else
+ ++miEventQueue.head;
+
+ /* If this is a core event, make sure our keymap, et al, is
+ * changed to suit. */
+ if (e->event[0].u.u.type == KeyPress ||
+ e->event[0].u.u.type == KeyRelease) {
+ SwitchCoreKeyboard(e->pDev);
+ dev = inputInfo.keyboard;
+ }
+ else if (e->event[0].u.u.type == MotionNotify ||
+ e->event[0].u.u.type == ButtonPress ||
+ e->event[0].u.u.type == ButtonRelease) {
+ SwitchCorePointer(e->pDev);
+ dev = inputInfo.pointer;
+ }
+ else {
+ dev = e->pDev;
+ }
+
+ dev->public.processInputProc(e->event, dev, e->nevents);
+ }
}
}
diff --git a/mi/miexpose.c b/mi/miexpose.c
index 85fefb21f..1ca5fc965 100644
--- a/mi/miexpose.c
+++ b/mi/miexpose.c
@@ -1,5 +1,3 @@
-/* $XdotOrg: xserver/xorg/mi/miexpose.c,v 1.6 2005/07/03 08:53:51 daniels Exp $ */
-/* $XFree86: xc/programs/Xserver/mi/miexpose.c,v 3.9tsi Exp $ */
/***********************************************************
Copyright 1987, 1998 The Open Group
@@ -74,7 +72,6 @@ Equipment Corporation.
******************************************************************/
-/* $Xorg: miexpose.c,v 1.4 2001/02/09 02:05:20 xorgcvs Exp $ */
#ifdef HAVE_DIX_CONFIG_H
#include <dix-config.h>
diff --git a/mi/mifillarc.c b/mi/mifillarc.c
index 323cd0e76..66063166a 100644
--- a/mi/mifillarc.c
+++ b/mi/mifillarc.c
@@ -1,4 +1,3 @@
-/* $XFree86: xc/programs/Xserver/mi/mifillarc.c,v 3.7 2001/12/14 20:00:22 dawes Exp $ */
/************************************************************
Copyright 1989, 1998 The Open Group
@@ -27,7 +26,6 @@ Author: Bob Scheifler, MIT X Consortium
********************************************************/
-/* $Xorg: mifillarc.c,v 1.4 2001/02/09 02:05:20 xorgcvs Exp $ */
#ifdef HAVE_DIX_CONFIG_H
#include <dix-config.h>
diff --git a/mi/mifillarc.h b/mi/mifillarc.h
index ff39bac1d..53f6f23ea 100644
--- a/mi/mifillarc.h
+++ b/mi/mifillarc.h
@@ -1,4 +1,3 @@
-/* $XFree86: xc/programs/Xserver/mi/mifillarc.h,v 3.6 2001/10/25 12:03:47 alanh Exp $ */
/************************************************************
Copyright 1989, 1998 The Open Group
@@ -25,7 +24,6 @@ in this Software without prior written authorization from The Open Group.
********************************************************/
-/* $Xorg: mifillarc.h,v 1.4 2001/02/09 02:05:20 xorgcvs Exp $ */
#ifndef __MIFILLARC_H__
#define __MIFILLARC_H__
diff --git a/mi/mifillrct.c b/mi/mifillrct.c
index ce4b0e57b..78e89d69c 100644
--- a/mi/mifillrct.c
+++ b/mi/mifillrct.c
@@ -1,4 +1,3 @@
-/* $XFree86: xc/programs/Xserver/mi/mifillrct.c,v 1.2 2001/05/29 22:24:06 dawes Exp $ */
/***********************************************************
Copyright 1987, 1998 The Open Group
@@ -45,7 +44,6 @@ ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
SOFTWARE.
******************************************************************/
-/* $Xorg: mifillrct.c,v 1.4 2001/02/09 02:05:20 xorgcvs Exp $ */
#ifdef HAVE_DIX_CONFIG_H
#include <dix-config.h>
diff --git a/mi/mifpoly.h b/mi/mifpoly.h
index 79f606b4d..8f0507601 100644
--- a/mi/mifpoly.h
+++ b/mi/mifpoly.h
@@ -1,4 +1,3 @@
-/* $Xorg: mifpoly.h,v 1.4 2001/02/09 02:05:20 xorgcvs Exp $ */
/***********************************************************
Copyright 1987, 1998 The Open Group
@@ -45,7 +44,6 @@ ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
SOFTWARE.
******************************************************************/
-/* $XFree86: xc/programs/Xserver/mi/mifpoly.h,v 1.3 2001/10/25 12:03:47 alanh Exp $ */
#ifndef __MIFPOLY_H__
#define __MIFPOLY_H__
diff --git a/mi/mifpolycon.c b/mi/mifpolycon.c
index 40b83586f..57229f639 100644
--- a/mi/mifpolycon.c
+++ b/mi/mifpolycon.c
@@ -1,4 +1,3 @@
-/* $XFree86: xc/programs/Xserver/mi/mifpolycon.c,v 1.2 2001/08/06 20:51:18 dawes Exp $ */
/***********************************************************
Copyright 1987, 1998 The Open Group
@@ -45,7 +44,6 @@ ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
SOFTWARE.
******************************************************************/
-/* $Xorg: mifpolycon.c,v 1.4 2001/02/09 02:05:21 xorgcvs Exp $ */
#ifdef HAVE_DIX_CONFIG_H
#include <dix-config.h>
#endif
diff --git a/mi/migc.c b/mi/migc.c
index b6c7c770e..46643ab26 100644
--- a/mi/migc.c
+++ b/mi/migc.c
@@ -1,4 +1,3 @@
-/* $Xorg: migc.c,v 1.4 2001/02/09 02:05:21 xorgcvs Exp $ */
/*
Copyright 1993, 1998 The Open Group
@@ -27,7 +26,6 @@ from The Open Group.
*/
-/* $XFree86: xc/programs/Xserver/mi/migc.c,v 1.8 2001/08/06 20:51:18 dawes Exp $ */
#ifdef HAVE_DIX_CONFIG_H
#include <dix-config.h>
diff --git a/mi/migc.h b/mi/migc.h
index d906c6334..84dc75c6c 100644
--- a/mi/migc.h
+++ b/mi/migc.h
@@ -1,4 +1,3 @@
-/* $Xorg: migc.h,v 1.4 2001/02/09 02:05:21 xorgcvs Exp $ */
/*
Copyright 1993, 1998 The Open Group
@@ -27,7 +26,6 @@ from The Open Group.
*/
-/* $XFree86: xc/programs/Xserver/mi/migc.h,v 1.7 2001/08/06 20:51:18 dawes Exp $ */
extern void miChangeGC(
GCPtr /*pGC*/,
diff --git a/mi/miglblt.c b/mi/miglblt.c
index beca1a0b6..db299a8ae 100644
--- a/mi/miglblt.c
+++ b/mi/miglblt.c
@@ -1,4 +1,3 @@
-/* $XFree86: xc/programs/Xserver/mi/miglblt.c,v 1.5 2001/05/29 22:24:07 dawes Exp $ */
/***********************************************************
Copyright 1987, 1998 The Open Group
@@ -46,7 +45,6 @@ SOFTWARE.
******************************************************************/
-/* $Xorg: miglblt.c,v 1.4 2001/02/09 02:05:21 xorgcvs Exp $ */
#ifdef HAVE_DIX_CONFIG_H
#include <dix-config.h>
diff --git a/mi/miinitext.c b/mi/miinitext.c
index 7626c8494..cb3447372 100644
--- a/mi/miinitext.c
+++ b/mi/miinitext.c
@@ -1,5 +1,3 @@
-/* $XdotOrg: xserver/xorg/mi/miinitext.c,v 1.33 2006/06/01 18:47:01 daniels Exp $ */
-/* $XFree86: xc/programs/Xserver/mi/miinitext.c,v 3.67 2003/01/12 02:44:27 dawes Exp $ */
/***********************************************************
Copyright 1987, 1998 The Open Group
@@ -46,7 +44,6 @@ ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
SOFTWARE.
******************************************************************/
-/* $Xorg: miinitext.c,v 1.4 2001/02/09 02:05:21 xorgcvs Exp $ */
#ifdef HAVE_DIX_CONFIG_H
#include <dix-config.h>
@@ -85,6 +82,7 @@ SOFTWARE.
#include "misc.h"
#include "extension.h"
#include "micmap.h"
+#include "globals.h"
#if defined(QNX4) /* sleaze for Watcom on QNX4 ... */
#undef GLXEXT
@@ -107,6 +105,7 @@ SOFTWARE.
#undef XF86DRI
#undef DPMSExtension
#undef FONTCACHE
+#undef COMPOSITE
#undef DAMAGE
#undef XFIXES
#undef XEVIE
@@ -125,9 +124,6 @@ extern Bool noBigReqExtension;
#ifdef COMPOSITE
extern Bool noCompositeExtension;
#endif
-#ifdef DAMAGE
-extern Bool noDamageExtension;
-#endif
#ifdef DBE
extern Bool noDbeExtension;
#endif
@@ -245,8 +241,11 @@ typedef void (*InitExtension)(INITARGS);
#define _XAG_SERVER_
#include <X11/extensions/Xagstr.h>
#endif
+#ifdef XACE
+#include "xace.h"
+#endif
#ifdef XCSECURITY
-#define _SECURITY_SERVER
+#include "securitysrv.h"
#include <X11/extensions/securstr.h>
#endif
#ifdef PANORAMIX
@@ -260,9 +259,6 @@ typedef void (*InitExtension)(INITARGS);
#endif
/* FIXME: this whole block of externs should be from the appropriate headers */
-#ifdef SHAPE
-extern void ShapeExtensionInit(INITARGS);
-#endif
#ifdef EVI
extern void EVIExtensionInit(INITARGS);
#endif
@@ -318,7 +314,11 @@ extern void DbeExtensionInit(INITARGS);
#ifdef XAPPGROUP
extern void XagExtensionInit(INITARGS);
#endif
+#ifdef XACE
+extern void XaceExtensionInit(INITARGS);
+#endif
#ifdef XCSECURITY
+extern void SecurityExtensionSetup(INITARGS);
extern void SecurityExtensionInit(INITARGS);
#endif
#ifdef XPRINT
@@ -529,6 +529,9 @@ InitExtensions(argc, argv)
int argc;
char *argv[];
{
+#ifdef XCSECURITY
+ SecurityExtensionSetup();
+#endif
#ifdef PANORAMIX
# if !defined(PRINT_ONLY_SERVER) && !defined(NO_PANORAMIX)
if (!noPanoramiXExtension) PanoramiXExtensionInit();
@@ -546,7 +549,7 @@ InitExtensions(argc, argv)
#ifdef MULTIBUFFER
if (!noMultibufferExtension) MultibufferExtensionInit();
#endif
-#if defined(XINPUT) && !defined(NO_HW_ONLY_EXTS)
+#if defined(XINPUT)
if (!noXInputExtension) XInputExtensionInit();
#endif
#ifdef XTEST
@@ -576,7 +579,7 @@ InitExtensions(argc, argv)
#ifdef XSYNC
if (!noSyncExtension) SyncExtensionInit();
#endif
-#if defined(XKB) && !defined(PRINT_ONLY_SERVER) && !defined(NO_HW_ONLY_EXTS)
+#if defined(XKB) && !defined(PRINT_ONLY_SERVER)
if (!noXkbExtension) XkbExtensionInit();
#endif
#ifdef XCMISC
@@ -591,6 +594,9 @@ InitExtensions(argc, argv)
#ifdef XAPPGROUP
if (!noXagExtension) XagExtensionInit();
#endif
+#ifdef XACE
+ XaceExtensionInit();
+#endif
#ifdef XCSECURITY
if (!noSecurityExtension) SecurityExtensionInit();
#endif
@@ -693,8 +699,11 @@ static ExtensionModule staticExtensions[] = {
#ifdef XAPPGROUP
{ XagExtensionInit, XAGNAME, &noXagExtension, NULL, NULL },
#endif
+#ifdef XACE
+ { XaceExtensionInit, XACE_EXTENSION_NAME, NULL, NULL, NULL },
+#endif
#ifdef XCSECURITY
- { SecurityExtensionInit, SECURITY_EXTENSION_NAME, &noSecurityExtension, NULL, NULL },
+ { SecurityExtensionInit, SECURITY_EXTENSION_NAME, &noSecurityExtension, SecurityExtensionSetup, NULL },
#endif
#ifdef XPRINT
{ XpExtensionInit, XP_PRINTNAME, NULL, NULL, NULL },
@@ -745,6 +754,16 @@ InitExtensions(argc, argv)
/* Sort the extensions according the init dependencies. */
LoaderSortExtensions();
listInitialised = TRUE;
+ } else {
+ /* Call the setup functions on subsequent server resets as well */
+ for (i = 0; ExtensionModuleList[i].name != NULL; i++) {
+ ext = &ExtensionModuleList[i];
+ if (ext->setupFunc != NULL &&
+ (ext->disablePtr == NULL ||
+ (ext->disablePtr != NULL && !*ext->disablePtr))) {
+ (ext->setupFunc)();
+ }
+ }
}
for (i = 0; ExtensionModuleList[i].name != NULL; i++) {
diff --git a/mi/miline.h b/mi/miline.h
index f52a51ebd..7028485f0 100644
--- a/mi/miline.h
+++ b/mi/miline.h
@@ -1,4 +1,3 @@
-/* $Xorg: miline.h,v 1.4 2001/02/09 02:05:21 xorgcvs Exp $ */
/*
@@ -25,7 +24,6 @@ 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/mi/miline.h,v 1.6 2001/08/06 20:51:19 dawes Exp $ */
#ifndef MILINE_H
diff --git a/mi/mioverlay.c b/mi/mioverlay.c
index 88b3bf81d..c02ea2dc5 100644
--- a/mi/mioverlay.c
+++ b/mi/mioverlay.c
@@ -1,4 +1,3 @@
-/* $XFree86: xc/programs/Xserver/mi/mioverlay.c,v 3.15tsi Exp $ */
#ifdef HAVE_DIX_CONFIG_H
#include <dix-config.h>
diff --git a/mi/mioverlay.h b/mi/mioverlay.h
index a1d1e1a18..24b74f51c 100644
--- a/mi/mioverlay.h
+++ b/mi/mioverlay.h
@@ -1,4 +1,3 @@
-/* $XFree86: xc/programs/Xserver/mi/mioverlay.h,v 3.3 2000/02/29 00:16:03 mvojkovi Exp $ */
#ifdef HAVE_DIX_CONFIG_H
#include <dix-config.h>
diff --git a/mi/mipointer.c b/mi/mipointer.c
index 4602d4703..dbe2aaeab 100644
--- a/mi/mipointer.c
+++ b/mi/mipointer.c
@@ -2,7 +2,6 @@
* mipointer.c
*/
-/* $Xorg: mipointer.c,v 1.4 2001/02/09 02:05:21 xorgcvs Exp $ */
/*
@@ -28,7 +27,6 @@ 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/mi/mipointer.c,v 3.9 2001/09/04 14:03:28 dawes Exp $ */
#ifdef HAVE_DIX_CONFIG_H
#include <dix-config.h>
@@ -46,6 +44,7 @@ in this Software without prior written authorization from The Open Group.
# include "mipointrst.h"
# include "cursorstr.h"
# include "dixstruct.h"
+# include "inputstr.h"
_X_EXPORT int miPointerScreenIndex;
static unsigned long miPointerGeneration = 0;
@@ -129,7 +128,6 @@ miPointerInitialize (pScreen, spriteFuncs, screenFuncs, waitForUpdate)
miPointer.confined = FALSE;
miPointer.x = 0;
miPointer.y = 0;
- miPointer.history_start = miPointer.history_end = 0;
return TRUE;
}
@@ -180,7 +178,7 @@ miPointerDisplayCursor (pScreen, pCursor)
{
miPointer.pCursor = pCursor;
miPointer.pScreen = pScreen;
- miPointerUpdate ();
+ miPointerUpdateSprite(inputInfo.pointer);
return TRUE;
}
@@ -227,7 +225,7 @@ miPointerSetCursorPosition(pScreen, x, y, generateEvent)
/* device dependent - must pend signal and call miPointerWarpCursor */
(*pScreenPriv->screenFuncs->WarpCursor) (pScreen, x, y);
if (!generateEvent)
- miPointerUpdate();
+ miPointerUpdateSprite(inputInfo.pointer);
return TRUE;
}
@@ -268,39 +266,6 @@ miPointerWarpCursor (pScreen, x, y)
* Pointer/CursorDisplay interface routines
*/
-_X_EXPORT int
-miPointerGetMotionBufferSize ()
-{
- return MOTION_SIZE;
-}
-
-_X_EXPORT int
-miPointerGetMotionEvents (pPtr, coords, start, stop, pScreen)
- DeviceIntPtr pPtr;
- xTimecoord *coords;
- unsigned long start, stop;
- ScreenPtr pScreen;
-{
- int i;
- int count = 0;
- miHistoryPtr h;
-
- for (i = miPointer.history_start; i != miPointer.history_end;)
- {
- h = &miPointer.history[i];
- if (h->event.time >= stop)
- break;
- if (h->event.time >= start)
- {
- *coords++ = h->event;
- count++;
- }
- if (++i == MOTION_SIZE) i = 0;
- }
- return count;
-}
-
-
/*
* miPointerUpdate
*
@@ -310,18 +275,29 @@ miPointerGetMotionEvents (pPtr, coords, start, stop, pScreen)
void
miPointerUpdate ()
{
+ miPointerUpdateSprite(inputInfo.pointer);
+}
+
+void
+miPointerUpdateSprite (DeviceIntPtr pDev)
+{
ScreenPtr pScreen;
miPointerScreenPtr pScreenPriv;
CursorPtr pCursor;
int x, y, devx, devy;
+ if (!pDev || !(pDev->coreEvents || pDev == inputInfo.pointer))
+ return;
+
pScreen = miPointer.pScreen;
+ if (!pScreen)
+ return;
+
x = miPointer.x;
y = miPointer.y;
devx = miPointer.devx;
devy = miPointer.devy;
- if (!pScreen)
- return;
+
pScreenPriv = GetScreenPrivate (pScreen);
/*
* if the cursor has switched screens, disable the sprite
@@ -378,16 +354,22 @@ miPointerUpdate ()
*/
void
-miPointerDeltaCursor (dx, dy, time)
- int dx, dy;
- unsigned long time;
+miPointerDeltaCursor (int dx, int dy, unsigned long time)
{
- miPointerAbsoluteCursor (miPointer.x + dx, miPointer.y + dy, time);
+ int x = miPointer.x + dx, y = miPointer.y + dy;
+
+ miPointerSetPosition(inputInfo.pointer, &x, &y, time);
}
void
miPointerSetNewScreen(int screen_no, int x, int y)
{
+ miPointerSetScreen(inputInfo.pointer, screen_no, x, y);
+}
+
+void
+miPointerSetScreen(DeviceIntPtr pDev, int screen_no, int x, int y)
+{
miPointerScreenPtr pScreenPriv;
ScreenPtr pScreen;
@@ -402,17 +384,26 @@ miPointerSetNewScreen(int screen_no, int x, int y)
_X_EXPORT ScreenPtr
miPointerCurrentScreen ()
{
- return (miPointer.pScreen);
+ return miPointerGetScreen(inputInfo.pointer);
}
-/*
- * miPointerAbsoluteCursor. The pointer has moved to x,y
- */
+_X_EXPORT ScreenPtr
+miPointerGetScreen(DeviceIntPtr pDev)
+{
+ return miPointer.pScreen;
+}
+/* Move the pointer to x, y on the current screen, update the sprite, and
+ * the motion history. Generates no events. Does not return changed x
+ * and y if they are clipped; use miPointerSetPosition instead. */
_X_EXPORT void
-miPointerAbsoluteCursor (x, y, time)
- int x, y;
- unsigned long time;
+miPointerAbsoluteCursor (int x, int y, unsigned long time)
+{
+ miPointerSetPosition(inputInfo.pointer, &x, &y, time);
+}
+
+_X_EXPORT void
+miPointerSetPosition(DeviceIntPtr pDev, int *x, int *y, unsigned long time)
{
miPointerScreenPtr pScreenPriv;
ScreenPtr pScreen;
@@ -421,13 +412,17 @@ miPointerAbsoluteCursor (x, y, time)
pScreen = miPointer.pScreen;
if (!pScreen)
return; /* called before ready */
- if (x < 0 || x >= pScreen->width || y < 0 || y >= pScreen->height)
+
+ if (!pDev || !(pDev->coreEvents || pDev == inputInfo.pointer))
+ return;
+
+ if (*x < 0 || *x >= pScreen->width || *y < 0 || *y >= pScreen->height)
{
pScreenPriv = GetScreenPrivate (pScreen);
if (!miPointer.confined)
{
newScreen = pScreen;
- (*pScreenPriv->screenFuncs->CursorOffScreen) (&newScreen, &x, &y);
+ (*pScreenPriv->screenFuncs->CursorOffScreen) (&newScreen, x, y);
if (newScreen != pScreen)
{
pScreen = newScreen;
@@ -439,93 +434,58 @@ miPointerAbsoluteCursor (x, y, time)
}
}
}
- /*
- * constrain the hot-spot to the current
- * limits
- */
- if (x < miPointer.limits.x1)
- x = miPointer.limits.x1;
- if (x >= miPointer.limits.x2)
- x = miPointer.limits.x2 - 1;
- if (y < miPointer.limits.y1)
- y = miPointer.limits.y1;
- if (y >= miPointer.limits.y2)
- y = miPointer.limits.y2 - 1;
- if (miPointer.x == x && miPointer.y == y && miPointer.pScreen == pScreen)
+ /* Constrain the sprite to the current limits. */
+ if (*x < miPointer.limits.x1)
+ *x = miPointer.limits.x1;
+ if (*x >= miPointer.limits.x2)
+ *x = miPointer.limits.x2 - 1;
+ if (*y < miPointer.limits.y1)
+ *y = miPointer.limits.y1;
+ if (*y >= miPointer.limits.y2)
+ *y = miPointer.limits.y2 - 1;
+
+ if (miPointer.x == *x && miPointer.y == *y && miPointer.pScreen == pScreen)
return;
- miPointerMove (pScreen, x, y, time);
+
+ miPointerMoved(pDev, pScreen, *x, *y, time);
+}
+
+_X_EXPORT void
+miPointerPosition (int *x, int *y)
+{
+ miPointerGetPosition(inputInfo.pointer, x, y);
}
_X_EXPORT void
-miPointerPosition (x, y)
- int *x, *y;
+miPointerGetPosition(DeviceIntPtr pDev, int *x, int *y)
{
*x = miPointer.x;
*y = miPointer.y;
}
-/*
- * miPointerMove. The pointer has moved to x,y on current screen
- */
+void
+miPointerMove (ScreenPtr pScreen, int x, int y, unsigned long time)
+{
+ miPointerMoved(inputInfo.pointer, pScreen, x, y, time);
+}
-static void
-miPointerMove (pScreen, x, y, time)
- ScreenPtr pScreen;
- int x, y;
- unsigned long time;
+/* Move the pointer on the current screen, and update the sprite. */
+void
+miPointerMoved (DeviceIntPtr pDev, ScreenPtr pScreen, int x, int y,
+ unsigned long time)
{
SetupScreen(pScreen);
- xEvent xE;
- miHistoryPtr history;
- int prev, end, start;
- if (!pScreenPriv->waitForUpdate && pScreen == miPointer.pSpriteScreen)
+ if (pDev && (pDev->coreEvents || pDev == inputInfo.pointer) &&
+ !pScreenPriv->waitForUpdate && pScreen == miPointer.pSpriteScreen)
{
miPointer.devx = x;
miPointer.devy = y;
if(!miPointer.pCursor->bits->emptyMask)
(*pScreenPriv->spriteFuncs->MoveCursor) (pScreen, x, y);
}
+
miPointer.x = x;
miPointer.y = y;
miPointer.pScreen = pScreen;
-
- xE.u.u.type = MotionNotify;
- xE.u.keyButtonPointer.rootX = x;
- xE.u.keyButtonPointer.rootY = y;
- xE.u.keyButtonPointer.time = time;
- (*pScreenPriv->screenFuncs->EnqueueEvent) (&xE);
-
- end = miPointer.history_end;
- start = miPointer.history_start;
- prev = end - 1;
- if (end == 0)
- prev = MOTION_SIZE - 1;
- history = &miPointer.history[prev];
- if (end == start || history->event.time != time)
- {
- history = &miPointer.history[end];
- if (++end == MOTION_SIZE)
- end = 0;
- if (end == start)
- {
- start = end + 1;
- if (start == MOTION_SIZE)
- start = 0;
- miPointer.history_start = start;
- }
- miPointer.history_end = end;
- }
- history->event.x = x;
- history->event.y = y;
- history->event.time = time;
- history->pScreen = pScreen;
-}
-
-void
-miRegisterPointerDevice (pScreen, pDevice)
- ScreenPtr pScreen;
- DeviceIntPtr pDevice;
-{
- miPointer.pPointer = (DevicePtr)pDevice;
}
diff --git a/mi/mipointer.h b/mi/mipointer.h
index ad4be69c2..30e89444b 100644
--- a/mi/mipointer.h
+++ b/mi/mipointer.h
@@ -3,7 +3,6 @@
*
*/
-/* $Xorg: mipointer.h,v 1.4 2001/02/09 02:05:21 xorgcvs Exp $ */
/*
@@ -29,7 +28,6 @@ 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/mi/mipointer.h,v 3.8 2001/08/06 20:51:19 dawes Exp $ */
#ifndef MIPOINTER_H
#define MIPOINTER_H
@@ -75,6 +73,7 @@ typedef struct _miPointerScreenFuncRec {
int /* y */
);
void (*EnqueueEvent)(
+ DeviceIntPtr /* pDev */,
xEventPtr /* event */
);
void (*NewEventScreen)(
@@ -99,11 +98,11 @@ extern void miPointerWarpCursor(
ScreenPtr /*pScreen*/,
int /*x*/,
int /*y*/
-);
+) _X_DEPRECATED;
extern int miPointerGetMotionBufferSize(
void
-);
+) _X_DEPRECATED;
extern int miPointerGetMotionEvents(
DeviceIntPtr /*pPtr*/,
@@ -113,40 +112,74 @@ extern int miPointerGetMotionEvents(
ScreenPtr /*pScreen*/
);
+/* Deprecated in favour of miPointerUpdateSprite. */
extern void miPointerUpdate(
void
-);
+) _X_DEPRECATED;
+/* Deprecated in favour of miSetPointerPosition. */
extern void miPointerDeltaCursor(
int /*dx*/,
int /*dy*/,
unsigned long /*time*/
-);
-
+) _X_DEPRECATED;
extern void miPointerAbsoluteCursor(
int /*x*/,
int /*y*/,
unsigned long /*time*/
-);
+) _X_DEPRECATED;
+/* Deprecated in favour of miGetPointerPosition. */
extern void miPointerPosition(
int * /*x*/,
int * /*y*/
-);
+) _X_DEPRECATED;
+/* Deprecated in favour of miPointerSetScreen. */
extern void miPointerSetNewScreen(
int, /*screen_no*/
- int, /*x*/
- int /*y*/
-);
+ int, /*x*/
+ int /*y*/
+) _X_DEPRECATED;
+
+/* Deprecated in favour of miPointerGetScreen. */
extern ScreenPtr miPointerCurrentScreen(
void
-);
-
-extern void miRegisterPointerDevice(
- ScreenPtr /*pScreen*/,
- DeviceIntPtr /*pDevice*/
-);
+) _X_DEPRECATED;
+
+extern ScreenPtr miPointerGetScreen(
+ DeviceIntPtr pDev);
+extern void miPointerSetScreen(
+ DeviceIntPtr pDev,
+ int screen_num,
+ int x,
+ int y);
+
+/* Returns the current cursor position. */
+extern void miPointerGetPosition(
+ DeviceIntPtr pDev,
+ int *x,
+ int *y);
+
+/* Moves the cursor to the specified position. May clip the co-ordinates:
+ * x and y are modified in-place. */
+extern void miPointerSetPosition(
+ DeviceIntPtr pDev,
+ int *x,
+ int *y,
+ unsigned long time);
+
+extern void miPointerUpdateSprite(
+ DeviceIntPtr pDev);
+
+/* Moves the sprite to x, y on the current screen, and updates the event
+ * history. */
+extern void miPointerMoved(
+ DeviceIntPtr pDev,
+ ScreenPtr pScreen,
+ int x,
+ int y,
+ unsigned long time);
extern int miPointerScreenIndex;
diff --git a/mi/mipointrst.h b/mi/mipointrst.h
index 682f8ac88..a80c52e7a 100644
--- a/mi/mipointrst.h
+++ b/mi/mipointrst.h
@@ -3,7 +3,6 @@
*
*/
-/* $Xorg: mipointrst.h,v 1.4 2001/02/09 02:05:21 xorgcvs Exp $ */
/*
@@ -29,18 +28,10 @@ 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/mi/mipointrst.h,v 1.3 2001/04/19 14:14:07 tsi Exp $ */
#include "mipointer.h"
#include "scrnintstr.h"
-#define MOTION_SIZE 256
-
-typedef struct {
- xTimecoord event;
- ScreenPtr pScreen;
-} miHistoryRec, *miHistoryPtr;
-
typedef struct {
ScreenPtr pScreen; /* current screen */
ScreenPtr pSpriteScreen;/* screen containing current sprite */
@@ -50,9 +41,6 @@ typedef struct {
Bool confined; /* pointer can't change screens */
int x, y; /* hot spot location */
int devx, devy; /* sprite position */
- DevicePtr pPointer; /* pointer device structure */
- miHistoryRec history[MOTION_SIZE];
- int history_start, history_end;
} miPointerRec, *miPointerPtr;
typedef struct {
diff --git a/mi/mipoly.c b/mi/mipoly.c
index 3a968e47f..b514b5ed2 100644
--- a/mi/mipoly.c
+++ b/mi/mipoly.c
@@ -45,7 +45,6 @@ ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
SOFTWARE.
******************************************************************/
-/* $Xorg: mipoly.c,v 1.4 2001/02/09 02:05:21 xorgcvs Exp $ */
/*
* mipoly.c
*
diff --git a/mi/mipoly.h b/mi/mipoly.h
index 88a1782de..8e04f6737 100644
--- a/mi/mipoly.h
+++ b/mi/mipoly.h
@@ -1,4 +1,3 @@
-/* $Xorg: mipoly.h,v 1.4 2001/02/09 02:05:21 xorgcvs Exp $ */
/*
Copyright 1987, 1998 The Open Group
@@ -26,7 +25,6 @@ other dealings in this Software without prior written authorization
from The Open Group.
*/
-/* $XFree86: xc/programs/Xserver/mi/mipoly.h,v 1.2 2001/08/06 20:51:19 dawes Exp $ */
/*
diff --git a/mi/mipolycon.c b/mi/mipolycon.c
index 428fc3f96..b5ab89364 100644
--- a/mi/mipolycon.c
+++ b/mi/mipolycon.c
@@ -1,4 +1,3 @@
-/* $XFree86: xc/programs/Xserver/mi/mipolycon.c,v 1.3 2001/08/06 21:46:04 dawes Exp $ */
/***********************************************************
Copyright 1987, 1998 The Open Group
@@ -45,7 +44,6 @@ ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
SOFTWARE.
******************************************************************/
-/* $Xorg: mipolycon.c,v 1.4 2001/02/09 02:05:21 xorgcvs Exp $ */
#ifdef HAVE_DIX_CONFIG_H
#include <dix-config.h>
diff --git a/mi/mipolygen.c b/mi/mipolygen.c
index c3d9ef397..34da21f9e 100644
--- a/mi/mipolygen.c
+++ b/mi/mipolygen.c
@@ -1,4 +1,3 @@
-/* $XFree86: xc/programs/Xserver/mi/mipolygen.c,v 1.2 2001/05/29 22:24:07 dawes Exp $ */
/***********************************************************
Copyright 1987, 1998 The Open Group
@@ -45,7 +44,6 @@ ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
SOFTWARE.
******************************************************************/
-/* $Xorg: mipolygen.c,v 1.4 2001/02/09 02:05:21 xorgcvs Exp $ */
#ifdef HAVE_DIX_CONFIG_H
#include <dix-config.h>
#endif
diff --git a/mi/mipolypnt.c b/mi/mipolypnt.c
index 797c19773..245bda317 100644
--- a/mi/mipolypnt.c
+++ b/mi/mipolypnt.c
@@ -1,4 +1,3 @@
-/* $XFree86: xc/programs/Xserver/mi/mipolypnt.c,v 1.2 2001/05/29 22:24:07 dawes Exp $ */
/***********************************************************
Copyright 1987, 1998 The Open Group
@@ -45,7 +44,6 @@ ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
SOFTWARE.
******************************************************************/
-/* $Xorg: mipolypnt.c,v 1.4 2001/02/09 02:05:21 xorgcvs Exp $ */
#ifdef HAVE_DIX_CONFIG_H
#include <dix-config.h>
#endif
diff --git a/mi/mipolyrect.c b/mi/mipolyrect.c
index 233ba2130..a9ab90928 100644
--- a/mi/mipolyrect.c
+++ b/mi/mipolyrect.c
@@ -1,4 +1,3 @@
-/* $XFree86: xc/programs/Xserver/mi/mipolyrect.c,v 1.3 2001/12/14 20:00:25 dawes Exp $ */
/***********************************************************
Copyright 1987, 1998 The Open Group
@@ -45,7 +44,6 @@ ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
SOFTWARE.
******************************************************************/
-/* $Xorg: mipolyrect.c,v 1.4 2001/02/09 02:05:21 xorgcvs Exp $ */
#ifdef HAVE_DIX_CONFIG_H
#include <dix-config.h>
#endif
diff --git a/mi/mipolyseg.c b/mi/mipolyseg.c
index 2a37e8ca9..0cd9d416e 100644
--- a/mi/mipolyseg.c
+++ b/mi/mipolyseg.c
@@ -1,4 +1,3 @@
-/* $XFree86: xc/programs/Xserver/mi/mipolyseg.c,v 1.3 2001/12/14 20:00:26 dawes Exp $ */
/***********************************************************
Copyright 1987, 1998 The Open Group
@@ -45,7 +44,6 @@ ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
SOFTWARE.
******************************************************************/
-/* $Xorg: mipolyseg.c,v 1.4 2001/02/09 02:05:21 xorgcvs Exp $ */
#ifdef HAVE_DIX_CONFIG_H
#include <dix-config.h>
#endif
diff --git a/mi/mipolytext.c b/mi/mipolytext.c
index 2ce94fee8..6af02e046 100644
--- a/mi/mipolytext.c
+++ b/mi/mipolytext.c
@@ -1,4 +1,3 @@
-/* $XFree86: xc/programs/Xserver/mi/mipolytext.c,v 1.2 2001/08/06 20:51:19 dawes Exp $ */
/*******************************************************************
Copyright 1987, 1998 The Open Group
@@ -45,7 +44,6 @@ ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
SOFTWARE.
************************************************************************/
-/* $Xorg: mipolytext.c,v 1.4 2001/02/09 02:05:21 xorgcvs Exp $ */
/*
* mipolytext.c - text routines
*
diff --git a/mi/mipolyutil.c b/mi/mipolyutil.c
index be62250ee..5443ba5c3 100644
--- a/mi/mipolyutil.c
+++ b/mi/mipolyutil.c
@@ -1,4 +1,3 @@
-/* $XFree86: xc/programs/Xserver/mi/mipolyutil.c,v 1.9 2001/12/14 20:00:26 dawes Exp $ */
/***********************************************************
Copyright 1987, 1998 The Open Group
@@ -45,7 +44,6 @@ ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
SOFTWARE.
******************************************************************/
-/* $Xorg: mipolyutil.c,v 1.4 2001/02/09 02:05:21 xorgcvs Exp $ */
#ifdef HAVE_DIX_CONFIG_H
#include <dix-config.h>
#endif
diff --git a/mi/mipushpxl.c b/mi/mipushpxl.c
index 9cdb09af9..6526aa02b 100644
--- a/mi/mipushpxl.c
+++ b/mi/mipushpxl.c
@@ -1,4 +1,3 @@
-/* $XFree86: xc/programs/Xserver/mi/mipushpxl.c,v 3.12 2001/12/14 20:00:26 dawes Exp $ */
/***********************************************************
Copyright 1987, 1998 The Open Group
@@ -45,7 +44,6 @@ ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
SOFTWARE.
******************************************************************/
-/* $Xorg: mipushpxl.c,v 1.4 2001/02/09 02:05:21 xorgcvs Exp $ */
#ifdef HAVE_DIX_CONFIG_H
#include <dix-config.h>
#endif
@@ -95,7 +93,7 @@ miPushPixels(pGC, pBitMap, pDrawable, dx, dy, xOrg, yOrg)
Bool fInBox;
DDXPointRec pt[NPT], ptThisLine;
int width[NPT];
-#ifdef XFree86Server
+#if 1
PixelType startmask;
if (screenInfo.bitmapBitOrder == IMAGE_BYTE_ORDER)
if (screenInfo.bitmapBitOrder == LSBFirst)
@@ -135,7 +133,7 @@ miPushPixels(pGC, pBitMap, pDrawable, dx, dy, xOrg, yOrg)
while(pw < pwEnd)
{
w = *pw;
-#ifdef XFree86Server
+#if 1
msk = startmask;
#else
msk = (MiBits)(-1) ^ SCRRIGHT((MiBits)(-1), 1);
@@ -168,7 +166,7 @@ miPushPixels(pGC, pBitMap, pDrawable, dx, dy, xOrg, yOrg)
fInBox = FALSE;
}
}
-#ifdef XFree86Server
+#if 1
/* This is not quite right, but it'll do for now */
if (screenInfo.bitmapBitOrder == IMAGE_BYTE_ORDER)
if (screenInfo.bitmapBitOrder == LSBFirst)
@@ -191,7 +189,7 @@ miPushPixels(pGC, pBitMap, pDrawable, dx, dy, xOrg, yOrg)
{
/* Process final partial word on line */
w = *pw;
-#ifdef XFree86Server
+#if 1
msk = startmask;
#else
msk = (MiBits)(-1) ^ SCRRIGHT((MiBits)(-1), 1);
@@ -224,7 +222,7 @@ miPushPixels(pGC, pBitMap, pDrawable, dx, dy, xOrg, yOrg)
fInBox = FALSE;
}
}
-#ifdef XFree86Server
+#if 1
/* This is not quite right, but it'll do for now */
if (screenInfo.bitmapBitOrder == IMAGE_BYTE_ORDER)
if (screenInfo.bitmapBitOrder == LSBFirst)
diff --git a/mi/miregion.c b/mi/miregion.c
index 0a6913f3c..0db46dcf5 100644
--- a/mi/miregion.c
+++ b/mi/miregion.c
@@ -1,4 +1,3 @@
-/* $XFree86: xc/programs/Xserver/mi/miregion.c,v 1.9 2003/04/23 21:51:53 tsi Exp $ */
/***********************************************************
Copyright 1987, 1988, 1989, 1998 The Open Group
@@ -46,7 +45,6 @@ ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
SOFTWARE.
******************************************************************/
-/* $Xorg: miregion.c,v 1.4 2001/02/09 02:05:21 xorgcvs Exp $ */
/* The panoramix components contained the following notice */
/*****************************************************************
@@ -225,8 +223,7 @@ _X_EXPORT RegDataRec miEmptyData = {0, 0};
RegDataRec miBrokenData = {0, 0};
RegionRec miBrokenRegion = { { 0, 0, 0, 0 }, &miBrokenData };
-#ifdef DEBUG
-int
+_X_EXPORT void
miPrintRegion(rgn)
RegionPtr rgn;
{
@@ -244,9 +241,7 @@ miPrintRegion(rgn)
ErrorF("%d %d %d %d \n",
rects[i].x1, rects[i].y1, rects[i].x2, rects[i].y2);
ErrorF("\n");
- return(num);
}
-#endif /* DEBUG */
_X_EXPORT Bool
miRegionEqual(reg1, reg2)
diff --git a/mi/miscanfill.h b/mi/miscanfill.h
index 49058c1c9..e318c45b4 100644
--- a/mi/miscanfill.h
+++ b/mi/miscanfill.h
@@ -1,4 +1,3 @@
-/* $Xorg: miscanfill.h,v 1.4 2001/02/09 02:05:21 xorgcvs Exp $ */
/*
Copyright 1987, 1998 The Open Group
diff --git a/mi/miscrinit.c b/mi/miscrinit.c
index ed40fc4fc..ac1b82336 100644
--- a/mi/miscrinit.c
+++ b/mi/miscrinit.c
@@ -1,4 +1,3 @@
-/* $Xorg: miscrinit.c,v 1.4 2001/02/09 02:05:21 xorgcvs Exp $ */
/*
Copyright 1990, 1998 The Open Group
@@ -26,7 +25,6 @@ other dealings in this Software without prior written authorization
from The Open Group.
*/
-/* $XFree86: xc/programs/Xserver/mi/miscrinit.c,v 3.15tsi Exp $ */
#ifdef HAVE_DIX_CONFIG_H
#include <dix-config.h>
diff --git a/mi/mispans.c b/mi/mispans.c
index 48252f323..4c8b6d698 100644
--- a/mi/mispans.c
+++ b/mi/mispans.c
@@ -1,4 +1,3 @@
-/* $XFree86: xc/programs/Xserver/mi/mispans.c,v 3.3 2001/08/06 20:51:20 dawes Exp $ */
/***********************************************************
Copyright 1989, 1998 The Open Group
@@ -46,7 +45,6 @@ SOFTWARE.
******************************************************************/
-/* $Xorg: mispans.c,v 1.4 2001/02/09 02:05:21 xorgcvs Exp $ */
#ifdef HAVE_DIX_CONFIG_H
#include <dix-config.h>
diff --git a/mi/mispans.h b/mi/mispans.h
index b6e97e2b4..5b141afe2 100644
--- a/mi/mispans.h
+++ b/mi/mispans.h
@@ -1,4 +1,3 @@
-/* $XFree86: xc/programs/Xserver/mi/mispans.h,v 1.2 2001/08/06 20:51:20 dawes Exp $ */
/***********************************************************
Copyright 1989, 1998 The Open Group
@@ -46,7 +45,6 @@ SOFTWARE.
******************************************************************/
-/* $Xorg: mispans.h,v 1.4 2001/02/09 02:05:21 xorgcvs Exp $ */
typedef struct {
int count; /* number of spans */
diff --git a/mi/misprite.c b/mi/misprite.c
index d0973ff46..286c7552a 100644
--- a/mi/misprite.c
+++ b/mi/misprite.c
@@ -4,7 +4,6 @@
* machine independent software sprite routines
*/
-/* $Xorg: misprite.c,v 1.4 2001/02/09 02:05:22 xorgcvs Exp $ */
/*
@@ -30,7 +29,6 @@ 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/mi/misprite.c,v 3.10tsi Exp $ */
#ifdef HAVE_DIX_CONFIG_H
#include <dix-config.h>
diff --git a/mi/misprite.h b/mi/misprite.h
index b4cc84ecf..5173b7736 100644
--- a/mi/misprite.h
+++ b/mi/misprite.h
@@ -6,7 +6,6 @@
* mi versions of these routines exist.
*/
-/* $Xorg: misprite.h,v 1.4 2001/02/09 02:05:22 xorgcvs Exp $ */
/*
@@ -32,7 +31,6 @@ 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/mi/misprite.h,v 1.2 2001/08/06 20:51:20 dawes Exp $ */
typedef struct {
Bool (*RealizeCursor)(
diff --git a/mi/mispritest.h b/mi/mispritest.h
index dca1fa619..5075f0580 100644
--- a/mi/mispritest.h
+++ b/mi/mispritest.h
@@ -4,7 +4,6 @@
* mi sprite structures
*/
-/* $Xorg: mispritest.h,v 1.4 2001/02/09 02:05:22 xorgcvs Exp $ */
/*
@@ -30,7 +29,6 @@ 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/mi/mispritest.h,v 1.4 2001/01/17 22:37:07 dawes Exp $ */
#ifdef HAVE_DIX_CONFIG_H
#include <dix-config.h>
diff --git a/mi/mistruct.h b/mi/mistruct.h
index 98879b72d..9b9de8677 100644
--- a/mi/mistruct.h
+++ b/mi/mistruct.h
@@ -1,4 +1,3 @@
-/* $Xorg: mistruct.h,v 1.4 2001/02/09 02:05:22 xorgcvs Exp $ */
/***********************************************************
Copyright 1987, 1998 The Open Group
diff --git a/mi/mivalidate.h b/mi/mivalidate.h
index 612b67e1d..91858328a 100644
--- a/mi/mivalidate.h
+++ b/mi/mivalidate.h
@@ -1,4 +1,3 @@
-/* $Xorg: mivalidate.h,v 1.4 2001/02/09 02:05:22 xorgcvs Exp $ */
/*
Copyright 1993, 1998 The Open Group
diff --git a/mi/mivaltree.c b/mi/mivaltree.c
index 08ad4acae..0e5ed61e7 100644
--- a/mi/mivaltree.c
+++ b/mi/mivaltree.c
@@ -1,5 +1,3 @@
-/* $Xorg: mivaltree.c,v 1.4 2001/02/09 02:05:22 xorgcvs Exp $ */
-/* $XdotOrg: xserver/xorg/mi/mivaltree.c,v 1.7 2006/02/15 19:05:54 ajax Exp $ */
/*
* mivaltree.c --
* Functions for recalculating window clip lists. Main function
@@ -81,7 +79,6 @@ Equipment Corporation.
******************************************************************/
-/* $XFree86: xc/programs/Xserver/mi/mivaltree.c,v 1.9tsi Exp $ */
/*
* Aug '86: Susan Angebranndt -- original code
diff --git a/mi/miwideline.c b/mi/miwideline.c
index 33170a305..d57c2eaa7 100644
--- a/mi/miwideline.c
+++ b/mi/miwideline.c
@@ -1,4 +1,3 @@
-/* $Xorg: miwideline.c,v 1.4 2001/02/09 02:05:22 xorgcvs Exp $ */
/*
Copyright 1988, 1998 The Open Group
@@ -26,7 +25,6 @@ other dealings in this Software without prior written authorization
from The Open Group.
*/
-/* $XFree86: xc/programs/Xserver/mi/miwideline.c,v 1.12 2001/12/14 20:00:28 dawes Exp $ */
/* Author: Keith Packard, MIT X Consortium */
@@ -2072,7 +2070,7 @@ miWideDash (pDrawable, pGC, mode, npt, pPts)
Bool endIsFg = FALSE, startIsFg = FALSE;
Bool firstIsFg = FALSE, prevIsFg = FALSE;
-#ifndef XFree86Server
+#if 0
/* XXX backward compatibility */
if (pGC->lineWidth == 0)
{
diff --git a/mi/miwideline.h b/mi/miwideline.h
index 96d6aae86..8cfa63008 100644
--- a/mi/miwideline.h
+++ b/mi/miwideline.h
@@ -1,4 +1,3 @@
-/* $Xorg: miwideline.h,v 1.4 2001/02/09 02:05:22 xorgcvs Exp $ */
/*
Copyright 1988, 1998 The Open Group
@@ -26,7 +25,6 @@ other dealings in this Software without prior written authorization
from The Open Group.
*/
-/* $XFree86: xc/programs/Xserver/mi/miwideline.h,v 1.11 2001/10/25 12:03:47 alanh Exp $ */
/* Author: Keith Packard, MIT X Consortium */
diff --git a/mi/miwindow.c b/mi/miwindow.c
index 47ba433fa..cd6bb8df3 100644
--- a/mi/miwindow.c
+++ b/mi/miwindow.c
@@ -1,4 +1,3 @@
-/* $XFree86: xc/programs/Xserver/mi/miwindow.c,v 1.9tsi Exp $ */
/***********************************************************
Copyright 1987, 1998 The Open Group
@@ -45,7 +44,6 @@ ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
SOFTWARE.
******************************************************************/
-/* $Xorg: miwindow.c,v 1.4 2001/02/09 02:05:22 xorgcvs Exp $ */
#ifdef HAVE_DIX_CONFIG_H
#include <dix-config.h>
#endif
diff --git a/mi/mizerarc.c b/mi/mizerarc.c
index f55afee23..33e1acc19 100644
--- a/mi/mizerarc.c
+++ b/mi/mizerarc.c
@@ -1,4 +1,3 @@
-/* $XFree86: xc/programs/Xserver/mi/mizerarc.c,v 1.6 2001/12/14 20:00:28 dawes Exp $ */
/************************************************************
Copyright 1989, 1998 The Open Group
@@ -27,7 +26,6 @@ Author: Bob Scheifler, MIT X Consortium
********************************************************/
-/* $Xorg: mizerarc.c,v 1.4 2001/02/09 02:05:22 xorgcvs Exp $ */
/* Derived from:
* "Algorithm for drawing ellipses or hyperbolae with a digital plotter"
diff --git a/mi/mizerarc.h b/mi/mizerarc.h
index 99062d192..8119d885e 100644
--- a/mi/mizerarc.h
+++ b/mi/mizerarc.h
@@ -1,4 +1,3 @@
-/* $XFree86: xc/programs/Xserver/mi/mizerarc.h,v 1.2 2001/08/06 20:51:20 dawes Exp $ */
/************************************************************
Copyright 1989, 1998 The Open Group
@@ -25,7 +24,6 @@ in this Software without prior written authorization from The Open Group.
********************************************************/
-/* $Xorg: mizerarc.h,v 1.4 2001/02/09 02:05:22 xorgcvs Exp $ */
typedef struct {
int x;
diff --git a/mi/mizerclip.c b/mi/mizerclip.c
index 768936dbd..b167c5475 100644
--- a/mi/mizerclip.c
+++ b/mi/mizerclip.c
@@ -1,4 +1,3 @@
-/* $XFree86: xc/programs/Xserver/mi/mizerclip.c,v 1.2 2001/08/06 20:51:20 dawes Exp $ */
/***********************************************************
Copyright 1987, 1998 The Open Group
diff --git a/mi/mizerline.c b/mi/mizerline.c
index 56f31d69d..073f1b20f 100644
--- a/mi/mizerline.c
+++ b/mi/mizerline.c
@@ -1,4 +1,3 @@
-/* $XFree86: xc/programs/Xserver/mi/mizerline.c,v 3.6 2001/08/06 20:51:20 dawes Exp $ */
/***********************************************************
Copyright 1987, 1998 The Open Group
@@ -45,7 +44,6 @@ ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
SOFTWARE.
******************************************************************/
-/* $Xorg: mizerline.c,v 1.4 2001/02/09 02:05:22 xorgcvs Exp $ */
#ifdef HAVE_DIX_CONFIG_H
#include <dix-config.h>
#endif
diff --git a/miext/cw/Makefile.am b/miext/cw/Makefile.am
index 9b8e2c25e..e056f4279 100644
--- a/miext/cw/Makefile.am
+++ b/miext/cw/Makefile.am
@@ -1,6 +1,6 @@
noinst_LTLIBRARIES = libcw.la
-AM_CFLAGS = $(DIX_CFLAGS) @SERVER_DEFINES@ @MODULE_DEFINES@ @LOADER_DEFINES@
+AM_CFLAGS = $(DIX_CFLAGS)
INCLUDES = -I$(top_srcdir)/hw/xfree86/os-support
diff --git a/miext/cw/cw_ops.c b/miext/cw/cw_ops.c
index 6ba804bb3..80b72806c 100644
--- a/miext/cw/cw_ops.c
+++ b/miext/cw/cw_ops.c
@@ -28,6 +28,7 @@
#include <stdlib.h>
#include "gcstruct.h"
+#include "pixmapstr.h"
#include "cw.h"
#define SETUP_BACKING_DST(_pDst, _pGC) \
@@ -43,6 +44,9 @@
&src_off_y)
#define PROLOGUE(pGC) do { \
+ if (pBackingGC->serialNumber != pBackingDst->serialNumber) { \
+ ValidateGC(pBackingDst, pBackingGC); \
+ } \
pGC->funcs = pGCPrivate->wrapFuncs;\
pGC->ops = pGCPrivate->wrapOps;\
} while (0)
diff --git a/miext/damage/Makefile.am b/miext/damage/Makefile.am
index 2af9ac2e2..595835731 100644
--- a/miext/damage/Makefile.am
+++ b/miext/damage/Makefile.am
@@ -1,6 +1,6 @@
noinst_LTLIBRARIES = libdamage.la
-AM_CFLAGS = $(DIX_CFLAGS) @SERVER_DEFINES@ @MODULE_DEFINES@ @LOADER_DEFINES@
+AM_CFLAGS = $(DIX_CFLAGS)
INCLUDES = -I$(srcdir)/../cw -I$(top_srcdir)/hw/xfree86/os-support
diff --git a/miext/damage/damage.c b/miext/damage/damage.c
index 5b9402898..cd66b5473 100755
--- a/miext/damage/damage.c
+++ b/miext/damage/damage.c
@@ -1831,7 +1831,6 @@ DamageSetup (ScreenPtr pScreen)
if (!pScrPriv)
return FALSE;
-#ifdef XFree86Server
#ifdef COMPOSITE
/* This is a kludge to ensure wrapping order with the composite wrapper.
* If it's done from compinit.c, then DamageSetup may be called before the
@@ -1841,7 +1840,6 @@ DamageSetup (ScreenPtr pScreen)
if (!noCompositeExtension)
miInitializeCompositeWrapper (pScreen);
#endif
-#endif
pScrPriv->internalLevel = 0;
pScrPriv->pScreenDamage = 0;
diff --git a/miext/rootless/accel/rlAccel.c b/miext/rootless/accel/rlAccel.c
index 4c780f526..d62bee740 100644
--- a/miext/rootless/accel/rlAccel.c
+++ b/miext/rootless/accel/rlAccel.c
@@ -26,7 +26,6 @@
* 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: xserver/xorg/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
diff --git a/miext/rootless/accel/rlAccel.h b/miext/rootless/accel/rlAccel.h
index a4402bdf2..a3fc6321e 100644
--- a/miext/rootless/accel/rlAccel.h
+++ b/miext/rootless/accel/rlAccel.h
@@ -26,7 +26,6 @@
* 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>
diff --git a/miext/rootless/accel/rlBlt.c b/miext/rootless/accel/rlBlt.c
index e5fa5f7bd..d1e765836 100644
--- a/miext/rootless/accel/rlBlt.c
+++ b/miext/rootless/accel/rlBlt.c
@@ -26,7 +26,6 @@
* 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>
diff --git a/miext/rootless/accel/rlCopy.c b/miext/rootless/accel/rlCopy.c
index ccea7fbd3..df6fc11a7 100644
--- a/miext/rootless/accel/rlCopy.c
+++ b/miext/rootless/accel/rlCopy.c
@@ -22,7 +22,6 @@
* 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>
diff --git a/miext/rootless/accel/rlFill.c b/miext/rootless/accel/rlFill.c
index a6ed2fbbb..0d0d01251 100644
--- a/miext/rootless/accel/rlFill.c
+++ b/miext/rootless/accel/rlFill.c
@@ -22,7 +22,6 @@
* 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>
diff --git a/miext/rootless/accel/rlFillRect.c b/miext/rootless/accel/rlFillRect.c
index e4bab4f53..6efed3bd9 100644
--- a/miext/rootless/accel/rlFillRect.c
+++ b/miext/rootless/accel/rlFillRect.c
@@ -22,7 +22,6 @@
* 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>
diff --git a/miext/rootless/accel/rlFillSpans.c b/miext/rootless/accel/rlFillSpans.c
index 9942d70e4..ab8bff065 100644
--- a/miext/rootless/accel/rlFillSpans.c
+++ b/miext/rootless/accel/rlFillSpans.c
@@ -22,7 +22,6 @@
* 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>
diff --git a/miext/rootless/accel/rlGlyph.c b/miext/rootless/accel/rlGlyph.c
index 3f1571963..82cd06c7f 100644
--- a/miext/rootless/accel/rlGlyph.c
+++ b/miext/rootless/accel/rlGlyph.c
@@ -22,7 +22,6 @@
* 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>
diff --git a/miext/rootless/accel/rlSolid.c b/miext/rootless/accel/rlSolid.c
index edce3d2c4..fa4160f38 100644
--- a/miext/rootless/accel/rlSolid.c
+++ b/miext/rootless/accel/rlSolid.c
@@ -26,7 +26,6 @@
* 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>
diff --git a/miext/rootless/rootless.h b/miext/rootless/rootless.h
index dec0e2c64..f83defeb6 100644
--- a/miext/rootless/rootless.h
+++ b/miext/rootless/rootless.h
@@ -27,7 +27,6 @@
* 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>
diff --git a/miext/rootless/rootlessCommon.c b/miext/rootless/rootlessCommon.c
index 33321105e..8fd922d4a 100644
--- a/miext/rootless/rootlessCommon.c
+++ b/miext/rootless/rootlessCommon.c
@@ -28,7 +28,6 @@
* 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>
diff --git a/miext/rootless/rootlessCommon.h b/miext/rootless/rootlessCommon.h
index beb1fd666..3bf6af02f 100644
--- a/miext/rootless/rootlessCommon.h
+++ b/miext/rootless/rootlessCommon.h
@@ -27,7 +27,6 @@
* 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>
diff --git a/miext/rootless/rootlessConfig.h b/miext/rootless/rootlessConfig.h
index eabbaef43..3e326bf06 100644
--- a/miext/rootless/rootlessConfig.h
+++ b/miext/rootless/rootlessConfig.h
@@ -26,7 +26,6 @@
* 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>
diff --git a/miext/rootless/rootlessGC.c b/miext/rootless/rootlessGC.c
index 32ffbf13b..5341267fb 100644
--- a/miext/rootless/rootlessGC.c
+++ b/miext/rootless/rootlessGC.c
@@ -28,7 +28,6 @@
* 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>
diff --git a/miext/rootless/rootlessScreen.c b/miext/rootless/rootlessScreen.c
index 6b7697383..356fec798 100644
--- a/miext/rootless/rootlessScreen.c
+++ b/miext/rootless/rootlessScreen.c
@@ -28,7 +28,6 @@
* 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
diff --git a/miext/rootless/rootlessValTree.c b/miext/rootless/rootlessValTree.c
index 2717ddf6f..97348f58e 100644
--- a/miext/rootless/rootlessValTree.c
+++ b/miext/rootless/rootlessValTree.c
@@ -3,7 +3,6 @@
*
* This file is very closely based on mivaltree.c.
*/
-/* $XFree86: xc/programs/Xserver/miext/rootless/rootlessValTree.c,v 1.1tsi Exp $ */
/*
* mivaltree.c --
diff --git a/miext/rootless/rootlessWindow.c b/miext/rootless/rootlessWindow.c
index f105a9113..e89ebf897 100644
--- a/miext/rootless/rootlessWindow.c
+++ b/miext/rootless/rootlessWindow.c
@@ -1,4 +1,3 @@
-/* $XdotOrg: xc/programs/Xserver/miext/rootless/rootlessWindow.c,v 1.4 2004/10/08 00:35:08 torrey Exp $ */
/*
* Rootless window management
*/
@@ -29,7 +28,6 @@
* 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>
diff --git a/miext/rootless/rootlessWindow.h b/miext/rootless/rootlessWindow.h
index 9cceed347..093a2b384 100644
--- a/miext/rootless/rootlessWindow.h
+++ b/miext/rootless/rootlessWindow.h
@@ -26,7 +26,6 @@
* 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>
diff --git a/miext/rootless/safeAlpha/safeAlpha.h b/miext/rootless/safeAlpha/safeAlpha.h
index 63922aeec..bd1ce3203 100644
--- a/miext/rootless/safeAlpha/safeAlpha.h
+++ b/miext/rootless/safeAlpha/safeAlpha.h
@@ -26,7 +26,6 @@
* 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
diff --git a/miext/rootless/safeAlpha/safeAlphaPicture.c b/miext/rootless/safeAlpha/safeAlphaPicture.c
index f73a3b5c1..8550cc01f 100644
--- a/miext/rootless/safeAlpha/safeAlphaPicture.c
+++ b/miext/rootless/safeAlpha/safeAlphaPicture.c
@@ -32,7 +32,6 @@
*
* 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
diff --git a/miext/rootless/safeAlpha/safeAlphaWindow.c b/miext/rootless/safeAlpha/safeAlphaWindow.c
index 1647896bc..8884c107e 100644
--- a/miext/rootless/safeAlpha/safeAlphaWindow.c
+++ b/miext/rootless/safeAlpha/safeAlphaWindow.c
@@ -1,4 +1,3 @@
-/* $XdotOrg: xc/programs/Xserver/miext/rootless/safeAlpha/safeAlphaWindow.c,v 1.3 2004/12/04 00:43:12 kuhn Exp $ */
/*
* Specialized window functions to protect the alpha channel
*/
@@ -32,7 +31,6 @@
*
* 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"
diff --git a/miext/shadow/Makefile.am b/miext/shadow/Makefile.am
index 1426c033e..a73d0ec78 100644
--- a/miext/shadow/Makefile.am
+++ b/miext/shadow/Makefile.am
@@ -1,6 +1,6 @@
noinst_LTLIBRARIES = libshadow.la
-AM_CFLAGS = $(DIX_CFLAGS) @SERVER_DEFINES@ @MODULE_DEFINES@ @LOADER_DEFINES@
+AM_CFLAGS = $(DIX_CFLAGS)
INCLUDES = -I$(top_srcdir)/hw/xfree86/os-support
diff --git a/miext/shadow/shadow.h b/miext/shadow/shadow.h
index b93e810dc..8986809f4 100644
--- a/miext/shadow/shadow.h
+++ b/miext/shadow/shadow.h
@@ -1,5 +1,4 @@
/*
- * $XFree86: xc/programs/Xserver/miext/shadow/shadow.h,v 1.6tsi Exp $
*
* Copyright © 2000 Keith Packard
*
diff --git a/miext/shadow/shpacked.c b/miext/shadow/shpacked.c
index 1af55bbc4..678f8c629 100644
--- a/miext/shadow/shpacked.c
+++ b/miext/shadow/shpacked.c
@@ -1,5 +1,4 @@
/*
- * $XFree86: xc/programs/Xserver/miext/shadow/shpacked.c,v 1.4 2001/05/29 04:54:13 keithp Exp $
*
* Copyright © 2000 Keith Packard
*
diff --git a/miext/shadow/shplanar.c b/miext/shadow/shplanar.c
index 529f35c57..b5983dc73 100644
--- a/miext/shadow/shplanar.c
+++ b/miext/shadow/shplanar.c
@@ -1,5 +1,4 @@
/*
- * $XFree86: xc/programs/Xserver/miext/shadow/shplanar.c,v 1.3 2001/05/29 04:54:13 keithp Exp $
*
* Copyright © 2000 Keith Packard
*
diff --git a/miext/shadow/shplanar8.c b/miext/shadow/shplanar8.c
index 8db584b43..6d8defa58 100644
--- a/miext/shadow/shplanar8.c
+++ b/miext/shadow/shplanar8.c
@@ -1,5 +1,4 @@
/*
- * $XFree86: xc/programs/Xserver/miext/shadow/shplanar8.c,v 1.3 2001/05/29 04:54:13 keithp Exp $
*
* Copyright © 2000 Keith Packard
*
diff --git a/miext/shadow/shrotate.c b/miext/shadow/shrotate.c
index 8e46fcecf..673cd76b5 100644
--- a/miext/shadow/shrotate.c
+++ b/miext/shadow/shrotate.c
@@ -1,5 +1,4 @@
/*
- * $XFree86: xc/programs/Xserver/miext/shadow/shrotate.c,v 1.4tsi Exp $
*
* Copyright © 2001 Keith Packard, member of The XFree86 Project, Inc.
*
diff --git a/miext/shadow/shrotpack.h b/miext/shadow/shrotpack.h
index 7f3f24111..015a98595 100644
--- a/miext/shadow/shrotpack.h
+++ b/miext/shadow/shrotpack.h
@@ -1,5 +1,4 @@
/*
- * $XFree86: xc/programs/Xserver/miext/shadow/shrotpack.h,v 1.3 2001/05/29 04:54:13 keithp Exp $
*
* Copyright © 2000 Keith Packard
*
diff --git a/os/Makefile.am b/os/Makefile.am
index d7fd58d28..d8d1405ce 100644
--- a/os/Makefile.am
+++ b/os/Makefile.am
@@ -1,16 +1,16 @@
noinst_LTLIBRARIES = libos.la libcwrapper.la
-AM_CFLAGS = $(DIX_CFLAGS) @SERVER_DEFINES@ @LOADER_DEFINES@
+AM_CFLAGS = $(DIX_CFLAGS)
# FIXME: Add support for these in configure.ac
-K5AUTH_SOURCES = k5auth.c
-SECURERPC_SOURCES = rpcauth.c
-INTERNALMALLOC_SOURCES = xalloc.c
+K5AUTH_SRCS = k5auth.c
+SECURERPC_SRCS = rpcauth.c
+INTERNALMALLOC_SRCS = xalloc.c
-XCSECURITY_SOURCES = secauth.c
-XDMCP_SOURCES = xdmcp.c
-STRLCAT_SOURCES = strlcat.c strlcpy.c
-XORG_SOURCES = log.c
+XCSECURITY_SRCS = secauth.c
+XDMCP_SRCS = xdmcp.c
+STRLCAT_SRCS = strlcat.c strlcpy.c
+XORG_SRCS = log.c
libos_la_SOURCES = \
WaitFor.c \
@@ -27,18 +27,18 @@ libos_la_SOURCES = \
xdmauth.c \
xstrans.c \
xprintf.c \
- $(XORG_SOURCES)
+ $(XORG_SRCS)
if XCSECURITY
-libos_la_SOURCES += $(XCSECURITY_SOURCES)
+libos_la_SOURCES += $(XCSECURITY_SRCS)
endif
if XDMCP
-libos_la_SOURCES += $(XDMCP_SOURCES)
+libos_la_SOURCES += $(XDMCP_SRCS)
endif
if NEED_STRLCAT
-libos_la_SOURCES += $(STRLCAT_SOURCES)
+libos_la_SOURCES += $(STRLCAT_SRCS)
endif
libcwrapper_la_SOURCES = \
@@ -48,5 +48,17 @@ libcwrapper_la_CFLAGS = \
-I$(top_srcdir)/hw/xfree86/os-support \
$(AM_CFLAGS)
-EXTRA_DIST = $(K5AUTH_SOURCES) $(SECURERPC_SOURCES) $(INTERNALMALLOC_SOURCES) \
- $(XCSECURITY_SOURCES) $(XDMCP_SOURCES) $(LBX_SOURCES) $(STRLCAT_SOURCES)
+EXTRA_DIST = $(K5AUTH_SRCS) $(SECURERPC_SRCS) $(INTERNALMALLOC_SRCS) \
+ $(XCSECURITY_SRCS) $(XDMCP_SRCS) $(STRLCAT_SRCS)
+
+if XSERVER_DTRACE
+# Generate dtrace object code for probes in libos & libdix
+dtrace.o: $(top_srcdir)/dix/Xserver.d $(am_libos_la_OBJECTS)
+ $(DTRACE) -G -C -o $@ -s $(top_srcdir)/dix/Xserver.d .libs/*.o ../dix/.libs/*.o
+
+noinst_PROGRAMS = os.O
+
+os.O: dtrace.o $(am_libos_la_OBJECTS)
+ ld -r -o $@ dtrace.o .libs/*.o
+
+endif
diff --git a/os/WaitFor.c b/os/WaitFor.c
index f7921c3d9..ba227a3b6 100644
--- a/os/WaitFor.c
+++ b/os/WaitFor.c
@@ -1,4 +1,3 @@
-/* $XFree86: xc/programs/Xserver/os/WaitFor.c,v 3.42 2003/10/16 01:33:35 dawes Exp $ */
/***********************************************************
Copyright 1987, 1998 The Open Group
@@ -46,7 +45,6 @@ SOFTWARE.
******************************************************************/
-/* $Xorg: WaitFor.c,v 1.4 2001/02/09 02:05:22 xorgcvs Exp $ */
/*****************************************************************
* OS Dependent input routines:
@@ -121,11 +119,13 @@ mffs(fd_mask mask)
struct _OsTimerRec {
OsTimerPtr next;
CARD32 expires;
+ CARD32 delta;
OsTimerCallback callback;
pointer arg;
};
static void DoTimer(OsTimerPtr timer, CARD32 now, OsTimerPtr *prev);
+static void CheckAllTimers(CARD32 now);
static OsTimerPtr timers = NULL;
/*****************
@@ -202,12 +202,20 @@ WaitForSomething(int *pClientsReady)
{
now = GetTimeInMillis();
timeout = timers->expires - now;
- if (timeout < 0)
- timeout = 0;
- waittime.tv_sec = timeout / MILLI_PER_SECOND;
- waittime.tv_usec = (timeout % MILLI_PER_SECOND) *
- (1000000 / MILLI_PER_SECOND);
- wt = &waittime;
+ if (timeout > 0 && timeout > timers->delta + 250) {
+ /* time has rewound. reset the timers. */
+ CheckAllTimers(now);
+ }
+
+ if (timers) {
+ timeout = timers->expires - now;
+ if (timeout < 0)
+ timeout = 0;
+ waittime.tv_sec = timeout / MILLI_PER_SECOND;
+ waittime.tv_usec = (timeout % MILLI_PER_SECOND) *
+ (1000000 / MILLI_PER_SECOND);
+ wt = &waittime;
+ }
}
XFD_COPYSET(&AllSockets, &LastSelectMask);
#ifdef SMART_SCHEDULE
@@ -428,6 +436,21 @@ ANYSET(FdMask *src)
}
#endif
+/* If time has rewound, re-run every affected timer.
+ * Timers might drop out of the list, so we have to restart every time. */
+static void
+CheckAllTimers(CARD32 now)
+{
+ OsTimerPtr timer;
+
+start:
+ for (timer = timers; timer; timer = timer->next) {
+ if (timer->expires - now > timer->delta + 250) {
+ TimerForce(timer);
+ goto start;
+ }
+ }
+}
static void
DoTimer(OsTimerPtr timer, CARD32 now, OsTimerPtr *prev)
@@ -469,8 +492,13 @@ TimerSet(OsTimerPtr timer, int flags, CARD32 millis,
}
if (!millis)
return timer;
- if (!(flags & TimerAbsolute))
+ if (flags & TimerAbsolute) {
+ timer->delta = millis - now;
+ }
+ else {
+ timer->delta = millis;
millis += now;
+ }
timer->expires = millis;
timer->callback = func;
timer->arg = arg;
@@ -484,7 +512,7 @@ TimerSet(OsTimerPtr timer, int flags, CARD32 millis,
for (prev = &timers;
*prev && (int) ((*prev)->expires - millis) <= 0;
prev = &(*prev)->next)
- ;
+ ;
timer->next = *prev;
*prev = timer;
return timer;
diff --git a/os/access.c b/os/access.c
index 62af2f91f..db5ca3135 100644
--- a/os/access.c
+++ b/os/access.c
@@ -1,5 +1,3 @@
-/* $Xorg: access.c,v 1.5 2001/02/09 02:05:23 xorgcvs Exp $ */
-/* $XdotOrg: xserver/xorg/os/access.c,v 1.15 2006/02/15 20:44:13 ajax Exp $ */
/***********************************************************
Copyright 1987, 1998 The Open Group
@@ -55,7 +53,6 @@ ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
SOFTWARE.
******************************************************************/
-/* $XFree86: xc/programs/Xserver/os/access.c,v 3.53 2004/01/02 18:23:19 tsi Exp $ */
#ifdef HAVE_DIX_CONFIG_H
#include <dix-config.h>
@@ -67,6 +64,9 @@ SOFTWARE.
#include <stdio.h>
#include <stdlib.h>
+#define XSERV_t
+#define TRANS_SERVER
+#define TRANS_REOPEN
#include <X11/Xtrans/Xtrans.h>
#include <X11/Xauth.h>
#include <X11/X.h>
@@ -202,10 +202,7 @@ SOFTWARE.
#include "dixstruct.h"
#include "osdep.h"
-#ifdef XCSECURITY
-#define _SECURITY_SERVER
-#include <X11/extensions/security.h>
-#endif
+#include "xace.h"
#ifndef PATH_MAX
#ifdef MAXPATHLEN
@@ -1189,7 +1186,11 @@ ResetHosts (char *display)
FreeHost (host);
}
+#if defined WIN32 && defined __MINGW32__
+#define ETC_HOST_PREFIX "X"
+#else
#define ETC_HOST_PREFIX "/etc/X"
+#endif
#define ETC_HOST_SUFFIX ".hosts"
fnamelen = strlen(ETC_HOST_PREFIX) + strlen(ETC_HOST_SUFFIX) +
strlen(display) + 1;
@@ -1383,15 +1384,6 @@ _X_EXPORT Bool LocalClient(ClientPtr client)
pointer addr;
register HOST *host;
-#ifdef XCSECURITY
- /* untrusted clients can't change host access */
- if (client->trustLevel != XSecurityClientTrusted)
- {
- SecurityAudit("client %d attempted to change host access\n",
- client->index);
- return FALSE;
- }
-#endif
if (!_XSERVTransGetPeerAddr (((OsCommPtr)client->osPrivate)->trans_conn,
&notused, &alen, &from))
{
@@ -1534,6 +1526,11 @@ AuthorizedClient(ClientPtr client)
{
if (!client || defeatAccessControl)
return TRUE;
+
+ /* untrusted clients can't change host access */
+ if (!XaceHook(XACE_HOSTLIST_ACCESS, client, DixWriteAccess))
+ return FALSE;
+
return LocalClient(client);
}
diff --git a/os/auth.c b/os/auth.c
index 19c5534d3..bf33b7ef1 100644
--- a/os/auth.c
+++ b/os/auth.c
@@ -1,4 +1,3 @@
-/* $Xorg: auth.c,v 1.5 2001/02/09 02:05:23 xorgcvs Exp $ */
/*
Copyright 1988, 1998 The Open Group
@@ -26,7 +25,6 @@ other dealings in this Software without prior written authorization
from The Open Group.
*/
-/* $XFree86: auth.c,v 1.13 2003/04/27 21:31:08 herrb Exp $ */
/*
* authorization hooks for the server
@@ -48,8 +46,7 @@ from The Open Group.
# include <sys/types.h>
# include <sys/stat.h>
#ifdef XCSECURITY
-#define _SECURITY_SERVER
-# include <X11/extensions/security.h>
+# include "securitysrv.h"
#endif
#ifdef WIN32
#include <X11/Xw32defs.h>
diff --git a/os/connection.c b/os/connection.c
index 21c1ea641..ffe911e45 100644
--- a/os/connection.c
+++ b/os/connection.c
@@ -1,4 +1,3 @@
-/* $Xorg: connection.c,v 1.6 2001/02/09 02:05:23 xorgcvs Exp $ */
/***********************************************************
Copyright 1987, 1989, 1998 The Open Group
@@ -45,7 +44,6 @@ ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
SOFTWARE.
******************************************************************/
-/* $XFree86: xc/programs/Xserver/os/connection.c,v 3.64 2003/10/07 22:50:42 herrb Exp $ */
/*****************************************************************
* Stuff to create connections --- OS dependent
*
@@ -148,11 +146,11 @@ extern __const__ int _nfiles;
#include "opaque.h"
#include "dixstruct.h"
#ifdef XAPPGROUP
-#include <X11/extensions/Xagsrv.h>
+#include "appgroup.h"
#endif
+#include "xace.h"
#ifdef XCSECURITY
-#define _SECURITY_SERVER
-#include <X11/extensions/security.h>
+#include "securitysrv.h"
#endif
#ifdef X_NOT_POSIX
@@ -165,6 +163,18 @@ extern __const__ int _nfiles;
#include <netdnet/dn.h>
#endif /* DNETCONN */
+#ifdef HAS_GETPEERUCRED
+# include <ucred.h>
+# include <zone.h>
+#endif
+
+#ifdef XSERVER_DTRACE
+# include <sys/types.h>
+typedef const char *string;
+# include "../dix/Xserver-dtrace.h"
+# include <ucred.h>
+#endif
+
int lastfdesc; /* maximum file descriptor */
fd_set WellKnownConnections; /* Listener mask */
@@ -549,6 +559,13 @@ AuthAudit (ClientPtr client, Bool letin,
{
char addr[128];
char *out = addr;
+ int client_uid;
+ char client_uid_string[64];
+#ifdef HAS_GETPEERUCRED
+ ucred_t *peercred = NULL;
+ pid_t client_pid = -1;
+ zoneid_t client_zid = -1;
+#endif
if (!len)
strcpy(out, "local host");
@@ -585,14 +602,44 @@ AuthAudit (ClientPtr client, Bool letin,
default:
strcpy(out, "unknown address");
}
+
+#ifdef HAS_GETPEERUCRED
+ if (getpeerucred(((OsCommPtr)client->osPrivate)->fd, &peercred) >= 0) {
+ client_uid = ucred_geteuid(peercred);
+ client_pid = ucred_getpid(peercred);
+ client_zid = ucred_getzoneid(peercred);
+
+ ucred_free(peercred);
+ snprintf(client_uid_string, sizeof(client_uid_string),
+ " (uid %ld, pid %ld, zone %ld)",
+ (long) client_uid, (long) client_pid, (long) client_zid);
+ }
+#else
+ if (LocalClientCred(client, &client_uid, NULL) != -1) {
+ snprintf(client_uid_string, sizeof(client_uid_string),
+ " (uid %d)", client_uid);
+ }
+#endif
+ else {
+ client_uid_string[0] = '\0';
+ }
- if (proto_n)
- AuditF("client %d %s from %s\n Auth name: %.*s ID: %d\n",
+#ifdef XSERVER_DTRACE
+ XSERVER_CLIENT_AUTH(client->index, addr, client_pid, client_zid);
+ if (auditTrailLevel > 1) {
+#endif
+ if (proto_n)
+ AuditF("client %d %s from %s%s\n Auth name: %.*s ID: %d\n",
+ client->index, letin ? "connected" : "rejected", addr,
+ client_uid_string, (int)proto_n, auth_proto, auth_id);
+ else
+ AuditF("client %d %s from %s%s\n",
client->index, letin ? "connected" : "rejected", addr,
- (int)proto_n, auth_proto, auth_id);
- else
- AuditF("client %d %s from %s\n",
- client->index, letin ? "connected" : "rejected", addr);
+ client_uid_string);
+
+#ifdef XSERVER_DTRACE
+ }
+#endif
}
XID
@@ -659,7 +706,11 @@ ClientAuthorized(ClientPtr client,
else
{
auth_id = (XID) 0;
+#ifdef XSERVER_DTRACE
+ if ((auditTrailLevel > 1) || XSERVER_CLIENT_AUTH_ENABLED())
+#else
if (auditTrailLevel > 1)
+#endif
AuthAudit(client, TRUE,
(struct sockaddr *) from, fromlen,
proto_n, auth_proto, auth_id);
@@ -675,7 +726,11 @@ ClientAuthorized(ClientPtr client,
return "Client is not authorized to connect to Server";
}
}
+#ifdef XSERVER_DTRACE
+ else if ((auditTrailLevel > 1) || XSERVER_CLIENT_AUTH_ENABLED())
+#else
else if (auditTrailLevel > 1)
+#endif
{
if (_XSERVTransGetPeerAddr (trans_conn,
&family, &fromlen, &from) != -1)
@@ -693,10 +748,9 @@ ClientAuthorized(ClientPtr client,
/* indicate to Xdmcp protocol that we've opened new client */
XdmcpOpenDisplay(priv->fd);
#endif /* XDMCP */
-#ifdef XAPPGROUP
- if (ClientStateCallback)
- XagCallClientStateChange (client);
-#endif
+
+ XaceHook(XACE_AUTH_AVAIL, client, auth_id);
+
/* At this point, if the client is authorized to change the access control
* list, we should getpeername() information, and add the client to
* the selfhosts list. It's not really the host machine, but the
@@ -754,6 +808,9 @@ AllocNewConnection (XtransConnInfo trans_conn, int fd, CARD32 conn_time)
ErrorF("AllocNewConnection: client index = %d, socket fd = %d\n",
client->index, fd);
#endif
+#ifdef XSERVER_DTRACE
+ XSERVER_CLIENT_CONNECT(client->index, fd);
+#endif
return client;
}
@@ -986,7 +1043,7 @@ CheckConnections(void)
FD_ZERO(&tmask);
FD_SET(curclient, &tmask);
r = Select (curclient + 1, &tmask, NULL, NULL, &notime);
- if (r < 0)
+ if (r < 0 && GetConnectionTranslation(curclient) > 0)
CloseDownClient(clients[GetConnectionTranslation(curclient)]);
}
#endif
@@ -1015,23 +1072,35 @@ CloseDownConnection(ClientPtr client)
}
_X_EXPORT void
-AddEnabledDevice(int fd)
+AddGeneralSocket(int fd)
{
- FD_SET(fd, &EnabledDevices);
FD_SET(fd, &AllSockets);
if (GrabInProgress)
FD_SET(fd, &SavedAllSockets);
}
_X_EXPORT void
-RemoveEnabledDevice(int fd)
+AddEnabledDevice(int fd)
+{
+ FD_SET(fd, &EnabledDevices);
+ AddGeneralSocket(fd);
+}
+
+_X_EXPORT void
+RemoveGeneralSocket(int fd)
{
- FD_CLR(fd, &EnabledDevices);
FD_CLR(fd, &AllSockets);
if (GrabInProgress)
FD_CLR(fd, &SavedAllSockets);
}
+_X_EXPORT void
+RemoveEnabledDevice(int fd)
+{
+ FD_CLR(fd, &EnabledDevices);
+ RemoveGeneralSocket(fd);
+}
+
/*****************
* OnlyListenToOneClient:
* Only accept requests from one client. Continue to handle new
diff --git a/os/io.c b/os/io.c
index a9527baa3..f6c666c0f 100644
--- a/os/io.c
+++ b/os/io.c
@@ -45,7 +45,6 @@ SOFTWARE.
******************************************************************/
-/* $Xorg: io.c,v 1.6 2001/02/09 02:05:23 xorgcvs Exp $ */
/*****************************************************************
* i/o functions
*
@@ -53,7 +52,6 @@ SOFTWARE.
* InsertFakeRequest, ResetCurrentRequest
*
*****************************************************************/
-/* $XFree86: xc/programs/Xserver/os/io.c,v 3.34 2002/05/31 18:46:05 dawes Exp $ */
#ifdef HAVE_DIX_CONFIG_H
#include <dix-config.h>
@@ -66,6 +64,9 @@ SOFTWARE.
#include <X11/Xwinsock.h>
#endif
#include <stdio.h>
+#define XSERV_t
+#define TRANS_SERVER
+#define TRANS_REOPEN
#include <X11/Xtrans/Xtrans.h>
#include <X11/Xmd.h>
#include <errno.h>
diff --git a/os/k5auth.c b/os/k5auth.c
index 78301ad10..7bc0ce822 100644
--- a/os/k5auth.c
+++ b/os/k5auth.c
@@ -1,4 +1,3 @@
-/* $Xorg: k5auth.c,v 1.4 2001/02/09 02:05:23 xorgcvs Exp $ */
/*
Copyright 1993, 1994, 1998 The Open Group
@@ -26,7 +25,6 @@ other dealings in this Software without prior written authorization
from The Open Group.
*/
-/* $XFree86: xc/programs/Xserver/os/k5auth.c,v 3.4 2001/01/17 22:37:10 dawes Exp $ */
/*
* Kerberos V5 authentication scheme
diff --git a/os/log.c b/os/log.c
index e31da9eef..b1d628c3f 100644
--- a/os/log.c
+++ b/os/log.c
@@ -76,7 +76,6 @@ OR PERFORMANCE OF THIS SOFTWARE.
* authorization from the copyright holder(s) and author(s).
*/
-/* $XFree86: xc/programs/Xserver/os/log.c,v 1.6 2003/11/07 13:45:27 tsi Exp $ */
#ifdef HAVE_DIX_CONFIG_H
#include <dix-config.h>
@@ -90,6 +89,7 @@ OR PERFORMANCE OF THIS SOFTWARE.
#include <stdlib.h> /* for malloc() */
#include <errno.h>
+#include "input.h"
#include "site.h"
#include "opaque.h"
@@ -405,6 +405,7 @@ void
AbortServer(void)
{
OsCleanup(TRUE);
+ CloseDownDevices();
AbortDDX();
fflush(stderr);
if (CoreDump)
diff --git a/os/mitauth.c b/os/mitauth.c
index 2f42fd41f..db66c44fb 100644
--- a/os/mitauth.c
+++ b/os/mitauth.c
@@ -1,4 +1,3 @@
-/* $Xorg: mitauth.c,v 1.4 2001/02/09 02:05:23 xorgcvs Exp $ */
/*
Copyright 1988, 1998 The Open Group
@@ -26,7 +25,6 @@ other dealings in this Software without prior written authorization
from The Open Group.
*/
-/* $XFree86: xc/programs/Xserver/os/mitauth.c,v 1.4 2001/01/17 22:37:11 dawes Exp $ */
/*
* MIT-MAGIC-COOKIE-1 authorization scheme
diff --git a/os/oscolor.c b/os/oscolor.c
index ab8baf1bf..a13a3a68c 100644
--- a/os/oscolor.c
+++ b/os/oscolor.c
@@ -1,4 +1,3 @@
-/* $XFree86: xc/programs/Xserver/os/oscolor.c,v 3.10 2003/07/16 01:39:03 dawes Exp $ */
/***********************************************************
Copyright 1987, 1998 The Open Group
@@ -45,7 +44,6 @@ ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
SOFTWARE.
******************************************************************/
-/* $Xorg: oscolor.c,v 1.4 2001/02/09 02:05:23 xorgcvs Exp $ */
#ifdef HAVE_DIX_CONFIG_H
#include <dix-config.h>
diff --git a/os/osdep.h b/os/osdep.h
index 259237d37..5fa1e3918 100644
--- a/os/osdep.h
+++ b/os/osdep.h
@@ -1,4 +1,3 @@
-/* $XFree86: xc/programs/Xserver/os/osdep.h,v 3.17 2002/05/31 18:46:06 dawes Exp $ */
/***********************************************************
Copyright 1987, 1998 The Open Group
@@ -45,7 +44,6 @@ ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
SOFTWARE.
******************************************************************/
-/* $Xorg: osdep.h,v 1.5 2001/02/09 02:05:23 xorgcvs Exp $ */
#ifdef HAVE_DIX_CONFIG_H
#include <dix-config.h>
diff --git a/os/osinit.c b/os/osinit.c
index 4e502830a..9a1c1133a 100644
--- a/os/osinit.c
+++ b/os/osinit.c
@@ -1,4 +1,3 @@
-/* $XFree86: xc/programs/Xserver/os/osinit.c,v 3.29 2003/09/09 03:20:41 dawes Exp $ */
/***********************************************************
Copyright 1987, 1998 The Open Group
@@ -45,7 +44,6 @@ ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
SOFTWARE.
******************************************************************/
-/* $Xorg: osinit.c,v 1.4 2001/02/09 02:05:23 xorgcvs Exp $ */
#ifdef HAVE_DIX_CONFIG_H
#include <dix-config.h>
diff --git a/os/rpcauth.c b/os/rpcauth.c
index 3c5cb5946..603844aee 100644
--- a/os/rpcauth.c
+++ b/os/rpcauth.c
@@ -1,4 +1,3 @@
-/* $Xorg: rpcauth.c,v 1.4 2001/02/09 02:05:23 xorgcvs Exp $ */
/*
Copyright 1991, 1998 The Open Group
@@ -26,7 +25,6 @@ other dealings in this Software without prior written authorization
from The Open Group.
*/
-/* $XFree86: xc/programs/Xserver/os/rpcauth.c,v 3.7 2001/12/14 20:00:35 dawes Exp $ */
/*
* SUN-DES-1 authentication mechanism
diff --git a/os/secauth.c b/os/secauth.c
index 1000b4e79..d01879bfd 100644
--- a/os/secauth.c
+++ b/os/secauth.c
@@ -1,4 +1,3 @@
-/* $Xorg: secauth.c,v 1.4 2001/02/09 02:05:23 xorgcvs Exp $ */
/*
Copyright 1996, 1998 The Open Group
@@ -24,7 +23,6 @@ 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/os/secauth.c,v 1.10 2001/08/01 00:44:59 tsi Exp $ */
#ifdef HAVE_DIX_CONFIG_H
#include <dix-config.h>
@@ -37,8 +35,7 @@ from The Open Group.
#include "swaprep.h"
#ifdef XCSECURITY
-#define _SECURITY_SERVER
-#include <X11/extensions/security.h>
+#include "securitysrv.h"
#endif
static char InvalidPolicyReason[] = "invalid policy specification";
diff --git a/os/utils.c b/os/utils.c
index bfbc367c5..9824501e7 100644
--- a/os/utils.c
+++ b/os/utils.c
@@ -1,5 +1,3 @@
-/* $XdotOrg: xserver/xorg/os/utils.c,v 1.25 2006/03/25 19:52:05 ajax Exp $ */
-/* $Xorg: utils.c,v 1.5 2001/02/09 02:05:24 xorgcvs Exp $ */
/*
Copyright 1987, 1998 The Open Group
@@ -50,12 +48,28 @@ OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE
OR PERFORMANCE OF THIS SOFTWARE.
*/
-/* $XFree86: xc/programs/Xserver/os/utils.c,v 3.96 2004/01/07 04:16:37 dawes Exp $ */
#ifdef HAVE_DIX_CONFIG_H
#include <dix-config.h>
#endif
+/* The world's most shocking hack, to ensure we get clock_gettime() and
+ * CLOCK_MONOTONIC. */
+#ifdef sun /* Needed to tell Solaris headers not to restrict to */
+#define __EXTENSIONS__ /* only the functions defined in POSIX 199309. */
+#endif
+
+#ifdef _POSIX_C_SOURCE
+#define _SAVED_POSIX_C_SOURCE _POSIX_C_SOURCE
+#undef _POSIX_C_SOURCE
+#endif
+#define _POSIX_C_SOURCE 199309L
+#include <time.h>
+#undef _POSIX_C_SOURCE
+#ifdef _SAVED_POSIX_C_SOURCE
+#define _POSIX_C_SOURCE _SAVED_POSIX_C_SOURCE
+#endif
+
#ifdef __CYGWIN__
#include <stdlib.h>
#include <signal.h>
@@ -68,10 +82,14 @@ OR PERFORMANCE OF THIS SOFTWARE.
#include <stdio.h>
#include "misc.h"
#include <X11/X.h>
+#define XSERV_t
+#define TRANS_SERVER
+#define TRANS_REOPEN
#include <X11/Xtrans/Xtrans.h>
#include "input.h"
#include "dixfont.h"
#include "osdep.h"
+#include "extension.h"
#ifdef X_POSIX_C_SOURCE
#define _POSIX_C_SOURCE X_POSIX_C_SOURCE
#include <signal.h>
@@ -91,7 +109,6 @@ OR PERFORMANCE OF THIS SOFTWARE.
#if !defined(SYSV) && !defined(WIN32) && !defined(Lynx) && !defined(QNX4)
#include <sys/resource.h>
#endif
-#include <time.h>
#include <sys/stat.h>
#include <ctype.h> /* for isspace */
#include <stdarg.h>
@@ -119,8 +136,7 @@ OR PERFORMANCE OF THIS SOFTWARE.
#include <X11/extensions/XKBsrv.h>
#endif
#ifdef XCSECURITY
-#define _SECURITY_SERVER
-#include <X11/extensions/security.h>
+#include "securitysrv.h"
#endif
#ifdef RENDER
@@ -136,13 +152,9 @@ _X_EXPORT Bool noTestExtensions;
_X_EXPORT Bool noBigReqExtension = FALSE;
#endif
#ifdef COMPOSITE
- #ifdef XFree86Server
- /* COMPOSITE is disabled by default for now until the
- * interface is stable */
- #define COMPOSITE_DEFAULT FALSE
- #else
- #define COMPOSITE_DEFAULT TRUE
- #endif
+ /* COMPOSITE is disabled by default for now until the
+ * interface is stable */
+ #define COMPOSITE_DEFAULT FALSE
_X_EXPORT Bool noCompositeExtension = !COMPOSITE_DEFAULT;
#endif
@@ -265,12 +277,6 @@ int SyncOn = 0;
extern int SelectWaitTime;
#endif
-#ifdef DEBUG
-#ifndef SPECIAL_MALLOC
-#define MEMBUG
-#endif
-#endif
-
#if defined(SVR4) || defined(__linux__) || defined(CSRG_BASED)
#define HAS_SAVED_IDS_AND_SETEUID
#endif
@@ -281,18 +287,8 @@ long Memory_fail = 0;
#include <stdlib.h> /* for random() */
#endif
-#ifdef sgi
-int userdefinedfontpath = 0;
-#endif /* sgi */
-
char *dev_tty_from_init = NULL; /* since we need to parse it anyway */
-extern char dispatchExceptionAtReset;
-
-/* Extension enable/disable in miinitext.c */
-extern Bool EnableDisableExtension(char *name, Bool enable);
-extern void EnableDisableExtensionError(char *name, Bool enable);
-
OsSigHandlerPtr
OsSignal(sig, handler)
int sig;
@@ -552,17 +548,21 @@ GiveUp(int sig)
errno = olderrno;
}
-#ifndef DDXTIME
_X_EXPORT CARD32
GetTimeInMillis(void)
{
- struct timeval tp;
+ struct timeval tv;
- X_GETTIMEOFDAY(&tp);
- return(tp.tv_sec * 1000) + (tp.tv_usec / 1000);
-}
+#ifdef MONOTONIC_CLOCK
+ struct timespec tp;
+ if (clock_gettime(CLOCK_MONOTONIC, &tp) == 0)
+ return (tp.tv_sec * 1000) + (tp.tv_nsec / 1000000L);
#endif
+ X_GETTIMEOFDAY(&tv);
+ return(tv.tv_sec * 1000) + (tv.tv_usec / 1000);
+}
+
_X_EXPORT void
AdjustWaitForDelay (pointer waitTime, unsigned long newdelay)
{
@@ -598,7 +598,6 @@ void UseMsg(void)
#endif
ErrorF("-audit int set audit trail level\n");
ErrorF("-auth file select authorization file\n");
- ErrorF("bc enable bug compatibility\n");
ErrorF("-br create root window with black background\n");
ErrorF("+bs enable any backing store support\n");
ErrorF("-bs disable any backing store support\n");
@@ -665,6 +664,7 @@ void UseMsg(void)
ErrorF("v video blanking for screen-saver\n");
ErrorF("-v screen-saver without video blanking\n");
ErrorF("-wm WhenMapped default backing-store\n");
+ ErrorF("-wr create root window with white background\n");
ErrorF("-x string loads named extension at init time \n");
ErrorF("-maxbigreqsize set maximal bigrequest size \n");
#ifdef PANORAMIX
@@ -786,8 +786,6 @@ ProcessCommandLine(int argc, char *argv[])
else
UseMsg();
}
- else if ( strcmp( argv[i], "bc") == 0)
- permitOldBugs = TRUE;
else if ( strcmp( argv[i], "-br") == 0)
blackRoot = TRUE;
else if ( strcmp( argv[i], "+bs") == 0)
@@ -864,9 +862,6 @@ ProcessCommandLine(int argc, char *argv[])
{
if(++i < argc)
{
-#ifdef sgi
- userdefinedfontpath = 1;
-#endif /* sgi */
defaultFontPath = argv[i];
}
else
@@ -1011,6 +1006,8 @@ ProcessCommandLine(int argc, char *argv[])
defaultScreenSaverBlanking = DontPreferBlanking;
else if ( strcmp( argv[i], "-wm") == 0)
defaultBackingStore = WhenMapped;
+ else if ( strcmp( argv[i], "-wr") == 0)
+ whiteRoot = TRUE;
else if ( strcmp( argv[i], "-maxbigreqsize") == 0) {
if(++i < argc) {
long reqSizeArg = atol(argv[i]);
@@ -1718,8 +1715,10 @@ System(char *command)
case -1: /* error */
p = -1;
case 0: /* child */
- setgid(getgid());
- setuid(getuid());
+ if (setgid(getgid()) == -1)
+ _exit(127);
+ if (setuid(getuid()) == -1)
+ _exit(127);
execl("/bin/sh", "sh", "-c", command, (char *)NULL);
_exit(127);
default: /* parent */
@@ -1770,8 +1769,10 @@ Popen(char *command, char *type)
xfree(cur);
return NULL;
case 0: /* child */
- setgid(getgid());
- setuid(getuid());
+ if (setgid(getgid()) == -1)
+ _exit(127);
+ if (setuid(getuid()) == -1)
+ _exit(127);
if (*type == 'r') {
if (pdes[1] != 1) {
/* stdout */
@@ -1845,8 +1846,10 @@ Fopen(char *file, char *type)
xfree(cur);
return NULL;
case 0: /* child */
- setgid(getgid());
- setuid(getuid());
+ if (setgid(getgid()) == -1)
+ _exit(127);
+ if (setuid(getuid()) == -1)
+ _exit(127);
if (*type == 'r') {
if (pdes[1] != 1) {
/* stdout */
diff --git a/os/xalloc.c b/os/xalloc.c
index effe9514a..8c019f3bc 100644
--- a/os/xalloc.c
+++ b/os/xalloc.c
@@ -26,7 +26,6 @@ dealings in this Software without prior written authorization from
Pascal Haible.
*/
-/* $XFree86: xc/programs/Xserver/os/xalloc.c,v 3.35tsi Exp $ */
/* Only used if INTERNAL_MALLOC is defined
* - otherwise xalloc() in utils.c is used
diff --git a/os/xdmauth.c b/os/xdmauth.c
index 774298133..d143ddefc 100644
--- a/os/xdmauth.c
+++ b/os/xdmauth.c
@@ -1,4 +1,3 @@
-/* $Xorg: xdmauth.c,v 1.4 2001/02/09 02:05:24 xorgcvs Exp $ */
/*
Copyright 1988, 1998 The Open Group
@@ -26,7 +25,6 @@ other dealings in this Software without prior written authorization
from The Open Group.
*/
-/* $XFree86: xdmauth.c,v 1.7 2002/11/05 05:50:34 keithp Exp $ */
/*
* XDM-AUTHENTICATION-1 (XDMCP authentication) and
@@ -41,6 +39,9 @@ from The Open Group.
#include <stdio.h>
#include <X11/X.h>
+#define XSERV_t
+#define TRANS_SERVER
+#define TRANS_REOPEN
#include <X11/Xtrans/Xtrans.h>
#include "os.h"
#include "osdep.h"
@@ -153,9 +154,9 @@ XdmAuthenticationInit (char *cookie, int cookie_len)
XdmcpRegisterAuthentication (XdmAuthenticationName, XdmAuthenticationNameLen,
(unsigned char *)&rho,
sizeof (rho),
- XdmAuthenticationValidator,
- XdmAuthenticationGenerator,
- XdmAuthenticationAddAuth);
+ (ValidatorFunc)XdmAuthenticationValidator,
+ (GeneratorFunc)XdmAuthenticationGenerator,
+ (AddAuthorFunc)XdmAuthenticationAddAuth);
}
#endif /* XDMCP */
diff --git a/os/xdmcp.c b/os/xdmcp.c
index 3aad4eee3..fd4be5e81 100644
--- a/os/xdmcp.c
+++ b/os/xdmcp.c
@@ -1,5 +1,3 @@
-/* $XdotOrg: xc/programs/Xserver/os/xdmcp.c,v 1.7 2005/05/02 21:57:32 harold Exp $ */
-/* $Xorg: xdmcp.c,v 1.4 2001/01/31 13:37:19 pookie Exp $ */
/*
* Copyright 1989 Network Computing Devices, Inc., Mountain View, California.
*
@@ -14,7 +12,6 @@
* without express or implied warranty.
*
*/
-/* $XFree86: xc/programs/Xserver/os/xdmcp.c,v 3.31 2003/12/30 21:24:32 herrb Exp $ */
#ifdef HAVE_DIX_CONFIG_H
#include <dix-config.h>
@@ -1603,6 +1600,10 @@ get_fromaddr_by_name(
, &ai, &aifirst
#endif
);
+#if defined(IPv6) && defined(AF_INET6)
+ if (aifirst != NULL)
+ freeaddrinfo(aifirst);
+#endif
xdm_from = argv[i];
}
diff --git a/randr/Makefile.am b/randr/Makefile.am
index 753eebb54..9bf0e6531 100644
--- a/randr/Makefile.am
+++ b/randr/Makefile.am
@@ -1,6 +1,6 @@
noinst_LTLIBRARIES = librandr.la
-AM_CFLAGS = $(DIX_CFLAGS) @SERVER_DEFINES@ @LOADER_DEFINES@
+AM_CFLAGS = $(DIX_CFLAGS)
if XORG
sdk_HEADERS = randrstr.h
@@ -9,4 +9,14 @@ endif
librandr_la_SOURCES = \
mirandr.c \
randr.c \
- randrstr.h
+ randrstr.h \
+ rrcrtc.c \
+ rrdispatch.c \
+ rrinfo.c \
+ rrmode.c \
+ rroutput.c \
+ rrpointer.c \
+ rrproperty.c \
+ rrscreen.c \
+ rrsdispatch.c \
+ rrxinerama.c
diff --git a/randr/mirandr.c b/randr/mirandr.c
index b1e19a746..0b763e111 100644
--- a/randr/mirandr.c
+++ b/randr/mirandr.c
@@ -1,76 +1,42 @@
/*
- * $XFree86: xc/programs/Xserver/randr/mirandr.c,v 1.5 2001/06/04 09:45:40 keithp Exp $
- *
- * Copyright © 2000, Compaq Computer Corporation,
- * Copyright © 2002, Hewlett Packard, Inc.
+ * Copyright © 2000 Compaq Computer Corporation
+ * Copyright © 2002 Hewlett-Packard Company
+ * Copyright © 2006 Intel 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 Compaq or HP not be used in advertising
- * or publicity pertaining to distribution of the software without specific,
- * written prior permission. HP makes no representations about the
- * suitability of this software for any purpose. It is provided "as is"
- * without express or implied warranty.
+ * the above copyright 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.
*
- * HP DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING ALL
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL HP
- * BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
- * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER 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 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.
*
- * Author: Jim Gettys, HP Labs, Hewlett-Packard, Inc.
+ * Author: Jim Gettys, Hewlett-Packard Company, Inc.
+ * Keith Packard, Intel Corporation
*/
-
#ifdef HAVE_DIX_CONFIG_H
#include <dix-config.h>
#endif
#include "scrnintstr.h"
#include "mi.h"
-#include <X11/extensions/randr.h>
#include "randrstr.h"
#include <stdio.h>
-/*
- * This function assumes that only a single depth can be
- * displayed at a time, but that all visuals of that depth
- * can be displayed simultaneously. It further assumes that
- * only a single size is available. Hardware providing
- * additional capabilties should use different code.
- * XXX what to do here....
- */
-
Bool
miRRGetInfo (ScreenPtr pScreen, Rotation *rotations)
{
- int i;
- Bool setConfig = FALSE;
-
- *rotations = RR_Rotate_0;
- for (i = 0; i < pScreen->numDepths; i++)
- {
- if (pScreen->allowedDepths[i].numVids)
- {
- RRScreenSizePtr pSize;
-
- pSize = RRRegisterSize (pScreen,
- pScreen->width,
- pScreen->height,
- pScreen->mmWidth,
- pScreen->mmHeight);
- if (!pSize)
- return FALSE;
- if (!setConfig)
- {
- RRSetCurrentConfig (pScreen, RR_Rotate_0, 0, pSize);
- setConfig = TRUE;
- }
- }
- }
return TRUE;
}
@@ -79,24 +45,102 @@ miRRGetInfo (ScreenPtr pScreen, Rotation *rotations)
* different here
*/
Bool
-miRRSetConfig (ScreenPtr pScreen,
- Rotation rotation,
- int rate,
- RRScreenSizePtr pSize)
+miRRCrtcSet (ScreenPtr pScreen,
+ RRCrtcPtr crtc,
+ RRModePtr mode,
+ int x,
+ int y,
+ Rotation rotation,
+ int numOutput,
+ RROutputPtr *outputs)
{
return TRUE;
}
+static Bool
+miRRCrtcSetGamma (ScreenPtr pScreen,
+ RRCrtcPtr crtc)
+{
+ return TRUE;
+}
+
+Bool
+miRROutputSetProperty (ScreenPtr pScreen,
+ RROutputPtr output,
+ Atom property,
+ RRPropertyValuePtr value)
+{
+ return TRUE;
+}
+
+/*
+ * This function assumes that only a single depth can be
+ * displayed at a time, but that all visuals of that depth
+ * can be displayed simultaneously. It further assumes that
+ * only a single size is available. Hardware providing
+ * additional capabilties should use different code.
+ * XXX what to do here....
+ */
Bool
miRandRInit (ScreenPtr pScreen)
{
- rrScrPrivPtr rp;
+ rrScrPrivPtr pScrPriv;
+#if RANDR_12_INTERFACE
+ RRModePtr mode;
+ RRCrtcPtr crtc;
+ RROutputPtr output;
+ xRRModeInfo modeInfo;
+ char name[64];
+#endif
if (!RRScreenInit (pScreen))
return FALSE;
- rp = rrGetScrPriv(pScreen);
- rp->rrGetInfo = miRRGetInfo;
- rp->rrSetConfig = miRRSetConfig;
+ pScrPriv = rrGetScrPriv(pScreen);
+ pScrPriv->rrGetInfo = miRRGetInfo;
+#if RANDR_12_INTERFACE
+ pScrPriv->rrCrtcSet = miRRCrtcSet;
+ pScrPriv->rrCrtcSetGamma = miRRCrtcSetGamma;
+ pScrPriv->rrOutputSetProperty = miRROutputSetProperty;
+
+
+ RRScreenSetSizeRange (pScreen,
+ pScreen->width, pScreen->height,
+ pScreen->width, pScreen->height);
+
+ sprintf (name, "%dx%d", pScreen->width, pScreen->height);
+ memset (&modeInfo, '\0', sizeof (modeInfo));
+ modeInfo.width = pScreen->width;
+ modeInfo.height = pScreen->height;
+ modeInfo.nameLength = strlen (name);
+
+ mode = RRModeGet (&modeInfo, name);
+ if (!mode)
+ return FALSE;
+
+ crtc = RRCrtcCreate (NULL);
+ if (!crtc)
+ return FALSE;
+ if (!RRCrtcAttachScreen (crtc, pScreen))
+ {
+ RRCrtcDestroy (crtc);
+ return FALSE;
+ }
+
+ output = RROutputCreate ("screen", 6, NULL);
+ if (!output)
+ return FALSE;
+ if (!RROutputAttachScreen (output, pScreen))
+ return FALSE;
+ if (!RROutputSetClones (output, NULL, 0))
+ return FALSE;
+ if (!RROutputSetModes (output, &mode, 1, 0))
+ return FALSE;
+ if (!RROutputSetCrtcs (output, &crtc, 1))
+ return FALSE;
+ if (!RROutputSetConnection (output, RR_Connected))
+ return FALSE;
+ RRCrtcNotify (crtc, mode, 0, 0, RR_Rotate_0, 1, &output);
+#endif
return TRUE;
}
diff --git a/randr/randr.c b/randr/randr.c
index bcaa232c9..1470035ca 100644
--- a/randr/randr.c
+++ b/randr/randr.c
@@ -1,55 +1,37 @@
/*
- * $XFree86: xc/programs/Xserver/randr/randr.c,v 1.21tsi Exp $
- *
- * Copyright © 2000, Compaq Computer Corporation,
- * Copyright © 2002, Hewlett Packard, Inc.
+ * Copyright © 2000 Compaq Computer Corporation
+ * Copyright © 2002 Hewlett-Packard Company
+ * Copyright © 2006 Intel 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 Compaq or HP not be used in advertising
- * or publicity pertaining to distribution of the software without specific,
- * written prior permission. HP makes no representations about the
- * suitability of this software for any purpose. It is provided "as is"
- * without express or implied warranty.
+ * the above copyright 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.
*
- * HP DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING ALL
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL HP
- * BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
- * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER 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 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.
*
- * Author: Jim Gettys, HP Labs, Hewlett-Packard, Inc.
+ * Author: Jim Gettys, Hewlett-Packard Company, Inc.
+ * Keith Packard, Intel Corporation
*/
-
#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 "misc.h"
-#include "os.h"
-#include "dixstruct.h"
-#include "resource.h"
-#include "scrnintstr.h"
-#include "windowstr.h"
-#include "pixmapstr.h"
-#include "extnsionst.h"
-#include "servermd.h"
-#include <X11/extensions/randr.h>
-#include <X11/extensions/randrproto.h>
#include "randrstr.h"
-#ifdef RENDER
-#include <X11/extensions/render.h> /* we share subpixel order information */
-#include "picturestr.h"
-#endif
-#include <X11/Xfuncproto.h>
/* From render.h */
#ifndef SubPixelUnknown
@@ -57,13 +39,7 @@
#endif
#define RR_VALIDATE
-int RRGeneration;
-int RRNScreens;
-
-static int ProcRRQueryVersion (ClientPtr pClient);
-static int ProcRRDispatch (ClientPtr pClient);
-static int SProcRRDispatch (ClientPtr pClient);
-static int SProcRRQueryVersion (ClientPtr pClient);
+static int RRNScreens;
#define wrap(priv,real,mem,func) {\
priv->mem = real->mem; \
@@ -74,57 +50,16 @@ static int SProcRRQueryVersion (ClientPtr pClient);
real->mem = priv->mem; \
}
-#if 0
-static CARD8 RRReqCode;
-static int RRErrBase;
-#endif
-static int RREventBase;
-static RESTYPE ClientType, EventType; /* resource types for event masks */
-static int RRClientPrivateIndex;
-
-typedef struct _RRTimes {
- TimeStamp setTime;
- TimeStamp configTime;
-} RRTimesRec, *RRTimesPtr;
-
-typedef struct _RRClient {
- int major_version;
- int minor_version;
-/* RRTimesRec times[0]; */
-} RRClientRec, *RRClientPtr;
-
-/*
- * each window has a list of clients requesting
- * RRNotify events. Each client has a resource
- * for each window it selects RRNotify input for,
- * this resource is used to delete the RRNotifyRec
- * entry from the per-window queue.
- */
-
-typedef struct _RREvent *RREventPtr;
+static int ProcRRDispatch (ClientPtr pClient);
+static int SProcRRDispatch (ClientPtr pClient);
-typedef struct _RREvent {
- RREventPtr next;
- ClientPtr client;
- WindowPtr window;
- XID clientResource;
- int mask;
-} RREventRec;
+int RREventBase;
+int RRErrorBase;
+RESTYPE RRClientType, RREventType; /* resource types for event masks */
+int RRClientPrivateIndex;
int rrPrivIndex = -1;
-#define GetRRClient(pClient) ((RRClientPtr) (pClient)->devPrivates[RRClientPrivateIndex].ptr)
-#define rrClientPriv(pClient) RRClientPtr pRRClient = GetRRClient(pClient)
-
-static Bool
-RRClientKnowsRates (ClientPtr pClient)
-{
- rrClientPriv(pClient);
-
- return (pRRClient->major_version > 1 ||
- (pRRClient->major_version == 1 && pRRClient->minor_version >= 1));
-}
-
static void
RRClientCallback (CallbackListPtr *list,
pointer closure,
@@ -160,10 +95,14 @@ static Bool
RRCloseScreen (int i, ScreenPtr pScreen)
{
rrScrPriv(pScreen);
+ int j;
unwrap (pScrPriv, pScreen, CloseScreen);
- if (pScrPriv->pSizes)
- xfree (pScrPriv->pSizes);
+ for (j = pScrPriv->numCrtcs - 1; j >= 0; j--)
+ RRCrtcDestroy (pScrPriv->crtcs[j]);
+ for (j = pScrPriv->numOutputs - 1; j >= 0; j--)
+ RROutputDestroy (pScrPriv->outputs[j]);
+
xfree (pScrPriv);
RRNScreens -= 1; /* ok, one fewer screen with RandR running */
return (*pScreen->CloseScreen) (i, pScreen);
@@ -188,15 +127,107 @@ SRRScreenChangeNotifyEvent(xRRScreenChangeNotifyEvent *from,
cpswaps(from->subpixelOrder, to->subpixelOrder);
}
+static void
+SRRCrtcChangeNotifyEvent(xRRCrtcChangeNotifyEvent *from,
+ xRRCrtcChangeNotifyEvent *to)
+{
+ to->type = from->type;
+ to->subCode = from->subCode;
+ cpswaps(from->sequenceNumber, to->sequenceNumber);
+ cpswapl(from->timestamp, to->timestamp);
+ cpswapl(from->window, to->window);
+ cpswapl(from->crtc, to->crtc);
+ cpswapl(from->mode, to->mode);
+ cpswapl(from->window, to->window);
+ cpswaps(from->rotation, to->rotation);
+ cpswaps(from->x, to->x);
+ cpswaps(from->y, to->y);
+ cpswaps(from->width, to->width);
+ cpswaps(from->height, to->height);
+}
+
+static void
+SRROutputChangeNotifyEvent(xRROutputChangeNotifyEvent *from,
+ xRROutputChangeNotifyEvent *to)
+{
+ to->type = from->type;
+ to->subCode = from->subCode;
+ cpswaps(from->sequenceNumber, to->sequenceNumber);
+ cpswapl(from->timestamp, to->timestamp);
+ cpswapl(from->configTimestamp, to->configTimestamp);
+ cpswapl(from->window, to->window);
+ cpswapl(from->output, to->output);
+ cpswapl(from->crtc, to->crtc);
+ cpswapl(from->mode, to->mode);
+ cpswaps(from->rotation, to->rotation);
+}
+
+static void
+SRROutputPropertyNotifyEvent(xRROutputPropertyNotifyEvent *from,
+ xRROutputPropertyNotifyEvent *to)
+{
+ to->type = from->type;
+ to->subCode = from->subCode;
+ cpswaps(from->sequenceNumber, to->sequenceNumber);
+ cpswapl(from->window, to->window);
+ cpswapl(from->output, to->output);
+ cpswapl(from->atom, to->atom);
+ cpswapl(from->timestamp, to->timestamp);
+}
+
+static void
+SRRNotifyEvent (xEvent *from,
+ xEvent *to)
+{
+ switch (from->u.u.detail) {
+ case RRNotify_CrtcChange:
+ SRRCrtcChangeNotifyEvent ((xRRCrtcChangeNotifyEvent *) from,
+ (xRRCrtcChangeNotifyEvent *) to);
+ break;
+ case RRNotify_OutputChange:
+ SRROutputChangeNotifyEvent ((xRROutputChangeNotifyEvent *) from,
+ (xRROutputChangeNotifyEvent *) to);
+ break;
+ case RRNotify_OutputProperty:
+ SRROutputPropertyNotifyEvent ((xRROutputPropertyNotifyEvent *) from,
+ (xRROutputPropertyNotifyEvent *) to);
+ break;
+ default:
+ break;
+ }
+}
+
+static int RRGeneration;
+
+Bool RRInit (void)
+{
+ if (RRGeneration != serverGeneration)
+ {
+ if (!RRModeInit ())
+ return FALSE;
+ if (!RRCrtcInit ())
+ return FALSE;
+ if (!RROutputInit ())
+ return FALSE;
+ RRGeneration = serverGeneration;
+ }
+ return TRUE;
+}
+
+static int RRScreenGeneration;
+
Bool RRScreenInit(ScreenPtr pScreen)
{
rrScrPrivPtr pScrPriv;
- if (RRGeneration != serverGeneration)
+ if (!RRInit ())
+ return FALSE;
+
+ if (RRScreenGeneration != serverGeneration)
{
if ((rrPrivIndex = AllocateScreenPrivateIndex()) < 0)
return FALSE;
- RRGeneration = serverGeneration;
+ RRScreenGeneration = serverGeneration;
}
pScrPriv = (rrScrPrivPtr) xalloc (sizeof (rrScrPrivRec));
@@ -208,8 +239,27 @@ Bool RRScreenInit(ScreenPtr pScreen)
/*
* Calling function best set these function vectors
*/
- pScrPriv->rrSetConfig = 0;
pScrPriv->rrGetInfo = 0;
+ pScrPriv->maxWidth = pScrPriv->minWidth = pScreen->width;
+ pScrPriv->maxHeight = pScrPriv->minHeight = pScreen->height;
+
+#if RANDR_12_INTERFACE
+ pScrPriv->rrScreenSetSize = NULL;
+ pScrPriv->rrCrtcSet = NULL;
+ pScrPriv->rrCrtcSetGamma = NULL;
+#endif
+#if RANDR_10_INTERFACE
+ pScrPriv->rrSetConfig = 0;
+ pScrPriv->rotations = RR_Rotate_0;
+ pScrPriv->reqWidth = pScreen->width;
+ pScrPriv->reqHeight = pScreen->height;
+ pScrPriv->nSizes = 0;
+ pScrPriv->pSizes = NULL;
+ pScrPriv->rotation = RR_Rotate_0;
+ pScrPriv->rate = 0;
+ pScrPriv->size = 0;
+#endif
+
/*
* This value doesn't really matter -- any client must call
* GetScreenInfo before reading it which will automatically update
@@ -220,14 +270,10 @@ Bool RRScreenInit(ScreenPtr pScreen)
wrap (pScrPriv, pScreen, CloseScreen, RRCloseScreen);
- pScrPriv->rotations = RR_Rotate_0;
-
- pScrPriv->nSizes = 0;
- pScrPriv->nSizesInUse = 0;
- pScrPriv->pSizes = 0;
-
- pScrPriv->rotation = RR_Rotate_0;
- pScrPriv->size = -1;
+ pScrPriv->numOutputs = 0;
+ pScrPriv->outputs = NULL;
+ pScrPriv->numCrtcs = 0;
+ pScrPriv->crtcs = NULL;
RRNScreens += 1; /* keep count of screens that implement randr */
return TRUE;
@@ -243,7 +289,7 @@ RRFreeClient (pointer data, XID id)
pRREvent = (RREventPtr) data;
pWin = pRREvent->window;
- pHead = (RREventPtr *) LookupIDByType(pWin->drawable.id, EventType);
+ pHead = (RREventPtr *) LookupIDByType(pWin->drawable.id, RREventType);
if (pHead) {
pPrev = 0;
for (pCur = *pHead; pCur && pCur != pRREvent; pCur=pCur->next)
@@ -269,7 +315,7 @@ RRFreeEvents (pointer data, XID id)
pHead = (RREventPtr *) data;
for (pCur = *pHead; pCur; pCur = pNext) {
pNext = pCur->next;
- FreeResource (pCur->clientResource, ClientType);
+ FreeResource (pCur->clientResource, RRClientType);
xfree ((pointer) pCur);
}
xfree ((pointer) pHead);
@@ -291,1037 +337,156 @@ RRExtensionInit (void)
if (!AddCallback (&ClientStateCallback, RRClientCallback, 0))
return;
- ClientType = CreateNewResourceType(RRFreeClient);
- if (!ClientType)
+ RRClientType = CreateNewResourceType(RRFreeClient);
+ if (!RRClientType)
return;
- EventType = CreateNewResourceType(RRFreeEvents);
- if (!EventType)
+ RREventType = CreateNewResourceType(RRFreeEvents);
+ if (!RREventType)
return;
extEntry = AddExtension (RANDR_NAME, RRNumberEvents, RRNumberErrors,
ProcRRDispatch, SProcRRDispatch,
RRResetProc, StandardMinorOpcode);
if (!extEntry)
return;
-#if 0
- RRReqCode = (CARD8) extEntry->base;
- RRErrBase = extEntry->errorBase;
-#endif
+ RRErrorBase = extEntry->errorBase;
RREventBase = extEntry->eventBase;
EventSwapVector[RREventBase + RRScreenChangeNotify] = (EventSwapPtr)
- SRRScreenChangeNotifyEvent;
+ SRRScreenChangeNotifyEvent;
+ EventSwapVector[RREventBase + RRNotify] = (EventSwapPtr)
+ SRRNotifyEvent;
- return;
+ RRXineramaExtensionInit();
}
-
+
static int
TellChanged (WindowPtr pWin, pointer value)
{
RREventPtr *pHead, pRREvent;
ClientPtr client;
- xRRScreenChangeNotifyEvent se;
ScreenPtr pScreen = pWin->drawable.pScreen;
rrScrPriv(pScreen);
- RRScreenSizePtr pSize;
- WindowPtr pRoot = WindowTable[pScreen->myNum];
+ int i;
- pHead = (RREventPtr *) LookupIDByType (pWin->drawable.id, EventType);
+ pHead = (RREventPtr *) LookupIDByType (pWin->drawable.id, RREventType);
if (!pHead)
return WT_WALKCHILDREN;
- se.type = RRScreenChangeNotify + RREventBase;
- se.rotation = (CARD8) pScrPriv->rotation;
- se.timestamp = pScrPriv->lastSetTime.milliseconds;
- se.configTimestamp = pScrPriv->lastConfigTime.milliseconds;
- se.root = pRoot->drawable.id;
- se.window = pWin->drawable.id;
-#ifdef RENDER
- se.subpixelOrder = PictureGetSubpixelOrder (pScreen);
-#else
- se.subpixelOrder = SubPixelUnknown;
-#endif
- if (pScrPriv->size >= 0)
- {
- pSize = &pScrPriv->pSizes[pScrPriv->size];
- se.sizeID = pSize->id;
- se.widthInPixels = pSize->width;
- se.heightInPixels = pSize->height;
- se.widthInMillimeters = pSize->mmWidth;
- se.heightInMillimeters = pSize->mmHeight;
- }
- else
- {
- /*
- * This "shouldn't happen", but a broken DDX can
- * forget to set the current configuration on GetInfo
- */
- se.sizeID = 0xffff;
- se.widthInPixels = 0;
- se.heightInPixels = 0;
- se.widthInMillimeters = 0;
- se.heightInMillimeters = 0;
- }
for (pRREvent = *pHead; pRREvent; pRREvent = pRREvent->next)
{
client = pRREvent->client;
if (client == serverClient || client->clientGone)
continue;
- se.sequenceNumber = client->sequence;
- if(pRREvent->mask & RRScreenChangeNotifyMask)
- WriteEventsToClient (client, 1, (xEvent *) &se);
- }
- return WT_WALKCHILDREN;
-}
-
-static Bool
-RRGetInfo (ScreenPtr pScreen)
-{
- rrScrPriv (pScreen);
- int i, j, k, l;
- Bool changed;
- Rotation rotations;
- RRScreenSizePtr pSize;
- RRScreenRatePtr pRate;
-
- for (i = 0; i < pScrPriv->nSizes; i++)
- {
- pSize = &pScrPriv->pSizes[i];
- pSize->oldReferenced = pSize->referenced;
- pSize->referenced = FALSE;
- for (k = 0; k < pSize->nRates; k++)
- {
- pRate = &pSize->pRates[k];
- pRate->oldReferenced = pRate->referenced;
- pRate->referenced = FALSE;
- }
- }
- if (!(*pScrPriv->rrGetInfo) (pScreen, &rotations))
- return FALSE;
-
- changed = FALSE;
-
- /*
- * Check whether anything changed and simultaneously generate
- * the protocol id values for the objects
- */
- if (rotations != pScrPriv->rotations)
- {
- pScrPriv->rotations = rotations;
- changed = TRUE;
- }
-
- j = 0;
- for (i = 0; i < pScrPriv->nSizes; i++)
- {
- pSize = &pScrPriv->pSizes[i];
- if (pSize->oldReferenced != pSize->referenced)
- changed = TRUE;
- if (pSize->referenced)
- pSize->id = j++;
- l = 0;
- for (k = 0; k < pSize->nRates; k++)
- {
- pRate = &pSize->pRates[k];
- if (pRate->oldReferenced != pRate->referenced)
- changed = TRUE;
- if (pRate->referenced)
- l++;
- }
- pSize->nRatesInUse = l;
- }
- pScrPriv->nSizesInUse = j;
- if (changed)
- {
- UpdateCurrentTime ();
- pScrPriv->lastConfigTime = currentTime;
- WalkTree (pScreen, TellChanged, (pointer) pScreen);
- }
- return TRUE;
-}
-
-static void
-RRSendConfigNotify (ScreenPtr pScreen)
-{
- WindowPtr pWin = WindowTable[pScreen->myNum];
- xEvent event;
-
- event.u.u.type = ConfigureNotify;
- event.u.configureNotify.window = pWin->drawable.id;
- event.u.configureNotify.aboveSibling = None;
- event.u.configureNotify.x = 0;
- event.u.configureNotify.y = 0;
-
- /* XXX xinerama stuff ? */
-
- event.u.configureNotify.width = pWin->drawable.width;
- event.u.configureNotify.height = pWin->drawable.height;
- event.u.configureNotify.borderWidth = wBorderWidth (pWin);
- event.u.configureNotify.override = pWin->overrideRedirect;
- DeliverEvents(pWin, &event, 1, NullWindow);
-}
-
-static int
-ProcRRQueryVersion (ClientPtr client)
-{
- xRRQueryVersionReply rep;
- register int n;
- REQUEST(xRRQueryVersionReq);
- rrClientPriv(client);
-
- REQUEST_SIZE_MATCH(xRRQueryVersionReq);
- pRRClient->major_version = stuff->majorVersion;
- pRRClient->minor_version = stuff->minorVersion;
- rep.type = X_Reply;
- rep.length = 0;
- rep.sequenceNumber = client->sequence;
- rep.majorVersion = RANDR_MAJOR;
- rep.minorVersion = RANDR_MINOR;
- if (client->swapped) {
- swaps(&rep.sequenceNumber, n);
- swapl(&rep.length, n);
- swapl(&rep.majorVersion, n);
- swapl(&rep.minorVersion, n);
- }
- WriteToClient(client, sizeof(xRRQueryVersionReply), (char *)&rep);
- return (client->noClientException);
-}
-
-
-extern char *ConnectionInfo;
-
-static int padlength[4] = {0, 3, 2, 1};
-
-static void
-RREditConnectionInfo (ScreenPtr pScreen)
-{
- xConnSetup *connSetup;
- char *vendor;
- xPixmapFormat *formats;
- xWindowRoot *root;
- xDepth *depth;
- xVisualType *visual;
- int screen = 0;
- int d;
-
- connSetup = (xConnSetup *) ConnectionInfo;
- vendor = (char *) connSetup + sizeof (xConnSetup);
- formats = (xPixmapFormat *) ((char *) vendor +
- connSetup->nbytesVendor +
- padlength[connSetup->nbytesVendor & 3]);
- root = (xWindowRoot *) ((char *) formats +
- sizeof (xPixmapFormat) * screenInfo.numPixmapFormats);
- while (screen != pScreen->myNum)
- {
- depth = (xDepth *) ((char *) root +
- sizeof (xWindowRoot));
- for (d = 0; d < root->nDepths; d++)
- {
- visual = (xVisualType *) ((char *) depth +
- sizeof (xDepth));
- depth = (xDepth *) ((char *) visual +
- depth->nVisuals * sizeof (xVisualType));
- }
- root = (xWindowRoot *) ((char *) depth);
- screen++;
- }
- root->pixWidth = pScreen->width;
- root->pixHeight = pScreen->height;
- root->mmWidth = pScreen->mmWidth;
- root->mmHeight = pScreen->mmHeight;
-}
-
-static int
-ProcRRGetScreenInfo (ClientPtr client)
-{
- REQUEST(xRRGetScreenInfoReq);
- xRRGetScreenInfoReply rep;
- WindowPtr pWin;
- int n;
- ScreenPtr pScreen;
- rrScrPrivPtr pScrPriv;
- CARD8 *extra;
- unsigned long extraLen;
- REQUEST_SIZE_MATCH(xRRGetScreenInfoReq);
- pWin = (WindowPtr)SecurityLookupWindow(stuff->window, client,
- SecurityReadAccess);
-
- if (!pWin)
- return BadWindow;
-
- pScreen = pWin->drawable.pScreen;
- pScrPriv = rrGetScrPriv(pScreen);
- rep.pad = 0;
- if (!pScrPriv)
- {
- rep.type = X_Reply;
- rep.setOfRotations = RR_Rotate_0;;
- rep.sequenceNumber = client->sequence;
- rep.length = 0;
- rep.root = WindowTable[pWin->drawable.pScreen->myNum]->drawable.id;
- rep.timestamp = currentTime.milliseconds;
- rep.configTimestamp = currentTime.milliseconds;
- rep.nSizes = 0;
- rep.sizeID = 0;
- rep.rotation = RR_Rotate_0;
- rep.rate = 0;
- rep.nrateEnts = 0;
- extra = 0;
- extraLen = 0;
- }
- else
- {
- int i, j;
- xScreenSizes *size;
- CARD16 *rates;
- CARD8 *data8;
- Bool has_rate = RRClientKnowsRates (client);
-
- RRGetInfo (pScreen);
-
- rep.type = X_Reply;
- rep.setOfRotations = pScrPriv->rotations;
- rep.sequenceNumber = client->sequence;
- rep.length = 0;
- rep.root = WindowTable[pWin->drawable.pScreen->myNum]->drawable.id;
- rep.timestamp = pScrPriv->lastSetTime.milliseconds;
- rep.configTimestamp = pScrPriv->lastConfigTime.milliseconds;
- rep.rotation = pScrPriv->rotation;
- rep.nSizes = pScrPriv->nSizesInUse;
- rep.rate = pScrPriv->rate;
- rep.nrateEnts = 0;
- if (has_rate)
+ if (pRREvent->mask & RRScreenChangeNotifyMask)
+ RRDeliverScreenEvent (client, pWin, pScreen);
+
+ if (pRREvent->mask & RRCrtcChangeNotifyMask)
{
- for (i = 0; i < pScrPriv->nSizes; i++)
+ for (i = 0; i < pScrPriv->numCrtcs; i++)
{
- RRScreenSizePtr pSize = &pScrPriv->pSizes[i];
- if (pSize->referenced)
- {
- rep.nrateEnts += (1 + pSize->nRatesInUse);
- }
+ RRCrtcPtr crtc = pScrPriv->crtcs[i];
+ if (crtc->changed)
+ RRDeliverCrtcEvent (client, pWin, crtc);
}
}
-
- if (pScrPriv->size >= 0)
- rep.sizeID = pScrPriv->pSizes[pScrPriv->size].id;
- else
- return BadImplementation;
-
- extraLen = (rep.nSizes * sizeof (xScreenSizes) +
- rep.nrateEnts * sizeof (CARD16));
-
- extra = (CARD8 *) xalloc (extraLen);
- if (!extra)
- return BadAlloc;
- /*
- * First comes the size information
- */
- size = (xScreenSizes *) extra;
- rates = (CARD16 *) (size + rep.nSizes);
- for (i = 0; i < pScrPriv->nSizes; i++)
+
+ if (pRREvent->mask & RROutputChangeNotifyMask)
{
- RRScreenSizePtr pSize = &pScrPriv->pSizes[i];
- if (pSize->referenced)
+ for (i = 0; i < pScrPriv->numOutputs; i++)
{
- size->widthInPixels = pSize->width;
- size->heightInPixels = pSize->height;
- size->widthInMillimeters = pSize->mmWidth;
- size->heightInMillimeters = pSize->mmHeight;
- if (client->swapped)
- {
- swaps (&size->widthInPixels, n);
- swaps (&size->heightInPixels, n);
- swaps (&size->widthInMillimeters, n);
- swaps (&size->heightInMillimeters, n);
- }
- size++;
- if (has_rate)
- {
- *rates = pSize->nRatesInUse;
- if (client->swapped)
- {
- swaps (rates, n);
- }
- rates++;
- for (j = 0; j < pSize->nRates; j++)
- {
- RRScreenRatePtr pRate = &pSize->pRates[j];
- if (pRate->referenced)
- {
- *rates = pRate->rate;
- if (client->swapped)
- {
- swaps (rates, n);
- }
- rates++;
- }
- }
- }
+ RROutputPtr output = pScrPriv->outputs[i];
+ if (output->changed)
+ RRDeliverOutputEvent (client, pWin, output);
}
}
- data8 = (CARD8 *) rates;
-
- if (data8 - (CARD8 *) extra != extraLen)
- FatalError ("RRGetScreenInfo bad extra len %ld != %ld\n",
- (unsigned long)(data8 - (CARD8 *) extra), extraLen);
- rep.length = (extraLen + 3) >> 2;
- }
- if (client->swapped) {
- swaps(&rep.sequenceNumber, n);
- swapl(&rep.length, n);
- swapl(&rep.timestamp, n);
- swaps(&rep.rotation, n);
- swaps(&rep.nSizes, n);
- swaps(&rep.sizeID, n);
- swaps(&rep.rate, n);
- swaps(&rep.nrateEnts, n);
- }
- WriteToClient(client, sizeof(xRRGetScreenInfoReply), (char *)&rep);
- if (extraLen)
- {
- WriteToClient (client, extraLen, (char *) extra);
- xfree (extra);
}
- return (client->noClientException);
+ return WT_WALKCHILDREN;
}
-static int
-ProcRRSetScreenConfig (ClientPtr client)
+/*
+ * Something changed; send events and adjust pointer position
+ */
+void
+RRTellChanged (ScreenPtr pScreen)
{
- REQUEST(xRRSetScreenConfigReq);
- xRRSetScreenConfigReply rep;
- DrawablePtr pDraw;
- int n;
- ScreenPtr pScreen;
- rrScrPrivPtr pScrPriv;
- TimeStamp configTime;
- TimeStamp time;
- RRScreenSizePtr pSize;
- int i;
- Rotation rotation;
- int rate;
- short oldWidth, oldHeight;
- Bool has_rate;
-
- UpdateCurrentTime ();
-
- if (RRClientKnowsRates (client))
- {
- REQUEST_SIZE_MATCH (xRRSetScreenConfigReq);
- has_rate = TRUE;
- }
- else
- {
- REQUEST_SIZE_MATCH (xRR1_0SetScreenConfigReq);
- has_rate = FALSE;
- }
-
- SECURITY_VERIFY_DRAWABLE(pDraw, stuff->drawable, client,
- SecurityWriteAccess);
-
- pScreen = pDraw->pScreen;
-
- pScrPriv = rrGetScrPriv(pScreen);
-
- time = ClientTimeToServerTime(stuff->timestamp);
- configTime = ClientTimeToServerTime(stuff->configTimestamp);
-
- oldWidth = pScreen->width;
- oldHeight = pScreen->height;
-
- if (!pScrPriv)
- {
- time = currentTime;
- rep.status = RRSetConfigFailed;
- goto sendReply;
- }
- if (!RRGetInfo (pScreen))
- return BadAlloc;
-
- /*
- * if the client's config timestamp is not the same as the last config
- * timestamp, then the config information isn't up-to-date and
- * can't even be validated
- */
- if (CompareTimeStamps (configTime, pScrPriv->lastConfigTime) != 0)
- {
- rep.status = RRSetConfigInvalidConfigTime;
- goto sendReply;
- }
-
- /*
- * Search for the requested size
- */
- pSize = 0;
- for (i = 0; i < pScrPriv->nSizes; i++)
- {
- pSize = &pScrPriv->pSizes[i];
- if (pSize->referenced && pSize->id == stuff->sizeID)
- {
- break;
- }
- }
- if (i == pScrPriv->nSizes)
- {
- /*
- * Invalid size ID
- */
- client->errorValue = stuff->sizeID;
- return BadValue;
- }
+ rrScrPriv (pScreen);
+ int i;
- /*
- * Validate requested rotation
- */
- rotation = (Rotation) stuff->rotation;
-
- /* test the rotation bits only! */
- switch (rotation & 0xf) {
- case RR_Rotate_0:
- case RR_Rotate_90:
- case RR_Rotate_180:
- case RR_Rotate_270:
- break;
- default:
- /*
- * Invalid rotation
- */
- client->errorValue = stuff->rotation;
- return BadValue;
- }
-
- if ((~pScrPriv->rotations) & rotation)
+ if (pScrPriv->changed)
{
- /*
- * requested rotation or reflection not supported by screen
- */
- client->errorValue = stuff->rotation;
- return BadMatch;
- }
-
- /*
- * Validate requested refresh
- */
- if (has_rate)
- rate = (int) stuff->rate;
- else
- rate = 0;
-
- if (rate)
- {
- for (i = 0; i < pSize->nRates; i++)
+ UpdateCurrentTime ();
+ if (pScrPriv->configChanged)
{
- RRScreenRatePtr pRate = &pSize->pRates[i];
- if (pRate->referenced && pRate->rate == rate)
- break;
+ pScrPriv->lastConfigTime = currentTime;
+ pScrPriv->configChanged = FALSE;
}
- if (i == pSize->nRates)
+ pScrPriv->changed = FALSE;
+ WalkTree (pScreen, TellChanged, (pointer) pScreen);
+ for (i = 0; i < pScrPriv->numOutputs; i++)
+ pScrPriv->outputs[i]->changed = FALSE;
+ for (i = 0; i < pScrPriv->numCrtcs; i++)
+ pScrPriv->crtcs[i]->changed = FALSE;
+ if (pScrPriv->layoutChanged)
{
- /*
- * Invalid rate
- */
- client->errorValue = rate;
- return BadValue;
+ pScrPriv->layoutChanged = FALSE;
+ RRPointerScreenConfigured (pScreen);
+ RRSendConfigNotify (pScreen);
}
}
-
- /*
- * Make sure the requested set-time is not older than
- * the last set-time
- */
- if (CompareTimeStamps (time, pScrPriv->lastSetTime) < 0)
- {
- rep.status = RRSetConfigInvalidTime;
- goto sendReply;
- }
-
- /*
- * call out to ddx routine to effect the change
- */
- if (!(*pScrPriv->rrSetConfig) (pScreen, rotation, rate,
- pSize))
- {
- /*
- * unknown DDX failure, report to client
- */
- rep.status = RRSetConfigFailed;
- goto sendReply;
- }
-
- /*
- * set current extension configuration pointers
- */
- RRSetCurrentConfig (pScreen, rotation, rate, pSize);
-
- /*
- * Deliver ScreenChangeNotify events whenever
- * the configuration is updated
- */
- WalkTree (pScreen, TellChanged, (pointer) pScreen);
-
- /*
- * Deliver ConfigureNotify events when root changes
- * pixel size
- */
- if (oldWidth != pScreen->width || oldHeight != pScreen->height)
- RRSendConfigNotify (pScreen);
- RREditConnectionInfo (pScreen);
-
- /*
- * Fix pointer bounds and location
- */
- ScreenRestructured (pScreen);
- pScrPriv->lastSetTime = time;
-
- /*
- * Report Success
- */
- rep.status = RRSetConfigSuccess;
-
-sendReply:
-
- rep.type = X_Reply;
- /* rep.status has already been filled in */
- rep.length = 0;
- rep.sequenceNumber = client->sequence;
-
- rep.newTimestamp = pScrPriv->lastSetTime.milliseconds;
- rep.newConfigTimestamp = pScrPriv->lastConfigTime.milliseconds;
- rep.root = WindowTable[pDraw->pScreen->myNum]->drawable.id;
-
- if (client->swapped)
- {
- swaps(&rep.sequenceNumber, n);
- swapl(&rep.length, n);
- swapl(&rep.newTimestamp, n);
- swapl(&rep.newConfigTimestamp, n);
- swapl(&rep.root, n);
- }
- WriteToClient(client, sizeof(xRRSetScreenConfigReply), (char *)&rep);
-
- return (client->noClientException);
}
-int
-RRSetScreenConfig (ScreenPtr pScreen,
- Rotation rotation,
- int rate,
- RRScreenSizePtr pSize)
+/*
+ * Return the first output which is connected to an active CRTC
+ * Used in emulating 1.0 behaviour
+ */
+RROutputPtr
+RRFirstOutput (ScreenPtr pScreen)
{
- rrScrPrivPtr pScrPriv;
- int i;
- short oldWidth, oldHeight;
-
- pScrPriv = rrGetScrPriv(pScreen);
-
- oldWidth = pScreen->width;
- oldHeight = pScreen->height;
-
- if (!RRGetInfo (pScreen))
- return BadAlloc;
+ rrScrPriv(pScreen);
+ RROutputPtr output;
+ int i, j;
- /*
- * Validate requested rotation
- */
-
- /* test the rotation bits only! */
- switch (rotation & 0xf) {
- case RR_Rotate_0:
- case RR_Rotate_90:
- case RR_Rotate_180:
- case RR_Rotate_270:
- break;
- default:
- /*
- * Invalid rotation
- */
- return BadValue;
- }
-
- if ((~pScrPriv->rotations) & rotation)
- {
- /*
- * requested rotation or reflection not supported by screen
- */
- return BadMatch;
- }
-
- /*
- * Validate requested refresh
- */
- if (rate)
+ for (i = 0; i < pScrPriv->numCrtcs; i++)
{
- for (i = 0; i < pSize->nRates; i++)
+ RRCrtcPtr crtc = pScrPriv->crtcs[i];
+ for (j = 0; j < pScrPriv->numOutputs; j++)
{
- RRScreenRatePtr pRate = &pSize->pRates[i];
- if (pRate->referenced && pRate->rate == rate)
- break;
+ output = pScrPriv->outputs[j];
+ if (output->crtc == crtc)
+ return output;
}
- if (i == pSize->nRates)
- {
- /*
- * Invalid rate
- */
- return BadValue;
- }
- }
-
- /*
- * call out to ddx routine to effect the change
- */
- if (!(*pScrPriv->rrSetConfig) (pScreen, rotation, rate,
- pSize))
- {
- /*
- * unknown DDX failure, report to client
- */
- return BadImplementation;
}
-
- /*
- * set current extension configuration pointers
- */
- RRSetCurrentConfig (pScreen, rotation, rate, pSize);
-
- /*
- * Deliver ScreenChangeNotify events whenever
- * the configuration is updated
- */
- WalkTree (pScreen, TellChanged, (pointer) pScreen);
-
- /*
- * Deliver ConfigureNotify events when root changes
- * pixel size
- */
- if (oldWidth != pScreen->width || oldHeight != pScreen->height)
- RRSendConfigNotify (pScreen);
- RREditConnectionInfo (pScreen);
-
- /*
- * Fix pointer bounds and location
- */
- ScreenRestructured (pScreen);
-
- return Success;
+ return NULL;
}
-static int
-ProcRRSelectInput (ClientPtr client)
+CARD16
+RRVerticalRefresh (xRRModeInfo *mode)
{
- REQUEST(xRRSelectInputReq);
- rrClientPriv(client);
- RRTimesPtr pTimes;
- WindowPtr pWin;
- RREventPtr pRREvent, pNewRREvent, *pHead;
- XID clientResource;
-
- REQUEST_SIZE_MATCH(xRRSelectInputReq);
- pWin = SecurityLookupWindow (stuff->window, client, SecurityWriteAccess);
- if (!pWin)
- return BadWindow;
- pHead = (RREventPtr *)SecurityLookupIDByType(client,
- pWin->drawable.id, EventType,
- SecurityWriteAccess);
-
- if (stuff->enable & (RRScreenChangeNotifyMask))
- {
- ScreenPtr pScreen = pWin->drawable.pScreen;
- rrScrPriv (pScreen);
-
- if (pHead)
- {
- /* check for existing entry. */
- for (pRREvent = *pHead; pRREvent; pRREvent = pRREvent->next)
- if (pRREvent->client == client)
- return Success;
- }
-
- /* build the entry */
- pNewRREvent = (RREventPtr) xalloc (sizeof (RREventRec));
- if (!pNewRREvent)
- return BadAlloc;
- pNewRREvent->next = 0;
- pNewRREvent->client = client;
- pNewRREvent->window = pWin;
- pNewRREvent->mask = stuff->enable;
- /*
- * add a resource that will be deleted when
- * the client goes away
- */
- clientResource = FakeClientID (client->index);
- pNewRREvent->clientResource = clientResource;
- if (!AddResource (clientResource, ClientType, (pointer)pNewRREvent))
- 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 = (RREventPtr *) xalloc (sizeof (RREventPtr));
- if (!pHead ||
- !AddResource (pWin->drawable.id, EventType, (pointer)pHead))
- {
- FreeResource (clientResource, RT_NONE);
- return BadAlloc;
- }
- *pHead = 0;
- }
- pNewRREvent->next = *pHead;
- *pHead = pNewRREvent;
- /*
- * Now see if the client needs an event
- */
- if (pScrPriv)
- {
- pTimes = &((RRTimesPtr) (pRRClient + 1))[pScreen->myNum];
- if (CompareTimeStamps (pTimes->setTime,
- pScrPriv->lastSetTime) != 0 ||
- CompareTimeStamps (pTimes->configTime,
- pScrPriv->lastConfigTime) != 0)
- {
- TellChanged (pWin, (pointer) pScreen);
- }
- }
- }
- else if (stuff->enable == xFalse)
- {
- /* delete the interest */
- if (pHead) {
- pNewRREvent = 0;
- for (pRREvent = *pHead; pRREvent; pRREvent = pRREvent->next) {
- if (pRREvent->client == client)
- break;
- pNewRREvent = pRREvent;
- }
- if (pRREvent) {
- FreeResource (pRREvent->clientResource, ClientType);
- if (pNewRREvent)
- pNewRREvent->next = pRREvent->next;
- else
- *pHead = pRREvent->next;
- xfree (pRREvent);
- }
- }
- }
- else
- {
- client->errorValue = stuff->enable;
- return BadValue;
- }
- return Success;
+ CARD32 refresh;
+ CARD32 dots = mode->hTotal * mode->vTotal;
+ if (!dots)
+ return 0;
+ refresh = (mode->dotClock + dots/2) / dots;
+ if (refresh > 0xffff)
+ refresh = 0xffff;
+ return (CARD16) refresh;
}
-
static int
ProcRRDispatch (ClientPtr client)
{
REQUEST(xReq);
- switch (stuff->data)
- {
- case X_RRQueryVersion:
- return ProcRRQueryVersion(client);
- case X_RRSetScreenConfig:
- return ProcRRSetScreenConfig(client);
- case X_RRSelectInput:
- return ProcRRSelectInput(client);
- case X_RRGetScreenInfo:
- return ProcRRGetScreenInfo(client);
- default:
+ if (stuff->data >= RRNumberRequests || !ProcRandrVector[stuff->data])
return BadRequest;
- }
-}
-
-static int
-SProcRRQueryVersion (ClientPtr client)
-{
- register int n;
- REQUEST(xRRQueryVersionReq);
-
- swaps(&stuff->length, n);
- swapl(&stuff->majorVersion, n);
- swapl(&stuff->minorVersion, n);
- return ProcRRQueryVersion(client);
-}
-
-static int
-SProcRRGetScreenInfo (ClientPtr client)
-{
- register int n;
- REQUEST(xRRGetScreenInfoReq);
-
- swaps(&stuff->length, n);
- swapl(&stuff->window, n);
- return ProcRRGetScreenInfo(client);
+ return (*ProcRandrVector[stuff->data]) (client);
}
static int
-SProcRRSetScreenConfig (ClientPtr client)
-{
- register int n;
- REQUEST(xRRSetScreenConfigReq);
-
- if (RRClientKnowsRates (client))
- {
- REQUEST_SIZE_MATCH (xRRSetScreenConfigReq);
- swaps (&stuff->rate, n);
- }
- else
- {
- REQUEST_SIZE_MATCH (xRR1_0SetScreenConfigReq);
- }
-
- swaps(&stuff->length, n);
- swapl(&stuff->drawable, n);
- swapl(&stuff->timestamp, n);
- swaps(&stuff->sizeID, n);
- swaps(&stuff->rotation, n);
- return ProcRRSetScreenConfig(client);
-}
-
-static int
-SProcRRSelectInput (ClientPtr client)
-{
- register int n;
- REQUEST(xRRSelectInputReq);
-
- swaps(&stuff->length, n);
- swapl(&stuff->window, n);
- return ProcRRSelectInput(client);
-}
-
-
-static int
SProcRRDispatch (ClientPtr client)
{
REQUEST(xReq);
- switch (stuff->data)
- {
- case X_RRQueryVersion:
- return SProcRRQueryVersion(client);
- case X_RRSetScreenConfig:
- return SProcRRSetScreenConfig(client);
- case X_RRSelectInput:
- return SProcRRSelectInput(client);
- case X_RRGetScreenInfo:
- return SProcRRGetScreenInfo(client);
- default:
+ if (stuff->data >= RRNumberRequests || !ProcRandrVector[stuff->data])
return BadRequest;
- }
+ return (*SProcRandrVector[stuff->data]) (client);
}
-
-static Bool
-RRScreenSizeMatches (RRScreenSizePtr a,
- RRScreenSizePtr b)
-{
- if (a->width != b->width)
- return FALSE;
- if (a->height != b->height)
- return FALSE;
- if (a->mmWidth != b->mmWidth)
- return FALSE;
- if (a->mmHeight != b->mmHeight)
- return FALSE;
- return TRUE;
-}
-
-RRScreenSizePtr
-RRRegisterSize (ScreenPtr pScreen,
- short width,
- short height,
- short mmWidth,
- short mmHeight)
-{
- rrScrPriv (pScreen);
- int i;
- RRScreenSize tmp;
- RRScreenSizePtr pNew;
-
- if (!pScrPriv)
- return 0;
-
- tmp.width = width;
- tmp.height= height;
- tmp.mmWidth = mmWidth;
- tmp.mmHeight = mmHeight;
- tmp.pRates = 0;
- tmp.nRates = 0;
- tmp.nRatesInUse = 0;
- tmp.referenced = TRUE;
- tmp.oldReferenced = FALSE;
- for (i = 0; i < pScrPriv->nSizes; i++)
- if (RRScreenSizeMatches (&tmp, &pScrPriv->pSizes[i]))
- {
- pScrPriv->pSizes[i].referenced = TRUE;
- return &pScrPriv->pSizes[i];
- }
- pNew = xrealloc (pScrPriv->pSizes,
- (pScrPriv->nSizes + 1) * sizeof (RRScreenSize));
- if (!pNew)
- return 0;
- pNew[pScrPriv->nSizes++] = tmp;
- pScrPriv->pSizes = pNew;
- return &pNew[pScrPriv->nSizes-1];
-}
-
-Bool RRRegisterRate (ScreenPtr pScreen,
- RRScreenSizePtr pSize,
- int rate)
-{
- rrScrPriv(pScreen);
- int i;
- RRScreenRatePtr pNew, pRate;
-
- if (!pScrPriv)
- return FALSE;
-
- for (i = 0; i < pSize->nRates; i++)
- {
- pRate = &pSize->pRates[i];
- if (pRate->rate == rate)
- {
- pRate->referenced = TRUE;
- return TRUE;
- }
- }
-
- pNew = xrealloc (pSize->pRates,
- (pSize->nRates + 1) * sizeof (RRScreenRate));
- if (!pNew)
- return FALSE;
- pRate = &pNew[pSize->nRates++];
- pRate->rate = rate;
- pRate->referenced = TRUE;
- pRate->oldReferenced = FALSE;
- pSize->pRates = pNew;
- return TRUE;
-}
-
-Rotation
-RRGetRotation(ScreenPtr pScreen)
-{
- rrScrPriv (pScreen);
-
- if (!pScrPriv)
- return RR_Rotate_0;
-
- return pScrPriv->rotation;
-}
-
-void
-RRSetCurrentConfig (ScreenPtr pScreen,
- Rotation rotation,
- int rate,
- RRScreenSizePtr pSize)
-{
- rrScrPriv (pScreen);
-
- if (!pScrPriv)
- return;
-
- pScrPriv->rotation = rotation;
- pScrPriv->size = pSize - pScrPriv->pSizes;
- pScrPriv->rate = rate;
-}
diff --git a/randr/randrstr.h b/randr/randrstr.h
index 9dfc71efe..88f7588ae 100644
--- a/randr/randrstr.h
+++ b/randr/randrstr.h
@@ -1,25 +1,28 @@
/*
- * $XFree86: xc/programs/Xserver/randr/randrstr.h,v 1.5 2002/09/29 23:39:45 keithp Exp $
- *
* Copyright © 2000 Compaq Computer Corporation
+ * Copyright © 2002 Hewlett-Packard Company
+ * Copyright © 2006 Intel 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 Compaq not be used in
- * advertising or publicity pertaining to distribution of the software without
- * specific, written prior permission. Compaq makes no
- * representations about the suitability of this software for any purpose. It
- * is provided "as is" without express or implied warranty.
+ * the above copyright 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.
*
- * COMPAQ DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
+ * THE COPYRIGHT HOLDERS DISCLAIM ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
* INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
- * EVENT SHALL COMPAQ BE LIABLE FOR ANY SPECIAL, INDIRECT OR
+ * 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.
+ * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE
+ * OF THIS SOFTWARE.
+ *
+ * Author: Jim Gettys, Hewlett-Packard Company, Inc.
+ * Keith Packard, Intel Corporation
*/
#ifdef HAVE_DIX_CONFIG_H
@@ -29,56 +32,222 @@
#ifndef _RANDRSTR_H_
#define _RANDRSTR_H_
+#include <X11/X.h>
+#include <X11/Xproto.h>
+#include "misc.h"
+#include "os.h"
+#include "dixstruct.h"
+#include "resource.h"
+#include "scrnintstr.h"
+#include "windowstr.h"
+#include "pixmapstr.h"
+#include "extnsionst.h"
+#include "servermd.h"
#include <X11/extensions/randr.h>
+#include <X11/extensions/randrproto.h>
+#ifdef RENDER
+#include <X11/extensions/render.h> /* we share subpixel order information */
+#include "picturestr.h"
+#endif
+#include <X11/Xfuncproto.h>
+
+/* required for ABI compatibility for now */
+#define RANDR_10_INTERFACE 1
+#define RANDR_12_INTERFACE 1
+
+typedef XID RRMode;
+typedef XID RROutput;
+typedef XID RRCrtc;
+
+extern int RREventBase, RRErrorBase;
+
+extern int (*ProcRandrVector[RRNumberRequests])(ClientPtr);
+extern int (*SProcRandrVector[RRNumberRequests])(ClientPtr);
+
+/*
+ * Modeline for a monitor. Name follows directly after this struct
+ */
+
+#define RRModeName(pMode) ((char *) (pMode + 1))
+typedef struct _rrMode RRModeRec, *RRModePtr;
+typedef struct _rrPropertyValue RRPropertyValueRec, *RRPropertyValuePtr;
+typedef struct _rrProperty RRPropertyRec, *RRPropertyPtr;
+typedef struct _rrCrtc RRCrtcRec, *RRCrtcPtr;
+typedef struct _rrOutput RROutputRec, *RROutputPtr;
+
+struct _rrMode {
+ int refcnt;
+ xRRModeInfo mode;
+ char *name;
+ void *devPrivate;
+ Bool userDefined;
+};
+
+struct _rrPropertyValue {
+ Atom type; /* ignored by server */
+ short format; /* format of data for swapping - 8,16,32 */
+ long size; /* size of data in (format/8) bytes */
+ pointer data; /* private to client */
+};
+
+struct _rrProperty {
+ RRPropertyPtr next;
+ ATOM propertyName;
+ Bool is_pending;
+ Bool range;
+ Bool immutable;
+ int num_valid;
+ INT32 *valid_values;
+ RRPropertyValueRec current, pending;
+};
+
+struct _rrCrtc {
+ RRCrtc id;
+ ScreenPtr pScreen;
+ RRModePtr mode;
+ int x, y;
+ Rotation rotation;
+ Rotation rotations;
+ Bool changed;
+ int numOutputs;
+ RROutputPtr *outputs;
+ int gammaSize;
+ CARD16 *gammaRed;
+ CARD16 *gammaBlue;
+ CARD16 *gammaGreen;
+ void *devPrivate;
+};
+
+struct _rrOutput {
+ RROutput id;
+ ScreenPtr pScreen;
+ char *name;
+ int nameLength;
+ CARD8 connection;
+ CARD8 subpixelOrder;
+ int mmWidth;
+ int mmHeight;
+ RRCrtcPtr crtc;
+ int numCrtcs;
+ RRCrtcPtr *crtcs;
+ int numClones;
+ RROutputPtr *clones;
+ int numModes;
+ int numPreferred;
+ RRModePtr *modes;
+ Bool changed;
+ RRPropertyPtr properties;
+ void *devPrivate;
+};
+
+#if RANDR_12_INTERFACE
+typedef Bool (*RRScreenSetSizeProcPtr) (ScreenPtr pScreen,
+ CARD16 width,
+ CARD16 height,
+ CARD32 mmWidth,
+ CARD32 mmHeight);
+
+typedef Bool (*RRCrtcSetProcPtr) (ScreenPtr pScreen,
+ RRCrtcPtr crtc,
+ RRModePtr mode,
+ int x,
+ int y,
+ Rotation rotation,
+ int numOutputs,
+ RROutputPtr *outputs);
+
+typedef Bool (*RRCrtcSetGammaProcPtr) (ScreenPtr pScreen,
+ RRCrtcPtr crtc);
-typedef struct _rrScreenRate {
- int rate;
- Bool referenced;
- Bool oldReferenced;
+typedef Bool (*RROutputSetPropertyProcPtr) (ScreenPtr pScreen,
+ RROutputPtr output,
+ Atom property,
+ RRPropertyValuePtr value);
+
+#endif
+
+typedef Bool (*RRGetInfoProcPtr) (ScreenPtr pScreen, Rotation *rotations);
+typedef Bool (*RRCloseScreenProcPtr) ( int i, ScreenPtr pscreen);
+
+/* These are for 1.0 compatibility */
+
+typedef struct _rrRefresh {
+ CARD16 rate;
+ RRModePtr mode;
} RRScreenRate, *RRScreenRatePtr;
typedef struct _rrScreenSize {
int id;
short width, height;
short mmWidth, mmHeight;
- RRScreenRatePtr pRates;
int nRates;
- int nRatesInUse;
- Bool referenced;
- Bool oldReferenced;
+ RRScreenRatePtr pRates;
} RRScreenSize, *RRScreenSizePtr;
+#ifdef RANDR_10_INTERFACE
+
typedef Bool (*RRSetConfigProcPtr) (ScreenPtr pScreen,
Rotation rotation,
int rate,
RRScreenSizePtr pSize);
-typedef Bool (*RRGetInfoProcPtr) (ScreenPtr pScreen, Rotation *rotations);
-typedef Bool (*RRCloseScreenProcPtr) ( int i, ScreenPtr pscreen);
+#endif
+
typedef struct _rrScrPriv {
+ /*
+ * 'public' part of the structure; DDXen fill this in
+ * as they initialize
+ */
+#if RANDR_10_INTERFACE
RRSetConfigProcPtr rrSetConfig;
+#endif
RRGetInfoProcPtr rrGetInfo;
+#if RANDR_12_INTERFACE
+ RRScreenSetSizeProcPtr rrScreenSetSize;
+ RRCrtcSetProcPtr rrCrtcSet;
+ RRCrtcSetGammaProcPtr rrCrtcSetGamma;
+ RROutputSetPropertyProcPtr rrOutputSetProperty;
+#endif
+ /*
+ * Private part of the structure; not considered part of the ABI
+ */
TimeStamp lastSetTime; /* last changed by client */
TimeStamp lastConfigTime; /* possible configs changed */
RRCloseScreenProcPtr CloseScreen;
+ Bool changed; /* some config changed */
+ Bool configChanged; /* configuration changed */
+ Bool layoutChanged; /* screen layout changed */
+
+ CARD16 minWidth, minHeight;
+ CARD16 maxWidth, maxHeight;
+ CARD16 width, height; /* last known screen size */
+
+ int numOutputs;
+ RROutputPtr *outputs;
+
+ int numCrtcs;
+ RRCrtcPtr *crtcs;
+
+ /* Last known pointer position */
+ RRCrtcPtr pointerCrtc;
+
+#ifdef RANDR_10_INTERFACE
/*
* Configuration information
*/
Rotation rotations;
+ CARD16 reqWidth, reqHeight;
int nSizes;
- int nSizesInUse;
RRScreenSizePtr pSizes;
-
- /*
- * Current state
- */
+
Rotation rotation;
- int size;
int rate;
+ int size;
+#endif
} rrScrPrivRec, *rrScrPrivPtr;
extern int rrPrivIndex;
@@ -87,10 +256,175 @@ extern int rrPrivIndex;
#define rrScrPriv(pScr) rrScrPrivPtr pScrPriv = rrGetScrPriv(pScr)
#define SetRRScreen(s,p) ((s)->devPrivates[rrPrivIndex].ptr = (pointer) (p))
+/*
+ * each window has a list of clients requesting
+ * RRNotify events. Each client has a resource
+ * for each window it selects RRNotify input for,
+ * this resource is used to delete the RRNotifyRec
+ * entry from the per-window queue.
+ */
+
+typedef struct _RREvent *RREventPtr;
+
+typedef struct _RREvent {
+ RREventPtr next;
+ ClientPtr client;
+ WindowPtr window;
+ XID clientResource;
+ int mask;
+} RREventRec;
+
+typedef struct _RRTimes {
+ TimeStamp setTime;
+ TimeStamp configTime;
+} RRTimesRec, *RRTimesPtr;
+
+typedef struct _RRClient {
+ int major_version;
+ int minor_version;
+/* RRTimesRec times[0]; */
+} RRClientRec, *RRClientPtr;
+
+extern RESTYPE RRClientType, RREventType; /* resource types for event masks */
+extern int RRClientPrivateIndex;
+extern RESTYPE RRCrtcType, RRModeType, RROutputType;
+
+#define LookupOutput(client,id,a) ((RROutputPtr) \
+ (SecurityLookupIDByType (client, id, \
+ RROutputType, a)))
+#define LookupCrtc(client,id,a) ((RRCrtcPtr) \
+ (SecurityLookupIDByType (client, id, \
+ RRCrtcType, a)))
+#define LookupMode(client,id,a) ((RRModePtr) \
+ (SecurityLookupIDByType (client, id, \
+ RRModeType, a)))
+
+#define GetRRClient(pClient) ((RRClientPtr) (pClient)->devPrivates[RRClientPrivateIndex].ptr)
+#define rrClientPriv(pClient) RRClientPtr pRRClient = GetRRClient(pClient)
+
/* Initialize the extension */
void
RRExtensionInit (void);
+#ifdef RANDR_12_INTERFACE
+/*
+ * Set the range of sizes for the screen
+ */
+void
+RRScreenSetSizeRange (ScreenPtr pScreen,
+ CARD16 minWidth,
+ CARD16 minHeight,
+ CARD16 maxWidth,
+ CARD16 maxHeight);
+#endif
+
+/* rrscreen.c */
+/*
+ * Notify the extension that the screen size has been changed.
+ * The driver is responsible for calling this whenever it has changed
+ * the size of the screen
+ */
+void
+RRScreenSizeNotify (ScreenPtr pScreen);
+
+/*
+ * Request that the screen be resized
+ */
+Bool
+RRScreenSizeSet (ScreenPtr pScreen,
+ CARD16 width,
+ CARD16 height,
+ CARD32 mmWidth,
+ CARD32 mmHeight);
+
+/*
+ * Send ConfigureNotify event to root window when 'something' happens
+ */
+void
+RRSendConfigNotify (ScreenPtr pScreen);
+
+/*
+ * screen dispatch
+ */
+int
+ProcRRGetScreenSizeRange (ClientPtr client);
+
+int
+ProcRRSetScreenSize (ClientPtr client);
+
+int
+ProcRRGetScreenResources (ClientPtr client);
+
+int
+ProcRRSetScreenConfig (ClientPtr client);
+
+int
+ProcRRGetScreenInfo (ClientPtr client);
+
+/*
+ * Deliver a ScreenNotify event
+ */
+void
+RRDeliverScreenEvent (ClientPtr client, WindowPtr pWin, ScreenPtr pScreen);
+
+/* mirandr.c */
+Bool
+miRandRInit (ScreenPtr pScreen);
+
+Bool
+miRRGetInfo (ScreenPtr pScreen, Rotation *rotations);
+
+Bool
+miRRGetScreenInfo (ScreenPtr pScreen);
+
+Bool
+miRRCrtcSet (ScreenPtr pScreen,
+ RRCrtcPtr crtc,
+ RRModePtr mode,
+ int x,
+ int y,
+ Rotation rotation,
+ int numOutput,
+ RROutputPtr *outputs);
+
+Bool
+miRROutputSetProperty (ScreenPtr pScreen,
+ RROutputPtr output,
+ Atom property,
+ RRPropertyValuePtr value);
+
+/* randr.c */
+/*
+ * Send all pending events
+ */
+void
+RRTellChanged (ScreenPtr pScreen);
+
+/*
+ * Poll the driver for changed information
+ */
+Bool
+RRGetInfo (ScreenPtr pScreen);
+
+Bool RRInit (void);
+
+Bool RRScreenInit(ScreenPtr pScreen);
+
+RROutputPtr
+RRFirstOutput (ScreenPtr pScreen);
+
+Rotation
+RRGetRotation (ScreenPtr pScreen);
+
+CARD16
+RRVerticalRefresh (xRRModeInfo *mode);
+
+#ifdef RANDR_10_INTERFACE
+/*
+ * This is the old interface, deprecated but left
+ * around for compatibility
+ */
+
/*
* Then, register the specific size with the screen
*/
@@ -116,7 +450,7 @@ RRSetCurrentConfig (ScreenPtr pScreen,
int rate,
RRScreenSizePtr pSize);
-Bool RRScreenInit(ScreenPtr pScreen);
+Bool RRScreenInit (ScreenPtr pScreen);
Rotation
RRGetRotation (ScreenPtr pScreen);
@@ -127,19 +461,366 @@ RRSetScreenConfig (ScreenPtr pScreen,
int rate,
RRScreenSizePtr pSize);
+#endif
+
+/* rrcrtc.c */
+
+/*
+ * Notify the CRTC of some change; layoutChanged indicates that
+ * some position or size element changed
+ */
+void
+RRCrtcChanged (RRCrtcPtr crtc, Bool layoutChanged);
+
+/*
+ * Create a CRTC
+ */
+RRCrtcPtr
+RRCrtcCreate (void *devPrivate);
+
+/*
+ * Attach a CRTC to a screen. Once done, this cannot be
+ * undone without destroying the CRTC; it is separate from Create
+ * only to allow an xf86-based driver to create objects in preinit
+ */
Bool
-miRandRInit (ScreenPtr pScreen);
+RRCrtcAttachScreen (RRCrtcPtr crtc, ScreenPtr pScreen);
+
+/*
+ * Notify the extension that the Crtc has been reconfigured,
+ * the driver calls this whenever it has updated the mode
+ */
+Bool
+RRCrtcNotify (RRCrtcPtr crtc,
+ RRModePtr mode,
+ int x,
+ int y,
+ Rotation rotation,
+ int numOutputs,
+ RROutputPtr *outputs);
+void
+RRDeliverCrtcEvent (ClientPtr client, WindowPtr pWin, RRCrtcPtr crtc);
+
+/*
+ * Request that the Crtc be reconfigured
+ */
Bool
-miRRGetInfo (ScreenPtr pScreen, Rotation *rotations);
+RRCrtcSet (RRCrtcPtr crtc,
+ RRModePtr mode,
+ int x,
+ int y,
+ Rotation rotation,
+ int numOutput,
+ RROutputPtr *outputs);
+
+/*
+ * Request that the Crtc gamma be changed
+ */
+
+Bool
+RRCrtcGammaSet (RRCrtcPtr crtc,
+ CARD16 *red,
+ CARD16 *green,
+ CARD16 *blue);
+
+/*
+ * Notify the extension that the Crtc gamma has been changed
+ * The driver calls this whenever it has changed the gamma values
+ * in the RRCrtcRec
+ */
Bool
-miRRSetConfig (ScreenPtr pScreen,
- Rotation rotation,
- int rate,
- RRScreenSizePtr size);
+RRCrtcGammaNotify (RRCrtcPtr crtc);
+
+/*
+ * Set the size of the gamma table at server startup time
+ */
Bool
-miRRGetScreenInfo (ScreenPtr pScreen);
+RRCrtcGammaSetSize (RRCrtcPtr crtc,
+ int size);
+
+/*
+ * Destroy a Crtc at shutdown
+ */
+void
+RRCrtcDestroy (RRCrtcPtr crtc);
+
+/*
+ * Initialize crtc type
+ */
+Bool
+RRCrtcInit (void);
+
+/*
+ * Crtc dispatch
+ */
+
+int
+ProcRRGetCrtcInfo (ClientPtr client);
+
+int
+ProcRRSetCrtcConfig (ClientPtr client);
+
+int
+ProcRRGetCrtcGammaSize (ClientPtr client);
+
+int
+ProcRRGetCrtcGamma (ClientPtr client);
+
+int
+ProcRRSetCrtcGamma (ClientPtr client);
+
+/* rrdispatch.c */
+Bool
+RRClientKnowsRates (ClientPtr pClient);
+
+/* rrmode.c */
+/*
+ * Find, and if necessary, create a mode
+ */
+
+RRModePtr
+RRModeGet (xRRModeInfo *modeInfo,
+ const char *name);
+
+void
+RRModePruneUnused (ScreenPtr pScreen);
+
+/*
+ * Destroy a mode.
+ */
+
+void
+RRModeDestroy (RRModePtr mode);
+
+/*
+ * Return a list of modes that are valid for some output in pScreen
+ */
+RRModePtr *
+RRModesForScreen (ScreenPtr pScreen, int *num_ret);
+
+/*
+ * Initialize mode type
+ */
+Bool
+RRModeInit (void);
+
+int
+ProcRRCreateMode (ClientPtr client);
+
+int
+ProcRRDestroyMode (ClientPtr client);
+
+int
+ProcRRAddOutputMode (ClientPtr client);
+
+int
+ProcRRDeleteOutputMode (ClientPtr client);
+
+/* rroutput.c */
+
+/*
+ * Notify the output of some change. configChanged indicates whether
+ * any external configuration (mode list, clones, connected status)
+ * has changed, or whether the change was strictly internal
+ * (which crtc is in use)
+ */
+void
+RROutputChanged (RROutputPtr output, Bool configChanged);
+
+/*
+ * Create an output
+ */
+
+RROutputPtr
+RROutputCreate (const char *name,
+ int nameLength,
+ void *devPrivate);
+
+/*
+ * Attach an output to a screen, again split from creation so
+ * xf86 DDXen can create randr resources before the ScreenRec
+ * exists
+ */
+Bool
+RROutputAttachScreen (RROutputPtr output, ScreenPtr pScreen);
+
+/*
+ * Notify extension that output parameters have been changed
+ */
+Bool
+RROutputSetClones (RROutputPtr output,
+ RROutputPtr *clones,
+ int numClones);
+
+Bool
+RROutputSetModes (RROutputPtr output,
+ RRModePtr *modes,
+ int numModes,
+ int numPreferred);
+
+Bool
+RROutputSetCrtcs (RROutputPtr output,
+ RRCrtcPtr *crtcs,
+ int numCrtcs);
+
+void
+RROutputSetCrtc (RROutputPtr output, RRCrtcPtr crtc);
+
+Bool
+RROutputSetConnection (RROutputPtr output,
+ CARD8 connection);
+
+Bool
+RROutputSetSubpixelOrder (RROutputPtr output,
+ int subpixelOrder);
+
+Bool
+RROutputSetPhysicalSize (RROutputPtr output,
+ int mmWidth,
+ int mmHeight);
+
+void
+RRDeliverOutputEvent(ClientPtr client, WindowPtr pWin, RROutputPtr output);
+
+void
+RROutputDestroy (RROutputPtr output);
+
+int
+ProcRRGetOutputInfo (ClientPtr client);
+
+/*
+ * Initialize output type
+ */
+Bool
+RROutputInit (void);
+
+/* rrpointer.c */
+void
+RRPointerMoved (ScreenPtr pScreen, int x, int y);
+
+void
+RRPointerScreenConfigured (ScreenPtr pScreen);
+
+/* rrproperty.c */
+
+void
+RRDeleteAllOutputProperties (RROutputPtr output);
+
+RRPropertyValuePtr
+RRGetOutputProperty (RROutputPtr output, Atom property, Bool pending);
+
+RRPropertyPtr
+RRQueryOutputProperty (RROutputPtr output, Atom property);
+
+void
+RRDeleteOutputProperty (RROutputPtr output, Atom property);
+
+int
+RRChangeOutputProperty (RROutputPtr output, Atom property, Atom type,
+ int format, int mode, unsigned long len,
+ pointer value, Bool sendevent);
+
+int
+RRConfigureOutputProperty (RROutputPtr output, Atom property,
+ Bool pending, Bool range, Bool immutable,
+ int num_values, INT32 *values);
+int
+ProcRRChangeOutputProperty (ClientPtr client);
+
+int
+ProcRRGetOutputProperty (ClientPtr client);
+
+int
+ProcRRListOutputProperties (ClientPtr client);
+
+int
+ProcRRQueryOutputProperty (ClientPtr client);
+
+int
+ProcRRConfigureOutputProperty (ClientPtr client);
+
+int
+ProcRRDeleteOutputProperty (ClientPtr client);
+
+/* rrxinerama.c */
+void
+RRXineramaExtensionInit(void);
#endif /* _RANDRSTR_H_ */
+
+/*
+
+randr extension implementation structure
+
+Query state:
+ ProcRRGetScreenInfo/ProcRRGetScreenResources
+ RRGetInfo
+
+ • Request configuration from driver, either 1.0 or 1.2 style
+ • These functions only record state changes, all
+ other actions are pended until RRTellChanged is called
+
+ ->rrGetInfo
+ 1.0:
+ RRRegisterSize
+ RRRegisterRate
+ RRSetCurrentConfig
+ 1.2:
+ RRScreenSetSizeRange
+ RROutputSetCrtcs
+ RROutputSetCrtc
+ RRModeGet
+ RROutputSetModes
+ RROutputSetConnection
+ RROutputSetSubpixelOrder
+ RROutputSetClones
+ RRCrtcNotify
+
+ • Must delay scanning configuration until after ->rrGetInfo returns
+ because some drivers will call SetCurrentConfig in the middle
+ of the ->rrGetInfo operation.
+
+ 1.0:
+
+ • Scan old configuration, mirror to new structures
+
+ RRScanOldConfig
+ RRCrtcCreate
+ RROutputCreate
+ RROutputSetCrtcs
+ RROutputSetCrtc
+ RROutputSetConnection
+ RROutputSetSubpixelOrder
+ RROldModeAdd • This adds modes one-at-a-time
+ RRModeGet
+ RRCrtcNotify
+
+ • send events, reset pointer if necessary
+
+ RRTellChanged
+ WalkTree (sending events)
+
+ • when layout has changed:
+ RRPointerScreenConfigured
+ RRSendConfigNotify
+
+Asynchronous state setting (1.2 only)
+ When setting state asynchronously, the driver invokes the
+ ->rrGetInfo function and then calls RRTellChanged to flush
+ the changes to the clients and reset pointer if necessary
+
+Set state
+
+ ProcRRSetScreenConfig
+ RRCrtcSet
+ 1.2:
+ ->rrCrtcSet
+ RRCrtcNotify
+ 1.0:
+ ->rrSetConfig
+ RRCrtcNotify
+ RRTellChanged
+ */
diff --git a/randr/rrcrtc.c b/randr/rrcrtc.c
new file mode 100644
index 000000000..076742077
--- /dev/null
+++ b/randr/rrcrtc.c
@@ -0,0 +1,856 @@
+/*
+ * Copyright © 2006 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 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.
+ */
+
+#include "randrstr.h"
+#include "swaprep.h"
+
+RESTYPE RRCrtcType;
+
+/*
+ * Notify the CRTC of some change
+ */
+void
+RRCrtcChanged (RRCrtcPtr crtc, Bool layoutChanged)
+{
+ ScreenPtr pScreen = crtc->pScreen;
+
+ crtc->changed = TRUE;
+ if (pScreen)
+ {
+ rrScrPriv(pScreen);
+
+ pScrPriv->changed = TRUE;
+ /*
+ * Send ConfigureNotify on any layout change
+ */
+ if (layoutChanged)
+ pScrPriv->layoutChanged = TRUE;
+ }
+}
+
+/*
+ * Create a CRTC
+ */
+RRCrtcPtr
+RRCrtcCreate (void *devPrivate)
+{
+ RRCrtcPtr crtc;
+
+ if (!RRInit())
+ return NULL;
+ crtc = xalloc (sizeof (RRCrtcRec));
+ if (!crtc)
+ return NULL;
+ crtc->id = FakeClientID (0);
+ crtc->pScreen = NULL;
+ crtc->mode = NULL;
+ crtc->x = 0;
+ crtc->y = 0;
+ crtc->rotation = RR_Rotate_0;
+ crtc->rotations = RR_Rotate_0;
+ crtc->outputs = NULL;
+ crtc->numOutputs = 0;
+ crtc->gammaSize = 0;
+ crtc->gammaRed = crtc->gammaBlue = crtc->gammaGreen = NULL;
+ crtc->changed = FALSE;
+ crtc->devPrivate = devPrivate;
+
+ if (!AddResource (crtc->id, RRCrtcType, (pointer) crtc))
+ return NULL;
+
+ return crtc;
+}
+
+/*
+ * Attach a Crtc to a screen. This is done as a separate step
+ * so that an xf86-based driver can create CRTCs in PreInit
+ * before the Screen has been created
+ */
+
+Bool
+RRCrtcAttachScreen (RRCrtcPtr crtc, ScreenPtr pScreen)
+{
+ rrScrPriv (pScreen);
+ RRCrtcPtr *crtcs;
+
+ /* make space for the crtc pointer */
+ if (pScrPriv->numCrtcs)
+ crtcs = xrealloc (pScrPriv->crtcs,
+ (pScrPriv->numCrtcs + 1) * sizeof (RRCrtcPtr));
+ else
+ crtcs = xalloc (sizeof (RRCrtcPtr));
+ if (!crtcs)
+ return FALSE;
+
+ /* attach the screen and crtc together */
+ crtc->pScreen = pScreen;
+ pScrPriv->crtcs = crtcs;
+ pScrPriv->crtcs[pScrPriv->numCrtcs++] = crtc;
+
+ RRCrtcChanged (crtc, TRUE);
+ return TRUE;
+}
+
+/*
+ * Notify the extension that the Crtc has been reconfigured,
+ * the driver calls this whenever it has updated the mode
+ */
+Bool
+RRCrtcNotify (RRCrtcPtr crtc,
+ RRModePtr mode,
+ int x,
+ int y,
+ Rotation rotation,
+ int numOutputs,
+ RROutputPtr *outputs)
+{
+ int i, j;
+
+ /*
+ * Check to see if any of the new outputs were
+ * not in the old list and mark them as changed
+ */
+ for (i = 0; i < numOutputs; i++)
+ {
+ for (j = 0; j < crtc->numOutputs; j++)
+ if (outputs[i] == crtc->outputs[j])
+ break;
+ if (j == crtc->numOutputs)
+ {
+ RROutputChanged (outputs[i], FALSE);
+ RRCrtcChanged (crtc, FALSE);
+ }
+ }
+ /*
+ * Check to see if any of the old outputs are
+ * not in the new list and mark them as changed
+ */
+ for (j = 0; j < crtc->numOutputs; j++)
+ {
+ for (i = 0; i < numOutputs; i++)
+ if (outputs[i] == crtc->outputs[j])
+ break;
+ if (i == numOutputs)
+ {
+ RROutputChanged (crtc->outputs[j], FALSE);
+ RRCrtcChanged (crtc, FALSE);
+ }
+ }
+ /*
+ * Reallocate the crtc output array if necessary
+ */
+ if (numOutputs != crtc->numOutputs)
+ {
+ RROutputPtr *newoutputs;
+
+ if (numOutputs)
+ {
+ if (crtc->numOutputs)
+ newoutputs = xrealloc (crtc->outputs,
+ numOutputs * sizeof (RROutputPtr));
+ else
+ newoutputs = xalloc (numOutputs * sizeof (RROutputPtr));
+ if (!newoutputs)
+ return FALSE;
+ }
+ else
+ {
+ if (crtc->outputs)
+ xfree (crtc->outputs);
+ newoutputs = NULL;
+ }
+ crtc->outputs = newoutputs;
+ crtc->numOutputs = numOutputs;
+ }
+ /*
+ * Copy the new list of outputs into the crtc
+ */
+ memcpy (crtc->outputs, outputs, numOutputs * sizeof (RROutputPtr));
+ /*
+ * Update remaining crtc fields
+ */
+ if (mode != crtc->mode)
+ {
+ if (crtc->mode)
+ RRModeDestroy (crtc->mode);
+ crtc->mode = mode;
+ if (mode != NULL)
+ mode->refcnt++;
+ RRCrtcChanged (crtc, TRUE);
+ }
+ if (x != crtc->x)
+ {
+ crtc->x = x;
+ RRCrtcChanged (crtc, TRUE);
+ }
+ if (y != crtc->y)
+ {
+ crtc->y = y;
+ RRCrtcChanged (crtc, TRUE);
+ }
+ if (rotation != crtc->rotation)
+ {
+ crtc->rotation = rotation;
+ RRCrtcChanged (crtc, TRUE);
+ }
+ return TRUE;
+}
+
+void
+RRDeliverCrtcEvent (ClientPtr client, WindowPtr pWin, RRCrtcPtr crtc)
+{
+ ScreenPtr pScreen = pWin->drawable.pScreen;
+ rrScrPriv (pScreen);
+ xRRCrtcChangeNotifyEvent ce;
+ RRModePtr mode = crtc->mode;
+
+ ce.type = RRNotify + RREventBase;
+ ce.subCode = RRNotify_CrtcChange;
+ ce.sequenceNumber = client->sequence;
+ ce.timestamp = pScrPriv->lastSetTime.milliseconds;
+ ce.window = pWin->drawable.id;
+ ce.crtc = crtc->id;
+ ce.rotation = crtc->rotation;
+ if (mode)
+ {
+ ce.mode = mode->mode.id;
+ ce.x = crtc->x;
+ ce.y = crtc->y;
+ ce.width = mode->mode.width;
+ ce.height = mode->mode.height;
+ }
+ else
+ {
+ ce.mode = None;
+ ce.x = 0;
+ ce.y = 0;
+ ce.width = 0;
+ ce.height = 0;
+ }
+ WriteEventsToClient (client, 1, (xEvent *) &ce);
+}
+
+/*
+ * Request that the Crtc be reconfigured
+ */
+Bool
+RRCrtcSet (RRCrtcPtr crtc,
+ RRModePtr mode,
+ int x,
+ int y,
+ Rotation rotation,
+ int numOutputs,
+ RROutputPtr *outputs)
+{
+ ScreenPtr pScreen = crtc->pScreen;
+
+ /* See if nothing changed */
+ if (crtc->mode == mode &&
+ crtc->x == x &&
+ crtc->y == y &&
+ crtc->rotation == rotation &&
+ crtc->numOutputs == numOutputs &&
+ !memcmp (crtc->outputs, outputs, numOutputs * sizeof (RROutputPtr)))
+ {
+ return TRUE;
+ }
+ if (pScreen)
+ {
+#if RANDR_12_INTERFACE
+ rrScrPriv(pScreen);
+ if (pScrPriv->rrCrtcSet)
+ {
+ return (*pScrPriv->rrCrtcSet) (pScreen, crtc, mode, x, y,
+ rotation, numOutputs, outputs);
+ }
+#endif
+#if RANDR_10_INTERFACE
+ if (pScrPriv->rrSetConfig)
+ {
+ RRScreenSize size;
+ RRScreenRate rate;
+ Bool ret;
+
+ size.width = mode->mode.width;
+ size.height = mode->mode.height;
+ if (outputs[0]->mmWidth && outputs[0]->mmHeight)
+ {
+ size.mmWidth = outputs[0]->mmWidth;
+ size.mmHeight = outputs[0]->mmHeight;
+ }
+ else
+ {
+ size.mmWidth = pScreen->mmWidth;
+ size.mmHeight = pScreen->mmHeight;
+ }
+ size.nRates = 1;
+ rate.rate = RRVerticalRefresh (&mode->mode);
+ size.pRates = &rate;
+ ret = (*pScrPriv->rrSetConfig) (pScreen, rotation, rate.rate, &size);
+ /*
+ * Old 1.0 interface tied screen size to mode size
+ */
+ if (ret)
+ RRCrtcNotify (crtc, mode, x, y, rotation, 1, outputs);
+ return ret;
+ }
+#endif
+ RRTellChanged (pScreen);
+ }
+ return FALSE;
+}
+
+/*
+ * Destroy a Crtc at shutdown
+ */
+void
+RRCrtcDestroy (RRCrtcPtr crtc)
+{
+ FreeResource (crtc->id, 0);
+}
+
+static int
+RRCrtcDestroyResource (pointer value, XID pid)
+{
+ RRCrtcPtr crtc = (RRCrtcPtr) value;
+ ScreenPtr pScreen = crtc->pScreen;
+
+ if (pScreen)
+ {
+ rrScrPriv(pScreen);
+ int i;
+
+ for (i = 0; i < pScrPriv->numCrtcs; i++)
+ {
+ if (pScrPriv->crtcs[i] == crtc)
+ {
+ memmove (pScrPriv->crtcs + i, pScrPriv->crtcs + i + 1,
+ (pScrPriv->numCrtcs - (i + 1)) * sizeof (RRCrtcPtr));
+ --pScrPriv->numCrtcs;
+ break;
+ }
+ }
+ }
+ if (crtc->gammaRed)
+ xfree (crtc->gammaRed);
+ xfree (crtc);
+ return 1;
+}
+
+/*
+ * Request that the Crtc gamma be changed
+ */
+
+Bool
+RRCrtcGammaSet (RRCrtcPtr crtc,
+ CARD16 *red,
+ CARD16 *green,
+ CARD16 *blue)
+{
+ Bool ret = TRUE;
+#if RANDR_12_INTERFACE
+ ScreenPtr pScreen = crtc->pScreen;
+#endif
+
+ memcpy (crtc->gammaRed, red, crtc->gammaSize * sizeof (CARD16));
+ memcpy (crtc->gammaGreen, green, crtc->gammaSize * sizeof (CARD16));
+ memcpy (crtc->gammaBlue, blue, crtc->gammaSize * sizeof (CARD16));
+#if RANDR_12_INTERFACE
+ if (pScreen)
+ {
+ rrScrPriv(pScreen);
+ if (pScrPriv->rrCrtcSetGamma)
+ ret = (*pScrPriv->rrCrtcSetGamma) (pScreen, crtc);
+ }
+#endif
+ return ret;
+}
+
+/*
+ * Notify the extension that the Crtc gamma has been changed
+ * The driver calls this whenever it has changed the gamma values
+ * in the RRCrtcRec
+ */
+
+Bool
+RRCrtcGammaNotify (RRCrtcPtr crtc)
+{
+ return TRUE; /* not much going on here */
+}
+
+/*
+ * Set the size of the gamma table at server startup time
+ */
+
+Bool
+RRCrtcGammaSetSize (RRCrtcPtr crtc,
+ int size)
+{
+ CARD16 *gamma;
+
+ if (size == crtc->gammaSize)
+ return TRUE;
+ if (size)
+ {
+ gamma = xalloc (size * 3 * sizeof (CARD16));
+ if (!gamma)
+ return FALSE;
+ }
+ else
+ gamma = NULL;
+ if (crtc->gammaRed)
+ xfree (crtc->gammaRed);
+ crtc->gammaRed = gamma;
+ crtc->gammaGreen = gamma + size;
+ crtc->gammaBlue = gamma + size*2;
+ crtc->gammaSize = size;
+ return TRUE;
+}
+
+/*
+ * Initialize crtc type
+ */
+Bool
+RRCrtcInit (void)
+{
+ RRCrtcType = CreateNewResourceType (RRCrtcDestroyResource);
+ if (!RRCrtcType)
+ return FALSE;
+#ifdef XResExtension
+ RegisterResourceName (RRCrtcType, "CRTC");
+#endif
+ return TRUE;
+}
+
+int
+ProcRRGetCrtcInfo (ClientPtr client)
+{
+ REQUEST(xRRGetCrtcInfoReq);;
+ xRRGetCrtcInfoReply rep;
+ RRCrtcPtr crtc;
+ CARD8 *extra;
+ unsigned long extraLen;
+ ScreenPtr pScreen;
+ rrScrPrivPtr pScrPriv;
+ RRModePtr mode;
+ RROutput *outputs;
+ RROutput *possible;
+ int i, j, k, n;
+
+ REQUEST_SIZE_MATCH(xRRGetCrtcInfoReq);
+ crtc = LookupCrtc(client, stuff->crtc, DixReadAccess);
+
+ if (!crtc)
+ return RRErrorBase + BadRRCrtc;
+
+ /* All crtcs must be associated with screens before client
+ * requests are processed
+ */
+ pScreen = crtc->pScreen;
+ pScrPriv = rrGetScrPriv(pScreen);
+
+ mode = crtc->mode;
+
+ rep.type = X_Reply;
+ rep.status = RRSetConfigSuccess;
+ rep.sequenceNumber = client->sequence;
+ rep.length = 0;
+ rep.timestamp = pScrPriv->lastSetTime.milliseconds;
+ rep.x = crtc->x;
+ rep.y = crtc->y;
+ rep.width = mode ? mode->mode.width : 0;
+ rep.height = mode ? mode->mode.height : 0;
+ rep.mode = mode ? mode->mode.id : 0;
+ rep.rotation = crtc->rotation;
+ rep.rotations = crtc->rotations;
+ rep.nOutput = crtc->numOutputs;
+ k = 0;
+ for (i = 0; i < pScrPriv->numOutputs; i++)
+ for (j = 0; j < pScrPriv->outputs[i]->numCrtcs; j++)
+ if (pScrPriv->outputs[i]->crtcs[j] == crtc)
+ k++;
+ rep.nPossibleOutput = k;
+
+ rep.length = rep.nOutput + rep.nPossibleOutput;
+
+ extraLen = rep.length << 2;
+ if (extraLen)
+ {
+ extra = xalloc (extraLen);
+ if (!extra)
+ return BadAlloc;
+ }
+ else
+ extra = NULL;
+
+ outputs = (RROutput *) extra;
+ possible = (RROutput *) (outputs + rep.nOutput);
+
+ for (i = 0; i < crtc->numOutputs; i++)
+ {
+ outputs[i] = crtc->outputs[i]->id;
+ if (client->swapped)
+ swapl (&outputs[i], n);
+ }
+ k = 0;
+ for (i = 0; i < pScrPriv->numOutputs; i++)
+ for (j = 0; j < pScrPriv->outputs[i]->numCrtcs; j++)
+ if (pScrPriv->outputs[i]->crtcs[j] == crtc)
+ {
+ possible[k] = pScrPriv->outputs[i]->id;
+ if (client->swapped)
+ swapl (&possible[k], n);
+ k++;
+ }
+
+ if (client->swapped) {
+ swaps(&rep.sequenceNumber, n);
+ swapl(&rep.length, n);
+ swapl(&rep.timestamp, n);
+ swaps(&rep.x, n);
+ swaps(&rep.y, n);
+ swaps(&rep.width, n);
+ swaps(&rep.height, n);
+ swapl(&rep.mode, n);
+ swaps(&rep.rotation, n);
+ swaps(&rep.rotations, n);
+ swaps(&rep.nOutput, n);
+ swaps(&rep.nPossibleOutput, n);
+ }
+ WriteToClient(client, sizeof(xRRGetCrtcInfoReply), (char *)&rep);
+ if (extraLen)
+ {
+ WriteToClient (client, extraLen, (char *) extra);
+ xfree (extra);
+ }
+
+ return client->noClientException;
+}
+
+int
+ProcRRSetCrtcConfig (ClientPtr client)
+{
+ REQUEST(xRRSetCrtcConfigReq);
+ xRRSetCrtcConfigReply rep;
+ ScreenPtr pScreen;
+ rrScrPrivPtr pScrPriv;
+ RRCrtcPtr crtc;
+ RRModePtr mode;
+ int numOutputs;
+ RROutputPtr *outputs = NULL;
+ RROutput *outputIds;
+ TimeStamp configTime;
+ TimeStamp time;
+ Rotation rotation;
+ int i, j;
+
+ REQUEST_AT_LEAST_SIZE(xRRSetCrtcConfigReq);
+ numOutputs = (stuff->length - (SIZEOF (xRRSetCrtcConfigReq) >> 2));
+
+ crtc = LookupIDByType (stuff->crtc, RRCrtcType);
+ if (!crtc)
+ {
+ client->errorValue = stuff->crtc;
+ return RRErrorBase + BadRRCrtc;
+ }
+ if (stuff->mode == None)
+ {
+ mode = NULL;
+ if (numOutputs > 0)
+ return BadMatch;
+ }
+ else
+ {
+ mode = LookupIDByType (stuff->mode, RRModeType);
+ if (!mode)
+ {
+ client->errorValue = stuff->mode;
+ return RRErrorBase + BadRRMode;
+ }
+ if (numOutputs == 0)
+ return BadMatch;
+ }
+ if (numOutputs)
+ {
+ outputs = xalloc (numOutputs * sizeof (RROutputPtr));
+ if (!outputs)
+ return BadAlloc;
+ }
+ else
+ outputs = NULL;
+
+ outputIds = (RROutput *) (stuff + 1);
+ for (i = 0; i < numOutputs; i++)
+ {
+ outputs[i] = (RROutputPtr) LookupIDByType (outputIds[i], RROutputType);
+ if (!outputs[i])
+ {
+ client->errorValue = outputIds[i];
+ if (outputs)
+ xfree (outputs);
+ return RRErrorBase + BadRROutput;
+ }
+ /* validate crtc for this output */
+ for (j = 0; j < outputs[i]->numCrtcs; j++)
+ if (outputs[i]->crtcs[j] == crtc)
+ break;
+ if (j == outputs[i]->numCrtcs)
+ {
+ if (outputs)
+ xfree (outputs);
+ return BadMatch;
+ }
+ /* validate mode for this output */
+ for (j = 0; j < outputs[i]->numModes; j++)
+ if (outputs[i]->modes[j] == mode)
+ break;
+ if (j == outputs[i]->numModes)
+ {
+ if (outputs)
+ xfree (outputs);
+ return BadMatch;
+ }
+ }
+
+ pScreen = crtc->pScreen;
+ pScrPriv = rrGetScrPriv(pScreen);
+
+ time = ClientTimeToServerTime(stuff->timestamp);
+ configTime = ClientTimeToServerTime(stuff->configTimestamp);
+
+ if (!pScrPriv)
+ {
+ time = currentTime;
+ rep.status = RRSetConfigFailed;
+ goto sendReply;
+ }
+
+ /*
+ * if the client's config timestamp is not the same as the last config
+ * timestamp, then the config information isn't up-to-date and
+ * can't even be validated
+ */
+ if (CompareTimeStamps (configTime, pScrPriv->lastConfigTime) != 0)
+ {
+ rep.status = RRSetConfigInvalidConfigTime;
+ goto sendReply;
+ }
+
+ /*
+ * Validate requested rotation
+ */
+ rotation = (Rotation) stuff->rotation;
+
+ /* test the rotation bits only! */
+ switch (rotation & 0xf) {
+ case RR_Rotate_0:
+ case RR_Rotate_90:
+ case RR_Rotate_180:
+ case RR_Rotate_270:
+ break;
+ default:
+ /*
+ * Invalid rotation
+ */
+ client->errorValue = stuff->rotation;
+ if (outputs)
+ xfree (outputs);
+ return BadValue;
+ }
+
+ if (mode)
+ {
+ if ((~crtc->rotations) & rotation)
+ {
+ /*
+ * requested rotation or reflection not supported by screen
+ */
+ client->errorValue = stuff->rotation;
+ if (outputs)
+ xfree (outputs);
+ return BadMatch;
+ }
+
+#ifdef RANDR_12_INTERFACE
+ /*
+ * Check screen size bounds if the DDX provides a 1.2 interface
+ * for setting screen size. Else, assume the CrtcSet sets
+ * the size along with the mode
+ */
+ if (pScrPriv->rrScreenSetSize)
+ {
+ int source_width = mode->mode.width;
+ int source_height = mode->mode.height;
+
+ if (rotation == RR_Rotate_90 || rotation == RR_Rotate_270)
+ {
+ source_width = mode->mode.height;
+ source_height = mode->mode.width;
+ }
+ if (stuff->x + source_width > pScreen->width)
+ {
+ client->errorValue = stuff->x;
+ if (outputs)
+ xfree (outputs);
+ return BadValue;
+ }
+
+ if (stuff->y + source_height > pScreen->height)
+ {
+ client->errorValue = stuff->y;
+ if (outputs)
+ xfree (outputs);
+ return BadValue;
+ }
+ }
+#endif
+ }
+
+ /*
+ * Make sure the requested set-time is not older than
+ * the last set-time
+ */
+ if (CompareTimeStamps (time, pScrPriv->lastSetTime) < 0)
+ {
+ rep.status = RRSetConfigInvalidTime;
+ goto sendReply;
+ }
+
+ if (!RRCrtcSet (crtc, mode, stuff->x, stuff->y,
+ rotation, numOutputs, outputs))
+ {
+ rep.status = RRSetConfigFailed;
+ goto sendReply;
+ }
+ rep.status = RRSetConfigSuccess;
+
+sendReply:
+ if (outputs)
+ xfree (outputs);
+
+ rep.type = X_Reply;
+ /* rep.status has already been filled in */
+ rep.length = 0;
+ rep.sequenceNumber = client->sequence;
+ rep.newTimestamp = pScrPriv->lastConfigTime.milliseconds;
+
+ if (client->swapped)
+ {
+ int n;
+ swaps(&rep.sequenceNumber, n);
+ swapl(&rep.length, n);
+ swapl(&rep.newTimestamp, n);
+ }
+ WriteToClient(client, sizeof(xRRSetCrtcConfigReply), (char *)&rep);
+
+ return client->noClientException;
+}
+
+int
+ProcRRGetCrtcGammaSize (ClientPtr client)
+{
+ REQUEST(xRRGetCrtcGammaSizeReq);
+ xRRGetCrtcGammaSizeReply reply;
+ RRCrtcPtr crtc;
+ int n;
+
+ REQUEST_SIZE_MATCH(xRRGetCrtcGammaSizeReq);
+ crtc = LookupCrtc (client, stuff->crtc, DixReadAccess);
+ if (!crtc)
+ return RRErrorBase + BadRRCrtc;
+
+ reply.type = X_Reply;
+ reply.sequenceNumber = client->sequence;
+ reply.length = 0;
+ reply.size = crtc->gammaSize;
+ if (client->swapped) {
+ swaps (&reply.sequenceNumber, n);
+ swapl (&reply.length, n);
+ swaps (&reply.size, n);
+ }
+ WriteToClient (client, sizeof (xRRGetCrtcGammaSizeReply), (char *) &reply);
+ return client->noClientException;
+}
+
+int
+ProcRRGetCrtcGamma (ClientPtr client)
+{
+ REQUEST(xRRGetCrtcGammaReq);
+ xRRGetCrtcGammaReply reply;
+ RRCrtcPtr crtc;
+ int n;
+ unsigned long len;
+
+ REQUEST_SIZE_MATCH(xRRGetCrtcGammaReq);
+ crtc = LookupCrtc (client, stuff->crtc, DixReadAccess);
+ if (!crtc)
+ return RRErrorBase + BadRRCrtc;
+
+ len = crtc->gammaSize * 3 * 2;
+
+ reply.type = X_Reply;
+ reply.sequenceNumber = client->sequence;
+ reply.length = (len + 3) >> 2;
+ reply.size = crtc->gammaSize;
+ if (client->swapped) {
+ swaps (&reply.sequenceNumber, n);
+ swapl (&reply.length, n);
+ swaps (&reply.size, n);
+ }
+ WriteToClient (client, sizeof (xRRGetCrtcGammaReply), (char *) &reply);
+ if (crtc->gammaSize)
+ {
+ client->pSwapReplyFunc = (ReplySwapPtr)CopySwap16Write;
+ WriteSwappedDataToClient (client, len, (char *) crtc->gammaRed);
+ }
+ return client->noClientException;
+}
+
+int
+ProcRRSetCrtcGamma (ClientPtr client)
+{
+ REQUEST(xRRSetCrtcGammaReq);
+ RRCrtcPtr crtc;
+ unsigned long len;
+ CARD16 *red, *green, *blue;
+
+ REQUEST_SIZE_MATCH(xRRSetCrtcGammaReq);
+ crtc = LookupCrtc (client, stuff->crtc, DixWriteAccess);
+ if (!crtc)
+ return RRErrorBase + BadRRCrtc;
+
+ len = client->req_len - (sizeof (xRRSetCrtcGammaReq) >> 2);
+ if (len < (stuff->size * 3 + 1) >> 1)
+ return BadLength;
+
+ if (stuff->size != crtc->gammaSize)
+ return BadMatch;
+
+ red = (CARD16 *) (stuff + 1);
+ green = red + crtc->gammaSize;
+ blue = green + crtc->gammaSize;
+
+ RRCrtcGammaSet (crtc, red, green, blue);
+
+ return Success;
+}
+
diff --git a/randr/rrdispatch.c b/randr/rrdispatch.c
new file mode 100644
index 000000000..7f98965a4
--- /dev/null
+++ b/randr/rrdispatch.c
@@ -0,0 +1,211 @@
+/*
+ * Copyright © 2006 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 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.
+ */
+
+#include "randrstr.h"
+
+Bool
+RRClientKnowsRates (ClientPtr pClient)
+{
+ rrClientPriv(pClient);
+
+ return (pRRClient->major_version > 1 ||
+ (pRRClient->major_version == 1 && pRRClient->minor_version >= 1));
+}
+
+static int
+ProcRRQueryVersion (ClientPtr client)
+{
+ xRRQueryVersionReply rep;
+ register int n;
+ REQUEST(xRRQueryVersionReq);
+ rrClientPriv(client);
+
+ REQUEST_SIZE_MATCH(xRRQueryVersionReq);
+ pRRClient->major_version = stuff->majorVersion;
+ pRRClient->minor_version = stuff->minorVersion;
+ rep.type = X_Reply;
+ rep.length = 0;
+ rep.sequenceNumber = client->sequence;
+ /*
+ * Report the current version; the current
+ * spec says they're all compatible after 1.0
+ */
+ rep.majorVersion = RANDR_MAJOR;
+ rep.minorVersion = RANDR_MINOR;
+ if (client->swapped) {
+ swaps(&rep.sequenceNumber, n);
+ swapl(&rep.length, n);
+ swapl(&rep.majorVersion, n);
+ swapl(&rep.minorVersion, n);
+ }
+ WriteToClient(client, sizeof(xRRQueryVersionReply), (char *)&rep);
+ return (client->noClientException);
+}
+
+static int
+ProcRRSelectInput (ClientPtr client)
+{
+ REQUEST(xRRSelectInputReq);
+ rrClientPriv(client);
+ RRTimesPtr pTimes;
+ WindowPtr pWin;
+ RREventPtr pRREvent, *pHead;
+ XID clientResource;
+ int rc;
+
+ REQUEST_SIZE_MATCH(xRRSelectInputReq);
+ rc = dixLookupWindow(&pWin, stuff->window, client, DixWriteAccess);
+ if (rc != Success)
+ return rc;
+ pHead = (RREventPtr *)SecurityLookupIDByType(client,
+ pWin->drawable.id, RREventType,
+ DixWriteAccess);
+
+ if (stuff->enable & (RRScreenChangeNotifyMask|
+ RRCrtcChangeNotifyMask|
+ RROutputChangeNotifyMask))
+ {
+ ScreenPtr pScreen = pWin->drawable.pScreen;
+ rrScrPriv (pScreen);
+
+ pRREvent = NULL;
+ if (pHead)
+ {
+ /* check for existing entry. */
+ for (pRREvent = *pHead; pRREvent; pRREvent = pRREvent->next)
+ if (pRREvent->client == client)
+ break;
+ }
+
+ if (!pRREvent)
+ {
+ /* build the entry */
+ pRREvent = (RREventPtr) xalloc (sizeof (RREventRec));
+ if (!pRREvent)
+ return BadAlloc;
+ pRREvent->next = 0;
+ pRREvent->client = client;
+ pRREvent->window = pWin;
+ pRREvent->mask = stuff->enable;
+ /*
+ * add a resource that will be deleted when
+ * the client goes away
+ */
+ clientResource = FakeClientID (client->index);
+ pRREvent->clientResource = clientResource;
+ if (!AddResource (clientResource, RRClientType, (pointer)pRREvent))
+ 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 = (RREventPtr *) xalloc (sizeof (RREventPtr));
+ if (!pHead ||
+ !AddResource (pWin->drawable.id, RREventType, (pointer)pHead))
+ {
+ FreeResource (clientResource, RT_NONE);
+ return BadAlloc;
+ }
+ *pHead = 0;
+ }
+ pRREvent->next = *pHead;
+ *pHead = pRREvent;
+ }
+ /*
+ * Now see if the client needs an event
+ */
+ if (pScrPriv && (pRREvent->mask & RRScreenChangeNotifyMask))
+ {
+ pTimes = &((RRTimesPtr) (pRRClient + 1))[pScreen->myNum];
+ if (CompareTimeStamps (pTimes->setTime,
+ pScrPriv->lastSetTime) != 0 ||
+ CompareTimeStamps (pTimes->configTime,
+ pScrPriv->lastConfigTime) != 0)
+ {
+ RRDeliverScreenEvent (client, pWin, pScreen);
+ }
+ }
+ }
+ else if (stuff->enable == 0)
+ {
+ /* delete the interest */
+ if (pHead) {
+ RREventPtr pNewRREvent = 0;
+ for (pRREvent = *pHead; pRREvent; pRREvent = pRREvent->next) {
+ if (pRREvent->client == client)
+ break;
+ pNewRREvent = pRREvent;
+ }
+ if (pRREvent) {
+ FreeResource (pRREvent->clientResource, RRClientType);
+ if (pNewRREvent)
+ pNewRREvent->next = pRREvent->next;
+ else
+ *pHead = pRREvent->next;
+ xfree (pRREvent);
+ }
+ }
+ }
+ else
+ {
+ client->errorValue = stuff->enable;
+ return BadValue;
+ }
+ return Success;
+}
+
+int (*ProcRandrVector[RRNumberRequests])(ClientPtr) = {
+ ProcRRQueryVersion, /* 0 */
+/* we skip 1 to make old clients fail pretty immediately */
+ NULL, /* 1 ProcRandrOldGetScreenInfo */
+/* V1.0 apps share the same set screen config request id */
+ ProcRRSetScreenConfig, /* 2 */
+ NULL, /* 3 ProcRandrOldScreenChangeSelectInput */
+/* 3 used to be ScreenChangeSelectInput; deprecated */
+ ProcRRSelectInput, /* 4 */
+ ProcRRGetScreenInfo, /* 5 */
+/* V1.2 additions */
+ ProcRRGetScreenSizeRange, /* 6 */
+ ProcRRSetScreenSize, /* 7 */
+ ProcRRGetScreenResources, /* 8 */
+ ProcRRGetOutputInfo, /* 9 */
+ ProcRRListOutputProperties, /* 10 */
+ ProcRRQueryOutputProperty, /* 11 */
+ ProcRRConfigureOutputProperty, /* 12 */
+ ProcRRChangeOutputProperty, /* 13 */
+ ProcRRDeleteOutputProperty, /* 14 */
+ ProcRRGetOutputProperty, /* 15 */
+ ProcRRCreateMode, /* 16 */
+ ProcRRDestroyMode, /* 17 */
+ ProcRRAddOutputMode, /* 18 */
+ ProcRRDeleteOutputMode, /* 19 */
+ ProcRRGetCrtcInfo, /* 20 */
+ ProcRRSetCrtcConfig, /* 21 */
+ ProcRRGetCrtcGammaSize, /* 22 */
+ ProcRRGetCrtcGamma, /* 23 */
+ ProcRRSetCrtcGamma, /* 24 */
+};
+
diff --git a/randr/rrinfo.c b/randr/rrinfo.c
new file mode 100644
index 000000000..85426f654
--- /dev/null
+++ b/randr/rrinfo.c
@@ -0,0 +1,344 @@
+/*
+ * Copyright © 2006 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 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.
+ */
+
+#include "randrstr.h"
+
+#ifdef RANDR_10_INTERFACE
+static RRModePtr
+RROldModeAdd (RROutputPtr output, RRScreenSizePtr size, int refresh)
+{
+ ScreenPtr pScreen = output->pScreen;
+ rrScrPriv(pScreen);
+ xRRModeInfo modeInfo;
+ char name[100];
+ RRModePtr mode;
+ int i;
+ RRModePtr *modes;
+
+ memset (&modeInfo, '\0', sizeof (modeInfo));
+ sprintf (name, "%dx%d", size->width, size->height);
+
+ modeInfo.width = size->width;
+ modeInfo.height = size->height;
+ modeInfo.hTotal = size->width;
+ modeInfo.vTotal = size->height;
+ modeInfo.dotClock = ((CARD32) size->width * (CARD32) size->height *
+ (CARD32) refresh);
+ modeInfo.nameLength = strlen (name);
+ mode = RRModeGet (&modeInfo, name);
+ if (!mode)
+ return NULL;
+ for (i = 0; i < output->numModes; i++)
+ if (output->modes[i] == mode)
+ {
+ RRModeDestroy (mode);
+ return mode;
+ }
+
+ if (output->numModes)
+ modes = xrealloc (output->modes,
+ (output->numModes + 1) * sizeof (RRModePtr));
+ else
+ modes = xalloc (sizeof (RRModePtr));
+ if (!modes)
+ {
+ RRModeDestroy (mode);
+ FreeResource (mode->mode.id, 0);
+ return NULL;
+ }
+ modes[output->numModes++] = mode;
+ output->modes = modes;
+ output->changed = TRUE;
+ pScrPriv->changed = TRUE;
+ pScrPriv->configChanged = TRUE;
+ return mode;
+}
+
+static void
+RRScanOldConfig (ScreenPtr pScreen, Rotation rotations)
+{
+ rrScrPriv(pScreen);
+ RROutputPtr output;
+ RRCrtcPtr crtc;
+ RRModePtr mode, newMode = NULL;
+ int i;
+ CARD16 minWidth = MAXSHORT, minHeight = MAXSHORT;
+ CARD16 maxWidth = 0, maxHeight = 0;
+
+ /*
+ * First time through, create a crtc and output and hook
+ * them together
+ */
+ if (pScrPriv->numOutputs == 0 &&
+ pScrPriv->numCrtcs == 0)
+ {
+ crtc = RRCrtcCreate (NULL);
+ if (!crtc)
+ return;
+ if (!RRCrtcAttachScreen (crtc, pScreen))
+ {
+ RRCrtcDestroy (crtc);
+ return;
+ }
+ output = RROutputCreate ("default", 7, NULL);
+ if (!output)
+ return;
+ if (!RROutputAttachScreen (output, pScreen))
+ return;
+ RROutputSetCrtcs (output, &crtc, 1);
+ RROutputSetCrtc (output, crtc);
+ RROutputSetConnection (output, RR_Connected);
+#ifdef RENDER
+ RROutputSetSubpixelOrder (output, PictureGetSubpixelOrder (pScreen));
+#endif
+ }
+
+ output = RRFirstOutput (pScreen);
+ if (!output)
+ return;
+ crtc = output->crtc;
+
+ /* check rotations */
+ if (rotations != crtc->rotations)
+ {
+ crtc->rotations = rotations;
+ crtc->changed = TRUE;
+ pScrPriv->changed = TRUE;
+ }
+
+ /* regenerate mode list */
+ for (i = 0; i < pScrPriv->nSizes; i++)
+ {
+ RRScreenSizePtr size = &pScrPriv->pSizes[i];
+ int r;
+
+ if (size->nRates)
+ {
+ for (r = 0; r < size->nRates; r++)
+ {
+ mode = RROldModeAdd (output, size, size->pRates[r].rate);
+ if (i == pScrPriv->size &&
+ size->pRates[r].rate == pScrPriv->rate)
+ {
+ newMode = mode;
+ }
+ }
+ xfree (size->pRates);
+ }
+ else
+ {
+ mode = RROldModeAdd (output, size, 0);
+ if (i == pScrPriv->size)
+ newMode = mode;
+ }
+ }
+ if (pScrPriv->nSizes)
+ xfree (pScrPriv->pSizes);
+ pScrPriv->pSizes = NULL;
+ pScrPriv->nSizes = 0;
+
+ /* find size bounds */
+ for (i = 0; i < output->numModes; i++)
+ {
+ RRModePtr mode = output->modes[i];
+ CARD16 width = mode->mode.width;
+ CARD16 height = mode->mode.height;
+
+ if (width < minWidth) minWidth = width;
+ if (width > maxWidth) maxWidth = width;
+ if (height < minHeight) minHeight = height;
+ if (height > maxHeight) maxHeight = height;
+ }
+
+ if (minWidth != pScrPriv->minWidth) {
+ pScrPriv->minWidth = minWidth; pScrPriv->changed = TRUE;
+ }
+ if (maxWidth != pScrPriv->maxWidth) {
+ pScrPriv->maxWidth = maxWidth; pScrPriv->changed = TRUE;
+ }
+ if (minHeight != pScrPriv->minHeight) {
+ pScrPriv->minHeight = minHeight; pScrPriv->changed = TRUE;
+ }
+ if (maxHeight != pScrPriv->maxHeight) {
+ pScrPriv->maxHeight = maxHeight; pScrPriv->changed = TRUE;
+ }
+
+ /* notice current mode */
+ if (newMode)
+ RRCrtcNotify (output->crtc, newMode, 0, 0, pScrPriv->rotation,
+ 1, &output);
+}
+#endif
+
+/*
+ * Poll the driver for changed information
+ */
+Bool
+RRGetInfo (ScreenPtr pScreen)
+{
+ rrScrPriv (pScreen);
+ Rotation rotations;
+ int i;
+
+ for (i = 0; i < pScrPriv->numOutputs; i++)
+ pScrPriv->outputs[i]->changed = FALSE;
+ for (i = 0; i < pScrPriv->numCrtcs; i++)
+ pScrPriv->crtcs[i]->changed = FALSE;
+
+ rotations = 0;
+ pScrPriv->changed = FALSE;
+ pScrPriv->configChanged = FALSE;
+
+ if (!(*pScrPriv->rrGetInfo) (pScreen, &rotations))
+ return FALSE;
+
+#if RANDR_10_INTERFACE
+ if (pScrPriv->nSizes)
+ RRScanOldConfig (pScreen, rotations);
+#endif
+ RRTellChanged (pScreen);
+ return TRUE;
+}
+
+#if RANDR_12_INTERFACE
+/*
+ * Register the range of sizes for the screen
+ */
+void
+RRScreenSetSizeRange (ScreenPtr pScreen,
+ CARD16 minWidth,
+ CARD16 minHeight,
+ CARD16 maxWidth,
+ CARD16 maxHeight)
+{
+ rrScrPriv (pScreen);
+
+ if (!pScrPriv)
+ return;
+ pScrPriv->minWidth = minWidth;
+ pScrPriv->minHeight = minHeight;
+ pScrPriv->maxWidth = maxWidth;
+ pScrPriv->maxHeight = maxHeight;
+}
+#endif
+
+#ifdef RANDR_10_INTERFACE
+static Bool
+RRScreenSizeMatches (RRScreenSizePtr a,
+ RRScreenSizePtr b)
+{
+ if (a->width != b->width)
+ return FALSE;
+ if (a->height != b->height)
+ return FALSE;
+ if (a->mmWidth != b->mmWidth)
+ return FALSE;
+ if (a->mmHeight != b->mmHeight)
+ return FALSE;
+ return TRUE;
+}
+
+RRScreenSizePtr
+RRRegisterSize (ScreenPtr pScreen,
+ short width,
+ short height,
+ short mmWidth,
+ short mmHeight)
+{
+ rrScrPriv (pScreen);
+ int i;
+ RRScreenSize tmp;
+ RRScreenSizePtr pNew;
+
+ if (!pScrPriv)
+ return 0;
+
+ tmp.id = 0;
+ tmp.width = width;
+ tmp.height= height;
+ tmp.mmWidth = mmWidth;
+ tmp.mmHeight = mmHeight;
+ tmp.pRates = 0;
+ tmp.nRates = 0;
+ for (i = 0; i < pScrPriv->nSizes; i++)
+ if (RRScreenSizeMatches (&tmp, &pScrPriv->pSizes[i]))
+ return &pScrPriv->pSizes[i];
+ pNew = xrealloc (pScrPriv->pSizes,
+ (pScrPriv->nSizes + 1) * sizeof (RRScreenSize));
+ if (!pNew)
+ return 0;
+ pNew[pScrPriv->nSizes++] = tmp;
+ pScrPriv->pSizes = pNew;
+ return &pNew[pScrPriv->nSizes-1];
+}
+
+Bool RRRegisterRate (ScreenPtr pScreen,
+ RRScreenSizePtr pSize,
+ int rate)
+{
+ rrScrPriv(pScreen);
+ int i;
+ RRScreenRatePtr pNew, pRate;
+
+ if (!pScrPriv)
+ return FALSE;
+
+ for (i = 0; i < pSize->nRates; i++)
+ if (pSize->pRates[i].rate == rate)
+ return TRUE;
+
+ pNew = xrealloc (pSize->pRates,
+ (pSize->nRates + 1) * sizeof (RRScreenRate));
+ if (!pNew)
+ return FALSE;
+ pRate = &pNew[pSize->nRates++];
+ pRate->rate = rate;
+ pSize->pRates = pNew;
+ return TRUE;
+}
+
+Rotation
+RRGetRotation(ScreenPtr pScreen)
+{
+ RROutputPtr output = RRFirstOutput (pScreen);
+
+ if (!output)
+ return RR_Rotate_0;
+
+ return output->crtc->rotation;
+}
+
+void
+RRSetCurrentConfig (ScreenPtr pScreen,
+ Rotation rotation,
+ int rate,
+ RRScreenSizePtr pSize)
+{
+ rrScrPriv (pScreen);
+
+ if (!pScrPriv)
+ return;
+ pScrPriv->size = pSize - pScrPriv->pSizes;
+ pScrPriv->rotation = rotation;
+ pScrPriv->rate = rate;
+}
+#endif
diff --git a/randr/rrmode.c b/randr/rrmode.c
new file mode 100644
index 000000000..261e1b75f
--- /dev/null
+++ b/randr/rrmode.c
@@ -0,0 +1,242 @@
+/*
+ * Copyright © 2006 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 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.
+ */
+
+#include "randrstr.h"
+
+RESTYPE RRModeType;
+
+static Bool
+RRModeEqual (xRRModeInfo *a, xRRModeInfo *b)
+{
+ if (a->width != b->width) return FALSE;
+ if (a->height != b->height) return FALSE;
+ if (a->dotClock != b->dotClock) return FALSE;
+ if (a->hSyncStart != b->hSyncStart) return FALSE;
+ if (a->hSyncEnd != b->hSyncEnd) return FALSE;
+ if (a->hTotal != b->hTotal) return FALSE;
+ if (a->hSkew != b->hSkew) return FALSE;
+ if (a->vSyncStart != b->vSyncStart) return FALSE;
+ if (a->vSyncEnd != b->vSyncEnd) return FALSE;
+ if (a->vTotal != b->vTotal) return FALSE;
+ if (a->nameLength != b->nameLength) return FALSE;
+ if (a->modeFlags != b->modeFlags) return FALSE;
+ return TRUE;
+}
+
+/*
+ * Keep a list so it's easy to find modes in the resource database.
+ */
+static int num_modes;
+static RRModePtr *modes;
+
+RRModePtr
+RRModeGet (xRRModeInfo *modeInfo,
+ const char *name)
+{
+ int i;
+ RRModePtr mode;
+ RRModePtr *newModes;
+
+ for (i = 0; i < num_modes; i++)
+ {
+ mode = modes[i];
+ if (RRModeEqual (&mode->mode, modeInfo) &&
+ !memcmp (name, mode->name, modeInfo->nameLength))
+ {
+ ++mode->refcnt;
+ return mode;
+ }
+ }
+
+ if (!RRInit ())
+ return NULL;
+
+ mode = xalloc (sizeof (RRModeRec) + modeInfo->nameLength + 1);
+ if (!mode)
+ return NULL;
+ mode->refcnt = 1;
+ mode->mode = *modeInfo;
+ mode->name = (char *) (mode + 1);
+ memcpy (mode->name, name, modeInfo->nameLength);
+ mode->name[modeInfo->nameLength] = '\0';
+ mode->userDefined = FALSE;
+
+ if (num_modes)
+ newModes = xrealloc (modes, (num_modes + 1) * sizeof (RRModePtr));
+ else
+ newModes = xalloc (sizeof (RRModePtr));
+
+ if (!newModes)
+ {
+ xfree (mode);
+ return NULL;
+ }
+
+ mode->mode.id = FakeClientID(0);
+ if (!AddResource (mode->mode.id, RRModeType, (pointer) mode))
+ return NULL;
+ modes = newModes;
+ modes[num_modes++] = mode;
+
+ /*
+ * give the caller a reference to this mode
+ */
+ ++mode->refcnt;
+ return mode;
+}
+
+RRModePtr *
+RRModesForScreen (ScreenPtr pScreen, int *num_ret)
+{
+ rrScrPriv(pScreen);
+ int o, c;
+ RRModePtr *screen_modes;
+ int num_screen_modes = 0;
+
+ screen_modes = xalloc ((num_modes ? num_modes : 1) * sizeof (RRModePtr));
+
+ /*
+ * Add modes from all outputs
+ */
+ for (o = 0; o < pScrPriv->numOutputs; o++)
+ {
+ RROutputPtr output = pScrPriv->outputs[o];
+ int m, n;
+
+ for (m = 0; m < output->numModes; m++)
+ {
+ RRModePtr mode = output->modes[m];
+ for (n = 0; n < num_screen_modes; n++)
+ if (screen_modes[n] == mode)
+ break;
+ if (n == num_screen_modes)
+ screen_modes[num_screen_modes++] = mode;
+ }
+ }
+ /*
+ * Add modes from all crtcs. The goal is to
+ * make sure all available and active modes
+ * are visible to the client
+ */
+ for (c = 0; c < pScrPriv->numCrtcs; c++)
+ {
+ RRCrtcPtr crtc = pScrPriv->crtcs[c];
+ RRModePtr mode = crtc->mode;
+ int n;
+
+ if (!mode) continue;
+ for (n = 0; n < num_screen_modes; n++)
+ if (screen_modes[n] == mode)
+ break;
+ if (n == num_screen_modes)
+ screen_modes[num_screen_modes++] = mode;
+ }
+ *num_ret = num_screen_modes;
+ return screen_modes;
+}
+
+void
+RRModeDestroy (RRModePtr mode)
+{
+ int m;
+
+ if (--mode->refcnt > 0)
+ return;
+ for (m = 0; m < num_modes; m++)
+ {
+ if (modes[m] == mode)
+ {
+ memmove (modes + m, modes + m + 1,
+ (num_modes - m - 1) * sizeof (RRModePtr));
+ num_modes--;
+ if (!num_modes)
+ {
+ xfree (modes);
+ modes = NULL;
+ }
+ break;
+ }
+ }
+
+ xfree (mode);
+}
+
+static int
+RRModeDestroyResource (pointer value, XID pid)
+{
+ RRModeDestroy ((RRModePtr) value);
+ return 1;
+}
+
+Bool
+RRModeInit (void)
+{
+ assert (num_modes == 0);
+ assert (modes == NULL);
+ RRModeType = CreateNewResourceType (RRModeDestroyResource);
+ if (!RRModeType)
+ return FALSE;
+#ifdef XResExtension
+ RegisterResourceName (RRModeType, "MODE");
+#endif
+ return TRUE;
+}
+
+int
+ProcRRCreateMode (ClientPtr client)
+{
+ REQUEST(xRRCreateModeReq);
+
+ REQUEST_SIZE_MATCH(xRRCreateModeReq);
+ (void) stuff;
+ return BadImplementation;
+}
+
+int
+ProcRRDestroyMode (ClientPtr client)
+{
+ REQUEST(xRRDestroyModeReq);
+
+ REQUEST_SIZE_MATCH(xRRDestroyModeReq);
+ (void) stuff;
+ return BadImplementation;
+}
+
+int
+ProcRRAddOutputMode (ClientPtr client)
+{
+ REQUEST(xRRAddOutputModeReq);
+
+ REQUEST_SIZE_MATCH(xRRAddOutputModeReq);
+ (void) stuff;
+ return BadImplementation;
+}
+
+int
+ProcRRDeleteOutputMode (ClientPtr client)
+{
+ REQUEST(xRRDeleteOutputModeReq);
+
+ REQUEST_SIZE_MATCH(xRRDeleteOutputModeReq);
+ (void) stuff;
+ return BadImplementation;
+}
diff --git a/randr/rroutput.c b/randr/rroutput.c
new file mode 100644
index 000000000..a66433015
--- /dev/null
+++ b/randr/rroutput.c
@@ -0,0 +1,465 @@
+/*
+ * Copyright © 2006 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 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.
+ */
+
+#include "randrstr.h"
+
+RESTYPE RROutputType;
+
+/*
+ * Notify the output of some change
+ */
+void
+RROutputChanged (RROutputPtr output, Bool configChanged)
+{
+ ScreenPtr pScreen = output->pScreen;
+
+ output->changed = TRUE;
+ if (pScreen)
+ {
+ rrScrPriv (pScreen);
+ pScrPriv->changed = TRUE;
+ if (configChanged)
+ pScrPriv->configChanged = TRUE;
+ }
+}
+
+/*
+ * Create an output
+ */
+
+RROutputPtr
+RROutputCreate (const char *name,
+ int nameLength,
+ void *devPrivate)
+{
+ RROutputPtr output;
+
+ if (!RRInit())
+ return NULL;
+ output = xalloc (sizeof (RROutputRec) + nameLength + 1);
+ if (!output)
+ return NULL;
+ output->id = FakeClientID (0);
+ output->pScreen = NULL;
+ output->name = (char *) (output + 1);
+ output->nameLength = nameLength;
+ memcpy (output->name, name, nameLength);
+ output->name[nameLength] = '\0';
+ output->connection = RR_UnknownConnection;
+ output->subpixelOrder = SubPixelUnknown;
+ output->mmWidth = 0;
+ output->mmHeight = 0;
+ output->crtc = NULL;
+ output->numCrtcs = 0;
+ output->crtcs = NULL;
+ output->numClones = 0;
+ output->clones = NULL;
+ output->numModes = 0;
+ output->numPreferred = 0;
+ output->modes = NULL;
+ output->properties = NULL;
+ output->changed = FALSE;
+ output->devPrivate = devPrivate;
+
+ if (!AddResource (output->id, RROutputType, (pointer) output))
+ return NULL;
+
+ return output;
+}
+
+/*
+ * Attach an Output to a screen. This is done as a separate step
+ * so that an xf86-based driver can create Outputs in PreInit
+ * before the Screen has been created
+ */
+
+Bool
+RROutputAttachScreen (RROutputPtr output, ScreenPtr pScreen)
+{
+ rrScrPriv (pScreen);
+ RROutputPtr *outputs;
+
+ if (pScrPriv->numOutputs)
+ outputs = xrealloc (pScrPriv->outputs,
+ (pScrPriv->numOutputs + 1) * sizeof (RROutputPtr));
+ else
+ outputs = xalloc (sizeof (RROutputPtr));
+ if (!outputs)
+ return FALSE;
+ output->pScreen = pScreen;
+ pScrPriv->outputs = outputs;
+ pScrPriv->outputs[pScrPriv->numOutputs++] = output;
+ RROutputChanged (output, FALSE);
+ return TRUE;
+}
+
+/*
+ * Notify extension that output parameters have been changed
+ */
+Bool
+RROutputSetClones (RROutputPtr output,
+ RROutputPtr *clones,
+ int numClones)
+{
+ RROutputPtr *newClones;
+ int i;
+
+ if (numClones == output->numClones)
+ {
+ for (i = 0; i < numClones; i++)
+ if (output->clones[i] != clones[i])
+ break;
+ if (i == numClones)
+ return TRUE;
+ }
+ if (numClones)
+ {
+ newClones = xalloc (numClones * sizeof (RROutputPtr));
+ if (!newClones)
+ return FALSE;
+ }
+ else
+ newClones = NULL;
+ if (output->clones)
+ xfree (output->clones);
+ memcpy (newClones, clones, numClones * sizeof (RROutputPtr));
+ output->clones = newClones;
+ output->numClones = numClones;
+ RROutputChanged (output, TRUE);
+ return TRUE;
+}
+
+Bool
+RROutputSetModes (RROutputPtr output,
+ RRModePtr *modes,
+ int numModes,
+ int numPreferred)
+{
+ RRModePtr *newModes;
+ int i;
+
+ if (numModes == output->numModes && numPreferred == output->numPreferred)
+ {
+ for (i = 0; i < numModes; i++)
+ if (output->modes[i] != modes[i])
+ break;
+ if (i == numModes)
+ {
+ for (i = 0; i < numModes; i++)
+ RRModeDestroy (modes[i]);
+ return TRUE;
+ }
+ }
+
+ if (numModes)
+ {
+ newModes = xalloc (numModes * sizeof (RRModePtr));
+ if (!newModes)
+ return FALSE;
+ }
+ else
+ newModes = NULL;
+ if (output->modes)
+ {
+ for (i = 0; i < output->numModes; i++)
+ RRModeDestroy (output->modes[i]);
+ xfree (output->modes);
+ }
+ memcpy (newModes, modes, numModes * sizeof (RRModePtr));
+ output->modes = newModes;
+ output->numModes = numModes;
+ output->numPreferred = numPreferred;
+ RROutputChanged (output, TRUE);
+ return TRUE;
+}
+
+Bool
+RROutputSetCrtcs (RROutputPtr output,
+ RRCrtcPtr *crtcs,
+ int numCrtcs)
+{
+ RRCrtcPtr *newCrtcs;
+ int i;
+
+ if (numCrtcs == output->numCrtcs)
+ {
+ for (i = 0; i < numCrtcs; i++)
+ if (output->crtcs[i] != crtcs[i])
+ break;
+ if (i == numCrtcs)
+ return TRUE;
+ }
+ if (numCrtcs)
+ {
+ newCrtcs = xalloc (numCrtcs * sizeof (RRCrtcPtr));
+ if (!newCrtcs)
+ return FALSE;
+ }
+ else
+ newCrtcs = NULL;
+ if (output->crtcs)
+ xfree (output->crtcs);
+ memcpy (newCrtcs, crtcs, numCrtcs * sizeof (RRCrtcPtr));
+ output->crtcs = newCrtcs;
+ output->numCrtcs = numCrtcs;
+ RROutputChanged (output, TRUE);
+ return TRUE;
+}
+
+void
+RROutputSetCrtc (RROutputPtr output, RRCrtcPtr crtc)
+{
+ if (output->crtc == crtc)
+ return;
+ output->crtc = crtc;
+ RROutputChanged (output, FALSE);
+}
+
+Bool
+RROutputSetConnection (RROutputPtr output,
+ CARD8 connection)
+{
+ if (output->connection == connection)
+ return TRUE;
+ output->connection = connection;
+ RROutputChanged (output, TRUE);
+ return TRUE;
+}
+
+Bool
+RROutputSetSubpixelOrder (RROutputPtr output,
+ int subpixelOrder)
+{
+ if (output->subpixelOrder == subpixelOrder)
+ return TRUE;
+
+ output->subpixelOrder = subpixelOrder;
+ RROutputChanged (output, FALSE);
+ return TRUE;
+}
+
+Bool
+RROutputSetPhysicalSize (RROutputPtr output,
+ int mmWidth,
+ int mmHeight)
+{
+ if (output->mmWidth == mmWidth && output->mmHeight == mmHeight)
+ return TRUE;
+ output->mmWidth = mmWidth;
+ output->mmHeight = mmHeight;
+ RROutputChanged (output, FALSE);
+ return TRUE;
+}
+
+
+void
+RRDeliverOutputEvent(ClientPtr client, WindowPtr pWin, RROutputPtr output)
+{
+ ScreenPtr pScreen = pWin->drawable.pScreen;
+ rrScrPriv (pScreen);
+ xRROutputChangeNotifyEvent oe;
+ RRCrtcPtr crtc = output->crtc;
+ RRModePtr mode = crtc ? crtc->mode : 0;
+
+ oe.type = RRNotify + RREventBase;
+ oe.subCode = RRNotify_OutputChange;
+ oe.sequenceNumber = client->sequence;
+ oe.timestamp = pScrPriv->lastSetTime.milliseconds;
+ oe.configTimestamp = pScrPriv->lastConfigTime.milliseconds;
+ oe.window = pWin->drawable.id;
+ oe.output = output->id;
+ if (crtc)
+ {
+ oe.crtc = crtc->id;
+ oe.mode = mode ? mode->mode.id : None;
+ oe.rotation = crtc->rotation;
+ }
+ else
+ {
+ oe.crtc = None;
+ oe.mode = None;
+ oe.rotation = RR_Rotate_0;
+ }
+ oe.connection = output->connection;
+ oe.subpixelOrder = output->subpixelOrder;
+ WriteEventsToClient (client, 1, (xEvent *) &oe);
+}
+
+/*
+ * Destroy a Output at shutdown
+ */
+void
+RROutputDestroy (RROutputPtr crtc)
+{
+ FreeResource (crtc->id, 0);
+}
+
+static int
+RROutputDestroyResource (pointer value, XID pid)
+{
+ RROutputPtr output = (RROutputPtr) value;
+ ScreenPtr pScreen = output->pScreen;
+
+ if (pScreen)
+ {
+ rrScrPriv(pScreen);
+ int i;
+
+ for (i = 0; i < pScrPriv->numOutputs; i++)
+ {
+ if (pScrPriv->outputs[i] == output)
+ {
+ memmove (pScrPriv->outputs + i, pScrPriv->outputs + i + 1,
+ (pScrPriv->numOutputs - (i + 1)) * sizeof (RROutputPtr));
+ --pScrPriv->numOutputs;
+ break;
+ }
+ }
+ }
+ if (output->modes)
+ xfree (output->modes);
+ if (output->crtcs)
+ xfree (output->crtcs);
+ if (output->clones)
+ xfree (output->clones);
+ RRDeleteAllOutputProperties (output);
+ xfree (output);
+ return 1;
+}
+
+/*
+ * Initialize output type
+ */
+Bool
+RROutputInit (void)
+{
+ RROutputType = CreateNewResourceType (RROutputDestroyResource);
+ if (!RROutputType)
+ return FALSE;
+#ifdef XResExtension
+ RegisterResourceName (RROutputType, "OUTPUT");
+#endif
+ return TRUE;
+}
+
+#define OutputInfoExtra (SIZEOF(xRRGetOutputInfoReply) - 32)
+
+int
+ProcRRGetOutputInfo (ClientPtr client)
+{
+ REQUEST(xRRGetOutputInfoReq);;
+ xRRGetOutputInfoReply rep;
+ RROutputPtr output;
+ CARD8 *extra;
+ unsigned long extraLen;
+ ScreenPtr pScreen;
+ rrScrPrivPtr pScrPriv;
+ RRCrtc *crtcs;
+ RRMode *modes;
+ RROutput *clones;
+ char *name;
+ int i, n;
+
+ REQUEST_SIZE_MATCH(xRRGetOutputInfoReq);
+ output = LookupOutput(client, stuff->output, DixReadAccess);
+
+ if (!output)
+ return RRErrorBase + BadRROutput;
+
+ pScreen = output->pScreen;
+ pScrPriv = rrGetScrPriv(pScreen);
+
+ rep.type = X_Reply;
+ rep.sequenceNumber = client->sequence;
+ rep.length = OutputInfoExtra >> 2;
+ rep.timestamp = pScrPriv->lastSetTime.milliseconds;
+ rep.crtc = output->crtc ? output->crtc->id : None;
+ rep.mmWidth = output->mmWidth;
+ rep.mmHeight = output->mmHeight;
+ rep.connection = output->connection;
+ rep.subpixelOrder = output->subpixelOrder;
+ rep.nCrtcs = output->numCrtcs;
+ rep.nModes = output->numModes;
+ rep.nPreferred = output->numPreferred;
+ rep.nClones = output->numClones;
+ rep.nameLength = output->nameLength;
+
+ extraLen = ((output->numCrtcs +
+ output->numModes +
+ output->numClones +
+ ((rep.nameLength + 3) >> 2)) << 2);
+
+ if (extraLen)
+ {
+ rep.length += extraLen >> 2;
+ extra = xalloc (extraLen);
+ if (!extra)
+ return BadAlloc;
+ }
+ else
+ extra = NULL;
+
+ crtcs = (RRCrtc *) extra;
+ modes = (RRMode *) (crtcs + output->numCrtcs);
+ clones = (RROutput *) (modes + output->numModes);
+ name = (char *) (clones + output->numClones);
+
+ for (i = 0; i < output->numCrtcs; i++)
+ {
+ crtcs[i] = output->crtcs[i]->id;
+ if (client->swapped)
+ swapl (&crtcs[i], n);
+ }
+ for (i = 0; i < output->numModes; i++)
+ {
+ modes[i] = output->modes[i]->mode.id;
+ if (client->swapped)
+ swapl (&modes[i], n);
+ }
+ for (i = 0; i < output->numClones; i++)
+ {
+ clones[i] = output->clones[i]->id;
+ if (client->swapped)
+ swapl (&clones[i], n);
+ }
+ memcpy (name, output->name, output->nameLength);
+ if (client->swapped) {
+ swaps(&rep.sequenceNumber, n);
+ swapl(&rep.length, n);
+ swapl(&rep.timestamp, n);
+ swapl(&rep.crtc, n);
+ swapl(&rep.mmWidth, n);
+ swapl(&rep.mmHeight, n);
+ swaps(&rep.nCrtcs, n);
+ swaps(&rep.nModes, n);
+ swaps(&rep.nClones, n);
+ swaps(&rep.nameLength, n);
+ }
+ WriteToClient(client, sizeof(xRRGetOutputInfoReply), (char *)&rep);
+ if (extraLen)
+ {
+ WriteToClient (client, extraLen, (char *) extra);
+ xfree (extra);
+ }
+
+ return client->noClientException;
+}
diff --git a/randr/rrpointer.c b/randr/rrpointer.c
new file mode 100644
index 000000000..c092e494b
--- /dev/null
+++ b/randr/rrpointer.c
@@ -0,0 +1,137 @@
+/*
+ * Copyright © 2006 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 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.
+ */
+
+#include "randrstr.h"
+
+/*
+ * When the pointer moves, check to see if the specified position is outside
+ * any of theavailable CRTCs and move it to a 'sensible' place if so, where
+ * sensible is the closest monitor to the departing edge.
+ *
+ * Returns whether the position was adjusted
+ */
+
+static Bool
+RRCrtcContainsPosition (RRCrtcPtr crtc, int x, int y)
+{
+ RRModePtr mode = crtc->mode;
+
+ if (!mode)
+ return FALSE;
+ if (crtc->x <= x && x < crtc->x + mode->mode.width &&
+ crtc->y <= y && y < crtc->y + mode->mode.height)
+ return TRUE;
+ return FALSE;
+}
+
+/*
+ * Find the CRTC nearest the specified position, ignoring 'skip'
+ */
+static void
+RRPointerToNearestCrtc (ScreenPtr pScreen, int x, int y, RRCrtcPtr skip)
+{
+ rrScrPriv (pScreen);
+ int c;
+ RRCrtcPtr nearest = NULL;
+ int best = 0;
+ int best_dx = 0, best_dy = 0;
+
+ for (c = 0; c < pScrPriv->numCrtcs; c++)
+ {
+ RRCrtcPtr crtc = pScrPriv->crtcs[c];
+ RRModePtr mode = crtc->mode;
+ int dx, dy;
+ int dist;
+
+ if (!mode)
+ continue;
+ if (crtc == skip)
+ continue;
+ if (x < crtc->x)
+ dx = crtc->x - x;
+ else if (x > crtc->x + mode->mode.width)
+ dx = x - (crtc->x + mode->mode.width);
+ else
+ dx = 0;
+ if (y < crtc->y)
+ dy = crtc->y - x;
+ else if (y > crtc->y + mode->mode.height)
+ dy = y - (crtc->y + mode->mode.height);
+ else
+ dy = 0;
+ dist = dx + dy;
+ if (!nearest || dist < best)
+ {
+ nearest = crtc;
+ best_dx = dx;
+ best_dy = dy;
+ }
+ }
+ if (best_dx || best_dy)
+ (*pScreen->SetCursorPosition) (pScreen, x + best_dx, y + best_dy, TRUE);
+ pScrPriv->pointerCrtc = nearest;
+}
+
+void
+RRPointerMoved (ScreenPtr pScreen, int x, int y)
+{
+ rrScrPriv (pScreen);
+ RRCrtcPtr pointerCrtc = pScrPriv->pointerCrtc;;
+ int c;
+
+ /* Check last known CRTC */
+ if (pointerCrtc && RRCrtcContainsPosition (pointerCrtc, x, y))
+ return;
+
+ /* Check all CRTCs */
+ for (c = 0; c < pScrPriv->numCrtcs; c++)
+ {
+ RRCrtcPtr crtc = pScrPriv->crtcs[c];
+
+ if (RRCrtcContainsPosition (crtc, x, y))
+ {
+ /* Remember containing CRTC */
+ pScrPriv->pointerCrtc = crtc;
+ return;
+ }
+ }
+
+ /* None contain pointer, find nearest */
+ RRPointerToNearestCrtc (pScreen, x, y, pointerCrtc);
+}
+
+/*
+ * When the screen is reconfigured, move the pointer to the nearest
+ * CRTC
+ */
+void
+RRPointerScreenConfigured (ScreenPtr pScreen)
+{
+ WindowPtr pRoot = GetCurrentRootWindow ();
+ ScreenPtr pCurrentScreen = pRoot ? pRoot->drawable.pScreen : NULL;
+ int x, y;
+
+ if (pScreen != pCurrentScreen)
+ return;
+ GetSpritePosition (&x, &y);
+ RRPointerToNearestCrtc (pScreen, x, y, NULL);
+}
diff --git a/randr/rrproperty.c b/randr/rrproperty.c
new file mode 100644
index 000000000..56bb39a85
--- /dev/null
+++ b/randr/rrproperty.c
@@ -0,0 +1,624 @@
+/*
+ * Copyright © 2006 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 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.
+ */
+
+#include "randrstr.h"
+#include "propertyst.h"
+#include "swaprep.h"
+
+static void
+RRDeliverEvent (ScreenPtr pScreen, xEvent *event, CARD32 mask)
+{
+
+}
+
+void
+RRDeleteAllOutputProperties (RROutputPtr output)
+{
+ RRPropertyPtr prop, next;
+ xRROutputPropertyNotifyEvent event;
+
+ for (prop = output->properties; prop; prop = next)
+ {
+ next = prop->next;
+ event.type = RREventBase + RRNotify;
+ event.subCode = RRNotify_OutputProperty;
+ event.output = output->id;
+ event.state = PropertyDelete;
+ event.atom = prop->propertyName;
+ event.timestamp = currentTime.milliseconds;
+ RRDeliverEvent (output->pScreen, (xEvent *) &event, RROutputPropertyNotifyMask);
+ if (prop->current.data)
+ xfree(prop->current.data);
+ if (prop->pending.data)
+ xfree(prop->pending.data);
+ xfree(prop);
+ }
+}
+
+static void
+RRInitOutputPropertyValue (RRPropertyValuePtr property_value)
+{
+ property_value->type = None;
+ property_value->format = 0;
+ property_value->size = 0;
+ property_value->data = NULL;
+}
+
+static RRPropertyPtr
+RRCreateOutputProperty (Atom property)
+{
+ RRPropertyPtr prop;
+
+ prop = (RRPropertyPtr)xalloc(sizeof(RRPropertyRec));
+ if (!prop)
+ return NULL;
+ prop->next = NULL;
+ prop->propertyName = property;
+ prop->is_pending = FALSE;
+ prop->range = FALSE;
+ prop->immutable = FALSE;
+ prop->num_valid = 0;
+ prop->valid_values = NULL;
+ RRInitOutputPropertyValue (&prop->current);
+ RRInitOutputPropertyValue (&prop->pending);
+ return prop;
+}
+
+static void
+RRDestroyOutputProperty (RRPropertyPtr prop)
+{
+ if (prop->valid_values)
+ xfree (prop->valid_values);
+ if (prop->current.data)
+ xfree(prop->current.data);
+ if (prop->pending.data)
+ xfree(prop->pending.data);
+ xfree(prop);
+}
+
+void
+RRDeleteOutputProperty (RROutputPtr output, Atom property)
+{
+ RRPropertyPtr prop, *prev;
+ xRROutputPropertyNotifyEvent event;
+
+ for (prev = &output->properties; (prop = *prev); prev = &(prop->next))
+ if (prop->propertyName == property)
+ break;
+ if (prop)
+ {
+ *prev = prop->next;
+ event.type = RREventBase + RRNotify;
+ event.subCode = RRNotify_OutputProperty;
+ event.output = output->id;
+ event.state = PropertyDelete;
+ event.atom = prop->propertyName;
+ event.timestamp = currentTime.milliseconds;
+ RRDeliverEvent (output->pScreen, (xEvent *) &event, RROutputPropertyNotifyMask);
+ RRDestroyOutputProperty (prop);
+ }
+}
+
+int
+RRChangeOutputProperty (RROutputPtr output, Atom property, Atom type,
+ int format, int mode, unsigned long len,
+ pointer value, Bool sendevent)
+{
+ RRPropertyPtr prop;
+ xRROutputPropertyNotifyEvent event;
+ int sizeInBytes;
+ int totalSize;
+ pointer data;
+ RRPropertyValuePtr prop_value;
+ Bool add = FALSE;
+
+ sizeInBytes = format >> 3;
+ totalSize = len * sizeInBytes;
+
+ /* first see if property already exists */
+ prop = RRQueryOutputProperty (output, property);
+ if (!prop) /* just add to list */
+ {
+ prop = RRCreateOutputProperty (property);
+ if (!prop)
+ return(BadAlloc);
+ add = TRUE;
+ mode = PropModeReplace;
+ }
+ if (prop->is_pending)
+ prop_value = &prop->pending;
+ else
+ prop_value = &prop->current;
+
+ /* 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 != prop_value->format) && (mode != PropModeReplace))
+ return(BadMatch);
+ if ((prop_value->type != type) && (mode != PropModeReplace))
+ return(BadMatch);
+ if (mode == PropModeReplace)
+ {
+ if (totalSize != prop_value->size * (prop_value->format >> 3))
+ {
+ if (prop_value->data)
+ data = (pointer)xrealloc(prop_value->data, totalSize);
+ else
+ data = (pointer)xalloc (totalSize);
+ if (!data && len)
+ {
+ if (add)
+ RRDestroyOutputProperty (prop);
+ return(BadAlloc);
+ }
+ prop_value->data = data;
+ }
+ if (len)
+ memmove((char *)prop_value->data, (char *)value, totalSize);
+ prop_value->size = len;
+ prop_value->type = type;
+ prop_value->format = format;
+ }
+ else if (len == 0)
+ {
+ /* do nothing */
+ }
+ else if (mode == PropModeAppend)
+ {
+ data = (pointer)xrealloc(prop_value->data,
+ sizeInBytes * (len + prop_value->size));
+ if (!data)
+ return(BadAlloc);
+ prop_value->data = data;
+ memmove(&((char *)data)[prop_value->size * sizeInBytes],
+ (char *)value,
+ totalSize);
+ prop_value->size += len;
+ }
+ else if (mode == PropModePrepend)
+ {
+ data = (pointer)xalloc(sizeInBytes * (len + prop_value->size));
+ if (!data)
+ return(BadAlloc);
+ memmove(&((char *)data)[totalSize], (char *)prop_value->data,
+ (int)(prop_value->size * sizeInBytes));
+ memmove((char *)data, (char *)value, totalSize);
+ xfree(prop_value->data);
+ prop_value->data = data;
+ prop_value->size += len;
+ }
+ if (add)
+ {
+ prop->next = output->properties;
+ output->properties = prop;
+ }
+ if (sendevent)
+ {
+ event.type = RREventBase + RRNotify;
+ event.subCode = RRNotify_OutputProperty;
+ event.output = output->id;
+ event.state = PropertyNewValue;
+ event.atom = prop->propertyName;
+ event.timestamp = currentTime.milliseconds;
+ RRDeliverEvent (output->pScreen, (xEvent *) &event, RROutputPropertyNotifyMask);
+ }
+ return(Success);
+}
+
+RRPropertyPtr
+RRQueryOutputProperty (RROutputPtr output, Atom property)
+{
+ RRPropertyPtr prop;
+
+ for (prop = output->properties; prop; prop = prop->next)
+ if (prop->propertyName == property)
+ return prop;
+ return NULL;
+}
+
+RRPropertyValuePtr
+RRGetOutputProperty (RROutputPtr output, Atom property, Bool pending)
+{
+ RRPropertyPtr prop = RRQueryOutputProperty (output, property);
+
+ if (!prop)
+ return NULL;
+ if (pending && prop->is_pending)
+ return &prop->pending;
+ else
+ return &prop->current;
+}
+
+int
+RRConfigureOutputProperty (RROutputPtr output, Atom property,
+ Bool pending, Bool range, Bool immutable,
+ int num_values, INT32 *values)
+{
+ RRPropertyPtr prop = RRQueryOutputProperty (output, property);
+ Bool add = FALSE;
+ INT32 *new_values;
+
+ if (!prop)
+ {
+ prop = RRCreateOutputProperty (property);
+ if (!prop)
+ return(BadAlloc);
+ add = TRUE;
+ } else if (prop->immutable && !immutable)
+ return(BadAccess);
+
+ /*
+ * ranges must have even number of values
+ */
+ if (range && (num_values & 1))
+ return BadMatch;
+
+ new_values = xalloc (num_values * sizeof (INT32));
+ if (!new_values && num_values)
+ return BadAlloc;
+ if (num_values)
+ memcpy (new_values, values, num_values * sizeof (INT32));
+
+ /*
+ * Property moving from pending to non-pending
+ * loses any pending values
+ */
+ if (prop->is_pending && !pending)
+ {
+ if (prop->pending.data)
+ xfree (prop->pending.data);
+ RRInitOutputPropertyValue (&prop->pending);
+ }
+
+ prop->is_pending = pending;
+ prop->range = range;
+ prop->immutable = immutable;
+ prop->num_valid = num_values;
+ if (prop->valid_values)
+ xfree (prop->valid_values);
+ prop->valid_values = new_values;
+ return Success;
+}
+
+int
+ProcRRListOutputProperties (ClientPtr client)
+{
+ REQUEST(xRRListOutputPropertiesReq);
+ Atom *pAtoms = NULL, *temppAtoms;
+ xRRListOutputPropertiesReply rep;
+ int numProps = 0;
+ RROutputPtr output;
+ RRPropertyPtr prop;
+
+ REQUEST_SIZE_MATCH(xRRListOutputPropertiesReq);
+
+ output = LookupOutput (client, stuff->output, DixReadAccess);
+
+ if (!output)
+ return RRErrorBase + BadRROutput;
+
+ for (prop = output->properties; prop; prop = prop->next)
+ numProps++;
+ if (numProps)
+ if(!(pAtoms = (Atom *)ALLOCATE_LOCAL(numProps * sizeof(Atom))))
+ return(BadAlloc);
+
+ rep.type = X_Reply;
+ rep.length = (numProps * sizeof(Atom)) >> 2;
+ rep.sequenceNumber = client->sequence;
+ rep.nAtoms = numProps;
+ if (client->swapped)
+ {
+ int n;
+ swaps (&rep.sequenceNumber, n);
+ swapl (&rep.length, n);
+ }
+ temppAtoms = pAtoms;
+ for (prop = output->properties; prop; prop = prop->next)
+ *temppAtoms++ = prop->propertyName;
+
+ WriteReplyToClient(client, sizeof(xRRListOutputPropertiesReply), &rep);
+ if (numProps)
+ {
+ client->pSwapReplyFunc = (ReplySwapPtr)Swap32Write;
+ WriteSwappedDataToClient(client, numProps * sizeof(Atom), pAtoms);
+ DEALLOCATE_LOCAL(pAtoms);
+ }
+ return(client->noClientException);
+}
+
+int
+ProcRRQueryOutputProperty (ClientPtr client)
+{
+ REQUEST(xRRQueryOutputPropertyReq);
+ xRRQueryOutputPropertyReply rep;
+ RROutputPtr output;
+ RRPropertyPtr prop;
+
+ REQUEST_SIZE_MATCH(xRRQueryOutputPropertyReq);
+
+ output = LookupOutput (client, stuff->output, DixReadAccess);
+
+ if (!output)
+ return RRErrorBase + BadRROutput;
+
+ prop = RRQueryOutputProperty (output, stuff->property);
+ if (!prop)
+ return BadName;
+
+ rep.type = X_Reply;
+ rep.length = prop->num_valid;
+ rep.sequenceNumber = client->sequence;
+ rep.pending = prop->is_pending;
+ rep.range = prop->range;
+ rep.immutable = prop->immutable;
+ if (client->swapped)
+ {
+ int n;
+ swaps (&rep.sequenceNumber, n);
+ swapl (&rep.length, n);
+ }
+ WriteReplyToClient (client, sizeof (xRRQueryOutputPropertyReply), &rep);
+ if (prop->num_valid)
+ {
+ client->pSwapReplyFunc = (ReplySwapPtr)Swap32Write;
+ WriteSwappedDataToClient(client, prop->num_valid * sizeof(INT32),
+ prop->valid_values);
+ }
+ return(client->noClientException);
+}
+
+int
+ProcRRConfigureOutputProperty (ClientPtr client)
+{
+ REQUEST(xRRConfigureOutputPropertyReq);
+ RROutputPtr output;
+ int num_valid;
+
+ REQUEST_SIZE_MATCH(xRRConfigureOutputPropertyReq);
+
+ output = LookupOutput (client, stuff->output, DixReadAccess);
+
+ if (!output)
+ return RRErrorBase + BadRROutput;
+
+ num_valid = stuff->length - (sizeof (xRRConfigureOutputPropertyReq) >> 2);
+ return RRConfigureOutputProperty (output, stuff->property,
+ stuff->pending, stuff->range,
+ FALSE, num_valid,
+ (INT32 *) (stuff + 1));
+}
+
+int
+ProcRRChangeOutputProperty (ClientPtr client)
+{
+ REQUEST(xRRChangeOutputPropertyReq);
+ RROutputPtr output;
+ char format, mode;
+ unsigned long len;
+ int sizeInBytes;
+ int totalSize;
+ int err;
+
+ REQUEST_AT_LEAST_SIZE(xRRChangeOutputPropertyReq);
+ 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;
+ sizeInBytes = format>>3;
+ totalSize = len * sizeInBytes;
+ REQUEST_FIXED_SIZE(xRRChangeOutputPropertyReq, totalSize);
+
+ output = LookupOutput (client, stuff->output, DixWriteAccess);
+ if (!output)
+ return RRErrorBase + BadRROutput;
+
+ if (!ValidAtom(stuff->property))
+ {
+ client->errorValue = stuff->property;
+ return(BadAtom);
+ }
+ if (!ValidAtom(stuff->type))
+ {
+ client->errorValue = stuff->type;
+ return(BadAtom);
+ }
+
+ err = RRChangeOutputProperty(output, stuff->property,
+ stuff->type, (int)format,
+ (int)mode, len, (pointer)&stuff[1], TRUE);
+ if (err != Success)
+ return err;
+ else
+ return client->noClientException;
+}
+
+int
+ProcRRDeleteOutputProperty (ClientPtr client)
+{
+ REQUEST(xRRDeleteOutputPropertyReq);
+ RROutputPtr output;
+
+ REQUEST_SIZE_MATCH(xRRDeleteOutputPropertyReq);
+ UpdateCurrentTime();
+ output = LookupOutput (client, stuff->output, DixWriteAccess);
+ if (!output)
+ return RRErrorBase + BadRROutput;
+
+ if (!ValidAtom(stuff->property))
+ {
+ client->errorValue = stuff->property;
+ return (BadAtom);
+ }
+
+
+ RRDeleteOutputProperty(output, stuff->property);
+ return client->noClientException;
+}
+
+int
+ProcRRGetOutputProperty (ClientPtr client)
+{
+ REQUEST(xRRGetOutputPropertyReq);
+ RRPropertyPtr prop, *prev;
+ RRPropertyValuePtr prop_value;
+ unsigned long n, len, ind;
+ RROutputPtr output;
+ xRRGetOutputPropertyReply reply;
+
+ REQUEST_SIZE_MATCH(xRRGetOutputPropertyReq);
+ if (stuff->delete)
+ UpdateCurrentTime();
+ output = LookupOutput (client, stuff->output,
+ stuff->delete ? DixWriteAccess :
+ DixReadAccess);
+ if (!output)
+ return RRErrorBase + BadRROutput;
+
+ 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);
+ }
+
+ for (prev = &output->properties; (prop = *prev); prev = &prop->next)
+ if (prop->propertyName == stuff->property)
+ break;
+
+ reply.type = X_Reply;
+ reply.sequenceNumber = client->sequence;
+ if (!prop)
+ {
+ reply.nItems = 0;
+ reply.length = 0;
+ reply.bytesAfter = 0;
+ reply.propertyType = None;
+ reply.format = 0;
+ WriteReplyToClient(client, sizeof(xRRGetOutputPropertyReply), &reply);
+ return(client->noClientException);
+ }
+
+ if (prop->immutable && stuff->delete)
+ return BadAccess;
+
+ if (stuff->pending && prop->is_pending)
+ prop_value = &prop->pending;
+ else
+ prop_value = &prop->current;
+
+ /* If the request type and actual type don't match. Return the
+ property information, but not the data. */
+
+ if (((stuff->type != prop_value->type) &&
+ (stuff->type != AnyPropertyType))
+ )
+ {
+ reply.bytesAfter = prop_value->size;
+ reply.format = prop_value->format;
+ reply.length = 0;
+ reply.nItems = 0;
+ reply.propertyType = prop_value->type;
+ WriteReplyToClient(client, sizeof(xRRGetOutputPropertyReply), &reply);
+ return(client->noClientException);
+ }
+
+/*
+ * Return type, format, value to client
+ */
+ n = (prop_value->format/8) * prop_value->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;
+ }
+
+ len = min(n - ind, 4 * stuff->longLength);
+
+ reply.bytesAfter = n - (ind + len);
+ reply.format = prop_value->format;
+ reply.length = (len + 3) >> 2;
+ reply.nItems = len / (prop_value->format / 8 );
+ reply.propertyType = prop_value->type;
+
+ if (stuff->delete && (reply.bytesAfter == 0))
+ {
+ xRROutputPropertyNotifyEvent event;
+
+ event.type = RREventBase + RRNotify;
+ event.subCode = RRNotify_OutputProperty;
+ event.output = output->id;
+ event.state = PropertyDelete;
+ event.atom = prop->propertyName;
+ event.timestamp = currentTime.milliseconds;
+ RRDeliverEvent (output->pScreen, (xEvent *) &event, RROutputPropertyNotifyMask);
+ }
+
+ WriteReplyToClient(client, sizeof(xGenericReply), &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 *)prop_value->data + ind);
+ }
+
+ if (stuff->delete && (reply.bytesAfter == 0))
+ { /* delete the Property */
+ *prev = prop->next;
+ RRDestroyOutputProperty (prop);
+ }
+ return(client->noClientException);
+}
+
diff --git a/randr/rrscreen.c b/randr/rrscreen.c
new file mode 100644
index 000000000..6f7afaf7a
--- /dev/null
+++ b/randr/rrscreen.c
@@ -0,0 +1,944 @@
+/*
+ * Copyright © 2006 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 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.
+ */
+
+#include "randrstr.h"
+
+extern char *ConnectionInfo;
+
+static int padlength[4] = {0, 3, 2, 1};
+
+/*
+ * Edit connection information block so that new clients
+ * see the current screen size on connect
+ */
+static void
+RREditConnectionInfo (ScreenPtr pScreen)
+{
+ xConnSetup *connSetup;
+ char *vendor;
+ xPixmapFormat *formats;
+ xWindowRoot *root;
+ xDepth *depth;
+ xVisualType *visual;
+ int screen = 0;
+ int d;
+
+ connSetup = (xConnSetup *) ConnectionInfo;
+ vendor = (char *) connSetup + sizeof (xConnSetup);
+ formats = (xPixmapFormat *) ((char *) vendor +
+ connSetup->nbytesVendor +
+ padlength[connSetup->nbytesVendor & 3]);
+ root = (xWindowRoot *) ((char *) formats +
+ sizeof (xPixmapFormat) * screenInfo.numPixmapFormats);
+ while (screen != pScreen->myNum)
+ {
+ depth = (xDepth *) ((char *) root +
+ sizeof (xWindowRoot));
+ for (d = 0; d < root->nDepths; d++)
+ {
+ visual = (xVisualType *) ((char *) depth +
+ sizeof (xDepth));
+ depth = (xDepth *) ((char *) visual +
+ depth->nVisuals * sizeof (xVisualType));
+ }
+ root = (xWindowRoot *) ((char *) depth);
+ screen++;
+ }
+ root->pixWidth = pScreen->width;
+ root->pixHeight = pScreen->height;
+ root->mmWidth = pScreen->mmWidth;
+ root->mmHeight = pScreen->mmHeight;
+}
+
+void
+RRSendConfigNotify (ScreenPtr pScreen)
+{
+ WindowPtr pWin = WindowTable[pScreen->myNum];
+ xEvent event;
+
+ event.u.u.type = ConfigureNotify;
+ event.u.configureNotify.window = pWin->drawable.id;
+ event.u.configureNotify.aboveSibling = None;
+ event.u.configureNotify.x = 0;
+ event.u.configureNotify.y = 0;
+
+ /* XXX xinerama stuff ? */
+
+ event.u.configureNotify.width = pWin->drawable.width;
+ event.u.configureNotify.height = pWin->drawable.height;
+ event.u.configureNotify.borderWidth = wBorderWidth (pWin);
+ event.u.configureNotify.override = pWin->overrideRedirect;
+ DeliverEvents(pWin, &event, 1, NullWindow);
+}
+
+void
+RRDeliverScreenEvent (ClientPtr client, WindowPtr pWin, ScreenPtr pScreen)
+{
+ rrScrPriv (pScreen);
+ xRRScreenChangeNotifyEvent se;
+ RRCrtcPtr crtc = pScrPriv->numCrtcs ? pScrPriv->crtcs[0] : NULL;
+ RROutputPtr output = pScrPriv->numOutputs ? pScrPriv->outputs[0] : NULL;
+ RRModePtr mode = crtc ? crtc->mode : NULL;
+ WindowPtr pRoot = WindowTable[pScreen->myNum];
+ int i;
+
+ se.type = RRScreenChangeNotify + RREventBase;
+ se.rotation = (CARD8) (crtc ? crtc->rotation : RR_Rotate_0);
+ se.timestamp = pScrPriv->lastSetTime.milliseconds;
+ se.sequenceNumber = client->sequence;
+ se.configTimestamp = pScrPriv->lastConfigTime.milliseconds;
+ se.root = pRoot->drawable.id;
+ se.window = pWin->drawable.id;
+#ifdef RENDER
+ se.subpixelOrder = PictureGetSubpixelOrder (pScreen);
+#else
+ se.subpixelOrder = SubPixelUnknown;
+#endif
+
+ se.sequenceNumber = client->sequence;
+ if (mode)
+ {
+ se.sizeID = -1;
+ for (i = 0; i < output->numModes; i++)
+ if (mode == output->modes[i])
+ {
+ se.sizeID = i;
+ break;
+ }
+ se.widthInPixels = mode->mode.width;
+ se.heightInPixels = mode->mode.height;
+ se.widthInMillimeters = pScreen->mmWidth;
+ se.heightInMillimeters = pScreen->mmHeight;
+ }
+ else
+ {
+ /*
+ * This "shouldn't happen", but a broken DDX can
+ * forget to set the current configuration on GetInfo
+ */
+ se.sizeID = 0xffff;
+ se.widthInPixels = 0;
+ se.heightInPixels = 0;
+ se.widthInMillimeters = 0;
+ se.heightInMillimeters = 0;
+ }
+ WriteEventsToClient (client, 1, (xEvent *) &se);
+}
+
+/*
+ * Notify the extension that the screen size has been changed.
+ * The driver is responsible for calling this whenever it has changed
+ * the size of the screen
+ */
+void
+RRScreenSizeNotify (ScreenPtr pScreen)
+{
+ rrScrPriv(pScreen);
+ /*
+ * Deliver ConfigureNotify events when root changes
+ * pixel size
+ */
+ if (pScrPriv->width == pScreen->width &&
+ pScrPriv->height == pScreen->height)
+ return;
+
+ pScrPriv->width = pScreen->width;
+ pScrPriv->height = pScreen->height;
+ pScrPriv->changed = TRUE;
+/* pScrPriv->sizeChanged = TRUE; */
+
+ RRTellChanged (pScreen);
+ RRSendConfigNotify (pScreen);
+ RREditConnectionInfo (pScreen);
+
+ RRPointerScreenConfigured (pScreen);
+ /*
+ * Fix pointer bounds and location
+ */
+ ScreenRestructured (pScreen);
+}
+
+/*
+ * Request that the screen be resized
+ */
+Bool
+RRScreenSizeSet (ScreenPtr pScreen,
+ CARD16 width,
+ CARD16 height,
+ CARD32 mmWidth,
+ CARD32 mmHeight)
+{
+ rrScrPriv(pScreen);
+
+#if RANDR_12_INTERFACE
+ if (pScrPriv->rrScreenSetSize)
+ {
+ return (*pScrPriv->rrScreenSetSize) (pScreen,
+ width, height,
+ mmWidth, mmHeight);
+ }
+#endif
+#if RANDR_10_INTERFACE
+ if (pScrPriv->rrSetConfig)
+ {
+ return TRUE; /* can't set size separately */
+ }
+#endif
+ return FALSE;
+}
+
+/*
+ * Retrieve valid screen size range
+ */
+int
+ProcRRGetScreenSizeRange (ClientPtr client)
+{
+ REQUEST(xRRGetScreenSizeRangeReq);
+ xRRGetScreenSizeRangeReply rep;
+ WindowPtr pWin;
+ ScreenPtr pScreen;
+ rrScrPrivPtr pScrPriv;
+ int rc;
+
+ REQUEST_SIZE_MATCH(xRRGetScreenInfoReq);
+ rc = dixLookupWindow(&pWin, stuff->window, client, DixReadAccess);
+ if (rc != Success)
+ return rc;
+
+ pScreen = pWin->drawable.pScreen;
+ pScrPriv = rrGetScrPriv(pScreen);
+
+ rep.type = X_Reply;
+ rep.pad = 0;
+ rep.sequenceNumber = client->sequence;
+ rep.length = 0;
+
+ if (pScrPriv)
+ {
+ RRGetInfo (pScreen);
+ rep.minWidth = pScrPriv->minWidth;
+ rep.minHeight = pScrPriv->minHeight;
+ rep.maxWidth = pScrPriv->maxWidth;
+ rep.maxHeight = pScrPriv->maxHeight;
+ }
+ else
+ {
+ rep.maxWidth = rep.minWidth = pScreen->width;
+ rep.maxHeight = rep.minHeight = pScreen->height;
+ }
+ if (client->swapped)
+ {
+ int n;
+
+ swaps(&rep.sequenceNumber, n);
+ swapl(&rep.length, n);
+ swaps(&rep.minWidth, n);
+ swaps(&rep.minHeight, n);
+ swaps(&rep.maxWidth, n);
+ swaps(&rep.maxHeight, n);
+ }
+ WriteToClient(client, sizeof(xRRGetScreenSizeRangeReply), (char *)&rep);
+ return (client->noClientException);
+}
+
+int
+ProcRRSetScreenSize (ClientPtr client)
+{
+ REQUEST(xRRSetScreenSizeReq);
+ WindowPtr pWin;
+ ScreenPtr pScreen;
+ rrScrPrivPtr pScrPriv;
+ int i, rc;
+
+ REQUEST_SIZE_MATCH(xRRSetScreenSizeReq);
+ rc = dixLookupWindow(&pWin, stuff->window, client, DixReadAccess);
+ if (rc != Success)
+ return rc;
+
+ pScreen = pWin->drawable.pScreen;
+ pScrPriv = rrGetScrPriv(pScreen);
+ if (stuff->width < pScrPriv->minWidth || pScrPriv->maxWidth < stuff->width)
+ {
+ client->errorValue = stuff->width;
+ return BadValue;
+ }
+ if (stuff->height < pScrPriv->minHeight ||
+ pScrPriv->maxHeight < stuff->height)
+ {
+ client->errorValue = stuff->height;
+ return BadValue;
+ }
+ for (i = 0; i < pScrPriv->numCrtcs; i++)
+ {
+ RRCrtcPtr crtc = pScrPriv->crtcs[i];
+ RRModePtr mode = crtc->mode;
+ if (mode)
+ {
+ int source_width = mode->mode.width;
+ int source_height = mode->mode.height;
+ Rotation rotation = crtc->rotation;
+
+ if (rotation == RR_Rotate_90 || rotation == RR_Rotate_270)
+ {
+ source_width = mode->mode.height;
+ source_height = mode->mode.width;
+ }
+
+ if (crtc->x + source_width > stuff->width ||
+ crtc->y + source_height > stuff->height)
+ return BadMatch;
+ }
+ }
+ if (stuff->widthInMillimeters == 0 || stuff->heightInMillimeters == 0)
+ {
+ client->errorValue = 0;
+ return BadValue;
+ }
+ if (!RRScreenSizeSet (pScreen,
+ stuff->width, stuff->height,
+ stuff->widthInMillimeters,
+ stuff->heightInMillimeters))
+ {
+ return BadMatch;
+ }
+ return Success;
+}
+
+int
+ProcRRGetScreenResources (ClientPtr client)
+{
+ REQUEST(xRRGetScreenResourcesReq);
+ xRRGetScreenResourcesReply rep;
+ WindowPtr pWin;
+ ScreenPtr pScreen;
+ rrScrPrivPtr pScrPriv;
+ CARD8 *extra;
+ unsigned long extraLen;
+ int i, n, rc;
+ RRCrtc *crtcs;
+ RROutput *outputs;
+ xRRModeInfo *modeinfos;
+ CARD8 *names;
+
+ REQUEST_SIZE_MATCH(xRRGetScreenResourcesReq);
+ rc = dixLookupWindow(&pWin, stuff->window, client, DixReadAccess);
+ if (rc != Success)
+ return rc;
+
+ pScreen = pWin->drawable.pScreen;
+ pScrPriv = rrGetScrPriv(pScreen);
+ rep.pad = 0;
+
+ if (pScrPriv)
+ RRGetInfo (pScreen);
+
+ if (!pScrPriv)
+ {
+ rep.type = X_Reply;
+ rep.sequenceNumber = client->sequence;
+ rep.length = 0;
+ rep.timestamp = currentTime.milliseconds;
+ rep.configTimestamp = currentTime.milliseconds;
+ rep.nCrtcs = 0;
+ rep.nOutputs = 0;
+ rep.nModes = 0;
+ rep.nbytesNames = 0;
+ extra = NULL;
+ extraLen = 0;
+ }
+ else
+ {
+ RRModePtr *modes;
+ int num_modes;
+
+ modes = RRModesForScreen (pScreen, &num_modes);
+ if (!modes)
+ return BadAlloc;
+
+ rep.type = X_Reply;
+ rep.sequenceNumber = client->sequence;
+ rep.length = 0;
+ rep.timestamp = pScrPriv->lastSetTime.milliseconds;
+ rep.configTimestamp = pScrPriv->lastConfigTime.milliseconds;
+ rep.nCrtcs = pScrPriv->numCrtcs;
+ rep.nOutputs = pScrPriv->numOutputs;
+ rep.nModes = num_modes;
+ rep.nbytesNames = 0;
+
+ for (i = 0; i < num_modes; i++)
+ rep.nbytesNames += modes[i]->mode.nameLength;
+
+ rep.length = (pScrPriv->numCrtcs +
+ pScrPriv->numOutputs +
+ num_modes * (SIZEOF(xRRModeInfo) >> 2) +
+ ((rep.nbytesNames + 3) >> 2));
+
+ extraLen = rep.length << 2;
+ if (extraLen)
+ {
+ extra = xalloc (extraLen);
+ if (!extra)
+ {
+ xfree (modes);
+ return BadAlloc;
+ }
+ }
+ else
+ extra = NULL;
+
+ crtcs = (RRCrtc *) extra;
+ outputs = (RROutput *) (crtcs + pScrPriv->numCrtcs);
+ modeinfos = (xRRModeInfo *) (outputs + pScrPriv->numOutputs);
+ names = (CARD8 *) (modeinfos + num_modes);
+
+ for (i = 0; i < pScrPriv->numCrtcs; i++)
+ {
+ crtcs[i] = pScrPriv->crtcs[i]->id;
+ if (client->swapped)
+ swapl (&crtcs[i], n);
+ }
+
+ for (i = 0; i < pScrPriv->numOutputs; i++)
+ {
+ outputs[i] = pScrPriv->outputs[i]->id;
+ if (client->swapped)
+ swapl (&outputs[i], n);
+ }
+
+ for (i = 0; i < num_modes; i++)
+ {
+ RRModePtr mode = modes[i];
+ modeinfos[i] = mode->mode;
+ if (client->swapped)
+ {
+ swapl (&modeinfos[i].id, n);
+ swaps (&modeinfos[i].width, n);
+ swaps (&modeinfos[i].height, n);
+ swapl (&modeinfos[i].dotClock, n);
+ swaps (&modeinfos[i].hSyncStart, n);
+ swaps (&modeinfos[i].hSyncEnd, n);
+ swaps (&modeinfos[i].hTotal, n);
+ swaps (&modeinfos[i].hSkew, n);
+ swaps (&modeinfos[i].vSyncStart, n);
+ swaps (&modeinfos[i].vSyncEnd, n);
+ swaps (&modeinfos[i].vTotal, n);
+ swaps (&modeinfos[i].nameLength, n);
+ swapl (&modeinfos[i].modeFlags, n);
+ }
+ memcpy (names, mode->name,
+ mode->mode.nameLength);
+ names += mode->mode.nameLength;
+ }
+ xfree (modes);
+ assert (((((char *) names - (char *) extra) + 3) >> 2) == rep.length);
+ }
+
+ if (client->swapped) {
+ swaps(&rep.sequenceNumber, n);
+ swapl(&rep.length, n);
+ swapl(&rep.timestamp, n);
+ swapl(&rep.configTimestamp, n);
+ swaps(&rep.nCrtcs, n);
+ swaps(&rep.nOutputs, n);
+ swaps(&rep.nModes, n);
+ swaps(&rep.nbytesNames, n);
+ }
+ WriteToClient(client, sizeof(xRRGetScreenResourcesReply), (char *)&rep);
+ if (extraLen)
+ {
+ WriteToClient (client, extraLen, (char *) extra);
+ xfree (extra);
+ }
+ return client->noClientException;
+}
+
+typedef struct _RR10Data {
+ RRScreenSizePtr sizes;
+ int nsize;
+ int nrefresh;
+ int size;
+ CARD16 refresh;
+} RR10DataRec, *RR10DataPtr;
+
+/*
+ * Convert 1.2 monitor data into 1.0 screen data
+ */
+static RR10DataPtr
+RR10GetData (ScreenPtr pScreen, RROutputPtr output)
+{
+ RR10DataPtr data;
+ RRScreenSizePtr size;
+ int nmode = output->numModes;
+ int o, os, l, r;
+ RRScreenRatePtr refresh;
+ CARD16 vRefresh;
+ RRModePtr mode;
+ Bool *used;
+
+ /* Make sure there is plenty of space for any combination */
+ data = malloc (sizeof (RR10DataRec) +
+ sizeof (RRScreenSize) * nmode +
+ sizeof (RRScreenRate) * nmode +
+ sizeof (Bool) * nmode);
+ if (!data)
+ return NULL;
+ size = (RRScreenSizePtr) (data + 1);
+ refresh = (RRScreenRatePtr) (size + nmode);
+ used = (Bool *) (refresh + nmode);
+ memset (used, '\0', sizeof (Bool) * nmode);
+ data->sizes = size;
+ data->nsize = 0;
+ data->nrefresh = 0;
+ data->size = 0;
+ data->refresh = 0;
+
+ /*
+ * find modes not yet listed
+ */
+ for (o = 0; o < output->numModes; o++)
+ {
+ if (used[o]) continue;
+
+ mode = output->modes[o];
+
+ l = data->nsize;
+ size[l].id = data->nsize;
+ size[l].width = mode->mode.width;
+ size[l].height = mode->mode.height;
+ if (output->mmWidth && output->mmHeight) {
+ size[l].mmWidth = output->mmWidth;
+ size[l].mmHeight = output->mmHeight;
+ } else {
+ size[l].mmWidth = pScreen->mmWidth;
+ size[l].mmHeight = pScreen->mmHeight;
+ }
+ size[l].nRates = 0;
+ size[l].pRates = &refresh[data->nrefresh];
+ data->nsize++;
+
+ /*
+ * Find all modes with matching size
+ */
+ for (os = o; os < output->numModes; os++)
+ {
+ mode = output->modes[os];
+ if (mode->mode.width == size[l].width &&
+ mode->mode.height == size[l].height)
+ {
+ vRefresh = RRVerticalRefresh (&mode->mode);
+ used[os] = TRUE;
+
+ for (r = 0; r < size[l].nRates; r++)
+ if (vRefresh == size[l].pRates[r].rate)
+ break;
+ if (r == size[l].nRates)
+ {
+ size[l].pRates[r].rate = vRefresh;
+ size[l].pRates[r].mode = mode;
+ size[l].nRates++;
+ data->nrefresh++;
+ }
+ if (mode == output->crtc->mode)
+ {
+ data->size = l;
+ data->refresh = vRefresh;
+ }
+ }
+ }
+ }
+ return data;
+}
+
+int
+ProcRRGetScreenInfo (ClientPtr client)
+{
+ REQUEST(xRRGetScreenInfoReq);
+ xRRGetScreenInfoReply rep;
+ WindowPtr pWin;
+ int n, rc;
+ ScreenPtr pScreen;
+ rrScrPrivPtr pScrPriv;
+ CARD8 *extra;
+ unsigned long extraLen;
+ RROutputPtr output;
+
+ REQUEST_SIZE_MATCH(xRRGetScreenInfoReq);
+ rc = dixLookupWindow(&pWin, stuff->window, client, DixReadAccess);
+ if (rc != Success)
+ return rc;
+
+ pScreen = pWin->drawable.pScreen;
+ pScrPriv = rrGetScrPriv(pScreen);
+ rep.pad = 0;
+
+ if (pScrPriv)
+ RRGetInfo (pScreen);
+
+ output = RRFirstOutput (pScreen);
+
+ if (!pScrPriv || !output)
+ {
+ rep.type = X_Reply;
+ rep.setOfRotations = RR_Rotate_0;;
+ rep.sequenceNumber = client->sequence;
+ rep.length = 0;
+ rep.root = WindowTable[pWin->drawable.pScreen->myNum]->drawable.id;
+ rep.timestamp = currentTime.milliseconds;
+ rep.configTimestamp = currentTime.milliseconds;
+ rep.nSizes = 0;
+ rep.sizeID = 0;
+ rep.rotation = RR_Rotate_0;
+ rep.rate = 0;
+ rep.nrateEnts = 0;
+ extra = 0;
+ extraLen = 0;
+ }
+ else
+ {
+ int i, j;
+ xScreenSizes *size;
+ CARD16 *rates;
+ CARD8 *data8;
+ Bool has_rate = RRClientKnowsRates (client);
+ RR10DataPtr pData;
+ RRScreenSizePtr pSize;
+
+ pData = RR10GetData (pScreen, output);
+ if (!pData)
+ return BadAlloc;
+
+ rep.type = X_Reply;
+ rep.setOfRotations = output->crtc->rotations;
+ rep.sequenceNumber = client->sequence;
+ rep.length = 0;
+ rep.root = WindowTable[pWin->drawable.pScreen->myNum]->drawable.id;
+ rep.timestamp = pScrPriv->lastSetTime.milliseconds;
+ rep.configTimestamp = pScrPriv->lastConfigTime.milliseconds;
+ rep.rotation = output->crtc->rotation;
+ rep.nSizes = pData->nsize;
+ rep.nrateEnts = pData->nrefresh + pData->nsize;
+ rep.sizeID = pData->size;
+ rep.rate = pData->refresh;
+
+ extraLen = (rep.nSizes * sizeof (xScreenSizes) +
+ rep.nrateEnts * sizeof (CARD16));
+
+ if (extraLen)
+ {
+ extra = (CARD8 *) xalloc (extraLen);
+ if (!extra)
+ {
+ xfree (pData);
+ return BadAlloc;
+ }
+ }
+ else
+ extra = NULL;
+
+ /*
+ * First comes the size information
+ */
+ size = (xScreenSizes *) extra;
+ rates = (CARD16 *) (size + rep.nSizes);
+ for (i = 0; i < pData->nsize; i++)
+ {
+ pSize = &pData->sizes[i];
+ size->widthInPixels = pSize->width;
+ size->heightInPixels = pSize->height;
+ size->widthInMillimeters = pSize->mmWidth;
+ size->heightInMillimeters = pSize->mmHeight;
+ if (client->swapped)
+ {
+ swaps (&size->widthInPixels, n);
+ swaps (&size->heightInPixels, n);
+ swaps (&size->widthInMillimeters, n);
+ swaps (&size->heightInMillimeters, n);
+ }
+ size++;
+ if (has_rate)
+ {
+ *rates = pSize->nRates;
+ if (client->swapped)
+ {
+ swaps (rates, n);
+ }
+ rates++;
+ for (j = 0; j < pSize->nRates; j++)
+ {
+ *rates = pSize->pRates[j].rate;
+ if (client->swapped)
+ {
+ swaps (rates, n);
+ }
+ rates++;
+ }
+ }
+ }
+ xfree (pData);
+
+ data8 = (CARD8 *) rates;
+
+ if (data8 - (CARD8 *) extra != extraLen)
+ FatalError ("RRGetScreenInfo bad extra len %ld != %ld\n",
+ (unsigned long)(data8 - (CARD8 *) extra), extraLen);
+ rep.length = (extraLen + 3) >> 2;
+ }
+ if (client->swapped) {
+ swaps(&rep.sequenceNumber, n);
+ swapl(&rep.length, n);
+ swapl(&rep.timestamp, n);
+ swaps(&rep.rotation, n);
+ swaps(&rep.nSizes, n);
+ swaps(&rep.sizeID, n);
+ swaps(&rep.rate, n);
+ swaps(&rep.nrateEnts, n);
+ }
+ WriteToClient(client, sizeof(xRRGetScreenInfoReply), (char *)&rep);
+ if (extraLen)
+ {
+ WriteToClient (client, extraLen, (char *) extra);
+ xfree (extra);
+ }
+ return (client->noClientException);
+}
+
+int
+ProcRRSetScreenConfig (ClientPtr client)
+{
+ REQUEST(xRRSetScreenConfigReq);
+ xRRSetScreenConfigReply rep;
+ DrawablePtr pDraw;
+ int n, rc;
+ ScreenPtr pScreen;
+ rrScrPrivPtr pScrPriv;
+ TimeStamp configTime;
+ TimeStamp time;
+ int i;
+ Rotation rotation;
+ int rate;
+ Bool has_rate;
+ RROutputPtr output;
+ RRModePtr mode;
+ RR10DataPtr pData = NULL;
+ RRScreenSizePtr pSize;
+
+ UpdateCurrentTime ();
+
+ if (RRClientKnowsRates (client))
+ {
+ REQUEST_SIZE_MATCH (xRRSetScreenConfigReq);
+ has_rate = TRUE;
+ }
+ else
+ {
+ REQUEST_SIZE_MATCH (xRR1_0SetScreenConfigReq);
+ has_rate = FALSE;
+ }
+
+ rc = dixLookupDrawable(&pDraw, stuff->drawable, client, 0, DixWriteAccess);
+ if (rc != Success)
+ return rc;
+
+ pScreen = pDraw->pScreen;
+
+ pScrPriv = rrGetScrPriv(pScreen);
+
+ time = ClientTimeToServerTime(stuff->timestamp);
+ configTime = ClientTimeToServerTime(stuff->configTimestamp);
+
+ if (!pScrPriv)
+ {
+ time = currentTime;
+ rep.status = RRSetConfigFailed;
+ goto sendReply;
+ }
+ if (!RRGetInfo (pScreen))
+ return BadAlloc;
+
+ output = RRFirstOutput (pScreen);
+ if (!output)
+ {
+ time = currentTime;
+ rep.status = RRSetConfigFailed;
+ goto sendReply;
+ }
+
+ /*
+ * if the client's config timestamp is not the same as the last config
+ * timestamp, then the config information isn't up-to-date and
+ * can't even be validated
+ */
+ if (CompareTimeStamps (configTime, pScrPriv->lastConfigTime) != 0)
+ {
+ rep.status = RRSetConfigInvalidConfigTime;
+ goto sendReply;
+ }
+
+ pData = RR10GetData (pScreen, output);
+ if (!pData)
+ return BadAlloc;
+
+ if (stuff->sizeID >= pData->nsize)
+ {
+ /*
+ * Invalid size ID
+ */
+ client->errorValue = stuff->sizeID;
+ xfree (pData);
+ return BadValue;
+ }
+ pSize = &pData->sizes[stuff->sizeID];
+
+ /*
+ * Validate requested rotation
+ */
+ rotation = (Rotation) stuff->rotation;
+
+ /* test the rotation bits only! */
+ switch (rotation & 0xf) {
+ case RR_Rotate_0:
+ case RR_Rotate_90:
+ case RR_Rotate_180:
+ case RR_Rotate_270:
+ break;
+ default:
+ /*
+ * Invalid rotation
+ */
+ client->errorValue = stuff->rotation;
+ xfree (pData);
+ return BadValue;
+ }
+
+ if ((~output->crtc->rotations) & rotation)
+ {
+ /*
+ * requested rotation or reflection not supported by screen
+ */
+ client->errorValue = stuff->rotation;
+ xfree (pData);
+ return BadMatch;
+ }
+
+ /*
+ * Validate requested refresh
+ */
+ if (has_rate)
+ rate = (int) stuff->rate;
+ else
+ rate = 0;
+
+ if (rate)
+ {
+ for (i = 0; i < pSize->nRates; i++)
+ {
+ if (pSize->pRates[i].rate == rate)
+ break;
+ }
+ if (i == pSize->nRates)
+ {
+ /*
+ * Invalid rate
+ */
+ client->errorValue = rate;
+ xfree (pData);
+ return BadValue;
+ }
+ mode = pSize->pRates[i].mode;
+ }
+ else
+ mode = pSize->pRates[0].mode;
+
+ /*
+ * Make sure the requested set-time is not older than
+ * the last set-time
+ */
+ if (CompareTimeStamps (time, pScrPriv->lastSetTime) < 0)
+ {
+ rep.status = RRSetConfigInvalidTime;
+ goto sendReply;
+ }
+
+ /*
+ * If the screen size is changing, adjust all of the other outputs
+ * to fit the new size, mirroring as much as possible
+ */
+ if (mode->mode.width != pScreen->width ||
+ mode->mode.height != pScreen->height)
+ {
+ int c;
+
+ for (c = 0; c < pScrPriv->numCrtcs; c++)
+ {
+ if (!RRCrtcSet (pScrPriv->crtcs[c], NULL, 0, 0, RR_Rotate_0,
+ 0, NULL))
+ {
+ rep.status = RRSetConfigFailed;
+ /* XXX recover from failure */
+ goto sendReply;
+ }
+ }
+ if (!RRScreenSizeSet (pScreen, mode->mode.width, mode->mode.height,
+ pScreen->mmWidth, pScreen->mmHeight))
+ {
+ rep.status = RRSetConfigFailed;
+ /* XXX recover from failure */
+ goto sendReply;
+ }
+ }
+
+ if (!RRCrtcSet (output->crtc, mode, 0, 0, stuff->rotation, 1, &output))
+ rep.status = RRSetConfigFailed;
+ else
+ rep.status = RRSetConfigSuccess;
+
+ /*
+ * XXX Configure other crtcs to mirror as much as possible
+ */
+
+sendReply:
+
+ if (pData)
+ xfree (pData);
+
+ rep.type = X_Reply;
+ /* rep.status has already been filled in */
+ rep.length = 0;
+ rep.sequenceNumber = client->sequence;
+
+ rep.newTimestamp = pScrPriv->lastSetTime.milliseconds;
+ rep.newConfigTimestamp = pScrPriv->lastConfigTime.milliseconds;
+ rep.root = WindowTable[pDraw->pScreen->myNum]->drawable.id;
+
+ if (client->swapped)
+ {
+ swaps(&rep.sequenceNumber, n);
+ swapl(&rep.length, n);
+ swapl(&rep.newTimestamp, n);
+ swapl(&rep.newConfigTimestamp, n);
+ swapl(&rep.root, n);
+ }
+ WriteToClient(client, sizeof(xRRSetScreenConfigReply), (char *)&rep);
+
+ return (client->noClientException);
+}
+
diff --git a/randr/rrsdispatch.c b/randr/rrsdispatch.c
new file mode 100644
index 000000000..4a6a6e43f
--- /dev/null
+++ b/randr/rrsdispatch.c
@@ -0,0 +1,305 @@
+/*
+ * Copyright © 2006 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 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.
+ */
+
+#include "randrstr.h"
+
+static int
+SProcRRQueryVersion (ClientPtr client)
+{
+ register int n;
+ REQUEST(xRRQueryVersionReq);
+
+ swaps(&stuff->length, n);
+ swapl(&stuff->majorVersion, n);
+ swapl(&stuff->minorVersion, n);
+ return (*ProcRandrVector[stuff->randrReqType]) (client);
+}
+
+static int
+SProcRRGetScreenInfo (ClientPtr client)
+{
+ register int n;
+ REQUEST(xRRGetScreenInfoReq);
+
+ swaps(&stuff->length, n);
+ swapl(&stuff->window, n);
+ return (*ProcRandrVector[stuff->randrReqType]) (client);
+}
+
+static int
+SProcRRSetScreenConfig (ClientPtr client)
+{
+ register int n;
+ REQUEST(xRRSetScreenConfigReq);
+
+ if (RRClientKnowsRates (client))
+ {
+ REQUEST_SIZE_MATCH (xRRSetScreenConfigReq);
+ swaps (&stuff->rate, n);
+ }
+ else
+ {
+ REQUEST_SIZE_MATCH (xRR1_0SetScreenConfigReq);
+ }
+
+ swaps(&stuff->length, n);
+ swapl(&stuff->drawable, n);
+ swapl(&stuff->timestamp, n);
+ swaps(&stuff->sizeID, n);
+ swaps(&stuff->rotation, n);
+ return (*ProcRandrVector[stuff->randrReqType]) (client);
+}
+
+static int
+SProcRRSelectInput (ClientPtr client)
+{
+ register int n;
+ REQUEST(xRRSelectInputReq);
+
+ swaps(&stuff->length, n);
+ swapl(&stuff->window, n);
+ swaps(&stuff->enable, n);
+ return (*ProcRandrVector[stuff->randrReqType]) (client);
+}
+
+static int
+SProcRRGetScreenSizeRange (ClientPtr client)
+{
+ REQUEST(xRRGetScreenSizeRangeReq);
+
+ REQUEST_SIZE_MATCH(xRRGetScreenSizeRangeReq);
+ (void) stuff;
+ return BadImplementation;
+}
+
+static int
+SProcRRSetScreenSize (ClientPtr client)
+{
+ REQUEST(xRRSetScreenSizeReq);
+
+ REQUEST_SIZE_MATCH(xRRSetScreenSizeReq);
+ (void) stuff;
+ return BadImplementation;
+}
+
+static int
+SProcRRGetScreenResources (ClientPtr client)
+{
+ REQUEST(xRRGetScreenResourcesReq);
+
+ REQUEST_SIZE_MATCH(xRRGetScreenResourcesReq);
+ (void) stuff;
+ return BadImplementation;
+}
+
+static int
+SProcRRGetOutputInfo (ClientPtr client)
+{
+ REQUEST(xRRGetOutputInfoReq);;
+
+ REQUEST_SIZE_MATCH(xRRGetOutputInfoReq);
+ (void) stuff;
+ return BadImplementation;
+}
+
+static int
+SProcRRListOutputProperties (ClientPtr client)
+{
+ REQUEST(xRRListOutputPropertiesReq);
+
+ REQUEST_SIZE_MATCH(xRRListOutputPropertiesReq);
+ (void) stuff;
+ return BadImplementation;
+}
+
+static int
+SProcRRQueryOutputProperty (ClientPtr client)
+{
+ REQUEST(xRRQueryOutputPropertyReq);
+
+ REQUEST_SIZE_MATCH(xRRQueryOutputPropertyReq);
+ (void) stuff;
+ return BadImplementation;
+}
+
+static int
+SProcRRConfigureOutputProperty (ClientPtr client)
+{
+ REQUEST(xRRConfigureOutputPropertyReq);
+
+ REQUEST_SIZE_MATCH(xRRConfigureOutputPropertyReq);
+ (void) stuff;
+ return BadImplementation;
+}
+
+static int
+SProcRRChangeOutputProperty (ClientPtr client)
+{
+ REQUEST(xRRChangeOutputPropertyReq);
+
+ REQUEST_SIZE_MATCH(xRRChangeOutputPropertyReq);
+ (void) stuff;
+ return BadImplementation;
+}
+
+static int
+SProcRRDeleteOutputProperty (ClientPtr client)
+{
+ REQUEST(xRRDeleteOutputPropertyReq);
+
+ REQUEST_SIZE_MATCH(xRRDeleteOutputPropertyReq);
+ (void) stuff;
+ return BadImplementation;
+}
+
+static int
+SProcRRGetOutputProperty (ClientPtr client)
+{
+ REQUEST(xRRGetOutputPropertyReq);
+
+ REQUEST_SIZE_MATCH(xRRGetOutputPropertyReq);
+ (void) stuff;
+ return BadImplementation;
+}
+
+static int
+SProcRRCreateMode (ClientPtr client)
+{
+ REQUEST(xRRCreateModeReq);
+
+ REQUEST_SIZE_MATCH(xRRCreateModeReq);
+ (void) stuff;
+ return BadImplementation;
+}
+
+static int
+SProcRRDestroyMode (ClientPtr client)
+{
+ REQUEST(xRRDestroyModeReq);
+
+ REQUEST_SIZE_MATCH(xRRDestroyModeReq);
+ (void) stuff;
+ return BadImplementation;
+}
+
+static int
+SProcRRAddOutputMode (ClientPtr client)
+{
+ REQUEST(xRRAddOutputModeReq);
+
+ REQUEST_SIZE_MATCH(xRRAddOutputModeReq);
+ (void) stuff;
+ return BadImplementation;
+}
+
+static int
+SProcRRDeleteOutputMode (ClientPtr client)
+{
+ REQUEST(xRRDeleteOutputModeReq);
+
+ REQUEST_SIZE_MATCH(xRRDeleteOutputModeReq);
+ (void) stuff;
+ return BadImplementation;
+}
+
+static int
+SProcRRGetCrtcInfo (ClientPtr client)
+{
+ REQUEST(xRRGetCrtcInfoReq);
+
+ REQUEST_SIZE_MATCH(xRRGetCrtcInfoReq);
+ (void) stuff;
+ return BadImplementation;
+}
+
+static int
+SProcRRSetCrtcConfig (ClientPtr client)
+{
+ REQUEST(xRRSetCrtcConfigReq);
+
+ REQUEST_SIZE_MATCH(xRRSetCrtcConfigReq);
+ (void) stuff;
+ return BadImplementation;
+}
+
+static int
+SProcRRGetCrtcGammaSize (ClientPtr client)
+{
+ REQUEST(xRRGetCrtcGammaSizeReq);
+
+ REQUEST_SIZE_MATCH(xRRGetCrtcGammaSizeReq);
+ (void) stuff;
+ return BadImplementation;
+}
+
+static int
+SProcRRGetCrtcGamma (ClientPtr client)
+{
+ REQUEST(xRRGetCrtcGammaReq);
+
+ REQUEST_SIZE_MATCH(xRRGetCrtcGammaReq);
+ (void) stuff;
+ return BadImplementation;
+}
+
+static int
+SProcRRSetCrtcGamma (ClientPtr client)
+{
+ REQUEST(xRRSetCrtcGammaReq);
+
+ REQUEST_SIZE_MATCH(xRRSetCrtcGammaReq);
+ (void) stuff;
+ return BadImplementation;
+}
+
+int (*SProcRandrVector[RRNumberRequests])(ClientPtr) = {
+ SProcRRQueryVersion, /* 0 */
+/* we skip 1 to make old clients fail pretty immediately */
+ NULL, /* 1 SProcRandrOldGetScreenInfo */
+/* V1.0 apps share the same set screen config request id */
+ SProcRRSetScreenConfig, /* 2 */
+ NULL, /* 3 SProcRandrOldScreenChangeSelectInput */
+/* 3 used to be ScreenChangeSelectInput; deprecated */
+ SProcRRSelectInput, /* 4 */
+ SProcRRGetScreenInfo, /* 5 */
+/* V1.2 additions */
+ SProcRRGetScreenSizeRange, /* 6 */
+ SProcRRSetScreenSize, /* 7 */
+ SProcRRGetScreenResources, /* 8 */
+ SProcRRGetOutputInfo, /* 9 */
+ SProcRRListOutputProperties,/* 10 */
+ SProcRRQueryOutputProperty, /* 11 */
+ SProcRRConfigureOutputProperty, /* 12 */
+ SProcRRChangeOutputProperty,/* 13 */
+ SProcRRDeleteOutputProperty,/* 14 */
+ SProcRRGetOutputProperty, /* 15 */
+ SProcRRCreateMode, /* 16 */
+ SProcRRDestroyMode, /* 17 */
+ SProcRRAddOutputMode, /* 18 */
+ SProcRRDeleteOutputMode, /* 19 */
+ SProcRRGetCrtcInfo, /* 20 */
+ SProcRRSetCrtcConfig, /* 21 */
+ SProcRRGetCrtcGammaSize, /* 22 */
+ SProcRRGetCrtcGamma, /* 23 */
+ SProcRRSetCrtcGamma, /* 24 */
+};
+
diff --git a/randr/rrxinerama.c b/randr/rrxinerama.c
new file mode 100644
index 000000000..8b951455c
--- /dev/null
+++ b/randr/rrxinerama.c
@@ -0,0 +1,434 @@
+/*
+ * Copyright © 2006 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 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.
+ */
+/*
+ * This Xinerama implementation comes from the SiS driver which has
+ * the following notice:
+ */
+/*
+ * SiS driver main code
+ *
+ * Copyright (C) 2001-2005 by Thomas Winischhofer, Vienna, Austria.
+ *
+ * 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.
+ *
+ * Author: Thomas Winischhofer <thomas@winischhofer.net>
+ * - driver entirely rewritten since 2001, only basic structure taken from
+ * old code (except sis_dri.c, sis_shadow.c, sis_accel.c and parts of
+ * sis_dga.c; these were mostly taken over; sis_dri.c was changed for
+ * new versions of the DRI layer)
+ *
+ * This notice covers the entire driver code unless indicated otherwise.
+ *
+ * Formerly based on code which was
+ * Copyright (C) 1998, 1999 by Alan Hourihane, Wigan, England.
+ * Written by:
+ * Alan Hourihane <alanh@fairlite.demon.co.uk>,
+ * Mike Chapman <mike@paranoia.com>,
+ * Juanjo Santamarta <santamarta@ctv.es>,
+ * Mitani Hiroshi <hmitani@drl.mei.co.jp>,
+ * David Thomas <davtom@dream.org.uk>.
+ */
+
+#include "randrstr.h"
+#include "swaprep.h"
+#include <X11/extensions/panoramiXproto.h>
+
+#define RR_XINERAMA_MAJOR_VERSION 1
+#define RR_XINERAMA_MINOR_VERSION 1
+
+/* Xinerama is not multi-screen capable; just report about screen 0 */
+#define RR_XINERAMA_SCREEN 0
+
+static int ProcRRXineramaQueryVersion(ClientPtr client);
+static int ProcRRXineramaGetState(ClientPtr client);
+static int ProcRRXineramaGetScreenCount(ClientPtr client);
+static int ProcRRXineramaGetScreenSize(ClientPtr client);
+static int ProcRRXineramaIsActive(ClientPtr client);
+static int ProcRRXineramaQueryScreens(ClientPtr client);
+static int SProcRRXineramaDispatch(ClientPtr client);
+
+/* Proc */
+
+int
+ProcRRXineramaQueryVersion(ClientPtr client)
+{
+ xPanoramiXQueryVersionReply rep;
+ register int n;
+
+ REQUEST_SIZE_MATCH(xPanoramiXQueryVersionReq);
+ rep.type = X_Reply;
+ rep.length = 0;
+ rep.sequenceNumber = client->sequence;
+ rep.majorVersion = RR_XINERAMA_MAJOR_VERSION;
+ rep.minorVersion = RR_XINERAMA_MINOR_VERSION;
+ if(client->swapped) {
+ swaps(&rep.sequenceNumber, n);
+ swapl(&rep.length, n);
+ swaps(&rep.majorVersion, n);
+ swaps(&rep.minorVersion, n);
+ }
+ WriteToClient(client, sizeof(xPanoramiXQueryVersionReply), (char *)&rep);
+ return (client->noClientException);
+}
+
+int
+ProcRRXineramaGetState(ClientPtr client)
+{
+ REQUEST(xPanoramiXGetStateReq);
+ WindowPtr pWin;
+ xPanoramiXGetStateReply rep;
+ register int n, rc;
+ ScreenPtr pScreen;
+ rrScrPrivPtr pScrPriv;
+ Bool active = FALSE;
+
+ REQUEST_SIZE_MATCH(xPanoramiXGetStateReq);
+ rc = dixLookupWindow(&pWin, stuff->window, client, DixUnknownAccess);
+ if(rc != Success)
+ return rc;
+
+ pScreen = pWin->drawable.pScreen;
+ pScrPriv = rrGetScrPriv(pScreen);
+ if (pScrPriv)
+ {
+ /* XXX do we need more than this? */
+ active = TRUE;
+ }
+
+ rep.type = X_Reply;
+ rep.length = 0;
+ rep.sequenceNumber = client->sequence;
+ rep.state = active;
+ if(client->swapped) {
+ swaps (&rep.sequenceNumber, n);
+ swapl (&rep.length, n);
+ swaps (&rep.state, n);
+ }
+ WriteToClient(client, sizeof(xPanoramiXGetStateReply), (char *)&rep);
+ return client->noClientException;
+}
+
+static Bool
+RRXineramaScreenActive (ScreenPtr pScreen)
+{
+ return rrGetScrPriv(pScreen) != NULL;
+}
+
+static Bool
+RRXineramaCrtcActive (RRCrtcPtr crtc)
+{
+ return crtc->mode != NULL && crtc->numOutputs > 0;
+}
+
+static int
+RRXineramaScreenCount (ScreenPtr pScreen)
+{
+ int i, n;
+
+ n = 0;
+ if (RRXineramaScreenActive (pScreen))
+ {
+ rrScrPriv(pScreen);
+ for (i = 0; i < pScrPriv->numCrtcs; i++)
+ if (RRXineramaCrtcActive (pScrPriv->crtcs[i]))
+ n++;
+ }
+ return n;
+}
+
+int
+ProcRRXineramaGetScreenCount(ClientPtr client)
+{
+ REQUEST(xPanoramiXGetScreenCountReq);
+ WindowPtr pWin;
+ xPanoramiXGetScreenCountReply rep;
+ register int n, rc;
+
+ REQUEST_SIZE_MATCH(xPanoramiXGetScreenCountReq);
+ rc = dixLookupWindow(&pWin, stuff->window, client, DixUnknownAccess);
+ if (rc != Success)
+ return rc;
+
+ rep.type = X_Reply;
+ rep.length = 0;
+ rep.sequenceNumber = client->sequence;
+ rep.ScreenCount = RRXineramaScreenCount (pWin->drawable.pScreen);
+ if(client->swapped) {
+ swaps(&rep.sequenceNumber, n);
+ swapl(&rep.length, n);
+ swaps(&rep.ScreenCount, n);
+ }
+ WriteToClient(client, sizeof(xPanoramiXGetScreenCountReply), (char *)&rep);
+ return client->noClientException;
+}
+
+int
+ProcRRXineramaGetScreenSize(ClientPtr client)
+{
+ REQUEST(xPanoramiXGetScreenSizeReq);
+ WindowPtr pWin, pRoot;
+ ScreenPtr pScreen;
+ xPanoramiXGetScreenSizeReply rep;
+ register int n, rc;
+
+ REQUEST_SIZE_MATCH(xPanoramiXGetScreenSizeReq);
+ rc = dixLookupWindow(&pWin, stuff->window, client, DixUnknownAccess);
+ if (rc != Success)
+ return rc;
+
+ pScreen = pWin->drawable.pScreen;
+ pRoot = WindowTable[pScreen->myNum];
+
+ rep.type = X_Reply;
+ rep.length = 0;
+ rep.sequenceNumber = client->sequence;
+ rep.width = pRoot->drawable.width;
+ rep.height = pRoot->drawable.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;
+}
+
+int
+ProcRRXineramaIsActive(ClientPtr client)
+{
+ xXineramaIsActiveReply rep;
+
+ REQUEST_SIZE_MATCH(xXineramaIsActiveReq);
+
+ rep.type = X_Reply;
+ rep.length = 0;
+ rep.sequenceNumber = client->sequence;
+ rep.state = RRXineramaScreenActive (screenInfo.screens[RR_XINERAMA_SCREEN]);
+ 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;
+}
+
+int
+ProcRRXineramaQueryScreens(ClientPtr client)
+{
+ xXineramaQueryScreensReply rep;
+ ScreenPtr pScreen = screenInfo.screens[RR_XINERAMA_SCREEN];
+
+ REQUEST_SIZE_MATCH(xXineramaQueryScreensReq);
+
+ if (RRXineramaScreenActive (pScreen))
+ {
+ rrScrPriv(pScreen);
+ if (pScrPriv->numCrtcs == 0 || pScrPriv->numOutputs == 0)
+ RRGetInfo (pScreen);
+ }
+
+ rep.type = X_Reply;
+ rep.sequenceNumber = client->sequence;
+ rep.number = RRXineramaScreenCount (pScreen);
+ 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(rep.number) {
+ rrScrPriv(pScreen);
+ xXineramaScreenInfo scratch;
+ int i;
+
+ for(i = 0; i < pScrPriv->numCrtcs; i++) {
+ RRCrtcPtr crtc = pScrPriv->crtcs[i];
+ if (RRXineramaCrtcActive (crtc))
+ {
+ scratch.x_org = crtc->x;
+ scratch.y_org = crtc->y;
+ scratch.width = crtc->mode->mode.width;
+ scratch.height = crtc->mode->mode.height;
+ 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;
+}
+
+static int
+ProcRRXineramaDispatch(ClientPtr client)
+{
+ REQUEST(xReq);
+ switch (stuff->data) {
+ case X_PanoramiXQueryVersion:
+ return ProcRRXineramaQueryVersion(client);
+ case X_PanoramiXGetState:
+ return ProcRRXineramaGetState(client);
+ case X_PanoramiXGetScreenCount:
+ return ProcRRXineramaGetScreenCount(client);
+ case X_PanoramiXGetScreenSize:
+ return ProcRRXineramaGetScreenSize(client);
+ case X_XineramaIsActive:
+ return ProcRRXineramaIsActive(client);
+ case X_XineramaQueryScreens:
+ return ProcRRXineramaQueryScreens(client);
+ }
+ return BadRequest;
+}
+
+/* SProc */
+
+static int
+SProcRRXineramaQueryVersion (ClientPtr client)
+{
+ REQUEST(xPanoramiXQueryVersionReq);
+ register int n;
+ swaps(&stuff->length,n);
+ REQUEST_SIZE_MATCH (xPanoramiXQueryVersionReq);
+ return ProcRRXineramaQueryVersion(client);
+}
+
+static int
+SProcRRXineramaGetState(ClientPtr client)
+{
+ REQUEST(xPanoramiXGetStateReq);
+ register int n;
+ swaps (&stuff->length, n);
+ REQUEST_SIZE_MATCH(xPanoramiXGetStateReq);
+ return ProcRRXineramaGetState(client);
+}
+
+static int
+SProcRRXineramaGetScreenCount(ClientPtr client)
+{
+ REQUEST(xPanoramiXGetScreenCountReq);
+ register int n;
+ swaps (&stuff->length, n);
+ REQUEST_SIZE_MATCH(xPanoramiXGetScreenCountReq);
+ return ProcRRXineramaGetScreenCount(client);
+}
+
+static int
+SProcRRXineramaGetScreenSize(ClientPtr client)
+{
+ REQUEST(xPanoramiXGetScreenSizeReq);
+ register int n;
+ swaps (&stuff->length, n);
+ REQUEST_SIZE_MATCH(xPanoramiXGetScreenSizeReq);
+ return ProcRRXineramaGetScreenSize(client);
+}
+
+static int
+SProcRRXineramaIsActive(ClientPtr client)
+{
+ REQUEST(xXineramaIsActiveReq);
+ register int n;
+ swaps (&stuff->length, n);
+ REQUEST_SIZE_MATCH(xXineramaIsActiveReq);
+ return ProcRRXineramaIsActive(client);
+}
+
+static int
+SProcRRXineramaQueryScreens(ClientPtr client)
+{
+ REQUEST(xXineramaQueryScreensReq);
+ register int n;
+ swaps (&stuff->length, n);
+ REQUEST_SIZE_MATCH(xXineramaQueryScreensReq);
+ return ProcRRXineramaQueryScreens(client);
+}
+
+int
+SProcRRXineramaDispatch(ClientPtr client)
+{
+ REQUEST(xReq);
+ switch (stuff->data) {
+ case X_PanoramiXQueryVersion:
+ return SProcRRXineramaQueryVersion(client);
+ case X_PanoramiXGetState:
+ return SProcRRXineramaGetState(client);
+ case X_PanoramiXGetScreenCount:
+ return SProcRRXineramaGetScreenCount(client);
+ case X_PanoramiXGetScreenSize:
+ return SProcRRXineramaGetScreenSize(client);
+ case X_XineramaIsActive:
+ return SProcRRXineramaIsActive(client);
+ case X_XineramaQueryScreens:
+ return SProcRRXineramaQueryScreens(client);
+ }
+ return BadRequest;
+}
+
+static void
+RRXineramaResetProc(ExtensionEntry* extEntry)
+{
+}
+
+void
+RRXineramaExtensionInit(void)
+{
+#ifdef PANORAMIX
+ if(!noPanoramiXExtension)
+ return;
+#endif
+
+ (void) AddExtension(PANORAMIX_PROTOCOL_NAME, 0,0,
+ ProcRRXineramaDispatch,
+ SProcRRXineramaDispatch,
+ RRXineramaResetProc,
+ StandardMinorOpcode);
+}
diff --git a/record/Makefile.am b/record/Makefile.am
index 9bb2f7a20..2a64f3189 100644
--- a/record/Makefile.am
+++ b/record/Makefile.am
@@ -1,6 +1,6 @@
noinst_LTLIBRARIES = librecord.la
-AM_CFLAGS = $(DIX_CFLAGS) @SERVER_DEFINES@ @LOADER_DEFINES@
+AM_CFLAGS = $(DIX_CFLAGS)
librecord_la_SOURCES = record.c set.c
diff --git a/record/record.c b/record/record.c
index 070a120df..0ed8f84c2 100644
--- a/record/record.c
+++ b/record/record.c
@@ -1,5 +1,3 @@
-/* $XdotOrg: xserver/xorg/record/record.c,v 1.7 2006/03/28 01:21:00 ajax Exp $ */
-/* $Xorg: record.c,v 1.4 2001/02/09 02:05:27 xorgcvs Exp $ */
/*
@@ -33,7 +31,6 @@ This work benefited from earlier work done by Martha Zimet of NCD
and Jim Haggerty of Metheus.
*/
-/* $XFree86: xc/programs/Xserver/record/record.c,v 1.11 2003/11/03 05:12:01 tsi Exp $ */
#define NEED_EVENTS
#ifdef HAVE_DIX_CONFIG_H
diff --git a/record/set.c b/record/set.c
index 8419e2900..0ebb0884d 100644
--- a/record/set.c
+++ b/record/set.c
@@ -1,5 +1,3 @@
-/* $Xorg: set.c,v 1.4 2001/02/09 02:05:27 xorgcvs Exp $ */
-
/*
Copyright 1995, 1998 The Open Group
@@ -27,7 +25,6 @@ other dealings in this Software without prior written authorization
from The Open Group.
*/
-/* $XFree86: xc/programs/Xserver/record/set.c,v 1.7 2001/12/14 20:00:37 dawes Exp $ */
/*
@@ -46,9 +43,6 @@ from The Open Group.
implemented, and RecordCreateSet will decide heuristically which one
to use based on the set members.
- Note: When compiling for use in the server, do not use -DTESTING.
- When compiling for stand-alone testing of the set ADT, use -DTESTING.
-
*/
#ifdef HAVE_DIX_CONFIG_H
@@ -57,47 +51,11 @@ from The Open Group.
#include <string.h>
-#ifndef TESTING
#include "misc.h"
-#else
-#include <stdio.h>
-#include <stdlib.h>
-
-/* stuff that you normally get from the X Server's environment */
-
-typedef int Bool;
-#ifndef TRUE
-#define TRUE 1
-#define FALSE 0
-#endif
-
-typedef unsigned short CARD16;
-
-#define xalloc malloc
-#define xfree free
-#define ALLOCATE_LOCAL malloc
-#define DEALLOCATE_LOCAL free
-
-void *Xcalloc(size)
- int size;
-{
- void *p = malloc(size);
- if (p) memset(p, 0, size);
- return p;
-}
-
-#ifndef max
-#define max(_a, _b) ( ((_a) > (_b)) ? (_a) : (_b) )
-#endif
-
-#endif /* TESTING */
-
#include "set.h"
static int
-maxMemberInInterval(pIntervals, nIntervals)
- RecordSetInterval *pIntervals;
- int nIntervals;
+maxMemberInInterval(RecordSetInterval *pIntervals, int nIntervals)
{
int i;
int maxMember = -1;
@@ -110,8 +68,7 @@ maxMemberInInterval(pIntervals, nIntervals)
}
static void
-NoopDestroySet(pSet)
- RecordSetPtr pSet;
+NoopDestroySet(RecordSetPtr pSet)
{
}
@@ -128,16 +85,13 @@ typedef struct {
#define BITS_PER_LONG (sizeof(unsigned long) * 8)
static void
-BitVectorDestroySet(pSet)
- RecordSetPtr pSet;
+BitVectorDestroySet(RecordSetPtr pSet)
{
xfree(pSet);
}
static unsigned long
-BitVectorIsMemberOfSet(pSet, pm)
- RecordSetPtr pSet;
- int pm;
+BitVectorIsMemberOfSet(RecordSetPtr pSet, int pm)
{
BitVectorSetPtr pbvs = (BitVectorSetPtr)pSet;
unsigned long *pbitvec;
@@ -149,10 +103,7 @@ BitVectorIsMemberOfSet(pSet, pm)
static int
-BitVectorFindBit(pSet, iterbit, bitval)
- RecordSetPtr pSet;
- int iterbit;
- Bool bitval;
+BitVectorFindBit(RecordSetPtr pSet, int iterbit, Bool bitval)
{
BitVectorSetPtr pbvs = (BitVectorSetPtr)pSet;
unsigned long *pbitvec = (unsigned long *)(&pbvs[1]);
@@ -198,10 +149,8 @@ BitVectorFindBit(pSet, iterbit, bitval)
static RecordSetIteratePtr
-BitVectorIterateSet(pSet, pIter, pInterval)
- RecordSetPtr pSet;
- RecordSetIteratePtr pIter;
- RecordSetInterval *pInterval;
+BitVectorIterateSet(RecordSetPtr pSet, RecordSetIteratePtr pIter,
+ RecordSetInterval *pInterval)
{
int iterbit = (int)(long)pIter;
int b;
@@ -222,11 +171,8 @@ RecordSetOperations BitVectorNoFreeOperations = {
NoopDestroySet, BitVectorIsMemberOfSet, BitVectorIterateSet };
static int
-BitVectorSetMemoryRequirements(pIntervals, nIntervals, maxMember, alignment)
- RecordSetInterval *pIntervals;
- int nIntervals;
- int maxMember;
- int *alignment;
+BitVectorSetMemoryRequirements(RecordSetInterval *pIntervals, int nIntervals,
+ int maxMember, int *alignment)
{
int nlongs;
@@ -236,11 +182,8 @@ BitVectorSetMemoryRequirements(pIntervals, nIntervals, maxMember, alignment)
}
static RecordSetPtr
-BitVectorCreateSet(pIntervals, nIntervals, pMem, memsize)
- RecordSetInterval *pIntervals;
- int nIntervals;
- void *pMem;
- int memsize;
+BitVectorCreateSet(RecordSetInterval *pIntervals, int nIntervals,
+ void *pMem, int memsize)
{
BitVectorSetPtr pbvs;
int i, j;
@@ -288,16 +231,13 @@ typedef struct {
} IntervalListSet, *IntervalListSetPtr;
static void
-IntervalListDestroySet(pSet)
- RecordSetPtr pSet;
+IntervalListDestroySet(RecordSetPtr pSet)
{
xfree(pSet);
}
static unsigned long
-IntervalListIsMemberOfSet(pSet, pm)
- RecordSetPtr pSet;
- int pm;
+IntervalListIsMemberOfSet(RecordSetPtr pSet, int pm)
{
IntervalListSetPtr prls = (IntervalListSetPtr)pSet;
RecordSetInterval *pInterval = (RecordSetInterval *)(&prls[1]);
@@ -317,10 +257,8 @@ IntervalListIsMemberOfSet(pSet, pm)
static RecordSetIteratePtr
-IntervalListIterateSet(pSet, pIter, pIntervalReturn)
- RecordSetPtr pSet;
- RecordSetIteratePtr pIter;
- RecordSetInterval *pIntervalReturn;
+IntervalListIterateSet(RecordSetPtr pSet, RecordSetIteratePtr pIter,
+ RecordSetInterval *pIntervalReturn)
{
RecordSetInterval *pInterval = (RecordSetInterval *)pIter;
IntervalListSetPtr prls = (IntervalListSetPtr)pSet;
@@ -346,22 +284,16 @@ RecordSetOperations IntervalListNoFreeOperations = {
NoopDestroySet, IntervalListIsMemberOfSet, IntervalListIterateSet };
static int
-IntervalListMemoryRequirements(pIntervals, nIntervals, maxMember, alignment)
- RecordSetInterval *pIntervals;
- int nIntervals;
- int maxMember;
- int *alignment;
+IntervalListMemoryRequirements(RecordSetInterval *pIntervals, int nIntervals,
+ int maxMember, int *alignment)
{
*alignment = sizeof(unsigned long);
return sizeof(IntervalListSet) + nIntervals * sizeof(RecordSetInterval);
}
static RecordSetPtr
-IntervalListCreateSet(pIntervals, nIntervals, pMem, memsize)
- RecordSetInterval *pIntervals;
- int nIntervals;
- void *pMem;
- int memsize;
+IntervalListCreateSet(RecordSetInterval *pIntervals, int nIntervals,
+ void *pMem, int memsize)
{
IntervalListSetPtr prls;
int i, j, k;
@@ -432,20 +364,6 @@ bailout:
return (RecordSetPtr)prls;
}
-#ifdef TESTING
-typedef enum {
- BitVectorImplementation, IntervalListImplementation} RecordSetImplementation;
-
-RecordSetImplementation _RecordSetImpl;
-
-static void
-_RecordForceSetImplementation(setimpl)
- RecordSetImplementation setimpl;
-{
- _RecordSetImpl = setimpl;
-}
-#endif
-
typedef RecordSetPtr (*RecordCreateSetProcPtr)(
RecordSetInterval *pIntervals,
int nIntervals,
@@ -454,11 +372,9 @@ typedef RecordSetPtr (*RecordCreateSetProcPtr)(
);
static int
-_RecordSetMemoryRequirements(pIntervals, nIntervals, alignment, ppCreateSet)
- RecordSetInterval *pIntervals;
- int nIntervals;
- int *alignment;
- RecordCreateSetProcPtr *ppCreateSet;
+_RecordSetMemoryRequirements(RecordSetInterval *pIntervals, int nIntervals,
+ int *alignment,
+ RecordCreateSetProcPtr *ppCreateSet)
{
int bmsize, rlsize, bma, rla;
int maxMember;
@@ -470,12 +386,8 @@ _RecordSetMemoryRequirements(pIntervals, nIntervals, alignment, ppCreateSet)
&bma);
rlsize = IntervalListMemoryRequirements(pIntervals, nIntervals, maxMember,
&rla);
-#ifdef TESTING
- if (_RecordSetImpl == BitVectorImplementation)
-#else
if ( ( (nIntervals > 1) && (maxMember <= 255) )
|| (bmsize < rlsize) )
-#endif
{
*alignment = bma;
*ppCreateSet = BitVectorCreateSet;
@@ -524,183 +436,3 @@ RecordCreateSet(pIntervals, nIntervals, pMem, memsize)
}
return (*pCreateSet)(pIntervals, nIntervals, pMem, size);
}
-
-/***************************************************************************/
-
-#ifdef TESTING
-
-/*
-
-Test Strategy
-
-Having two set representations is convenient for testing because we
-can play them against each other. The test code will be able to
-specify which implementation to use. This breaks the encapsulation,
-but that seems acceptable for testing. The crux of the test loop
-looks like this:
-
-loop:
- generate random list of Intervals
-
- create set A using bit vector implementation
- create set B using Interval list implementation
-
- for each possible set member
- if set A and set B disagree on whether this is a member error;
-
- iterate over both sets, comparing the intervals returned by each.
- if intervals or number of intervals are different error;
-
- iterate over intervals of set A
- for i = interval.first to interval.last
- if i is not a member of set B error;
-
- iterate over intervals of set B
- for i = interval.first to interval.last
- if i is not a member of set A error;
-
- destroy sets A, B
-
-*/
-
-int GenerateRandomIntervals(pIntervals, maxintervals)
- RecordSetInterval *pIntervals;
- int maxintervals;
-{
- int i, nIntervals;
-
- nIntervals = rand() % maxintervals;
-
- for (i = 0; i < nIntervals; i++)
- {
- pIntervals[i].first = rand();
- pIntervals[i].last = pIntervals[i].first + rand();
- }
- return nIntervals;
-}
-
-#define MAXINTERVALS 100
-
-int main(argc, argv)
- int argc;
- char **argv;
-{
- RecordSetPtr bs, rs;
- RecordSetInterval br, rr;
- RecordSetIteratePtr bi, ri;
- CARD16 i;
- int testcount;
- RecordSetInterval intervals[MAXINTERVALS];
- int nIntervals;
- int bsize, rsize;
- int balign, ralign;
- int pad;
-
- for (testcount = 0; 1; testcount++)
- {
- nIntervals = GenerateRandomIntervals(intervals, MAXINTERVALS);
- printf("%d nIntervals %d\n", testcount, nIntervals);
-
- if (testcount & 1)
- {
- _RecordForceSetImplementation(BitVectorImplementation);
- bsize = RecordSetMemoryRequirements(intervals, nIntervals, &balign);
- _RecordForceSetImplementation(IntervalListImplementation);
- rsize = RecordSetMemoryRequirements(intervals, nIntervals, &ralign);
- pad = (ralign - (bsize & (ralign - 1))) & (ralign - 1);
- bs = (RecordSetPtr)xalloc(bsize + pad + rsize );
- if (!bs)
- {
- fprintf(stderr, "%d: failed to alloc memory for sets\n",
- testcount);
- continue;
- }
- rs = (RecordSetPtr)(((char *)bs) + bsize + pad);
- }
- else
- {
- bs = rs = NULL;
- bsize = rsize = 0;
- }
-
- _RecordForceSetImplementation(BitVectorImplementation);
- bs = RecordCreateSet(intervals, nIntervals, bs, bsize);
- _RecordForceSetImplementation(IntervalListImplementation);
- rs = RecordCreateSet(intervals, nIntervals, rs, rsize);
-
- if (!bs || !rs)
- {
- fprintf(stderr, "%d: failed to create sets\n", testcount);
- continue;
- }
-
- for (i = 0; i < 65535; i++)
- {
- unsigned long b, r;
-
- b = RecordIsMemberOfSet(bs, i);
- r = RecordIsMemberOfSet(rs, i);
- if ( (b && !r) || (!b && r) )
- {
- fprintf(stderr, "%d: isMemberOfSet %d\n",
- testcount, (int)i);
- }
- }
-
- bi = RecordIterateSet(bs, NULL, &br);
- ri = RecordIterateSet(rs, NULL, &rr);
-
- while (bi && ri)
- {
- if ( (rr.first != br.first) || (rr.last != br.last) )
- {
- fprintf(stderr, "%d: iterateSet interval value mismatch\n",
- testcount);
- }
- bi = RecordIterateSet(bs, bi, &br);
- ri = RecordIterateSet(rs, ri, &rr);
- }
- if (bi != ri)
- {
- fprintf(stderr, "%d: iterateSet interval count mismatch\n",
- testcount);
- }
-
-
- bi = NULL;
- while (bi = RecordIterateSet(bs, bi, &br))
- {
- for (i = br.first; i <= br.last; i++)
- {
- if (!RecordIsMemberOfSet(rs, i))
- {
- fprintf(stderr, "%d: iterateSet b / isMemberOfSet r %d\n",
- testcount, (int)i);
- }
- }
- }
-
- ri = NULL;
- while (ri = RecordIterateSet(rs, ri, &rr))
- {
- for (i = rr.first; i <= rr.last; i++)
- {
- if (!RecordIsMemberOfSet(bs, i) )
- {
- fprintf(stderr, "%d: iterateSet r / isMemberOfSet b %d\n",
- testcount, (int)i);
- }
- }
- }
-
- RecordDestroySet(bs);
- RecordDestroySet(rs);
-
- if (testcount & 1)
- {
- xfree(bs);
- }
- }
-}
-
-#endif /* TESTING */
diff --git a/record/set.h b/record/set.h
index 6f0b872a1..f156bf8dc 100644
--- a/record/set.h
+++ b/record/set.h
@@ -1,4 +1,3 @@
-/* $Xorg: set.h,v 1.4 2001/02/09 02:05:27 xorgcvs Exp $ */
/*
diff --git a/render/Makefile.am b/render/Makefile.am
index addabc67a..830778a92 100644
--- a/render/Makefile.am
+++ b/render/Makefile.am
@@ -1,6 +1,6 @@
noinst_LTLIBRARIES = librender.la
-AM_CFLAGS = $(DIX_CFLAGS) @SERVER_DEFINES@ @LOADER_DEFINES@
+AM_CFLAGS = $(DIX_CFLAGS)
librender_la_SOURCES = \
animcur.c \
diff --git a/render/animcur.c b/render/animcur.c
index e3915b2b8..8e4f59d1b 100644
--- a/render/animcur.c
+++ b/render/animcur.c
@@ -1,5 +1,4 @@
/*
- * $XFree86: xc/programs/Xserver/render/animcur.c,v 1.5tsi Exp $
*
* Copyright © 2002 Keith Packard, member of The XFree86 Project, Inc.
*
diff --git a/render/filter.c b/render/filter.c
index f81cc4a8c..71375dae9 100644
--- a/render/filter.c
+++ b/render/filter.c
@@ -271,11 +271,24 @@ PictureResetFilters (ScreenPtr pScreen)
int
SetPictureFilter (PicturePtr pPicture, char *name, int len, xFixed *params, int nparams)
{
- ScreenPtr pScreen = pPicture->pDrawable->pScreen;
- PictureScreenPtr ps = GetPictureScreen(pScreen);
- PictFilterPtr pFilter = PictureFindFilter (pScreen, name, len);
+ PictFilterPtr pFilter;
xFixed *new_params;
- int i, result;
+ int i, s, result;
+
+ pFilter = PictureFindFilter (screenInfo.screens[0], name, len);
+
+ if (pPicture->pDrawable == NULL) {
+ /* For source pictures, the picture isn't tied to a screen. So, ensure
+ * that all screens can handle a filter we set for the picture.
+ */
+ for (s = 0; s < screenInfo.numScreens; s++) {
+ if (PictureFindFilter (screenInfo.screens[s], name, len)->id !=
+ pFilter->id)
+ {
+ return BadMatch;
+ }
+ }
+ }
if (!pFilter)
return BadName;
@@ -300,8 +313,13 @@ SetPictureFilter (PicturePtr pPicture, char *name, int len, xFixed *params, int
pPicture->filter_params[i] = params[i];
pPicture->filter = pFilter->id;
- result = (*ps->ChangePictureFilter) (pPicture, pPicture->filter,
- params, nparams);
- return result;
+ if (pPicture->pDrawable) {
+ ScreenPtr pScreen = pPicture->pDrawable->pScreen;
+ PictureScreenPtr ps = GetPictureScreen(pScreen);
+
+ result = (*ps->ChangePictureFilter) (pPicture, pPicture->filter,
+ params, nparams);
+ return result;
+ }
return Success;
}
diff --git a/render/glyph.c b/render/glyph.c
index fd9bae3ac..6d09a0e52 100644
--- a/render/glyph.c
+++ b/render/glyph.c
@@ -1,5 +1,4 @@
/*
- * $XFree86: xc/programs/Xserver/render/glyph.c,v 1.5 2001/01/30 07:01:22 keithp Exp $
*
* Copyright © 2000 SuSE, Inc.
*
diff --git a/render/glyphstr.h b/render/glyphstr.h
index 5f38bc9cf..64cedfa16 100644
--- a/render/glyphstr.h
+++ b/render/glyphstr.h
@@ -1,5 +1,4 @@
/*
- * $XFree86: xc/programs/Xserver/render/glyphstr.h,v 1.3 2000/11/20 07:13:13 keithp Exp $
*
* Copyright © 2000 SuSE, Inc.
*
diff --git a/render/miglyph.c b/render/miglyph.c
index 2a221442e..7968c90ea 100644
--- a/render/miglyph.c
+++ b/render/miglyph.c
@@ -1,5 +1,4 @@
/*
- * $XFree86: xc/programs/Xserver/render/miglyph.c,v 1.4 2000/11/20 07:13:13 keithp Exp $
*
* Copyright © 2000 SuSE, Inc.
*
diff --git a/render/miindex.c b/render/miindex.c
index 03e2857a2..0e12dca4a 100644
--- a/render/miindex.c
+++ b/render/miindex.c
@@ -1,5 +1,4 @@
/*
- * $XFree86: xc/programs/Xserver/render/miindex.c,v 1.7 2002/11/05 06:05:04 keithp Exp $
*
* Copyright © 2001 Keith Packard, member of The XFree86 Project, Inc.
*
diff --git a/render/mipict.c b/render/mipict.c
index 0a00a324b..3d6c1aeeb 100644
--- a/render/mipict.c
+++ b/render/mipict.c
@@ -1,5 +1,4 @@
/*
- * $XFree86: xc/programs/Xserver/render/mipict.c,v 1.15tsi Exp $
*
* Copyright © 1999 Keith Packard
*
diff --git a/render/mipict.h b/render/mipict.h
index 0d76aaf54..eef155f7d 100644
--- a/render/mipict.h
+++ b/render/mipict.h
@@ -1,5 +1,4 @@
/*
- * $XFree86: xc/programs/Xserver/render/mipict.h,v 1.12 2002/11/05 05:34:40 keithp Exp $
*
* Copyright © 2000 SuSE, Inc.
*
diff --git a/render/mirect.c b/render/mirect.c
index 7bcdd8b62..87767a76c 100644
--- a/render/mirect.c
+++ b/render/mirect.c
@@ -1,5 +1,4 @@
/*
- * $XFree86: xc/programs/Xserver/render/mirect.c,v 1.3 2000/12/08 07:52:05 keithp Exp $
*
* Copyright © 2000 Keith Packard, member of The XFree86 Project, Inc.
*
diff --git a/render/mitrap.c b/render/mitrap.c
index be1712420..c6188061c 100644
--- a/render/mitrap.c
+++ b/render/mitrap.c
@@ -1,5 +1,4 @@
/*
- * $XFree86: xc/programs/Xserver/render/mitrap.c,v 1.8 2002/09/03 19:28:28 keithp Exp $
*
* Copyright © 2002 Keith Packard, member of The XFree86 Project, Inc.
*
diff --git a/render/mitri.c b/render/mitri.c
index bc2641895..374e2fdc7 100644
--- a/render/mitri.c
+++ b/render/mitri.c
@@ -1,5 +1,4 @@
/*
- * $XFree86: xc/programs/Xserver/render/mitri.c,v 1.5 2002/05/31 16:48:52 keithp Exp $
*
* Copyright © 2002 Keith Packard, member of The XFree86 Project, Inc.
*
diff --git a/render/picture.c b/render/picture.c
index ee385e56b..e7901e873 100644
--- a/render/picture.c
+++ b/render/picture.c
@@ -1,5 +1,4 @@
/*
- * $XFree86: xc/programs/Xserver/render/picture.c,v 1.29 2002/11/23 02:38:15 keithp Exp $
*
* Copyright © 2000 SuSE, Inc.
*
@@ -1210,14 +1209,15 @@ ChangePicture (PicturePtr pPicture,
pAlpha = (PicturePtr) SecurityLookupIDByType(client,
pid,
PictureType,
- SecurityWriteAccess|SecurityReadAccess);
+ DixWriteAccess|DixReadAccess);
if (!pAlpha)
{
client->errorValue = pid;
error = BadPixmap;
break;
}
- if (pAlpha->pDrawable->type != DRAWABLE_PIXMAP)
+ if (pAlpha->pDrawable == NULL ||
+ pAlpha->pDrawable->type != DRAWABLE_PIXMAP)
{
client->errorValue = pid;
error = BadMatch;
@@ -1271,7 +1271,7 @@ ChangePicture (PicturePtr pPicture,
pPixmap = (PixmapPtr)SecurityLookupIDByType(client,
pid,
RT_PIXMAP,
- SecurityReadAccess);
+ DixReadAccess);
if (!pPixmap)
{
client->errorValue = pid;
@@ -1459,21 +1459,25 @@ SetPictureClipRegion (PicturePtr pPicture,
return result;
}
+static Bool
+transformIsIdentity(PictTransform *t)
+{
+ return ((t->matrix[0][0] == t->matrix[1][1]) &&
+ (t->matrix[0][0] == t->matrix[2][2]) &&
+ (t->matrix[0][0] != 0) &&
+ (t->matrix[0][1] == 0) &&
+ (t->matrix[0][2] == 0) &&
+ (t->matrix[1][0] == 0) &&
+ (t->matrix[1][2] == 0) &&
+ (t->matrix[2][0] == 0) &&
+ (t->matrix[2][1] == 0));
+}
int
SetPictureTransform (PicturePtr pPicture,
PictTransform *transform)
{
- static const PictTransform identity = { {
- { xFixed1, 0x00000, 0x00000 },
- { 0x00000, xFixed1, 0x00000 },
- { 0x00000, 0x00000, xFixed1 },
- } };
- ScreenPtr pScreen = pPicture->pDrawable->pScreen;
- PictureScreenPtr ps = GetPictureScreen(pScreen);
- int result;
-
- if (transform && memcmp (transform, &identity, sizeof (PictTransform)) == 0)
+ if (transform && transformIsIdentity (transform))
transform = 0;
if (transform)
@@ -1496,9 +1500,16 @@ SetPictureTransform (PicturePtr pPicture,
}
pPicture->serialNumber |= GC_CHANGE_SERIAL_BIT;
- result = (*ps->ChangePictureTransform) (pPicture, transform);
+ if (pPicture->pDrawable != NULL) {
+ int result;
+ PictureScreenPtr ps = GetPictureScreen(pPicture->pDrawable->pScreen);
- return result;
+ result = (*ps->ChangePictureTransform) (pPicture, transform);
+
+ return result;
+ }
+
+ return Success;
}
void
diff --git a/render/picture.h b/render/picture.h
index 778eb5c4c..1b622340d 100644
--- a/render/picture.h
+++ b/render/picture.h
@@ -1,5 +1,4 @@
/*
- * $XFree86: xc/programs/Xserver/render/picture.h,v 1.20tsi Exp $
*
* Copyright © 2000 SuSE, Inc.
*
@@ -68,61 +67,59 @@ typedef struct _Picture *PicturePtr;
#define PICT_FORMAT_COLOR(f) (PICT_FORMAT_TYPE(f) & 2)
/* 32bpp formats */
-#define PICT_a8r8g8b8 PICT_FORMAT(32,PICT_TYPE_ARGB,8,8,8,8)
-#define PICT_x8r8g8b8 PICT_FORMAT(32,PICT_TYPE_ARGB,0,8,8,8)
-#define PICT_a8b8g8r8 PICT_FORMAT(32,PICT_TYPE_ABGR,8,8,8,8)
-#define PICT_x8b8g8r8 PICT_FORMAT(32,PICT_TYPE_ABGR,0,8,8,8)
+typedef enum _PictFormatShort {
+ PICT_a8r8g8b8 = PICT_FORMAT(32,PICT_TYPE_ARGB,8,8,8,8),
+ PICT_x8r8g8b8 = PICT_FORMAT(32,PICT_TYPE_ARGB,0,8,8,8),
+ PICT_a8b8g8r8 = PICT_FORMAT(32,PICT_TYPE_ABGR,8,8,8,8),
+ PICT_x8b8g8r8 = PICT_FORMAT(32,PICT_TYPE_ABGR,0,8,8,8),
/* 24bpp formats */
-#define PICT_r8g8b8 PICT_FORMAT(24,PICT_TYPE_ARGB,0,8,8,8)
-#define PICT_b8g8r8 PICT_FORMAT(24,PICT_TYPE_ABGR,0,8,8,8)
+ PICT_r8g8b8 = PICT_FORMAT(24,PICT_TYPE_ARGB,0,8,8,8),
+ PICT_b8g8r8 = PICT_FORMAT(24,PICT_TYPE_ABGR,0,8,8,8),
/* 16bpp formats */
-#define PICT_r5g6b5 PICT_FORMAT(16,PICT_TYPE_ARGB,0,5,6,5)
-#define PICT_b5g6r5 PICT_FORMAT(16,PICT_TYPE_ABGR,0,5,6,5)
-
-#define PICT_a1r5g5b5 PICT_FORMAT(16,PICT_TYPE_ARGB,1,5,5,5)
-#define PICT_x1r5g5b5 PICT_FORMAT(16,PICT_TYPE_ARGB,0,5,5,5)
-#define PICT_a1b5g5r5 PICT_FORMAT(16,PICT_TYPE_ABGR,1,5,5,5)
-#define PICT_x1b5g5r5 PICT_FORMAT(16,PICT_TYPE_ABGR,0,5,5,5)
-#define PICT_a4r4g4b4 PICT_FORMAT(16,PICT_TYPE_ARGB,4,4,4,4)
-#define PICT_x4r4g4b4 PICT_FORMAT(16,PICT_TYPE_ARGB,0,4,4,4)
-#define PICT_a4b4g4r4 PICT_FORMAT(16,PICT_TYPE_ABGR,4,4,4,4)
-#define PICT_x4b4g4r4 PICT_FORMAT(16,PICT_TYPE_ABGR,0,4,4,4)
+ PICT_r5g6b5 = PICT_FORMAT(16,PICT_TYPE_ARGB,0,5,6,5),
+ PICT_b5g6r5 = PICT_FORMAT(16,PICT_TYPE_ABGR,0,5,6,5),
+
+ PICT_a1r5g5b5 = PICT_FORMAT(16,PICT_TYPE_ARGB,1,5,5,5),
+ PICT_x1r5g5b5 = PICT_FORMAT(16,PICT_TYPE_ARGB,0,5,5,5),
+ PICT_a1b5g5r5 = PICT_FORMAT(16,PICT_TYPE_ABGR,1,5,5,5),
+ PICT_x1b5g5r5 = PICT_FORMAT(16,PICT_TYPE_ABGR,0,5,5,5),
+ PICT_a4r4g4b4 = PICT_FORMAT(16,PICT_TYPE_ARGB,4,4,4,4),
+ PICT_x4r4g4b4 = PICT_FORMAT(16,PICT_TYPE_ARGB,0,4,4,4),
+ PICT_a4b4g4r4 = PICT_FORMAT(16,PICT_TYPE_ABGR,4,4,4,4),
+ PICT_x4b4g4r4 = PICT_FORMAT(16,PICT_TYPE_ABGR,0,4,4,4),
/* 8bpp formats */
-#define PICT_a8 PICT_FORMAT(8,PICT_TYPE_A,8,0,0,0)
-#define PICT_r3g3b2 PICT_FORMAT(8,PICT_TYPE_ARGB,0,3,3,2)
-#define PICT_b2g3r3 PICT_FORMAT(8,PICT_TYPE_ABGR,0,3,3,2)
-#define PICT_a2r2g2b2 PICT_FORMAT(8,PICT_TYPE_ARGB,2,2,2,2)
-#define PICT_a2b2g2r2 PICT_FORMAT(8,PICT_TYPE_ABGR,2,2,2,2)
-
-#define PICT_c8 PICT_FORMAT(8,PICT_TYPE_COLOR,0,0,0,0)
-#define PICT_g8 PICT_FORMAT(8,PICT_TYPE_GRAY,0,0,0,0)
-
-#define PICT_x4a4 PICT_FORMAT(8,PICT_TYPE_A,4,0,0,0)
-#define PICT_x4r1g2b1 PICT_FORMAT(8,PICT_TYPE_ARGB,0,1,2,1)
-#define PICT_x4b1g2r1 PICT_FORMAT(8,PICT_TYPE_ABGR,0,1,2,1)
-#define PICT_x4a1r1g1b1 PICT_FORMAT(8,PICT_TYPE_ARGB,1,1,1,1)
-#define PICT_x4a1b1g1r1 PICT_FORMAT(8,PICT_TYPE_ABGR,1,1,1,1)
+ PICT_a8 = PICT_FORMAT(8,PICT_TYPE_A,8,0,0,0),
+ PICT_r3g3b2 = PICT_FORMAT(8,PICT_TYPE_ARGB,0,3,3,2),
+ PICT_b2g3r3 = PICT_FORMAT(8,PICT_TYPE_ABGR,0,3,3,2),
+ PICT_a2r2g2b2 = PICT_FORMAT(8,PICT_TYPE_ARGB,2,2,2,2),
+ PICT_a2b2g2r2 = PICT_FORMAT(8,PICT_TYPE_ABGR,2,2,2,2),
+
+ PICT_c8 = PICT_FORMAT(8,PICT_TYPE_COLOR,0,0,0,0),
+ PICT_g8 = PICT_FORMAT(8,PICT_TYPE_GRAY,0,0,0,0),
+
+ PICT_x4a4 = PICT_FORMAT(8,PICT_TYPE_A,4,0,0,0),
-#define PICT_x4c4 PICT_FORMAT(8,PICT_TYPE_COLOR,0,0,0,0)
-#define PICT_x4g4 PICT_FORMAT(8,PICT_TYPE_GRAY,0,0,0,0)
+ PICT_x4c4 = PICT_FORMAT(8,PICT_TYPE_COLOR,0,0,0,0),
+ PICT_x4g4 = PICT_FORMAT(8,PICT_TYPE_GRAY,0,0,0,0),
/* 4bpp formats */
-#define PICT_a4 PICT_FORMAT(4,PICT_TYPE_A,4,0,0,0)
-#define PICT_r1g2b1 PICT_FORMAT(4,PICT_TYPE_ARGB,0,1,2,1)
-#define PICT_b1g2r1 PICT_FORMAT(4,PICT_TYPE_ABGR,0,1,2,1)
-#define PICT_a1r1g1b1 PICT_FORMAT(4,PICT_TYPE_ARGB,1,1,1,1)
-#define PICT_a1b1g1r1 PICT_FORMAT(4,PICT_TYPE_ABGR,1,1,1,1)
+ PICT_a4 = PICT_FORMAT(4,PICT_TYPE_A,4,0,0,0),
+ PICT_r1g2b1 = PICT_FORMAT(4,PICT_TYPE_ARGB,0,1,2,1),
+ PICT_b1g2r1 = PICT_FORMAT(4,PICT_TYPE_ABGR,0,1,2,1),
+ PICT_a1r1g1b1 = PICT_FORMAT(4,PICT_TYPE_ARGB,1,1,1,1),
+ PICT_a1b1g1r1 = PICT_FORMAT(4,PICT_TYPE_ABGR,1,1,1,1),
-#define PICT_c4 PICT_FORMAT(4,PICT_TYPE_COLOR,0,0,0,0)
-#define PICT_g4 PICT_FORMAT(4,PICT_TYPE_GRAY,0,0,0,0)
+ PICT_c4 = PICT_FORMAT(4,PICT_TYPE_COLOR,0,0,0,0),
+ PICT_g4 = PICT_FORMAT(4,PICT_TYPE_GRAY,0,0,0,0),
/* 1bpp formats */
-#define PICT_a1 PICT_FORMAT(1,PICT_TYPE_A,1,0,0,0)
+ PICT_a1 = PICT_FORMAT(1,PICT_TYPE_A,1,0,0,0),
-#define PICT_g1 PICT_FORMAT(1,PICT_TYPE_GRAY,0,0,0,0)
+ PICT_g1 = PICT_FORMAT(1,PICT_TYPE_GRAY,0,0,0,0),
+} PictFormatShort;
/*
* For dynamic indexed visuals (GrayScale and PseudoColor), these control the
diff --git a/render/picturestr.h b/render/picturestr.h
index e81d769d5..f1617f627 100644
--- a/render/picturestr.h
+++ b/render/picturestr.h
@@ -129,7 +129,7 @@ typedef union _SourcePict {
typedef struct _Picture {
DrawablePtr pDrawable;
PictFormatPtr pFormat;
- CARD32 format; /* PICT_FORMAT */
+ PictFormatShort format; /* PICT_FORMAT */
int refcnt;
CARD32 id;
PicturePtr pNext; /* chain on same drawable */
@@ -349,8 +349,18 @@ typedef struct _PictureScreen {
PictFilterAliasPtr filterAliases;
int nfilterAliases;
+ /**
+ * Called immediately after a picture's transform is changed through the
+ * SetPictureTransform request. Not called for source-only pictures.
+ */
ChangePictureTransformProcPtr ChangePictureTransform;
+
+ /**
+ * Called immediately after a picture's transform is changed through the
+ * SetPictureFilter request. Not called for source-only pictures.
+ */
ChangePictureFilterProcPtr ChangePictureFilter;
+
DestroyPictureFilterProcPtr DestroyPictureFilter;
TrapezoidsProcPtr Trapezoids;
diff --git a/render/render.c b/render/render.c
index 73522ee66..126d08daf 100644
--- a/render/render.c
+++ b/render/render.c
@@ -1,6 +1,4 @@
-/* $XdotOrg: xserver/xorg/render/render.c,v 1.13 2006/02/10 22:00:30 anholt Exp $ */
/*
- * $XFree86: xc/programs/Xserver/render/render.c,v 1.27tsi Exp $
*
* Copyright © 2000 SuSE, Inc.
*
@@ -556,7 +554,7 @@ ProcRenderQueryPictIndexValues (ClientPtr client)
pFormat = (PictFormatPtr) SecurityLookupIDByType (client,
stuff->format,
PictFormatType,
- SecurityReadAccess);
+ DixReadAccess);
if (!pFormat)
{
@@ -616,19 +614,21 @@ ProcRenderCreatePicture (ClientPtr client)
PicturePtr pPicture;
DrawablePtr pDrawable;
PictFormatPtr pFormat;
- int len;
- int error;
+ int len, error, rc;
REQUEST(xRenderCreatePictureReq);
REQUEST_AT_LEAST_SIZE(xRenderCreatePictureReq);
LEGAL_NEW_RESOURCE(stuff->pid, client);
- SECURITY_VERIFY_DRAWABLE(pDrawable, stuff->drawable, client,
- SecurityWriteAccess);
+ rc = dixLookupDrawable(&pDrawable, stuff->drawable, client, 0,
+ DixWriteAccess);
+ if (rc != Success)
+ return rc;
+
pFormat = (PictFormatPtr) SecurityLookupIDByType (client,
stuff->format,
PictFormatType,
- SecurityReadAccess);
+ DixReadAccess);
if (!pFormat)
{
client->errorValue = stuff->format;
@@ -662,7 +662,7 @@ ProcRenderChangePicture (ClientPtr client)
int len;
REQUEST_AT_LEAST_SIZE(xRenderChangePictureReq);
- VERIFY_PICTURE (pPicture, stuff->picture, client, SecurityWriteAccess,
+ VERIFY_PICTURE (pPicture, stuff->picture, client, DixWriteAccess,
RenderErrBase + BadPicture);
len = client->req_len - (sizeof(xRenderChangePictureReq) >> 2);
@@ -682,7 +682,7 @@ ProcRenderSetPictureClipRectangles (ClientPtr client)
int result;
REQUEST_AT_LEAST_SIZE(xRenderSetPictureClipRectanglesReq);
- VERIFY_PICTURE (pPicture, stuff->picture, client, SecurityWriteAccess,
+ VERIFY_PICTURE (pPicture, stuff->picture, client, DixWriteAccess,
RenderErrBase + BadPicture);
if (!pPicture->pDrawable)
return BadDrawable;
@@ -708,7 +708,7 @@ ProcRenderFreePicture (ClientPtr client)
REQUEST_SIZE_MATCH(xRenderFreePictureReq);
- VERIFY_PICTURE (pPicture, stuff->picture, client, SecurityDestroyAccess,
+ VERIFY_PICTURE (pPicture, stuff->picture, client, DixDestroyAccess,
RenderErrBase + BadPicture);
FreeResource (stuff->picture, RT_NONE);
return(client->noClientException);
@@ -738,13 +738,13 @@ ProcRenderComposite (ClientPtr client)
client->errorValue = stuff->op;
return BadValue;
}
- VERIFY_PICTURE (pDst, stuff->dst, client, SecurityWriteAccess,
+ VERIFY_PICTURE (pDst, stuff->dst, client, DixWriteAccess,
RenderErrBase + BadPicture);
if (!pDst->pDrawable)
return BadDrawable;
- VERIFY_PICTURE (pSrc, stuff->src, client, SecurityReadAccess,
+ VERIFY_PICTURE (pSrc, stuff->src, client, DixReadAccess,
RenderErrBase + BadPicture);
- VERIFY_ALPHA (pMask, stuff->mask, client, SecurityReadAccess,
+ VERIFY_ALPHA (pMask, stuff->mask, client, DixReadAccess,
RenderErrBase + BadPicture);
if ((pSrc->pDrawable && pSrc->pDrawable->pScreen != pDst->pDrawable->pScreen) ||
(pMask && pMask->pDrawable && pDst->pDrawable->pScreen != pMask->pDrawable->pScreen))
@@ -784,9 +784,9 @@ ProcRenderTrapezoids (ClientPtr client)
client->errorValue = stuff->op;
return BadValue;
}
- VERIFY_PICTURE (pSrc, stuff->src, client, SecurityReadAccess,
+ VERIFY_PICTURE (pSrc, stuff->src, client, DixReadAccess,
RenderErrBase + BadPicture);
- VERIFY_PICTURE (pDst, stuff->dst, client, SecurityWriteAccess,
+ VERIFY_PICTURE (pDst, stuff->dst, client, DixWriteAccess,
RenderErrBase + BadPicture);
if (!pDst->pDrawable)
return BadDrawable;
@@ -797,7 +797,7 @@ ProcRenderTrapezoids (ClientPtr client)
pFormat = (PictFormatPtr) SecurityLookupIDByType (client,
stuff->maskFormat,
PictFormatType,
- SecurityReadAccess);
+ DixReadAccess);
if (!pFormat)
{
client->errorValue = stuff->maskFormat;
@@ -831,9 +831,9 @@ ProcRenderTriangles (ClientPtr client)
client->errorValue = stuff->op;
return BadValue;
}
- VERIFY_PICTURE (pSrc, stuff->src, client, SecurityReadAccess,
+ VERIFY_PICTURE (pSrc, stuff->src, client, DixReadAccess,
RenderErrBase + BadPicture);
- VERIFY_PICTURE (pDst, stuff->dst, client, SecurityWriteAccess,
+ VERIFY_PICTURE (pDst, stuff->dst, client, DixWriteAccess,
RenderErrBase + BadPicture);
if (!pDst->pDrawable)
return BadDrawable;
@@ -844,7 +844,7 @@ ProcRenderTriangles (ClientPtr client)
pFormat = (PictFormatPtr) SecurityLookupIDByType (client,
stuff->maskFormat,
PictFormatType,
- SecurityReadAccess);
+ DixReadAccess);
if (!pFormat)
{
client->errorValue = stuff->maskFormat;
@@ -878,9 +878,9 @@ ProcRenderTriStrip (ClientPtr client)
client->errorValue = stuff->op;
return BadValue;
}
- VERIFY_PICTURE (pSrc, stuff->src, client, SecurityReadAccess,
+ VERIFY_PICTURE (pSrc, stuff->src, client, DixReadAccess,
RenderErrBase + BadPicture);
- VERIFY_PICTURE (pDst, stuff->dst, client, SecurityWriteAccess,
+ VERIFY_PICTURE (pDst, stuff->dst, client, DixWriteAccess,
RenderErrBase + BadPicture);
if (!pDst->pDrawable)
return BadDrawable;
@@ -891,7 +891,7 @@ ProcRenderTriStrip (ClientPtr client)
pFormat = (PictFormatPtr) SecurityLookupIDByType (client,
stuff->maskFormat,
PictFormatType,
- SecurityReadAccess);
+ DixReadAccess);
if (!pFormat)
{
client->errorValue = stuff->maskFormat;
@@ -925,9 +925,9 @@ ProcRenderTriFan (ClientPtr client)
client->errorValue = stuff->op;
return BadValue;
}
- VERIFY_PICTURE (pSrc, stuff->src, client, SecurityReadAccess,
+ VERIFY_PICTURE (pSrc, stuff->src, client, DixReadAccess,
RenderErrBase + BadPicture);
- VERIFY_PICTURE (pDst, stuff->dst, client, SecurityWriteAccess,
+ VERIFY_PICTURE (pDst, stuff->dst, client, DixWriteAccess,
RenderErrBase + BadPicture);
if (!pDst->pDrawable)
return BadDrawable;
@@ -938,7 +938,7 @@ ProcRenderTriFan (ClientPtr client)
pFormat = (PictFormatPtr) SecurityLookupIDByType (client,
stuff->maskFormat,
PictFormatType,
- SecurityReadAccess);
+ DixReadAccess);
if (!pFormat)
{
client->errorValue = stuff->maskFormat;
@@ -990,7 +990,7 @@ ProcRenderCreateGlyphSet (ClientPtr client)
format = (PictFormatPtr) SecurityLookupIDByType (client,
stuff->format,
PictFormatType,
- SecurityReadAccess);
+ DixReadAccess);
if (!format)
{
client->errorValue = stuff->format;
@@ -1038,7 +1038,7 @@ ProcRenderReferenceGlyphSet (ClientPtr client)
glyphSet = (GlyphSetPtr) SecurityLookupIDByType (client,
stuff->existing,
GlyphSetType,
- SecurityWriteAccess);
+ DixWriteAccess);
if (!glyphSet)
{
client->errorValue = stuff->existing;
@@ -1063,7 +1063,7 @@ ProcRenderFreeGlyphSet (ClientPtr client)
glyphSet = (GlyphSetPtr) SecurityLookupIDByType (client,
stuff->glyphset,
GlyphSetType,
- SecurityDestroyAccess);
+ DixDestroyAccess);
if (!glyphSet)
{
client->errorValue = stuff->glyphset;
@@ -1097,7 +1097,7 @@ ProcRenderAddGlyphs (ClientPtr client)
glyphSet = (GlyphSetPtr) SecurityLookupIDByType (client,
stuff->glyphset,
GlyphSetType,
- SecurityWriteAccess);
+ DixWriteAccess);
if (!glyphSet)
{
client->errorValue = stuff->glyphset;
@@ -1198,7 +1198,7 @@ ProcRenderFreeGlyphs (ClientPtr client)
glyphSet = (GlyphSetPtr) SecurityLookupIDByType (client,
stuff->glyphset,
GlyphSetType,
- SecurityWriteAccess);
+ DixWriteAccess);
if (!glyphSet)
{
client->errorValue = stuff->glyphset;
@@ -1253,9 +1253,9 @@ ProcRenderCompositeGlyphs (ClientPtr client)
client->errorValue = stuff->op;
return BadValue;
}
- VERIFY_PICTURE (pSrc, stuff->src, client, SecurityReadAccess,
+ VERIFY_PICTURE (pSrc, stuff->src, client, DixReadAccess,
RenderErrBase + BadPicture);
- VERIFY_PICTURE (pDst, stuff->dst, client, SecurityWriteAccess,
+ VERIFY_PICTURE (pDst, stuff->dst, client, DixWriteAccess,
RenderErrBase + BadPicture);
if (!pDst->pDrawable)
return BadDrawable;
@@ -1266,7 +1266,7 @@ ProcRenderCompositeGlyphs (ClientPtr client)
pFormat = (PictFormatPtr) SecurityLookupIDByType (client,
stuff->maskFormat,
PictFormatType,
- SecurityReadAccess);
+ DixReadAccess);
if (!pFormat)
{
client->errorValue = stuff->maskFormat;
@@ -1279,7 +1279,7 @@ ProcRenderCompositeGlyphs (ClientPtr client)
glyphSet = (GlyphSetPtr) SecurityLookupIDByType (client,
stuff->glyphset,
GlyphSetType,
- SecurityReadAccess);
+ DixReadAccess);
if (!glyphSet)
{
client->errorValue = stuff->glyphset;
@@ -1341,7 +1341,7 @@ ProcRenderCompositeGlyphs (ClientPtr client)
glyphSet = (GlyphSetPtr) SecurityLookupIDByType (client,
gs,
GlyphSetType,
- SecurityReadAccess);
+ DixReadAccess);
if (!glyphSet)
{
client->errorValue = gs;
@@ -1422,7 +1422,7 @@ ProcRenderFillRectangles (ClientPtr client)
client->errorValue = stuff->op;
return BadValue;
}
- VERIFY_PICTURE (pDst, stuff->dst, client, SecurityWriteAccess,
+ VERIFY_PICTURE (pDst, stuff->dst, client, DixWriteAccess,
RenderErrBase + BadPicture);
if (!pDst->pDrawable)
return BadDrawable;
@@ -1488,7 +1488,7 @@ ProcRenderCreateCursor (ClientPtr client)
REQUEST_SIZE_MATCH (xRenderCreateCursorReq);
LEGAL_NEW_RESOURCE(stuff->cid, client);
- VERIFY_PICTURE (pSrc, stuff->src, client, SecurityReadAccess,
+ VERIFY_PICTURE (pSrc, stuff->src, client, DixReadAccess,
RenderErrBase + BadPicture);
if (!pSrc->pDrawable)
return BadDrawable;
@@ -1670,7 +1670,7 @@ ProcRenderSetPictureTransform (ClientPtr client)
int result;
REQUEST_SIZE_MATCH(xRenderSetPictureTransformReq);
- VERIFY_PICTURE (pPicture, stuff->picture, client, SecurityWriteAccess,
+ VERIFY_PICTURE (pPicture, stuff->picture, client, DixWriteAccess,
RenderErrBase + BadPicture);
result = SetPictureTransform (pPicture, (PictTransform *) &stuff->transform);
if (client->noClientException != Success)
@@ -1689,14 +1689,15 @@ ProcRenderQueryFilters (ClientPtr client)
int nnames;
ScreenPtr pScreen;
PictureScreenPtr ps;
- int i, j;
- int len;
- int total_bytes;
+ int i, j, len, total_bytes, rc;
INT16 *aliases;
char *names;
REQUEST_SIZE_MATCH(xRenderQueryFiltersReq);
- SECURITY_VERIFY_DRAWABLE(pDrawable, stuff->drawable, client, SecurityReadAccess);
+ rc = dixLookupDrawable(&pDrawable, stuff->drawable, client, 0,
+ DixReadAccess);
+ if (rc != Success)
+ return rc;
pScreen = pDrawable->pScreen;
nbytesName = 0;
@@ -1799,7 +1800,7 @@ ProcRenderSetPictureFilter (ClientPtr client)
char *name;
REQUEST_AT_LEAST_SIZE (xRenderSetPictureFilterReq);
- VERIFY_PICTURE (pPicture, stuff->picture, client, SecurityWriteAccess,
+ VERIFY_PICTURE (pPicture, stuff->picture, client, DixWriteAccess,
RenderErrBase + BadPicture);
name = (char *) (stuff + 1);
params = (xFixed *) (name + ((stuff->nbytes + 3) & ~3));
@@ -1833,7 +1834,7 @@ ProcRenderCreateAnimCursor (ClientPtr client)
for (i = 0; i < ncursor; i++)
{
cursors[i] = (CursorPtr)SecurityLookupIDByType(client, elt->cursor,
- RT_CURSOR, SecurityReadAccess);
+ RT_CURSOR, DixReadAccess);
if (!cursors[i])
{
xfree (cursors);
@@ -1861,7 +1862,7 @@ ProcRenderAddTraps (ClientPtr client)
REQUEST(xRenderAddTrapsReq);
REQUEST_AT_LEAST_SIZE(xRenderAddTrapsReq);
- VERIFY_PICTURE (pPicture, stuff->picture, client, SecurityWriteAccess,
+ VERIFY_PICTURE (pPicture, stuff->picture, client, DixWriteAccess,
RenderErrBase + BadPicture);
if (!pPicture->pDrawable)
return BadDrawable;
@@ -2616,7 +2617,7 @@ PanoramiXRenderCreatePicture (ClientPtr client)
REQUEST_AT_LEAST_SIZE(xRenderCreatePictureReq);
if(!(refDraw = (PanoramiXRes *)SecurityLookupIDByClass(
- client, stuff->drawable, XRC_DRAWABLE, SecurityWriteAccess)))
+ client, stuff->drawable, XRC_DRAWABLE, DixWriteAccess)))
return BadDrawable;
if(!(newPict = (PanoramiXRes *) xalloc(sizeof(PanoramiXRes))))
return BadAlloc;
@@ -2658,7 +2659,7 @@ PanoramiXRenderChangePicture (ClientPtr client)
REQUEST_AT_LEAST_SIZE(xChangeWindowAttributesReq);
- VERIFY_XIN_PICTURE(pict, stuff->picture, client, SecurityWriteAccess,
+ VERIFY_XIN_PICTURE(pict, stuff->picture, client, DixWriteAccess,
RenderErrBase + BadPicture);
FOR_NSCREENS_BACKWARD(j) {
@@ -2679,7 +2680,7 @@ PanoramiXRenderSetPictureClipRectangles (ClientPtr client)
REQUEST_AT_LEAST_SIZE(xRenderSetPictureClipRectanglesReq);
- VERIFY_XIN_PICTURE(pict, stuff->picture, client, SecurityWriteAccess,
+ VERIFY_XIN_PICTURE(pict, stuff->picture, client, DixWriteAccess,
RenderErrBase + BadPicture);
FOR_NSCREENS_BACKWARD(j) {
@@ -2700,7 +2701,7 @@ PanoramiXRenderSetPictureTransform (ClientPtr client)
REQUEST_AT_LEAST_SIZE(xRenderSetPictureTransformReq);
- VERIFY_XIN_PICTURE(pict, stuff->picture, client, SecurityWriteAccess,
+ VERIFY_XIN_PICTURE(pict, stuff->picture, client, DixWriteAccess,
RenderErrBase + BadPicture);
FOR_NSCREENS_BACKWARD(j) {
@@ -2721,7 +2722,7 @@ PanoramiXRenderSetPictureFilter (ClientPtr client)
REQUEST_AT_LEAST_SIZE(xRenderSetPictureFilterReq);
- VERIFY_XIN_PICTURE(pict, stuff->picture, client, SecurityWriteAccess,
+ VERIFY_XIN_PICTURE(pict, stuff->picture, client, DixWriteAccess,
RenderErrBase + BadPicture);
FOR_NSCREENS_BACKWARD(j) {
@@ -2744,7 +2745,7 @@ PanoramiXRenderFreePicture (ClientPtr client)
client->errorValue = stuff->picture;
- VERIFY_XIN_PICTURE(pict, stuff->picture, client, SecurityDestroyAccess,
+ VERIFY_XIN_PICTURE(pict, stuff->picture, client, DixDestroyAccess,
RenderErrBase + BadPicture);
@@ -2770,11 +2771,11 @@ PanoramiXRenderComposite (ClientPtr client)
REQUEST_SIZE_MATCH(xRenderCompositeReq);
- VERIFY_XIN_PICTURE (src, stuff->src, client, SecurityReadAccess,
+ VERIFY_XIN_PICTURE (src, stuff->src, client, DixReadAccess,
RenderErrBase + BadPicture);
- VERIFY_XIN_ALPHA (msk, stuff->mask, client, SecurityReadAccess,
+ VERIFY_XIN_ALPHA (msk, stuff->mask, client, DixReadAccess,
RenderErrBase + BadPicture);
- VERIFY_XIN_PICTURE (dst, stuff->dst, client, SecurityWriteAccess,
+ VERIFY_XIN_PICTURE (dst, stuff->dst, client, DixWriteAccess,
RenderErrBase + BadPicture);
orig = *stuff;
@@ -2818,9 +2819,9 @@ PanoramiXRenderCompositeGlyphs (ClientPtr client)
INT16 xSrc, ySrc;
REQUEST_AT_LEAST_SIZE(xRenderCompositeGlyphsReq);
- VERIFY_XIN_PICTURE (src, stuff->src, client, SecurityReadAccess,
+ VERIFY_XIN_PICTURE (src, stuff->src, client, DixReadAccess,
RenderErrBase + BadPicture);
- VERIFY_XIN_PICTURE (dst, stuff->dst, client, SecurityWriteAccess,
+ VERIFY_XIN_PICTURE (dst, stuff->dst, client, DixWriteAccess,
RenderErrBase + BadPicture);
if (client->req_len << 2 >= (sizeof (xRenderCompositeGlyphsReq) +
@@ -2861,7 +2862,7 @@ PanoramiXRenderFillRectangles (ClientPtr client)
int extra_len;
REQUEST_AT_LEAST_SIZE (xRenderFillRectanglesReq);
- VERIFY_XIN_PICTURE (dst, stuff->dst, client, SecurityWriteAccess,
+ VERIFY_XIN_PICTURE (dst, stuff->dst, client, DixWriteAccess,
RenderErrBase + BadPicture);
extra_len = (client->req_len << 2) - sizeof (xRenderFillRectanglesReq);
if (extra_len &&
@@ -2908,9 +2909,9 @@ PanoramiXRenderTrapezoids(ClientPtr client)
REQUEST_AT_LEAST_SIZE (xRenderTrapezoidsReq);
- VERIFY_XIN_PICTURE (src, stuff->src, client, SecurityReadAccess,
+ VERIFY_XIN_PICTURE (src, stuff->src, client, DixReadAccess,
RenderErrBase + BadPicture);
- VERIFY_XIN_PICTURE (dst, stuff->dst, client, SecurityWriteAccess,
+ VERIFY_XIN_PICTURE (dst, stuff->dst, client, DixWriteAccess,
RenderErrBase + BadPicture);
extra_len = (client->req_len << 2) - sizeof (xRenderTrapezoidsReq);
@@ -2970,9 +2971,9 @@ PanoramiXRenderTriangles(ClientPtr client)
REQUEST_AT_LEAST_SIZE (xRenderTrianglesReq);
- VERIFY_XIN_PICTURE (src, stuff->src, client, SecurityReadAccess,
+ VERIFY_XIN_PICTURE (src, stuff->src, client, DixReadAccess,
RenderErrBase + BadPicture);
- VERIFY_XIN_PICTURE (dst, stuff->dst, client, SecurityWriteAccess,
+ VERIFY_XIN_PICTURE (dst, stuff->dst, client, DixWriteAccess,
RenderErrBase + BadPicture);
extra_len = (client->req_len << 2) - sizeof (xRenderTrianglesReq);
@@ -3028,9 +3029,9 @@ PanoramiXRenderTriStrip(ClientPtr client)
REQUEST_AT_LEAST_SIZE (xRenderTriStripReq);
- VERIFY_XIN_PICTURE (src, stuff->src, client, SecurityReadAccess,
+ VERIFY_XIN_PICTURE (src, stuff->src, client, DixReadAccess,
RenderErrBase + BadPicture);
- VERIFY_XIN_PICTURE (dst, stuff->dst, client, SecurityWriteAccess,
+ VERIFY_XIN_PICTURE (dst, stuff->dst, client, DixWriteAccess,
RenderErrBase + BadPicture);
extra_len = (client->req_len << 2) - sizeof (xRenderTriStripReq);
@@ -3082,9 +3083,9 @@ PanoramiXRenderTriFan(ClientPtr client)
REQUEST_AT_LEAST_SIZE (xRenderTriFanReq);
- VERIFY_XIN_PICTURE (src, stuff->src, client, SecurityReadAccess,
+ VERIFY_XIN_PICTURE (src, stuff->src, client, DixReadAccess,
RenderErrBase + BadPicture);
- VERIFY_XIN_PICTURE (dst, stuff->dst, client, SecurityWriteAccess,
+ VERIFY_XIN_PICTURE (dst, stuff->dst, client, DixWriteAccess,
RenderErrBase + BadPicture);
extra_len = (client->req_len << 2) - sizeof (xRenderTriFanReq);
@@ -3138,7 +3139,7 @@ PanoramiXRenderColorTrapezoids(ClientPtr client)
REQUEST_AT_LEAST_SIZE (xRenderColorTrapezoidsReq);
- VERIFY_XIN_PICTURE (dst, stuff->dst, client, SecurityWriteAccess,
+ VERIFY_XIN_PICTURE (dst, stuff->dst, client, DixWriteAccess,
RenderErrBase + BadPicture);
extra_len = (client->req_len << 2) - sizeof (xRenderColorTrapezoidsReq);
@@ -3182,7 +3183,7 @@ PanoramiXRenderColorTriangles(ClientPtr client)
REQUEST_AT_LEAST_SIZE (xRenderColorTrianglesReq);
- VERIFY_XIN_PICTURE (dst, stuff->dst, client, SecurityWriteAccess,
+ VERIFY_XIN_PICTURE (dst, stuff->dst, client, DixWriteAccess,
RenderErrBase + BadPicture);
extra_len = (client->req_len << 2) - sizeof (xRenderColorTrianglesReq);
@@ -3228,7 +3229,7 @@ PanoramiXRenderAddTraps (ClientPtr client)
INT16 x_off, y_off;
REQUEST_AT_LEAST_SIZE (xRenderAddTrapsReq);
- VERIFY_XIN_PICTURE (picture, stuff->picture, client, SecurityWriteAccess,
+ VERIFY_XIN_PICTURE (picture, stuff->picture, client, DixWriteAccess,
RenderErrBase + BadPicture);
extra_len = (client->req_len << 2) - sizeof (xRenderAddTrapsReq);
if (extra_len &&
diff --git a/xfixes/Makefile.am b/xfixes/Makefile.am
index a9ba7623a..2a95c065b 100644
--- a/xfixes/Makefile.am
+++ b/xfixes/Makefile.am
@@ -1,6 +1,6 @@
noinst_LTLIBRARIES = libxfixes.la
-AM_CFLAGS = $(DIX_CFLAGS) @SERVER_DEFINES@ @LOADER_DEFINES@
+AM_CFLAGS = $(DIX_CFLAGS)
libxfixes_la_SOURCES = \
cursor.c \
diff --git a/xfixes/cursor.c b/xfixes/cursor.c
index c75e74442..86a512c25 100755
--- a/xfixes/cursor.c
+++ b/xfixes/cursor.c
@@ -239,12 +239,12 @@ ProcXFixesSelectCursorInput (ClientPtr client)
{
REQUEST (xXFixesSelectCursorInputReq);
WindowPtr pWin;
+ int rc;
REQUEST_SIZE_MATCH (xXFixesSelectCursorInputReq);
- pWin = (WindowPtr)SecurityLookupWindow(stuff->window, client,
- SecurityReadAccess);
- if (!pWin)
- return(BadWindow);
+ rc = dixLookupWindow(&pWin, stuff->window, client, DixReadAccess);
+ if (rc != Success)
+ return rc;
if (stuff->eventMask & ~CursorAllEvents)
{
client->errorValue = stuff->eventMask;
@@ -415,7 +415,7 @@ ProcXFixesSetCursorName (ClientPtr client)
Atom atom;
REQUEST_AT_LEAST_SIZE(xXFixesSetCursorNameReq);
- VERIFY_CURSOR(pCursor, stuff->cursor, client, SecurityWriteAccess);
+ VERIFY_CURSOR(pCursor, stuff->cursor, client, DixWriteAccess);
tchar = (char *) &stuff[1];
atom = MakeAtom (tchar, stuff->nbytes, TRUE);
if (atom == BAD_RESOURCE)
@@ -448,7 +448,7 @@ ProcXFixesGetCursorName (ClientPtr client)
int len;
REQUEST_SIZE_MATCH(xXFixesGetCursorNameReq);
- VERIFY_CURSOR(pCursor, stuff->cursor, client, SecurityReadAccess);
+ VERIFY_CURSOR(pCursor, stuff->cursor, client, DixReadAccess);
if (pCursor->name)
str = NameForAtom (pCursor->name);
else
@@ -679,8 +679,8 @@ ProcXFixesChangeCursor (ClientPtr client)
REQUEST(xXFixesChangeCursorReq);
REQUEST_SIZE_MATCH(xXFixesChangeCursorReq);
- VERIFY_CURSOR (pSource, stuff->source, client, SecurityReadAccess);
- VERIFY_CURSOR (pDestination, stuff->destination, client, SecurityWriteAccess);
+ VERIFY_CURSOR (pSource, stuff->source, client, DixReadAccess);
+ VERIFY_CURSOR (pDestination, stuff->destination, client, DixWriteAccess);
ReplaceCursor (pSource, TestForCursor, (pointer) pDestination);
return (client->noClientException);
@@ -714,7 +714,7 @@ ProcXFixesChangeCursorByName (ClientPtr client)
REQUEST(xXFixesChangeCursorByNameReq);
REQUEST_FIXED_SIZE(xXFixesChangeCursorByNameReq, stuff->nbytes);
- VERIFY_CURSOR(pSource, stuff->source, client, SecurityReadAccess);
+ VERIFY_CURSOR(pSource, stuff->source, client, DixReadAccess);
tchar = (char *) &stuff[1];
name = MakeAtom (tchar, stuff->nbytes, FALSE);
if (name)
diff --git a/xfixes/region.c b/xfixes/region.c
index 68c701553..91e9fc9c1 100755
--- a/xfixes/region.c
+++ b/xfixes/region.c
@@ -118,7 +118,7 @@ ProcXFixesCreateRegionFromBitmap (ClientPtr client)
pPixmap = (PixmapPtr) SecurityLookupIDByType (client, stuff->bitmap,
RT_PIXMAP,
- SecurityReadAccess);
+ DixReadAccess);
if (!pPixmap)
{
client->errorValue = stuff->bitmap;
@@ -220,12 +220,15 @@ ProcXFixesCreateRegionFromGC (ClientPtr client)
{
RegionPtr pRegion, pClip;
GCPtr pGC;
+ int rc;
REQUEST (xXFixesCreateRegionFromGCReq);
REQUEST_SIZE_MATCH (xXFixesCreateRegionFromGCReq);
LEGAL_NEW_RESOURCE (stuff->region, client);
- SECURITY_VERIFY_GC(pGC, stuff->gc, client, SecurityReadAccess);
+ rc = dixLookupGC(&pGC, stuff->gc, client, DixReadAccess);
+ if (rc != Success)
+ return rc;
switch (pGC->clientClipType) {
case CT_PIXMAP:
@@ -273,7 +276,7 @@ ProcXFixesCreateRegionFromPicture (ClientPtr client)
REQUEST_SIZE_MATCH (xXFixesCreateRegionFromPictureReq);
LEGAL_NEW_RESOURCE (stuff->region, client);
- VERIFY_PICTURE(pPicture, stuff->picture, client, SecurityReadAccess,
+ VERIFY_PICTURE(pPicture, stuff->picture, client, DixReadAccess,
RenderErrBase + BadPicture);
switch (pPicture->clientClipType) {
@@ -321,7 +324,7 @@ ProcXFixesDestroyRegion (ClientPtr client)
RegionPtr pRegion;
REQUEST_SIZE_MATCH(xXFixesDestroyRegionReq);
- VERIFY_REGION(pRegion, stuff->region, client, SecurityWriteAccess);
+ VERIFY_REGION(pRegion, stuff->region, client, DixWriteAccess);
FreeResource (stuff->region, RT_NONE);
return(client->noClientException);
}
@@ -346,7 +349,7 @@ ProcXFixesSetRegion (ClientPtr client)
REQUEST (xXFixesSetRegionReq);
REQUEST_AT_LEAST_SIZE(xXFixesSetRegionReq);
- VERIFY_REGION(pRegion, stuff->region, client, SecurityWriteAccess);
+ VERIFY_REGION(pRegion, stuff->region, client, DixWriteAccess);
things = (client->req_len << 2) - sizeof (xXFixesCreateRegionReq);
if (things & 4)
@@ -384,8 +387,8 @@ ProcXFixesCopyRegion (ClientPtr client)
RegionPtr pSource, pDestination;
REQUEST (xXFixesCopyRegionReq);
- VERIFY_REGION(pSource, stuff->source, client, SecurityReadAccess);
- VERIFY_REGION(pDestination, stuff->destination, client, SecurityWriteAccess);
+ VERIFY_REGION(pSource, stuff->source, client, DixReadAccess);
+ VERIFY_REGION(pDestination, stuff->destination, client, DixWriteAccess);
if (!REGION_COPY(pScreen, pDestination, pSource))
return BadAlloc;
@@ -414,9 +417,9 @@ ProcXFixesCombineRegion (ClientPtr client)
REQUEST (xXFixesCombineRegionReq);
REQUEST_SIZE_MATCH (xXFixesCombineRegionReq);
- VERIFY_REGION(pSource1, stuff->source1, client, SecurityReadAccess);
- VERIFY_REGION(pSource2, stuff->source2, client, SecurityReadAccess);
- VERIFY_REGION(pDestination, stuff->destination, client, SecurityWriteAccess);
+ VERIFY_REGION(pSource1, stuff->source1, client, DixReadAccess);
+ VERIFY_REGION(pSource2, stuff->source2, client, DixReadAccess);
+ VERIFY_REGION(pDestination, stuff->destination, client, DixWriteAccess);
switch (stuff->xfixesReqType) {
case X_XFixesUnionRegion:
@@ -461,8 +464,8 @@ ProcXFixesInvertRegion (ClientPtr client)
REQUEST(xXFixesInvertRegionReq);
REQUEST_SIZE_MATCH(xXFixesInvertRegionReq);
- VERIFY_REGION(pSource, stuff->source, client, SecurityReadAccess);
- VERIFY_REGION(pDestination, stuff->destination, client, SecurityWriteAccess);
+ VERIFY_REGION(pSource, stuff->source, client, DixReadAccess);
+ VERIFY_REGION(pDestination, stuff->destination, client, DixWriteAccess);
/* Compute bounds, limit to 16 bits */
bounds.x1 = stuff->x;
@@ -509,7 +512,7 @@ ProcXFixesTranslateRegion (ClientPtr client)
REQUEST(xXFixesTranslateRegionReq);
REQUEST_SIZE_MATCH(xXFixesTranslateRegionReq);
- VERIFY_REGION(pRegion, stuff->region, client, SecurityWriteAccess);
+ VERIFY_REGION(pRegion, stuff->region, client, DixWriteAccess);
REGION_TRANSLATE(pScreen, pRegion, stuff->dx, stuff->dy);
return (client->noClientException);
@@ -536,8 +539,8 @@ ProcXFixesRegionExtents (ClientPtr client)
REQUEST(xXFixesRegionExtentsReq);
REQUEST_SIZE_MATCH(xXFixesRegionExtentsReq);
- VERIFY_REGION(pSource, stuff->source, client, SecurityReadAccess);
- VERIFY_REGION(pDestination, stuff->destination, client, SecurityWriteAccess);
+ VERIFY_REGION(pSource, stuff->source, client, DixReadAccess);
+ VERIFY_REGION(pDestination, stuff->destination, client, DixWriteAccess);
REGION_RESET (0, pDestination, REGION_EXTENTS (0, pSource));
@@ -569,7 +572,7 @@ ProcXFixesFetchRegion (ClientPtr client)
REQUEST(xXFixesFetchRegionReq);
REQUEST_SIZE_MATCH(xXFixesFetchRegionReq);
- VERIFY_REGION(pRegion, stuff->region, client, SecurityReadAccess);
+ VERIFY_REGION(pRegion, stuff->region, client, DixReadAccess);
pExtent = REGION_EXTENTS (0, pRegion);
pBox = REGION_RECTS (pRegion);
@@ -630,11 +633,15 @@ ProcXFixesSetGCClipRegion (ClientPtr client)
GCPtr pGC;
RegionPtr pRegion;
XID vals[2];
+ int rc;
REQUEST(xXFixesSetGCClipRegionReq);
-
REQUEST_SIZE_MATCH(xXFixesSetGCClipRegionReq);
- SECURITY_VERIFY_GC(pGC, stuff->gc, client, SecurityWriteAccess);
- VERIFY_REGION_OR_NONE (pRegion, stuff->region, client, SecurityReadAccess);
+
+ rc = dixLookupGC(&pGC, stuff->gc, client, DixWriteAccess);
+ if (rc != Success)
+ return rc;
+
+ VERIFY_REGION_OR_NONE (pRegion, stuff->region, client, DixReadAccess);
if (pRegion)
{
@@ -685,7 +692,7 @@ ProcXFixesSetWindowShapeRegion (ClientPtr client)
client->errorValue = stuff->dest;
return BadWindow;
}
- VERIFY_REGION_OR_NONE(pRegion, stuff->region, client, SecurityWriteAccess);
+ VERIFY_REGION_OR_NONE(pRegion, stuff->region, client, DixWriteAccess);
pScreen = pWin->drawable.pScreen;
switch (stuff->destKind) {
case ShapeBounding:
@@ -775,11 +782,11 @@ ProcXFixesSetPictureClipRegion (ClientPtr client)
REQUEST(xXFixesSetPictureClipRegionReq);
REQUEST_SIZE_MATCH (xXFixesSetPictureClipRegionReq);
- VERIFY_PICTURE(pPicture, stuff->picture, client, SecurityWriteAccess,
+ VERIFY_PICTURE(pPicture, stuff->picture, client, DixWriteAccess,
RenderErrBase + BadPicture);
pScreen = pPicture->pDrawable->pScreen;
ps = GetPictureScreen (pScreen);
- VERIFY_REGION_OR_NONE(pRegion, stuff->region, client, SecurityReadAccess);
+ VERIFY_REGION_OR_NONE(pRegion, stuff->region, client, DixReadAccess);
return SetPictureClipRegion (pPicture, stuff->xOrigin, stuff->yOrigin,
pRegion);
@@ -815,8 +822,8 @@ ProcXFixesExpandRegion (ClientPtr client)
int i;
REQUEST_SIZE_MATCH (xXFixesExpandRegionReq);
- VERIFY_REGION(pSource, stuff->source, client, SecurityReadAccess);
- VERIFY_REGION(pDestination, stuff->destination, client, SecurityWriteAccess);
+ VERIFY_REGION(pSource, stuff->source, client, DixReadAccess);
+ VERIFY_REGION(pDestination, stuff->destination, client, DixWriteAccess);
nBoxes = REGION_NUM_RECTS(pSource);
pSrc = REGION_RECTS(pSource);
diff --git a/xfixes/saveset.c b/xfixes/saveset.c
index 9ebf24584..ab75619e8 100755
--- a/xfixes/saveset.c
+++ b/xfixes/saveset.c
@@ -37,10 +37,9 @@ ProcXFixesChangeSaveSet(ClientPtr client)
REQUEST(xXFixesChangeSaveSetReq);
REQUEST_SIZE_MATCH(xXFixesChangeSaveSetReq);
- pWin = (WindowPtr)SecurityLookupWindow(stuff->window, client,
- SecurityReadAccess);
- if (!pWin)
- return(BadWindow);
+ result = dixLookupWindow(&pWin, stuff->window, client, DixReadAccess);
+ if (result != Success)
+ return result;
if (client->clientAsMask == (CLIENT_BITS(pWin->drawable.id)))
return BadMatch;
if ((stuff->mode != SetModeInsert) && (stuff->mode != SetModeDelete))
diff --git a/xfixes/select.c b/xfixes/select.c
index 4c7a49def..d1c22c552 100755
--- a/xfixes/select.c
+++ b/xfixes/select.c
@@ -193,12 +193,12 @@ ProcXFixesSelectSelectionInput (ClientPtr client)
{
REQUEST (xXFixesSelectSelectionInputReq);
WindowPtr pWin;
+ int rc;
REQUEST_SIZE_MATCH (xXFixesSelectSelectionInputReq);
- pWin = (WindowPtr)SecurityLookupWindow(stuff->window, client,
- SecurityReadAccess);
- if (!pWin)
- return(BadWindow);
+ rc = dixLookupWindow(&pWin, stuff->window, client, DixReadAccess);
+ if (rc != Success)
+ return rc;
if (stuff->eventMask & ~SelectionAllEvents)
{
client->errorValue = stuff->eventMask;
diff --git a/xfixes/xfixes.c b/xfixes/xfixes.c
index a0e656dd8..cee9e096d 100755
--- a/xfixes/xfixes.c
+++ b/xfixes/xfixes.c
@@ -48,6 +48,13 @@
#include "xfixesint.h"
+/*
+ * Must use these instead of the constants from xfixeswire.h. They advertise
+ * what we implement, not what the protocol headers define.
+ */
+#define SERVER_XFIXES_MAJOR 4
+#define SERVER_XFIXES_MINOR 0
+
unsigned char XFixesReqCode;
int XFixesEventBase;
int XFixesErrorBase;
@@ -65,16 +72,16 @@ ProcXFixesQueryVersion(ClientPtr client)
rep.type = X_Reply;
rep.length = 0;
rep.sequenceNumber = client->sequence;
- if (stuff->majorVersion < XFIXES_MAJOR) {
+ if (stuff->majorVersion < SERVER_XFIXES_MAJOR) {
rep.majorVersion = stuff->majorVersion;
rep.minorVersion = stuff->minorVersion;
} else {
- rep.majorVersion = XFIXES_MAJOR;
- if (stuff->majorVersion == XFIXES_MAJOR &&
- stuff->minorVersion < XFIXES_MINOR)
+ rep.majorVersion = SERVER_XFIXES_MAJOR;
+ if (stuff->majorVersion == SERVER_XFIXES_MAJOR &&
+ stuff->minorVersion < SERVER_XFIXES_MINOR)
rep.minorVersion = stuff->minorVersion;
else
- rep.minorVersion = XFIXES_MINOR;
+ rep.minorVersion = SERVER_XFIXES_MINOR;
}
pXFixesClient->major_version = rep.majorVersion;
pXFixesClient->minor_version = rep.minorVersion;
diff --git a/xkb/Makefile.am b/xkb/Makefile.am
index 1669d882b..996d52761 100644
--- a/xkb/Makefile.am
+++ b/xkb/Makefile.am
@@ -1,6 +1,6 @@
noinst_LTLIBRARIES = libxkb.la libxkbstubs.la
-AM_CFLAGS = $(DIX_CFLAGS) @SERVER_DEFINES@ @LOADER_DEFINES@ \
+AM_CFLAGS = $(DIX_CFLAGS) \
-DHAVE_XKB_CONFIG_H
DDX_SRCS = \
@@ -30,8 +30,10 @@ DIX_SRCS = \
XKBFILE_SRCS = \
maprules.c \
xkmread.c \
+ xkbtext.c \
xkbfmisc.c \
- xkberrs.c
+ xkberrs.c \
+ xkbout.c
X11_SRCS = \
XKBMisc.c \
diff --git a/xkb/XKBAlloc.c b/xkb/XKBAlloc.c
index 8f1f1157c..c474733d0 100644
--- a/xkb/XKBAlloc.c
+++ b/xkb/XKBAlloc.c
@@ -1,4 +1,3 @@
-/* $Xorg: XKBAlloc.c,v 1.4 2000/08/17 19:44:59 cpqbld Exp $ */
/************************************************************
Copyright (c) 1993 by Silicon Graphics Computer Systems, Inc.
@@ -24,7 +23,6 @@ OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH
THE USE OR PERFORMANCE OF THIS SOFTWARE.
********************************************************/
-/* $XFree86: xc/lib/X11/XKBAlloc.c,v 3.5 2001/01/17 19:41:48 dawes Exp $ */
#ifdef HAVE_DIX_CONFIG_H
#include <dix-config.h>
@@ -326,8 +324,11 @@ XkbFreeKeyboard(XkbDescPtr xkb,unsigned which,Bool freeAll)
XkbFreeIndicatorMaps(xkb);
if (which&XkbNamesMask)
XkbFreeNames(xkb,XkbAllNamesMask,True);
- if ((which&XkbGeometryMask) && (xkb->geom!=NULL))
+ if ((which&XkbGeometryMask) && (xkb->geom!=NULL)) {
XkbFreeGeometry(xkb->geom,XkbGeomAllMask,True);
+ /* PERHAPS BONGHITS etc */
+ xkb->geom = NULL;
+ }
if (which&XkbControlsMask)
XkbFreeControls(xkb,XkbAllControlsMask,True);
if (freeAll)
diff --git a/xkb/XKBGAlloc.c b/xkb/XKBGAlloc.c
index 3be32da9d..edaed10f3 100644
--- a/xkb/XKBGAlloc.c
+++ b/xkb/XKBGAlloc.c
@@ -1,4 +1,3 @@
-/* $Xorg: XKBGAlloc.c,v 1.3 2000/08/17 19:45:01 cpqbld Exp $ */
/************************************************************
Copyright (c) 1993 by Silicon Graphics Computer Systems, Inc.
@@ -24,7 +23,6 @@ OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH
THE USE OR PERFORMANCE OF THIS SOFTWARE.
********************************************************/
-/* $XFree86: xc/lib/X11/XKBGAlloc.c,v 3.4 2001/01/17 19:41:48 dawes Exp $ */
#ifdef HAVE_DIX_CONFIG_H
#include <dix-config.h>
diff --git a/xkb/XKBMAlloc.c b/xkb/XKBMAlloc.c
index ce79ef090..ef4097dad 100644
--- a/xkb/XKBMAlloc.c
+++ b/xkb/XKBMAlloc.c
@@ -1,4 +1,3 @@
-/* $Xorg: XKBMAlloc.c,v 1.4 2000/08/17 19:45:02 cpqbld Exp $ */
/************************************************************
Copyright (c) 1993 by Silicon Graphics Computer Systems, Inc.
@@ -24,7 +23,6 @@ OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH
THE USE OR PERFORMANCE OF THIS SOFTWARE.
********************************************************/
-/* $XFree86: xc/lib/X11/XKBMAlloc.c,v 3.11 2001/01/17 19:41:48 dawes Exp $ */
#ifdef HAVE_DIX_CONFIG_H
#include <dix-config.h>
diff --git a/xkb/XKBMisc.c b/xkb/XKBMisc.c
index 8157a3f9d..7ed47697e 100644
--- a/xkb/XKBMisc.c
+++ b/xkb/XKBMisc.c
@@ -1,4 +1,3 @@
-/* $Xorg: XKBMisc.c,v 1.4 2000/08/17 19:45:02 cpqbld Exp $ */
/************************************************************
Copyright (c) 1993 by Silicon Graphics Computer Systems, Inc.
@@ -24,7 +23,6 @@ OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH
THE USE OR PERFORMANCE OF THIS SOFTWARE.
********************************************************/
-/* $XFree86: xc/lib/X11/XKBMisc.c,v 3.5 2001/10/28 03:32:33 tsi Exp $ */
#ifdef HAVE_DIX_CONFIG_H
#include <dix-config.h>
diff --git a/xkb/ddxBeep.c b/xkb/ddxBeep.c
index 429d1e778..53f3a6f9c 100644
--- a/xkb/ddxBeep.c
+++ b/xkb/ddxBeep.c
@@ -1,4 +1,3 @@
-/* $Xorg: ddxBeep.c,v 1.3 2000/08/17 19:53:45 cpqbld Exp $ */
/************************************************************
Copyright (c) 1993 by Silicon Graphics Computer Systems, Inc.
@@ -24,7 +23,6 @@ OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH
THE USE OR PERFORMANCE OF THIS SOFTWARE.
********************************************************/
-/* $XFree86: xc/programs/Xserver/xkb/ddxBeep.c,v 3.9 2002/12/05 21:59:00 paulo Exp $ */
#ifdef HAVE_DIX_CONFIG_H
#include <dix-config.h>
@@ -41,12 +39,6 @@ THE USE OR PERFORMANCE OF THIS SOFTWARE.
#include <X11/extensions/XKBsrv.h>
#include <X11/extensions/XI.h>
-#if (defined(__osf__) && defined(__alpha))
-#include <sys/sysinfo.h>
-#include <alpha/hal_sysinfo.h>
-#include <alpha/prom.h>
-#endif
-
/*#define FALLING_TONE 1*/
/*#define RISING_TONE 1*/
#define FALLING_TONE 10
@@ -118,32 +110,6 @@ _XkbDDXBeepInitAtoms(void)
stickyLock= MAKE_ATOM(STICKY_LOCK);
stickyUnlock= MAKE_ATOM(STICKY_UNLOCK);
bounceReject= MAKE_ATOM(BOUNCE_REJECT);
-#if (defined(__osf__) && defined(__alpha))
- /* [[[ WDW - Some bells do not allow for pitch changes.
- * Maybe this could become part of the keymap? ]]]
- */
- {
- char keyboard[8];
-
- /* Find the class of keyboard being used.
- */
- keyboard[0] = '\0';
- if (-1 == getsysinfo(GSI_KEYBOARD,
- keyboard, sizeof(keyboard),
- 0, NULL))
- keyboard[0] = '\0';
-
- if ((strcmp(keyboard,"LK201") == 0) ||
- (strcmp(keyboard,"LK401") == 0) ||
- (strcmp(keyboard,"LK421") == 0) ||
- (strcmp(keyboard,"LK443") == 0))
- doesPitch = 0;
- }
-#else
-#if defined(sun)
- doesPitch = 0;
-#endif
-#endif
return;
}
diff --git a/xkb/ddxCtrls.c b/xkb/ddxCtrls.c
index 2e4e106ce..5a9ad4018 100644
--- a/xkb/ddxCtrls.c
+++ b/xkb/ddxCtrls.c
@@ -1,4 +1,3 @@
-/* $Xorg: ddxCtrls.c,v 1.3 2000/08/17 19:53:45 cpqbld Exp $ */
/************************************************************
Copyright (c) 1993 by Silicon Graphics Computer Systems, Inc.
@@ -24,7 +23,6 @@ OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH
THE USE OR PERFORMANCE OF THIS SOFTWARE.
********************************************************/
-/* $XFree86: xc/programs/Xserver/xkb/ddxCtrls.c,v 1.3 2001/01/17 22:37:14 dawes Exp $ */
#ifdef HAVE_DIX_CONFIG_H
#include <dix-config.h>
diff --git a/xkb/ddxDevBtn.c b/xkb/ddxDevBtn.c
index d0e37f263..3de8f8721 100644
--- a/xkb/ddxDevBtn.c
+++ b/xkb/ddxDevBtn.c
@@ -1,4 +1,3 @@
-/* $Xorg: ddxDevBtn.c,v 1.3 2000/08/17 19:53:45 cpqbld Exp $ */
/************************************************************
Copyright (c) 1995 by Silicon Graphics Computer Systems, Inc.
@@ -24,7 +23,6 @@ OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH
THE USE OR PERFORMANCE OF THIS SOFTWARE.
********************************************************/
-/* $XFree86: xc/programs/Xserver/xkb/ddxDevBtn.c,v 3.3 2001/08/23 21:49:51 tsi Exp $ */
#ifdef HAVE_DIX_CONFIG_H
#include <dix-config.h>
diff --git a/xkb/ddxFakeBtn.c b/xkb/ddxFakeBtn.c
index 73c8a2415..f7b746b05 100644
--- a/xkb/ddxFakeBtn.c
+++ b/xkb/ddxFakeBtn.c
@@ -1,4 +1,3 @@
-/* $Xorg: ddxFakeBtn.c,v 1.3 2000/08/17 19:53:45 cpqbld Exp $ */
/************************************************************
Copyright (c) 1993 by Silicon Graphics Computer Systems, Inc.
diff --git a/xkb/ddxFakeMtn.c b/xkb/ddxFakeMtn.c
index be5324d0f..a19819fd7 100644
--- a/xkb/ddxFakeMtn.c
+++ b/xkb/ddxFakeMtn.c
@@ -1,5 +1,3 @@
-/* $XdotOrg: xc/programs/Xserver/xkb/ddxFakeMtn.c,v 1.3 2005/04/20 12:25:48 daniels Exp $ */
-/* $Xorg: ddxFakeMtn.c,v 1.3 2000/08/17 19:53:45 cpqbld Exp $ */
/************************************************************
Copyright (c) 1993 by Silicon Graphics Computer Systems, Inc.
@@ -25,7 +23,6 @@ OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH
THE USE OR PERFORMANCE OF THIS SOFTWARE.
********************************************************/
-/* $XFree86: xc/programs/Xserver/xkb/ddxFakeMtn.c,v 1.5 2003/09/13 16:39:01 dawes Exp $ */
#ifdef HAVE_DIX_CONFIG_H
#include <dix-config.h>
diff --git a/xkb/ddxInit.c b/xkb/ddxInit.c
index 8b76b7cb1..88c488c22 100644
--- a/xkb/ddxInit.c
+++ b/xkb/ddxInit.c
@@ -1,4 +1,3 @@
-/* $Xorg: ddxInit.c,v 1.3 2000/08/17 19:53:45 cpqbld Exp $ */
/************************************************************
Copyright (c) 1993 by Silicon Graphics Computer Systems, Inc.
diff --git a/xkb/ddxKeyClick.c b/xkb/ddxKeyClick.c
index c940e5321..528b20207 100644
--- a/xkb/ddxKeyClick.c
+++ b/xkb/ddxKeyClick.c
@@ -1,4 +1,3 @@
-/* $Xorg: ddxKeyClick.c,v 1.3 2000/08/17 19:53:46 cpqbld Exp $ */
/************************************************************
Copyright (c) 1993 by Silicon Graphics Computer Systems, Inc.
diff --git a/xkb/ddxKillSrv.c b/xkb/ddxKillSrv.c
index 3dc31a433..95d75897b 100644
--- a/xkb/ddxKillSrv.c
+++ b/xkb/ddxKillSrv.c
@@ -1,4 +1,3 @@
-/* $Xorg: ddxKillSrv.c,v 1.3 2000/08/17 19:53:46 cpqbld Exp $ */
/************************************************************
Copyright (c) 1993 by Silicon Graphics Computer Systems, Inc.
@@ -24,7 +23,6 @@ OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH
THE USE OR PERFORMANCE OF THIS SOFTWARE.
********************************************************/
-/* $XFree86: xc/programs/Xserver/xkb/ddxKillSrv.c,v 1.3 2002/11/23 19:27:50 tsi Exp $ */
#ifdef HAVE_DIX_CONFIG_H
#include <dix-config.h>
diff --git a/xkb/ddxLEDs.c b/xkb/ddxLEDs.c
index fb5f72bf8..fd0195882 100644
--- a/xkb/ddxLEDs.c
+++ b/xkb/ddxLEDs.c
@@ -1,4 +1,3 @@
-/* $Xorg: ddxLEDs.c,v 1.3 2000/08/17 19:53:46 cpqbld Exp $ */
/************************************************************
Copyright (c) 1993 by Silicon Graphics Computer Systems, Inc.
diff --git a/xkb/ddxList.c b/xkb/ddxList.c
index 5d8366eba..034f694ed 100644
--- a/xkb/ddxList.c
+++ b/xkb/ddxList.c
@@ -1,4 +1,3 @@
-/* $Xorg: ddxList.c,v 1.3 2000/08/17 19:53:46 cpqbld Exp $ */
/************************************************************
Copyright (c) 1995 by Silicon Graphics Computer Systems, Inc.
@@ -24,7 +23,6 @@ OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH
THE USE OR PERFORMANCE OF THIS SOFTWARE.
********************************************************/
-/* $XFree86: xc/programs/Xserver/xkb/ddxList.c,v 3.8 2003/07/16 01:39:05 dawes Exp $ */
#ifdef HAVE_DIX_CONFIG_H
#include <dix-config.h>
@@ -271,7 +269,7 @@ char tmpname[PATH_MAX];
#ifndef WIN32
if (haveDir)
fclose(in);
- else if ((rval=pclose(in))!=0) {
+ else if ((rval=Pclose(in))!=0) {
if (xkbDebugFlags)
ErrorF("xkbcomp returned exit code %d\n",rval);
}
diff --git a/xkb/ddxLoad.c b/xkb/ddxLoad.c
index e355b1796..6e8f8921c 100644
--- a/xkb/ddxLoad.c
+++ b/xkb/ddxLoad.c
@@ -1,4 +1,3 @@
-/* $Xorg: ddxLoad.c,v 1.3 2000/08/17 19:53:46 cpqbld Exp $ */
/************************************************************
Copyright (c) 1993 by Silicon Graphics Computer Systems, Inc.
@@ -24,7 +23,6 @@ OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH
THE USE OR PERFORMANCE OF THIS SOFTWARE.
********************************************************/
-/* $XFree86: xc/programs/Xserver/xkb/ddxLoad.c,v 3.35 2003/10/02 13:30:12 eich Exp $ */
#ifdef HAVE_DIX_CONFIG_H
#include <dix-config.h>
@@ -405,30 +403,6 @@ char tmpname[PATH_MAX];
strncpy(nameRtrn,keymap,nameRtrnLen);
nameRtrn[nameRtrnLen-1]= '\0';
}
-#if defined(Lynx) && defined(__i386__) && defined(NEED_POPEN_WORKAROUND)
- /* somehow popen/pclose is broken on LynxOS AT 2.3.0/2.4.0!
- * the problem usually shows up with XF86Setup
- * this hack waits at max 5 seconds after pclose() returns
- * for the output of the xkbcomp output file.
- * I didn't manage to get a patch in time for the 3.2 release
- */
- {
- int i;
- char name[PATH_MAX];
- if (XkbBaseDirectory!=NULL)
- sprintf(name,"%s/%s%s.xkm", XkbBaseDirectory
- ,xkm_output_dir, keymap);
- else
- sprintf(name,"%s%s.xkm", xkm_output_dir, keymap);
- for (i = 0; i < 10; i++) {
- if (access(name, 0) == 0) break;
- usleep(500000);
- }
-#ifdef DEBUG
- if (i) ErrorF(">>>> Waited %d times for %s\n", i, name);
-#endif
- }
-#endif
if (buf != NULL)
xfree (buf);
return True;
diff --git a/xkb/ddxPrivate.c b/xkb/ddxPrivate.c
index 22d9d79fe..7450b47ba 100644
--- a/xkb/ddxPrivate.c
+++ b/xkb/ddxPrivate.c
@@ -1,4 +1,3 @@
-/* $XFree86: xc/programs/Xserver/xkb/ddxPrivate.c,v 1.2 2003/04/03 16:20:22 dawes Exp $ */
#ifdef HAVE_DIX_CONFIG_H
#include <dix-config.h>
diff --git a/xkb/ddxVT.c b/xkb/ddxVT.c
index ae46850e0..f56f0796d 100644
--- a/xkb/ddxVT.c
+++ b/xkb/ddxVT.c
@@ -1,4 +1,3 @@
-/* $Xorg: ddxVT.c,v 1.3 2000/08/17 19:53:46 cpqbld Exp $ */
/************************************************************
Copyright (c) 1993 by Silicon Graphics Computer Systems, Inc.
@@ -24,7 +23,6 @@ OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH
THE USE OR PERFORMANCE OF THIS SOFTWARE.
********************************************************/
-/* $XFree86: xc/programs/Xserver/xkb/ddxVT.c,v 1.3 2002/11/23 19:27:50 tsi Exp $ */
#ifdef HAVE_DIX_CONFIG_H
#include <dix-config.h>
diff --git a/xkb/maprules.c b/xkb/maprules.c
index d4e982920..b0a2225e2 100644
--- a/xkb/maprules.c
+++ b/xkb/maprules.c
@@ -1,4 +1,3 @@
-/* $Xorg: maprules.c,v 1.4 2000/08/17 19:46:43 cpqbld Exp $ */
/************************************************************
Copyright (c) 1996 by Silicon Graphics Computer Systems, Inc.
@@ -24,7 +23,6 @@
THE USE OR PERFORMANCE OF THIS SOFTWARE.
********************************************************/
-/* $XFree86: xc/lib/xkbfile/maprules.c,v 3.17 2002/11/26 01:43:25 dawes Exp $ */
#ifdef HAVE_DIX_CONFIG_H
#include <dix-config.h>
@@ -62,12 +60,6 @@
#define PR_DEBUG2(s,a,b)
#endif
-#ifdef NEED_STRCASECMP
-extern int _XkbStrCaseCmp(char *s1, char *s2);
-#else
-#define _XkbStrCaseCmp strcasecmp
-#endif
-
/***====================================================================***/
#define DFLT_LINE_SIZE 128
@@ -1092,20 +1084,20 @@ int len,headingtype,extra_ndx = 0;
for ( ; GetInputLine(file,&line,False); line.num_line= 0) {
if (line.line[0]=='!') {
tok = strtok(&(line.line[1]), " \t");
- if (_XkbStrCaseCmp(tok,"model") == 0)
+ if (strcasecmp(tok,"model") == 0)
headingtype = HEAD_MODEL;
- else if (_XkbStrCaseCmp(tok,"layout") == 0)
+ else if (strcasecmp(tok,"layout") == 0)
headingtype = HEAD_LAYOUT;
- else if (_XkbStrCaseCmp(tok,"variant") == 0)
+ else if (strcasecmp(tok,"variant") == 0)
headingtype = HEAD_VARIANT;
- else if (_XkbStrCaseCmp(tok,"option") == 0)
+ else if (strcasecmp(tok,"option") == 0)
headingtype = HEAD_OPTION;
else {
int i;
headingtype = HEAD_EXTRA;
extra_ndx= -1;
for (i=0;(i<rules->num_extra)&&(extra_ndx<0);i++) {
- if (!_XkbStrCaseCmp(tok,rules->extra_names[i]))
+ if (!strcasecmp(tok,rules->extra_names[i]))
extra_ndx= i;
}
if (extra_ndx<0) {
diff --git a/xkb/xkb.c b/xkb/xkb.c
index 7119bb0d4..2c97e05db 100644
--- a/xkb/xkb.c
+++ b/xkb/xkb.c
@@ -1,4 +1,3 @@
-/* $Xorg: xkb.c,v 1.3 2000/08/17 19:53:46 cpqbld Exp $ */
/************************************************************
Copyright (c) 1993 by Silicon Graphics Computer Systems, Inc.
@@ -24,7 +23,6 @@ OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH
THE USE OR PERFORMANCE OF THIS SOFTWARE.
********************************************************/
-/* $XFree86: xc/programs/Xserver/xkb/xkb.c,v 3.22tsi Exp $ */
#ifdef HAVE_DIX_CONFIG_H
#include <dix-config.h>
@@ -349,6 +347,7 @@ ProcXkbSelectEvents(ClientPtr client)
/***====================================================================***/
+/* FIXME: Needs to ding on all core-sending devices. */
int
ProcXkbBell(ClientPtr client)
{
@@ -536,56 +535,67 @@ int
ProcXkbLatchLockState(ClientPtr client)
{
int status;
- DeviceIntPtr dev;
+ DeviceIntPtr dev, tmpd;
XkbStateRec oldState,*newState;
CARD16 changed;
+ xkbStateNotify sn;
+ XkbEventCauseRec cause;
REQUEST(xkbLatchLockStateReq);
REQUEST_SIZE_MATCH(xkbLatchLockStateReq);
- if (!(client->xkbClientFlags&_XkbClientInitialized))
+ if (!(client->xkbClientFlags & _XkbClientInitialized))
return BadAccess;
- CHK_KBD_DEVICE(dev,stuff->deviceSpec);
- CHK_MASK_MATCH(0x01,stuff->affectModLocks,stuff->modLocks);
- CHK_MASK_MATCH(0x01,stuff->affectModLatches,stuff->modLatches);
+ CHK_KBD_DEVICE(dev, stuff->deviceSpec);
+ CHK_MASK_MATCH(0x01, stuff->affectModLocks, stuff->modLocks);
+ CHK_MASK_MATCH(0x01, stuff->affectModLatches, stuff->modLatches);
status = Success;
- oldState= dev->key->xkbInfo->state;
- newState= &dev->key->xkbInfo->state;
- if ( stuff->affectModLocks ) {
- newState->locked_mods&= ~stuff->affectModLocks;
- newState->locked_mods|= (stuff->affectModLocks&stuff->modLocks);
- }
- if (( status == Success ) && stuff->lockGroup )
- newState->locked_group = stuff->groupLock;
- if (( status == Success ) && stuff->affectModLatches )
- status=XkbLatchModifiers(dev,stuff->affectModLatches,stuff->modLatches);
- if (( status == Success ) && stuff->latchGroup )
- status=XkbLatchGroup(dev,stuff->groupLatch);
-
- if ( status != Success )
- return status;
-
- XkbComputeDerivedState(dev->key->xkbInfo);
- dev->key->state= XkbStateFieldFromRec(newState);
- changed = XkbStateChangedFlags(&oldState,newState);
- if (changed) {
- xkbStateNotify sn;
- sn.keycode= 0;
- sn.eventType= 0;
- sn.requestMajor = XkbReqCode;
- sn.requestMinor = X_kbLatchLockState;
- sn.changed= changed;
- XkbSendStateNotify(dev,&sn);
- changed= XkbIndicatorsToUpdate(dev,changed,False);
- if (changed) {
- XkbEventCauseRec cause;
- XkbSetCauseXkbReq(&cause,X_kbLatchLockState,client);
- XkbUpdateIndicators(dev,changed,True,NULL,&cause);
- }
+ for (tmpd = inputInfo.devices; tmpd; tmpd = tmpd->next) {
+ if ((dev == inputInfo.keyboard && tmpd->key && tmpd->coreEvents) ||
+ tmpd == dev) {
+ if (!tmpd->key->xkbInfo)
+ continue;
+
+ oldState = tmpd->key->xkbInfo->state;
+ newState = &tmpd->key->xkbInfo->state;
+ if (stuff->affectModLocks) {
+ newState->locked_mods &= ~stuff->affectModLocks;
+ newState->locked_mods |= (stuff->affectModLocks & stuff->modLocks);
+ }
+ if (status == Success && stuff->lockGroup)
+ newState->locked_group = stuff->groupLock;
+ if (status == Success && stuff->affectModLatches)
+ status = XkbLatchModifiers(tmpd, stuff->affectModLatches,
+ stuff->modLatches);
+ if (status == Success && stuff->latchGroup)
+ status = XkbLatchGroup(tmpd, stuff->groupLatch);
+
+ if (status != Success)
+ return status;
+
+ XkbComputeDerivedState(tmpd->key->xkbInfo);
+ tmpd->key->state = XkbStateFieldFromRec(newState);
+
+ changed = XkbStateChangedFlags(&oldState, newState);
+ if (changed) {
+ sn.keycode = 0;
+ sn.eventType = 0;
+ sn.requestMajor = XkbReqCode;
+ sn.requestMinor = X_kbLatchLockState;
+ sn.changed = changed;
+ XkbSendStateNotify(tmpd, &sn);
+ changed = XkbIndicatorsToUpdate(tmpd, changed, False);
+ if (changed) {
+ XkbSetCauseXkbReq(&cause, X_kbLatchLockState, client);
+ XkbUpdateIndicators(tmpd, changed, True, NULL, &cause);
+ }
+ }
+ }
}
+
return client->noClientException;
}
@@ -668,7 +678,7 @@ ProcXkbGetControls(ClientPtr client)
int
ProcXkbSetControls(ClientPtr client)
{
- DeviceIntPtr dev;
+ DeviceIntPtr dev, tmpd;
XkbSrvInfoPtr xkbi;
XkbControlsPtr ctrl;
XkbControlsRec new,old;
@@ -679,161 +689,213 @@ ProcXkbSetControls(ClientPtr client)
REQUEST(xkbSetControlsReq);
REQUEST_SIZE_MATCH(xkbSetControlsReq);
- if (!(client->xkbClientFlags&_XkbClientInitialized))
+ if (!(client->xkbClientFlags & _XkbClientInitialized))
return BadAccess;
- CHK_KBD_DEVICE(dev,stuff->deviceSpec);
- CHK_MASK_LEGAL(0x01,stuff->changeCtrls,XkbAllControlsMask);
+ CHK_KBD_DEVICE(dev, stuff->deviceSpec);
+ CHK_MASK_LEGAL(0x01, stuff->changeCtrls, XkbAllControlsMask);
+
+ for (tmpd = inputInfo.keyboard; tmpd; tmpd = tmpd->next) {
+ if ((dev == inputInfo.keyboard && tmpd->key && tmpd->coreEvents) ||
+ tmpd == dev) {
+
+ xkbi = tmpd->key->xkbInfo;
+ ctrl = xkbi->desc->ctrls;
+ new = *ctrl;
+ XkbSetCauseXkbReq(&cause, X_kbSetControls, client);
+
+ if (stuff->changeCtrls & XkbInternalModsMask) {
+ CHK_MASK_MATCH(0x02, stuff->affectInternalMods,
+ stuff->internalMods);
+ CHK_MASK_MATCH(0x03, stuff->affectInternalVMods,
+ stuff->internalVMods);
+
+ new.internal.real_mods &= ~(stuff->affectInternalMods);
+ new.internal.real_mods |= (stuff->affectInternalMods &
+ stuff->internalMods);
+ new.internal.vmods &= ~(stuff->affectInternalVMods);
+ new.internal.vmods |= (stuff->affectInternalVMods &
+ stuff->internalVMods);
+ new.internal.mask = new.internal.real_mods |
+ XkbMaskForVMask(xkbi->desc,
+ new.internal.vmods);
+ }
- xkbi = dev->key->xkbInfo;
- ctrl = xkbi->desc->ctrls;
- new = *ctrl;
- XkbSetCauseXkbReq(&cause,X_kbSetControls,client);
- if (stuff->changeCtrls&XkbInternalModsMask) {
- CHK_MASK_MATCH(0x02,stuff->affectInternalMods,stuff->internalMods);
- CHK_MASK_MATCH(0x03,stuff->affectInternalVMods,stuff->internalVMods);
- new.internal.real_mods&=~stuff->affectInternalMods;
- new.internal.real_mods|=(stuff->affectInternalMods&stuff->internalMods);
- new.internal.vmods&=~stuff->affectInternalVMods;
- new.internal.vmods|= (stuff->affectInternalVMods&stuff->internalVMods);
- new.internal.mask= new.internal.real_mods|
- XkbMaskForVMask(xkbi->desc,new.internal.vmods);
- }
- if (stuff->changeCtrls&XkbIgnoreLockModsMask) {
- CHK_MASK_MATCH(0x4,stuff->affectIgnoreLockMods,stuff->ignoreLockMods);
- CHK_MASK_MATCH(0x5,stuff->affectIgnoreLockVMods,stuff->ignoreLockVMods);
- new.ignore_lock.real_mods&=~stuff->affectIgnoreLockMods;
- new.ignore_lock.real_mods|=
- (stuff->affectIgnoreLockMods&stuff->ignoreLockMods);
- new.ignore_lock.vmods&= ~stuff->affectIgnoreLockVMods;
- new.ignore_lock.vmods|=
- (stuff->affectIgnoreLockVMods&stuff->ignoreLockVMods);
- new.ignore_lock.mask= new.ignore_lock.real_mods|
- XkbMaskForVMask(xkbi->desc,new.ignore_lock.vmods);
- }
- CHK_MASK_MATCH(0x06,stuff->affectEnabledCtrls,stuff->enabledCtrls);
- if (stuff->affectEnabledCtrls) {
- CHK_MASK_LEGAL(0x07,stuff->affectEnabledCtrls,XkbAllBooleanCtrlsMask);
- new.enabled_ctrls&= ~stuff->affectEnabledCtrls;
- new.enabled_ctrls|= (stuff->affectEnabledCtrls&stuff->enabledCtrls);
- }
- if (stuff->changeCtrls&XkbRepeatKeysMask) {
- if ((stuff->repeatDelay<1)||(stuff->repeatInterval<1)) {
- client->errorValue = _XkbErrCode3(0x08,stuff->repeatDelay,
- stuff->repeatInterval);
- return BadValue;
- }
- new.repeat_delay = stuff->repeatDelay;
- new.repeat_interval = stuff->repeatInterval;
- }
- if (stuff->changeCtrls&XkbSlowKeysMask) {
- if (stuff->slowKeysDelay<1) {
- client->errorValue = _XkbErrCode2(0x09,stuff->slowKeysDelay);
- return BadValue;
- }
- new.slow_keys_delay = stuff->slowKeysDelay;
- }
- if (stuff->changeCtrls&XkbBounceKeysMask) {
- if (stuff->debounceDelay<1) {
- client->errorValue = _XkbErrCode2(0x0A,stuff->debounceDelay);
- return BadValue;
- }
- new.debounce_delay = stuff->debounceDelay;
- }
- if (stuff->changeCtrls&XkbMouseKeysMask) {
- if (stuff->mkDfltBtn>XkbMaxMouseKeysBtn) {
- client->errorValue = _XkbErrCode2(0x0B,stuff->mkDfltBtn);
- return BadValue;
- }
- new.mk_dflt_btn = stuff->mkDfltBtn;
- }
- if (stuff->changeCtrls&XkbMouseKeysAccelMask) {
- if ((stuff->mkDelay<1) || (stuff->mkInterval<1) ||
- (stuff->mkTimeToMax<1) || (stuff->mkMaxSpeed<1)||
- (stuff->mkCurve<-1000)) {
- client->errorValue = _XkbErrCode2(0x0C,0);
- return BadValue;
- }
- new.mk_delay = stuff->mkDelay;
- new.mk_interval = stuff->mkInterval;
- new.mk_time_to_max = stuff->mkTimeToMax;
- new.mk_max_speed = stuff->mkMaxSpeed;
- new.mk_curve = stuff->mkCurve;
- AccessXComputeCurveFactor(xkbi,&new);
- }
- if (stuff->changeCtrls&XkbGroupsWrapMask) {
- unsigned act,num;
- act= XkbOutOfRangeGroupAction(stuff->groupsWrap);
- switch (act) {
- case XkbRedirectIntoRange:
- num= XkbOutOfRangeGroupNumber(stuff->groupsWrap);
- if (num>=new.num_groups) {
- client->errorValue= _XkbErrCode3(0x0D,new.num_groups,num);
- return BadValue;
- }
- case XkbWrapIntoRange:
- case XkbClampIntoRange:
- break;
- default:
- client->errorValue= _XkbErrCode2(0x0E,act);
- return BadValue;
- }
- new.groups_wrap= stuff->groupsWrap;
- }
- CHK_MASK_LEGAL(0x0F,stuff->axOptions,XkbAX_AllOptionsMask);
- if (stuff->changeCtrls&XkbAccessXKeysMask)
- new.ax_options = stuff->axOptions&XkbAX_AllOptionsMask;
- else {
- if (stuff->changeCtrls&XkbStickyKeysMask) {
- new.ax_options&= ~XkbAX_SKOptionsMask;
- new.ax_options|= stuff->axOptions&XkbAX_SKOptionsMask;
- }
- if (stuff->changeCtrls&XkbAccessXFeedbackMask) {
- new.ax_options&= ~XkbAX_FBOptionsMask;
- new.ax_options|= stuff->axOptions&XkbAX_FBOptionsMask;
- }
- }
+ if (stuff->changeCtrls & XkbIgnoreLockModsMask) {
+ CHK_MASK_MATCH(0x4, stuff->affectIgnoreLockMods,
+ stuff->ignoreLockMods);
+ CHK_MASK_MATCH(0x5, stuff->affectIgnoreLockVMods,
+ stuff->ignoreLockVMods);
+
+ new.ignore_lock.real_mods &= ~(stuff->affectIgnoreLockMods);
+ new.ignore_lock.real_mods |= (stuff->affectIgnoreLockMods &
+ stuff->ignoreLockMods);
+ new.ignore_lock.vmods &= ~(stuff->affectIgnoreLockVMods);
+ new.ignore_lock.vmods |= (stuff->affectIgnoreLockVMods &
+ stuff->ignoreLockVMods);
+ new.ignore_lock.mask = new.ignore_lock.real_mods |
+ XkbMaskForVMask(xkbi->desc,
+ new.ignore_lock.vmods);
+ }
- if (stuff->changeCtrls&XkbAccessXTimeoutMask) {
- if (stuff->axTimeout<1) {
- client->errorValue = _XkbErrCode2(0x10,stuff->axTimeout);
- return BadValue;
- }
- CHK_MASK_MATCH(0x11,stuff->axtCtrlsMask,stuff->axtCtrlsValues);
- CHK_MASK_LEGAL(0x12,stuff->axtCtrlsMask,XkbAllBooleanCtrlsMask);
- CHK_MASK_MATCH(0x13,stuff->axtOptsMask,stuff->axtOptsValues);
- CHK_MASK_LEGAL(0x14,stuff->axtOptsMask,XkbAX_AllOptionsMask);
- new.ax_timeout = stuff->axTimeout;
- new.axt_ctrls_mask = stuff->axtCtrlsMask;
- new.axt_ctrls_values = (stuff->axtCtrlsValues&stuff->axtCtrlsMask);
- new.axt_opts_mask = stuff->axtOptsMask;
- new.axt_opts_values= (stuff->axtOptsValues&stuff->axtOptsMask);
- }
- if (stuff->changeCtrls&XkbPerKeyRepeatMask) {
- memcpy(new.per_key_repeat,stuff->perKeyRepeat,XkbPerKeyBitArraySize);
- }
- old= *ctrl;
- *ctrl= new;
- XkbDDXChangeControls(dev,&old,ctrl);
- if (XkbComputeControlsNotify(dev,&old,ctrl,&cn,False)) {
- cn.keycode= 0;
- cn.eventType = 0;
- cn.requestMajor = XkbReqCode;
- cn.requestMinor = X_kbSetControls;
- XkbSendControlsNotify(dev,&cn);
- }
- if ((sli= XkbFindSrvLedInfo(dev,XkbDfltXIClass,XkbDfltXIId,0))!=NULL)
- XkbUpdateIndicators(dev,sli->usesControls,True,NULL,&cause);
-#ifndef NO_CLEAR_LATCHES_FOR_STICKY_KEYS_OFF
- /* If sticky keys were disabled, clear all locks and latches */
- if ((old.enabled_ctrls&XkbStickyKeysMask)&&
- (!(ctrl->enabled_ctrls&XkbStickyKeysMask))) {
- XkbClearAllLatchesAndLocks(dev,xkbi,True,&cause);
+ CHK_MASK_MATCH(0x06, stuff->affectEnabledCtrls,
+ stuff->enabledCtrls);
+ if (stuff->affectEnabledCtrls) {
+ CHK_MASK_LEGAL(0x07, stuff->affectEnabledCtrls,
+ XkbAllBooleanCtrlsMask);
+
+ new.enabled_ctrls &= ~(stuff->affectEnabledCtrls);
+ new.enabled_ctrls |= (stuff->affectEnabledCtrls &
+ stuff->enabledCtrls);
+ }
+
+ if (stuff->changeCtrls & XkbRepeatKeysMask) {
+ if (stuff->repeatDelay < 1 || stuff->repeatInterval < 1) {
+ client->errorValue = _XkbErrCode3(0x08, stuff->repeatDelay,
+ stuff->repeatInterval);
+ return BadValue;
+ }
+
+ new.repeat_delay = stuff->repeatDelay;
+ new.repeat_interval = stuff->repeatInterval;
+ }
+
+ if (stuff->changeCtrls & XkbSlowKeysMask) {
+ if (stuff->slowKeysDelay < 1) {
+ client->errorValue = _XkbErrCode2(0x09,
+ stuff->slowKeysDelay);
+ return BadValue;
+ }
+
+ new.slow_keys_delay = stuff->slowKeysDelay;
+ }
+
+ if (stuff->changeCtrls & XkbBounceKeysMask) {
+ if (stuff->debounceDelay < 1) {
+ client->errorValue = _XkbErrCode2(0x0A,
+ stuff->debounceDelay);
+ return BadValue;
+ }
+
+ new.debounce_delay = stuff->debounceDelay;
+ }
+
+ if (stuff->changeCtrls & XkbMouseKeysMask) {
+ if (stuff->mkDfltBtn > XkbMaxMouseKeysBtn) {
+ client->errorValue = _XkbErrCode2(0x0B, stuff->mkDfltBtn);
+ return BadValue;
+ }
+
+ new.mk_dflt_btn = stuff->mkDfltBtn;
+ }
+
+ if (stuff->changeCtrls & XkbMouseKeysAccelMask) {
+ if (stuff->mkDelay < 1 || stuff->mkInterval < 1 ||
+ stuff->mkTimeToMax < 1 || stuff->mkMaxSpeed < 1 ||
+ stuff->mkCurve < -1000) {
+ client->errorValue = _XkbErrCode2(0x0C,0);
+ return BadValue;
+ }
+
+ new.mk_delay = stuff->mkDelay;
+ new.mk_interval = stuff->mkInterval;
+ new.mk_time_to_max = stuff->mkTimeToMax;
+ new.mk_max_speed = stuff->mkMaxSpeed;
+ new.mk_curve = stuff->mkCurve;
+ AccessXComputeCurveFactor(xkbi, &new);
+ }
+
+ if (stuff->changeCtrls & XkbGroupsWrapMask) {
+ unsigned act, num;
+
+ act = XkbOutOfRangeGroupAction(stuff->groupsWrap);
+ switch (act) {
+ case XkbRedirectIntoRange:
+ num = XkbOutOfRangeGroupNumber(stuff->groupsWrap);
+ if (num >= new.num_groups) {
+ client->errorValue = _XkbErrCode3(0x0D, new.num_groups,
+ num);
+ return BadValue;
+ }
+ case XkbWrapIntoRange:
+ case XkbClampIntoRange:
+ break;
+ default:
+ client->errorValue = _XkbErrCode2(0x0E, act);
+ return BadValue;
+ }
+
+ new.groups_wrap= stuff->groupsWrap;
+ }
+
+ CHK_MASK_LEGAL(0x0F, stuff->axOptions, XkbAX_AllOptionsMask);
+ if (stuff->changeCtrls & XkbAccessXKeysMask) {
+ new.ax_options = stuff->axOptions & XkbAX_AllOptionsMask;
+ }
+ else {
+ if (stuff->changeCtrls & XkbStickyKeysMask) {
+ new.ax_options &= ~(XkbAX_SKOptionsMask);
+ new.ax_options |= (stuff->axOptions & XkbAX_SKOptionsMask);
+ }
+
+ if (stuff->changeCtrls & XkbAccessXFeedbackMask) {
+ new.ax_options &= ~(XkbAX_FBOptionsMask);
+ new.ax_options |= (stuff->axOptions & XkbAX_FBOptionsMask);
+ }
+ }
+
+ if (stuff->changeCtrls & XkbAccessXTimeoutMask) {
+ if (stuff->axTimeout < 1) {
+ client->errorValue = _XkbErrCode2(0x10, stuff->axTimeout);
+ return BadValue;
+ }
+ CHK_MASK_MATCH(0x11, stuff->axtCtrlsMask,
+ stuff->axtCtrlsValues);
+ CHK_MASK_LEGAL(0x12, stuff->axtCtrlsMask,
+ XkbAllBooleanCtrlsMask);
+ CHK_MASK_MATCH(0x13, stuff->axtOptsMask, stuff->axtOptsValues);
+ CHK_MASK_LEGAL(0x14, stuff->axtOptsMask, XkbAX_AllOptionsMask);
+ new.ax_timeout = stuff->axTimeout;
+ new.axt_ctrls_mask = stuff->axtCtrlsMask;
+ new.axt_ctrls_values = (stuff->axtCtrlsValues &
+ stuff->axtCtrlsMask);
+ new.axt_opts_mask = stuff->axtOptsMask;
+ new.axt_opts_values = (stuff->axtOptsValues &
+ stuff->axtOptsMask);
+ }
+
+ if (stuff->changeCtrls & XkbPerKeyRepeatMask)
+ memcpy(new.per_key_repeat, stuff->perKeyRepeat,
+ XkbPerKeyBitArraySize);
+
+ old= *ctrl;
+ *ctrl= new;
+ XkbDDXChangeControls(tmpd, &old, ctrl);
+
+ if (XkbComputeControlsNotify(tmpd, &old, ctrl, &cn, False)) {
+ cn.keycode = 0;
+ cn.eventType = 0;
+ cn.requestMajor = XkbReqCode;
+ cn.requestMinor = X_kbSetControls;
+ XkbSendControlsNotify(tmpd, &cn);
+ }
+
+ sli = XkbFindSrvLedInfo(tmpd, XkbDfltXIClass, XkbDfltXIId, 0);
+ if (sli)
+ XkbUpdateIndicators(tmpd, sli->usesControls, True, NULL,
+ &cause);
+
+ /* If sticky keys were disabled, clear all locks and latches */
+ if ((old.enabled_ctrls & XkbStickyKeysMask) &&
+ !(ctrl->enabled_ctrls & XkbStickyKeysMask))
+ XkbClearAllLatchesAndLocks(tmpd, xkbi, True, &cause);
+ }
}
-#endif
+
return client->noClientException;
}
+/* FIXME: Needs to set rate on all core-sending devices. */
int
XkbSetRepeatRate(DeviceIntPtr dev,int timeout,int interval,int major,int minor)
{
@@ -1263,7 +1325,7 @@ unsigned short * pMap;
wire= (xkbVModMapWireDesc *)buf;
pMap= &xkb->server->vmodmap[rep->firstVModMapKey];
- for (i=0;i<rep->nVModMapKeys;i++,pMap++) {
+ for (i=0;i<rep->nVModMapKeys-1;i++,pMap++) {
if (*pMap!=0) {
wire->key= i+rep->firstVModMapKey;
wire->vmods= *pMap;
@@ -2265,6 +2327,7 @@ XkbServerMapPtr srv = xkbi->desc->server;
return (char *)wire;
}
+/* FIXME: Needs to set map on all core-sending devices. */
int
ProcXkbSetMap(ClientPtr client)
{
@@ -2581,6 +2644,7 @@ ProcXkbGetCompatMap(ClientPtr client)
return XkbSendCompatMap(client,compat,&rep);
}
+/* FIXME: Needs to set compat map on all core-sending devices. */
int
ProcXkbSetCompatMap(ClientPtr client)
{
@@ -2858,6 +2922,7 @@ XkbIndicatorPtr leds;
return XkbSendIndicatorMap(client,leds,&rep);
}
+/* FIXME: Needs to set indicator map on all core-sending devices. */
int
ProcXkbSetIndicatorMap(ClientPtr client)
{
@@ -3021,6 +3086,7 @@ ProcXkbGetNamedIndicator(ClientPtr client)
return client->noClientException;
}
+/* FIXME: Needs to set indicator on all core-sending devices. */
int
ProcXkbSetNamedIndicator(ClientPtr client)
{
@@ -3509,6 +3575,7 @@ char * str;
return True;
}
+/* FIXME: Needs to set names on all core-sending devices. */
int
ProcXkbSetNames(ClientPtr client)
{
@@ -4806,6 +4873,7 @@ char * wire;
return Success;
}
+/* FIXME: Needs to set geom on all core-sending devices. */
int
ProcXkbSetGeometry(ClientPtr client)
{
@@ -5086,6 +5154,7 @@ int
ProcXkbGetKbdByName(ClientPtr client)
{
DeviceIntPtr dev;
+ DeviceIntPtr tmpd;
XkbFileInfo finfo;
xkbGetKbdByNameReply rep;
xkbGetMapReply mrep;
@@ -5101,6 +5170,8 @@ ProcXkbGetKbdByName(ClientPtr client)
unsigned fwant,fneed,reported;
int status;
Bool geom_changed;
+ XkbSrvLedInfoPtr old_sli;
+ XkbSrvLedInfoPtr sli;
REQUEST(xkbGetKbdByNameReq);
REQUEST_AT_LEAST_SIZE(xkbGetKbdByNameReq);
@@ -5171,8 +5242,10 @@ ProcXkbGetKbdByName(ClientPtr client)
fneed|= XkmKeyNamesIndex|XkmTypesIndex;
fwant|= XkmIndicatorsIndex;
}
+
+ /* We pass dev in here so we can get the old names out if needed. */
rep.found = XkbDDXLoadKeymapByNames(dev,&names,fwant,fneed,&finfo,
- mapFile,PATH_MAX);
+ mapFile,PATH_MAX);
rep.newKeyboard= False;
rep.pad1= rep.pad2= rep.pad3= rep.pad4= 0;
@@ -5367,23 +5440,34 @@ ProcXkbGetKbdByName(ClientPtr client)
}
xkb->ctrls->num_groups= nTG;
- memcpy(dev->key->modifierMap,xkb->map->modmap,xkb->max_key_code+1);
- XkbUpdateCoreDescription(dev,True);
-
- if (dev->kbdfeed && dev->kbdfeed->xkb_sli) {
- XkbSrvLedInfoPtr old_sli;
- XkbSrvLedInfoPtr sli;
- old_sli = dev->kbdfeed->xkb_sli;
- dev->kbdfeed->xkb_sli = NULL;
- sli = XkbAllocSrvLedInfo(dev,dev->kbdfeed,NULL,0);
- if (sli) {
- sli->explicitState = old_sli->explicitState;
- sli->effectiveState = old_sli->effectiveState;
+ for (tmpd = inputInfo.devices; tmpd; tmpd = tmpd->next) {
+ if (tmpd == dev ||
+ (dev->id == inputInfo.keyboard->id && tmpd->key &&
+ tmpd->coreEvents)) {
+
+ memcpy(tmpd->key->modifierMap, xkb->map->modmap,
+ xkb->max_key_code + 1);
+ if (tmpd != dev)
+ XkbCopyKeymap(dev->key->xkbInfo->desc,
+ tmpd->key->xkbInfo->desc, True);
+ XkbUpdateCoreDescription(tmpd, True);
+
+ if (tmpd->kbdfeed && tmpd->kbdfeed->xkb_sli) {
+ old_sli = tmpd->kbdfeed->xkb_sli;
+ tmpd->kbdfeed->xkb_sli = NULL;
+ sli = XkbAllocSrvLedInfo(tmpd, tmpd->kbdfeed, NULL, 0);
+ if (sli) {
+ sli->explicitState = old_sli->explicitState;
+ sli->effectiveState = old_sli->effectiveState;
+ }
+ tmpd->kbdfeed->xkb_sli = sli;
+ XkbFreeSrvLedInfo(old_sli);
+ }
}
- dev->kbdfeed->xkb_sli = sli;
- XkbFreeSrvLedInfo(old_sli);
- }
+ }
+ /* this should be either a MN or an NKN, depending on whether or not
+ * the keycode range changed? */
nkn.deviceID= nkn.oldDeviceID= dev->id;
nkn.minKeyCode= finfo.xkb->min_key_code;
nkn.maxKeyCode= finfo.xkb->max_key_code;
@@ -5636,7 +5720,6 @@ char * str;
wanted&= ~XkbXI_ButtonActionsMask;
if ((!dev->kbdfeed)&&(!dev->leds))
wanted&= ~XkbXI_IndicatorsMask;
- wanted&= ~XkbXI_KeyboardsMask;
nameLen= XkbSizeCountedString(dev->name);
bzero((char *)&rep,SIZEOF(xkbGetDeviceInfoReply));
@@ -5645,8 +5728,8 @@ char * str;
rep.sequenceNumber = client->sequence;
rep.length = nameLen/4;
rep.present = wanted;
- rep.supported = XkbXI_AllDeviceFeaturesMask&(~XkbXI_KeyboardsMask);
- rep.unsupported = XkbXI_KeyboardsMask;
+ rep.supported = XkbXI_AllDeviceFeaturesMask;
+ rep.unsupported = 0;
rep.firstBtnWanted = rep.nBtnsWanted = 0;
rep.firstBtnRtrn = rep.nBtnsRtrn = 0;
if (dev->button)
@@ -5942,6 +6025,7 @@ DeviceIntPtr kbd;
return (char *)ledWire;
}
+/* FIXME: Needs to set info on all core-sending devices. */
int
ProcXkbSetDeviceInfo(ClientPtr client)
{
@@ -5959,7 +6043,7 @@ xkbExtensionDeviceNotify ed;
change= stuff->change;
CHK_ANY_DEVICE(dev,stuff->deviceSpec);
- CHK_MASK_LEGAL(0x01,change,(XkbXI_AllFeaturesMask&(~XkbXI_KeyboardsMask)));
+ CHK_MASK_LEGAL(0x01,change,XkbXI_AllFeaturesMask);
wire= (char *)&stuff[1];
if (change&XkbXI_ButtonActionsMask) {
diff --git a/xkb/xkb.h b/xkb/xkb.h
index 156608ef0..2be42582d 100644
--- a/xkb/xkb.h
+++ b/xkb/xkb.h
@@ -72,3 +72,8 @@ extern Bool XkbDDXCompileKeymapByNames(
unsigned need,
char * nameRtrn,
int nameRtrnLen);
+
+extern Bool XkbCopyKeymap(
+ XkbDescPtr src,
+ XkbDescPtr dst,
+ Bool sendNotifies);
diff --git a/xkb/xkbAccessX.c b/xkb/xkbAccessX.c
index 96827f657..0ab3dadf6 100644
--- a/xkb/xkbAccessX.c
+++ b/xkb/xkbAccessX.c
@@ -1,4 +1,3 @@
-/* $Xorg: xkbAccessX.c,v 1.4 2001/02/05 18:50:20 coskrey Exp $ */
/************************************************************
Copyright (c) 1993 by Silicon Graphics Computer Systems, Inc.
@@ -24,7 +23,6 @@ OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH
THE USE OR PERFORMANCE OF THIS SOFTWARE.
********************************************************/
-/* $XFree86: xc/programs/Xserver/xkb/xkbAccessX.c,v 1.9 2001/08/23 14:33:25 alanh Exp $ */
#ifdef HAVE_DIX_CONFIG_H
#include <dix-config.h>
@@ -363,10 +361,7 @@ XkbControlsPtr ctrls;
if (keybd->kbdfeed->ctrl.autoRepeat &&
((xkbi->slowKey != xkbi->mouseKey) || (!xkbi->mouseKeysAccel)) &&
(ctrls->enabled_ctrls&XkbRepeatKeysMask)) {
-#ifndef AIXV3
- if (BitIsOn(keybd->kbdfeed->ctrl.autoRepeats,xkbi->slowKey))
-#endif
- {
+ if (BitIsOn(keybd->kbdfeed->ctrl.autoRepeats,xkbi->slowKey)) {
xkbi->repeatKey = xkbi->slowKey;
xkbi->repeatKeyTimer= TimerSet(xkbi->repeatKeyTimer,
0, ctrls->repeat_delay,
@@ -532,10 +527,7 @@ KeySym * sym = XkbKeySymsPtr(xkbi->desc,key);
if ((keybd->kbdfeed->ctrl.autoRepeat) &&
((ctrls->enabled_ctrls&(XkbSlowKeysMask|XkbRepeatKeysMask))==
XkbRepeatKeysMask)) {
-#ifndef AIXV3
- if (BitIsOn(keybd->kbdfeed->ctrl.autoRepeats,key))
-#endif
- {
+ if (BitIsOn(keybd->kbdfeed->ctrl.autoRepeats,key)) {
#ifdef DEBUG
if (xkbDebugFlags&0x10)
ErrorF("Starting software autorepeat...\n");
diff --git a/xkb/xkbActions.c b/xkb/xkbActions.c
index e4f74fb76..e0bf89c7b 100644
--- a/xkb/xkbActions.c
+++ b/xkb/xkbActions.c
@@ -1,5 +1,3 @@
-/* $Xorg: xkbActions.c,v 1.3 2000/08/17 19:53:47 cpqbld Exp $ */
-/* $XdotOrg: xc/programs/Xserver/xkb/xkbActions.c,v 1.4 2005/05/22 01:12:49 alanc Exp $ */
/************************************************************
Copyright (c) 1993 by Silicon Graphics Computer Systems, Inc.
@@ -25,7 +23,6 @@ OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH
THE USE OR PERFORMANCE OF THIS SOFTWARE.
********************************************************/
-/* $XFree86: xc/programs/Xserver/xkb/xkbActions.c,v 3.13 2003/07/16 01:39:08 dawes Exp $ */
#ifdef HAVE_DIX_CONFIG_H
#include <dix-config.h>
@@ -871,6 +868,10 @@ XkbStateRec old;
unsigned mods,mask,oldCoreState = 0,oldCorePrevState = 0;
xkbDeviceInfoPtr xkbPrivPtr = XKBDEVICEINFO(xkbi->device);
+ /* never actually used uninitialised, but gcc isn't smart enough
+ * to work that out. */
+ memset(&old, 0, sizeof(old));
+
if ((filter->keycode!=0)&&(filter->keycode!=keycode))
return 1;
@@ -1000,7 +1001,6 @@ _XkbFilterSwitchScreen( XkbSrvInfoPtr xkbi,
return 1;
}
-#ifdef XFree86Server
static int
_XkbFilterXF86Private( XkbSrvInfoPtr xkbi,
XkbFilterPtr filter,
@@ -1022,7 +1022,6 @@ _XkbFilterXF86Private( XkbSrvInfoPtr xkbi,
}
return 1;
}
-#endif
#ifdef XINPUT
@@ -1252,12 +1251,10 @@ xkbDeviceInfoPtr xkbPrivPtr = XKBDEVICEINFO(dev);
sendEvent= _XkbFilterDeviceBtn(xkbi,filter,key,&act);
break;
#endif
-#ifdef XFree86Server
case XkbSA_XFree86Private:
filter = _XkbNextFreeFilter();
sendEvent= _XkbFilterXF86Private(xkbi,filter,key,&act);
break;
-#endif
}
}
}
diff --git a/xkb/xkbDflts.h b/xkb/xkbDflts.h
index 2a24fe35f..e31568abb 100644
--- a/xkb/xkbDflts.h
+++ b/xkb/xkbDflts.h
@@ -1,5 +1,3 @@
-/* $Xorg: xkbDflts.h,v 1.3 2000/08/17 19:53:47 cpqbld Exp $ */
-/* $XFree86: xc/programs/Xserver/xkb/xkbDflts.h,v 1.2 2001/10/28 03:34:20 tsi Exp $ */
/* This file generated automatically by xkbcomp */
/* DO NOT EDIT */
#ifdef HAVE_DIX_CONFIG_H
diff --git a/xkb/xkbEvents.c b/xkb/xkbEvents.c
index 6afe7874b..139221f3f 100644
--- a/xkb/xkbEvents.c
+++ b/xkb/xkbEvents.c
@@ -1,4 +1,3 @@
-/* $Xorg: xkbEvents.c,v 1.3 2000/08/17 19:53:47 cpqbld Exp $ */
/************************************************************
Copyright (c) 1993 by Silicon Graphics Computer Systems, Inc.
@@ -24,7 +23,6 @@ OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH
THE USE OR PERFORMANCE OF THIS SOFTWARE.
********************************************************/
-/* $XFree86: xc/programs/Xserver/xkb/xkbEvents.c,v 3.11 2003/07/16 01:39:10 dawes Exp $ */
#ifdef HAVE_DIX_CONFIG_H
#include <dix-config.h>
@@ -818,7 +816,7 @@ XkbSrvInfoPtr xkbi;
((xE[0].u.u.type==KeyPress)||(xE[0].u.u.type==KeyRelease))) {
ErrorF("XKbFilterWriteEvents:\n");
ErrorF(" Event state= 0x%04x\n",xE[0].u.keyButtonPointer.state);
- ErrorF(" XkbLastRepeatEvent!=xE (0x%x!=0x%x) %s\n",
+ ErrorF(" XkbLastRepeatEvent!=xE (0x%p!=0x%p) %s\n",
XkbLastRepeatEvent,xE,
((XkbLastRepeatEvent!=(pointer)xE)?"True":"False"));
ErrorF(" (xkbClientEventsFlags&XWDA)==0 (0x%x) %s\n",
diff --git a/xkb/xkbInit.c b/xkb/xkbInit.c
index d2824da83..5aa121da2 100644
--- a/xkb/xkbInit.c
+++ b/xkb/xkbInit.c
@@ -1,5 +1,3 @@
-/* $Xorg: xkbInit.c,v 1.3 2000/08/17 19:53:47 cpqbld Exp $ */
-/* $XdotOrg: xserver/xorg/xkb/xkbInit.c,v 1.13 2006/03/25 22:35:48 daniels Exp $ */
/************************************************************
Copyright (c) 1993 by Silicon Graphics Computer Systems, Inc.
@@ -25,7 +23,6 @@ OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH
THE USE OR PERFORMANCE OF THIS SOFTWARE.
********************************************************/
-/* $XFree86: xc/programs/Xserver/xkb/xkbInit.c,v 3.32tsi Exp $ */
#ifdef HAVE_DIX_CONFIG_H
#include <dix-config.h>
diff --git a/xkb/xkbLEDs.c b/xkb/xkbLEDs.c
index 6e5c3a199..e94e0bff4 100644
--- a/xkb/xkbLEDs.c
+++ b/xkb/xkbLEDs.c
@@ -1,4 +1,3 @@
-/* $Xorg: xkbLEDs.c,v 1.4 2001/05/10 19:54:01 steve Exp $ */
/************************************************************
Copyright (c) 1995 by Silicon Graphics Computer Systems, Inc.
@@ -24,7 +23,6 @@ OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH
THE USE OR PERFORMANCE OF THIS SOFTWARE.
********************************************************/
-/* $XFree86: xc/programs/Xserver/xkb/xkbLEDs.c,v 3.7 2003/07/16 01:39:10 dawes Exp $ */
#ifdef HAVE_DIX_CONFIG_H
#include <dix-config.h>
@@ -677,13 +675,13 @@ xkbExtensionDeviceNotify my_ed;
changes->names.changed_indicators|= changed_names;
}
- ed->reason|= (XkbXI_IndicatorNamesMask&(~XkbXI_KeyboardsMask));
+ ed->reason|= XkbXI_IndicatorNamesMask;
ed->ledClass= sli->class;
ed->ledID= sli->id;
ed->ledsDefined= sli->namesPresent|sli->mapsPresent;
ed->ledState= sli->effectiveState;
- ed->unsupported= XkbXI_KeyboardsMask;
- ed->supported= XkbXI_AllFeaturesMask&(~XkbXI_KeyboardsMask);
+ ed->unsupported= 0;
+ ed->supported= XkbXI_AllFeaturesMask;
if (changes!=&my_changes) changes= NULL;
if (ed!=&my_ed) ed= NULL;
@@ -755,13 +753,13 @@ xkbExtensionDeviceNotify my_ed;
XkbCheckIndicatorMaps(dev,sli,changed_maps);
- ed->reason|= (XkbXI_IndicatorMapsMask&(~XkbXI_KeyboardsMask));
+ ed->reason|= XkbXI_IndicatorMapsMask;
ed->ledClass= sli->class;
ed->ledID= sli->id;
ed->ledsDefined= sli->namesPresent|sli->mapsPresent;
ed->ledState= sli->effectiveState;
- ed->unsupported|= XkbXI_KeyboardsMask&XkbXI_IndicatorMapsMask;
- ed->supported= XkbXI_AllFeaturesMask&(~XkbXI_KeyboardsMask);
+ ed->unsupported|= XkbXI_IndicatorMapsMask;
+ ed->supported= XkbXI_AllFeaturesMask;
XkbUpdateLedAutoState(dev,sli,changed_maps,ed,changes,cause);
@@ -836,13 +834,13 @@ Bool kb_changed;
if ((kbd==dev)&&(sli->flags&XkbSLI_IsDefault))
changes->indicators.state_changes|= affected;
if (affected) {
- ed->reason|= (XkbXI_IndicatorStateMask&(~XkbXI_KeyboardsMask));
+ ed->reason|= XkbXI_IndicatorStateMask;
ed->ledClass= sli->class;
ed->ledID= sli->id;
ed->ledsDefined= sli->namesPresent|sli->mapsPresent;
ed->ledState= sli->effectiveState;
- ed->unsupported|= XkbXI_KeyboardsMask&XkbXI_IndicatorStateMask;
- ed->supported= XkbXI_AllFeaturesMask&(~XkbXI_KeyboardsMask);
+ ed->unsupported|= XkbXI_IndicatorStateMask;
+ ed->supported= XkbXI_AllFeaturesMask;
}
if (kb_changed) {
@@ -920,13 +918,13 @@ unsigned oldState;
changes->indicators.state_changes|= affected;
}
- ed->reason|= (XkbXI_IndicatorStateMask&(~XkbXI_KeyboardsMask));
+ ed->reason|= XkbXI_IndicatorStateMask;
ed->ledClass= sli->class;
ed->ledID= sli->id;
ed->ledsDefined= sli->namesPresent|sli->mapsPresent;
ed->ledState= sli->effectiveState;
- ed->unsupported|= XkbXI_KeyboardsMask&XkbXI_IndicatorStateMask;
- ed->supported= XkbXI_AllFeaturesMask&(~XkbXI_KeyboardsMask);
+ ed->unsupported|= XkbXI_IndicatorStateMask;
+ ed->supported= XkbXI_AllFeaturesMask;
if (changes!=&my_changes) changes= NULL;
if (ed!=&my_ed) ed= NULL;
diff --git a/xkb/xkbPrKeyEv.c b/xkb/xkbPrKeyEv.c
index ee521be69..9944c8886 100644
--- a/xkb/xkbPrKeyEv.c
+++ b/xkb/xkbPrKeyEv.c
@@ -1,4 +1,3 @@
-/* $Xorg: xkbPrKeyEv.c,v 1.3 2000/08/17 19:53:48 cpqbld Exp $ */
/************************************************************
Copyright (c) 1993 by Silicon Graphics Computer Systems, Inc.
@@ -24,7 +23,6 @@ OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH
THE USE OR PERFORMANCE OF THIS SOFTWARE.
********************************************************/
-/* $XFree86: xc/programs/Xserver/xkb/xkbPrKeyEv.c,v 3.8 2001/01/17 22:37:15 dawes Exp $ */
#ifdef HAVE_DIX_CONFIG_H
#include <dix-config.h>
@@ -152,11 +150,7 @@ unsigned ndx;
break;
default:
ErrorF("unknown key behavior 0x%04x\n",behavior.type);
-#if defined(MetroLink)
- return;
-#else
break;
-#endif
}
}
XkbHandleActions(keybd,keybd,xE,count);
diff --git a/xkb/xkbPrOtherEv.c b/xkb/xkbPrOtherEv.c
index 82f476790..f84e70995 100644
--- a/xkb/xkbPrOtherEv.c
+++ b/xkb/xkbPrOtherEv.c
@@ -1,4 +1,3 @@
-/* $Xorg: xkbPrOtherEv.c,v 1.3 2000/08/17 19:53:48 cpqbld Exp $ */
/************************************************************
Copyright (c) 1995 by Silicon Graphics Computer Systems, Inc.
diff --git a/xkb/xkbSwap.c b/xkb/xkbSwap.c
index be1cd94fc..9a04b77d5 100644
--- a/xkb/xkbSwap.c
+++ b/xkb/xkbSwap.c
@@ -1,4 +1,3 @@
-/* $Xorg: xkbSwap.c,v 1.3 2000/08/17 19:53:48 cpqbld Exp $ */
/************************************************************
Copyright (c) 1993 by Silicon Graphics Computer Systems, Inc.
@@ -24,7 +23,6 @@ OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH
THE USE OR PERFORMANCE OF THIS SOFTWARE.
********************************************************/
-/* $XFree86: xc/programs/Xserver/xkb/xkbSwap.c,v 3.4 2003/09/13 16:39:01 dawes Exp $ */
#ifdef HAVE_DIX_CONFIG_H
#include <dix-config.h>
diff --git a/xkb/xkbUtils.c b/xkb/xkbUtils.c
index 4c0db6f2e..c9c5ed018 100644
--- a/xkb/xkbUtils.c
+++ b/xkb/xkbUtils.c
@@ -1,4 +1,3 @@
-/* $Xorg: xkbUtils.c,v 1.3 2000/08/17 19:53:48 cpqbld Exp $ */
/************************************************************
Copyright (c) 1993 by Silicon Graphics Computer Systems, Inc.
@@ -24,12 +23,12 @@ OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH
THE USE OR PERFORMANCE OF THIS SOFTWARE.
********************************************************/
-/* $XFree86: xc/programs/Xserver/xkb/xkbUtils.c,v 3.16 2003/11/03 05:12:02 tsi Exp $ */
#ifdef HAVE_DIX_CONFIG_H
#include <dix-config.h>
#endif
+#include "os.h"
#include <stdio.h>
#include <ctype.h>
#include <math.h>
@@ -46,24 +45,10 @@ THE USE OR PERFORMANCE OF THIS SOFTWARE.
#include <X11/extensions/XKBgeom.h>
#include "xkb.h"
-#ifdef MODE_SWITCH
-extern Bool noKME; /* defined in os/utils.c */
-#endif
-
int XkbDisableLockActions = 0;
/***====================================================================***/
-#ifndef RETURN_SHOULD_REPEAT
-#if (defined(__osf__) && defined(__alpha))
-#define RETURN_SHOULD_REPEAT 1
-#else
-#define RETURN_SHOULD_REPEAT 0
-#endif
-#endif
-
-/***====================================================================***/
-
DeviceIntPtr
_XkbLookupAnyDevice(int id,int *why_rtrn)
{
@@ -93,6 +78,8 @@ _XkbLookupKeyboard(int id,int *why_rtrn)
{
DeviceIntPtr dev = NULL;
+ if (id == XkbDfltXIId)
+ id = XkbUseCoreKbd;
if ((dev= _XkbLookupAnyDevice(id,why_rtrn))==NULL)
return NULL;
else if ((!dev->key)||(!dev->key->xkbInfo)) {
@@ -123,6 +110,8 @@ _XkbLookupLedDevice(int id,int *why_rtrn)
{
DeviceIntPtr dev = NULL;
+ if (id == XkbDfltXIId)
+ id = XkbUseCorePtr;
if ((dev= _XkbLookupAnyDevice(id,why_rtrn))==NULL)
return NULL;
else if ((!dev->kbdfeed)&&(!dev->leds)) {
@@ -243,7 +232,7 @@ XkbMapChangesPtr mc;
xkb->min_key_code= first;
/* 1/12/95 (ef) -- XXX! should zero out the new maps */
changes->map.changed|= XkbKeycodesMask;
-generate a NewKeyboard notify here?
+/* generate a NewKeyboard notify here? */
}
}
#endif
@@ -561,12 +550,6 @@ CARD8 keysPerMod[XkbNumModifiers];
}
}
}
-#ifdef MODE_SWITCH
- /* Fix up any of the KME stuff if we changed the core description.
- */
- if (!noKME)
- HandleKeyBinding(keyc, &keyc->curKeySyms);
-#endif
return;
}
@@ -756,12 +739,12 @@ unsigned char grp;
grp= state->locked_group;
- if (grp>=ctrls->num_groups || grp < 0)
- state->locked_group= XkbAdjustGroup(grp,ctrls);
+ if (grp>=ctrls->num_groups)
+ state->locked_group= XkbAdjustGroup(XkbCharToInt(grp),ctrls);
grp= state->locked_group+state->base_group+state->latched_group;
- if (grp>=ctrls->num_groups || grp < 0)
- state->group= XkbAdjustGroup(grp,ctrls);
+ if (grp>=ctrls->num_groups)
+ state->group= XkbAdjustGroup(XkbCharToInt(grp),ctrls);
else state->group= grp;
XkbComputeCompatState(xkbi);
return;
@@ -971,3 +954,1156 @@ XkbConvertCase(register KeySym sym, KeySym *lower, KeySym *upper)
break;
}
}
+
+
+/**
+ * Copy an XKB map from src to dst, reallocating when necessary: if some
+ * map components are present in one, but not in the other, the destination
+ * components will be allocated or freed as necessary.
+ *
+ * Basic map consistency is assumed on both sides, so maps with random
+ * uninitialised data (e.g. names->radio_grous == NULL, names->num_rg == 19)
+ * _will_ cause failures. You've been warned.
+ *
+ * Returns TRUE on success, or FALSE on failure. If this function fails,
+ * dst may be in an inconsistent state: all its pointers are guaranteed
+ * to remain valid, but part of the map may be from src and part from dst.
+ *
+ * FIXME: This function wants to be broken up into multiple functions.
+ */
+Bool
+XkbCopyKeymap(XkbDescPtr src, XkbDescPtr dst, Bool sendNotifies)
+{
+ int i = 0, j = 0, k = 0;
+ void *tmp = NULL;
+ XkbColorPtr scolor = NULL, dcolor = NULL;
+ XkbDoodadPtr sdoodad = NULL, ddoodad = NULL;
+ XkbKeyTypePtr stype = NULL, dtype = NULL;
+ XkbOutlinePtr soutline = NULL, doutline = NULL;
+ XkbPropertyPtr sprop = NULL, dprop = NULL;
+ XkbRowPtr srow = NULL, drow = NULL;
+ XkbSectionPtr ssection = NULL, dsection = NULL;
+ XkbShapePtr sshape = NULL, dshape = NULL;
+ DeviceIntPtr pDev = NULL, tmpDev = NULL;
+ xkbMapNotify mn;
+ xkbNewKeyboardNotify nkn;
+
+ if (!src || !dst || src == dst)
+ return FALSE;
+
+ /* client map */
+ if (src->map) {
+ if (!dst->map) {
+ tmp = xcalloc(1, sizeof(XkbClientMapRec));
+ if (!tmp)
+ return FALSE;
+ dst->map = tmp;
+ }
+
+ if (src->map->syms) {
+ if (src->map->size_syms != dst->map->size_syms) {
+ if (dst->map->syms)
+ tmp = xrealloc(dst->map->syms,
+ src->map->size_syms * sizeof(KeySym));
+ else
+ tmp = xalloc(src->map->size_syms * sizeof(KeySym));
+ if (!tmp)
+ return FALSE;
+ dst->map->syms = tmp;
+
+ }
+ memcpy(dst->map->syms, src->map->syms,
+ src->map->size_syms * sizeof(KeySym));
+ }
+ else {
+ if (dst->map->syms) {
+ xfree(dst->map->syms);
+ dst->map->syms = NULL;
+ }
+ }
+ dst->map->num_syms = src->map->num_syms;
+ dst->map->size_syms = src->map->size_syms;
+
+ if (src->map->key_sym_map) {
+ if (src->max_key_code != dst->max_key_code) {
+ if (dst->map->key_sym_map)
+ tmp = xrealloc(dst->map->key_sym_map,
+ (src->max_key_code + 1) *
+ sizeof(XkbSymMapRec));
+ else
+ tmp = xalloc((src->max_key_code + 1) *
+ sizeof(XkbSymMapRec));
+ if (!tmp)
+ return FALSE;
+ dst->map->key_sym_map = tmp;
+ }
+ memcpy(dst->map->key_sym_map, src->map->key_sym_map,
+ (src->max_key_code + 1) * sizeof(XkbSymMapRec));
+ }
+ else {
+ if (dst->map->key_sym_map) {
+ xfree(dst->map->key_sym_map);
+ dst->map->key_sym_map = NULL;
+ }
+ }
+
+ if (src->map->types && src->map->num_types) {
+ if (src->map->num_types > dst->map->size_types ||
+ !dst->map->types || !dst->map->size_types) {
+ if (dst->map->types && dst->map->size_types) {
+ tmp = xrealloc(dst->map->types,
+ src->map->num_types * sizeof(XkbKeyTypeRec));
+ if (!tmp)
+ return FALSE;
+ dst->map->types = tmp;
+ bzero(dst->map->types +
+ (dst->map->num_types * sizeof(XkbKeyTypeRec)),
+ (src->map->num_types - dst->map->size_types) *
+ sizeof(XkbKeyTypeRec));
+ }
+ else {
+ tmp = xcalloc(src->map->num_types, sizeof(XkbKeyTypeRec));
+ if (!tmp)
+ return FALSE;
+ dst->map->types = tmp;
+ }
+ }
+ else if (src->map->num_types < dst->map->num_types &&
+ dst->map->types) {
+ for (i = src->map->num_types, dtype = (dst->map->types + i);
+ i < dst->map->num_types; i++, dtype++) {
+ if (dtype->level_names)
+ xfree(dtype->level_names);
+ dtype->level_names = NULL;
+ dtype->num_levels = 0;
+ if (dtype->map_count) {
+ if (dtype->map)
+ xfree(dtype->map);
+ if (dtype->preserve)
+ xfree(dtype->preserve);
+ }
+ }
+ }
+
+ stype = src->map->types;
+ dtype = dst->map->types;
+ for (i = 0; i < src->map->num_types; i++, dtype++, stype++) {
+ if (stype->num_levels && stype->level_names) {
+ if (stype->num_levels != dtype->num_levels &&
+ dtype->num_levels && dtype->level_names &&
+ i < dst->map->num_types) {
+ tmp = xrealloc(dtype->level_names,
+ stype->num_levels * sizeof(Atom));
+ if (!tmp)
+ continue;
+ dtype->level_names = tmp;
+ }
+ else if (!dtype->num_levels || !dtype->level_names ||
+ i >= dst->map->num_types) {
+ tmp = xalloc(stype->num_levels * sizeof(Atom));
+ if (!tmp)
+ continue;
+ dtype->level_names = tmp;
+ }
+ dtype->num_levels = stype->num_levels;
+ memcpy(dtype->level_names, stype->level_names,
+ stype->num_levels * sizeof(Atom));
+ }
+ else {
+ if (dtype->num_levels && dtype->level_names &&
+ i < dst->map->num_types)
+ xfree(dtype->level_names);
+ dtype->num_levels = 0;
+ dtype->level_names = NULL;
+ }
+
+ dtype->name = stype->name;
+ memcpy(&dtype->mods, &stype->mods, sizeof(XkbModsRec));
+
+ if (stype->map_count) {
+ if (stype->map) {
+ if (stype->map_count != dtype->map_count &&
+ dtype->map_count && dtype->map &&
+ i < dst->map->num_types) {
+ tmp = xrealloc(dtype->map,
+ stype->map_count *
+ sizeof(XkbKTMapEntryRec));
+ if (!tmp)
+ return FALSE;
+ dtype->map = tmp;
+ }
+ else if (!dtype->map_count || !dtype->map ||
+ i >= dst->map->num_types) {
+ tmp = xalloc(stype->map_count *
+ sizeof(XkbKTMapEntryRec));
+ if (!tmp)
+ return FALSE;
+ dtype->map = tmp;
+ }
+
+ memcpy(dtype->map, stype->map,
+ stype->map_count * sizeof(XkbKTMapEntryRec));
+ }
+ else {
+ if (dtype->map && i < dst->map->num_types)
+ xfree(dtype->map);
+ dtype->map = NULL;
+ }
+
+ if (stype->preserve) {
+ if (stype->map_count != dtype->map_count &&
+ dtype->map_count && dtype->preserve &&
+ i < dst->map->num_types) {
+ tmp = xrealloc(dtype->preserve,
+ stype->map_count *
+ sizeof(XkbModsRec));
+ if (!tmp)
+ return FALSE;
+ dtype->preserve = tmp;
+ }
+ else if (!dtype->preserve || !dtype->map_count ||
+ i >= dst->map->num_types) {
+ tmp = xalloc(stype->map_count *
+ sizeof(XkbModsRec));
+ if (!tmp)
+ return FALSE;
+ dtype->preserve = tmp;
+ }
+
+ memcpy(dtype->preserve, stype->preserve,
+ stype->map_count * sizeof(XkbModsRec));
+ }
+ else {
+ if (dtype->preserve && i < dst->map->num_types)
+ xfree(dtype->preserve);
+ dtype->preserve = NULL;
+ }
+
+ dtype->map_count = stype->map_count;
+ }
+ else {
+ if (dtype->map_count && i < dst->map->num_types) {
+ if (dtype->map)
+ xfree(dtype->map);
+ if (dtype->preserve)
+ xfree(dtype->preserve);
+ }
+ dtype->map_count = 0;
+ dtype->map = NULL;
+ dtype->preserve = NULL;
+ }
+ }
+ }
+ else {
+ if (dst->map->types) {
+ for (i = 0, dtype = dst->map->types; i < dst->map->num_types;
+ i++, dtype++) {
+ if (dtype->level_names)
+ xfree(dtype->level_names);
+ if (dtype->map && dtype->map_count)
+ xfree(dtype->map);
+ if (dtype->preserve && dtype->map_count)
+ xfree(dtype->preserve);
+ }
+ xfree(dst->map->types);
+ dst->map->types = NULL;
+ }
+ }
+ dst->map->size_types = src->map->num_types;
+ dst->map->num_types = src->map->num_types;
+
+ if (src->map->modmap) {
+ if (src->max_key_code != dst->max_key_code) {
+ if (dst->map->modmap)
+ tmp = xrealloc(dst->map->modmap, src->max_key_code + 1);
+ else
+ tmp = xalloc(src->max_key_code + 1);
+ if (!tmp)
+ return FALSE;
+ dst->map->syms = tmp;
+ }
+ memcpy(dst->map->modmap, src->map->modmap, src->max_key_code + 1);
+ }
+ else {
+ if (dst->map->modmap) {
+ xfree(dst->map->modmap);
+ dst->map->modmap = NULL;
+ }
+ }
+ }
+ else {
+ if (dst->map)
+ XkbFreeClientMap(dst, XkbAllClientInfoMask, True);
+ }
+
+ /* server map */
+ if (src->server) {
+ if (!dst->server) {
+ tmp = xcalloc(1, sizeof(XkbServerMapRec));
+ if (!tmp)
+ return FALSE;
+ dst->server = tmp;
+ }
+
+ if (src->server->explicit) {
+ if (src->max_key_code != dst->max_key_code) {
+ if (dst->server->explicit)
+ tmp = xrealloc(dst->server->explicit, src->max_key_code + 1);
+ else
+ tmp = xalloc(src->max_key_code + 1);
+ if (!tmp)
+ return FALSE;
+ dst->server->explicit = tmp;
+ }
+ memcpy(dst->server->explicit, src->server->explicit,
+ src->max_key_code + 1);
+ }
+ else {
+ if (dst->server->explicit) {
+ xfree(dst->server->explicit);
+ dst->server->explicit = NULL;
+ }
+ }
+
+ if (src->server->acts) {
+ if (src->server->size_acts != dst->server->size_acts) {
+ if (dst->server->acts)
+ tmp = xrealloc(dst->server->acts,
+ src->server->size_acts * sizeof(XkbAction));
+ else
+ tmp = xalloc(src->server->size_acts * sizeof(XkbAction));
+ if (!tmp)
+ return FALSE;
+ dst->server->acts = tmp;
+ }
+ memcpy(dst->server->acts, src->server->acts,
+ src->server->size_acts * sizeof(XkbAction));
+ }
+ else {
+ if (dst->server->acts) {
+ xfree(dst->server->acts);
+ dst->server->acts = NULL;
+ }
+ }
+ dst->server->size_acts = src->server->size_acts;
+ dst->server->num_acts = src->server->num_acts;
+
+ if (src->server->key_acts) {
+ if (src->max_key_code != dst->max_key_code) {
+ if (dst->server->key_acts)
+ tmp = xrealloc(dst->server->key_acts,
+ (src->max_key_code + 1) *
+ sizeof(unsigned short));
+ else
+ tmp = xalloc((src->max_key_code + 1) *
+ sizeof(unsigned short));
+ if (!tmp)
+ return FALSE;
+ dst->server->key_acts = tmp;
+ }
+ memcpy(dst->server->key_acts, src->server->key_acts,
+ (src->max_key_code + 1) * sizeof(unsigned short));
+ }
+ else {
+ if (dst->server->key_acts) {
+ xfree(dst->server->key_acts);
+ dst->server->key_acts = NULL;
+ }
+ }
+
+ if (src->server->behaviors) {
+ if (src->max_key_code != dst->max_key_code) {
+ if (dst->server->behaviors)
+ tmp = xrealloc(dst->server->behaviors,
+ (src->max_key_code + 1) *
+ sizeof(XkbBehavior));
+ else
+ tmp = xalloc((src->max_key_code + 1) *
+ sizeof(XkbBehavior));
+ if (!tmp)
+ return FALSE;
+ dst->server->behaviors = tmp;
+ }
+ memcpy(dst->server->behaviors, src->server->behaviors,
+ (src->max_key_code + 1) * sizeof(XkbBehavior));
+ }
+ else {
+ if (dst->server->behaviors) {
+ xfree(dst->server->behaviors);
+ dst->server->behaviors = NULL;
+ }
+ }
+
+ memcpy(dst->server->vmods, src->server->vmods, XkbNumVirtualMods);
+
+ if (src->server->vmodmap) {
+ if (src->max_key_code != dst->max_key_code) {
+ if (dst->server->vmodmap)
+ tmp = xrealloc(dst->server->vmodmap,
+ (src->max_key_code + 1) *
+ sizeof(unsigned short));
+ else
+ tmp = xalloc((src->max_key_code + 1) *
+ sizeof(unsigned short));
+ if (!tmp)
+ return FALSE;
+ dst->server->vmodmap = tmp;
+ }
+ memcpy(dst->server->vmodmap, src->server->vmodmap,
+ (src->max_key_code + 1) * sizeof(unsigned short));
+ }
+ else {
+ if (dst->server->vmodmap) {
+ xfree(dst->server->vmodmap);
+ dst->server->vmodmap = NULL;
+ }
+ }
+ }
+ else {
+ if (dst->server)
+ XkbFreeServerMap(dst, XkbAllServerInfoMask, True);
+ }
+
+ /* indicators */
+ if (src->indicators) {
+ if (!dst->indicators) {
+ dst->indicators = xalloc(sizeof(XkbIndicatorRec));
+ if (!dst->indicators)
+ return FALSE;
+ }
+ memcpy(dst->indicators, src->indicators, sizeof(XkbIndicatorRec));
+ }
+ else {
+ if (dst->indicators) {
+ xfree(dst->indicators);
+ dst->indicators = NULL;
+ }
+ }
+
+ /* controls */
+ if (src->ctrls) {
+ if (!dst->ctrls) {
+ dst->ctrls = xalloc(sizeof(XkbControlsRec));
+ if (!dst->ctrls)
+ return FALSE;
+ }
+ memcpy(dst->ctrls, src->ctrls, sizeof(XkbControlsRec));
+ }
+ else {
+ if (dst->ctrls) {
+ xfree(dst->ctrls);
+ dst->ctrls = NULL;
+ }
+ }
+
+ /* names */
+ if (src->names) {
+ if (!dst->names) {
+ dst->names = xcalloc(1, sizeof(XkbNamesRec));
+ if (!dst->names)
+ return FALSE;
+ }
+
+ if (src->names->keys) {
+ if (src->max_key_code != dst->max_key_code) {
+ if (dst->names->keys)
+ tmp = xrealloc(dst->names->keys, (src->max_key_code + 1) *
+ sizeof(XkbKeyNameRec));
+ else
+ tmp = xalloc((src->max_key_code + 1) *
+ sizeof(XkbKeyNameRec));
+ if (!tmp)
+ return FALSE;
+ dst->names->keys = tmp;
+ }
+ memcpy(dst->names->keys, src->names->keys,
+ (src->max_key_code + 1) * sizeof(XkbKeyNameRec));
+ }
+ else {
+ if (dst->names->keys) {
+ xfree(dst->names->keys);
+ dst->names->keys = NULL;
+ }
+ }
+
+ if (src->names->num_key_aliases) {
+ if (src->names->num_key_aliases != dst->names->num_key_aliases) {
+ if (dst->names->key_aliases)
+ tmp = xrealloc(dst->names->key_aliases,
+ src->names->num_key_aliases *
+ sizeof(XkbKeyAliasRec));
+ else
+ tmp = xalloc(src->names->num_key_aliases *
+ sizeof(XkbKeyAliasRec));
+ if (!tmp)
+ return FALSE;
+ dst->names->key_aliases = tmp;
+ }
+ memcpy(dst->names->key_aliases, src->names->key_aliases,
+ src->names->num_key_aliases * sizeof(XkbKeyAliasRec));
+ }
+ else {
+ if (dst->names->key_aliases) {
+ xfree(dst->names->key_aliases);
+ dst->names->key_aliases = NULL;
+ }
+ }
+ dst->names->num_key_aliases = src->names->num_key_aliases;
+
+ if (src->names->num_rg) {
+ if (src->names->num_rg != dst->names->num_rg) {
+ if (dst->names->radio_groups)
+ tmp = xrealloc(dst->names->radio_groups,
+ src->names->num_rg * sizeof(Atom));
+ else
+ tmp = xalloc(src->names->num_rg * sizeof(Atom));
+ if (!tmp)
+ return FALSE;
+ dst->names->radio_groups = tmp;
+ }
+ memcpy(dst->names->radio_groups, src->names->radio_groups,
+ src->names->num_rg * sizeof(Atom));
+ }
+ else {
+ if (dst->names->radio_groups)
+ xfree(dst->names->radio_groups);
+ }
+ dst->names->num_rg = src->names->num_rg;
+
+ dst->names->keycodes = src->names->keycodes;
+ dst->names->geometry = src->names->geometry;
+ dst->names->symbols = src->names->symbols;
+ dst->names->types = src->names->types;
+ dst->names->compat = src->names->compat;
+ dst->names->phys_symbols = src->names->phys_symbols;
+
+ memcpy(dst->names->vmods, src->names->vmods,
+ XkbNumVirtualMods * sizeof(Atom));
+ memcpy(dst->names->indicators, src->names->indicators,
+ XkbNumIndicators * sizeof(Atom));
+ memcpy(dst->names->groups, src->names->groups,
+ XkbNumKbdGroups * sizeof(Atom));
+ }
+ else {
+ if (dst->names)
+ XkbFreeNames(dst, XkbAllNamesMask, True);
+ }
+
+ /* compat */
+ if (src->compat) {
+ if (!dst->compat) {
+ dst->compat = xcalloc(1, sizeof(XkbCompatMapRec));
+ if (!dst->compat)
+ return FALSE;
+ }
+
+ if (src->compat->sym_interpret) {
+ if (src->compat->size_si != dst->compat->size_si) {
+ if (dst->compat->sym_interpret)
+ tmp = xrealloc(dst->compat->sym_interpret,
+ src->compat->size_si *
+ sizeof(XkbSymInterpretRec));
+ else
+ tmp = xalloc(src->compat->size_si *
+ sizeof(XkbSymInterpretRec));
+ if (!tmp)
+ return FALSE;
+ dst->compat->sym_interpret = tmp;
+ }
+ memcpy(dst->compat->sym_interpret, src->compat->sym_interpret,
+ src->compat->size_si * sizeof(XkbSymInterpretRec));
+ }
+ else {
+ if (dst->compat->sym_interpret) {
+ xfree(dst->compat->sym_interpret);
+ dst->compat->sym_interpret = NULL;
+ }
+ }
+ dst->compat->num_si = src->compat->num_si;
+ dst->compat->size_si = src->compat->size_si;
+
+ memcpy(dst->compat->groups, src->compat->groups,
+ XkbNumKbdGroups * sizeof(XkbModsRec));
+ }
+ else {
+ if (dst->compat)
+ XkbFreeCompatMap(dst, XkbAllCompatMask, True);
+ }
+
+ /* geometry */
+ if (src->geom) {
+ if (!dst->geom) {
+ dst->geom = xcalloc(sizeof(XkbGeometryRec), 1);
+ if (!dst->geom)
+ return FALSE;
+ }
+
+ /* properties */
+ if (src->geom->num_properties) {
+ if (src->geom->num_properties != dst->geom->sz_properties) {
+ if (src->geom->num_properties < dst->geom->sz_properties) {
+ for (i = src->geom->num_properties,
+ dprop = dst->geom->properties +
+ src->geom->num_properties;
+ i < dst->geom->num_properties;
+ i++, dprop++) {
+ xfree(dprop->name);
+ xfree(dprop->value);
+ }
+ }
+
+ if (dst->geom->sz_properties)
+ tmp = xrealloc(dst->geom->properties,
+ src->geom->num_properties *
+ sizeof(XkbPropertyRec));
+ else
+ tmp = xalloc(src->geom->num_properties *
+ sizeof(XkbPropertyRec));
+ if (!tmp)
+ return FALSE;
+ dst->geom->properties = tmp;
+ }
+
+ dst->geom->sz_properties = src->geom->num_properties;
+
+ if (dst->geom->sz_properties > dst->geom->num_properties) {
+ bzero(dst->geom->properties + dst->geom->num_properties,
+ (dst->geom->sz_properties - dst->geom->num_properties) *
+ sizeof(XkbPropertyRec));
+ }
+
+ for (i = 0,
+ sprop = src->geom->properties,
+ dprop = dst->geom->properties;
+ i < src->geom->num_properties;
+ i++, sprop++, dprop++) {
+ if (i < dst->geom->num_properties) {
+ if (strlen(sprop->name) != strlen(dprop->name)) {
+ tmp = xrealloc(dprop->name, strlen(sprop->name) + 1);
+ if (!tmp)
+ return FALSE;
+ dprop->name = tmp;
+ }
+ if (strlen(sprop->value) != strlen(dprop->value)) {
+ tmp = xrealloc(dprop->value, strlen(sprop->value) + 1);
+ if (!tmp)
+ return FALSE;
+ dprop->value = tmp;
+ }
+ strcpy(dprop->name, sprop->name);
+ strcpy(dprop->value, sprop->value);
+ }
+ else {
+ dprop->name = xstrdup(sprop->name);
+ dprop->value = xstrdup(sprop->value);
+ }
+ }
+
+ dst->geom->num_properties = dst->geom->sz_properties;
+ }
+ else {
+ if (dst->geom->sz_properties) {
+ for (i = 0, dprop = dst->geom->properties;
+ i < dst->geom->num_properties;
+ i++, dprop++) {
+ xfree(dprop->name);
+ xfree(dprop->value);
+ }
+ xfree(dst->geom->properties);
+ dst->geom->properties = NULL;
+ }
+
+ dst->geom->num_properties = 0;
+ dst->geom->sz_properties = 0;
+ }
+
+ /* colors */
+ if (src->geom->num_colors) {
+ if (src->geom->num_colors != dst->geom->sz_colors) {
+ if (src->geom->num_colors < dst->geom->sz_colors) {
+ for (i = src->geom->num_colors,
+ dcolor = dst->geom->colors +
+ src->geom->num_colors;
+ i < dst->geom->num_colors;
+ i++, dcolor++) {
+ xfree(dcolor->spec);
+ }
+ }
+
+ if (dst->geom->sz_colors)
+ tmp = xrealloc(dst->geom->colors,
+ src->geom->num_colors *
+ sizeof(XkbColorRec));
+ else
+ tmp = xalloc(src->geom->num_colors *
+ sizeof(XkbColorRec));
+ if (!tmp)
+ return FALSE;
+ dst->geom->colors = tmp;
+ }
+
+ dst->geom->sz_colors = src->geom->num_colors;
+
+ if (dst->geom->sz_colors > dst->geom->num_colors) {
+ bzero(dst->geom->colors + dst->geom->num_colors,
+ (dst->geom->sz_colors - dst->geom->num_colors) *
+ sizeof(XkbColorRec));
+ }
+
+ for (i = 0,
+ scolor = src->geom->colors,
+ dcolor = dst->geom->colors;
+ i < src->geom->num_colors;
+ i++, scolor++, dcolor++) {
+ if (i < dst->geom->num_colors) {
+ if (strlen(scolor->spec) != strlen(dcolor->spec)) {
+ tmp = xrealloc(dcolor->spec, strlen(scolor->spec) + 1);
+ if (!tmp)
+ return FALSE;
+ dcolor->spec = tmp;
+ }
+ strcpy(dcolor->spec, scolor->spec);
+ }
+ else {
+ dcolor->spec = xstrdup(scolor->spec);
+ }
+ }
+
+ dst->geom->num_colors = dst->geom->sz_colors;
+ }
+ else {
+ if (dst->geom->sz_colors) {
+ for (i = 0, dcolor = dst->geom->colors;
+ i < dst->geom->num_colors;
+ i++, dcolor++) {
+ xfree(dcolor->spec);
+ }
+ xfree(dst->geom->colors);
+ dst->geom->colors = NULL;
+ }
+
+ dst->geom->num_colors = 0;
+ dst->geom->sz_colors = 0;
+ }
+
+ /* shapes */
+ /* shapes break down into outlines, which break down into points. */
+ if (dst->geom->num_shapes) {
+ for (i = 0, dshape = dst->geom->shapes;
+ i < dst->geom->num_shapes;
+ i++, dshape++) {
+ for (j = 0, doutline = dshape->outlines;
+ j < dshape->num_outlines;
+ j++, doutline++) {
+ if (doutline->sz_points)
+ xfree(doutline->points);
+ }
+
+ if (dshape->sz_outlines) {
+ xfree(dshape->outlines);
+ dshape->outlines = NULL;
+ }
+
+ dshape->num_outlines = 0;
+ dshape->sz_outlines = 0;
+ }
+ }
+
+ if (src->geom->num_shapes) {
+ tmp = xcalloc(src->geom->num_shapes, sizeof(XkbShapeRec));
+ if (!tmp)
+ return FALSE;
+ dst->geom->shapes = tmp;
+
+ for (i = 0, sshape = src->geom->shapes, dshape = dst->geom->shapes;
+ i < src->geom->num_shapes;
+ i++, sshape++, dshape++) {
+ if (sshape->num_outlines) {
+ tmp = xcalloc(sshape->num_outlines, sizeof(XkbOutlineRec));
+ if (!tmp)
+ return FALSE;
+ dshape->outlines = tmp;
+
+ for (j = 0,
+ soutline = sshape->outlines,
+ doutline = dshape->outlines;
+ j < sshape->num_outlines;
+ j++, soutline++, doutline++) {
+ if (soutline->num_points) {
+ tmp = xalloc(soutline->num_points *
+ sizeof(XkbPointRec));
+ if (!tmp)
+ return FALSE;
+ doutline->points = tmp;
+
+ memcpy(doutline->points, soutline->points,
+ soutline->num_points * sizeof(XkbPointRec));
+ }
+
+ doutline->num_points = soutline->num_points;
+ doutline->sz_points = soutline->sz_points;
+ }
+ }
+
+ dshape->num_outlines = sshape->num_outlines;
+ dshape->sz_outlines = sshape->num_outlines;
+ }
+
+ dst->geom->num_shapes = src->geom->num_shapes;
+ dst->geom->sz_shapes = src->geom->num_shapes;
+ }
+ else {
+ if (dst->geom->sz_shapes) {
+ xfree(dst->geom->shapes);
+ dst->geom->shapes = NULL;
+ }
+
+ dst->geom->num_shapes = 0;
+ dst->geom->sz_shapes = 0;
+ }
+
+ /* sections */
+ /* sections break down into doodads, and also into rows, which break
+ * down into keys. */
+ if (dst->geom->num_sections) {
+ for (i = 0, dsection = dst->geom->sections;
+ i < dst->geom->num_sections;
+ i++, dsection++) {
+ for (j = 0, drow = dsection->rows;
+ j < dsection->num_rows;
+ j++, drow++) {
+ if (drow->num_keys)
+ xfree(drow->keys);
+ }
+
+ if (dsection->num_rows)
+ xfree(dsection->rows);
+
+ /* cut and waste from geom/doodad below. */
+ for (j = 0, ddoodad = dsection->doodads;
+ j < dsection->num_doodads;
+ j++, ddoodad++) {
+ if (ddoodad->any.type == XkbTextDoodad) {
+ if (ddoodad->text.text) {
+ xfree(ddoodad->text.text);
+ ddoodad->text.text = NULL;
+ }
+ if (ddoodad->text.font) {
+ xfree(ddoodad->text.font);
+ ddoodad->text.font = NULL;
+ }
+ }
+ else if (ddoodad->any.type == XkbLogoDoodad) {
+ if (ddoodad->logo.logo_name) {
+ xfree(ddoodad->logo.logo_name);
+ ddoodad->logo.logo_name = NULL;
+ }
+ }
+ }
+
+ if (dsection->num_doodads)
+ xfree(dsection->doodads);
+ }
+
+ dst->geom->num_sections = 0;
+ }
+
+ if (src->geom->num_sections) {
+ if (dst->geom->sz_sections)
+ tmp = xrealloc(dst->geom->sections,
+ src->geom->num_sections *
+ sizeof(XkbSectionRec));
+ else
+ tmp = xalloc(src->geom->num_sections * sizeof(XkbSectionRec));
+ if (!tmp)
+ return FALSE;
+ dst->geom->sections = tmp;
+
+ for (i = 0,
+ ssection = src->geom->sections,
+ dsection = dst->geom->sections;
+ i < src->geom->num_sections;
+ i++, ssection++, dsection++) {
+ if (ssection->num_rows) {
+ tmp = xcalloc(ssection->num_rows, sizeof(XkbRowRec));
+ if (!tmp)
+ return FALSE;
+ dsection->rows = tmp;
+ }
+ for (j = 0, srow = ssection->rows, drow = dsection->rows;
+ j < ssection->num_rows;
+ j++, srow++, drow++) {
+ if (srow->num_keys) {
+ tmp = xalloc(srow->num_keys * sizeof(XkbKeyRec));
+ if (!tmp)
+ return FALSE;
+ drow->keys = tmp;
+ memcpy(drow->keys, srow->keys,
+ srow->num_keys * sizeof(XkbKeyRec));
+ }
+ drow->num_keys = srow->num_keys;
+ drow->sz_keys = srow->num_keys;
+ }
+
+ if (ssection->num_doodads) {
+ tmp = xcalloc(ssection->num_doodads, sizeof(XkbDoodadRec));
+ if (!tmp)
+ return FALSE;
+ dsection->doodads = tmp;
+ }
+ for (k = 0,
+ sdoodad = ssection->doodads,
+ ddoodad = dsection->doodads;
+ k < ssection->num_doodads;
+ k++, sdoodad++, ddoodad++) {
+ if (sdoodad->any.type == XkbTextDoodad) {
+ if (sdoodad->text.text)
+ ddoodad->text.text =
+ xstrdup(sdoodad->text.text);
+ if (sdoodad->text.font)
+ ddoodad->text.font =
+ xstrdup(sdoodad->text.font);
+ }
+ else if (sdoodad->any.type == XkbLogoDoodad) {
+ if (sdoodad->logo.logo_name)
+ ddoodad->logo.logo_name =
+ xstrdup(sdoodad->logo.logo_name);
+ }
+ ddoodad->any.type = sdoodad->any.type;
+ }
+ dsection->num_doodads = ssection->num_doodads;
+ dsection->sz_doodads = ssection->num_doodads;
+ }
+ }
+ else {
+ if (dst->geom->sz_sections) {
+ xfree(dst->geom->sections);
+ dst->geom->sections = NULL;
+ }
+
+ dst->geom->num_sections = 0;
+ dst->geom->sz_sections = 0;
+ }
+
+ /* doodads */
+ if (dst->geom->num_doodads) {
+ for (i = src->geom->num_doodads,
+ ddoodad = dst->geom->doodads +
+ src->geom->num_doodads;
+ i < dst->geom->num_doodads;
+ i++, ddoodad++) {
+ if (ddoodad->any.type == XkbTextDoodad) {
+ if (ddoodad->text.text) {
+ xfree(ddoodad->text.text);
+ ddoodad->text.text = NULL;
+ }
+ if (ddoodad->text.font) {
+ xfree(ddoodad->text.font);
+ ddoodad->text.font = NULL;
+ }
+ }
+ else if (ddoodad->any.type == XkbLogoDoodad) {
+ if (ddoodad->logo.logo_name) {
+ xfree(ddoodad->logo.logo_name);
+ ddoodad->logo.logo_name = NULL;
+ }
+ }
+ }
+ }
+
+ if (src->geom->num_doodads) {
+ if (dst->geom->sz_doodads)
+ tmp = xrealloc(dst->geom->doodads,
+ src->geom->num_doodads *
+ sizeof(XkbDoodadRec));
+ else
+ tmp = xalloc(src->geom->num_doodads *
+ sizeof(XkbDoodadRec));
+ if (!tmp)
+ return FALSE;
+ bzero(tmp, src->geom->num_doodads * sizeof(XkbDoodadRec));
+ dst->geom->doodads = tmp;
+
+ dst->geom->sz_doodads = src->geom->num_doodads;
+
+ for (i = 0,
+ sdoodad = src->geom->doodads,
+ ddoodad = dst->geom->doodads;
+ i < src->geom->num_doodads;
+ i++, sdoodad++, ddoodad++) {
+ ddoodad->any.type = sdoodad->any.type;
+ if (sdoodad->any.type == XkbTextDoodad) {
+ if (sdoodad->text.text)
+ ddoodad->text.text = xstrdup(sdoodad->text.text);
+ if (sdoodad->text.font)
+ ddoodad->text.font = xstrdup(sdoodad->text.font);
+ }
+ else if (sdoodad->any.type == XkbLogoDoodad) {
+ if (sdoodad->logo.logo_name)
+ ddoodad->logo.logo_name =
+ xstrdup(sdoodad->logo.logo_name);
+ }
+ }
+
+ dst->geom->num_doodads = dst->geom->sz_doodads;
+ }
+ else {
+ if (dst->geom->sz_doodads) {
+ xfree(dst->geom->doodads);
+ dst->geom->doodads = NULL;
+ }
+
+ dst->geom->num_doodads = 0;
+ dst->geom->sz_doodads = 0;
+ }
+
+ /* key aliases */
+ if (src->geom->num_key_aliases) {
+ if (src->geom->num_key_aliases != dst->geom->sz_key_aliases) {
+ if (dst->geom->sz_key_aliases)
+ tmp = xrealloc(dst->geom->key_aliases,
+ src->geom->num_key_aliases *
+ 2 * XkbKeyNameLength);
+ else
+ tmp = xalloc(src->geom->num_key_aliases *
+ 2 * XkbKeyNameLength);
+ if (!tmp)
+ return FALSE;
+ dst->geom->key_aliases = tmp;
+
+ dst->geom->sz_key_aliases = src->geom->num_key_aliases;
+ }
+
+ memcpy(dst->geom->key_aliases, src->geom->key_aliases,
+ src->geom->num_key_aliases * 2 * XkbKeyNameLength);
+
+ dst->geom->num_key_aliases = dst->geom->sz_key_aliases;
+ }
+ else {
+ if (dst->geom->sz_key_aliases && dst->geom->key_aliases) {
+ xfree(dst->geom->key_aliases);
+ dst->geom->key_aliases = NULL;
+ }
+ dst->geom->num_key_aliases = 0;
+ dst->geom->sz_key_aliases = 0;
+ }
+
+ /* font */
+ if (src->geom->label_font) {
+ if (!dst->geom->label_font) {
+ tmp = xalloc(strlen(src->geom->label_font));
+ if (!tmp)
+ return FALSE;
+ dst->geom->label_font = tmp;
+ }
+ else if (strlen(src->geom->label_font) !=
+ strlen(dst->geom->label_font)) {
+ tmp = xrealloc(dst->geom->label_font,
+ strlen(src->geom->label_font));
+ if (!tmp)
+ return FALSE;
+ dst->geom->label_font = tmp;
+ }
+
+ strcpy(dst->geom->label_font, src->geom->label_font);
+ i = XkbGeomColorIndex(src->geom, src->geom->label_color);
+ dst->geom->label_color = &(src->geom->colors[i]);
+ i = XkbGeomColorIndex(src->geom, src->geom->base_color);
+ dst->geom->base_color = &(src->geom->colors[i]);
+ }
+ else {
+ if (dst->geom->label_font) {
+ xfree(dst->geom->label_font);
+ dst->geom->label_font = NULL;
+ }
+ dst->geom->label_color = NULL;
+ dst->geom->base_color = NULL;
+ }
+
+ dst->geom->name = src->geom->name;
+ dst->geom->width_mm = src->geom->width_mm;
+ dst->geom->height_mm = src->geom->height_mm;
+ }
+ else
+ {
+ if (dst->geom) {
+ /* I LOVE THE DIFFERENT CALL SIGNATURE. REALLY, I DO. */
+ XkbFreeGeometry(dst->geom, XkbGeomAllMask, True);
+ dst->geom = NULL;
+ }
+ }
+
+ if (inputInfo.keyboard->key->xkbInfo &&
+ inputInfo.keyboard->key->xkbInfo->desc == dst) {
+ pDev = inputInfo.keyboard;
+ }
+ else {
+ for (tmpDev = inputInfo.devices; tmpDev && !pDev;
+ tmpDev = tmpDev->next) {
+ if (tmpDev->key && tmpDev->key->xkbInfo &&
+ tmpDev->key->xkbInfo->desc == dst) {
+ pDev = tmpDev;
+ break;
+ }
+ }
+ for (tmpDev = inputInfo.off_devices; tmpDev && !pDev;
+ tmpDev = tmpDev->next) {
+ if (tmpDev->key && tmpDev->key->xkbInfo &&
+ tmpDev->key->xkbInfo->desc == dst) {
+ pDev = tmpDev;
+ break;
+ }
+ }
+ }
+
+ if (sendNotifies) {
+ if (!pDev) {
+ ErrorF("XkbCopyKeymap: asked for notifies, but can't find device!\n");
+ }
+ else {
+ /* send NewKeyboardNotify if the keycode range changed, else
+ * just MapNotify. we also need to send NKN if the geometry
+ * changed (obviously ...). */
+ if ((src->min_key_code != dst->min_key_code ||
+ src->max_key_code != dst->max_key_code) && sendNotifies) {
+ nkn.oldMinKeyCode = dst->min_key_code;
+ nkn.oldMaxKeyCode = dst->max_key_code;
+ nkn.deviceID = nkn.oldDeviceID = pDev->id;
+ nkn.minKeyCode = src->min_key_code;
+ nkn.maxKeyCode = src->max_key_code;
+ nkn.requestMajor = XkbReqCode;
+ nkn.requestMinor = X_kbSetMap; /* XXX bare-faced lie */
+ nkn.changed = XkbAllNewKeyboardEventsMask;
+ XkbSendNewKeyboardNotify(pDev, &nkn);
+ }
+ else if (sendNotifies) {
+ mn.deviceID = pDev->id;
+ mn.minKeyCode = src->min_key_code;
+ mn.maxKeyCode = src->max_key_code;
+ mn.firstType = 0;
+ mn.nTypes = src->map->num_types;
+ mn.firstKeySym = src->min_key_code;
+ mn.nKeySyms = XkbNumKeys(src);
+ mn.firstKeyAct = src->min_key_code;
+ mn.nKeyActs = XkbNumKeys(src);
+ /* Cargo-culted from ProcXkbGetMap. */
+ mn.firstKeyBehavior = src->min_key_code;
+ mn.nKeyBehaviors = XkbNumKeys(src);
+ mn.firstKeyExplicit = src->min_key_code;
+ mn.nKeyExplicit = XkbNumKeys(src);
+ mn.firstModMapKey = src->min_key_code;
+ mn.nModMapKeys = XkbNumKeys(src);
+ mn.firstVModMapKey = src->min_key_code;
+ mn.nVModMapKeys = XkbNumKeys(src);
+ mn.virtualMods = ~0; /* ??? */
+ mn.changed = XkbAllMapComponentsMask;
+ XkbSendMapNotify(pDev, &mn);
+ }
+ }
+ }
+
+ dst->min_key_code = src->min_key_code;
+ dst->max_key_code = src->max_key_code;
+
+ return TRUE;
+}
diff --git a/xkb/xkberrs.c b/xkb/xkberrs.c
index 820edfdb6..095d573ea 100644
--- a/xkb/xkberrs.c
+++ b/xkb/xkberrs.c
@@ -1,4 +1,3 @@
-/* $Xorg: xkberrs.c,v 1.3 2000/08/17 19:46:44 cpqbld Exp $ */
/************************************************************
Copyright (c) 1994 by Silicon Graphics Computer Systems, Inc.
@@ -24,7 +23,6 @@
THE USE OR PERFORMANCE OF THIS SOFTWARE.
********************************************************/
-/* $XFree86: xc/lib/xkbfile/xkberrs.c,v 3.4 2001/07/29 05:01:13 tsi Exp $ */
#ifdef HAVE_DIX_CONFIG_H
#include <dix-config.h>
diff --git a/xkb/xkbfmisc.c b/xkb/xkbfmisc.c
index 3389ba88e..4130bd998 100644
--- a/xkb/xkbfmisc.c
+++ b/xkb/xkbfmisc.c
@@ -1,4 +1,3 @@
-/* $Xorg: xkbmisc.c,v 1.4 2000/08/17 19:46:44 cpqbld Exp $ */
/************************************************************
Copyright (c) 1995 by Silicon Graphics Computer Systems, Inc.
@@ -24,7 +23,6 @@
THE USE OR PERFORMANCE OF THIS SOFTWARE.
********************************************************/
-/* $XFree86: xc/lib/xkbfile/xkbmisc.c,v 1.7 2003/07/16 02:31:10 dawes Exp $ */
#ifdef HAVE_DIX_CONFIG_H
#include <dix-config.h>
@@ -50,16 +48,185 @@
#include <X11/extensions/XKBgeom.h>
#include "xkb.h"
+unsigned
+_XkbKSCheckCase(KeySym ks)
+{
+unsigned set,rtrn;
+
+ set= (ks & (~0xff)) >> 8;
+ rtrn= 0;
+ switch (set) {
+ case 0: /* latin 1 */
+ if (((ks>=XK_A)&&(ks<=XK_Z))||
+ ((ks>=XK_Agrave)&&(ks<=XK_THORN)&&(ks!=XK_multiply))) {
+ rtrn|= _XkbKSUpper;
+ }
+ if (((ks>=XK_a)&&(ks<=XK_z))||
+ ((ks>=XK_agrave)&&(ks<=XK_ydiaeresis))) {
+ rtrn|= _XkbKSLower;
+ }
+ break;
+ case 1: /* latin 2 */
+ if (((ks>=XK_Aogonek)&&(ks<=XK_Zabovedot)&&(ks!=XK_breve))||
+ ((ks>=XK_Racute)&&(ks<=XK_Tcedilla))) {
+ rtrn|= _XkbKSUpper;
+ }
+ if (((ks>=XK_aogonek)&&(ks<=XK_zabovedot)&&(ks!=XK_caron))||
+ ((ks>=XK_racute)&&(ks<=XK_tcedilla))) {
+ rtrn|= _XkbKSLower;
+ }
+ break;
+ case 2: /* latin 3 */
+ if (((ks>=XK_Hstroke)&&(ks<=XK_Jcircumflex))||
+ ((ks>=XK_Cabovedot)&&(ks<=XK_Scircumflex))) {
+ rtrn|= _XkbKSUpper;
+ }
+ if (((ks>=XK_hstroke)&&(ks<=XK_jcircumflex))||
+ ((ks>=XK_cabovedot)&&(ks<=XK_scircumflex))) {
+ rtrn|= _XkbKSLower;
+ }
+ break;
+ case 3: /* latin 4 */
+ if (((ks>=XK_Rcedilla)&&(ks<=XK_Tslash))||
+ (ks==XK_ENG)||
+ ((ks>=XK_Amacron)&&(ks<=XK_Umacron))) {
+ rtrn|= _XkbKSUpper;
+ }
+ if (((ks>=XK_rcedilla)&&(ks<=XK_tslash))||
+ (ks==XK_eng)||
+ ((ks>=XK_amacron)&&(ks<=XK_umacron))) {
+ rtrn|= _XkbKSLower;
+ }
+ break;
+ case 18: /* latin 8 */
+ if ((ks==XK_Babovedot)||
+ ((ks>=XK_Dabovedot)&&(ks<=XK_Wacute))||
+ ((ks>=XK_Ygrave)&&(ks<=XK_Fabovedot))||
+ (ks==XK_Mabovedot)||
+ (ks==XK_Pabovedot)||
+ (ks==XK_Sabovedot)||
+ (ks==XK_Wdiaeresis)||
+ ((ks>=XK_Wcircumflex)&&(ks<=XK_Ycircumflex))) {
+ rtrn|= _XkbKSUpper;
+ }
+ if ((ks==XK_babovedot)||
+ (ks==XK_dabovedot)||
+ (ks==XK_fabovedot)||
+ (ks==XK_mabovedot)||
+ ((ks>=XK_wgrave)&&(ks<=XK_wacute))||
+ (ks==XK_ygrave)||
+ ((ks>=XK_wdiaeresis)&&(ks<=XK_ycircumflex))) {
+ rtrn|= _XkbKSLower;
+ }
+ break;
+ case 19: /* latin 9 */
+ if ((ks==XK_OE)||(ks==XK_Ydiaeresis)) {
+ rtrn|= _XkbKSUpper;
+ }
+ if (ks==XK_oe) {
+ rtrn|= _XkbKSLower;
+ }
+ break;
+ }
+ return rtrn;
+}
+
+/***===================================================================***/
+
+Bool
+XkbLookupGroupAndLevel( XkbDescPtr xkb,
+ int key,
+ int * mods_inout,
+ int * grp_inout,
+ int * lvl_rtrn)
+{
+int nG,eG;
+
+ if ((!xkb)||(!XkbKeycodeInRange(xkb,key))||(!grp_inout))
+ return False;
+
+ nG= XkbKeyNumGroups(xkb,key);
+ eG= *grp_inout;
+
+ if ( nG==0 ) {
+ *grp_inout= 0;
+ if (lvl_rtrn!=NULL)
+ *lvl_rtrn= 0;
+ return False;
+ }
+ else if ( nG==1 ) {
+ eG= 0;
+ }
+ else if ( eG>=nG ) {
+ unsigned gI= XkbKeyGroupInfo(xkb,key);
+ switch (XkbOutOfRangeGroupAction(gI)) {
+ default:
+ eG %= nG;
+ break;
+ case XkbClampIntoRange:
+ eG = nG-1;
+ break;
+ case XkbRedirectIntoRange:
+ eG = XkbOutOfRangeGroupNumber(gI);
+ if (eG>=nG)
+ eG= 0;
+ break;
+ }
+ }
+ *grp_inout= eG;
+ if (mods_inout!=NULL) {
+ XkbKeyTypePtr type;
+ int preserve;
+
+ type = XkbKeyKeyType(xkb,key,eG);
+ if (lvl_rtrn!=NULL)
+ *lvl_rtrn= 0;
+ preserve= 0;
+ if (type->map) { /* find the shift level */
+ register int i;
+ register XkbKTMapEntryPtr entry;
+ for (i=0,entry=type->map;i<type->map_count;i++,entry++) {
+ if ((entry->active)&&
+ (((*mods_inout)&type->mods.mask)==entry->mods.mask)){
+ if (lvl_rtrn!=NULL)
+ *lvl_rtrn= entry->level;
+ if (type->preserve)
+ preserve= type->preserve[i].mask;
+ break;
+ }
+ }
+ }
+ (*mods_inout)&= ~(type->mods.mask&(~preserve));
+ }
+ return True;
+}
+
/***===================================================================***/
static Bool
XkbWriteSectionFromName(FILE *file,char *sectionName,char *name)
{
fprintf(file," xkb_%-20s { include \"%s\" };\n",sectionName,name);
- ErrorF(" xkb_%-20s { include \"%s\" };\n",sectionName,name);
return True;
}
+#define NEED_DESC(n) ((!n)||((n)[0]=='+')||((n)[0]=='|')||(strchr((n),'%')))
+#define COMPLETE(n) ((n)&&(!NEED_DESC(n)))
+
+/* ARGSUSED */
+static void
+_AddIncl( FILE * file,
+ XkbFileInfo * result,
+ Bool topLevel,
+ Bool showImplicit,
+ int index,
+ void * priv)
+{
+ if ((priv)&&(strcmp((char *)priv,"%")!=0))
+ fprintf(file," include \"%s\"\n",(char *)priv);
+ return;
+}
+
Bool
XkbWriteXKBKeymapForNames( FILE * file,
XkbComponentNamesPtr names,
@@ -68,29 +235,229 @@ XkbWriteXKBKeymapForNames( FILE * file,
unsigned want,
unsigned need)
{
- if (!names || (!names->keycodes && !names->types && !names->compat &&
- !names->symbols && !names->geometry))
- return False;
-
- fprintf(file, "xkb_keymap \"%s\" {\n", names->keymap ? names->keymap :
- "default");
-
- if (names->keycodes)
- XkbWriteSectionFromName(file, "keycodes", names->keycodes);
- if (names->types)
- XkbWriteSectionFromName(file, "types", names->types);
- if (names->compat)
- XkbWriteSectionFromName(file, "compatibility", names->compat);
- if (names->symbols)
- XkbWriteSectionFromName(file, "symbols", names->symbols);
- if (names->geometry)
- XkbWriteSectionFromName(file, "geometry", names->geometry);
-
- fprintf(file,"};\n");
+char * name,*tmp;
+unsigned complete;
+XkbNamesPtr old_names;
+int multi_section;
+unsigned wantNames,wantConfig,wantDflts;
+XkbFileInfo finfo;
+
+ bzero(&finfo,sizeof(XkbFileInfo));
+
+ complete= 0;
+ if ((name=names->keymap)==NULL) name= "default";
+ if (COMPLETE(names->keycodes)) complete|= XkmKeyNamesMask;
+ if (COMPLETE(names->types)) complete|= XkmTypesMask;
+ if (COMPLETE(names->compat)) complete|= XkmCompatMapMask;
+ if (COMPLETE(names->symbols)) complete|= XkmSymbolsMask;
+ if (COMPLETE(names->geometry)) complete|= XkmGeometryMask;
+ want|= (complete|need);
+ if (want&XkmSymbolsMask)
+ want|= XkmKeyNamesMask|XkmTypesMask;
+
+ if (want==0)
+ return False;
+
+ if (xkb!=NULL) {
+ old_names= xkb->names;
+ finfo.type= 0;
+ finfo.defined= 0;
+ finfo.xkb= xkb;
+ if (!XkbDetermineFileType(&finfo,XkbXKBFile,NULL))
+ return False;
+ }
+ else old_names= NULL;
+ wantConfig= want&(~complete);
+ if (xkb!=NULL) {
+ if (wantConfig&XkmTypesMask) {
+ if ((!xkb->map) || (xkb->map->num_types<XkbNumRequiredTypes))
+ wantConfig&= ~XkmTypesMask;
+ }
+ if (wantConfig&XkmCompatMapMask) {
+ if ((!xkb->compat) || (xkb->compat->num_si<1))
+ wantConfig&= ~XkmCompatMapMask;
+ }
+ if (wantConfig&XkmSymbolsMask) {
+ if ((!xkb->map) || (!xkb->map->key_sym_map))
+ wantConfig&= ~XkmSymbolsMask;
+ }
+ if (wantConfig&XkmIndicatorsMask) {
+ if (!xkb->indicators)
+ wantConfig&= ~XkmIndicatorsMask;
+ }
+ if (wantConfig&XkmKeyNamesMask) {
+ if ((!xkb->names)||(!xkb->names->keys))
+ wantConfig&= ~XkmKeyNamesMask;
+ }
+ if ((wantConfig&XkmGeometryMask)&&(!xkb->geom))
+ wantConfig&= ~XkmGeometryMask;
+ }
+ else {
+ wantConfig= 0;
+ }
+ complete|= wantConfig;
+
+ wantDflts= 0;
+ wantNames= want&(~complete);
+ if ((xkb!=NULL) && (old_names!=NULL)) {
+ if (wantNames&XkmTypesMask) {
+ if (old_names->types!=None) {
+ tmp= XkbAtomGetString(dpy,old_names->types);
+ names->types= _XkbDupString(tmp);
+ }
+ else {
+ wantDflts|= XkmTypesMask;
+ }
+ complete|= XkmTypesMask;
+ }
+ if (wantNames&XkmCompatMapMask) {
+ if (old_names->compat!=None) {
+ tmp= XkbAtomGetString(dpy,old_names->compat);
+ names->compat= _XkbDupString(tmp);
+ }
+ else wantDflts|= XkmCompatMapMask;
+ complete|= XkmCompatMapMask;
+ }
+ if (wantNames&XkmSymbolsMask) {
+ if (old_names->symbols==None)
+ return False;
+ tmp= XkbAtomGetString(dpy,old_names->symbols);
+ names->symbols= _XkbDupString(tmp);
+ complete|= XkmSymbolsMask;
+ }
+ if (wantNames&XkmKeyNamesMask) {
+ if (old_names->keycodes!=None) {
+ tmp= XkbAtomGetString(dpy,old_names->keycodes);
+ names->keycodes= _XkbDupString(tmp);
+ }
+ else wantDflts|= XkmKeyNamesMask;
+ complete|= XkmKeyNamesMask;
+ }
+ if (wantNames&XkmGeometryMask) {
+ if (old_names->geometry==None)
+ return False;
+ tmp= XkbAtomGetString(dpy,old_names->geometry);
+ names->geometry= _XkbDupString(tmp);
+ complete|= XkmGeometryMask;
+ wantNames&= ~XkmGeometryMask;
+ }
+ }
+ if (complete&XkmCompatMapMask)
+ complete|= XkmIndicatorsMask|XkmVirtualModsMask;
+ else if (complete&(XkmSymbolsMask|XkmTypesMask))
+ complete|= XkmVirtualModsMask;
+ if (need & (~complete))
+ return False;
+ if ((complete&XkmSymbolsMask)&&((XkmKeyNamesMask|XkmTypesMask)&(~complete)))
+ return False;
+
+ multi_section= 1;
+ if (((complete&XkmKeymapRequired)==XkmKeymapRequired)&&
+ ((complete&(~XkmKeymapLegal))==0)) {
+ fprintf(file,"xkb_keymap \"%s\" {\n",name);
+ }
+ else if (((complete&XkmSemanticsRequired)==XkmSemanticsRequired)&&
+ ((complete&(~XkmSemanticsLegal))==0)) {
+ fprintf(file,"xkb_semantics \"%s\" {\n",name);
+ }
+ else if (((complete&XkmLayoutRequired)==XkmLayoutRequired)&&
+ ((complete&(~XkmLayoutLegal))==0)) {
+ fprintf(file,"xkb_layout \"%s\" {\n",name);
+ }
+ else if (XkmSingleSection(complete&(~XkmVirtualModsMask))) {
+ multi_section= 0;
+ }
+ else {
+ return False;
+ }
+
+ wantNames= complete&(~(wantConfig|wantDflts));
+ name= names->keycodes;
+ if (wantConfig&XkmKeyNamesMask)
+ XkbWriteXKBKeycodes(file,&finfo,False,False,_AddIncl,name);
+ else if (wantDflts&XkmKeyNamesMask)
+ fprintf(stderr,"Default symbols not implemented yet!\n");
+ else if (wantNames&XkmKeyNamesMask)
+ XkbWriteSectionFromName(file,"keycodes",name);
+
+ name= names->types;
+ if (wantConfig&XkmTypesMask)
+ XkbWriteXKBKeyTypes(file,&finfo,False,False,_AddIncl,name);
+ else if (wantDflts&XkmTypesMask)
+ fprintf(stderr,"Default types not implemented yet!\n");
+ else if (wantNames&XkmTypesMask)
+ XkbWriteSectionFromName(file,"types",name);
+
+ name= names->compat;
+ if (wantConfig&XkmCompatMapMask)
+ XkbWriteXKBCompatMap(file,&finfo,False,False,_AddIncl,name);
+ else if (wantDflts&XkmCompatMapMask)
+ fprintf(stderr,"Default interps not implemented yet!\n");
+ else if (wantNames&XkmCompatMapMask)
+ XkbWriteSectionFromName(file,"compatibility",name);
+
+ name= names->symbols;
+ if (wantConfig&XkmSymbolsMask)
+ XkbWriteXKBSymbols(file,&finfo,False,False,_AddIncl,name);
+ else if (wantNames&XkmSymbolsMask)
+ XkbWriteSectionFromName(file,"symbols",name);
+
+ name= names->geometry;
+ if (wantConfig&XkmGeometryMask)
+ XkbWriteXKBGeometry(file,&finfo,False,False,_AddIncl,name);
+ else if (wantNames&XkmGeometryMask)
+ XkbWriteSectionFromName(file,"geometry",name);
+
+ if (multi_section)
+ fprintf(file,"};\n");
return True;
}
+/***====================================================================***/
+
+/*ARGSUSED*/
+Status
+XkbMergeFile(XkbDescPtr xkb,XkbFileInfo finfo)
+{
+ return BadImplementation;
+}
+
+/***====================================================================***/
+
+int
+XkbFindKeycodeByName(XkbDescPtr xkb,char *name,Bool use_aliases)
+{
+register int i;
+
+ if ((!xkb)||(!xkb->names)||(!xkb->names->keys))
+ return 0;
+ for (i=xkb->min_key_code;i<=xkb->max_key_code;i++) {
+ if (strncmp(xkb->names->keys[i].name,name,XkbKeyNameLength)==0)
+ return i;
+ }
+ if (!use_aliases)
+ return 0;
+ if (xkb->geom && xkb->geom->key_aliases) {
+ XkbKeyAliasPtr a;
+ a= xkb->geom->key_aliases;
+ for (i=0;i<xkb->geom->num_key_aliases;i++,a++) {
+ if (strncmp(name,a->alias,XkbKeyNameLength)==0)
+ return XkbFindKeycodeByName(xkb,a->real,False);
+ }
+ }
+ if (xkb->names && xkb->names->key_aliases) {
+ XkbKeyAliasPtr a;
+ a= xkb->names->key_aliases;
+ for (i=0;i<xkb->names->num_key_aliases;i++,a++) {
+ if (strncmp(name,a->alias,XkbKeyNameLength)==0)
+ return XkbFindKeycodeByName(xkb,a->real,False);
+ }
+ }
+ return 0;
+}
+
+
unsigned
XkbConvertGetByNameComponents(Bool toXkm,unsigned orig)
{
@@ -117,6 +484,34 @@ unsigned rtrn;
return rtrn;
}
+unsigned
+XkbConvertXkbComponents(Bool toXkm,unsigned orig)
+{
+unsigned rtrn;
+
+ rtrn= 0;
+ if (toXkm) {
+ if (orig&XkbClientMapMask) rtrn|= XkmTypesMask|XkmSymbolsMask;
+ if (orig&XkbServerMapMask) rtrn|= XkmTypesMask|XkmSymbolsMask;
+ if (orig&XkbCompatMapMask) rtrn|= XkmCompatMapMask;
+ if (orig&XkbIndicatorMapMask) rtrn|= XkmIndicatorsMask;
+ if (orig&XkbNamesMask) rtrn|= XkmKeyNamesMask;
+ if (orig&XkbGeometryMask) rtrn|= XkmGeometryMask;
+ }
+ else {
+ if (orig!=0) rtrn|= XkbNamesMask;
+ if (orig&XkmTypesMask) rtrn|= XkbClientMapMask;
+ if (orig&XkmCompatMapMask)
+ rtrn|= XkbCompatMapMask|XkbIndicatorMapMask;
+ if (orig&XkmSymbolsMask) rtrn|=XkbClientMapMask|XkbServerMapMask;
+ if (orig&XkmIndicatorsMask) rtrn|= XkbIndicatorMapMask;
+ if (orig&XkmKeyNamesMask)
+ rtrn|= XkbNamesMask|XkbIndicatorMapMask;
+ if (orig&XkmGeometryMask) rtrn|= XkbGeometryMask;
+ }
+ return rtrn;
+}
+
Bool
XkbDetermineFileType(XkbFileInfoPtr finfo,int format,int *opts_missing)
{
@@ -247,19 +642,3 @@ XkbNameMatchesPattern(char *name,char *ptrn)
/* if we get here, the pattern is exhausted (-:just like me:-) */
return (name[0]=='\0');
}
-
-#ifdef NEED_STRCASECMP
-_X_HIDDEN int
-_XkbStrCaseCmp(char *str1,char *str2)
-{
- const u_char *us1 = (const u_char *)str1, *us2 = (const u_char *)str2;
-
- while (tolower(*us1) == tolower(*us2)) {
- if (*us1++ == '\0')
- return (0);
- us2++;
- }
-
- return (tolower(*us1) - tolower(*us2));
-}
-#endif
diff --git a/xkb/xkbout.c b/xkb/xkbout.c
new file mode 100644
index 000000000..31cd4fae4
--- /dev/null
+++ b/xkb/xkbout.c
@@ -0,0 +1,1051 @@
+/* $Xorg: xkbout.c,v 1.3 2000/08/17 19:46:44 cpqbld Exp $ */
+/************************************************************
+ Copyright (c) 1994 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.
+
+ ********************************************************/
+/* $XFree86: xc/lib/xkbfile/xkbout.c,v 3.9 2001/10/28 03:32:47 tsi Exp $ */
+
+#ifdef HAVE_DIX_CONFIG_H
+#include <dix-config.h>
+#endif
+
+#include <stdio.h>
+#include <ctype.h>
+#include <stdlib.h>
+#include <X11/Xfuncs.h>
+
+#include <X11/X.h>
+#define NEED_EVENTS
+#include <X11/keysym.h>
+#include <X11/Xproto.h>
+#include "misc.h"
+#include "inputstr.h"
+#include "dix.h"
+#include <X11/extensions/XKBstr.h>
+#define XKBSRV_NEED_FILE_FUNCS 1
+#include <X11/extensions/XKBsrv.h>
+
+#include <X11/extensions/XKBgeom.h>
+#include <X11/extensions/XKBfile.h>
+
+#define VMOD_HIDE_VALUE 0
+#define VMOD_SHOW_VALUE 1
+#define VMOD_COMMENT_VALUE 2
+
+static Bool
+WriteXKBVModDecl(FILE *file,Display *dpy,XkbDescPtr xkb,int showValue)
+{
+register int i,nMods;
+Atom * vmodNames;
+
+ if (xkb==NULL)
+ return False;
+ if (xkb->names!=NULL)
+ vmodNames= xkb->names->vmods;
+ else vmodNames= NULL;
+
+ for (i=nMods=0;i<XkbNumVirtualMods;i++) {
+ if ((vmodNames!=NULL)&&(vmodNames[i]!=None)) {
+ if (nMods==0) fprintf(file," virtual_modifiers ");
+ else fprintf(file,",");
+ fprintf(file,"%s",XkbAtomText(dpy,vmodNames[i],XkbXKBFile));
+ if ((showValue!=VMOD_HIDE_VALUE)&&
+ (xkb->server)&&(xkb->server->vmods[i]!=XkbNoModifierMask)) {
+ if (showValue==VMOD_COMMENT_VALUE) {
+ fprintf(file,"/* = %s */",
+ XkbModMaskText(xkb->server->vmods[i],XkbXKBFile));
+ }
+ else {
+ fprintf(file,"= %s",
+ XkbModMaskText(xkb->server->vmods[i],XkbXKBFile));
+ }
+ }
+ nMods++;
+ }
+ }
+ if (nMods>0)
+ fprintf(file,";\n\n");
+ return True;
+}
+
+/***====================================================================***/
+
+static Bool
+WriteXKBAction(FILE *file,XkbFileInfo *result,XkbAnyAction *action)
+{
+XkbDescPtr xkb;
+Display * dpy;
+
+ xkb= result->xkb;
+ dpy= xkb->dpy;
+ fprintf(file,"%s",XkbActionText(dpy,xkb,(XkbAction *)action,XkbXKBFile));
+ return True;
+}
+
+/***====================================================================***/
+
+Bool
+XkbWriteXKBKeycodes( FILE * file,
+ XkbFileInfo * result,
+ Bool topLevel,
+ Bool showImplicit,
+ XkbFileAddOnFunc addOn,
+ void * priv)
+{
+Atom kcName;
+register unsigned i;
+XkbDescPtr xkb;
+Display * dpy;
+char * alternate;
+
+ xkb= result->xkb;
+ dpy= xkb->dpy;
+ if ((!xkb)||(!xkb->names)||(!xkb->names->keys)) {
+ _XkbLibError(_XkbErrMissingNames,"XkbWriteXKBKeycodes",0);
+ return False;
+ }
+ kcName= xkb->names->keycodes;
+ if (kcName!=None)
+ fprintf(file,"xkb_keycodes \"%s\" {\n",
+ XkbAtomText(dpy,kcName,XkbXKBFile));
+ else fprintf(file,"xkb_keycodes {\n");
+ fprintf(file," minimum = %d;\n",xkb->min_key_code);
+ fprintf(file," maximum = %d;\n",xkb->max_key_code);
+ for (i=xkb->min_key_code;i<=xkb->max_key_code;i++) {
+ if (xkb->names->keys[i].name[0]!='\0') {
+ if (XkbFindKeycodeByName(xkb,xkb->names->keys[i].name,True)!=i)
+ alternate= "alternate ";
+ else alternate= "";
+ fprintf(file," %s%6s = %d;\n",alternate,
+ XkbKeyNameText(xkb->names->keys[i].name,XkbXKBFile),
+ i);
+ }
+ }
+ if (xkb->indicators!=NULL) {
+ for (i=0;i<XkbNumIndicators;i++) {
+ char *type;
+ if (xkb->indicators->phys_indicators&(1<<i))
+ type= " ";
+ else type= " virtual ";
+ if (xkb->names->indicators[i]!=None) {
+ fprintf(file,"%sindicator %d = \"%s\";\n",type,i+1,
+ XkbAtomText(dpy,xkb->names->indicators[i],XkbXKBFile));
+ }
+ }
+ }
+ if (xkb->names->key_aliases!=NULL) {
+ XkbKeyAliasPtr pAl;
+ pAl= xkb->names->key_aliases;
+ for (i=0;i<xkb->names->num_key_aliases;i++,pAl++) {
+ fprintf(file," alias %6s = %6s;\n",
+ XkbKeyNameText(pAl->alias,XkbXKBFile),
+ XkbKeyNameText(pAl->real,XkbXKBFile));
+ }
+ }
+ if (addOn)
+ (*addOn)(file,result,topLevel,showImplicit,XkmKeyNamesIndex,priv);
+ fprintf(file,"};\n\n");
+ return True;
+}
+
+Bool
+XkbWriteXKBKeyTypes( FILE * file,
+ XkbFileInfo * result,
+ Bool topLevel,
+ Bool showImplicit,
+ XkbFileAddOnFunc addOn,
+ void * priv)
+{
+Display * dpy;
+register unsigned i,n;
+XkbKeyTypePtr type;
+XkbKTMapEntryPtr entry;
+XkbDescPtr xkb;
+
+ xkb= result->xkb;
+ dpy= xkb->dpy;
+ if ((!xkb)||(!xkb->map)||(!xkb->map->types)) {
+ _XkbLibError(_XkbErrMissingTypes,"XkbWriteXKBKeyTypes",0);
+ return False;
+ }
+ if (xkb->map->num_types<XkbNumRequiredTypes) {
+ _XkbLibError(_XkbErrMissingReqTypes,"XkbWriteXKBKeyTypes",0);
+ return 0;
+ }
+ if ((xkb->names==NULL)||(xkb->names->types==None))
+ fprintf(file,"xkb_types {\n\n");
+ else fprintf(file,"xkb_types \"%s\" {\n\n",
+ XkbAtomText(dpy,xkb->names->types,XkbXKBFile));
+ WriteXKBVModDecl(file,dpy,xkb,
+ (showImplicit?VMOD_COMMENT_VALUE:VMOD_HIDE_VALUE));
+
+ type= xkb->map->types;
+ for (i=0;i<xkb->map->num_types;i++,type++) {
+ fprintf(file," type \"%s\" {\n",
+ XkbAtomText(dpy,type->name,XkbXKBFile));
+ fprintf(file," modifiers= %s;\n",
+ XkbVModMaskText(dpy,xkb,type->mods.real_mods,type->mods.vmods,
+ XkbXKBFile));
+ entry= type->map;
+ for (n=0;n<type->map_count;n++,entry++) {
+ char *str;
+ str=XkbVModMaskText(dpy,xkb,entry->mods.real_mods,entry->mods.vmods,
+ XkbXKBFile);
+ fprintf(file," map[%s]= Level%d;\n",str,entry->level+1);
+ if ((type->preserve)&&((type->preserve[n].real_mods)||
+ (type->preserve[n].vmods))) {
+ fprintf(file," preserve[%s]= ",str);
+ fprintf(file,"%s;\n",XkbVModMaskText(dpy,xkb,
+ type->preserve[n].real_mods,
+ type->preserve[n].vmods,
+ XkbXKBFile));
+ }
+ }
+ if (type->level_names!=NULL) {
+ Atom *name= type->level_names;
+ for (n=0;n<type->num_levels;n++,name++) {
+ if ((*name)==None)
+ continue;
+ fprintf(file," level_name[Level%d]= \"%s\";\n",n+1,
+ XkbAtomText(dpy,*name,XkbXKBFile));
+ }
+ }
+ fprintf(file," };\n");
+ }
+ if (addOn)
+ (*addOn)(file,result,topLevel,showImplicit,XkmTypesIndex,priv);
+ fprintf(file,"};\n\n");
+ return True;
+}
+
+static Bool
+WriteXKBIndicatorMap( FILE * file,
+ XkbFileInfo * result,
+ Atom name,
+ XkbIndicatorMapPtr led,
+ XkbFileAddOnFunc addOn,
+ void * priv)
+{
+XkbDescPtr xkb;
+
+ xkb= result->xkb;
+ fprintf(file," indicator \"%s\" {\n",XkbAtomGetString(xkb->dpy,name));
+ if (led->flags&XkbIM_NoExplicit)
+ fprintf(file," !allowExplicit;\n");
+ if (led->flags&XkbIM_LEDDrivesKB)
+ fprintf(file," indicatorDrivesKeyboard;\n");
+ if (led->which_groups!=0) {
+ if (led->which_groups!=XkbIM_UseEffective) {
+ fprintf(file," whichGroupState= %s;\n",
+ XkbIMWhichStateMaskText(led->which_groups,XkbXKBFile));
+ }
+ fprintf(file," groups= 0x%02x;\n",led->groups);
+ }
+ if (led->which_mods!=0) {
+ if (led->which_mods!=XkbIM_UseEffective) {
+ fprintf(file," whichModState= %s;\n",
+ XkbIMWhichStateMaskText(led->which_mods,XkbXKBFile));
+ }
+ fprintf(file," modifiers= %s;\n",
+ XkbVModMaskText(xkb->dpy,xkb,
+ led->mods.real_mods,led->mods.vmods,
+ XkbXKBFile));
+ }
+ if (led->ctrls!=0) {
+ fprintf(file," controls= %s;\n",
+ XkbControlsMaskText(led->ctrls,XkbXKBFile));
+ }
+ if (addOn)
+ (*addOn)(file,result,False,True,XkmIndicatorsIndex,priv);
+ fprintf(file," };\n");
+ return True;
+}
+
+Bool
+XkbWriteXKBCompatMap( FILE * file,
+ XkbFileInfo * result,
+ Bool topLevel,
+ Bool showImplicit,
+ XkbFileAddOnFunc addOn,
+ void * priv)
+{
+Display * dpy;
+register unsigned i;
+XkbSymInterpretPtr interp;
+XkbDescPtr xkb;
+
+ xkb= result->xkb;
+ dpy= xkb->dpy;
+ if ((!xkb)||(!xkb->compat)||(!xkb->compat->sym_interpret)) {
+ _XkbLibError(_XkbErrMissingCompatMap,"XkbWriteXKBCompatMap",0);
+ return False;
+ }
+ if ((xkb->names==NULL)||(xkb->names->compat==None))
+ fprintf(file,"xkb_compatibility {\n\n");
+ else fprintf(file,"xkb_compatibility \"%s\" {\n\n",
+ XkbAtomText(dpy,xkb->names->compat,XkbXKBFile));
+ WriteXKBVModDecl(file,dpy,xkb,
+ (showImplicit?VMOD_COMMENT_VALUE:VMOD_HIDE_VALUE));
+
+ fprintf(file," interpret.useModMapMods= AnyLevel;\n");
+ fprintf(file," interpret.repeat= False;\n");
+ fprintf(file," interpret.locking= False;\n");
+ interp= xkb->compat->sym_interpret;
+ for (i=0;i<xkb->compat->num_si;i++,interp++) {
+ fprintf(file," interpret %s+%s(%s) {\n",
+ ((interp->sym==NoSymbol)?"Any":
+ XkbKeysymText(interp->sym,XkbXKBFile)),
+ XkbSIMatchText(interp->match,XkbXKBFile),
+ XkbModMaskText(interp->mods,XkbXKBFile));
+ if (interp->virtual_mod!=XkbNoModifier) {
+ fprintf(file," virtualModifier= %s;\n",
+ XkbVModIndexText(dpy,xkb,interp->virtual_mod,XkbXKBFile));
+ }
+ if (interp->match&XkbSI_LevelOneOnly)
+ fprintf(file," useModMapMods=level1;\n");
+ if (interp->flags&XkbSI_LockingKey)
+ fprintf(file," locking= True;\n");
+ if (interp->flags&XkbSI_AutoRepeat)
+ fprintf(file," repeat= True;\n");
+ fprintf(file," action= ");
+ WriteXKBAction(file,result,&interp->act);
+ fprintf(file,";\n");
+ fprintf(file," };\n");
+ }
+ for (i=0;i<XkbNumKbdGroups;i++) {
+ XkbModsPtr gc;
+
+ gc= &xkb->compat->groups[i];
+ if ((gc->real_mods==0)&&(gc->vmods==0))
+ continue;
+ fprintf(file," group %d = %s;\n",i+1,XkbVModMaskText(xkb->dpy,xkb,
+ gc->real_mods,gc->vmods,
+ XkbXKBFile));
+ }
+ if (xkb->indicators) {
+ for (i=0;i<XkbNumIndicators;i++) {
+ XkbIndicatorMapPtr map= &xkb->indicators->maps[i];
+ if ((map->flags!=0)||(map->which_groups!=0)||(map->groups!=0)||
+ (map->which_mods!=0)||
+ (map->mods.real_mods!=0)||(map->mods.vmods!=0)||
+ (map->ctrls!=0)) {
+ WriteXKBIndicatorMap(file,result,xkb->names->indicators[i],map,
+ addOn,priv);
+ }
+ }
+ }
+ if (addOn)
+ (*addOn)(file,result,topLevel,showImplicit,XkmCompatMapIndex,priv);
+ fprintf(file,"};\n\n");
+ return True;
+}
+
+Bool
+XkbWriteXKBSymbols( FILE * file,
+ XkbFileInfo * result,
+ Bool topLevel,
+ Bool showImplicit,
+ XkbFileAddOnFunc addOn,
+ void * priv)
+{
+Display * dpy;
+register unsigned i,tmp;
+XkbDescPtr xkb;
+XkbClientMapPtr map;
+XkbServerMapPtr srv;
+Bool showActions;
+
+ xkb= result->xkb;
+ map= xkb->map;
+ srv= xkb->server;
+ dpy= xkb->dpy;
+ if ((!xkb)||(!map)||(!map->syms)||(!map->key_sym_map)) {
+ _XkbLibError(_XkbErrMissingSymbols,"XkbWriteXKBSymbols",0);
+ return False;
+ }
+ if ((!xkb->names)||(!xkb->names->keys)) {
+ _XkbLibError(_XkbErrMissingNames,"XkbWriteXKBSymbols",0);
+ return False;
+ }
+ if ((xkb->names==NULL)||(xkb->names->symbols==None))
+ fprintf(file,"xkb_symbols {\n\n");
+ else fprintf(file,"xkb_symbols \"%s\" {\n\n",
+ XkbAtomText(dpy,xkb->names->symbols,XkbXKBFile));
+ for (tmp=i=0;i<XkbNumKbdGroups;i++) {
+ if (xkb->names->groups[i]!=None) {
+ fprintf(file," name[group%d]=\"%s\";\n",i+1,
+ XkbAtomText(dpy,xkb->names->groups[i],XkbXKBFile));
+ tmp++;
+ }
+ }
+ if (tmp>0)
+ fprintf(file,"\n");
+ for (i=xkb->min_key_code;i<=xkb->max_key_code;i++) {
+ Bool simple;
+ if ((int)XkbKeyNumSyms(xkb,i)<1)
+ continue;
+ if (XkbFindKeycodeByName(xkb,xkb->names->keys[i].name,True)!=i)
+ continue;
+ simple= True;
+ fprintf(file," key %6s {",
+ XkbKeyNameText(xkb->names->keys[i].name,XkbXKBFile));
+ if (srv->explicit) {
+ if (((srv->explicit[i]&XkbExplicitKeyTypesMask)!=0)||
+ (showImplicit)) {
+ int typeNdx,g;
+ Bool multi;
+ char * comment=" ";
+
+ if ((srv->explicit[i]&XkbExplicitKeyTypesMask)==0)
+ comment= "//";
+ multi= False;
+ typeNdx= XkbKeyKeyTypeIndex(xkb,i,0);
+ for (g=1;(g<XkbKeyNumGroups(xkb,i))&&(!multi);g++) {
+ if (XkbKeyKeyTypeIndex(xkb,i,g)!=typeNdx)
+ multi= True;
+ }
+ if (multi) {
+ for (g=0;g<XkbKeyNumGroups(xkb,i);g++) {
+ typeNdx= XkbKeyKeyTypeIndex(xkb,i,g);
+ if (srv->explicit[i]&(1<<g)) {
+ fprintf(file,"\n%s type[group%d]= \"%s\",",
+ comment,g+1,
+ XkbAtomText(dpy,map->types[typeNdx].name,
+ XkbXKBFile));
+ }
+ else if (showImplicit) {
+ fprintf(file,"\n// type[group%d]= \"%s\",",g+1,
+ XkbAtomText(dpy,map->types[typeNdx].name,
+ XkbXKBFile));
+ }
+ }
+ }
+ else {
+ fprintf(file,"\n%s type= \"%s\",",comment,
+ XkbAtomText(dpy,map->types[typeNdx].name,
+ XkbXKBFile));
+ }
+ simple= False;
+ }
+ if (((srv->explicit[i]&XkbExplicitAutoRepeatMask)!=0)&&
+ (xkb->ctrls!=NULL)) {
+ if (xkb->ctrls->per_key_repeat[i/8]&(1<<(i%8)))
+ fprintf(file,"\n repeat= Yes,");
+ else fprintf(file,"\n repeat= No,");
+ simple= False;
+ }
+ if ((xkb->server!=NULL)&&(xkb->server->vmodmap!=NULL)&&
+ (xkb->server->vmodmap[i]!=0)) {
+ if ((srv->explicit[i]&XkbExplicitVModMapMask)!=0) {
+ fprintf(file,"\n virtualMods= %s,",
+ XkbVModMaskText(dpy,xkb,0,
+ xkb->server->vmodmap[i],
+ XkbXKBFile));
+ }
+ else if (showImplicit) {
+ fprintf(file,"\n// virtualMods= %s,",
+ XkbVModMaskText(dpy,xkb,0,
+ xkb->server->vmodmap[i],
+ XkbXKBFile));
+ }
+ }
+ }
+ switch (XkbOutOfRangeGroupAction(XkbKeyGroupInfo(xkb,i))) {
+ case XkbClampIntoRange:
+ fprintf(file,"\n groupsClamp,");
+ break;
+ case XkbRedirectIntoRange:
+ fprintf(file,"\n groupsRedirect= Group%d,",
+ XkbOutOfRangeGroupNumber(XkbKeyGroupInfo(xkb,i))+1);
+ break;
+ }
+ if (srv->behaviors!=NULL) {
+ unsigned type;
+ type= srv->behaviors[i].type&XkbKB_OpMask;
+
+ if (type!=XkbKB_Default) {
+ simple= False;
+ fprintf(file,"\n %s,",
+ XkbBehaviorText(xkb,&srv->behaviors[i],XkbXKBFile));
+ }
+ }
+ if ((srv->explicit==NULL) || showImplicit ||
+ ((srv->explicit[i]&XkbExplicitInterpretMask)!=0))
+ showActions= XkbKeyHasActions(xkb,i);
+ else showActions= False;
+
+ if (((unsigned)XkbKeyNumGroups(xkb,i)>1)||showActions)
+ simple= False;
+ if (simple) {
+ KeySym *syms;
+ unsigned s;
+
+ syms= XkbKeySymsPtr(xkb,i);
+ fprintf(file," [ ");
+ for (s=0;s<XkbKeyGroupWidth(xkb,i,XkbGroup1Index);s++) {
+ if (s!=0)
+ fprintf(file,", ");
+ fprintf(file,"%15s",XkbKeysymText(*syms++,XkbXKBFile));
+ }
+ fprintf(file," ] };\n");
+ }
+ else {
+ unsigned g,s;
+ KeySym *syms;
+ XkbAction *acts;
+ syms= XkbKeySymsPtr(xkb,i);
+ acts= XkbKeyActionsPtr(xkb,i);
+ for (g=0;g<XkbKeyNumGroups(xkb,i);g++) {
+ if (g!=0)
+ fprintf(file,",");
+ fprintf(file,"\n symbols[Group%d]= [ ",g+1);
+ for (s=0;s<XkbKeyGroupWidth(xkb,i,g);s++) {
+ if (s!=0)
+ fprintf(file,", ");
+ fprintf(file,"%15s",XkbKeysymText(syms[s],XkbXKBFile));
+ }
+ fprintf(file," ]");
+ syms+= XkbKeyGroupsWidth(xkb,i);
+ if (showActions) {
+ fprintf(file,",\n actions[Group%d]= [ ",g+1);
+ for (s=0;s<XkbKeyGroupWidth(xkb,i,g);s++) {
+ if (s!=0)
+ fprintf(file,", ");
+ WriteXKBAction(file,result,(XkbAnyAction *)&acts[s]);
+ }
+ fprintf(file," ]");
+ acts+= XkbKeyGroupsWidth(xkb,i);
+ }
+ }
+ fprintf(file,"\n };\n");
+ }
+ }
+ if (map && map->modmap) {
+ for (i=xkb->min_key_code;i<=xkb->max_key_code;i++) {
+ if (map->modmap[i]!=0) {
+ register int n,bit;
+ for (bit=1,n=0;n<XkbNumModifiers;n++,bit<<=1) {
+ if (map->modmap[i]&bit) {
+ char buf[5];
+ memcpy(buf,xkb->names->keys[i].name,4);
+ buf[4]= '\0';
+ fprintf(file," modifier_map %s { <%s> };\n",
+ XkbModIndexText(n,XkbXKBFile),buf);
+ }
+ }
+ }
+ }
+ }
+ if (addOn)
+ (*addOn)(file,result,topLevel,showImplicit,XkmSymbolsIndex,priv);
+ fprintf(file,"};\n\n");
+ return True;
+}
+
+static Bool
+WriteXKBOutline( FILE * file,
+ XkbShapePtr shape,
+ XkbOutlinePtr outline,
+ int lastRadius,
+ int first,
+ int indent)
+{
+register int i;
+XkbPointPtr pt;
+char * iStr;
+
+ fprintf(file,"%s",iStr= XkbIndentText(first));
+ if (first!=indent)
+ iStr= XkbIndentText(indent);
+ if (outline->corner_radius!=lastRadius) {
+ fprintf(file,"corner= %s,",
+ XkbGeomFPText(outline->corner_radius,XkbMessage));
+ if (shape!=NULL) {
+ fprintf(file,"\n%s",iStr);
+ }
+ }
+ if (shape) {
+ if (outline==shape->approx)
+ fprintf(file,"approx= ");
+ else if (outline==shape->primary)
+ fprintf(file,"primary= ");
+ }
+ fprintf(file,"{");
+ for (pt=outline->points,i=0;i<outline->num_points;i++,pt++) {
+ if (i==0) fprintf(file," ");
+ else if ((i%4)==0) fprintf(file,",\n%s ",iStr);
+ else fprintf(file,", ");
+ fprintf(file,"[ %3s, %3s ]",XkbGeomFPText(pt->x,XkbXKBFile),
+ XkbGeomFPText(pt->y,XkbXKBFile));
+ }
+ fprintf(file," }");
+ return True;
+}
+
+static Bool
+WriteXKBDoodad( FILE * file,
+ Display * dpy,
+ unsigned indent,
+ XkbGeometryPtr geom,
+ XkbDoodadPtr doodad)
+{
+register char * i_str;
+XkbShapePtr shape;
+XkbColorPtr color;
+
+ i_str= XkbIndentText(indent);
+ fprintf(file,"%s%s \"%s\" {\n",i_str,
+ XkbDoodadTypeText(doodad->any.type,XkbMessage),
+ XkbAtomText(dpy,doodad->any.name,XkbMessage));
+ fprintf(file,"%s top= %s;\n",i_str,
+ XkbGeomFPText(doodad->any.top,XkbXKBFile));
+ fprintf(file,"%s left= %s;\n",i_str,
+ XkbGeomFPText(doodad->any.left,XkbXKBFile));
+ fprintf(file,"%s priority= %d;\n",i_str,doodad->any.priority);
+ switch (doodad->any.type) {
+ case XkbOutlineDoodad:
+ case XkbSolidDoodad:
+ if (doodad->shape.angle!=0) {
+ fprintf(file,"%s angle= %s;\n",i_str,
+ XkbGeomFPText(doodad->shape.angle,XkbXKBFile));
+ }
+ if (doodad->shape.color_ndx!=0) {
+ fprintf(file,"%s color= \"%s\";\n",i_str,
+ XkbShapeDoodadColor(geom,&doodad->shape)->spec);
+ }
+ shape= XkbShapeDoodadShape(geom,&doodad->shape);
+ fprintf(file,"%s shape= \"%s\";\n",i_str,
+ XkbAtomText(dpy,shape->name,XkbXKBFile));
+ break;
+ case XkbTextDoodad:
+ if (doodad->text.angle!=0) {
+ fprintf(file,"%s angle= %s;\n",i_str,
+ XkbGeomFPText(doodad->text.angle,XkbXKBFile));
+ }
+ if (doodad->text.width!=0) {
+ fprintf(file,"%s width= %s;\n",i_str,
+ XkbGeomFPText(doodad->text.width,XkbXKBFile));
+
+ }
+ if (doodad->text.height!=0) {
+ fprintf(file,"%s height= %s;\n",i_str,
+ XkbGeomFPText(doodad->text.height,XkbXKBFile));
+
+ }
+ if (doodad->text.color_ndx!=0) {
+ color= XkbTextDoodadColor(geom,&doodad->text);
+ fprintf(file,"%s color= \"%s\";\n",i_str,
+ XkbStringText(color->spec,XkbXKBFile));
+ }
+ fprintf(file,"%s XFont= \"%s\";\n",i_str,
+ XkbStringText(doodad->text.font,XkbXKBFile));
+ fprintf(file,"%s text= \"%s\";\n",i_str,
+ XkbStringText(doodad->text.text,XkbXKBFile));
+ break;
+ case XkbIndicatorDoodad:
+ shape= XkbIndicatorDoodadShape(geom,&doodad->indicator);
+ color= XkbIndicatorDoodadOnColor(geom,&doodad->indicator);
+ fprintf(file,"%s onColor= \"%s\";\n",i_str,
+ XkbStringText(color->spec,XkbXKBFile));
+ color= XkbIndicatorDoodadOffColor(geom,&doodad->indicator);
+ fprintf(file,"%s offColor= \"%s\";\n",i_str,
+ XkbStringText(color->spec,XkbXKBFile));
+ fprintf(file,"%s shape= \"%s\";\n",i_str,
+ XkbAtomText(dpy,shape->name,XkbXKBFile));
+ break;
+ case XkbLogoDoodad:
+ fprintf(file,"%s logoName= \"%s\";\n",i_str,
+ XkbStringText(doodad->logo.logo_name,XkbXKBFile));
+ if (doodad->shape.angle!=0) {
+ fprintf(file,"%s angle= %s;\n",i_str,
+ XkbGeomFPText(doodad->logo.angle,XkbXKBFile));
+ }
+ if (doodad->shape.color_ndx!=0) {
+ fprintf(file,"%s color= \"%s\";\n",i_str,
+ XkbLogoDoodadColor(geom,&doodad->logo)->spec);
+ }
+ shape= XkbLogoDoodadShape(geom,&doodad->logo);
+ fprintf(file,"%s shape= \"%s\";\n",i_str,
+ XkbAtomText(dpy,shape->name,XkbXKBFile));
+ break;
+ }
+ fprintf(file,"%s};\n",i_str);
+ return True;
+}
+
+/*ARGSUSED*/
+static Bool
+WriteXKBOverlay( FILE * file,
+ Display * dpy,
+ unsigned indent,
+ XkbGeometryPtr geom,
+ XkbOverlayPtr ol)
+{
+register char * i_str;
+int r,k,nOut;
+XkbOverlayRowPtr row;
+XkbOverlayKeyPtr key;
+
+ i_str= XkbIndentText(indent);
+ if (ol->name!=None) {
+ fprintf(file,"%soverlay \"%s\" {\n",i_str,
+ XkbAtomText(dpy,ol->name,XkbMessage));
+ }
+ else fprintf(file,"%soverlay {\n",i_str);
+ for (nOut=r=0,row=ol->rows;r<ol->num_rows;r++,row++) {
+ for (k=0,key=row->keys;k<row->num_keys;k++,key++) {
+ char *over,*under;
+ over= XkbKeyNameText(key->over.name,XkbXKBFile);
+ under= XkbKeyNameText(key->under.name,XkbXKBFile);
+ if (nOut==0)
+ fprintf(file,"%s %6s=%6s",i_str,under,over);
+ else if ((nOut%4)==0)
+ fprintf(file,",\n%s %6s=%6s",i_str,under,over);
+ else fprintf(file,", %6s=%6s",under,over);
+ nOut++;
+ }
+ }
+ fprintf(file,"\n%s};\n",i_str);
+ return True;
+}
+
+static Bool
+WriteXKBSection( FILE * file,
+ Display * dpy,
+ XkbSectionPtr s,
+ XkbGeometryPtr geom)
+{
+register int i;
+XkbRowPtr row;
+int dfltKeyColor = 0;
+
+ fprintf(file," section \"%s\" {\n",
+ XkbAtomText(dpy,s->name,XkbXKBFile));
+ if (s->rows&&(s->rows->num_keys>0)) {
+ dfltKeyColor= s->rows->keys[0].color_ndx;
+ fprintf(file," key.color= \"%s\";\n",
+ XkbStringText(geom->colors[dfltKeyColor].spec,XkbXKBFile));
+ }
+ fprintf(file," priority= %d;\n",s->priority);
+ fprintf(file," top= %s;\n",XkbGeomFPText(s->top,XkbXKBFile));
+ fprintf(file," left= %s;\n",XkbGeomFPText(s->left,XkbXKBFile));
+ fprintf(file," width= %s;\n",XkbGeomFPText(s->width,XkbXKBFile));
+ fprintf(file," height= %s;\n",
+ XkbGeomFPText(s->height,XkbXKBFile));
+ if (s->angle!=0) {
+ fprintf(file," angle= %s;\n",
+ XkbGeomFPText(s->angle,XkbXKBFile));
+ }
+ for (i=0,row=s->rows;i<s->num_rows;i++,row++) {
+ fprintf(file," row {\n");
+ fprintf(file," top= %s;\n",
+ XkbGeomFPText(row->top,XkbXKBFile));
+ fprintf(file," left= %s;\n",
+ XkbGeomFPText(row->left,XkbXKBFile));
+ if (row->vertical)
+ fprintf(file," vertical;\n");
+ if (row->num_keys>0) {
+ register int k;
+ register XkbKeyPtr key;
+ int forceNL=0;
+ int nThisLine= 0;
+ fprintf(file," keys {\n");
+ for (k=0,key=row->keys;k<row->num_keys;k++,key++) {
+ XkbShapePtr shape;
+ if (key->color_ndx!=dfltKeyColor)
+ forceNL= 1;
+ if (k==0) {
+ fprintf(file," ");
+ nThisLine= 0;
+ }
+ else if (((nThisLine%2)==1)||(forceNL)) {
+ fprintf(file,",\n ");
+ forceNL= nThisLine= 0;
+ }
+ else {
+ fprintf(file,", ");
+ nThisLine++;
+ }
+ shape= XkbKeyShape(geom,key);
+ fprintf(file,"{ %6s, \"%s\", %3s",
+ XkbKeyNameText(key->name.name,XkbXKBFile),
+ XkbAtomText(dpy,shape->name,XkbXKBFile),
+ XkbGeomFPText(key->gap,XkbXKBFile));
+ if (key->color_ndx!=dfltKeyColor) {
+ fprintf(file,", color=\"%s\"",XkbKeyColor(geom,key)->spec);
+ forceNL= 1;
+ }
+ fprintf(file," }");
+ }
+ fprintf(file,"\n };\n");
+ }
+ fprintf(file," };\n");
+ }
+ if (s->doodads!=NULL) {
+ XkbDoodadPtr doodad;
+ for (i=0,doodad=s->doodads;i<s->num_doodads;i++,doodad++) {
+ WriteXKBDoodad(file,dpy,8,geom,doodad);
+ }
+ }
+ if (s->overlays!=NULL) {
+ XkbOverlayPtr ol;
+ for (i=0,ol=s->overlays;i<s->num_overlays;i++,ol++) {
+ WriteXKBOverlay(file,dpy,8,geom,ol);
+ }
+ }
+ fprintf(file," }; // End of \"%s\" section\n\n",
+ XkbAtomText(dpy,s->name,XkbXKBFile));
+ return True;
+}
+
+Bool
+XkbWriteXKBGeometry( FILE * file,
+ XkbFileInfo * result,
+ Bool topLevel,
+ Bool showImplicit,
+ XkbFileAddOnFunc addOn,
+ void * priv)
+{
+Display * dpy;
+register unsigned i,n;
+XkbDescPtr xkb;
+XkbGeometryPtr geom;
+
+ xkb= result->xkb;
+ if ((!xkb)||(!xkb->geom)) {
+ _XkbLibError(_XkbErrMissingGeometry,"XkbWriteXKBGeometry",0);
+ return False;
+ }
+ dpy= xkb->dpy;
+ geom= xkb->geom;
+ if (geom->name==None)
+ fprintf(file,"xkb_geometry {\n\n");
+ else fprintf(file,"xkb_geometry \"%s\" {\n\n",
+ XkbAtomText(dpy,geom->name,XkbXKBFile));
+ fprintf(file," width= %s;\n",
+ XkbGeomFPText(geom->width_mm,XkbXKBFile));
+ fprintf(file," height= %s;\n\n",
+ XkbGeomFPText(geom->height_mm,XkbXKBFile));
+
+ if (geom->key_aliases!=NULL) {
+ XkbKeyAliasPtr pAl;
+ pAl= geom->key_aliases;
+ for (i=0;i<geom->num_key_aliases;i++,pAl++) {
+ fprintf(file," alias %6s = %6s;\n",
+ XkbKeyNameText(pAl->alias,XkbXKBFile),
+ XkbKeyNameText(pAl->real,XkbXKBFile));
+ }
+ fprintf(file,"\n");
+ }
+
+ if (geom->base_color!=NULL)
+ fprintf(file," baseColor= \"%s\";\n",
+ XkbStringText(geom->base_color->spec,XkbXKBFile));
+ if (geom->label_color!=NULL)
+ fprintf(file," labelColor= \"%s\";\n",
+ XkbStringText(geom->label_color->spec,XkbXKBFile));
+ if (geom->label_font!=NULL)
+ fprintf(file," xfont= \"%s\";\n",
+ XkbStringText(geom->label_font,XkbXKBFile));
+ if ((geom->num_colors>0)&&(showImplicit)) {
+ XkbColorPtr color;
+ for (color=geom->colors,i=0;i<geom->num_colors;i++,color++) {
+ fprintf(file,"// color[%d]= \"%s\"\n",i,
+ XkbStringText(color->spec,XkbXKBFile));
+ }
+ fprintf(file,"\n");
+ }
+ if (geom->num_properties>0) {
+ XkbPropertyPtr prop;
+ for (prop=geom->properties,i=0;i<geom->num_properties;i++,prop++) {
+ fprintf(file," %s= \"%s\";\n",prop->name,
+ XkbStringText(prop->value,XkbXKBFile));
+ }
+ fprintf(file,"\n");
+ }
+ if (geom->num_shapes>0) {
+ XkbShapePtr shape;
+ XkbOutlinePtr outline;
+ int lastR;
+ for (shape=geom->shapes,i=0;i<geom->num_shapes;i++,shape++) {
+ lastR=0;
+ fprintf(file," shape \"%s\" {",
+ XkbAtomText(dpy,shape->name,XkbXKBFile));
+ outline= shape->outlines;
+ if (shape->num_outlines>1) {
+ for (n=0;n<shape->num_outlines;n++,outline++) {
+ if (n==0) fprintf(file,"\n");
+ else fprintf(file,",\n");
+ WriteXKBOutline(file,shape,outline,lastR,8,8);
+ lastR= outline->corner_radius;
+ }
+ fprintf(file,"\n };\n");
+ }
+ else {
+ WriteXKBOutline(file,NULL,outline,lastR,1,8);
+ fprintf(file," };\n");
+ }
+ }
+ }
+ if (geom->num_sections>0) {
+ XkbSectionPtr section;
+ for (section=geom->sections,i=0;i<geom->num_sections;i++,section++){
+ WriteXKBSection(file,dpy,section,geom);
+ }
+ }
+ if (geom->num_doodads>0) {
+ XkbDoodadPtr doodad;
+ for (i=0,doodad=geom->doodads;i<geom->num_doodads;i++,doodad++) {
+ WriteXKBDoodad(file,dpy,4,geom,doodad);
+ }
+ }
+ if (addOn)
+ (*addOn)(file,result,topLevel,showImplicit,XkmGeometryIndex,priv);
+ fprintf(file,"};\n\n");
+ return True;
+}
+
+/*ARGSUSED*/
+Bool
+XkbWriteXKBSemantics( FILE * file,
+ XkbFileInfo * result,
+ Bool topLevel,
+ Bool showImplicit,
+ XkbFileAddOnFunc addOn,
+ void * priv)
+{
+Bool ok;
+
+ fprintf(file,"xkb_semantics {\n");
+ ok= XkbWriteXKBKeyTypes(file,result,False,False,addOn,priv);
+ ok= ok&&XkbWriteXKBCompatMap(file,result,False,False,addOn,priv);
+ fprintf(file,"};\n");
+ return ok;
+}
+
+/*ARGSUSED*/
+Bool
+XkbWriteXKBLayout( FILE * file,
+ XkbFileInfo * result,
+ Bool topLevel,
+ Bool showImplicit,
+ XkbFileAddOnFunc addOn,
+ void * priv)
+{
+Bool ok;
+XkbDescPtr xkb;
+
+ xkb= result->xkb;
+ fprintf(file,"xkb_layout {\n");
+ ok= XkbWriteXKBKeycodes(file,result,False,showImplicit,addOn,priv);
+ ok= ok&&XkbWriteXKBKeyTypes(file,result,False,showImplicit,addOn,priv);
+ ok= ok&&XkbWriteXKBSymbols(file,result,False,showImplicit,addOn,priv);
+ if (xkb->geom)
+ ok= ok&&XkbWriteXKBGeometry(file,result,False,showImplicit,addOn,priv);
+ fprintf(file,"};\n");
+ return ok;
+}
+
+/*ARGSUSED*/
+Bool
+XkbWriteXKBKeymap( FILE * file,
+ XkbFileInfo * result,
+ Bool topLevel,
+ Bool showImplicit,
+ XkbFileAddOnFunc addOn,
+ void * priv)
+{
+Bool ok;
+XkbDescPtr xkb;
+
+ xkb= result->xkb;
+ fprintf(file,"xkb_keymap {\n");
+ ok= XkbWriteXKBKeycodes(file,result,False,showImplicit,addOn,priv);
+ ok= ok&&XkbWriteXKBKeyTypes(file,result,False,showImplicit,addOn,priv);
+ ok= ok&&XkbWriteXKBCompatMap(file,result,False,showImplicit,addOn,priv);
+ ok= ok&&XkbWriteXKBSymbols(file,result,False,showImplicit,addOn,priv);
+ if (xkb->geom)
+ ok= ok&&XkbWriteXKBGeometry(file,result,False,showImplicit,addOn,priv);
+ fprintf(file,"};\n");
+ return ok;
+}
+
+Bool
+XkbWriteXKBFile( FILE * out,
+ XkbFileInfo * result,
+ Bool showImplicit,
+ XkbFileAddOnFunc addOn,
+ void * priv)
+{
+Bool ok = False;
+Bool (*func)(
+ FILE * /* file */,
+ XkbFileInfo * /* result */,
+ Bool /* topLevel */,
+ Bool /* showImplicit */,
+ XkbFileAddOnFunc /* addOn */,
+ void * /* priv */
+) = NULL;
+
+ switch (result->type) {
+ case XkmSemanticsFile:
+ func= XkbWriteXKBSemantics;
+ break;
+ case XkmLayoutFile:
+ func= XkbWriteXKBLayout;
+ break;
+ case XkmKeymapFile:
+ func= XkbWriteXKBKeymap;
+ break;
+ case XkmTypesIndex:
+ func= XkbWriteXKBKeyTypes;
+ break;
+ case XkmCompatMapIndex:
+ func= XkbWriteXKBCompatMap;
+ break;
+ case XkmSymbolsIndex:
+ func= XkbWriteXKBSymbols;
+ break;
+ case XkmKeyNamesIndex:
+ func= XkbWriteXKBKeycodes;
+ break;
+ case XkmGeometryFile:
+ case XkmGeometryIndex:
+ func= XkbWriteXKBGeometry;
+ break;
+ case XkmVirtualModsIndex:
+ case XkmIndicatorsIndex:
+ _XkbLibError(_XkbErrBadImplementation,
+ XkbConfigText(result->type,XkbMessage),0);
+ return False;
+ }
+ if (out==NULL) {
+ _XkbLibError(_XkbErrFileCannotOpen,"XkbWriteXkbFile",0);
+ ok= False;
+ }
+ else if (func) {
+ ok= (*func)(out,result,True,showImplicit,addOn,priv);
+ }
+ return ok;
+}
diff --git a/xkb/xkbtext.c b/xkb/xkbtext.c
new file mode 100644
index 000000000..defd45a64
--- /dev/null
+++ b/xkb/xkbtext.c
@@ -0,0 +1,1325 @@
+/* $Xorg: xkbtext.c,v 1.3 2000/08/17 19:46:44 cpqbld Exp $ */
+/************************************************************
+ Copyright (c) 1994 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.
+
+ ********************************************************/
+/* $XFree86: xc/lib/xkbfile/xkbtext.c,v 3.11 2002/12/21 18:49:02 paulo Exp $ */
+
+#ifdef HAVE_DIX_CONFIG_H
+#include <dix-config.h>
+#endif
+
+#include <stdio.h>
+#include <ctype.h>
+#include <stdlib.h>
+
+#include <X11/Xos.h>
+
+#include <X11/X.h>
+#define NEED_EVENTS
+#include <X11/Xproto.h>
+#include "misc.h"
+#include "inputstr.h"
+#include "dix.h"
+#include <X11/extensions/XKBstr.h>
+#define XKBSRV_NEED_FILE_FUNCS 1
+#include <X11/extensions/XKBsrv.h>
+#include <X11/extensions/XKBgeom.h>
+
+/***====================================================================***/
+
+#define BUFFER_SIZE 512
+
+static char textBuffer[BUFFER_SIZE];
+static int tbNext= 0;
+
+static char *
+tbGetBuffer(unsigned size)
+{
+char *rtrn;
+
+ if (size>=BUFFER_SIZE)
+ return NULL;
+ if ((BUFFER_SIZE-tbNext)<=size)
+ tbNext= 0;
+ rtrn= &textBuffer[tbNext];
+ tbNext+= size;
+ return rtrn;
+}
+
+/***====================================================================***/
+
+char *
+XkbAtomText(Display *dpy,Atom atm,unsigned format)
+{
+char *rtrn,*tmp;
+
+ tmp= XkbAtomGetString(dpy,atm);
+ if (tmp!=NULL) {
+ int len;
+ len= strlen(tmp)+1;
+ if (len>BUFFER_SIZE)
+ len= BUFFER_SIZE-2;
+ rtrn= tbGetBuffer(len);
+ strncpy(rtrn,tmp,len);
+ rtrn[len]= '\0';
+ }
+ else {
+ rtrn= tbGetBuffer(1);
+ rtrn[0]= '\0';
+ }
+ if (format==XkbCFile) {
+ for (tmp=rtrn;*tmp!='\0';tmp++) {
+ if ((tmp==rtrn)&&(!isalpha(*tmp)))
+ *tmp= '_';
+ else if (!isalnum(*tmp))
+ *tmp= '_';
+ }
+ }
+ return XkbStringText(rtrn,format);
+}
+
+/***====================================================================***/
+
+char *
+XkbVModIndexText(Display *dpy,XkbDescPtr xkb,unsigned ndx,unsigned format)
+{
+register int len;
+register Atom *vmodNames;
+char *rtrn,*tmp;
+char numBuf[20];
+
+ if (xkb && xkb->names)
+ vmodNames= xkb->names->vmods;
+ else vmodNames= NULL;
+
+ tmp= NULL;
+ if (ndx>=XkbNumVirtualMods)
+ tmp= "illegal";
+ else if (vmodNames&&(vmodNames[ndx]!=None))
+ tmp= XkbAtomGetString(dpy,vmodNames[ndx]);
+ if (tmp==NULL)
+ sprintf(tmp=numBuf,"%d",ndx);
+
+ len= strlen(tmp)+1;
+ if (format==XkbCFile)
+ len+= 4;
+ if (len>=BUFFER_SIZE)
+ len= BUFFER_SIZE-1;
+ rtrn= tbGetBuffer(len);
+ if (format==XkbCFile) {
+ strcpy(rtrn,"vmod_");
+ strncpy(&rtrn[5],tmp,len-4);
+ }
+ else strncpy(rtrn,tmp,len);
+ return rtrn;
+}
+
+char *
+XkbVModMaskText( Display * dpy,
+ XkbDescPtr xkb,
+ unsigned modMask,
+ unsigned mask,
+ unsigned format)
+{
+register int i,bit;
+int len;
+char *mm,*rtrn;
+char *str,buf[BUFFER_SIZE];
+
+ if ((modMask==0)&&(mask==0)) {
+ rtrn= tbGetBuffer(5);
+ if (format==XkbCFile)
+ sprintf(rtrn,"0");
+ else sprintf(rtrn,"none");
+ return rtrn;
+ }
+ if (modMask!=0)
+ mm= XkbModMaskText(modMask,format);
+ else mm= NULL;
+
+ str= buf;
+ buf[0]= '\0';
+ if (mask) {
+ char *tmp;
+ for (i=0,bit=1;i<XkbNumVirtualMods;i++,bit<<=1) {
+ if (mask&bit) {
+ tmp= XkbVModIndexText(dpy,xkb,i,format);
+ len= strlen(tmp)+1+(str==buf?0:1);
+ if (format==XkbCFile)
+ len+= 4;
+ if ((str-(buf+len))<=BUFFER_SIZE) {
+ if (str!=buf) {
+ if (format==XkbCFile) *str++= '|';
+ else *str++= '+';
+ len--;
+ }
+ }
+ if (format==XkbCFile)
+ sprintf(str,"%sMask",tmp);
+ else strcpy(str,tmp);
+ str= &str[len-1];
+ }
+ }
+ str= buf;
+ }
+ else str= NULL;
+ if (mm)
+ len= strlen(mm);
+ else len= 0;
+ if (str)
+ len+= strlen(str)+(mm==NULL?0:1);
+ if (len>=BUFFER_SIZE)
+ len= BUFFER_SIZE-1;
+ rtrn= tbGetBuffer(len+1);
+ rtrn[0]= '\0';
+
+ if (mm!=NULL) {
+ i= strlen(mm);
+ if (i>len)
+ i= len;
+ strcpy(rtrn,mm);
+ }
+ else {
+ i=0;
+ }
+ if (str!=NULL) {
+ if (mm!=NULL) {
+ if (format==XkbCFile) strcat(rtrn,"|");
+ else strcat(rtrn,"+");
+ }
+ strncat(rtrn,str,len-i);
+ }
+ rtrn[len]= '\0';
+ return rtrn;
+}
+
+static char *modNames[XkbNumModifiers] = {
+ "Shift", "Lock", "Control", "Mod1", "Mod2", "Mod3", "Mod4", "Mod5"
+};
+
+char *
+XkbModIndexText(unsigned ndx,unsigned format)
+{
+char * rtrn;
+char buf[100];
+
+ if (format==XkbCFile) {
+ if (ndx<XkbNumModifiers)
+ sprintf(buf,"%sMapIndex",modNames[ndx]);
+ else if (ndx==XkbNoModifier)
+ sprintf(buf,"XkbNoModifier");
+ else sprintf(buf,"0x%02x",ndx);
+ }
+ else {
+ if (ndx<XkbNumModifiers)
+ strcpy(buf,modNames[ndx]);
+ else if (ndx==XkbNoModifier)
+ strcpy(buf,"none");
+ else sprintf(buf,"ILLEGAL_%02x",ndx);
+ }
+ rtrn= tbGetBuffer(strlen(buf)+1);
+ strcpy(rtrn,buf);
+ return rtrn;
+}
+
+char *
+XkbModMaskText(unsigned mask,unsigned format)
+{
+register int i,bit;
+char buf[64],*rtrn;
+
+ if ((mask&0xff)==0xff) {
+ if (format==XkbCFile) strcpy(buf,"0xff");
+ else strcpy(buf,"all");
+ }
+ else if ((mask&0xff)==0) {
+ if (format==XkbCFile) strcpy(buf,"0");
+ else strcpy(buf,"none");
+ }
+ else {
+ char *str= buf;
+ buf[0]= '\0';
+ for (i=0,bit=1;i<XkbNumModifiers;i++,bit<<=1) {
+ if (mask&bit) {
+ if (str!=buf) {
+ if (format==XkbCFile) *str++= '|';
+ else *str++= '+';
+ }
+ strcpy(str,modNames[i]);
+ str= &str[strlen(str)];
+ if (format==XkbCFile) {
+ strcpy(str,"Mask");
+ str+= 4;
+ }
+ }
+ }
+ }
+ rtrn= tbGetBuffer(strlen(buf)+1);
+ strcpy(rtrn,buf);
+ return rtrn;
+}
+
+/***====================================================================***/
+
+/*ARGSUSED*/
+char *
+XkbConfigText(unsigned config,unsigned format)
+{
+static char *buf;
+
+ buf= tbGetBuffer(32);
+ switch (config) {
+ case XkmSemanticsFile:
+ strcpy(buf,"Semantics");
+ break;
+ case XkmLayoutFile:
+ strcpy(buf,"Layout");
+ break;
+ case XkmKeymapFile:
+ strcpy(buf,"Keymap");
+ break;
+ case XkmGeometryFile:
+ case XkmGeometryIndex:
+ strcpy(buf,"Geometry");
+ break;
+ case XkmTypesIndex:
+ strcpy(buf,"Types");
+ break;
+ case XkmCompatMapIndex:
+ strcpy(buf,"CompatMap");
+ break;
+ case XkmSymbolsIndex:
+ strcpy(buf,"Symbols");
+ break;
+ case XkmIndicatorsIndex:
+ strcpy(buf,"Indicators");
+ break;
+ case XkmKeyNamesIndex:
+ strcpy(buf,"KeyNames");
+ break;
+ case XkmVirtualModsIndex:
+ strcpy(buf,"VirtualMods");
+ break;
+ default:
+ sprintf(buf,"unknown(%d)",config);
+ break;
+ }
+ return buf;
+}
+
+/***====================================================================***/
+
+char *
+XkbKeysymText(KeySym sym,unsigned format)
+{
+static char buf[32],*rtrn;
+
+ if (sym==NoSymbol)
+ strcpy(rtrn=buf,"NoSymbol");
+ else sprintf(rtrn=buf, "0x%lx", (long)sym);
+ return rtrn;
+}
+
+char *
+XkbKeyNameText(char *name,unsigned format)
+{
+char *buf;
+
+ if (format==XkbCFile) {
+ buf= tbGetBuffer(5);
+ memcpy(buf,name,4);
+ buf[4]= '\0';
+ }
+ else {
+ int len;
+ buf= tbGetBuffer(7);
+ buf[0]= '<';
+ memcpy(&buf[1],name,4);
+ buf[5]= '\0';
+ len= strlen(buf);
+ buf[len++]= '>';
+ buf[len]= '\0';
+ }
+ return buf;
+}
+
+/***====================================================================***/
+
+static char *siMatchText[5] = {
+ "NoneOf", "AnyOfOrNone", "AnyOf", "AllOf", "Exactly"
+};
+
+char *
+XkbSIMatchText(unsigned type,unsigned format)
+{
+static char buf[40];
+char *rtrn;
+
+ switch (type&XkbSI_OpMask) {
+ case XkbSI_NoneOf: rtrn= siMatchText[0]; break;
+ case XkbSI_AnyOfOrNone: rtrn= siMatchText[1]; break;
+ case XkbSI_AnyOf: rtrn= siMatchText[2]; break;
+ case XkbSI_AllOf: rtrn= siMatchText[3]; break;
+ case XkbSI_Exactly: rtrn= siMatchText[4]; break;
+ default: sprintf(buf,"0x%x",type&XkbSI_OpMask);
+ return buf;
+ }
+ if (format==XkbCFile) {
+ if (type&XkbSI_LevelOneOnly)
+ sprintf(buf,"XkbSI_LevelOneOnly|XkbSI_%s",rtrn);
+ else sprintf(buf,"XkbSI_%s",rtrn);
+ rtrn= buf;
+ }
+ return rtrn;
+}
+
+/***====================================================================***/
+
+static char *imWhichNames[]= {
+ "base",
+ "latched",
+ "locked",
+ "effective",
+ "compat"
+};
+
+char *
+XkbIMWhichStateMaskText(unsigned use_which,unsigned format)
+{
+int len;
+unsigned i,bit,tmp;
+char * buf;
+
+ if (use_which==0) {
+ buf= tbGetBuffer(2);
+ strcpy(buf,"0");
+ return buf;
+ }
+ tmp= use_which&XkbIM_UseAnyMods;
+ for (len=i=0,bit=1;tmp!=0;i++,bit<<=1) {
+ if (tmp&bit) {
+ tmp&= ~bit;
+ len+= strlen(imWhichNames[i])+1;
+ if (format==XkbCFile)
+ len+= 9;
+ }
+ }
+ buf= tbGetBuffer(len+1);
+ tmp= use_which&XkbIM_UseAnyMods;
+ for (len=i=0,bit=1;tmp!=0;i++,bit<<=1) {
+ if (tmp&bit) {
+ tmp&= ~bit;
+ if (format==XkbCFile) {
+ if (len!=0)
+ buf[len++]= '|';
+ sprintf(&buf[len],"XkbIM_Use%s",imWhichNames[i]);
+ buf[len+9]= toupper(buf[len+9]);
+ }
+ else {
+ if (len!=0)
+ buf[len++]= '+';
+ sprintf(&buf[len],"%s",imWhichNames[i]);
+ }
+ len+= strlen(&buf[len]);
+ }
+ }
+ return buf;
+}
+
+char *
+XkbAccessXDetailText(unsigned state,unsigned format)
+{
+char *buf,*prefix;
+
+ buf= tbGetBuffer(32);
+ if (format==XkbMessage) prefix= "";
+ else prefix= "XkbAXN_";
+ switch (state){
+ case XkbAXN_SKPress: sprintf(buf,"%sSKPress",prefix); break;
+ case XkbAXN_SKAccept: sprintf(buf,"%sSKAccept",prefix); break;
+ case XkbAXN_SKRelease: sprintf(buf,"%sSKRelease",prefix); break;
+ case XkbAXN_SKReject: sprintf(buf,"%sSKReject",prefix); break;
+ case XkbAXN_BKAccept: sprintf(buf,"%sBKAccept",prefix); break;
+ case XkbAXN_BKReject: sprintf(buf,"%sBKReject",prefix); break;
+ case XkbAXN_AXKWarning: sprintf(buf,"%sAXKWarning",prefix); break;
+ default: sprintf(buf,"ILLEGAL"); break;
+ }
+ return buf;
+}
+
+static char *nknNames[] = {
+ "keycodes", "geometry", "deviceID"
+};
+#define NUM_NKN (sizeof(nknNames)/sizeof(char *))
+
+char *
+XkbNKNDetailMaskText(unsigned detail,unsigned format)
+{
+char *buf,*prefix,*suffix;
+register int i;
+register unsigned bit;
+int len,plen,slen;
+
+
+ if ((detail&XkbAllNewKeyboardEventsMask)==0) {
+ char *tmp = "";
+ if (format==XkbCFile) tmp= "0";
+ else if (format==XkbMessage) tmp= "none";
+ buf= tbGetBuffer(strlen(tmp)+1);
+ strcpy(buf,tmp);
+ return buf;
+ }
+ else if ((detail&XkbAllNewKeyboardEventsMask)==XkbAllNewKeyboardEventsMask){
+ char * tmp;
+ if (format==XkbCFile) tmp= "XkbAllNewKeyboardEventsMask";
+ else tmp= "all";
+ buf= tbGetBuffer(strlen(tmp)+1);
+ strcpy(buf,tmp);
+ return buf;
+ }
+ if (format==XkbMessage) {
+ prefix= "";
+ suffix= "";
+ slen= plen= 0;
+ }
+ else {
+ prefix= "XkbNKN_";
+ plen= 7;
+ if (format==XkbCFile)
+ suffix= "Mask";
+ else suffix= "";
+ slen= strlen(suffix);
+ }
+ for (len=0,i=0,bit=1;i<NUM_NKN;i++,bit<<=1) {
+ if (detail&bit) {
+ if (len!=0) len+= 1; /* room for '+' or '|' */
+ len+= plen+slen+strlen(nknNames[i]);
+ }
+ }
+ buf= tbGetBuffer(len+1);
+ buf[0]= '\0';
+ for (len=0,i=0,bit=1;i<NUM_NKN;i++,bit<<=1) {
+ if (detail&bit) {
+ if (len!=0) {
+ if (format==XkbCFile) buf[len++]= '|';
+ else buf[len++]= '+';
+ }
+ if (plen) {
+ strcpy(&buf[len],prefix);
+ len+= plen;
+ }
+ strcpy(&buf[len],nknNames[i]);
+ len+= strlen(nknNames[i]);
+ if (slen) {
+ strcpy(&buf[len],suffix);
+ len+= slen;
+ }
+ }
+ }
+ buf[len++]= '\0';
+ return buf;
+}
+
+static char *ctrlNames[] = {
+ "repeatKeys",
+ "slowKeys",
+ "bounceKeys",
+ "stickyKeys",
+ "mouseKeys",
+ "mouseKeysAccel",
+ "accessXKeys",
+ "accessXTimeout",
+ "accessXFeedback",
+ "audibleBell",
+ "overlay1",
+ "overlay2",
+ "ignoreGroupLock"
+};
+
+char *
+XkbControlsMaskText(unsigned ctrls,unsigned format)
+{
+int len;
+unsigned i,bit,tmp;
+char * buf;
+
+ if (ctrls==0) {
+ buf= tbGetBuffer(5);
+ if (format==XkbCFile)
+ strcpy(buf,"0");
+ else strcpy(buf,"none");
+ return buf;
+ }
+ tmp= ctrls&XkbAllBooleanCtrlsMask;
+ for (len=i=0,bit=1;tmp!=0;i++,bit<<=1) {
+ if (tmp&bit) {
+ tmp&= ~bit;
+ len+= strlen(ctrlNames[i])+1;
+ if (format==XkbCFile)
+ len+= 7;
+ }
+ }
+ buf= tbGetBuffer(len+1);
+ tmp= ctrls&XkbAllBooleanCtrlsMask;
+ for (len=i=0,bit=1;tmp!=0;i++,bit<<=1) {
+ if (tmp&bit) {
+ tmp&= ~bit;
+ if (format==XkbCFile) {
+ if (len!=0)
+ buf[len++]= '|';
+ sprintf(&buf[len],"Xkb%sMask",ctrlNames[i]);
+ buf[len+3]= toupper(buf[len+3]);
+ }
+ else {
+ if (len!=0)
+ buf[len++]= '+';
+ sprintf(&buf[len],"%s",ctrlNames[i]);
+ }
+ len+= strlen(&buf[len]);
+ }
+ }
+ return buf;
+}
+
+/***====================================================================***/
+
+char *
+XkbStringText(char *str,unsigned format)
+{
+char * buf;
+register char *in,*out;
+int len;
+Bool ok;
+
+ if (str==NULL) {
+ buf= tbGetBuffer(2);
+ buf[0]='\0';
+ return buf;
+ }
+ else if (format==XkbXKMFile)
+ return str;
+ for (ok= True,len=0,in=str;*in!='\0';in++,len++) {
+ if (!isprint(*in)) {
+ ok= False;
+ switch (*in) {
+ case '\n': case '\t': case '\v':
+ case '\b': case '\r': case '\f':
+ len++;
+ break;
+ default:
+ len+= 4;
+ break;
+ }
+ }
+ }
+ if (ok)
+ return str;
+ buf= tbGetBuffer(len+1);
+ for (in=str,out=buf;*in!='\0';in++) {
+ if (isprint(*in))
+ *out++= *in;
+ else {
+ *out++= '\\';
+ if (*in=='\n') *out++= 'n';
+ else if (*in=='\t') *out++= 't';
+ else if (*in=='\v') *out++= 'v';
+ else if (*in=='\b') *out++= 'b';
+ else if (*in=='\r') *out++= 'r';
+ else if (*in=='\f') *out++= 'f';
+ else if ((*in=='\033')&&(format==XkbXKMFile)) {
+ *out++= 'e';
+ }
+ else {
+ *out++= '0';
+ sprintf(out,"%o",*in);
+ while (*out!='\0')
+ out++;
+ }
+ }
+ }
+ *out++= '\0';
+ return buf;
+}
+
+/***====================================================================***/
+
+char *
+XkbGeomFPText(int val,unsigned format)
+{
+int whole,frac;
+char * buf;
+
+ buf= tbGetBuffer(12);
+ if (format==XkbCFile) {
+ sprintf(buf,"%d",val);
+ }
+ else {
+ whole= val/XkbGeomPtsPerMM;
+ frac= val%XkbGeomPtsPerMM;
+ if (frac!=0)
+ sprintf(buf,"%d.%d",whole,frac);
+ else sprintf(buf,"%d",whole);
+ }
+ return buf;
+}
+
+char *
+XkbDoodadTypeText(unsigned type,unsigned format)
+{
+char * buf;
+ if (format==XkbCFile) {
+ buf= tbGetBuffer(24);
+ if (type==XkbOutlineDoodad) strcpy(buf,"XkbOutlineDoodad");
+ else if (type==XkbSolidDoodad) strcpy(buf,"XkbSolidDoodad");
+ else if (type==XkbTextDoodad) strcpy(buf,"XkbTextDoodad");
+ else if (type==XkbIndicatorDoodad) strcpy(buf,"XkbIndicatorDoodad");
+ else if (type==XkbLogoDoodad) strcpy(buf,"XkbLogoDoodad");
+ else sprintf(buf,"UnknownDoodad%d",type);
+ }
+ else {
+ buf= tbGetBuffer(12);
+ if (type==XkbOutlineDoodad) strcpy(buf,"outline");
+ else if (type==XkbSolidDoodad) strcpy(buf,"solid");
+ else if (type==XkbTextDoodad) strcpy(buf,"text");
+ else if (type==XkbIndicatorDoodad) strcpy(buf,"indicator");
+ else if (type==XkbLogoDoodad) strcpy(buf,"logo");
+ else sprintf(buf,"unknown%d",type);
+ }
+ return buf;
+}
+
+static char *actionTypeNames[XkbSA_NumActions]= {
+ "NoAction",
+ "SetMods", "LatchMods", "LockMods",
+ "SetGroup", "LatchGroup", "LockGroup",
+ "MovePtr",
+ "PtrBtn", "LockPtrBtn",
+ "SetPtrDflt",
+ "ISOLock",
+ "Terminate", "SwitchScreen",
+ "SetControls", "LockControls",
+ "ActionMessage",
+ "RedirectKey",
+ "DeviceBtn", "LockDeviceBtn"
+};
+
+char *
+XkbActionTypeText(unsigned type,unsigned format)
+{
+static char buf[32];
+char *rtrn;
+
+ if (type<=XkbSA_LastAction) {
+ rtrn= actionTypeNames[type];
+ if (format==XkbCFile) {
+ sprintf(buf,"XkbSA_%s",rtrn);
+ return buf;
+ }
+ return rtrn;
+ }
+ sprintf(buf,"Private");
+ return buf;
+}
+
+/***====================================================================***/
+
+static int
+TryCopyStr(char *to,char *from,int *pLeft)
+{
+register int len;
+ if (*pLeft>0) {
+ len= strlen(from);
+ if (len<((*pLeft)-3)) {
+ strcat(to,from);
+ *pLeft-= len;
+ return True;
+ }
+ }
+ *pLeft= -1;
+ return False;
+}
+
+/*ARGSUSED*/
+static Bool
+CopyNoActionArgs(Display *dpy,XkbDescPtr xkb,XkbAction *action,char *buf,int*sz)
+{
+ return True;
+}
+
+static Bool
+CopyModActionArgs(Display *dpy,XkbDescPtr xkb,XkbAction *action,char *buf,
+ int* sz)
+{
+XkbModAction * act;
+unsigned tmp;
+
+ act= &action->mods;
+ tmp= XkbModActionVMods(act);
+ TryCopyStr(buf,"modifiers=",sz);
+ if (act->flags&XkbSA_UseModMapMods)
+ TryCopyStr(buf,"modMapMods",sz);
+ else if (act->real_mods || tmp) {
+ TryCopyStr(buf,
+ XkbVModMaskText(dpy,xkb,act->real_mods,tmp,XkbXKBFile),
+ sz);
+ }
+ else TryCopyStr(buf,"none",sz);
+ if (act->type==XkbSA_LockMods)
+ return True;
+ if (act->flags&XkbSA_ClearLocks)
+ TryCopyStr(buf,",clearLocks",sz);
+ if (act->flags&XkbSA_LatchToLock)
+ TryCopyStr(buf,",latchToLock",sz);
+ return True;
+}
+
+/*ARGSUSED*/
+static Bool
+CopyGroupActionArgs(Display *dpy,XkbDescPtr xkb,XkbAction *action,char *buf,
+ int *sz)
+{
+XkbGroupAction * act;
+char tbuf[32];
+
+ act= &action->group;
+ TryCopyStr(buf,"group=",sz);
+ if (act->flags&XkbSA_GroupAbsolute)
+ sprintf(tbuf,"%d",XkbSAGroup(act)+1);
+ else if (XkbSAGroup(act)<0)
+ sprintf(tbuf,"%d",XkbSAGroup(act));
+ else sprintf(tbuf,"+%d",XkbSAGroup(act));
+ TryCopyStr(buf,tbuf,sz);
+ if (act->type==XkbSA_LockGroup)
+ return True;
+ if (act->flags&XkbSA_ClearLocks)
+ TryCopyStr(buf,",clearLocks",sz);
+ if (act->flags&XkbSA_LatchToLock)
+ TryCopyStr(buf,",latchToLock",sz);
+ return True;
+}
+
+/*ARGSUSED*/
+static Bool
+CopyMovePtrArgs(Display *dpy,XkbDescPtr xkb,XkbAction *action,char *buf,int *sz)
+{
+XkbPtrAction * act;
+int x,y;
+char tbuf[32];
+
+ act= &action->ptr;
+ x= XkbPtrActionX(act);
+ y= XkbPtrActionY(act);
+ if ((act->flags&XkbSA_MoveAbsoluteX)||(x<0))
+ sprintf(tbuf,"x=%d",x);
+ else sprintf(tbuf,"x=+%d",x);
+ TryCopyStr(buf,tbuf,sz);
+
+ if ((act->flags&XkbSA_MoveAbsoluteY)||(y<0))
+ sprintf(tbuf,",y=%d",y);
+ else sprintf(tbuf,",y=+%d",y);
+ TryCopyStr(buf,tbuf,sz);
+ if (act->flags&XkbSA_NoAcceleration)
+ TryCopyStr(buf,",!accel",sz);
+ return True;
+}
+
+/*ARGSUSED*/
+static Bool
+CopyPtrBtnArgs(Display *dpy,XkbDescPtr xkb,XkbAction *action,char *buf,int *sz)
+{
+XkbPtrBtnAction * act;
+char tbuf[32];
+
+ act= &action->btn;
+ TryCopyStr(buf,"button=",sz);
+ if ((act->button>0)&&(act->button<6)) {
+ sprintf(tbuf,"%d",act->button);
+ TryCopyStr(buf,tbuf,sz);
+ }
+ else TryCopyStr(buf,"default",sz);
+ if (act->count>0) {
+ sprintf(tbuf,",count=%d",act->count);
+ TryCopyStr(buf,tbuf,sz);
+ }
+ if (action->type==XkbSA_LockPtrBtn) {
+ switch (act->flags&(XkbSA_LockNoUnlock|XkbSA_LockNoLock)) {
+ case XkbSA_LockNoLock:
+ sprintf(tbuf,",affect=unlock"); break;
+ case XkbSA_LockNoUnlock:
+ sprintf(tbuf,",affect=lock"); break;
+ case XkbSA_LockNoUnlock|XkbSA_LockNoLock:
+ sprintf(tbuf,",affect=neither"); break;
+ default:
+ sprintf(tbuf,",affect=both"); break;
+ }
+ TryCopyStr(buf,tbuf,sz);
+ }
+ return True;
+}
+
+/*ARGSUSED*/
+static Bool
+CopySetPtrDfltArgs(Display *dpy,XkbDescPtr xkb,XkbAction *action,char *buf,
+ int *sz)
+{
+XkbPtrDfltAction * act;
+char tbuf[32];
+
+ act= &action->dflt;
+ if (act->affect==XkbSA_AffectDfltBtn) {
+ TryCopyStr(buf,"affect=button,button=",sz);
+ if ((act->flags&XkbSA_DfltBtnAbsolute)||(XkbSAPtrDfltValue(act)<0))
+ sprintf(tbuf,"%d",XkbSAPtrDfltValue(act));
+ else sprintf(tbuf,"+%d",XkbSAPtrDfltValue(act));
+ TryCopyStr(buf,tbuf,sz);
+ }
+ return True;
+}
+
+static Bool
+CopyISOLockArgs(Display *dpy,XkbDescPtr xkb,XkbAction *action,char *buf,int *sz)
+{
+XkbISOAction * act;
+char tbuf[64];
+
+ act= &action->iso;
+ if (act->flags&XkbSA_ISODfltIsGroup) {
+ TryCopyStr(tbuf,"group=",sz);
+ if (act->flags&XkbSA_GroupAbsolute)
+ sprintf(tbuf,"%d",XkbSAGroup(act)+1);
+ else if (XkbSAGroup(act)<0)
+ sprintf(tbuf,"%d",XkbSAGroup(act));
+ else sprintf(tbuf,"+%d",XkbSAGroup(act));
+ TryCopyStr(buf,tbuf,sz);
+ }
+ else {
+ unsigned tmp;
+ tmp= XkbModActionVMods(act);
+ TryCopyStr(buf,"modifiers=",sz);
+ if (act->flags&XkbSA_UseModMapMods)
+ TryCopyStr(buf,"modMapMods",sz);
+ else if (act->real_mods || tmp) {
+ if (act->real_mods) {
+ TryCopyStr(buf,XkbModMaskText(act->real_mods,XkbXKBFile),sz);
+ if (tmp)
+ TryCopyStr(buf,"+",sz);
+ }
+ if (tmp)
+ TryCopyStr(buf,XkbVModMaskText(dpy,xkb,0,tmp,XkbXKBFile),sz);
+ }
+ else TryCopyStr(buf,"none",sz);
+ }
+ TryCopyStr(buf,",affect=",sz);
+ if ((act->affect&XkbSA_ISOAffectMask)==0)
+ TryCopyStr(buf,"all",sz);
+ else {
+ int nOut= 0;
+ if ((act->affect&XkbSA_ISONoAffectMods)==0) {
+ TryCopyStr(buf,"mods",sz);
+ nOut++;
+ }
+ if ((act->affect&XkbSA_ISONoAffectGroup)==0) {
+ sprintf(tbuf,"%sgroups",(nOut>0?"+":""));
+ TryCopyStr(buf,tbuf,sz);
+ nOut++;
+ }
+ if ((act->affect&XkbSA_ISONoAffectPtr)==0) {
+ sprintf(tbuf,"%spointer",(nOut>0?"+":""));
+ TryCopyStr(buf,tbuf,sz);
+ nOut++;
+ }
+ if ((act->affect&XkbSA_ISONoAffectCtrls)==0) {
+ sprintf(tbuf,"%scontrols",(nOut>0?"+":""));
+ TryCopyStr(buf,tbuf,sz);
+ nOut++;
+ }
+ }
+ return True;
+}
+
+/*ARGSUSED*/
+static Bool
+CopySwitchScreenArgs(Display *dpy,XkbDescPtr xkb,XkbAction *action,char *buf,
+ int *sz)
+{
+XkbSwitchScreenAction * act;
+char tbuf[32];
+
+ act= &action->screen;
+ if ((act->flags&XkbSA_SwitchAbsolute)||(XkbSAScreen(act)<0))
+ sprintf(tbuf,"screen=%d",XkbSAScreen(act));
+ else sprintf(tbuf,"screen=+%d",XkbSAScreen(act));
+ TryCopyStr(buf,tbuf,sz);
+ if (act->flags&XkbSA_SwitchApplication)
+ TryCopyStr(buf,",!same",sz);
+ else TryCopyStr(buf,",same",sz);
+ return True;
+}
+
+/*ARGSUSED*/
+static Bool
+CopySetLockControlsArgs(Display *dpy,XkbDescPtr xkb,XkbAction *action,
+ char *buf,int *sz)
+{
+XkbCtrlsAction * act;
+unsigned tmp;
+char tbuf[32];
+
+ act= &action->ctrls;
+ tmp= XkbActionCtrls(act);
+ TryCopyStr(buf,"controls=",sz);
+ if (tmp==0)
+ TryCopyStr(buf,"none",sz);
+ else if ((tmp&XkbAllBooleanCtrlsMask)==XkbAllBooleanCtrlsMask)
+ TryCopyStr(buf,"all",sz);
+ else {
+ int nOut= 0;
+ if (tmp&XkbRepeatKeysMask) {
+ sprintf(tbuf,"%sRepeatKeys",(nOut>0?"+":""));
+ TryCopyStr(buf,tbuf,sz);
+ nOut++;
+ }
+ if (tmp&XkbSlowKeysMask) {
+ sprintf(tbuf,"%sSlowKeys",(nOut>0?"+":""));
+ TryCopyStr(buf,tbuf,sz);
+ nOut++;
+ }
+ if (tmp&XkbBounceKeysMask) {
+ sprintf(tbuf,"%sBounceKeys",(nOut>0?"+":""));
+ TryCopyStr(buf,tbuf,sz);
+ nOut++;
+ }
+ if (tmp&XkbStickyKeysMask) {
+ sprintf(tbuf,"%sStickyKeys",(nOut>0?"+":""));
+ TryCopyStr(buf,tbuf,sz);
+ nOut++;
+ }
+ if (tmp&XkbMouseKeysMask) {
+ sprintf(tbuf,"%sMouseKeys",(nOut>0?"+":""));
+ TryCopyStr(buf,tbuf,sz);
+ nOut++;
+ }
+ if (tmp&XkbMouseKeysAccelMask) {
+ sprintf(tbuf,"%sMouseKeysAccel",(nOut>0?"+":""));
+ TryCopyStr(buf,tbuf,sz);
+ nOut++;
+ }
+ if (tmp&XkbAccessXKeysMask) {
+ sprintf(tbuf,"%sAccessXKeys",(nOut>0?"+":""));
+ TryCopyStr(buf,tbuf,sz);
+ nOut++;
+ }
+ if (tmp&XkbAccessXTimeoutMask) {
+ sprintf(tbuf,"%sAccessXTimeout",(nOut>0?"+":""));
+ TryCopyStr(buf,tbuf,sz);
+ nOut++;
+ }
+ if (tmp&XkbAccessXFeedbackMask) {
+ sprintf(tbuf,"%sAccessXFeedback",(nOut>0?"+":""));
+ TryCopyStr(buf,tbuf,sz);
+ nOut++;
+ }
+ if (tmp&XkbAudibleBellMask) {
+ sprintf(tbuf,"%sAudibleBell",(nOut>0?"+":""));
+ TryCopyStr(buf,tbuf,sz);
+ nOut++;
+ }
+ if (tmp&XkbOverlay1Mask) {
+ sprintf(tbuf,"%sOverlay1",(nOut>0?"+":""));
+ TryCopyStr(buf,tbuf,sz);
+ nOut++;
+ }
+ if (tmp&XkbOverlay2Mask) {
+ sprintf(tbuf,"%sOverlay2",(nOut>0?"+":""));
+ TryCopyStr(buf,tbuf,sz);
+ nOut++;
+ }
+ if (tmp&XkbIgnoreGroupLockMask) {
+ sprintf(tbuf,"%sIgnoreGroupLock",(nOut>0?"+":""));
+ TryCopyStr(buf,tbuf,sz);
+ nOut++;
+ }
+ }
+ return True;
+}
+
+/*ARGSUSED*/
+static Bool
+CopyActionMessageArgs(Display *dpy,XkbDescPtr xkb,XkbAction *action,char *buf,
+ int *sz)
+{
+XkbMessageAction * act;
+unsigned all;
+char tbuf[32];
+
+ act= &action->msg;
+ all= XkbSA_MessageOnPress|XkbSA_MessageOnRelease;
+ TryCopyStr(buf,"report=",sz);
+ if ((act->flags&all)==0)
+ TryCopyStr(buf,"none",sz);
+ else if ((act->flags&all)==all)
+ TryCopyStr(buf,"all",sz);
+ else if (act->flags&XkbSA_MessageOnPress)
+ TryCopyStr(buf,"KeyPress",sz);
+ else TryCopyStr(buf,"KeyRelease",sz);
+ sprintf(tbuf,",data[0]=0x%02x",act->message[0]); TryCopyStr(buf,tbuf,sz);
+ sprintf(tbuf,",data[1]=0x%02x",act->message[1]); TryCopyStr(buf,tbuf,sz);
+ sprintf(tbuf,",data[2]=0x%02x",act->message[2]); TryCopyStr(buf,tbuf,sz);
+ sprintf(tbuf,",data[3]=0x%02x",act->message[3]); TryCopyStr(buf,tbuf,sz);
+ sprintf(tbuf,",data[4]=0x%02x",act->message[4]); TryCopyStr(buf,tbuf,sz);
+ sprintf(tbuf,",data[5]=0x%02x",act->message[5]); TryCopyStr(buf,tbuf,sz);
+ return True;
+}
+
+static Bool
+CopyRedirectKeyArgs(Display *dpy,XkbDescPtr xkb,XkbAction *action,char *buf,
+ int *sz)
+{
+XkbRedirectKeyAction * act;
+char tbuf[32],*tmp;
+unsigned kc;
+unsigned vmods,vmods_mask;
+
+ act= &action->redirect;
+ kc= act->new_key;
+ vmods= XkbSARedirectVMods(act);
+ vmods_mask= XkbSARedirectVModsMask(act);
+ if (xkb && xkb->names && xkb->names->keys && (kc<=xkb->max_key_code) &&
+ (xkb->names->keys[kc].name[0]!='\0')) {
+ char *kn;
+ kn= XkbKeyNameText(xkb->names->keys[kc].name,XkbXKBFile);
+ sprintf(tbuf,"key=%s",kn);
+ }
+ else sprintf(tbuf,"key=%d",kc);
+ TryCopyStr(buf,tbuf,sz);
+ if ((act->mods_mask==0)&&(vmods_mask==0))
+ return True;
+ if ((act->mods_mask==XkbAllModifiersMask)&&
+ (vmods_mask==XkbAllVirtualModsMask)) {
+ tmp= XkbVModMaskText(dpy,xkb,act->mods,vmods,XkbXKBFile);
+ TryCopyStr(buf,",mods=",sz);
+ TryCopyStr(buf,tmp,sz);
+ }
+ else {
+ if ((act->mods_mask&act->mods)||(vmods_mask&vmods)) {
+ tmp= XkbVModMaskText(dpy,xkb,act->mods_mask&act->mods,
+ vmods_mask&vmods,XkbXKBFile);
+ TryCopyStr(buf,",mods= ",sz);
+ TryCopyStr(buf,tmp,sz);
+ }
+ if ((act->mods_mask&(~act->mods))||(vmods_mask&(~vmods))) {
+ tmp= XkbVModMaskText(dpy,xkb,act->mods_mask&(~act->mods),
+ vmods_mask&(~vmods),XkbXKBFile);
+ TryCopyStr(buf,",clearMods= ",sz);
+ TryCopyStr(buf,tmp,sz);
+ }
+ }
+ return True;
+}
+
+/*ARGSUSED*/
+static Bool
+CopyDeviceBtnArgs(Display *dpy,XkbDescPtr xkb,XkbAction *action,char *buf,
+ int *sz)
+{
+XkbDeviceBtnAction * act;
+char tbuf[32];
+
+ act= &action->devbtn;
+ sprintf(tbuf,"device= %d",act->device); TryCopyStr(buf,tbuf,sz);
+ TryCopyStr(buf,",button=",sz);
+ sprintf(tbuf,"%d",act->button);
+ TryCopyStr(buf,tbuf,sz);
+ if (act->count>0) {
+ sprintf(tbuf,",count=%d",act->count);
+ TryCopyStr(buf,tbuf,sz);
+ }
+ if (action->type==XkbSA_LockDeviceBtn) {
+ switch (act->flags&(XkbSA_LockNoUnlock|XkbSA_LockNoLock)) {
+ case XkbSA_LockNoLock:
+ sprintf(tbuf,",affect=unlock"); break;
+ case XkbSA_LockNoUnlock:
+ sprintf(tbuf,",affect=lock"); break;
+ case XkbSA_LockNoUnlock|XkbSA_LockNoLock:
+ sprintf(tbuf,",affect=neither"); break;
+ default:
+ sprintf(tbuf,",affect=both"); break;
+ }
+ TryCopyStr(buf,tbuf,sz);
+ }
+ return True;
+}
+
+/*ARGSUSED*/
+static Bool
+CopyOtherArgs(Display *dpy,XkbDescPtr xkb,XkbAction *action,char *buf,int *sz)
+{
+XkbAnyAction * act;
+char tbuf[32];
+
+ act= &action->any;
+ sprintf(tbuf,"type=0x%02x",act->type); TryCopyStr(buf,tbuf,sz);
+ sprintf(tbuf,",data[0]=0x%02x",act->data[0]); TryCopyStr(buf,tbuf,sz);
+ sprintf(tbuf,",data[1]=0x%02x",act->data[1]); TryCopyStr(buf,tbuf,sz);
+ sprintf(tbuf,",data[2]=0x%02x",act->data[2]); TryCopyStr(buf,tbuf,sz);
+ sprintf(tbuf,",data[3]=0x%02x",act->data[3]); TryCopyStr(buf,tbuf,sz);
+ sprintf(tbuf,",data[4]=0x%02x",act->data[4]); TryCopyStr(buf,tbuf,sz);
+ sprintf(tbuf,",data[5]=0x%02x",act->data[5]); TryCopyStr(buf,tbuf,sz);
+ sprintf(tbuf,",data[6]=0x%02x",act->data[6]); TryCopyStr(buf,tbuf,sz);
+ return True;
+}
+
+typedef Bool (*actionCopy)(
+ Display * /* dpy */,
+ XkbDescPtr /* xkb */,
+ XkbAction * /* action */,
+ char * /* buf */,
+ int* /* sz */
+);
+static actionCopy copyActionArgs[XkbSA_NumActions] = {
+ CopyNoActionArgs /* NoAction */,
+ CopyModActionArgs /* SetMods */,
+ CopyModActionArgs /* LatchMods */,
+ CopyModActionArgs /* LockMods */,
+ CopyGroupActionArgs /* SetGroup */,
+ CopyGroupActionArgs /* LatchGroup */,
+ CopyGroupActionArgs /* LockGroup */,
+ CopyMovePtrArgs /* MovePtr */,
+ CopyPtrBtnArgs /* PtrBtn */,
+ CopyPtrBtnArgs /* LockPtrBtn */,
+ CopySetPtrDfltArgs /* SetPtrDflt */,
+ CopyISOLockArgs /* ISOLock */,
+ CopyNoActionArgs /* Terminate */,
+ CopySwitchScreenArgs /* SwitchScreen */,
+ CopySetLockControlsArgs /* SetControls */,
+ CopySetLockControlsArgs /* LockControls */,
+ CopyActionMessageArgs /* ActionMessage*/,
+ CopyRedirectKeyArgs /* RedirectKey */,
+ CopyDeviceBtnArgs /* DeviceBtn */,
+ CopyDeviceBtnArgs /* LockDeviceBtn*/
+};
+
+#define ACTION_SZ 256
+
+char *
+XkbActionText(Display *dpy,XkbDescPtr xkb,XkbAction *action,unsigned format)
+{
+char buf[ACTION_SZ],*tmp;
+int sz;
+
+ if (format==XkbCFile) {
+ sprintf(buf,
+ "{ %20s, { 0x%02x, 0x%02x, 0x%02x, 0x%02x, 0x%02x, 0x%02x, 0x%02x } }",
+ XkbActionTypeText(action->type,XkbCFile),
+ action->any.data[0],action->any.data[1],action->any.data[2],
+ action->any.data[3],action->any.data[4],action->any.data[5],
+ action->any.data[6]);
+ }
+ else {
+ sprintf(buf,"%s(",XkbActionTypeText(action->type,XkbXKBFile));
+ sz= ACTION_SZ-strlen(buf)+2; /* room for close paren and NULL */
+ if (action->type<(unsigned)XkbSA_NumActions)
+ (*copyActionArgs[action->type])(dpy,xkb,action,buf,&sz);
+ else CopyOtherArgs(dpy,xkb,action,buf,&sz);
+ TryCopyStr(buf,")",&sz);
+ }
+ tmp= tbGetBuffer(strlen(buf)+1);
+ if (tmp!=NULL)
+ strcpy(tmp,buf);
+ return tmp;
+}
+
+char *
+XkbBehaviorText(XkbDescPtr xkb,XkbBehavior *behavior,unsigned format)
+{
+char buf[256],*tmp;
+
+ if (format==XkbCFile) {
+ if (behavior->type==XkbKB_Default)
+ sprintf(buf,"{ 0, 0 }");
+ else sprintf(buf,"{ %3d, 0x%02x }",behavior->type,behavior->data);
+ }
+ else {
+ unsigned type,permanent;
+ type= behavior->type&XkbKB_OpMask;
+ permanent=((behavior->type&XkbKB_Permanent)!=0);
+
+ if (type==XkbKB_Lock) {
+ sprintf(buf,"lock= %s",(permanent?"Permanent":"True"));
+ }
+ else if (type==XkbKB_RadioGroup) {
+ int g;
+ char *tmp;
+ g= ((behavior->data)&(~XkbKB_RGAllowNone))+1;
+ if (XkbKB_RGAllowNone&behavior->data) {
+ sprintf(buf,"allowNone,");
+ tmp= &buf[strlen(buf)];
+ }
+ else tmp= buf;
+ if (permanent)
+ sprintf(tmp,"permanentRadioGroup= %d",g);
+ else sprintf(tmp,"radioGroup= %d",g);
+ }
+ else if ((type==XkbKB_Overlay1)||(type==XkbKB_Overlay2)) {
+ int ndx,kc;
+ char *kn;
+
+ ndx= ((type==XkbKB_Overlay1)?1:2);
+ kc= behavior->data;
+ if ((xkb)&&(xkb->names)&&(xkb->names->keys))
+ kn= XkbKeyNameText(xkb->names->keys[kc].name,XkbXKBFile);
+ else {
+ static char tbuf[8];
+ sprintf(tbuf,"%d",kc);
+ kn= tbuf;
+ }
+ if (permanent)
+ sprintf(buf,"permanentOverlay%d= %s",ndx,kn);
+ else sprintf(buf,"overlay%d= %s",ndx,kn);
+ }
+ }
+ tmp= tbGetBuffer(strlen(buf)+1);
+ if (tmp!=NULL)
+ strcpy(tmp,buf);
+ return tmp;
+}
+
+/***====================================================================***/
+
+char *
+XkbIndentText(unsigned size)
+{
+static char buf[32];
+register int i;
+
+ if (size>31)
+ size= 31;
+
+ for (i=0;i<size;i++) {
+ buf[i]= ' ';
+ }
+ buf[size]= '\0';
+ return buf;
+}
diff --git a/xkb/xkmread.c b/xkb/xkmread.c
index 198ea0c1a..fec86874f 100644
--- a/xkb/xkmread.c
+++ b/xkb/xkmread.c
@@ -1,4 +1,3 @@
-/* $Xorg: xkmread.c,v 1.3 2000/08/17 19:46:44 cpqbld Exp $ */
/************************************************************
Copyright (c) 1994 by Silicon Graphics Computer Systems, Inc.
@@ -24,7 +23,6 @@
THE USE OR PERFORMANCE OF THIS SOFTWARE.
********************************************************/
-/* $XFree86: xc/lib/xkbfile/xkmread.c,v 1.6 2002/02/13 22:09:42 herrb Exp $ */
#ifdef HAVE_DIX_CONFIG_H
#include <dix-config.h>
@@ -169,89 +167,6 @@ int count,nRead=0;
return nRead;
}
-unsigned
-_XkbKSCheckCase(KeySym ks)
-{
-unsigned set,rtrn;
-
- set= (ks & (~0xff)) >> 8;
- rtrn= 0;
- switch (set) {
- case 0: /* latin 1 */
- if (((ks>=XK_A)&&(ks<=XK_Z))||
- ((ks>=XK_Agrave)&&(ks<=XK_THORN)&&(ks!=XK_multiply))) {
- rtrn|= _XkbKSUpper;
- }
- if (((ks>=XK_a)&&(ks<=XK_z))||
- ((ks>=XK_agrave)&&(ks<=XK_ydiaeresis))) {
- rtrn|= _XkbKSLower;
- }
- break;
- case 1: /* latin 2 */
- if (((ks>=XK_Aogonek)&&(ks<=XK_Zabovedot)&&(ks!=XK_breve))||
- ((ks>=XK_Racute)&&(ks<=XK_Tcedilla))) {
- rtrn|= _XkbKSUpper;
- }
- if (((ks>=XK_aogonek)&&(ks<=XK_zabovedot)&&(ks!=XK_caron))||
- ((ks>=XK_racute)&&(ks<=XK_tcedilla))) {
- rtrn|= _XkbKSLower;
- }
- break;
- case 2: /* latin 3 */
- if (((ks>=XK_Hstroke)&&(ks<=XK_Jcircumflex))||
- ((ks>=XK_Cabovedot)&&(ks<=XK_Scircumflex))) {
- rtrn|= _XkbKSUpper;
- }
- if (((ks>=XK_hstroke)&&(ks<=XK_jcircumflex))||
- ((ks>=XK_cabovedot)&&(ks<=XK_scircumflex))) {
- rtrn|= _XkbKSLower;
- }
- break;
- case 3: /* latin 4 */
- if (((ks>=XK_Rcedilla)&&(ks<=XK_Tslash))||
- (ks==XK_ENG)||
- ((ks>=XK_Amacron)&&(ks<=XK_Umacron))) {
- rtrn|= _XkbKSUpper;
- }
- if (((ks>=XK_rcedilla)&&(ks<=XK_tslash))||
- (ks==XK_eng)||
- ((ks>=XK_amacron)&&(ks<=XK_umacron))) {
- rtrn|= _XkbKSLower;
- }
- break;
- case 18: /* latin 8 */
- if ((ks==XK_Babovedot)||
- ((ks>=XK_Dabovedot)&&(ks<=XK_Wacute))||
- ((ks>=XK_Ygrave)&&(ks<=XK_Fabovedot))||
- (ks==XK_Mabovedot)||
- (ks==XK_Pabovedot)||
- (ks==XK_Sabovedot)||
- (ks==XK_Wdiaeresis)||
- ((ks>=XK_Wcircumflex)&&(ks<=XK_Ycircumflex))) {
- rtrn|= _XkbKSUpper;
- }
- if ((ks==XK_babovedot)||
- (ks==XK_dabovedot)||
- (ks==XK_fabovedot)||
- (ks==XK_mabovedot)||
- ((ks>=XK_wgrave)&&(ks<=XK_wacute))||
- (ks==XK_ygrave)||
- ((ks>=XK_wdiaeresis)&&(ks<=XK_ycircumflex))) {
- rtrn|= _XkbKSLower;
- }
- break;
- case 19: /* latin 9 */
- if ((ks==XK_OE)||(ks==XK_Ydiaeresis)) {
- rtrn|= _XkbKSUpper;
- }
- if (ks==XK_oe) {
- rtrn|= _XkbKSLower;
- }
- break;
- }
- return rtrn;
-}
-
/***====================================================================***/
static int
@@ -1253,10 +1168,14 @@ int nRead;
*loaded_rtrn|= XkmGeometryMask;
break;
default:
+ _XkbLibError(_XkbErrBadImplementation,
+ XkbConfigText(tmpTOC.type,XkbMessage),0);
nRead= 0;
break;
}
if (nRead!=tmpTOC.size) {
+ _XkbLibError(_XkbErrBadLength,XkbConfigText(tmpTOC.type,XkbMessage),
+ nRead-tmpTOC.size);
return 0;
}
return (nRead>=0);
@@ -1290,6 +1209,8 @@ char name[100];
return _XkbDupString(name);
break;
default:
+ _XkbLibError(_XkbErrBadImplementation,
+ XkbConfigText(tmpTOC.type,XkbMessage),0);
break;
}
return NULL;
@@ -1355,6 +1276,8 @@ unsigned which= need|want;
tmp= ReadXkmGeometry(file,result);
break;
default:
+ _XkbLibError(_XkbErrBadImplementation,
+ XkbConfigText(tmpTOC.type,XkbMessage),0);
tmp= 0;
break;
}
@@ -1364,7 +1287,8 @@ unsigned which= need|want;
result->defined|= (1<<toc[i].type);
}
if (nRead!=tmpTOC.size) {
- return 0;
+ _XkbLibError(_XkbErrBadLength,XkbConfigText(tmpTOC.type,XkbMessage),
+ nRead-tmpTOC.size);
}
}
return which;
diff --git a/xorg-server.pc.in b/xorg-server.pc.in
index 04206e4dc..7b4b2fb24 100644
--- a/xorg-server.pc.in
+++ b/xorg-server.pc.in
@@ -8,5 +8,5 @@ sdkdir=@sdkdir@
Name: xorg-server
Description: Modular X.Org X Server
Version: @PACKAGE_VERSION@
-Cflags: -I${sdkdir} @SERVER_DEFINES@ @MODULE_DEFINES@ @LOADER_DEFINES@
+Cflags: -I${sdkdir}
Libs: -L${libdir}