summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorIan Romanick <idr@us.ibm.com>2006-12-08 17:24:15 -0800
committerIan Romanick <idr@us.ibm.com>2006-12-08 17:24:15 -0800
commite1f73d220873fa091695e46b7fcd008663a95a6f (patch)
treee6e58038b6aea53eca32326a903de4074600df54
parent27d682fa030501611a5b52f41f29738134b45c0b (diff)
parentd56249a15ead51ad4d2117d5538ada24af05b693 (diff)
Merge branch 'master' of ssh+git://idr@git.freedesktop.org/git/xorg/xserver into pci-rework
Conflicts: hw/xfree86/common/xf86Configure.c hw/xfree86/common/xf86Helper.c hw/xfree86/common/xf86pciBus.c hw/xfree86/int10/helper_exec.c hw/xfree86/os-support/bus/Pci.c hw/xfree86/os-support/bus/linuxPci.c hw/xfree86/os-support/linux/lnx_pci.c hw/xfree86/scanpci/Makefile.am hw/xfree86/utils/pcitweak/Makefile.am hw/xfree86/utils/scanpci/Makefile.am
-rw-r--r--.gitignore1
-rw-r--r--GL/glx/Makefile.am10
-rw-r--r--GL/glx/glxext.c2
-rw-r--r--GL/glx/indirect_dispatch.h16
-rw-r--r--GL/glx/indirect_dispatch_swap.c2
-rw-r--r--GL/glx/indirect_program.c2
-rw-r--r--GL/glx/indirect_reqsize.c2
-rw-r--r--GL/glx/indirect_table.c10
-rw-r--r--GL/glx/indirect_texture_compression.c2
-rw-r--r--GL/glx/indirect_util.c2
-rw-r--r--GL/glx/swap_interval.c2
-rw-r--r--GL/mesa/main/Makefile.am1
-rwxr-xr-xGL/symlink-mesa.sh6
-rw-r--r--Makefile.am8
-rw-r--r--Xext/security.c26
-rw-r--r--Xext/xace.c6
-rw-r--r--Xext/xace.h26
-rw-r--r--Xi/chgdctl.c146
-rw-r--r--Xi/chgkbd.c102
-rw-r--r--Xi/chgkbd.h5
-rw-r--r--Xi/chgptr.c132
-rw-r--r--Xi/chgptr.h5
-rw-r--r--Xi/exevents.c53
-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/listdev.c15
-rw-r--r--Xi/selectev.c54
-rw-r--r--Xi/stubs.c99
-rw-r--r--composite/compext.c5
-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.ac397
-rw-r--r--cpprules.in1
-rw-r--r--dix/Makefile.am21
-rw-r--r--dix/Xserver-dtrace.h.in100
-rw-r--r--dix/Xserver.d59
-rw-r--r--dix/devices.c963
-rw-r--r--dix/dispatch.c163
-rw-r--r--dix/dixfonts.c65
-rw-r--r--dix/dixutils.c2
-rw-r--r--dix/events.c145
-rw-r--r--dix/extension.c31
-rw-r--r--dix/ffs.c8
-rw-r--r--dix/getevents.c785
-rw-r--r--dix/globals.c2
-rw-r--r--dix/main.c47
-rw-r--r--dix/property.c75
-rw-r--r--dix/resource.c64
-rw-r--r--dix/window.c65
-rw-r--r--doc/c-extensions32
-rw-r--r--fb/fb.h3
-rw-r--r--fb/fbpict.c15
-rw-r--r--fb/fbpict.h47
-rw-r--r--hw/darwin/darwinKeyboard.c2
-rw-r--r--hw/dmx/config/Makefile.am2
-rw-r--r--hw/dmx/dmxinput.c2
-rw-r--r--hw/dmx/glxProxy/Makefile.am2
-rw-r--r--hw/dmx/input/Makefile.am2
-rw-r--r--hw/kdrive/Makefile.am14
-rw-r--r--hw/kdrive/ati/Makefile.am10
-rw-r--r--hw/kdrive/ati/ati_stub.c10
-rw-r--r--hw/kdrive/chips/Makefile.am4
-rw-r--r--hw/kdrive/chips/chipsstub.c3
-rw-r--r--hw/kdrive/ephyr/Makefile.am5
-rw-r--r--hw/kdrive/ephyr/ephyr.c145
-rw-r--r--hw/kdrive/ephyr/ephyr.h9
-rw-r--r--hw/kdrive/ephyr/ephyrinit.c19
-rw-r--r--hw/kdrive/ephyr/hostx.c34
-rw-r--r--hw/kdrive/ephyr/hostx.h17
-rw-r--r--hw/kdrive/ephyr/os.c30
-rw-r--r--hw/kdrive/epson/Makefile.am2
-rw-r--r--hw/kdrive/epson/epson13806stub.c6
-rw-r--r--hw/kdrive/fake/Makefile.am9
-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.am11
-rw-r--r--hw/kdrive/fbdev/fbdev.c6
-rw-r--r--hw/kdrive/fbdev/fbinit.c14
-rw-r--r--hw/kdrive/i810/Makefile.am2
-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.am11
-rw-r--r--hw/kdrive/mga/g400_composite.c4
-rw-r--r--hw/kdrive/mga/mgastub.c3
-rw-r--r--hw/kdrive/neomagic/Makefile.am6
-rw-r--r--hw/kdrive/neomagic/neomagic.h8
-rw-r--r--hw/kdrive/neomagic/neomagicstub.c6
-rw-r--r--hw/kdrive/nvidia/Makefile.am8
-rw-r--r--hw/kdrive/nvidia/nvidiastub.c3
-rw-r--r--hw/kdrive/pcmcia/pcmciastub.c3
-rw-r--r--hw/kdrive/pm2/Makefile.am5
-rw-r--r--hw/kdrive/pm2/pm2stub.c3
-rw-r--r--hw/kdrive/r128/Makefile.am5
-rw-r--r--hw/kdrive/r128/r128stub.c3
-rw-r--r--hw/kdrive/savage/s3stub.c8
-rw-r--r--hw/kdrive/sdl/Makefile.am5
-rw-r--r--hw/kdrive/sdl/sdl.c144
-rw-r--r--hw/kdrive/sis300/Makefile.am6
-rw-r--r--hw/kdrive/sis300/sis_stub.c3
-rw-r--r--hw/kdrive/sis530/sisstub.c3
-rw-r--r--hw/kdrive/smi/Makefile.am6
-rw-r--r--hw/kdrive/smi/smistub.c3
-rw-r--r--hw/kdrive/src/Makefile.am3
-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/trident/tridentstub.c3
-rw-r--r--hw/kdrive/trio/s3stub.c3
-rw-r--r--hw/kdrive/vesa/Makefile.am4
-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/InitInput.c13
-rw-r--r--hw/vfb/Makefile.am4
-rw-r--r--hw/xfree86/Makefile.am14
-rw-r--r--hw/xfree86/common/Makefile.am15
-rw-r--r--hw/xfree86/common/compiler.h4
-rw-r--r--hw/xfree86/common/vesamodes6
-rw-r--r--hw/xfree86/common/xf86.h15
-rw-r--r--hw/xfree86/common/xf86AutoConfig.c3
-rw-r--r--hw/xfree86/common/xf86Bus.c8
-rw-r--r--hw/xfree86/common/xf86Bus.h2
-rw-r--r--hw/xfree86/common/xf86Config.c403
-rw-r--r--hw/xfree86/common/xf86Configure.c14
-rw-r--r--hw/xfree86/common/xf86Cursor.c9
-rw-r--r--hw/xfree86/common/xf86DGA.c48
-rw-r--r--hw/xfree86/common/xf86Debug.c2
-rw-r--r--hw/xfree86/common/xf86Events.c949
-rw-r--r--hw/xfree86/common/xf86Globals.c39
-rw-r--r--hw/xfree86/common/xf86Helper.c178
-rw-r--r--hw/xfree86/common/xf86InPriv.h3
-rw-r--r--hw/xfree86/common/xf86Init.c144
-rw-r--r--hw/xfree86/common/xf86Io.c470
-rw-r--r--hw/xfree86/common/xf86Kbd.c394
-rw-r--r--hw/xfree86/common/xf86KbdBSD.c1265
-rw-r--r--hw/xfree86/common/xf86KbdLnx.c650
-rw-r--r--hw/xfree86/common/xf86KbdMach.c316
-rw-r--r--hw/xfree86/common/xf86Keymap.h454
-rw-r--r--hw/xfree86/common/xf86MiscExt.c80
-rw-r--r--hw/xfree86/common/xf86Mode.c696
-rw-r--r--hw/xfree86/common/xf86Module.h2
-rw-r--r--hw/xfree86/common/xf86Option.c4
-rw-r--r--hw/xfree86/common/xf86Priv.h17
-rw-r--r--hw/xfree86/common/xf86Privstr.h49
-rw-r--r--hw/xfree86/common/xf86Versions.c3
-rw-r--r--hw/xfree86/common/xf86Xinput.c1444
-rw-r--r--hw/xfree86/common/xf86Xinput.h41
-rw-r--r--hw/xfree86/common/xf86str.h1
-rw-r--r--hw/xfree86/ddc/Makefile.am5
-rw-r--r--hw/xfree86/ddc/ddcProperty.c206
-rw-r--r--hw/xfree86/ddc/edid_modes.c348
-rw-r--r--hw/xfree86/ddc/interpret_edid.c39
-rw-r--r--hw/xfree86/ddc/xf86DDC.h5
-rw-r--r--hw/xfree86/dixmods/extmod/Makefile.am2
-rw-r--r--hw/xfree86/dixmods/type1mod.c15
-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/Xorg.man.pre8
-rw-r--r--hw/xfree86/doc/man/xorg.conf.man.pre2
-rw-r--r--hw/xfree86/dri/Makefile.am7
-rw-r--r--hw/xfree86/dri/dri.c94
-rw-r--r--hw/xfree86/dri/dri.h2
-rw-r--r--hw/xfree86/dri/drimodule.c19
-rw-r--r--hw/xfree86/dummylib/Makefile.am2
-rw-r--r--hw/xfree86/exa/Makefile.am2
-rw-r--r--hw/xfree86/fbdevhw/Makefile.am2
-rw-r--r--hw/xfree86/i2c/Makefile.am2
-rw-r--r--hw/xfree86/int10/Makefile.am11
-rw-r--r--hw/xfree86/int10/helper_exec.c24
-rw-r--r--hw/xfree86/loader/Makefile.am2
-rw-r--r--hw/xfree86/loader/misym.c2
-rw-r--r--hw/xfree86/loader/xf86sym.c13
-rw-r--r--hw/xfree86/os-support/Makefile.am15
-rw-r--r--hw/xfree86/os-support/bsd/Makefile.am9
-rw-r--r--hw/xfree86/os-support/bsd/bsd_KbdMap.c1087
-rw-r--r--hw/xfree86/os-support/bsd/bsd_bell.c86
-rw-r--r--hw/xfree86/os-support/bsd/bsd_io.c293
-rw-r--r--hw/xfree86/os-support/bsd/bsd_kbd.c572
-rw-r--r--hw/xfree86/os-support/bsd/bsd_kbd.h4
-rw-r--r--hw/xfree86/os-support/bus/Makefile.am2
-rw-r--r--hw/xfree86/os-support/bus/Pci.h4
-rw-r--r--hw/xfree86/os-support/bus/altixPCI.c9
-rw-r--r--hw/xfree86/os-support/bus/linuxPci.c38
-rw-r--r--hw/xfree86/os-support/drm/Makefile.am19
-rw-r--r--hw/xfree86/os-support/drm/drmmodule.c57
-rw-r--r--hw/xfree86/os-support/drm/xf86drm.c2307
-rw-r--r--hw/xfree86/os-support/drm/xf86drmHash.c432
-rw-r--r--hw/xfree86/os-support/drm/xf86drmRandom.c216
-rw-r--r--hw/xfree86/os-support/drm/xf86drmSL.c488
-rw-r--r--hw/xfree86/os-support/hurd/Makefile.am4
-rw-r--r--hw/xfree86/os-support/hurd/hurd_bell.c35
-rw-r--r--hw/xfree86/os-support/hurd/hurd_mouse.c80
-rw-r--r--hw/xfree86/os-support/linux/Makefile.am29
-rw-r--r--hw/xfree86/os-support/linux/lnx_KbdMap.c606
-rw-r--r--hw/xfree86/os-support/linux/lnx_acpi.c6
-rw-r--r--hw/xfree86/os-support/linux/lnx_bell.c43
-rw-r--r--hw/xfree86/os-support/linux/lnx_io.c246
-rw-r--r--hw/xfree86/os-support/linux/lnx_kbd.c530
-rw-r--r--hw/xfree86/os-support/linux/lnx_kbd.h4
-rw-r--r--hw/xfree86/os-support/linux/lnx_pci.c79
-rw-r--r--hw/xfree86/os-support/lynxos/Makefile.am1
-rw-r--r--hw/xfree86/os-support/lynxos/lynx_io.c165
-rw-r--r--hw/xfree86/os-support/misc/Makefile.am16
-rw-r--r--hw/xfree86/os-support/sco/Makefile.am4
-rw-r--r--hw/xfree86/os-support/sco/sco_KbdMap.c304
-rw-r--r--hw/xfree86/os-support/sco/sco_io.c268
-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/shared/at_scancode.c131
-rw-r--r--hw/xfree86/os-support/shared/kbd.c38
-rw-r--r--hw/xfree86/os-support/shared/std_kbdEv.c49
-rw-r--r--hw/xfree86/os-support/shared/sysv_kbd.c105
-rw-r--r--hw/xfree86/os-support/solaris/Makefile.am10
-rw-r--r--hw/xfree86/os-support/solaris/sun_bell.c185
-rw-r--r--hw/xfree86/os-support/solaris/sun_init.c31
-rw-r--r--hw/xfree86/os-support/solaris/sun_io.c159
-rw-r--r--hw/xfree86/os-support/solaris/sun_kbd.c660
-rw-r--r--hw/xfree86/os-support/solaris/sun_kbd.h72
-rw-r--r--hw/xfree86/os-support/solaris/sun_kbdEv.c854
-rw-r--r--hw/xfree86/os-support/sysv/Makefile.am2
-rw-r--r--hw/xfree86/os-support/sysv/sysv_io.c77
-rw-r--r--hw/xfree86/os-support/sysv/sysv_mouse.c3
-rw-r--r--hw/xfree86/os-support/sysv/xqueue.c536
-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.c171
-rw-r--r--hw/xfree86/os-support/usl/usl_kbd.c455
-rw-r--r--hw/xfree86/os-support/usl/usl_kbd.h14
-rw-r--r--hw/xfree86/os-support/usl/usl_mouse.c7
-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.h132
-rw-r--r--hw/xfree86/os-support/xf86_OSlib.h9
-rw-r--r--hw/xfree86/os-support/xf86_OSproc.h21
-rw-r--r--hw/xfree86/os-support/xf86drm.h640
-rw-r--r--hw/xfree86/os-support/xf86drmCompat.h258
-rw-r--r--hw/xfree86/parser/Input.c5
-rw-r--r--hw/xfree86/parser/Keyboard.c308
-rw-r--r--hw/xfree86/parser/Makefile.am3
-rw-r--r--hw/xfree86/parser/configProcs.h2
-rw-r--r--hw/xfree86/parser/read.c7
-rw-r--r--hw/xfree86/rac/Makefile.am2
-rw-r--r--hw/xfree86/ramdac/Makefile.am2
-rw-r--r--hw/xfree86/scanpci/pci.ids85
-rw-r--r--hw/xfree86/scanpci/xf86PciStdIds.h619
-rw-r--r--hw/xfree86/shadowfb/Makefile.am2
-rw-r--r--hw/xfree86/utils/cvt/Makefile.am2
-rw-r--r--hw/xfree86/utils/ioport/Makefile.am2
-rw-r--r--hw/xfree86/utils/xorgcfg/interface.c3
-rw-r--r--hw/xfree86/utils/xorgcfg/keyboard-cfg.c7
-rw-r--r--hw/xfree86/utils/xorgcfg/loadmod.c2
-rw-r--r--hw/xfree86/utils/xorgcfg/mouse-cfg.c3
-rw-r--r--hw/xfree86/utils/xorgcfg/text-mode.c16
-rw-r--r--hw/xfree86/utils/xorgconfig/xorgconfig.c23
-rw-r--r--hw/xfree86/vbe/Makefile.am2
-rw-r--r--hw/xfree86/vgahw/Makefile.am2
-rw-r--r--hw/xfree86/x86emu/Makefile.am2
-rw-r--r--hw/xfree86/xaa/Makefile.am2
-rw-r--r--hw/xfree86/xf4bpp/Makefile.am2
-rw-r--r--hw/xfree86/xf8_16bpp/Makefile.am2
-rw-r--r--hw/xfree86/xf8_32bpp/Makefile.am2
-rw-r--r--hw/xfree86/xorgconf.cpp15
-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/Args.c15
-rw-r--r--hw/xnest/Events.c65
-rw-r--r--hw/xnest/Init.c9
-rw-r--r--hw/xnest/Keyboard.c8
-rw-r--r--hw/xnest/Pointer.c4
-rw-r--r--hw/xprint/ddxInit.c6
-rw-r--r--hw/xwin/InitInput.c2
-rw-r--r--hw/xwin/Makefile.am2
-rw-r--r--include/Makefile.am1
-rw-r--r--include/XIstubs.h12
-rw-r--r--include/dix-config.h.in24
-rw-r--r--include/dix.h5
-rw-r--r--include/dixevents.h4
-rw-r--r--include/exevents.h13
-rw-r--r--include/extinit.h6
-rw-r--r--include/hotplug.h31
-rw-r--r--include/input.h94
-rw-r--r--include/inputstr.h73
-rw-r--r--include/kdrive-config.h.in6
-rw-r--r--include/os.h10
-rw-r--r--include/regionstr.h3
-rw-r--r--include/xorg-config.h.in3
-rw-r--r--mi/mi.h4
-rw-r--r--mi/mieq.c207
-rw-r--r--mi/miinitext.c14
-rw-r--r--mi/mipointer.c198
-rw-r--r--mi/mipointer.h67
-rw-r--r--mi/mipointrst.h10
-rw-r--r--mi/miregion.c5
-rw-r--r--os/Makefile.am38
-rw-r--r--os/WaitFor.c46
-rw-r--r--os/access.c6
-rw-r--r--os/connection.c100
-rw-r--r--os/log.c2
-rw-r--r--os/utils.c30
-rw-r--r--randr/Makefile.am12
-rw-r--r--randr/mirandr.c165
-rw-r--r--randr/randr.c1296
-rw-r--r--randr/randrstr.h748
-rw-r--r--randr/rrcrtc.c848
-rw-r--r--randr/rrdispatch.c210
-rw-r--r--randr/rrinfo.c342
-rw-r--r--randr/rrmode.c221
-rw-r--r--randr/rroutput.c463
-rw-r--r--randr/rrpointer.c137
-rw-r--r--randr/rrproperty.c624
-rw-r--r--randr/rrscreen.c913
-rw-r--r--randr/rrsdispatch.c305
-rw-r--r--randr/rrxinerama.c431
-rwxr-xr-xxfixes/xfixes.c17
-rw-r--r--xkb/XKBAlloc.c5
-rw-r--r--xkb/ddxBeep.c32
-rw-r--r--xkb/ddxLoad.c24
-rw-r--r--xkb/xkb.c500
-rw-r--r--xkb/xkb.h5
-rw-r--r--xkb/xkbAccessX.c10
-rw-r--r--xkb/xkbActions.c4
-rw-r--r--xkb/xkbEvents.c2
-rw-r--r--xkb/xkbLEDs.c24
-rw-r--r--xkb/xkbUtils.c1180
370 files changed, 17254 insertions, 46136 deletions
diff --git a/.gitignore b/.gitignore
index 4118cd001..62b5fd6b4 100644
--- a/.gitignore
+++ b/.gitignore
@@ -267,3 +267,4 @@ mfb/mfbteblack.c
mfb/mfbtewhite.c
mfb/mfbtileC.c
mfb/mfbtileG.c
+.*.swp
diff --git a/GL/glx/Makefile.am b/GL/glx/Makefile.am
index 44d9cf9e4..8184f605f 100644
--- a/GL/glx/Makefile.am
+++ b/GL/glx/Makefile.am
@@ -28,7 +28,11 @@ 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 \
@@ -37,10 +41,6 @@ libglxdri_la_SOURCES = \
libglx_la_SOURCES = \
g_disptab.h \
- glapi.c \
- glcontextmodes.c \
- glcontextmodes.h \
- glthread.c \
glxcmds.c \
glxcmdsswap.c \
glxcontext.h \
diff --git a/GL/glx/glxext.c b/GL/glx/glxext.c
index 11fb7fcaf..1f6c7f376 100644
--- a/GL/glx/glxext.c
+++ b/GL/glx/glxext.c
@@ -237,7 +237,7 @@ 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 (glxBlockClients) {
+ if (!glxBlockClients) {
__glXleaveServer();
cx->destroy(cx);
__glXenterServer();
diff --git a/GL/glx/indirect_dispatch.h b/GL/glx/indirect_dispatch.h
index 9bf74ebd1..17a372f91 100644
--- a/GL/glx/indirect_dispatch.h
+++ b/GL/glx/indirect_dispatch.h
@@ -85,8 +85,6 @@ extern HIDDEN void __glXDisp_EvalCoord2fv(GLbyte * pc);
extern HIDDEN void __glXDispSwap_EvalCoord2fv(GLbyte * pc);
extern HIDDEN int __glXDisp_DestroyPixmap(struct __GLXclientStateRec *, GLbyte *);
extern HIDDEN int __glXDispSwap_DestroyPixmap(struct __GLXclientStateRec *, GLbyte *);
-extern HIDDEN void __glXDisp_ProgramEnvParameter4dvARB(GLbyte * pc);
-extern HIDDEN void __glXDispSwap_ProgramEnvParameter4dvARB(GLbyte * pc);
extern HIDDEN int __glXDisp_GetMapiv(struct __GLXclientStateRec *, GLbyte *);
extern HIDDEN int __glXDispSwap_GetMapiv(struct __GLXclientStateRec *, GLbyte *);
extern HIDDEN int __glXDisp_SwapBuffers(struct __GLXclientStateRec *, GLbyte *);
@@ -123,6 +121,8 @@ 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);
@@ -279,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);
@@ -327,6 +329,8 @@ extern HIDDEN int __glXDisp_GetVertexAttribdvNV(struct __GLXclientStateRec *, GL
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);
@@ -457,8 +461,6 @@ 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);
@@ -615,6 +617,8 @@ 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);
@@ -783,8 +787,6 @@ 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);
@@ -919,8 +921,6 @@ 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);
diff --git a/GL/glx/indirect_dispatch_swap.c b/GL/glx/indirect_dispatch_swap.c
index 9c58ef1cd..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>
diff --git a/GL/glx/indirect_program.c b/GL/glx/indirect_program.c
index d0fd3d135..8d5f0e60f 100644
--- a/GL/glx/indirect_program.c
+++ b/GL/glx/indirect_program.c
@@ -46,7 +46,7 @@
#include "dispatch.h"
#include "glapioffsets.h"
-#ifdef __linux__
+#if defined(__linux__) || defined (__GLIBC__) || defined (__GNU__)
#include <byteswap.h>
#elif defined(__OpenBSD__)
#include <sys/endian.h>
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_table.c b/GL/glx/indirect_table.c
index a6fd3a39a..60d676064 100644
--- a/GL/glx/indirect_table.c
+++ b/GL/glx/indirect_table.c
@@ -645,7 +645,7 @@ static const void *Render_function_table[400][2] = {
/* [ 302] = 4182 */ {__glXDisp_RequestResidentProgramsNV, __glXDispSwap_RequestResidentProgramsNV},
/* [ 303] = 4183 */ {__glXDisp_LoadProgramNV, __glXDispSwap_LoadProgramNV},
/* [ 304] = 4184 */ {__glXDisp_ProgramParameter4fvNV, __glXDispSwap_ProgramParameter4fvNV},
- /* [ 305] = 4185 */ {__glXDisp_ProgramParameter4dvNV, __glXDispSwap_ProgramParameter4dvNV},
+ /* [ 305] = 4185 */ {__glXDisp_ProgramEnvParameter4dvARB, __glXDispSwap_ProgramEnvParameter4dvARB},
/* [ 306] = 4186 */ {__glXDisp_ProgramParameters4fvNV, __glXDispSwap_ProgramParameters4fvNV},
/* [ 307] = 4187 */ {__glXDisp_ProgramParameters4dvNV, __glXDispSwap_ProgramParameters4dvNV},
/* [ 308] = 4188 */ {__glXDisp_TrackMatrixNV, __glXDispSwap_TrackMatrixNV},
@@ -886,10 +886,10 @@ static const int_fast16_t Render_size_table[400][2] = {
/* [140] = 140 */ { 0, ~0},
/* [141] = 141 */ { 4, ~0},
/* [142] = 142 */ { 8, ~0},
- /* [143] = 143 */ { 40, 20},
- /* [144] = 144 */ { 28, 21},
- /* [145] = 145 */ { 64, 22},
- /* [146] = 146 */ { 44, 23},
+ /* [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},
diff --git a/GL/glx/indirect_texture_compression.c b/GL/glx/indirect_texture_compression.c
index 0c42ea034..35af1d235 100644
--- a/GL/glx/indirect_texture_compression.c
+++ b/GL/glx/indirect_texture_compression.c
@@ -39,7 +39,7 @@
#include "glthread.h"
#include "dispatch.h"
-#ifdef __linux__
+#if defined(__linux__) || defined (__GLIBC__) || defined (__GNU__)
#include <byteswap.h>
#elif defined(__OpenBSD__)
#include <sys/endian.h>
diff --git a/GL/glx/indirect_util.c b/GL/glx/indirect_util.c
index 93f1484d7..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>
diff --git a/GL/glx/swap_interval.c b/GL/glx/swap_interval.c
index bcc1c4793..c4137c1aa 100644
--- a/GL/glx/swap_interval.c
+++ b/GL/glx/swap_interval.c
@@ -40,7 +40,7 @@
#include "dispatch.h"
#include "glapioffsets.h"
-#ifdef __linux__
+#if defined(__linux__) || defined (__GLIBC__) || defined (__GNU__)
#include <byteswap.h>
#elif defined(__OpenBSD__)
#include <sys/endian.h>
diff --git a/GL/mesa/main/Makefile.am b/GL/mesa/main/Makefile.am
index 4d5b0cd4a..64b383dc9 100644
--- a/GL/mesa/main/Makefile.am
+++ b/GL/mesa/main/Makefile.am
@@ -60,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/symlink-mesa.sh b/GL/symlink-mesa.sh
index c14c683c6..9687ce85b 100755
--- a/GL/symlink-mesa.sh
+++ b/GL/symlink-mesa.sh
@@ -289,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 c425cc6bb..f35539e49 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -26,10 +26,6 @@ if GLX
GLX_DIR=GL
endif
-if XINPUT
-XINPUT_DIR=Xi
-endif
-
if DBE
DBE_DIR=dbe
endif
@@ -45,7 +41,7 @@ SUBDIRS = \
os \
randr \
render \
- $(XINPUT_DIR) \
+ Xi \
xkb \
$(DBE_DIR) \
$(MFB_DIR) \
@@ -59,6 +55,7 @@ SUBDIRS = \
$(COMPOSITE_DIR) \
$(GLX_DIR) \
exa \
+ config \
hw
aclocaldir = $(datadir)/aclocal
@@ -94,6 +91,7 @@ DIST_SUBDIRS = \
composite \
GL \
exa \
+ config \
hw
# gross hack
diff --git a/Xext/security.c b/Xext/security.c
index 54a2b3e3f..572f81196 100644
--- a/Xext/security.c
+++ b/Xext/security.c
@@ -1122,11 +1122,11 @@ CALLBACK(SecurityClientStateCallback)
switch (client->clientState)
{
case ClientStateInitial:
- TRUSTLEVEL(serverClient) = XSecurityClientTrusted;
- AUTHID(serverClient) = None;
+ TRUSTLEVEL(client) = XSecurityClientTrusted;
+ AUTHID(client) = None;
break;
- case ClientStateRunning:
+ case ClientStateRunning:
{
XID authId = AuthorizationIDOfClient(client);
SecurityAuthorizationPtr pAuth;
@@ -1146,8 +1146,8 @@ CALLBACK(SecurityClientStateCallback)
}
break;
}
- case ClientStateGone:
- case ClientStateRetained: /* client disconnected */
+ case ClientStateGone:
+ case ClientStateRetained: /* client disconnected */
{
SecurityAuthorizationPtr pAuth;
@@ -1167,7 +1167,7 @@ CALLBACK(SecurityClientStateCallback)
}
break;
}
- default: break;
+ default: break;
}
} /* SecurityClientStateCallback */
@@ -1251,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;
@@ -1410,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;
@@ -1797,7 +1797,7 @@ CALLBACK(SecurityCheckPropertyAccess)
* If pacl doesn't apply, something above should have
* executed a continue, which will skip the follwing code.
*/
- action = SecurityAllowOperation;
+ action = XaceAllowOperation;
if (access_mode & SecurityReadAccess)
action = max(action, pacl->readAction);
if (access_mode & SecurityWriteAccess)
@@ -1808,11 +1808,11 @@ CALLBACK(SecurityCheckPropertyAccess)
} /* 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,
diff --git a/Xext/xace.c b/Xext/xace.c
index 14a5e7963..6fc5c12ee 100644
--- a/Xext/xace.c
+++ b/Xext/xace.c
@@ -99,7 +99,7 @@ int XaceHook(int hook, ...)
va_arg(ap, WindowPtr),
va_arg(ap, Atom),
va_arg(ap, Mask),
- SecurityAllowOperation /* default allow */
+ XaceAllowOperation /* default allow */
};
calldata = &rec;
prv = &rec.rval;
@@ -406,12 +406,14 @@ XaceCensorImage(client, pVisibleRegion, widthBytesLine, pDraw, x, y, w, h,
unsigned int format;
char * pBuf;
{
- ScreenPtr pScreen = pDraw->pScreen;
+ 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;
diff --git a/Xext/xace.h b/Xext/xace.h
index 6cb4b4f5d..7231b04bc 100644
--- a/Xext/xace.h
+++ b/Xext/xace.h
@@ -20,6 +20,13 @@ 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
@@ -75,11 +82,6 @@ extern int XaceHook(
/* From the original Security extension...
*/
-/* Hook return codes */
-#define SecurityAllowOperation 0
-#define SecurityIgnoreOperation 1
-#define SecurityErrorOperation 2
-
/* 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
@@ -100,4 +102,18 @@ extern void XaceCensorImage(
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/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/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..92a5f0599 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;
@@ -898,7 +902,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 +1213,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/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..7d3ef9d48 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.
@@ -131,6 +178,13 @@ ProcXSelectExtensionEvent(register ClientPtr client)
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/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/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 b2ec29d66..969350a02 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.3, [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])
@@ -154,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;
@@ -262,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
;;
@@ -370,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}" ])
@@ -394,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])
@@ -403,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])
@@ -412,8 +439,8 @@ 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(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])
@@ -427,7 +454,7 @@ AC_ARG_ENABLE(fontcache, AS_HELP_STRING([--enable-fontcache], [Build FontCa
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)]), [DPMSExtension=$enableval], [DPMSExtension=yes])
-AC_ARG_ENABLE(xinput, AS_HELP_STRING([--disable-xinput], [Build XInput Extension (default: enabled)]), [XINPUT=$enableval], [XINPUT=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.
@@ -436,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])
@@ -444,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)
@@ -515,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 [kbproto >= 1.0.3]"
+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])
@@ -532,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
@@ -615,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
@@ -696,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
@@ -713,6 +747,11 @@ 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"
@@ -743,12 +782,9 @@ 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)
@@ -764,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])
@@ -840,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])
@@ -854,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'
@@ -872,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"
-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])
@@ -890,6 +998,8 @@ 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 ---------------------------------------------------------------------------
@@ -949,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
@@ -965,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
@@ -1036,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
@@ -1054,6 +1164,37 @@ if test "x$XORG" = xyes -o "x$XGL" = xyes; then
XORG_CFLAGS="$XORGSERVER_CFLAGS -DHAVE_XORG_CONFIG_H"
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
+
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], [],
@@ -1070,7 +1211,6 @@ dnl has it in libc), or if libdl is needed to get it.
fi
XORG_OS="linux"
XORG_OS_SUBDIR="linux"
- XORG_OS_KBD="Lnx"
xorg_bus_linuxpci="yes"
linux_acpi="no"
case $host_cpu in
@@ -1089,30 +1229,10 @@ dnl has it in libc), or if libdl is needed to get it.
*)
;;
esac
-
- # check whether struct kbd_repeat has the 'period' field.
- # on kernels < 2.5.42 it's called 'rate' instead.
- AC_TRY_COMPILE([
-#include <linux/kd.h>
-#ifdef __sparc__
-#include <asm/param.h>
-#include <asm/kbio.h>
-#endif
-],[
-int main () {
- struct kbd_repeat k;
- k.period = 0;
- return 0;
-}],
- [period_field="period"],
- [period_field="rate"])
- AC_DEFINE_UNQUOTED(LNX_KBD_PERIOD_NAME, [$period_field],
- [Name of the period field in struct kbd_repeat])
;;
freebsd* | kfreebsd*-gnu)
XORG_OS="freebsd"
XORG_OS_SUBDIR="bsd"
- XORG_OS_KBD="BSD"
case $host_cpu in
i*86)
;;
@@ -1124,7 +1244,6 @@ int main () {
netbsd*)
XORG_OS="netbsd"
XORG_OS_SUBDIR="bsd"
- XORG_OS_KBD="BSD"
case $host_cpu in
i*86|amd64*|x86_64*|ia64*)
;;
@@ -1136,7 +1255,6 @@ int main () {
openbsd*)
XORG_OS="openbsd"
XORG_OS_SUBDIR="bsd"
- XORG_OS_KBD="BSD"
case $host_cpu in
i*86|amd64*|x86_64*|ia64*)
;;
@@ -1243,7 +1361,6 @@ int main () {
AC_SUBST([XORG_INCS])
AC_SUBST([XORG_OS])
AC_SUBST([XORG_OS_SUBDIR])
- AC_SUBST([XORG_OS_KBD])
AC_PATH_PROG(PERL, perl, no)
dnl unlikely as this may be ...
@@ -1252,28 +1369,7 @@ int main () {
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 these only go in xorg-config.h
XF86CONFIGFILE="xorg.conf"
@@ -1293,6 +1389,7 @@ int main () {
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])
@@ -1322,6 +1419,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
@@ -1331,7 +1429,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])
@@ -1460,16 +1558,60 @@ 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
@@ -1491,55 +1633,51 @@ if test "$KDRIVE" = yes; then
# $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 $TSLIB_LIBS"
+ 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])
- if test "x$XSDL" = xauto; then
- XSDL="$ac_cv_header_SDL_SDL_h"
- fi
-fi
-AC_SUBST(KDRIVE_INCS)
-AC_SUBST(KDRIVE_PURE_INCS)
-AC_SUBST(KDRIVE_CFLAGS)
-AC_SUBST(KDRIVE_PURE_LIBS)
-AC_SUBST(KDRIVE_LIBS)
+ 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])
-# 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])
-
-if test x"$XSDL" = xyes; then
- AC_DEFINE(XSDLSERVER,,[Build Xsdl server])
- XSDL_LIBS="`sdl-config --libs` $XSERVER_LIBS"
- XSDL_INCS="`sdl-config --cflags` $XSERVER_CFLAGS"
-fi
-AM_CONDITIONAL(XSDLSERVER, [test x"$XSDL" = xyes])
-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])
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
@@ -1557,7 +1695,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
@@ -1578,9 +1715,11 @@ 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],
@@ -1626,13 +1765,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])
-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])
@@ -1672,6 +1809,7 @@ XTrap/Makefile
mfb/Makefile
cfb/Makefile
cfb32/Makefile
+config/Makefile
mi/Makefile
miext/Makefile
miext/damage/Makefile
@@ -1707,7 +1845,6 @@ 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
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/dix/Makefile.am b/dix/Makefile.am
index d26d9ea7a..a1f02c1b6 100644
--- a/dix/Makefile.am
+++ b/dix/Makefile.am
@@ -17,6 +17,7 @@ libdix_la_SOURCES = \
extension.c \
ffs.c \
gc.c \
+ getevents.c \
globals.c \
glyphcurs.c \
grabs.c \
@@ -37,4 +38,22 @@ libxpstubs_la_SOURCES = \
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/devices.c b/dix/devices.c
index 607510203..e6a504954 100644
--- a/dix/devices.c
+++ b/dix/devices.c
@@ -69,22 +69,26 @@ SOFTWARE.
#ifdef XKB
#include <X11/extensions/XKBsrv.h>
#endif
-#ifdef XACE
#include "xace.h"
-#endif
#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;
@@ -110,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;
}
@@ -131,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;
}
@@ -157,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;
@@ -164,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);
@@ -179,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;
@@ -207,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);
@@ -218,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)
@@ -239,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)
@@ -270,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);
}
@@ -300,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
@@ -353,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
@@ -438,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++)
@@ -529,7 +726,7 @@ InitKeyClassDeviceStruct(DeviceIntPtr dev, KeySymsPtr pKeySyms, CARD8 pModifiers
{
int i;
register KeyClassPtr keyc;
-
+
keyc = (KeyClassPtr)xalloc(sizeof(KeyClassRec));
if (!keyc)
return FALSE;
@@ -594,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;
}
@@ -795,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));
}
@@ -909,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 XACE
- if (!XaceHook(XACE_DEVICE_ACCESS, 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
@@ -1044,39 +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 XACE
- if (!XaceHook(XACE_DEVICE_ACCESS, 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
@@ -1084,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)
@@ -1096,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;
@@ -1128,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;
}
@@ -1192,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 XACE
- if (!XaceHook(XACE_DEVICE_ACCESS, 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;
}
@@ -1237,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;
}
@@ -1249,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;
}
@@ -1263,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;
}
@@ -1273,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:
@@ -1331,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
@@ -1357,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;
@@ -1413,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;
}
@@ -1442,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;
}
@@ -1599,15 +1912,13 @@ ProcQueryKeymap(ClientPtr client)
rep.type = X_Reply;
rep.sequenceNumber = client->sequence;
rep.length = 2;
-#ifdef XACE
- if (!XaceHook(XACE_DEVICE_ACCESS, 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 7c4d539fa..0a761eb6c 100644
--- a/dix/dispatch.c
+++ b/dix/dispatch.c
@@ -74,6 +74,36 @@ 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.
+ */
+
+
#ifdef HAVE_DIX_CONFIG_H
#include <dix-config.h>
@@ -104,9 +134,7 @@ int ProcInitialConnection();
#include "panoramiX.h"
#include "panoramiXsrv.h"
#endif
-#ifdef XACE
#include "xace.h"
-#endif
#ifdef XAPPGROUP
#include "appgroup.h"
#endif
@@ -118,6 +146,17 @@ int ProcInitialConnection();
#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)
@@ -372,6 +411,10 @@ Dispatch(void)
if (!clientReady)
return;
+#ifdef XSERVER_DTRACE
+ LoadRequestNames();
+#endif
+
while (!dispatchException)
{
if (*icheck[0] != *icheck[1])
@@ -448,19 +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
-#ifdef XACE
- {
+ else {
XaceHook(XACE_AUDIT_BEGIN, client);
result = (* client->requestVector[MAJOROP])(client);
XaceHook(XACE_AUDIT_END, client, result);
}
-#else
- result = (* client->requestVector[MAJOROP])(client);
-#endif /* XACE */
-
+#ifdef XSERVER_DTRACE
+ XSERVER_REQUEST_DONE(GetRequestName(MAJOROP), MAJOROP,
+ client->sequence, client->index, result);
+#endif
+
if (result != Success)
{
if (client->noClientException != Success)
@@ -491,6 +538,9 @@ Dispatch(void)
KillAllClients();
DEALLOCATE_LOCAL(clientReady);
dispatchException &= ~DE_RESET;
+#ifdef XSERVER_DTRACE
+ FreeRequestNames();
+#endif
}
#undef MAJOROP
@@ -1105,14 +1155,11 @@ ProcConvertSelection(register ClientPtr client)
i = 0;
while ((i < NumCurrentSelections) &&
CurrentSelections[i].selection != stuff->selection) i++;
- if ((i < NumCurrentSelections) &&
- (CurrentSelections[i].window != None)
-#ifdef XACE
- && XaceHook(XACE_RESOURCE_ACCESS, 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,
+ SecurityReadAccess, CurrentSelections[i].pWin))
{
event.u.u.type = SelectionRequest;
event.u.selectionRequest.time = stuff->time;
@@ -2102,9 +2149,7 @@ DoGetImage(register ClientPtr client, int format, Drawable drawable,
Mask plane = 0;
char *pBuf;
xGetImageReply xgi;
-#ifdef XACE
RegionPtr pVisibleRegion = NULL;
-#endif
if ((format != XYPixmap) && (format != ZPixmap))
{
@@ -2208,17 +2253,16 @@ DoGetImage(register ClientPtr client, int format, Drawable drawable,
WriteReplyToClient(client, sizeof (xGetImageReply), &xgi);
}
-#ifdef XACE
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)
{
@@ -2238,12 +2282,10 @@ DoGetImage(register ClientPtr client, int format, Drawable drawable,
format,
planemask,
(pointer) pBuf);
-#ifdef XACE
if (pVisibleRegion)
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 */
@@ -2279,13 +2321,11 @@ DoGetImage(register ClientPtr client, int format, Drawable drawable,
format,
plane,
(pointer)pBuf);
-#ifdef XACE
if (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 */
@@ -2307,10 +2347,8 @@ DoGetImage(register ClientPtr client, int format, Drawable drawable,
}
}
}
-#ifdef XACE
if (pVisibleRegion)
REGION_DESTROY(pDraw->pScreen, pVisibleRegion);
-#endif
if (!im_return)
DEALLOCATE_LOCAL(pBuf);
return (client->noClientException);
@@ -2459,7 +2497,7 @@ ProcCreateColormap(register ClientPtr client)
return(result);
}
client->errorValue = stuff->visual;
- return(BadValue);
+ return(BadMatch);
}
int
@@ -3281,13 +3319,11 @@ ProcListHosts(register ClientPtr client)
/* REQUEST(xListHostsReq); */
REQUEST_SIZE_MATCH(xListHostsReq);
-#ifdef XACE
+
/* untrusted clients can't list hosts */
if (!XaceHook(XACE_HOSTLIST_ACCESS, client, SecurityReadAccess))
- {
return BadAccess;
- }
-#endif
+
result = GetHosts(&pdata, &nHosts, &len, &reply.enabled);
if (result != Success)
return(result);
@@ -3565,6 +3601,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;
@@ -3618,7 +3657,6 @@ extern unsigned totalClientSize;
void InitClient(ClientPtr client, int i, pointer ospriv)
{
- bzero(client, totalClientSize);
client->index = i;
client->sequence = 0;
client->clientAsMask = ((Mask)i) << CLIENTOFFSET;
@@ -3991,3 +4029,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/dixfonts.c b/dix/dixfonts.c
index f10011e4b..7e2ed5058 100644
--- a/dix/dixfonts.c
+++ b/dix/dixfonts.c
@@ -155,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;
}
}
@@ -1886,7 +1881,7 @@ InitFonts ()
{
patternCache = MakeFontPatternCache();
-#ifndef KDRIVESERVER
+#ifndef BUILTIN_FONTS
if (screenInfo.numScreens > screenInfo.numVideoScreens) {
PrinterFontRegisterFpeFunctions();
FontFileCheckRegisterFpeFunctions();
@@ -1894,10 +1889,11 @@ InitFonts ()
} else
#endif
{
-#ifdef KDRIVESERVER
- BuiltinRegisterFpeFunctions();
-#endif
+#ifdef BUILTIN_FONTS
+ BuiltinRegisterFpeFunctions();
+#else
FontFileRegisterFpeFunctions();
+#endif
#ifndef NOFONTSERVERACCESS
fs_register_fpe_functions();
#endif
@@ -2059,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;
@@ -2079,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 a395d4474..af7e1c8f1 100644
--- a/dix/dixutils.c
+++ b/dix/dixutils.c
@@ -95,9 +95,7 @@ Author: Adobe Systems Incorporated
#include "scrnintstr.h"
#define XK_LATIN1
#include <X11/keysymdef.h>
-#ifdef XACE
#include "xace.h"
-#endif
/*
* CompareTimeStamps returns -1, 0, or +1 depending on if the first
diff --git a/dix/events.c b/dix/events.c
index c57a30ed8..0a39dcd9e 100644
--- a/dix/events.c
+++ b/dix/events.c
@@ -113,6 +113,7 @@ of the copyright holder.
#endif
#include <X11/X.h>
+#include <X11/keysym.h>
#include "misc.h"
#include "resource.h"
#define NEED_EVENTS
@@ -131,12 +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 XACE
#include "xace.h"
+
+#ifdef XSERVER_DTRACE
+#include <sys/types.h>
+typedef const char *string;
+#include "Xserver-dtrace.h"
#endif
#ifdef XEVIE
@@ -154,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"
@@ -206,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 {
@@ -319,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,
@@ -666,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)
@@ -1531,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) &&
@@ -1549,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 */
}
@@ -1589,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;
}
@@ -2476,10 +2461,8 @@ CheckPassiveGrabsOnWindow(
(grab->confineTo->realized &&
BorderSizeNotEmpty(grab->confineTo))))
{
-#ifdef XACE
if (!XaceHook(XACE_DEVICE_ACCESS, wClient(pWin), device, FALSE))
return FALSE;
-#endif
#ifdef XKB
if (!noXkbExtension) {
XE_KBPTR.state &= 0x1f00;
@@ -2776,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:
@@ -2847,9 +2823,7 @@ drawable.id:0;
if (deactivateGrab)
(*keybd->DeactivateGrab)(keybd);
-#ifdef XACE
XaceHook(XACE_KEY_AVAIL, xE, keybd, count);
-#endif
}
#ifdef XKB
@@ -2867,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:
@@ -3101,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
{
@@ -3115,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);
@@ -3282,17 +3247,13 @@ EnterLeaveEvent(
if ((type == EnterNotify) && (mask & KeymapStateMask))
{
xKeymapEvent ke;
-
-#ifdef XACE
ClientPtr client = grab ? rClient(grab)
: clients[CLIENT_ID(pWin->drawable.id)];
- if (!XaceHook(XACE_DEVICE_ACCESS, 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,
@@ -3378,15 +3339,12 @@ FocusEvent(DeviceIntPtr dev, int type, int mode, int detail, register WindowPtr
((pWin->eventMask | wOtherEventMasks(pWin)) & KeymapStateMask))
{
xKeymapEvent ke;
-#ifdef XACE
ClientPtr client = clients[CLIENT_ID(pWin->drawable.id)];
- if (!XaceHook(XACE_DEVICE_ACCESS, 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);
@@ -3649,10 +3607,10 @@ ProcSetInputFocus(client)
REQUEST(xSetInputFocusReq);
REQUEST_SIZE_MATCH(xSetInputFocusReq);
-#ifdef XACE
+
if (!XaceHook(XACE_DEVICE_ACCESS, client, inputInfo.keyboard, TRUE))
return Success;
-#endif
+
return SetInputFocus(client, inputInfo.keyboard, stuff->focus,
stuff->revertTo, stuff->time, FALSE);
}
@@ -3914,18 +3872,17 @@ ProcGrabKeyboard(ClientPtr client)
int result;
REQUEST_SIZE_MATCH(xGrabKeyboardReq);
-#ifdef XACE
- if (!XaceHook(XACE_DEVICE_ACCESS, 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;
@@ -4580,6 +4537,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 f58c73138..29cae8676 100644
--- a/dix/extension.c
+++ b/dix/extension.c
@@ -59,9 +59,7 @@ SOFTWARE.
#include "gcstruct.h"
#include "scrnintstr.h"
#include "dispatch.h"
-#ifdef XACE
#include "xace.h"
-#endif
#define EXTENSION_BASE 128
#define EXTENSION_EVENT_BASE 64
@@ -256,11 +254,9 @@ GetExtensionEntry(int major)
_X_EXPORT void
DeclareExtensionSecurity(char *extname, Bool secure)
{
-#ifdef XACE
int i = FindExtension(extname, strlen(extname));
if (i >= 0)
XaceHook(XACE_DECLARE_EXT_SECURE, extensions[i], secure);
-#endif
}
_X_EXPORT unsigned short
@@ -336,12 +332,7 @@ ProcQueryExtension(ClientPtr client)
else
{
i = FindExtension((char *)&stuff[1], stuff->nbytes);
- if (i < 0
-#ifdef XACE
- /* call callbacks to find out whether to show extension */
- || !XaceHook(XACE_EXT_ACCESS, client, extensions[i])
-#endif
- )
+ if (i < 0 || !XaceHook(XACE_EXT_ACCESS, client, extensions[i]))
reply.present = xFalse;
else
{
@@ -376,11 +367,10 @@ ProcListExtensions(ClientPtr client)
for (i=0; i<NumExtensions; i++)
{
-#ifdef XACE
/* 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;)
@@ -393,10 +383,9 @@ ProcListExtensions(ClientPtr client)
for (i=0; i<NumExtensions; i++)
{
int len;
-#ifdef XACE
if (!XaceHook(XACE_EXT_ACCESS, client, extensions[i]))
continue;
-#endif
+
*bufptr++ = len = strlen(extensions[i]->name);
memmove(bufptr, extensions[i]->name, len);
bufptr += len;
@@ -482,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 e25d715dd..b75657d29 100644
--- a/dix/ffs.c
+++ b/dix/ffs.c
@@ -26,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/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 fc77ca793..f86c6026d 100644
--- a/dix/globals.c
+++ b/dix/globals.c
@@ -105,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;
diff --git a/dix/main.c b/dix/main.c
index f3cde189c..3a77533a5 100644
--- a/dix/main.c
+++ b/dix/main.c
@@ -98,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"
@@ -309,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();
@@ -394,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();
@@ -433,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();
@@ -461,6 +485,7 @@ main(int argc, char *argv[], char *envp[])
FreeAllResources();
#endif
+ configFini();
CloseDownDevices();
for (i = screenInfo.numScreens - 1; i >= 0; i--)
{
@@ -681,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)
@@ -717,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/property.c b/dix/property.c
index da983838f..00d485655 100644
--- a/dix/property.c
+++ b/dix/property.c
@@ -58,9 +58,7 @@ SOFTWARE.
#include "dixstruct.h"
#include "dispatch.h"
#include "swaprep.h"
-#ifdef XACE
#include "xace.h"
-#endif
/*****************************************************************
* Property Stuff
@@ -118,27 +116,19 @@ ProcRotateProperties(ClientPtr client)
return(BadAlloc);
for (i = 0; i < stuff->nAtoms; i++)
{
-#ifdef XACE
char action = XaceHook(XACE_PROPERTY_ACCESS, client, pWin, atoms[i],
SecurityReadAccess|SecurityWriteAccess);
-#endif
- if (!ValidAtom(atoms[i])
-#ifdef XACE
- || (SecurityErrorOperation == action)
-#endif
- )
- {
+
+ if (!ValidAtom(atoms[i]) || (XaceErrorOperation == action)) {
DEALLOCATE_LOCAL(props);
client->errorValue = atoms[i];
return BadAtom;
}
-#ifdef XACE
- 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])
{
@@ -233,17 +223,15 @@ ProcChangeProperty(ClientPtr client)
return(BadAtom);
}
-#ifdef XACE
switch (XaceHook(XACE_PROPERTY_ACCESS, client, pWin, stuff->property,
- SecurityWriteAccess))
+ SecurityWriteAccess))
{
- 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,6 +448,7 @@ ProcGetProperty(ClientPtr client)
unsigned long n, len, ind;
WindowPtr pWin;
xGetPropertyReply reply;
+ Mask access_mode = SecurityReadAccess;
REQUEST(xGetPropertyReq);
REQUEST_SIZE_MATCH(xGetPropertyReq);
@@ -501,24 +490,18 @@ ProcGetProperty(ClientPtr client)
if (!pProp)
return NullPropertyReply(client, None, 0, &reply);
-#ifdef XACE
+ if (stuff->delete)
+ access_mode |= SecurityDestroyAccess;
+ switch (XaceHook(XACE_PROPERTY_ACCESS, client, pWin, stuff->property,
+ access_mode))
{
- Mask access_mode = SecurityReadAccess;
-
- if (stuff->delete)
- access_mode |= SecurityDestroyAccess;
- switch(XaceHook(XACE_PROPERTY_ACCESS, 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. */
@@ -663,17 +646,15 @@ ProcDeleteProperty(register ClientPtr client)
return (BadAtom);
}
-#ifdef XACE
- switch(XaceHook(XACE_PROPERTY_ACCESS, client, pWin, stuff->property,
- SecurityDestroyAccess))
+ switch (XaceHook(XACE_PROPERTY_ACCESS, client, pWin, stuff->property,
+ SecurityDestroyAccess))
{
- 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 b2d01c8f3..c2044601f 100644
--- a/dix/resource.c
+++ b/dix/resource.c
@@ -72,6 +72,34 @@ 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.
+ */
/* $TOG: resource.c /main/41 1998/02/09 14:20:31 kaleb $ */
@@ -120,11 +148,17 @@ Equipment Corporation.
#include "panoramiX.h"
#include "panoramiXsrv.h"
#endif
-#ifdef XACE
#include "xace.h"
-#endif
#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);
@@ -848,11 +902,10 @@ SecurityLookupIDByType(ClientPtr client, XID id, RESTYPE rtype, Mask mode)
break;
}
}
-#ifdef XACE
if (retval && client &&
!XaceHook(XACE_RESOURCE_ACCESS, client, id, rtype, mode, retval))
retval = NULL;
-#endif
+
return retval;
}
@@ -876,11 +929,10 @@ SecurityLookupIDByClass(ClientPtr client, XID id, RESTYPE classes, Mask mode)
break;
}
}
-#ifdef XACE
if (retval && client &&
!XaceHook(XACE_RESOURCE_ACCESS, client, id, res->type, mode, retval))
retval = NULL;
-#endif
+
return retval;
}
diff --git a/dix/window.c b/dix/window.c
index 3dfeda36e..fa6906f2a 100644
--- a/dix/window.c
+++ b/dix/window.c
@@ -126,9 +126,7 @@ Equipment Corporation.
#ifdef XAPPGROUP
#include "appgroup.h"
#endif
-#ifdef XACE
#include "xace.h"
-#endif
/******
* Window stuff for server
@@ -187,7 +185,7 @@ _X_EXPORT int deltaSaveUndersViewable = 0;
* For debugging only
******/
-int
+static void
PrintChildren(WindowPtr p1, int indent)
{
WindowPtr p2;
@@ -197,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;
@@ -530,9 +529,7 @@ InitRootWindow(WindowPtr pWin)
/* We SHOULD check for an error value here XXX */
(*pScreen->ChangeWindowAttributes)(pWin, backFlag);
-#ifdef XACE
XaceHook(XACE_WINDOW_INIT, serverClient, pWin);
-#endif
MapWindow(pWin, serverClient);
}
@@ -547,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)
@@ -735,18 +734,16 @@ CreateWindow(Window wid, register WindowPtr pParent, int x, int y, unsigned w,
}
pWin->borderWidth = bw;
-#ifdef XACE
+
/* can't let untrusted clients have background None windows;
* they make it too easy to steal window contents
*/
- if (!XaceHook(XACE_BACKGRND_ACCESS, client, pWin))
- {
+ 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;
@@ -766,9 +763,7 @@ CreateWindow(Window wid, register WindowPtr pParent, int x, int y, unsigned w,
REGION_NULL(pScreen, &pWin->winSize);
REGION_NULL(pScreen, &pWin->borderSize);
-#ifdef XACE
XaceHook(XACE_WINDOW_INIT, client, pWin);
-#endif
pHead = RealChildHead(pParent);
if (pHead)
@@ -1033,24 +1028,18 @@ ChangeWindowAttributes(register WindowPtr pWin, Mask vmask, XID *vlist, ClientPt
borderRelative = TRUE;
if (pixID == None)
{
-#ifdef XACE
/* can't let untrusted clients have background None windows */
- if (XaceHook(XACE_BACKGRND_ACCESS, client, pWin))
- {
-#endif
- if (pWin->backgroundState == BackgroundPixmap)
- (*pScreen->DestroyPixmap)(pWin->background.pixmap);
- if (!pWin->parent)
- MakeRootTile(pWin);
- else
- pWin->backgroundState = None;
-#ifdef XACE
- }
- 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)
{
@@ -1663,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);
@@ -1699,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);
@@ -1741,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);
@@ -1952,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)) {
@@ -2732,11 +2725,9 @@ MapWindow(register WindowPtr pWin, ClientPtr client)
if (pWin->mapped)
return(Success);
-#ifdef XACE
/* 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/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/fb/fb.h b/fb/fb.h
index de0b3a8c2..e60507874 100644
--- a/fb/fb.h
+++ b/fb/fb.h
@@ -1342,6 +1342,9 @@ void
fbClearVisualTypes(void);
Bool
+fbHasVisualTypes (int depth);
+
+Bool
fbSetVisualTypes (int depth, int visuals, int bitsPerRGB);
Bool
diff --git a/fb/fbpict.c b/fb/fbpict.c
index d839994ae..28503c0cf 100644
--- a/fb/fbpict.c
+++ b/fb/fbpict.c
@@ -930,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)) {
@@ -1044,7 +1043,7 @@ fbComposite (CARD8 op,
{
if (pSrc->pDrawable == pMask->pDrawable &&
xSrc == xMask && ySrc == yMask &&
- !pMask->componentAlpha)
+ !pMask->componentAlpha && !maskRepeat)
{
/* source == mask: non-premultiplied data */
switch (pSrc->format) {
@@ -1108,9 +1107,7 @@ fbComposite (CARD8 op,
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 &&
@@ -1127,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) {
diff --git a/fb/fbpict.h b/fb/fbpict.h
index 19d555781..5cdde9ef5 100644
--- a/fb/fbpict.h
+++ b/fb/fbpict.h
@@ -30,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))
@@ -67,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__; \
@@ -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/hw/darwin/darwinKeyboard.c b/hw/darwin/darwinKeyboard.c
index c148d96ce..1cc49fe8e 100644
--- a/hw/darwin/darwinKeyboard.c
+++ b/hw/darwin/darwinKeyboard.c
@@ -1020,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/dmx/config/Makefile.am b/hw/dmx/config/Makefile.am
index fbc7f35a1..c31e04942 100644
--- a/hw/dmx/config/Makefile.am
+++ b/hw/dmx/config/Makefile.am
@@ -27,7 +27,7 @@ endif
AM_YFLAGS = -d
AM_CFLAGS = \
- \
+ $(DIX_CFLAGS) \
-I$(top_srcdir)/hw/dmx \
$(GLX_INCS) \
-DHAVE_DMX_CONFIG_H \
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/glxProxy/Makefile.am b/hw/dmx/glxProxy/Makefile.am
index 2f4a3b708..1fbc8d764 100644
--- a/hw/dmx/glxProxy/Makefile.am
+++ b/hw/dmx/glxProxy/Makefile.am
@@ -32,7 +32,7 @@ libglxproxy_a_SOURCES = compsize.c \
unpack.h
AM_CFLAGS = \
- \
+ $(DIX_CFLAGS) \
-I$(top_srcdir)/hw/dmx \
-I$(top_srcdir)/include \
-I$(top_srcdir)/GL/include \
diff --git a/hw/dmx/input/Makefile.am b/hw/dmx/input/Makefile.am
index 326506e77..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 = \
+AM_CFLAGS = $(DIX_CFLAGS) \
-I$(top_srcdir)/hw/dmx \
-I$(top_srcdir)/hw/xfree86/common \
$(GLX_INCS) \
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 3732d7d72..76635fb52 100644
--- a/hw/kdrive/ati/Makefile.am
+++ b/hw/kdrive/ati/Makefile.am
@@ -61,12 +61,4 @@ ATI_LIBS = \
Xati_LDADD = \
$(ATI_LIBS) \
@KDRIVE_LIBS@ \
- @XSERVER_LIBS@
-
-
-Xati_DEPENDENCIES = \
- libati.a \
- $(FBDEV_LIBS) \
- $(VESA_LIBS) \
- $(DRI_LIBS)
-
+ @XSERVER_LIBS@
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/chips/Makefile.am b/hw/kdrive/chips/Makefile.am
index 80fb2ddea..2f8a88da0 100644
--- a/hw/kdrive/chips/Makefile.am
+++ b/hw/kdrive/chips/Makefile.am
@@ -24,7 +24,3 @@ Xchips_LDADD = \
$(CHIPS_LIBS) \
@KDRIVE_LIBS@ \
@XSERVER_LIBS@
-
-Xchips_DEPENDENCIES = \
- libchips.a \
- $(top_builddir)/hw/kdrive/vesa/libvesa.a
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 8f51bbe08..c201fe9d6 100644
--- a/hw/kdrive/ephyr/Makefile.am
+++ b/hw/kdrive/ephyr/Makefile.am
@@ -28,9 +28,4 @@ Xephyr_LDADD = \
libxephyr-hostx.a \
../../../exa/libexa.la \
@KDRIVE_LIBS@ \
- @KDRIVE_LIBS@ \
@XEPHYR_LIBS@
-
-Xephyr_DEPENDENCIES = \
- libxephyr.a \
- libxephyr-hostx.a
diff --git a/hw/kdrive/ephyr/ephyr.c b/hw/kdrive/ephyr/ephyr.c
index fbb16a465..7db8675d8 100644
--- a/hw/kdrive/ephyr/ephyr.c
+++ b/hw/kdrive/ephyr/ephyr.c
@@ -36,10 +36,16 @@
#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
@@ -206,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;
@@ -719,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;
@@ -732,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;
}
}
@@ -748,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:
@@ -833,59 +857,112 @@ ephyrPutColors (ScreenPtr pScreen, int fb, int n, xColorItem *pdefs)
/* Mouse calls */
-static Bool
-MouseInit (void)
+static Status
+MouseInit (KdPointerInfo *pi)
+{
+ 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)
{
- return TRUE;
+ ((EphyrPointerPrivate *)pi->driverPrivate)->enabled = TRUE;
+ return Success;
+}
+
+static void
+MouseDisable (KdPointerInfo *pi)
+{
+ ((EphyrPointerPrivate *)pi->driverPrivate)->enabled = FALSE;
+ return;
}
static void
-MouseFini (void)
+MouseFini (KdPointerInfo *pi)
{
- ;
+ ephyrMouse = NULL;
+ return;
}
-KdMouseFuncs EphyrMouseFuncs = {
+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 Status
+EphyrKeyboardEnable (KdKeyboardInfo *ki)
+{
+ ((EphyrKbdPrivate *)ki->driverPrivate)->enabled = TRUE;
+
+ return Success;
}
-static int
-EphyrKeyboardInit (void)
+static void
+EphyrKeyboardDisable (KdKeyboardInfo *ki)
{
- return 0;
+ ((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 1aa608e93..a77b87e5e 100644
--- a/hw/kdrive/ephyr/ephyrinit.c
+++ b/hw/kdrive/ephyr/ephyrinit.c
@@ -51,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
diff --git a/hw/kdrive/ephyr/hostx.c b/hw/kdrive/ephyr/hostx.c
index d0a2f2f95..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())
{
@@ -683,19 +677,21 @@ hostx_load_keymap(void)
*/
width = (host_width > 4) ? 4 : host_width;
+ ephyrKeySyms.map = (KeySym *)calloc(sizeof(KeySym),
+ (max_keycode - min_keycode + 1) *
+ width);
+ if (!ephyrKeySyms.map)
+ return;
+
for (i=0; i<(max_keycode - min_keycode+1); i++)
for (j=0; j<width; j++)
- kdKeymap[ (i*width)+j ] = keymap[ (i*host_width) + j ];
+ ephyrKeySyms.map[(i*width)+j] = keymap[(i*host_width) + j];
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 = width;
+ 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 665d13651..a5bc70b02 100644
--- a/hw/kdrive/epson/Makefile.am
+++ b/hw/kdrive/epson/Makefile.am
@@ -24,5 +24,3 @@ Xepson_LDADD = \
$(EPSON_LIBS) \
@KDRIVE_LIBS@ \
@XSERVER_LIBS@
-
-Xepson_DEPENDENCIES = libepson.a
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 3a53e3dbb..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,9 +19,4 @@ Xfake_SOURCES = \
Xfake_LDADD = \
libfake.a \
@KDRIVE_LIBS@ \
- @KDRIVE_LIBS@ \
- $(TSLIB_FLAG) \
@XSERVER_LIBS@
-
-Xfake_DEPENDENCIES = \
- libfake.a
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 3a8c65bbb..cb7180184 100644
--- a/hw/kdrive/fbdev/Makefile.am
+++ b/hw/kdrive/fbdev/Makefile.am
@@ -4,19 +4,18 @@ INCLUDES = \
noinst_LIBRARIES = libfbdev.a
-bin_PROGRAMS = Xfbdev
-
libfbdev_a_SOURCES = \
fbdev.c \
fbdev.h
+if KDRIVEFBDEV
+bin_PROGRAMS = Xfbdev
+
Xfbdev_SOURCES = \
fbinit.c
Xfbdev_LDADD = \
libfbdev.a \
@KDRIVE_LIBS@ \
- @XSERVER_LIBS@
-
-Xfbdev_DEPENDENCIES = \
- libfbdev.a
+ @XSERVER_LIBS@
+endif
diff --git a/hw/kdrive/fbdev/fbdev.c b/hw/kdrive/fbdev/fbdev.c
index 20bf75800..598d0ceaf 100644
--- a/hw/kdrive/fbdev/fbdev.c
+++ b/hw/kdrive/fbdev/fbdev.c
@@ -331,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)
@@ -339,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/fbinit.c b/hw/kdrive/fbdev/fbinit.c
index ee373276b..3b78c9735 100644
--- a/hw/kdrive/fbdev/fbinit.c
+++ b/hw/kdrive/fbdev/fbinit.c
@@ -45,10 +45,18 @@ 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
diff --git a/hw/kdrive/i810/Makefile.am b/hw/kdrive/i810/Makefile.am
index 808d8f70b..503958571 100644
--- a/hw/kdrive/i810/Makefile.am
+++ b/hw/kdrive/i810/Makefile.am
@@ -27,5 +27,3 @@ Xi810_LDADD = \
$(I810_LIBS) \
@KDRIVE_LIBS@ \
@XSERVER_LIBS@
-
-Xi810_DEPENDENCIES = libi810.a
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 e924aef71..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)
+ @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 d8ebae920..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,9 +25,4 @@ MGA_LIBS = \
Xmga_LDADD = \
$(MGA_LIBS) \
@KDRIVE_LIBS@ \
- @XSERVER_LIBS@ \
- $(TSLIB_FLAG)
-
-Xmga_DEPENDENCIES = \
- libmga.a \
- $(top_builddir)/hw/kdrive/vesa/libvesa.a
+ @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 9f8e02919..9a1af990c 100644
--- a/hw/kdrive/neomagic/Makefile.am
+++ b/hw/kdrive/neomagic/Makefile.am
@@ -38,9 +38,3 @@ Xneomagic_LDADD = \
$(NEOMAGIC_LIBS) \
@KDRIVE_LIBS@ \
@XSERVER_LIBS@
-
-
-Xneomagic_DEPENDENCIES = \
- libneomagic.a \
- ${FBDEV_LIBS} \
- ${VESA_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 d7b26cfa1..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 = \
@@ -31,7 +27,3 @@ Xnvidia_LDADD = \
$(NVIDIA_LIBS) \
@KDRIVE_LIBS@ \
@XSERVER_LIBS@
-
-Xnvidia_DEPENDENCIES = \
- libnvidia.a \
- $(top_builddir)/hw/kdrive/vesa/libvesa.a
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 24ef15042..a7b0f0088 100644
--- a/hw/kdrive/pm2/Makefile.am
+++ b/hw/kdrive/pm2/Makefile.am
@@ -25,8 +25,3 @@ Xpm2_LDADD = \
$(PM2_LIBS) \
@KDRIVE_LIBS@ \
@XSERVER_LIBS@
-
-
-Xpm2_DEPENDENCIES = \
- libpm2.a \
- $(top_builddir)/hw/kdrive/vesa/libvesa.a
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 da42af95f..eab80cce0 100644
--- a/hw/kdrive/r128/Makefile.am
+++ b/hw/kdrive/r128/Makefile.am
@@ -24,8 +24,3 @@ Xr128_LDADD = \
$(R128_LIBS) \
@KDRIVE_LIBS@ \
@XSERVER_LIBS@
-
-
-Xr128_DEPENDENCIES = \
- libr128.a \
- $(top_builddir)/hw/kdrive/vesa/libvesa.a
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 cc3873ca8..f5abb86e8 100644
--- a/hw/kdrive/sdl/Makefile.am
+++ b/hw/kdrive/sdl/Makefile.am
@@ -5,14 +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@
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 6a6e0bf80..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)
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 86a9ea947..0fd9729fc 100644
--- a/hw/kdrive/smi/Makefile.am
+++ b/hw/kdrive/smi/Makefile.am
@@ -29,9 +29,3 @@ Xsmi_LDADD = \
$(SMI_LIBS) \
@KDRIVE_LIBS@ \
@XSERVER_LIBS@
-
-
-Xsmi_DEPENDENCIES = \
- libsmi.a \
- $(top_builddir)/hw/kdrive/fbdev/libfbdev.a \
- $(top_builddir)/hw/kdrive/vesa/libvesa.a
diff --git a/hw/kdrive/smi/smistub.c b/hw/kdrive/smi/smistub.c
index e0f33fe6f..1db6708f2 100644
--- a/hw/kdrive/smi/smistub.c
+++ b/hw/kdrive/smi/smistub.c
@@ -47,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/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/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/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 70ba55fa7..54a6f47ee 100644
--- a/hw/kdrive/vesa/Makefile.am
+++ b/hw/kdrive/vesa/Makefile.am
@@ -22,8 +22,4 @@ Xvesa_SOURCES = \
Xvesa_LDADD = \
libvesa.a \
@KDRIVE_LIBS@ \
- @KDRIVE_LIBS@ \
@XSERVER_LIBS@
-
-Xvesa_DEPENDENCIES = \
- libvesa.a
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 7dcfd7c5b..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)
+ @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/InitInput.c b/hw/vfb/InitInput.c
index 773c45420..99cf56c70 100644
--- a/hw/vfb/InitInput.c
+++ b/hw/vfb/InitInput.c
@@ -43,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;
}
@@ -55,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];
@@ -292,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:
@@ -318,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/Makefile.am b/hw/vfb/Makefile.am
index baab5ca22..2a0151f57 100644
--- a/hw/vfb/Makefile.am
+++ b/hw/vfb/Makefile.am
@@ -21,8 +21,8 @@ Xvfb_LDFLAGS =
AM_CFLAGS = -DHAVE_DIX_CONFIG_H \
-DNO_HW_ONLY_EXTS \
-DNO_MODULE_EXTS \
- \
- $(XVFBMODULES_CFLAGS)
+ $(XVFBMODULES_CFLAGS) \
+ $(DIX_CFLAGS)
# Man page
include $(top_srcdir)/cpprules.in
diff --git a/hw/xfree86/Makefile.am b/hw/xfree86/Makefile.am
index e138db88f..f0c9e56f3 100644
--- a/hw/xfree86/Makefile.am
+++ b/hw/xfree86/Makefile.am
@@ -22,7 +22,7 @@ DIST_SUBDIRS = common ddc dummylib i2c x86emu int10 fbdevhw os-support \
bin_PROGRAMS = Xorg
-AM_CFLAGS = @XORG_CFLAGS@
+AM_CFLAGS = $(DIX_CFLAGS) @XORG_CFLAGS@
INCLUDES = @XORG_INCS@
Xorg_SOURCES = xorg.c
@@ -58,12 +58,15 @@ Xorg_LDADD = $(XORG_LIBS) \
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
@@ -84,17 +87,12 @@ endif
optionsdir = $(libdir)/X11
dist_options_DATA = Options
-BUILT_SOURCES = xorg.conf.example
-CLEAN = xorg.conf.example xorg.conf.example.pre
-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\"" \
- -DCIDFONTPATH="\"$(BASE_FONT_PATH)/CID\"" \
-DDPI75FONTPATH="\"$(BASE_FONT_PATH)/75dpi\"" \
-DDPI100FONTPATH="\"$(BASE_FONT_PATH)/100dpi\"" \
-DMODULEPATH=\"$(DEFAULT_MODULE_PATH)\"
@@ -103,4 +101,4 @@ relink:
rm -f Xorg && $(MAKE) Xorg
xorg.conf.example.pre: xorgconf.cpp
- cp $< $@
+ cp $(srcdir)/xorgconf.cpp $@
diff --git a/hw/xfree86/common/Makefile.am b/hw/xfree86/common/Makefile.am
index e99fc911d..db726fea1 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)
@@ -34,14 +32,13 @@ AM_LDFLAGS = -r
libcommon_la_SOURCES = xf86Configure.c xf86Bus.c xf86Config.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)
+AM_CFLAGS = $(DIX_CFLAGS) $(XORG_CFLAGS)
diff --git a/hw/xfree86/common/compiler.h b/hw/xfree86/common/compiler.h
index a330fadf4..ea995eda1 100644
--- a/hw/xfree86/common/compiler.h
+++ b/hw/xfree86/common/compiler.h
@@ -118,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)) \
@@ -1697,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/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 7da1fc29e..e96157e18 100644
--- a/hw/xfree86/common/xf86.h
+++ b/hw/xfree86/common/xf86.h
@@ -66,7 +66,7 @@ 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;
@@ -211,6 +211,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);
@@ -403,6 +407,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 440677b4d..89e2afabd 100644
--- a/hw/xfree86/common/xf86AutoConfig.c
+++ b/hw/xfree86/common/xf86AutoConfig.c
@@ -48,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 \
diff --git a/hw/xfree86/common/xf86Bus.c b/hw/xfree86/common/xf86Bus.c
index edcc6b0c7..e6e56e133 100644
--- a/hw/xfree86/common/xf86Bus.c
+++ b/hw/xfree86/common/xf86Bus.c
@@ -114,7 +114,7 @@ void
xf86BusProbe(void)
{
xf86PciProbe();
-#if defined(__sparc__) && !defined(__OpenBSD__)
+#if (defined(__sparc__) || defined(__sparc)) && !defined(__OpenBSD__)
xf86SbusProbe();
#endif
}
@@ -2387,7 +2387,7 @@ xf86PostProbe(void)
if (fbSlotClaimed) {
if (pciSlotClaimed || isaSlotClaimed
-#if defined(__sparc__) && !defined(__OpenBSD__)
+#if (defined(__sparc__) || defined(__sparc)) && !defined(__OpenBSD__)
|| sbusSlotClaimed
#endif
) {
@@ -3011,7 +3011,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
@@ -3023,7 +3023,7 @@ static void
CheckGenericGA()
{
/* This needs to be changed for multiple domains */
-#if !defined(__sparc__) && !defined(__powerpc__) && !defined(__mips__) && !defined(__ia64__) && !defined(__arm__) && !defined(__s390__)
+#if !defined(__sparc__) && !defined(__sparc) && !defined(__powerpc__) && !defined(__mips__) && !defined(__ia64__) && !defined(__arm__) && !defined(__s390__)
IOADDRESS GenericIOBase = VGAHW_GET_IOBASE();
CARD8 CurrentValue, TestValue;
diff --git a/hw/xfree86/common/xf86Bus.h b/hw/xfree86/common/xf86Bus.h
index 13ccbb20c..8e65023b4 100644
--- a/hw/xfree86/common/xf86Bus.h
+++ b/hw/xfree86/common/xf86Bus.h
@@ -40,7 +40,7 @@
#define _XF86_BUS_H
#include "xf86pciBus.h"
-#ifdef __sparc__
+#if defined(__sparc__) || defined(__sparc)
#include "xf86sbusBus.h"
#endif
diff --git a/hw/xfree86/common/xf86Config.c b/hw/xfree86/common/xf86Config.c
index 87b8a0b72..c0e21dd5e 100644
--- a/hw/xfree86/common/xf86Config.c
+++ b/hw/xfree86/common/xf86Config.c
@@ -63,7 +63,7 @@
#include "xf86Config.h"
#include "xf86Priv.h"
#include "xf86_OSlib.h"
-
+#include "configProcs.h"
#include "globals.h"
#include "extension.h"
@@ -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;
@@ -762,7 +759,8 @@ typedef enum {
FLAG_HANDLE_SPECIAL_KEYS,
FLAG_RANDR,
FLAG_AIGLX,
- FLAG_IGNORE_ABI
+ FLAG_IGNORE_ABI,
+ FLAG_ALLOW_EMPTY_INPUT,
} FlagValues;
static OptionInfoRec FlagOptions[] = {
@@ -834,6 +832,8 @@ 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,
@@ -895,7 +895,7 @@ configServerFlags(XF86ConfFlagsPtr flagsconf, XF86OptionPtr layoutopts)
xf86GetOptValBool(FlagOptions, FLAG_ALLOW_CLOSEDOWN_GRABS,
&(xf86Info.grabInfo.allowClosedown));
xf86GetOptValBool(FlagOptions, FLAG_IGNORE_ABI, &xf86Info.ignoreABI);
- if (&xf86Info.ignoreABI) {
+ if (xf86Info.ignoreABI) {
xf86Msg(X_CONFIG, "Ignoring ABI Version\n");
}
@@ -1031,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)
@@ -1120,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:
*
@@ -1438,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
@@ -1595,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. */
@@ -1653,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;
@@ -1974,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;
}
@@ -2034,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;
@@ -2201,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;
/*
@@ -2563,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;
}
@@ -2624,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
*/
@@ -2745,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/xf86Configure.c b/hw/xfree86/common/xf86Configure.c
index 5b786e8c6..741e46b5b 100644
--- a/hw/xfree86/common/xf86Configure.c
+++ b/hw/xfree86/common/xf86Configure.c
@@ -49,7 +49,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
@@ -58,7 +58,7 @@
typedef struct _DevToConfig {
GDevRec GDev;
struct pci_device * pVideo;
-#if defined(__sparc__) && !defined(__OpenBSD__)
+#if (defined(__sparc__) || defined(__sparc)) && !defined(__OpenBSD__)
sbusDevicePtr sVideo;
#endif
int iDriver;
@@ -77,7 +77,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";
@@ -136,7 +136,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 &&
@@ -215,7 +215,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;
@@ -268,11 +268,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) */
diff --git a/hw/xfree86/common/xf86Cursor.c b/hw/xfree86/common/xf86Cursor.c
index dcdf46674..46d812804 100644
--- a/hw/xfree86/common/xf86Cursor.c
+++ b/hw/xfree86/common/xf86Cursor.c
@@ -77,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];
@@ -228,9 +223,9 @@ 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);
diff --git a/hw/xfree86/common/xf86DGA.c b/hw/xfree86/common/xf86DGA.c
index 55c85e630..204457fb1 100644
--- a/hw/xfree86/common/xf86DGA.c
+++ b/hw/xfree86/common/xf86DGA.c
@@ -47,6 +47,8 @@
#endif
#include "xf86Xinput.h"
+#include "mi.h"
+
static unsigned long DGAGeneration = 0;
static int DGAScreenIndex = -1;
@@ -907,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;
@@ -930,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/xf86Debug.c b/hw/xfree86/common/xf86Debug.c
index 2eb28876d..cb579343a 100644
--- a/hw/xfree86/common/xf86Debug.c
+++ b/hw/xfree86/common/xf86Debug.c
@@ -163,6 +163,7 @@ void xf86PokeMmio32(pointer Base, unsigned long Offset, CARD32 v)
}
+#if 0
_X_EXPORT void
xf86STimestamp(xf86TsPtr* timestamp)
{
@@ -194,3 +195,4 @@ xf86SPTimestamp(xf86TsPtr* timestamp, char *str)
gettimeofday((struct timeval*)*timestamp,NULL);
}
}
+#endif
diff --git a/hw/xfree86/common/xf86Events.c b/hw/xfree86/common/xf86Events.c
index 831c68ad8..05e62f184 100644
--- a/hw/xfree86/common/xf86Events.c
+++ b/hw/xfree86/common/xf86Events.c
@@ -104,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
@@ -146,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
@@ -170,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
@@ -253,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);
}
@@ -384,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 */
@@ -403,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
@@ -1137,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.
@@ -1161,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.
@@ -1191,7 +502,7 @@ xf86Wakeup(pointer blockData, int err, pointer pReadmask)
}
}
}
-
+
if (xf86VTSwitchPending()) xf86VTSwitch();
if (xf86Info.inputPending) ProcessInputEvents();
@@ -1216,7 +527,7 @@ xf86SigioReadInput(int fd,
/*
* xf86AddEnabledDevice --
- *
+ *
*/
_X_EXPORT void
xf86AddEnabledDevice(InputInfoPtr pInfo)
@@ -1228,7 +539,7 @@ xf86AddEnabledDevice(InputInfoPtr pInfo)
/*
* xf86RemoveEnabledDevice --
- *
+ *
*/
_X_EXPORT void
xf86RemoveEnabledDevice(InputInfoPtr pInfo)
@@ -1249,7 +560,7 @@ xf86InterceptSignals(int *signo)
static void (*xf86SigIllHandler)(void) = NULL;
-_X_EXPORT void
+_X_EXPORT void
xf86InterceptSigIll(void (*sigillhandler)(void))
{
xf86SigIllHandler = sigillhandler;
@@ -1297,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];
@@ -1310,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;
@@ -1332,7 +643,7 @@ static int xorg_backtrace_frame(uintptr_t pc, int signo, void *arg)
*/
ErrorF("%s\n", header);
}
-
+
return 0;
}
# endif /* HAVE_WALKCONTEXT */
@@ -1375,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);
@@ -1399,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
{
@@ -1441,7 +752,7 @@ xf86SigHandler(int signo)
(void) signal(signo, xf86SigHandler);
return;
}
-
+
if (xf86SignalIntercept && (*xf86SignalIntercept < 0)) {
*xf86SignalIntercept = signo;
/* Re-arm handler just in case */
@@ -1456,7 +767,7 @@ xf86SigHandler(int signo)
#endif
xorg_backtrace();
-
+
FatalError("Caught signal %d. Server aborting\n", signo);
}
@@ -1470,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.
@@ -1484,7 +852,7 @@ xf86VTSwitch()
#ifdef DEBUG
ErrorF("xf86VTSwitch()\n");
#endif
-
+
#ifdef XFreeXDGA
if(!DGAVTSwitch())
return;
@@ -1511,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__ */
@@ -1533,7 +901,7 @@ xf86VTSwitch()
if (!xf86VTSwitchAway()) {
/*
- * switch failed
+ * switch failed
*/
#ifdef DEBUG
@@ -1556,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);
@@ -1618,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);
@@ -1636,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;
@@ -1656,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;
@@ -1686,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;
}
@@ -1704,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;
@@ -1717,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.
*/
@@ -1742,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) {
@@ -1754,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. */
@@ -1771,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 745c06379..9b23710bb 100644
--- a/hw/xfree86/common/xf86Globals.c
+++ b/hw/xfree86/common/xf86Globals.c
@@ -93,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 */
@@ -141,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 */
diff --git a/hw/xfree86/common/xf86Helper.c b/hw/xfree86/common/xf86Helper.c
index 86d7bf303..bad051302 100644
--- a/hw/xfree86/common/xf86Helper.c
+++ b/hw/xfree86/common/xf86Helper.c
@@ -93,7 +93,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));
}
@@ -144,6 +144,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)
{
@@ -218,7 +244,7 @@ xf86AllocateScreen(DriverPtr drv, int flags)
#endif
xf86Screens[i]->DriverFunc = drv->driverFunc;
-
+
return xf86Screens[i];
}
@@ -270,7 +296,7 @@ xf86DeleteScreen(int scrnIndex, int flags)
xfree(pScrn);
/* Move the other entries down, updating their scrnIndex fields */
-
+
xf86NumScreens--;
for (i = scrnIndex; i < xf86NumScreens; i++) {
@@ -433,11 +459,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
@@ -464,7 +490,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;
@@ -923,7 +949,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;
@@ -976,7 +1002,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;
@@ -986,7 +1012,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 */
@@ -1030,7 +1056,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);
}
}
@@ -1126,7 +1152,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
@@ -1151,9 +1177,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)
@@ -1198,7 +1224,7 @@ xf86SetRootClip (ScreenPtr pScreen, Bool enable)
if (bsExposed)
{
RegionPtr valExposed = NullRegion;
-
+
if (pWin->valdata)
valExposed = &pWin->valdata->after.exposed;
(*pScreen->WindowExposures) (pWin, valExposed, bsExposed);
@@ -1257,7 +1283,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);
@@ -1266,7 +1292,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);
/*
@@ -1387,7 +1413,7 @@ xf86LogInit()
#define LOGSUFFIX ".log"
#define LOGOLDSUFFIX ".old"
-
+
/* Get the log file name */
if (xf86LogFileFrom == X_DEFAULT) {
/* Append the display number and ".log" */
@@ -1515,7 +1541,7 @@ xf86MatchDevice(const char *drivername, GDevPtr **sectlist)
*sectlist = NULL;
if (xf86DoProbe) return 1;
-
+
if (xf86DoConfigure && xf86DoConfigurePass1) return 1;
/*
@@ -1523,18 +1549,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
@@ -1564,7 +1590,7 @@ xf86MatchDevice(const char *drivername, GDevPtr **sectlist)
}
j++;
}
-
+
/*
* make the array NULL terminated and return its address
*/
@@ -1590,7 +1616,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.
*
@@ -1606,7 +1632,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.
@@ -1621,7 +1647,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)
@@ -1772,7 +1798,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;
@@ -1803,7 +1829,7 @@ xf86MatchPciInstances(const char *driverName, int vendorID,
pPci->dev,
pPci->func) &&
devList[j]->screen == instances[i].screen) {
-
+
if (devBus)
xf86MsgVerb(X_WARNING,0,
"%s: More than one matching Device section for "
@@ -1812,10 +1838,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)) {
@@ -1830,7 +1856,7 @@ xf86MatchPciInstances(const char *driverName, int vendorID,
}
}
}
- if (devBus) dev = devBus; /* busID preferred */
+ if (devBus) dev = devBus; /* busID preferred */
if (!dev) {
if ( xf86CheckPciSlot( pPci ) ) {
xf86MsgVerb(X_WARNING, 0, "%s: No matching Device section "
@@ -2049,7 +2075,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;
@@ -2060,7 +2086,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){
@@ -2083,7 +2109,7 @@ xf86MatchIsaInstances(const char *driverName, SymTabPtr chipsets,
}
}
*foundEntities = retEntities;
-
+
return numFound;
}
@@ -2107,7 +2133,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);
@@ -2120,7 +2146,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;
@@ -2134,25 +2160,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();
@@ -2163,7 +2189,7 @@ finish:
xf86SetPriority(FALSE);
- for (i = 0; i < num; i++)
+ for (i = 0; i < num; i++)
{
if (i != knownclkindex)
{
@@ -2171,10 +2197,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;
@@ -2185,7 +2211,7 @@ finish:
}
pScrn->clock[knownclkindex] = knownclkvalue;
- pScrn->numClocks = num;
+ pScrn->numClocks = num;
/* Restore registers that were written on */
(*ClockFunc)(pScrn, CLK_REG_RESTORE);
@@ -2406,17 +2432,17 @@ xf86LoadSubModule(ScrnInfoPtr pScrn, const char *name)
/*
* xf86LoadOneModule loads a single module.
- */
+ */
_X_EXPORT pointer
xf86LoadOneModule(char *name, pointer opt)
{
int errmaj, errmin;
char *Name;
pointer mod;
-
+
if (!name)
return NULL;
-
+
#ifndef NORMALISE_MODULE_NAME
Name = xstrdup(name);
#else
@@ -2488,7 +2514,7 @@ static const OptionInfoRec BSOptions[] = {
{ -1, NULL, OPTV_NONE, {0}, FALSE }
};
-_X_EXPORT void
+_X_EXPORT void
xf86SetBackingStore(ScreenPtr pScreen)
{
Bool useBS = FALSE;
@@ -2528,7 +2554,7 @@ static const OptionInfoRec SMOptions[] = {
{ -1, NULL, OPTV_NONE, {0}, FALSE }
};
-_X_EXPORT void
+_X_EXPORT void
xf86SetSilkenMouse (ScreenPtr pScreen)
{
Bool useSM = TRUE;
@@ -2539,12 +2565,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;
@@ -2559,7 +2585,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)
@@ -2613,7 +2639,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;
@@ -2627,7 +2653,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) {
@@ -2652,7 +2678,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;
@@ -2689,12 +2715,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;
@@ -2707,7 +2733,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);
@@ -2729,14 +2755,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;
@@ -2747,10 +2773,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,
@@ -2759,13 +2785,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;
@@ -2773,11 +2799,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;
}
@@ -2833,7 +2859,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;
@@ -2902,7 +2928,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
@@ -2944,7 +2970,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 58c18904e..62e4820cb 100644
--- a/hw/xfree86/common/xf86InPriv.h
+++ b/hw/xfree86/common/xf86InPriv.h
@@ -40,4 +40,7 @@ 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 3989570c2..02ff7c034 100644
--- a/hw/xfree86/common/xf86Init.c
+++ b/hw/xfree86/common/xf86Init.c
@@ -103,6 +103,8 @@
static void xf86PrintBanner(void);
static void xf86PrintMarkers(void);
+static void xf86PrintDefaultModulePath(void);
+static void xf86PrintDefaultLibraryPath(void);
static void xf86RunVtInit(void);
static Bool probe_devices_from_device_sections(DriverPtr drvp);
@@ -137,18 +139,6 @@ static int numFormats = 6;
#endif
static Bool formatsDone = FALSE;
-#ifdef USE_DEPRECATED_KEYBOARD_DRIVER
-static InputDriverRec XF86KEYBOARD = {
- 1,
- "keyboard",
- NULL,
- NULL,
- NULL,
- NULL,
- 0
-};
-#endif
-
static Bool
xf86CreateRootWindow(WindowPtr pWin)
{
@@ -636,10 +626,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);
@@ -1203,21 +1189,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.
@@ -1231,7 +1202,6 @@ InitInput(argc, argv)
IDevPtr pDev;
InputDriverPtr pDrv;
InputInfoPtr pInfo;
- static InputInfoPtr coreKeyboard = NULL, corePointer = NULL;
xf86Info.vtRequestsPending = FALSE;
xf86Info.inputPending = FALSE;
@@ -1239,19 +1209,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;
@@ -1273,80 +1231,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
@@ -1466,12 +1362,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
@@ -1707,6 +1597,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"))
{
@@ -1956,6 +1856,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");
@@ -2079,6 +1981,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;
diff --git a/hw/xfree86/common/xf86Io.c b/hw/xfree86/common/xf86Io.c
deleted file mode 100644
index 86ac74522..000000000
--- a/hw/xfree86/common/xf86Io.c
+++ /dev/null
@@ -1,470 +0,0 @@
-/*
- * 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 $ */
-
-#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);
-}
diff --git a/hw/xfree86/common/xf86Kbd.c b/hw/xfree86/common/xf86Kbd.c
deleted file mode 100644
index a86581c25..000000000
--- a/hw/xfree86/common/xf86Kbd.c
+++ /dev/null
@@ -1,394 +0,0 @@
-/*
- * 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 97a737db1..000000000
--- a/hw/xfree86/common/xf86KbdBSD.c
+++ /dev/null
@@ -1,1265 +0,0 @@
-/*
- * 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 74cb42d0f..000000000
--- a/hw/xfree86/common/xf86KbdLnx.c
+++ /dev/null
@@ -1,650 +0,0 @@
-/*
- * 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 82e3c720e..000000000
--- a/hw/xfree86/common/xf86KbdMach.c
+++ /dev/null
@@ -1,316 +0,0 @@
-/*
- *****************************************************************************
- * 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 5299badb3..000000000
--- a/hw/xfree86/common/xf86Keymap.h
+++ /dev/null
@@ -1,454 +0,0 @@
-
-/*
- * 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 7596fbea7..652428489 100644
--- a/hw/xfree86/common/xf86MiscExt.c
+++ b/hw/xfree86/common/xf86MiscExt.c
@@ -89,6 +89,7 @@ typedef struct {
int rate;
int delay;
int serverNumLock; /* obsolete */
+ pointer private;
} kbdParamsRec, *kbdParamsPtr;
/*
@@ -246,7 +247,6 @@ _X_EXPORT Bool
MiscExtSetMouseDevice(pointer mouse, char* device)
{
mseParamsPtr mse = mouse;
-
mse->device = device;
return TRUE;
@@ -255,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;
}
@@ -365,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;
}
@@ -463,15 +429,13 @@ MiscExtApply(pointer structure, MiscExtStructType mse_or_kbd)
if (!xf86MouseProtocolIDToName)
return MISC_RET_NOMODULE;
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 */
@@ -492,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
@@ -513,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)
@@ -586,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 cd57e9916..3cebac754 100644
--- a/hw/xfree86/common/xf86Mode.c
+++ b/hw/xfree86/common/xf86Mode.c
@@ -45,7 +45,7 @@
#include "globals.h"
#include "xf86.h"
#include "xf86Priv.h"
-#include "xf86DDC.h"
+#include "edid.h"
static void
printModeRejectMessage(int index, DisplayModePtr p, int status)
@@ -56,6 +56,8 @@ printModeRejectMessage(int index, DisplayModePtr p, int status)
type = "built-in ";
else if (p->type & M_T_DEFAULT)
type = "default ";
+ else if (p->type & M_T_DRIVER)
+ type = "driver ";
else
type = "";
@@ -366,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;
@@ -379,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;
@@ -398,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
*
@@ -443,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);
@@ -462,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;
@@ -609,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) {
@@ -662,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))
@@ -744,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
*
@@ -766,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)
@@ -802,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)))
@@ -815,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)))
@@ -845,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;
}
@@ -1043,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;
@@ -1200,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
*
@@ -1267,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",
@@ -1302,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.
*/
@@ -1478,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 ";
@@ -1507,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 ";
@@ -1624,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 */
@@ -1640,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);
@@ -1683,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)
@@ -1772,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;
@@ -1917,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;
@@ -2068,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);
@@ -2124,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)";
}
@@ -2139,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)
@@ -2166,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 cf404fb89..3c3247e40 100644
--- a/hw/xfree86/common/xf86Module.h
+++ b/hw/xfree86/common/xf86Module.h
@@ -85,7 +85,7 @@ typedef enum {
*/
#define ABI_ANSIC_VERSION SET_ABI_VERSION(0, 3)
#define ABI_VIDEODRV_VERSION SET_ABI_VERSION(1, 1)
-#define ABI_XINPUT_VERSION SET_ABI_VERSION(0, 6)
+#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/xf86Option.c b/hw/xfree86/common/xf86Option.c
index 0a4c11d8d..7afb63a4d 100644
--- a/hw/xfree86/common/xf86Option.c
+++ b/hw/xfree86/common/xf86Option.c
@@ -142,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/xf86Priv.h b/hw/xfree86/common/xf86Priv.h
index 37dad491b..35904fc0f 100644
--- a/hw/xfree86/common/xf86Priv.h
+++ b/hw/xfree86/common/xf86Priv.h
@@ -192,20 +192,6 @@ int xf86SetVerbosity(int verb);
int xf86SetLogVerbosity(int verb);
Bool xf86CallDriverProbe( struct _DriverRec * drv, Bool detect_only );
-/* 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
@@ -216,6 +202,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 67d4304c9..659e566e0 100644
--- a/hw/xfree86/common/xf86Privstr.h
+++ b/hw/xfree86/common/xf86Privstr.h
@@ -67,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;
@@ -125,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 */
@@ -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/xf86Versions.c b/hw/xfree86/common/xf86Versions.c
index e984e80c1..97a35590e 100644
--- a/hw/xfree86/common/xf86Versions.c
+++ b/hw/xfree86/common/xf86Versions.c
@@ -31,7 +31,6 @@
#include "xf86.h"
#include "xf86OSmouse.h"
-#include "xf86OSKbd.h"
static CARD32 registeredVersions[NUM_BUILTIN_IFS];
@@ -51,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/xf86Xinput.c b/hw/xfree86/common/xf86Xinput.c
index c56475b12..16e330d43 100644
--- a/hw/xfree86/common/xf86Xinput.c
+++ b/hw/xfree86/common/xf86Xinput.c
@@ -38,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)
@@ -63,6 +62,7 @@
#include "xf86Xinput.h"
#ifdef XINPUT
#include "XIstubs.h"
+#include "xf86Optrec.h"
#endif
#include "mipointer.h"
#include "xf86InPriv.h"
@@ -73,10 +73,6 @@
#include "dpmsproc.h"
#endif
-#ifdef XFreeXDGA
-#include "dgaproc.h"
-#endif
-
#include "exevents.h" /* AddInputDevice */
#include "exglobals.h"
@@ -92,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);
}
/***********************************************************************
@@ -229,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);
}
}
@@ -300,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);
}
}
@@ -366,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
@@ -591,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;
}
@@ -612,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;
}
/*
@@ -865,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
@@ -1345,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
@@ -1434,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;
@@ -1472,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);
}
}
@@ -1483,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
}
/*
@@ -1503,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 20bf0a9e1..fe65643ce 100644
--- a/hw/xfree86/common/xf86Xinput.h
+++ b/hw/xfree86/common/xf86Xinput.h
@@ -86,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. */
@@ -118,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,
@@ -133,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;
@@ -166,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,
@@ -188,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);
@@ -211,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/xf86str.h b/hw/xfree86/common/xf86str.h
index 1c78bd341..55f439fe4 100644
--- a/hw/xfree86/common/xf86str.h
+++ b/hw/xfree86/common/xf86str.h
@@ -223,6 +223,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 */
diff --git a/hw/xfree86/ddc/Makefile.am b/hw/xfree86/ddc/Makefile.am
index 7cfff4763..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)
+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 22deca687..11b5e26ed 100644
--- a/hw/xfree86/ddc/ddcProperty.c
+++ b/hw/xfree86/ddc/ddcProperty.c
@@ -1,159 +1,131 @@
-/* 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.
*/
#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"
#include "xf86DDC.h"
+
+
+
#define EDID1_ATOM_NAME "XFree86_DDC_EDID1_RAWDATA"
#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;
- }
+ if ((EDID1rawdata = xalloc(128*sizeof(CARD8)))==NULL)
+ return;
- EDID1Atom = MakeAtom(EDID1_ATOM_NAME, sizeof(EDID1_ATOM_NAME), TRUE);
-
-
- 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_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 a16055491..c58bb2fe1 100644
--- a/hw/xfree86/ddc/interpret_edid.c
+++ b/hw/xfree86/ddc/interpret_edid.c
@@ -31,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)
@@ -53,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:
diff --git a/hw/xfree86/ddc/xf86DDC.h b/hw/xfree86/ddc/xf86DDC.h
index fb1083606..77994715e 100644
--- a/hw/xfree86/ddc/xf86DDC.h
+++ b/hw/xfree86/ddc/xf86DDC.h
@@ -47,6 +47,9 @@ extern xf86vdifPtr xf86InterpretVdif(
CARD8 *c
);
+extern void
+xf86DDCMonitorSet(int scrnIndex, MonPtr Monitor, xf86MonPtr DDC);
+
extern Bool xf86SetDDCproperties(
ScrnInfoPtr pScreen,
xf86MonPtr DDC
@@ -56,6 +59,8 @@ extern void xf86print_vdif(
xf86vdifPtr v
);
+DisplayModePtr xf86DDCGetModes(int scrnIndex, xf86MonPtr DDC);
+
#endif
diff --git a/hw/xfree86/dixmods/extmod/Makefile.am b/hw/xfree86/dixmods/extmod/Makefile.am
index 229d4e592..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@
+AM_CFLAGS = @DIX_CFLAGS@ @XORG_CFLAGS@
INCLUDES = @XORG_INCS@ \
-I$(top_srcdir)/afb \
-I$(top_srcdir)/mfb \
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/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/Xorg.man.pre b/hw/xfree86/doc/man/Xorg.man.pre
index b7fa990bb..43f0518d2 100644
--- a/hw/xfree86/doc/man/Xorg.man.pre
+++ b/hw/xfree86/doc/man/Xorg.man.pre
@@ -426,6 +426,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 .
@@ -580,7 +586,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
diff --git a/hw/xfree86/doc/man/xorg.conf.man.pre b/hw/xfree86/doc/man/xorg.conf.man.pre
index abf31468a..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/
diff --git a/hw/xfree86/dri/Makefile.am b/hw/xfree86/dri/Makefile.am
index e711846b2..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 \
- \
- \
- \
- @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 8f604fb98..e9cf27c96 100644
--- a/hw/xfree86/dri/dri.c
+++ b/hw/xfree86/dri/dri.c
@@ -42,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"
@@ -67,6 +69,7 @@ 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(PANORAMIX)
extern Bool noPanoramiXExtension;
@@ -81,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
@@ -104,6 +109,7 @@ DRIDrvMsg(int scrnIndex, MessageType type, const char *format, ...)
va_end(ap);
}
+
Bool
DRIScreenInit(ScreenPtr pScreen, DRIInfoPtr pDRIInfo, int *pDRMFD)
{
@@ -571,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)
{
@@ -2090,3 +2116,71 @@ DRICreatePCIBusID(const struct pci_device * dev)
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 ea02f42d1..0d695344b 100644
--- a/hw/xfree86/dri/dri.h
+++ b/hw/xfree86/dri/dri.h
@@ -341,6 +341,8 @@ extern void DRIMoveBuffersHelper(ScreenPtr pScreen,
extern char *DRICreatePCIBusID(const struct pci_device *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 331de8287..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",
@@ -74,23 +77,17 @@ 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 {
- 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/dummylib/Makefile.am b/hw/xfree86/dummylib/Makefile.am
index d89ee59a8..6299a1ff7 100644
--- a/hw/xfree86/dummylib/Makefile.am
+++ b/hw/xfree86/dummylib/Makefile.am
@@ -6,7 +6,7 @@ noinst_LIBRARIES = libdummy-nonserver.a
INCLUDES = $(XORG_INCS)
-AM_CFLAGS = $(XORG_CFLAGS)
+AM_CFLAGS = $(DIX_CFLAGS) $(XORG_CFLAGS)
if NEED_STRLCAT
STRL_SRCS = $(top_srcdir)/os/strlcat.c $(top_srcdir)/os/strlcpy.c
diff --git a/hw/xfree86/exa/Makefile.am b/hw/xfree86/exa/Makefile.am
index 31682c425..9eb2e1797 100644
--- a/hw/xfree86/exa/Makefile.am
+++ b/hw/xfree86/exa/Makefile.am
@@ -7,7 +7,7 @@ INCLUDES = \
-I$(srcdir)/../../../exa \
-I$(srcdir)/../../../miext/cw
-AM_CFLAGS = $(XORG_CFLAGS)
+AM_CFLAGS = $(DIX_CFLAGS) $(XORG_CFLAGS)
libexa_la_SOURCES = \
examodule.c
diff --git a/hw/xfree86/fbdevhw/Makefile.am b/hw/xfree86/fbdevhw/Makefile.am
index 10de50e83..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)
+AM_CFLAGS = $(DIX_CFLAGS) $(XORG_CFLAGS)
sdk_HEADERS = fbdevhw.h
diff --git a/hw/xfree86/i2c/Makefile.am b/hw/xfree86/i2c/Makefile.am
index cbf4f6571..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)
+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/int10/Makefile.am b/hw/xfree86/int10/Makefile.am
index 4656d6869..78bef2515 100644
--- a/hw/xfree86/int10/Makefile.am
+++ b/hw/xfree86/int10/Makefile.am
@@ -12,8 +12,12 @@ COMMON_SOURCES = \
xf86int10.c \
xf86int10module.c
+if I386_VIDEO
+I386_VIDEO_CFLAGS = -D_PC
+endif
+
if INT10_VM86
-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)
INCLUDES = $(XORG_INCS)
libint10_la_SOURCES = \
$(COMMON_SOURCES) \
@@ -22,7 +26,8 @@ libint10_la_SOURCES = \
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 = \
$(COMMON_SOURCES) \
@@ -32,7 +37,7 @@ libint10_la_SOURCES = \
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/helper_exec.c b/hw/xfree86/int10/helper_exec.c
index c87562b85..a8e9e3c62 100644
--- a/hw/xfree86/int10/helper_exec.c
+++ b/hw/xfree86/int10/helper_exec.c
@@ -470,13 +470,13 @@ Mem_wl(CARD32 addr, CARD32 val)
static CARD32 PciCfg1Addr = 0;
-#define TAG(Cfg1Addr) (Cfg1Addr & 0xffff00)
#define OFFSET(Cfg1Addr) (Cfg1Addr & 0xff)
-#define _BUS(x) PCI_BUS_FROM_TAG( TAG(PciCfg1Addr) )
-#define _DEV(x) PCI_DEV_FROM_TAG( TAG(PciCfg1Addr) )
-#define _FUNC(x) PCI_FUNC_FROM_TAG( TAG(PciCfg1Addr) )
-#define GET_DEVICE(_addr) \
- pci_device_find_by_slot(0, _BUS(_addr), _DEV(_addr), _FUNC(_addr))
+#define _DOM(x) PCI_DOM_FROM_TAG(x)
+#define _BUS(x) PCI_BUS_NO_DOMAIN(PCI_BUS_FROM_TAG(x))
+#define _DEV(x) PCI_DEV_FROM_TAG(x)
+#define _FUNC(x) PCI_FUNC_FROM_TAG(x)
+#define GET_DEVICE(_tag) \
+ pci_device_find_by_slot(_DOM(_tag), _BUS(_tag), _DEV(_tag), _FUNC(_tag))
static int
pciCfg1in(CARD16 addr, CARD32 *val)
@@ -486,7 +486,7 @@ pciCfg1in(CARD16 addr, CARD32 *val)
return 1;
}
if (addr == 0xCFC) {
- struct pci_device *dev = GET_DEVICE(PciCfg1Addr);
+ struct pci_device *dev = GET_DEVICE(Int10Current->Tag);
pci_device_cfg_read_u32(dev, val, OFFSET(PciCfg1Addr));
return 1;
@@ -502,7 +502,7 @@ pciCfg1out(CARD16 addr, CARD32 val)
return 1;
}
if (addr == 0xCFC) {
- struct pci_device *dev = GET_DEVICE(PciCfg1Addr);
+ struct pci_device *dev = GET_DEVICE(Int10Current->Tag);
pci_device_cfg_write_u32(dev, & val, OFFSET(PciCfg1Addr));
return 1;
@@ -522,7 +522,7 @@ pciCfg1inw(CARD16 addr, CARD16 *val)
}
if ((addr >= 0xCFC) && (addr <= 0xCFF)) {
const unsigned offset = addr - 0xCFC;
- struct pci_device *dev = GET_DEVICE(PciCfg1Addr);
+ struct pci_device *dev = GET_DEVICE(Int10Current->Tag);
pci_device_cfg_read_u16(dev, val, OFFSET(PciCfg1Addr) + offset);
return 1;
@@ -543,7 +543,7 @@ pciCfg1outw(CARD16 addr, CARD16 val)
}
if ((addr >= 0xCFC) && (addr <= 0xCFF)) {
const unsigned offset = addr - 0xCFC;
- struct pci_device *dev = GET_DEVICE(PciCfg1Addr);
+ struct pci_device *dev = GET_DEVICE(Int10Current->Tag);
pci_device_cfg_write_u16(dev, & val, OFFSET(PciCfg1Addr) + offset);
return 1;
@@ -563,7 +563,7 @@ pciCfg1inb(CARD16 addr, CARD8 *val)
}
if ((addr >= 0xCFC) && (addr <= 0xCFF)) {
const unsigned offset = addr - 0xCFC;
- struct pci_device *dev = GET_DEVICE(PciCfg1Addr);
+ struct pci_device *dev = GET_DEVICE(Int10Current->Tag);
pci_device_cfg_read_u8(dev, val, OFFSET(PciCfg1Addr) + offset);
return 1;
@@ -584,7 +584,7 @@ pciCfg1outb(CARD16 addr, CARD8 val)
}
if ((addr >= 0xCFC) && (addr <= 0xCFF)) {
const unsigned offset = addr - 0xCFC;
- struct pci_device *dev = GET_DEVICE(PciCfg1Addr);
+ struct pci_device *dev = GET_DEVICE(Int10Current->Tag);
pci_device_cfg_write_u8(dev, & val, OFFSET(PciCfg1Addr) + offset);
return 1;
diff --git a/hw/xfree86/loader/Makefile.am b/hw/xfree86/loader/Makefile.am
index 030672389..206600214 100644
--- a/hw/xfree86/loader/Makefile.am
+++ b/hw/xfree86/loader/Makefile.am
@@ -5,7 +5,7 @@ INCLUDES = $(XORG_INCS) -I$(srcdir)/../parser -I$(srcdir)/../dixmods/extmod \
-I$(srcdir)/../ddc -I$(srcdir)/../i2c
#AM_LDFLAGS = -r
-AM_CFLAGS = -DIN_LOADER $(XORG_CFLAGS)
+AM_CFLAGS = -DIN_LOADER $(DIX_CFLAGS) $(XORG_CFLAGS)
if XORG_LOADER_SPARC
SPARC_SOURCES = SparcMulDiv.S
diff --git a/hw/xfree86/loader/misym.c b/hw/xfree86/loader/misym.c
index 3f959faa2..46d6a024d 100644
--- a/hw/xfree86/loader/misym.c
+++ b/hw/xfree86/loader/misym.c
@@ -191,8 +191,6 @@ _X_HIDDEN void *miLookupTab[] = {
SYMFUNC(miSegregateChildren)
SYMFUNC(miHookInitVisuals)
SYMFUNC(miPointerAbsoluteCursor)
- SYMFUNC(miPointerGetMotionEvents)
- SYMFUNC(miPointerGetMotionBufferSize)
SYMFUNC(miOverlayCopyUnderlay)
SYMFUNC(miOverlaySetTransFunction)
SYMFUNC(miOverlayCollectUnderlayRegions)
diff --git a/hw/xfree86/loader/xf86sym.c b/hw/xfree86/loader/xf86sym.c
index 1c3384d9d..5e7a288b6 100644
--- a/hw/xfree86/loader/xf86sym.c
+++ b/hw/xfree86/loader/xf86sym.c
@@ -68,7 +68,6 @@
# include "xf86Xinput.h"
#endif
#include "xf86OSmouse.h"
-#include "xf86OSKbd.h"
#include "xf86xv.h"
#include "xf86xvmc.h"
#include "xf86cmap.h"
@@ -277,7 +276,6 @@ _X_HIDDEN void *xfree86LookupTab[] = {
SYMFUNC(xf86SerialModemClearBits)
SYMFUNC(xf86LoadKernelModule)
SYMFUNC(xf86OSMouseInit)
- SYMFUNC(xf86OSKbdPreInit)
SYMFUNC(xf86AgpGARTSupported)
SYMFUNC(xf86GetAGPInfo)
SYMFUNC(xf86AcquireGART)
@@ -287,10 +285,8 @@ _X_HIDDEN void *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)
@@ -489,7 +485,7 @@ _X_HIDDEN void *xfree86LookupTab[] = {
SYMFUNC(xf86AddModuleInfo)
SYMFUNC(xf86DeleteModuleInfo)
-#if defined(__sparc__) && !defined(__OpenBSD__)
+#if (defined(__sparc__) || defined(__sparc)) && !defined(__OpenBSD__)
/* xf86sbusBus.c */
SYMFUNC(xf86MatchSbusInstances)
SYMFUNC(xf86GetSbusInfoForEntity)
@@ -682,22 +678,15 @@ _X_HIDDEN void *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)
diff --git a/hw/xfree86/os-support/Makefile.am b/hw/xfree86/os-support/Makefile.am
index e64703a53..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 hurd
+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/bsd/Makefile.am b/hw/xfree86/os-support/bsd/Makefile.am
index 20885e866..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)
+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/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_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_io.c b/hw/xfree86/os-support/bsd/bsd_io.c
deleted file mode 100644
index b433d7ba3..000000000
--- a/hw/xfree86/os-support/bsd/bsd_io.c
+++ /dev/null
@@ -1,293 +0,0 @@
-/*
- * 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_kbd.c b/hw/xfree86/os-support/bsd/bsd_kbd.c
deleted file mode 100644
index 65d577eb8..000000000
--- a/hw/xfree86/os-support/bsd/bsd_kbd.c
+++ /dev/null
@@ -1,572 +0,0 @@
-
-/*
- * 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 b2ae179e1..000000000
--- a/hw/xfree86/os-support/bsd/bsd_kbd.h
+++ /dev/null
@@ -1,4 +0,0 @@
-
-extern void KbdGetMapping(InputInfoPtr pInfo, KeySymsPtr pKeySyms,
- CARD8 *pModMap);
-
diff --git a/hw/xfree86/os-support/bus/Makefile.am b/hw/xfree86/os-support/bus/Makefile.am
index c56f3d717..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)
+AM_CFLAGS = $(XORG_CFLAGS) $(DIX_CFLAGS)
EXTRA_DIST = $(sdk_HEADERS)
diff --git a/hw/xfree86/os-support/bus/Pci.h b/hw/xfree86/os-support/bus/Pci.h
index b9a9d8f20..8c12e5674 100644
--- a/hw/xfree86/os-support/bus/Pci.h
+++ b/hw/xfree86/os-support/bus/Pci.h
@@ -119,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 */
@@ -214,7 +214,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/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/linuxPci.c b/hw/xfree86/os-support/bus/linuxPci.c
index de75fc486..5afcbdb51 100644
--- a/hw/xfree86/os-support/bus/linuxPci.c
+++ b/hw/xfree86/os-support/bus/linuxPci.c
@@ -54,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
@@ -102,6 +103,8 @@ static const struct pci_id_match match_host_bridge = {
};
+static Bool domain_support = FALSE;
+
void
linuxPciInit(void)
{
@@ -112,6 +115,9 @@ linuxPciInit(void)
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;
}
@@ -135,8 +141,10 @@ linuxPciOpenFile(struct pci_device *dev, Bool write)
}
if (fd == -1 || (write && (!is_write)) || (last_dev != dev)) {
- if (fd != -1)
+ if (fd != -1) {
close(fd);
+ fd = -1;
+ }
if (is26) {
sprintf(file,"/sys/bus/pci/devices/%04u:%02x:%02x.%01x/config",
@@ -380,7 +388,7 @@ xf86GetPciDomain(PCITAG Tag)
return 1; /* Domain 0 is reserved */
if ((result = PCI_DOM_FROM_TAG(Tag)) != 0)
- return result + 1;
+ return result;
if ((fd = linuxPciOpenFile(dev, FALSE)) < 0)
return 0;
@@ -461,7 +469,6 @@ linuxMapPci(int ScreenNum, int Flags, struct pci_device *dev,
#define MAX_DOMAINS 257
static pointer DomainMmappedIO[MAX_DOMAINS];
-static pointer DomainMmappedMem[MAX_DOMAINS];
static int
linuxOpenLegacy(struct pci_device *dev, char *name)
@@ -511,7 +518,8 @@ xf86MapDomainMemory(int ScreenNum, int Flags, PCITAG Tag,
{
int domain = xf86GetPciDomain(Tag);
const struct pci_device *dev = xf86GetPciHostConfigFromTag(Tag);
- int fd;
+ int fd = -1;
+ pointer addr;
/*
* We use /proc/bus/pci on non-legacy addresses or if the Linux sysfs
@@ -520,20 +528,16 @@ xf86MapDomainMemory(int ScreenNum, int Flags, PCITAG Tag,
if ((Base > 1024*1024) || ((fd = linuxOpenLegacy(dev, "legacy_mem")) < 0))
return linuxMapPci(ScreenNum, Flags, dev, Base, Size,
PCIIOC_MMAP_IS_MEM);
-
- /* If we haven't already mapped this legacy space, try to. */
- if (!DomainMmappedMem[domain]) {
- DomainMmappedMem[domain] = mmap(NULL, 1024*1024, PROT_READ|PROT_WRITE,
- MAP_SHARED, fd, 0);
- if (DomainMmappedMem[domain] == MAP_FAILED) {
- close(fd);
- perror("mmap failure");
- FatalError("xf86MapDomainMem(): mmap() failure\n");
- }
+ else
+ addr = mmap(NULL, Size, PROT_READ|PROT_WRITE, MAP_SHARED, fd, Base);
+
+ 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;
}
/**
diff --git a/hw/xfree86/os-support/drm/Makefile.am b/hw/xfree86/os-support/drm/Makefile.am
deleted file mode 100644
index 53893251a..000000000
--- a/hw/xfree86/os-support/drm/Makefile.am
+++ /dev/null
@@ -1,19 +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@
-
-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 214e58ba7..000000000
--- a/hw/xfree86/os-support/drm/xf86drm.c
+++ /dev/null
@@ -1,2307 +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.
- */
-
-
-#ifdef HAVE_XORG_CONFIG_H
-#include <xorg-config.h>
-#endif
-
-#include "xf86.h"
-#include "xf86_OSproc.h"
-#define _DRM_MALLOC xalloc
-#define _DRM_FREE xfree
-
-#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;
-
- va_start(ap, format);
- xf86VDrvMsgVerb(-1, X_NONE, DRM_MSG_VERBOSITY, format, ap);
- 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();
- uid_t user = DRM_DEV_UID;
- gid_t group = DRM_DEV_GID;
-
- sprintf(buf, DRM_DEV_NAME, DRM_DIR_NAME, minor);
- drmMsg("drmOpenDevice: node name is %s\n", buf);
-
- devmode = xf86ConfigDRI.mode ? xf86ConfigDRI.mode : DRM_DEV_MODE;
- devmode &= ~(S_IXUSR|S_IXGRP|S_IXOTH);
- group = (xf86ConfigDRI.group >= 0) ? xf86ConfigDRI.group : DRM_DEV_GID;
-
- 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);
- }
- chown(buf, user, group);
- chmod(buf, devmode);
-
- 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);
- chown(buf, user, group);
- chmod(buf, devmode);
- }
- 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()) {
- /* try to load the kernel module now */
- if (!xf86LoadKernelModule(name)) {
- ErrorF("[drm] failed to load kernel module \"%s\"\n",
- name);
- return -1;
- }
- }
-
- /*
- * 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)
-{
- if (!drmAvailable() && name != NULL) {
- /* try to load the kernel */
- if (!xf86LoadKernelModule(name)) {
- ErrorF("[drm] failed to load kernel module \"%s\"\n",
- name);
- return -1;
- }
- }
-
- 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;
-}
-
-int drmUpdateDrawableInfo(int fd, drm_drawable_t handle,
- drm_drawable_info_type_t type, unsigned int num,
- void *data)
-{
- drm_update_draw_t update;
-
- update.handle = handle;
- update.type = type;
- update.num = num;
- update.data = (unsigned long long)(unsigned long)data;
-
- if (ioctl(fd, DRM_IOCTL_UPDATE_DRAW, &update)) 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;
-}
-
-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);
-}
diff --git a/hw/xfree86/os-support/drm/xf86drmHash.c b/hw/xfree86/os-support/drm/xf86drmHash.c
deleted file mode 100644
index ba81a6e8e..000000000
--- a/hw/xfree86/os-support/drm/xf86drmHash.c
+++ /dev/null
@@ -1,432 +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>
- *
- *
- * 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"
-# include "xf86.h"
-#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 cd63aea4e..000000000
--- a/hw/xfree86/os-support/drm/xf86drmRandom.c
+++ /dev/null
@@ -1,216 +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>
- *
- *
- * 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"
-# include "xf86.h"
-#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 36d8fd50e..000000000
--- a/hw/xfree86/os-support/drm/xf86drmSL.c
+++ /dev/null
@@ -1,488 +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>
- *
- *
- * 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"
-# include "xf86.h"
-#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
index a05087619..731ff083d 100644
--- a/hw/xfree86/os-support/hurd/Makefile.am
+++ b/hw/xfree86/os-support/hurd/Makefile.am
@@ -1,6 +1,6 @@
noinst_LTLIBRARIES = libhurd.la
-libhurd_la_SOURCES = hurd_init.c hurd_mmap.c \
+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 \
@@ -12,6 +12,6 @@ libhurd_la_SOURCES = hurd_init.c hurd_mmap.c \
$(srcdir)/../shared/kmod_noop.c \
$(srcdir)/../shared/agp_noop.c
-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/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_mouse.c b/hw/xfree86/os-support/hurd/hurd_mouse.c
index e7a2da84d..ccc08a248 100644
--- a/hw/xfree86/os-support/hurd/hurd_mouse.c
+++ b/hw/xfree86/os-support/hurd/hurd_mouse.c
@@ -77,85 +77,6 @@ typedef struct {
#define NUMEVENTS 64
/*
- * OsMouseProc --
- * Handle the initialization, etc. of a mouse
- */
-static int
-OsMouseProc(DeviceIntPtr pPointer, int what)
-{
- InputInfoPtr pInfo;
- MouseDevPtr pMse;
- unsigned char map[MSE_MAXBUTTONS + 1];
- int nbuttons;
-
- pInfo = pPointer->public.devicePrivate;
- pMse = pInfo->private;
- pMse->device = pPointer;
-
- switch (what) {
- case DEVICE_INIT:
- pPointer->public.on = FALSE;
-
- for (nbuttons = 0; nbuttons < MSE_MAXBUTTONS; ++nbuttons)
- map[nbuttons + 1] = nbuttons + 1;
-
- InitPointerDeviceStruct((DevicePtr)pPointer,
- map,
- min(pMse->buttons, MSE_MAXBUTTONS),
- miPointerGetMotionEvents,
- pMse->Ctrl,
- miPointerGetMotionBufferSize());
-
- /* X valuator */
- xf86InitValuatorAxisStruct(pPointer, 0, 0, -1, 1, 0, 1);
- xf86InitValuatorDefaults(pPointer, 0);
- /* Y valuator */
- xf86InitValuatorAxisStruct(pPointer, 1, 0, -1, 1, 0, 1);
- xf86InitValuatorDefaults(pPointer, 1);
- xf86MotionHistoryAllocate(pInfo);
- break;
-
- case DEVICE_ON:
- pInfo->fd = xf86OpenSerial(pInfo->options);
- if (pInfo->fd == -1)
- xf86Msg(X_WARNING, "%s: cannot open input device\n", pInfo->name);
- else {
- pMse->buffer = XisbNew(pInfo->fd,
- NUMEVENTS * sizeof(kd_event));
- if (!pMse->buffer) {
- xfree(pMse);
- xf86CloseSerial(pInfo->fd);
- pInfo->fd = -1;
- } else {
- xf86FlushInput(pInfo->fd);
- AddEnabledDevice(pInfo->fd);
- }
- }
- pMse->lastButtons = 0;
- pMse->lastMappedButtons = 0;
- pMse->emulateState = 0;
- pPointer->public.on = TRUE;
- break;
-
- case DEVICE_OFF:
- case DEVICE_CLOSE:
- if (pInfo->fd != -1) {
- RemoveEnabledDevice(pInfo->fd);
- if (pMse->buffer) {
- XisbFree(pMse->buffer);
- pMse->buffer = NULL;
- }
- xf86CloseSerial(pInfo->fd);
- pInfo->fd = -1;
- }
- pPointer->public.on = FALSE;
- usleep(300000);
- break;
- }
- return Success;
-}
-
-/*
* OsMouseReadInput --
* Get some events from our queue. Process all outstanding events now.
*/
@@ -240,7 +161,6 @@ OsMousePreInit(InputInfoPtr pInfo, const char *protocol, int flags)
pMse->CommonOptions(pInfo);
/* Setup the local procs. */
- pInfo->device_control = OsMouseProc;
pInfo->read_input = OsMouseReadInput;
pInfo->flags |= XI86_CONFIGURED;
diff --git a/hw/xfree86/os-support/linux/Makefile.am b/hw/xfree86/os-support/linux/Makefile.am
index 6fdc1bc42..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)
+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/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 eca76dbf3..024e6ef09 100644
--- a/hw/xfree86/os-support/linux/lnx_acpi.c
+++ b/hw/xfree86/os-support/linux/lnx_acpi.c
@@ -78,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
@@ -163,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;
@@ -178,7 +178,7 @@ 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_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_io.c b/hw/xfree86/os-support/linux/lnx_io.c
deleted file mode 100644
index 836aaa15b..000000000
--- a/hw/xfree86/os-support/linux/lnx_io.c
+++ /dev/null
@@ -1,246 +0,0 @@
-/*
- * 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);
-}
-
-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.LNX_KBD_PERIOD_NAME = -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.LNX_KBD_PERIOD_NAME = 0;
- else
- kbdrep_s.LNX_KBD_PERIOD_NAME = 10000 / rate; /* convert cps to msec */
- if (kbdrep_s.LNX_KBD_PERIOD_NAME < 1)
- kbdrep_s.LNX_KBD_PERIOD_NAME = 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 */
-}
-
-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_kbd.c b/hw/xfree86/os-support/linux/lnx_kbd.c
deleted file mode 100644
index a4890d2df..000000000
--- a/hw/xfree86/os-support/linux/lnx_kbd.c
+++ /dev/null
@@ -1,530 +0,0 @@
-
-/*
- * 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);
-}
-
-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.LNX_KBD_PERIOD_NAME = -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.LNX_KBD_PERIOD_NAME = 0;
- else
- kbdrep_s.LNX_KBD_PERIOD_NAME = 10000 / rate; /* convert cps to msec */
- if (kbdrep_s.LNX_KBD_PERIOD_NAME < 1)
- kbdrep_s.LNX_KBD_PERIOD_NAME = 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 */
-}
-
-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 b2ae179e1..000000000
--- a/hw/xfree86/os-support/linux/lnx_kbd.h
+++ /dev/null
@@ -1,4 +0,0 @@
-
-extern void KbdGetMapping(InputInfoPtr pInfo, KeySymsPtr pKeySyms,
- CARD8 *pModMap);
-
diff --git a/hw/xfree86/os-support/linux/lnx_pci.c b/hw/xfree86/os-support/linux/lnx_pci.c
index 7d41bf3df..8415aa01c 100644
--- a/hw/xfree86/os-support/linux/lnx_pci.c
+++ b/hw/xfree86/os-support/linux/lnx_pci.c
@@ -3,7 +3,9 @@
#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"
@@ -11,6 +13,7 @@
#define XF86_OS_PRIVS
#include "xf86_OSproc.h"
#include "xf86Pci.h"
+#include "Pci.h"
#ifdef __sparc__
#define PCIADDR_TYPE long long
@@ -25,8 +28,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;
@@ -38,10 +43,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;
@@ -70,9 +118,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);
@@ -100,11 +150,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) {
@@ -114,10 +163,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 == PCI_MAKE_TAG(PCI_MAKE_BUS(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)) {
@@ -134,14 +181,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) {
@@ -151,9 +198,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 == PCI_MAKE_TAG(PCI_MAKE_BUS(device->domain, device->bus),
+ device->dev, device->fn)) {
/* return the offset for the index requested */
*bases = device->offset[index];
return TRUE;
@@ -162,6 +208,7 @@ 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
@@ -179,8 +226,8 @@ xf86GetOSOffsetFromPCI(PCITAG tag, int space, unsigned long base)
}
for (device = xf86OSLinuxPCIDevs; device; device = device->next) {
- dev = pci_device_find_by_slot(0, device->bus, (device->devfn >> 3),
- (device->devfn & 0x7));
+ dev = pci_device_find_by_slot(device->domain, device->bus,
+ device->dev, device->fn);
if (dev != NULL) {
/* ok now look through all the BAR values of this device */
for (ndx=0; ndx<7; ndx++) {
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_io.c b/hw/xfree86/os-support/lynxos/lynx_io.c
deleted file mode 100644
index 818104634..000000000
--- a/hw/xfree86/os-support/lynxos/lynx_io.c
+++ /dev/null
@@ -1,165 +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.
- *
- */
-
-
-#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/misc/Makefile.am b/hw/xfree86/os-support/misc/Makefile.am
index f546e1a92..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)
+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/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/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_io.c b/hw/xfree86/os-support/sco/sco_io.c
deleted file mode 100644
index eafc14cfb..000000000
--- a/hw/xfree86/os-support/sco/sco_io.c
+++ /dev/null
@@ -1,268 +0,0 @@
-/*
- * 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/shared/at_scancode.c b/hw/xfree86/os-support/shared/at_scancode.c
deleted file mode 100644
index 10d3da2ba..000000000
--- a/hw/xfree86/os-support/shared/at_scancode.c
+++ /dev/null
@@ -1,131 +0,0 @@
-/*
- * 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/kbd.c b/hw/xfree86/os-support/shared/kbd.c
deleted file mode 100644
index dd6d77d82..000000000
--- a/hw/xfree86/os-support/shared/kbd.c
+++ /dev/null
@@ -1,38 +0,0 @@
-/*
- * 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/std_kbdEv.c b/hw/xfree86/os-support/shared/std_kbdEv.c
deleted file mode 100644
index f56a5fd05..000000000
--- a/hw/xfree86/os-support/shared/std_kbdEv.c
+++ /dev/null
@@ -1,49 +0,0 @@
-/*
- * 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 d7d75191e..000000000
--- a/hw/xfree86/os-support/shared/sysv_kbd.c
+++ /dev/null
@@ -1,105 +0,0 @@
-/*
- * 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/solaris/Makefile.am b/hw/xfree86/os-support/solaris/Makefile.am
index 6b29b3080..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)
+AM_CFLAGS = -DUSESTDRES -DHAVE_SYSV_IPC $(XORG_CFLAGS) $(DIX_CFLAGS)
INCLUDES = $(XORG_INCS)
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_init.c b/hw/xfree86/os-support/solaris/sun_init.c
index 691cb3f9e..08d35c59c 100644
--- a/hw/xfree86/os-support/solaris/sun_init.c
+++ b/hw/xfree86/os-support/solaris/sun_init.c
@@ -291,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
@@ -357,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
@@ -381,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 3d8292e72..000000000
--- a/hw/xfree86/os-support/solaris/sun_io.c
+++ /dev/null
@@ -1,159 +0,0 @@
-/* $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 2cb1d13a8..000000000
--- a/hw/xfree86/os-support/solaris/sun_kbd.c
+++ /dev/null
@@ -1,660 +0,0 @@
-/*
- * 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.
- */
-
-#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 df8b6fac5..000000000
--- a/hw/xfree86/os-support/solaris/sun_kbdEv.c
+++ /dev/null
@@ -1,854 +0,0 @@
-/*
- * 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. */
-
-#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/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_io.c b/hw/xfree86/os-support/sysv/sysv_io.c
deleted file mode 100644
index d6c8ca037..000000000
--- a/hw/xfree86/os-support/sysv/sysv_io.c
+++ /dev/null
@@ -1,77 +0,0 @@
-/*
- * 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 581ed58e8..e62010515 100644
--- a/hw/xfree86/os-support/sysv/sysv_mouse.c
+++ b/hw/xfree86/os-support/sysv/sysv_mouse.c
@@ -11,7 +11,6 @@
#include "xf86.h"
#include "xf86Xinput.h"
#include "xf86OSmouse.h"
-#include "xqueue.h"
static int
SupportedInterfaces(void)
@@ -22,7 +21,6 @@ SupportedInterfaces(void)
#ifndef ISC
static const char *internalNames[] = {
- "Xqueue",
NULL
};
@@ -56,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/xqueue.c b/hw/xfree86/os-support/sysv/xqueue.c
deleted file mode 100644
index f0032111f..000000000
--- a/hw/xfree86/os-support/sysv/xqueue.c
+++ /dev/null
@@ -1,536 +0,0 @@
-/*
- * 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 4cb23d40e..000000000
--- a/hw/xfree86/os-support/usl/usl_io.c
+++ /dev/null
@@ -1,171 +0,0 @@
-/*
- * 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_kbd.c b/hw/xfree86/os-support/usl/usl_kbd.c
deleted file mode 100644
index d6e6af212..000000000
--- a/hw/xfree86/os-support/usl/usl_kbd.c
+++ /dev/null
@@ -1,455 +0,0 @@
-/*
- * 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 15a0ac5ac..aa4600f79 100644
--- a/hw/xfree86/os-support/usl/usl_mouse.c
+++ b/hw/xfree86/os-support/usl/usl_mouse.c
@@ -33,7 +33,6 @@
#include "xf86Priv.h"
#include "xf86_OSlib.h"
#include "mipointer.h"
-#include "usl_xqueue.h"
static int
SupportedInterfaces(void)
@@ -42,7 +41,6 @@ SupportedInterfaces(void)
}
static const char *internalNames[] = {
- "Xqueue",
NULL
};
@@ -55,7 +53,7 @@ BuiltinNames(void)
static const char *
DefaultProtocol (void)
{
- return "Xqueue";
+ return "OSMouse";
}
static Bool
@@ -121,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;
@@ -155,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 4ab722ca3..000000000
--- a/hw/xfree86/os-support/xf86OSKbd.h
+++ /dev/null
@@ -1,132 +0,0 @@
-/*
- * 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/xf86_OSlib.h b/hw/xfree86/os-support/xf86_OSlib.h
index e04854729..97f872301 100644
--- a/hw/xfree86/os-support/xf86_OSlib.h
+++ b/hw/xfree86/os-support/xf86_OSlib.h
@@ -235,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 89a33013f..1bbbf5656 100644
--- a/hw/xfree86/os-support/xf86_OSproc.h
+++ b/hw/xfree86/os-support/xf86_OSproc.h
@@ -135,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 */
@@ -154,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];
@@ -178,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 */
@@ -224,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/xf86drm.h b/hw/xfree86/os-support/xf86drm.h
deleted file mode 100644
index 107670672..000000000
--- a/hw/xfree86/os-support/xf86drm.h
+++ /dev/null
@@ -1,640 +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.
- *
- */
-
-
-#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 drmUpdateDrawableInfo(int fd, drm_drawable_t handle,
- drm_drawable_info_type_t type,
- unsigned int num, void *data);
-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 8ac6ee429..000000000
--- a/hw/xfree86/os-support/xf86drmCompat.h
+++ /dev/null
@@ -1,258 +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>
- *
- *
- */
-
-#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/Input.c b/hw/xfree86/parser/Input.c
index 3e2186a9d..3d9801968 100644
--- a/hw/xfree86/parser/Input.c
+++ b/hw/xfree86/parser/Input.c
@@ -102,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 9749a1a21..000000000
--- a/hw/xfree86/parser/Keyboard.c
+++ /dev/null
@@ -1,308 +0,0 @@
-/*
- *
- * Copyright (c) 1997 Metro Link Incorporated
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the "Software"),
- * to deal in the Software without restriction, including without limitation
- * the rights to use, copy, modify, merge, publish, distribute, sublicense,
- * and/or sell copies of the Software, and to permit persons to whom the
- * Software is furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in
- * all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
- * THE X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
- * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF
- * OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
- * SOFTWARE.
- *
- * Except as contained in this notice, the name of the Metro Link shall not be
- * used in advertising or otherwise to promote the sale, use or other dealings
- * in this Software without prior written authorization from Metro Link.
- *
- */
-/*
- * 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/Makefile.am b/hw/xfree86/parser/Makefile.am
index 46ef79060..1c1ba3f13 100644
--- a/hw/xfree86/parser/Makefile.am
+++ b/hw/xfree86/parser/Makefile.am
@@ -12,7 +12,6 @@ libxf86config_a_SOURCES = \
Files.c \
Flags.c \
Input.c \
- Keyboard.c \
Layout.c \
Module.c \
Video.c \
@@ -26,7 +25,7 @@ libxf86config_a_SOURCES = \
DRI.c \
Extensions.c
-AM_CFLAGS = $(XORG_CFLAGS)
+AM_CFLAGS = $(DIX_CFLAGS) $(XORG_CFLAGS)
EXTRA_DIST = \
Configint.h \
diff --git a/hw/xfree86/parser/configProcs.h b/hw/xfree86/parser/configProcs.h
index 832437cd2..0b989054b 100644
--- a/hw/xfree86/parser/configProcs.h
+++ b/hw/xfree86/parser/configProcs.h
@@ -45,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/read.c b/hw/xfree86/parser/read.c
index 598a12666..b6b3bc377 100644
--- a/hw/xfree86/parser/read.c
+++ b/hw/xfree86/parser/read.c
@@ -112,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/rac/Makefile.am b/hw/xfree86/rac/Makefile.am
index 2d8d87975..b25068271 100644
--- a/hw/xfree86/rac/Makefile.am
+++ b/hw/xfree86/rac/Makefile.am
@@ -5,4 +5,4 @@ sdk_HEADERS = xf86RAC.h
INCLUDES = $(XORG_INCS)
-AM_CFLAGS = $(XORG_CFLAGS)
+AM_CFLAGS = $(DIX_CFLAGS) $(XORG_CFLAGS)
diff --git a/hw/xfree86/ramdac/Makefile.am b/hw/xfree86/ramdac/Makefile.am
index c9afdad60..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)
+ $(DIX_CFLAGS) $(XORG_CFLAGS)
INCLUDES = $(XORG_INCS)
xf86BitOrder.c:
diff --git a/hw/xfree86/scanpci/pci.ids b/hw/xfree86/scanpci/pci.ids
index c6f565370..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 Tue 2006-10-03 01:05:01
+# Daily snapshot on Wed 2006-12-06 02:05:02
#
# Vendors, devices and subsystems. Please keep sorted.
@@ -3012,20 +3012,22 @@
2200 QLA2200 64-bit Fibre Channel Adapter
1077 0002 QLA2200
2300 QLA2300 64-bit Fibre Channel Adapter
- 2312 QLA2312 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 QLA2322 Fibre Channel Adapter
- 2422 QLA2422 Fibre Channel Adapter
+ 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 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
+ 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
@@ -10565,7 +10567,9 @@
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
@@ -10583,6 +10587,10 @@
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
@@ -10673,19 +10681,30 @@
108c 82573E Gigabit Ethernet Controller (Copper)
108e 82573E KCS (Active Management)
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
@@ -10699,6 +10718,11 @@
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
@@ -10946,6 +10970,9 @@
1a31 82845 845 (Brookdale) Chipset AGP Bridge
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
@@ -10998,6 +11025,7 @@
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
@@ -11010,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
@@ -11129,6 +11158,7 @@
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)
@@ -11160,6 +11190,7 @@
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)
@@ -11177,6 +11208,7 @@
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
@@ -11190,6 +11222,7 @@
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
@@ -11201,6 +11234,7 @@
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)
@@ -11215,6 +11249,7 @@
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
@@ -11225,6 +11260,7 @@
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
@@ -11240,6 +11276,7 @@
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)
@@ -11278,6 +11315,7 @@
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)
@@ -11304,6 +11342,7 @@
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
@@ -11427,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
@@ -11533,7 +11573,7 @@
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 Error Reporting Registers
+ 25f0 5000 Series Chipset FSB Registers
25f1 5000 Series Chipset Reserved Registers
25f3 5000 Series Chipset Reserved Registers
25f5 5000 Series Chipset FBD Registers
@@ -11554,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
@@ -11713,6 +11753,7 @@
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
@@ -11749,9 +11790,12 @@
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
@@ -11760,6 +11804,7 @@
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
@@ -11770,21 +11815,28 @@
2814 82801HO (ICH8DO) LPC Interface Controller
2815 Mobile LPC Interface Controller
2820 82801H (ICH8 Family) 4 port SATA IDE Controller
- 2821 82801HB (ICH8) SATA AHCI 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 82801HR/HO/HH (ICH8R/DO/DH) SATA AHCI 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
@@ -11831,12 +11883,15 @@
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
+ 144d c00c P30 notebook
3500 6311ESB/6321ESB PCI Express Upstream Port
3501 6310ESB PCI Express Upstream Port
3504 6311ESB/6321ESB I/OxAPIC Interrupt Controller
diff --git a/hw/xfree86/scanpci/xf86PciStdIds.h b/hw/xfree86/scanpci/xf86PciStdIds.h
index d86d686c8..0cf8d4e55 100644
--- a/hw/xfree86/scanpci/xf86PciStdIds.h
+++ b/hw/xfree86/scanpci/xf86PciStdIds.h
@@ -5712,7 +5712,7 @@ 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_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]";
@@ -5723,8 +5723,8 @@ static const char pci_subsys_1077_2312_103c_0131[] = "2Gb Fibre Channel - Single
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[] = "QLA2322 Fibre Channel Adapter";
-static const char pci_device_1077_2422[] = "QLA2422 Fibre Channel Adapter";
+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]";
@@ -5735,13 +5735,15 @@ static const char pci_subsys_1077_2422_103c_12d7[] = "4Gb Fibre Channel [AB379A]
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[] = "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_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]";
@@ -20449,10 +20451,8 @@ 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
-#ifdef VENDOR_INCLUDE_NONVIDEO
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";
@@ -21670,8 +21670,14 @@ static const char pci_device_8086_1043[] = "PRO/Wireless LAN 2100 3B Mini PCI Ad
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";
@@ -21703,6 +21709,10 @@ 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";
@@ -21897,7 +21907,11 @@ static const char pci_device_8086_108b[] = "82573V Gigabit Ethernet Controller (
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[] = "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)";
@@ -21907,6 +21921,9 @@ static const char pci_subsys_8086_1099_8086_1099[] = "PRO/1000 GT Quad Port Serv
#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
@@ -21916,8 +21933,22 @@ static const char pci_subsys_8086_109a_17aa_207e[] = "Thinkpad X60s";
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";
@@ -21941,6 +21972,15 @@ static const char pci_subsys_8086_10b9_8086_1093[] = "PRO/1000 PT Desktop Adapte
#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
@@ -22587,6 +22627,13 @@ static const char pci_subsys_8086_1a30_1028_010e[] = "Optiplex GX240";
static const char pci_device_8086_1a31[] = "82845 845 (Brookdale) Chipset AGP Bridge";
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";
@@ -22706,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
@@ -22738,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";
@@ -23045,6 +23098,9 @@ static const char pci_subsys_8086_24c2_103c_08b0[] = "tc1100 tablet";
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
@@ -23134,6 +23190,9 @@ static const char pci_subsys_8086_24c4_103c_08b0[] = "tc1100 tablet";
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
@@ -23183,6 +23242,9 @@ static const char pci_subsys_8086_24c5_103c_08b0[] = "tc1100 tablet";
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
@@ -23219,6 +23281,9 @@ static const char pci_subsys_8086_24c6_103c_08b0[] = "tc1100 tablet";
#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";
@@ -23251,6 +23316,9 @@ static const char pci_subsys_8086_24c7_103c_08b0[] = "tc1100 tablet";
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
@@ -23291,6 +23359,9 @@ static const char pci_subsys_8086_24ca_103c_08b0[] = "tc1100 tablet";
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
@@ -23317,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";
@@ -23360,6 +23434,9 @@ static const char pci_subsys_8086_24cd_1071_8160[] = "MIM2000";
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
@@ -23466,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
@@ -23540,6 +23620,9 @@ 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
@@ -23835,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
@@ -24068,7 +24154,7 @@ static const char pci_device_8086_25e4[] = "5000 Series Chipset PCI Express x4 P
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 Error Reporting Registers";
+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";
@@ -24089,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";
@@ -24400,6 +24486,9 @@ 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";
@@ -24474,6 +24563,12 @@ static const char pci_device_8086_27d8[] = "82801G (ICH7 Family) High Definition
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
@@ -24481,6 +24576,9 @@ 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
@@ -24497,6 +24595,9 @@ static const char pci_device_8086_27df[] = "82801G (ICH7 Family) IDE Controller"
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
@@ -24510,21 +24611,42 @@ static const char pci_device_8086_2812[] = "82801HH (ICH8DH) LPC Interface Contr
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[] = "82801H (ICH8 Family) 4 port SATA IDE Controller";
-static const char pci_device_8086_2821[] = "82801HB (ICH8) SATA AHCI 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[] = "82801HR/HO/HH (ICH8R/DO/DH) SATA AHCI 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";
@@ -24571,6 +24693,9 @@ 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";
@@ -24584,7 +24709,13 @@ static const char pci_subsys_8086_3340_103c_0890[] = "NC6000 laptop";
#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";
+#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";
@@ -40853,10 +40984,18 @@ 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
@@ -41097,6 +41236,10 @@ 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
@@ -41109,6 +41252,22 @@ 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
@@ -41129,6 +41288,14 @@ 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
@@ -41929,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
@@ -42061,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
@@ -42101,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
@@ -42477,6 +42660,10 @@ 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
@@ -42593,6 +42780,10 @@ 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
@@ -42657,6 +42848,10 @@ 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
@@ -42705,6 +42900,10 @@ 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
@@ -42745,6 +42944,10 @@ 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
@@ -42797,6 +43000,10 @@ 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
@@ -42829,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
@@ -42885,6 +43096,10 @@ 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
@@ -43021,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
@@ -43117,6 +43336,10 @@ 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
@@ -43461,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
@@ -44021,6 +44248,10 @@ 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
@@ -44097,6 +44328,14 @@ 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
@@ -44105,6 +44344,10 @@ 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
@@ -44121,6 +44364,10 @@ 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
@@ -44129,6 +44376,38 @@ 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
@@ -44145,6 +44424,14 @@ 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
@@ -48590,10 +48877,12 @@ static const pciSubsystemInfo *pci_ss_list_1077_2422[] = {
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
@@ -55730,7 +56019,9 @@ static const pciSubsystemInfo *pci_ss_list_8086_1040[] = {
};
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[] = {
@@ -55754,6 +56045,10 @@ 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[] = {
@@ -55874,7 +56169,11 @@ static const pciSubsystemInfo *pci_ss_list_8086_108a[] = {
#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
@@ -55883,14 +56182,25 @@ static const pciSubsystemInfo *pci_ss_list_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
@@ -55908,6 +56218,13 @@ static const pciSubsystemInfo *pci_ss_list_8086_10b9[] = {
};
#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,
@@ -56176,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
@@ -56238,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,
@@ -56254,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
};
@@ -56401,6 +56725,7 @@ static const pciSubsystemInfo *pci_ss_list_8086_24c2[] = {
&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,
@@ -56436,6 +56761,7 @@ static const pciSubsystemInfo *pci_ss_list_8086_24c4[] = {
&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,
@@ -56455,6 +56781,7 @@ static const pciSubsystemInfo *pci_ss_list_8086_24c5[] = {
&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,
@@ -56470,6 +56797,7 @@ static const pciSubsystemInfo *pci_ss_list_8086_24c6[] = {
&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[] = {
@@ -56483,6 +56811,7 @@ static const pciSubsystemInfo *pci_ss_list_8086_24c7[] = {
&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,
@@ -56499,6 +56828,7 @@ static const pciSubsystemInfo *pci_ss_list_8086_24ca[] = {
&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
@@ -56513,6 +56843,7 @@ 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
};
@@ -56530,6 +56861,7 @@ static const pciSubsystemInfo *pci_ss_list_8086_24cd[] = {
&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,
@@ -56574,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,
@@ -56604,6 +56937,7 @@ static const pciSubsystemInfo *pci_ss_list_8086_24d4[] = {
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,
@@ -56757,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
@@ -57122,6 +57457,7 @@ static const pciSubsystemInfo *pci_ss_list_8086_27b8[] = {
NULL
};
static const pciSubsystemInfo *pci_ss_list_8086_27b9[] = {
+ &pci_ss_info_8086_27b9_10f7_8338,
&pci_ss_info_8086_27b9_17aa_2009,
NULL
};
@@ -57174,11 +57510,14 @@ static const pciSubsystemInfo *pci_ss_list_8086_27cc[] = {
#define pci_ss_list_8086_27d6 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
@@ -57191,6 +57530,7 @@ static const pciSubsystemInfo *pci_ss_list_8086_27dc[] = {
#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
@@ -57202,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
@@ -57263,15 +57624,22 @@ static const pciSubsystemInfo *pci_ss_list_8086_27df[] = {
#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
@@ -58120,6 +58488,7 @@ static const pciSubsystemInfo *pci_ss_list_0925[] = {
#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,
@@ -58382,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
@@ -60499,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
@@ -62200,6 +62575,7 @@ static const pciSubsystemInfo *pci_ss_list_1462[] = {
&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,
@@ -63348,6 +63724,7 @@ 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
};
@@ -64030,6 +64407,8 @@ static const pciSubsystemInfo *pci_ss_list_8086[] = {
&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,
@@ -64046,6 +64425,8 @@ static const pciSubsystemInfo *pci_ss_list_8086[] = {
&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,
@@ -64098,7 +64479,9 @@ 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,
@@ -79384,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
@@ -79420,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
@@ -109037,7 +109438,6 @@ static const pciDeviceInfo pci_dev_info_19e7_1005 = {
0
};
#endif
-#ifdef VENDOR_INCLUDE_NONVIDEO
static const pciDeviceInfo pci_dev_info_1a03_2000 = {
0x2000, pci_device_1a03_2000,
#ifdef INIT_SUBSYS_INFO
@@ -109047,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,
@@ -111843,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
@@ -112185,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
@@ -112194,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
@@ -112248,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
@@ -112266,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
@@ -112338,6 +112827,33 @@ static const pciDeviceInfo pci_dev_info_8086_10bb = {
#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
@@ -112752,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
@@ -120919,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
@@ -127194,12 +127721,10 @@ static const pciDeviceInfo *pci_dev_list_19e7[] = {
NULL
};
#endif
-#ifdef VENDOR_INCLUDE_NONVIDEO
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,
@@ -127727,6 +128252,10 @@ static const pciDeviceInfo *pci_dev_list_8086[] = {
&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,
@@ -127765,15 +128294,21 @@ 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,
@@ -127782,6 +128317,9 @@ static const pciDeviceInfo *pci_dev_list_8086[] = {
&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,
@@ -127828,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,
@@ -133715,9 +134254,7 @@ static const pciVendorInfo pciVendorInfoList[] = {
#ifdef VENDOR_INCLUDE_NONVIDEO
{0x19e7, pci_vendor_19e7, pci_dev_list_19e7},
#endif
-#ifdef VENDOR_INCLUDE_NONVIDEO
{0x1a03, pci_vendor_1a03, pci_dev_list_1a03},
-#endif
#ifdef VENDOR_INCLUDE_NONVIDEO
{0x1a08, pci_vendor_1a08, pci_dev_list_1a08},
#endif
@@ -139176,9 +139713,7 @@ static const pciVendorSubsysInfo pciVendorSubsysInfoList[] = {
#ifdef VENDOR_INCLUDE_NONVIDEO
{0x19e7, pci_vendor_19e7, pci_ss_list_19e7},
#endif
-#ifdef VENDOR_INCLUDE_NONVIDEO
{0x1a03, pci_vendor_1a03, pci_ss_list_1a03},
-#endif
#ifdef VENDOR_INCLUDE_NONVIDEO
{0x1a08, pci_vendor_1a08, pci_ss_list_1a08},
#endif
diff --git a/hw/xfree86/shadowfb/Makefile.am b/hw/xfree86/shadowfb/Makefile.am
index cb5ebb14a..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)
+AM_CFLAGS = $(DIX_CFLAGS) $(XORG_CFLAGS)
diff --git a/hw/xfree86/utils/cvt/Makefile.am b/hw/xfree86/utils/cvt/Makefile.am
index ff3c1f7bc..365c6cb88 100644
--- a/hw/xfree86/utils/cvt/Makefile.am
+++ b/hw/xfree86/utils/cvt/Makefile.am
@@ -33,7 +33,7 @@ DUMMYLIB_SRCDIR = $(XFREE86_SRCDIR)/dummylib
# gah
cvt_SOURCES = cvt.c $(top_srcdir)/hw/xfree86/common/xf86cvt.c
-cvt_CFLAGS = $(XORG_CFLAGS)
+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/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/xorgcfg/interface.c b/hw/xfree86/utils/xorgcfg/interface.c
index b98d6ce73..9b22dc7cb 100644
--- a/hw/xfree86/utils/xorgcfg/interface.c
+++ b/hw/xfree86/utils/xorgcfg/interface.c
@@ -66,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 4856c5247..545a67067 100644
--- a/hw/xfree86/utils/xorgcfg/keyboard-cfg.c
+++ b/hw/xfree86/utils/xorgcfg/keyboard-cfg.c
@@ -37,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
@@ -254,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/loadmod.c b/hw/xfree86/utils/xorgcfg/loadmod.c
index a3ccb56e7..1207820ce 100644
--- a/hw/xfree86/utils/xorgcfg/loadmod.c
+++ b/hw/xfree86/utils/xorgcfg/loadmod.c
@@ -179,7 +179,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/mouse-cfg.c b/hw/xfree86/utils/xorgcfg/mouse-cfg.c
index 6c29c1f07..5bae6d326 100644
--- a/hw/xfree86/utils/xorgcfg/mouse-cfg.c
+++ b/hw/xfree86/utils/xorgcfg/mouse-cfg.c
@@ -60,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/text-mode.c b/hw/xfree86/utils/xorgcfg/text-mode.c
index 0fc5770ca..9797ca283 100644
--- a/hw/xfree86/utils/xorgcfg/text-mode.c
+++ b/hw/xfree86/utils/xorgcfg/text-mode.c
@@ -46,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"
@@ -362,9 +361,6 @@ static char *protocols[] = {
#ifdef __SCO__
"OsMouse",
#endif
-#ifdef __UNIXWARE__
- "Xqueue",
-#endif
#ifdef WSCONS_SUPPORT
"wsmouse",
#endif
@@ -551,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$";
@@ -744,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);
}
@@ -824,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);
}
diff --git a/hw/xfree86/utils/xorgconfig/xorgconfig.c b/hw/xfree86/utils/xorgconfig/xorgconfig.c
index f00eea038..3e60fdabb 100644
--- a/hw/xfree86/utils/xorgconfig/xorgconfig.c
+++ b/hw/xfree86/utils/xorgconfig/xorgconfig.c
@@ -490,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";
@@ -2066,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"
@@ -2129,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
@@ -2140,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 02fdb4837..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)
+AM_CFLAGS = $(DIX_CFLAGS) $(XORG_CFLAGS)
INCLUDES = $(XORG_INCS) -I$(srcdir)/../ddc -I$(srcdir)/../i2c \
-I$(srcdir)/../int10
diff --git a/hw/xfree86/vgahw/Makefile.am b/hw/xfree86/vgahw/Makefile.am
index 2aa27fa41..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)
+AM_CFLAGS = $(DIX_CFLAGS) $(XORG_CFLAGS)
sdk_HEADERS = vgaHW.h
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 23b7e16b1..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)
+AM_CFLAGS = $(DIX_CFLAGS) $(XORG_CFLAGS)
diff --git a/hw/xfree86/xf4bpp/Makefile.am b/hw/xfree86/xf4bpp/Makefile.am
index 7cb4ac235..9af336446 100644
--- a/hw/xfree86/xf4bpp/Makefile.am
+++ b/hw/xfree86/xf4bpp/Makefile.am
@@ -59,4 +59,4 @@ mfbseg.c:
INCLUDES = $(XORG_INCS) -I$(srcdir)/../xf1bpp -I$(top_srcdir)/mfb
-AM_CFLAGS = $(XORG_CFLAGS)
+AM_CFLAGS = $(DIX_CFLAGS) $(XORG_CFLAGS)
diff --git a/hw/xfree86/xf8_16bpp/Makefile.am b/hw/xfree86/xf8_16bpp/Makefile.am
index 5b30f45ed..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)
+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 3050b81d1..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)
+AM_CFLAGS = $(DIX_CFLAGS) $(XORG_CFLAGS)
libxf8_32bpp_la_LDFLAGS = -avoid-version
diff --git a/hw/xfree86/xorgconf.cpp b/hw/xfree86/xorgconf.cpp
index 6c522134e..1995045b8 100644
--- a/hw/xfree86/xorgconf.cpp
+++ b/hw/xfree86/xorgconf.cpp
@@ -56,7 +56,6 @@ XCOMM command (or a combination of both methods)
FontPath MISCFONTPATH
FontPath T1FONTPATH
FontPath TRUETYPEFONTPATH
- FontPath CIDFONTPATH
FontPath DPI75FONTPATH
FontPath DPI100FONTPATH
@@ -176,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.
@@ -267,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 48a9825d2..965060cd7 100644
--- a/hw/xgl/Makefile.am
+++ b/hw/xgl/Makefile.am
@@ -19,7 +19,7 @@ SUBDIRS = \
$(XEGL_SUBDIRS)
AM_CFLAGS = \
- \
+ $(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 ded4a15e2..5136e58b1 100644
--- a/hw/xgl/egl/Makefile.am
+++ b/hw/xgl/egl/Makefile.am
@@ -9,7 +9,7 @@ SUBDIRS = \
$(XGL_MODULE_DIRS)
AM_CFLAGS = \
- \
+ $(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 10a831f94..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 \
- \
+ $(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 c400f364a..98a9b13c4 100644
--- a/hw/xgl/glxext/Makefile.am
+++ b/hw/xgl/glxext/Makefile.am
@@ -1,7 +1,7 @@
SUBDIRS = module
AM_CFLAGS = \
- \
+ $(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 82c4211d8..4633f7ffa 100644
--- a/hw/xgl/glxext/module/Makefile.am
+++ b/hw/xgl/glxext/module/Makefile.am
@@ -1,5 +1,5 @@
AM_CFLAGS = \
- \
+ $(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/Args.c b/hw/xnest/Args.c
index 5d0a0c02d..c2e8b0db7 100644
--- a/hw/xnest/Args.c
+++ b/hw/xnest/Args.c
@@ -53,18 +53,21 @@ Window xnestParentWindow = 0;
/* ddxInitGlobals - called by |InitGlobals| from os/util.c */
void ddxInitGlobals(void)
{
-}
-
-int
-ddxProcessArgument (int argc, char *argv[], int i)
-{
-
#ifdef COMPOSITE
/* XXX terrible hack */
extern Bool noCompositeExtension;
noCompositeExtension = TRUE;
#endif
+#ifdef XKB
+ extern Bool noXkbExtension;
+ noXkbExtension = TRUE;
+#endif
+}
+
+int
+ddxProcessArgument (int argc, char *argv[], int i)
+{
if (!strcmp(argv[i], "-display")) {
if (++i < argc) {
xnestDisplayName = argv[i];
diff --git a/hw/xnest/Events.c b/hw/xnest/Events.c
index e5cf99e2c..a20924128 100644
--- a/hw/xnest/Events.c
+++ b/hw/xnest/Events.c
@@ -37,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()
{
@@ -101,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
@@ -113,6 +117,7 @@ xnestCollectEvents()
{
XEvent X;
xEvent x;
+ int i, n, valuators[2];
ScreenPtr pScreen;
while (XCheckIfEvent(xnestDisplay, &X, xnestNotExposurePredicate, NULL)) {
@@ -129,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:
@@ -179,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/Init.c b/hw/xnest/Init.c
index 8c397a7bb..5bf0300c6 100644
--- a/hw/xnest/Init.c
+++ b/hw/xnest/Init.c
@@ -45,6 +45,8 @@ is" without express or implied warranty.
Bool xnestDoFullGeneration = True;
+xEvent *xnestEvents = NULL;
+
void
InitOutput(ScreenInfo *screenInfo, int argc, char *argv[])
{
@@ -92,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/Keyboard.c b/hw/xnest/Keyboard.c
index f18cc9760..0dacae70b 100644
--- a/hw/xnest/Keyboard.c
+++ b/hw/xnest/Keyboard.c
@@ -94,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
@@ -253,7 +259,7 @@ XkbError:
}
Bool
-LegalModifier(unsigned int key, DevicePtr pDev)
+LegalModifier(unsigned int key, DeviceIntPtr pDev)
{
return TRUE;
}
diff --git a/hw/xnest/Pointer.c b/hw/xnest/Pointer.c
index 454449732..912b6fa21 100644
--- a/hw/xnest/Pointer.c
+++ b/hw/xnest/Pointer.c
@@ -57,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/xprint/ddxInit.c b/hw/xprint/ddxInit.c
index 6cd3cfd3c..8e7ec2e0a 100644
--- a/hw/xprint/ddxInit.c
+++ b/hw/xprint/ddxInit.c
@@ -156,9 +156,9 @@ PointerProc(
{
map[0] = 0;
InitPointerDeviceStruct(pPtr, map, NUM_BUTTONS,
- miPointerGetMotionEvents,
+ GetMotionHistory,
(PtrCtrlProcPtr)_XpVoidNoop,
- miPointerGetMotionBufferSize());
+ GetMotionHistorySize(), 2);
break;
}
case DEVICE_ON:
@@ -189,7 +189,7 @@ InitInput(
Bool
LegalModifier(
unsigned int key,
- DevicePtr dev)
+ DeviceIntPtr dev)
{
return TRUE;
}
diff --git a/hw/xwin/InitInput.c b/hw/xwin/InitInput.c
index f4796e079..52f837ede 100644
--- a/hw/xwin/InitInput.c
+++ b/hw/xwin/InitInput.c
@@ -79,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/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/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 45f6eb10c..6797e0732 100644
--- a/include/XIstubs.h
+++ b/include/XIstubs.h
@@ -26,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/dix-config.h.in b/include/dix-config.h.in
index 65c42e6af..7aabae2ec 100644
--- a/include/dix-config.h.in
+++ b/include/dix-config.h.in
@@ -127,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
@@ -445,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 f346b43a2..a5a570a51 100644
--- a/include/dix.h
+++ b/include/dix.h
@@ -701,6 +701,8 @@ extern Bool AllocateClientPrivate(
int /*index*/,
unsigned /*amount*/);
+extern int ffs(int i);
+
/*
* callback manager stuff
*/
@@ -815,4 +817,7 @@ typedef struct {
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 2a9458f08..c78fb0e85 100644
--- a/include/dixevents.h
+++ b/include/dixevents.h
@@ -102,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/exevents.h b/include/exevents.h
index 1169a6c4e..7fbaddbb5 100644
--- a/include/exevents.h
+++ b/include/exevents.h
@@ -179,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/extinit.h b/include/extinit.h
index b1a0f215d..2087d74d6 100644
--- a/include/extinit.h
+++ b/include/extinit.h
@@ -104,6 +104,12 @@ SDeviceMappingNotifyEvent (
);
void
+SDevicePresenceNotifyEvent (
+ devicePresenceNotify * /* from */,
+ devicePresenceNotify * /* to */
+ );
+
+void
FixExtensionEvents (
ExtensionEntry * /* extEntry */
);
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 c0cee2458..ebb0915c4 100644
--- a/include/input.h
+++ b/include/input.h
@@ -59,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)
@@ -161,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*/);
@@ -168,6 +180,9 @@ extern DeviceIntPtr AddInputDevice(
extern Bool EnableDevice(
DeviceIntPtr /*device*/);
+extern Bool ActivateDevice(
+ DeviceIntPtr /*device*/);
+
extern Bool DisableDevice(
DeviceIntPtr /*device*/);
@@ -175,7 +190,7 @@ extern int InitAndStartDevices(void);
extern void CloseDownDevices(void);
-extern void RemoveDevice(
+extern int RemoveDevice(
DeviceIntPtr /*dev*/);
extern int NumMotionEvents(void);
@@ -225,6 +240,9 @@ extern Bool InitValuatorClassDeviceStruct(
int /*numMotionEvents*/,
int /*mode*/);
+extern Bool InitAbsoluteClassDeviceStruct(
+ DeviceIntPtr /*device*/);
+
extern Bool InitFocusClassDeviceStruct(
DeviceIntPtr /*device*/);
@@ -294,7 +312,8 @@ extern Bool InitPointerDeviceStruct(
int /*numButtons*/,
ValuatorMotionProcPtr /*motionProc*/,
PtrCtrlProcPtr /*controlProc*/,
- int /*numMotionEvents*/);
+ int /*numMotionEvents*/,
+ int /*numAxes*/);
extern Bool InitKeyboardDeviceStruct(
DevicePtr /*device*/,
@@ -356,7 +375,7 @@ extern void CoreProcessKeyboardEvent(
extern Bool LegalModifier(
unsigned int /*key*/,
- DevicePtr /*pDev*/);
+ DeviceIntPtr /*pDev*/);
extern void ProcessInputEvents(void);
@@ -364,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 5e2e26968..ada94e6b4 100644
--- a/include/inputstr.h
+++ b/include/inputstr.h
@@ -62,6 +62,8 @@ SOFTWARE.
#define EMASKSIZE MAX_DEVICES
+extern int CoreDevicePrivatesIndex, CoreDevicePrivatesGeneration;
+
/* Kludge: OtherClients and InputClients must be compatible, see code */
typedef struct _OtherClients {
@@ -91,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;
@@ -129,6 +131,8 @@ typedef struct _KeyClassRec {
unsigned short prev_state;
#ifdef XKB
struct _XkbSrvInfo *xkbInfo;
+#else
+ void *pad0;
#endif
} KeyClassRec, *KeyClassPtr;
@@ -142,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 {
@@ -158,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;
@@ -175,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;
@@ -189,6 +223,8 @@ typedef struct _KbdFeedbackClassRec {
KbdFeedbackPtr next;
#ifdef XKB
struct _XkbSrvLedInfo *xkb_sli;
+#else
+ void *pad0;
#endif
} KbdFeedbackClassRec;
@@ -223,6 +259,8 @@ typedef struct _LedFeedbackClassRec {
LedFeedbackPtr next;
#ifdef XKB
struct _XkbSrvLedInfo *xkb_sli;
+#else
+ void *pad0;
#endif
} LedFeedbackClassRec;
@@ -248,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;
@@ -274,6 +314,7 @@ typedef struct _DeviceIntRec {
ButtonClassPtr button;
FocusClassPtr focus;
ProximityClassPtr proximity;
+ AbsoluteClassPtr absolute;
KbdFeedbackPtr kbdfeed;
PtrFeedbackPtr ptrfeed;
IntegerFeedbackPtr intfeed;
@@ -281,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 2f454d702..3bc779218 100644
--- a/include/kdrive-config.h.in
+++ b/include/kdrive-config.h.in
@@ -25,4 +25,10 @@
/* 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/os.h b/include/os.h
index 4c4967164..d4eed220f 100644
--- a/include/os.h
+++ b/include/os.h
@@ -147,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*/);
@@ -506,6 +510,12 @@ __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);
diff --git a/include/regionstr.h b/include/regionstr.h
index 6c39324d1..e6882e77a 100644
--- a/include/regionstr.h
+++ b/include/regionstr.h
@@ -321,4 +321,7 @@ extern void miRegionEmpty(
extern BoxPtr miRegionExtents(
RegionPtr /*pReg*/);
+extern void miPrintRegion(
+ RegionPtr /*pReg*/);
+
#endif /* REGIONSTRUCT_H */
diff --git a/include/xorg-config.h.in b/include/xorg-config.h.in
index 4a64522a7..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
diff --git a/mi/mi.h b/mi/mi.h
index 97e1b6f3a..8d9d120bd 100644
--- a/mi/mi.h
+++ b/mi/mi.h
@@ -169,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/mieq.c b/mi/mieq.c
index a69ce7037..80915fd73 100644
--- a/mi/mieq.c
+++ b/mi/mieq.c
@@ -45,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;
}
@@ -89,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/miinitext.c b/mi/miinitext.c
index aafd014ae..cb3447372 100644
--- a/mi/miinitext.c
+++ b/mi/miinitext.c
@@ -549,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
@@ -579,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
@@ -754,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/mipointer.c b/mi/mipointer.c
index 1715965fa..dbe2aaeab 100644
--- a/mi/mipointer.c
+++ b/mi/mipointer.c
@@ -44,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;
@@ -127,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;
}
@@ -178,7 +178,7 @@ miPointerDisplayCursor (pScreen, pCursor)
{
miPointer.pCursor = pCursor;
miPointer.pScreen = pScreen;
- miPointerUpdate ();
+ miPointerUpdateSprite(inputInfo.pointer);
return TRUE;
}
@@ -225,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;
}
@@ -266,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
*
@@ -308,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
@@ -376,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;
@@ -400,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;
@@ -419,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;
@@ -437,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 aae38377c..30e89444b 100644
--- a/mi/mipointer.h
+++ b/mi/mipointer.h
@@ -73,6 +73,7 @@ typedef struct _miPointerScreenFuncRec {
int /* y */
);
void (*EnqueueEvent)(
+ DeviceIntPtr /* pDev */,
xEventPtr /* event */
);
void (*NewEventScreen)(
@@ -97,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*/,
@@ -111,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 f1fbfe4f9..a80c52e7a 100644
--- a/mi/mipointrst.h
+++ b/mi/mipointrst.h
@@ -32,13 +32,6 @@ in this Software without prior written authorization from The Open Group.
#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 */
@@ -48,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/miregion.c b/mi/miregion.c
index fdb538c68..0db46dcf5 100644
--- a/mi/miregion.c
+++ b/mi/miregion.c
@@ -223,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;
{
@@ -242,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/os/Makefile.am b/os/Makefile.am
index 71e24c086..d8d1405ce 100644
--- a/os/Makefile.am
+++ b/os/Makefile.am
@@ -3,14 +3,14 @@ noinst_LTLIBRARIES = libos.la libcwrapper.la
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 045767809..ba227a3b6 100644
--- a/os/WaitFor.c
+++ b/os/WaitFor.c
@@ -119,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;
/*****************
@@ -200,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
@@ -426,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)
@@ -467,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;
@@ -482,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 cdb17589c..d61edeffc 100644
--- a/os/access.c
+++ b/os/access.c
@@ -202,9 +202,7 @@ SOFTWARE.
#include "dixstruct.h"
#include "osdep.h"
-#ifdef XACE
#include "xace.h"
-#endif
#ifndef PATH_MAX
#ifdef MAXPATHLEN
@@ -1528,11 +1526,11 @@ AuthorizedClient(ClientPtr client)
{
if (!client || defeatAccessControl)
return TRUE;
-#ifdef XACE
+
/* untrusted clients can't change host access */
if (!XaceHook(XACE_HOSTLIST_ACCESS, client, SecurityWriteAccess))
return FALSE;
-#endif
+
return LocalClient(client);
}
diff --git a/os/connection.c b/os/connection.c
index 571ba58ab..ffe911e45 100644
--- a/os/connection.c
+++ b/os/connection.c
@@ -148,9 +148,7 @@ extern __const__ int _nfiles;
#ifdef XAPPGROUP
#include "appgroup.h"
#endif
-#ifdef XACE
#include "xace.h"
-#endif
#ifdef XCSECURITY
#include "securitysrv.h"
#endif
@@ -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,
- (int)proto_n, auth_proto, auth_id);
- else
- AuditF("client %d %s from %s\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,
+ 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,9 +748,9 @@ ClientAuthorized(ClientPtr client,
/* indicate to Xdmcp protocol that we've opened new client */
XdmcpOpenDisplay(priv->fd);
#endif /* XDMCP */
-#ifdef XACE
+
XaceHook(XACE_AUTH_AVAIL, client, auth_id);
-#endif
+
/* 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
@@ -753,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;
}
@@ -985,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
@@ -1014,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/log.c b/os/log.c
index 05e542f08..b1d628c3f 100644
--- a/os/log.c
+++ b/os/log.c
@@ -89,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"
@@ -404,6 +405,7 @@ void
AbortServer(void)
{
OsCleanup(TRUE);
+ CloseDownDevices();
AbortDDX();
fflush(stderr);
if (CoreDump)
diff --git a/os/utils.c b/os/utils.c
index 31ae26a18..9824501e7 100644
--- a/os/utils.c
+++ b/os/utils.c
@@ -53,6 +53,23 @@ OR PERFORMANCE OF THIS SOFTWARE.
#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>
@@ -92,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>
@@ -535,10 +551,16 @@ GiveUp(int sig)
_X_EXPORT CARD32
GetTimeInMillis(void)
{
- struct timeval tp;
+ struct timeval tv;
+
+#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(&tp);
- return(tp.tv_sec * 1000) + (tp.tv_usec / 1000);
+ X_GETTIMEOFDAY(&tv);
+ return(tv.tv_sec * 1000) + (tv.tv_usec / 1000);
}
_X_EXPORT void
diff --git a/randr/Makefile.am b/randr/Makefile.am
index bd30aed8a..9bf0e6531 100644
--- a/randr/Makefile.am
+++ b/randr/Makefile.am
@@ -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 0954028d1..0b763e111 100644
--- a/randr/mirandr.c
+++ b/randr/mirandr.c
@@ -1,75 +1,42 @@
/*
- *
- * 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;
}
@@ -78,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 946aad31d..147df8c2c 100644
--- a/randr/randr.c
+++ b/randr/randr.c
@@ -1,54 +1,37 @@
/*
- *
- * 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
@@ -56,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; \
@@ -73,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,
@@ -159,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);
@@ -187,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));
@@ -207,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
@@ -219,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;
@@ -242,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)
@@ -268,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);
@@ -290,1037 +337,152 @@ 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++)
+ if (pRREvent->mask & RRScreenChangeNotifyMask)
+ RRDeliverScreenEvent (client, pWin, pScreen);
+
+ if (pRREvent->mask & RRCrtcChangeNotifyMask)
{
- 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)
- {
- 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)
- {
- /*
- * 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)
+ if (pScrPriv->changed)
{
- for (i = 0; i < pSize->nRates; i++)
- {
- RRScreenRatePtr pRate = &pSize->pRates[i];
- if (pRate->referenced && pRate->rate == rate)
- break;
- }
- if (i == pSize->nRates)
+ UpdateCurrentTime ();
+ pScrPriv->lastConfigTime = currentTime;
+ 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++)
- {
- RRScreenRatePtr pRate = &pSize->pRates[i];
- if (pRate->referenced && pRate->rate == rate)
- break;
- }
- if (i == pSize->nRates)
+ RRCrtcPtr crtc = pScrPriv->crtcs[i];
+ for (j = 0; j < pScrPriv->numOutputs; j++)
{
- /*
- * Invalid rate
- */
- return BadValue;
+ output = pScrPriv->outputs[j];
+ if (output->crtc == crtc)
+ return output;
}
}
-
- /*
- * 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);
+ return (*ProcRandrVector[stuff->data]) (client);
}
static int
-SProcRRGetScreenInfo (ClientPtr client)
-{
- register int n;
- REQUEST(xRRGetScreenInfoReq);
-
- swaps(&stuff->length, n);
- swapl(&stuff->window, n);
- return ProcRRGetScreenInfo(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;
- }
-}
-
-
-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;
+ return (*SProcRandrVector[stuff->data]) (client);
}
-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 27ab61abb..27ede9226 100644
--- a/randr/randrstr.h
+++ b/randr/randrstr.h
@@ -1,24 +1,28 @@
/*
- *
* 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
@@ -28,56 +32,219 @@
#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 */
+ CARD16 minWidth, minHeight;
+ CARD16 maxWidth, maxHeight;
+ CARD16 width, height; /* last known screen size */
+ Bool layoutChanged; /* screen layout changed */
+
+ 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;
@@ -86,10 +253,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
*/
@@ -115,7 +447,7 @@ RRSetCurrentConfig (ScreenPtr pScreen,
int rate,
RRScreenSizePtr pSize);
-Bool RRScreenInit(ScreenPtr pScreen);
+Bool RRScreenInit (ScreenPtr pScreen);
Rotation
RRGetRotation (ScreenPtr pScreen);
@@ -126,19 +458,363 @@ 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
+ */
+void
+RROutputChanged (RROutputPtr output);
+
+/*
+ * 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..e8a7b79e1
--- /dev/null
+++ b/randr/rrcrtc.c
@@ -0,0 +1,848 @@
+/*
+ * 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]);
+ 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]);
+ 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, SecurityReadAccess);
+
+ 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)
+ {
+ if (stuff->x + mode->mode.width > pScreen->width)
+ {
+ client->errorValue = stuff->x;
+ if (outputs)
+ xfree (outputs);
+ return BadValue;
+ }
+
+ if (stuff->y + mode->mode.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, SecurityReadAccess);
+ 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, SecurityReadAccess);
+ 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, SecurityWriteAccess);
+ 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..6b61b9cd7
--- /dev/null
+++ b/randr/rrdispatch.c
@@ -0,0 +1,210 @@
+/*
+ * 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;
+
+ REQUEST_SIZE_MATCH(xRRSelectInputReq);
+ pWin = SecurityLookupWindow (stuff->window, client, SecurityWriteAccess);
+ if (!pWin)
+ return BadWindow;
+ pHead = (RREventPtr *)SecurityLookupIDByType(client,
+ pWin->drawable.id, RREventType,
+ SecurityWriteAccess);
+
+ 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..244b089f3
--- /dev/null
+++ b/randr/rrinfo.c
@@ -0,0 +1,342 @@
+/*
+ * 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;
+ 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;
+
+ 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..a0696e170
--- /dev/null
+++ b/randr/rrmode.c
@@ -0,0 +1,221 @@
+/*
+ * 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;
+ RRModePtr *screen_modes;
+ int num_screen_modes = 0;
+
+ screen_modes = xalloc ((num_modes ? num_modes : 1) * sizeof (RRModePtr));
+
+ 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;
+ }
+ }
+ *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..430f8bdaa
--- /dev/null
+++ b/randr/rroutput.c
@@ -0,0 +1,463 @@
+/*
+ * 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)
+{
+ ScreenPtr pScreen = output->pScreen;
+
+ output->changed = TRUE;
+ if (pScreen)
+ {
+ rrScrPriv (pScreen);
+ pScrPriv->changed = 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);
+ 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);
+ 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);
+ 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);
+ return TRUE;
+}
+
+void
+RROutputSetCrtc (RROutputPtr output, RRCrtcPtr crtc)
+{
+ if (output->crtc == crtc)
+ return;
+ output->crtc = crtc;
+ RROutputChanged (output);
+}
+
+Bool
+RROutputSetConnection (RROutputPtr output,
+ CARD8 connection)
+{
+ if (output->connection == connection)
+ return TRUE;
+ output->connection = connection;
+ RROutputChanged (output);
+ return TRUE;
+}
+
+Bool
+RROutputSetSubpixelOrder (RROutputPtr output,
+ int subpixelOrder)
+{
+ if (output->subpixelOrder == subpixelOrder)
+ return TRUE;
+
+ output->subpixelOrder = subpixelOrder;
+ RROutputChanged (output);
+ 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);
+ 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, SecurityReadAccess);
+
+ 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..13e848340
--- /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, SecurityReadAccess);
+
+ 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, SecurityReadAccess);
+
+ 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, SecurityReadAccess);
+
+ 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, SecurityWriteAccess);
+ 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, SecurityWriteAccess);
+ 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 ? SecurityWriteAccess :
+ SecurityReadAccess);
+ 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..76c16b010
--- /dev/null
+++ b/randr/rrscreen.c
@@ -0,0 +1,913 @@
+/*
+ * 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;
+
+ REQUEST_SIZE_MATCH(xRRGetScreenInfoReq);
+ pWin = (WindowPtr)SecurityLookupWindow(stuff->window, client,
+ SecurityReadAccess);
+
+ if (!pWin)
+ return BadWindow;
+
+ 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;
+ RRCrtcPtr crtc;
+ int i;
+
+ REQUEST_SIZE_MATCH(xRRSetScreenSizeReq);
+ pWin = (WindowPtr)SecurityLookupWindow(stuff->window, client,
+ SecurityReadAccess);
+
+ if (!pWin)
+ return BadWindow;
+
+ 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++) {
+ crtc = pScrPriv->crtcs[i];
+ if (crtc->mode &&
+ (crtc->x + crtc->mode->mode.width > stuff->width ||
+ crtc->y + crtc->mode->mode.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;
+ RRCrtc *crtcs;
+ RROutput *outputs;
+ xRRModeInfo *modeinfos;
+ CARD8 *names;
+ int n;
+
+ REQUEST_SIZE_MATCH(xRRGetScreenResourcesReq);
+ pWin = (WindowPtr)SecurityLookupWindow(stuff->window, client,
+ SecurityReadAccess);
+
+ if (!pWin)
+ return BadWindow;
+
+ 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 i, j, k;
+ RRScreenRatePtr refresh;
+ CARD16 vRefresh;
+ RRModePtr mode;
+
+ /* Make sure there is plenty of space for any combination */
+ data = malloc (sizeof (RR10DataRec) +
+ sizeof (RRScreenSize) * nmode +
+ sizeof (RRScreenRate) * nmode);
+ if (!data)
+ return NULL;
+ size = (RRScreenSizePtr) (data + 1);
+ refresh = (RRScreenRatePtr) (size + nmode);
+ data->sizes = size;
+ data->nsize = 0;
+ data->nrefresh = 0;
+ data->size = 0;
+ data->refresh = 0;
+ for (i = 0; i < output->numModes; i++)
+ {
+ mode = output->modes[i];
+ for (j = 0; j < data->nsize; j++)
+ if (mode->mode.width == size[j].width &&
+ mode->mode.height == size[j].height)
+ break;
+ if (j == data->nsize)
+ {
+ size[j].id = j;
+ size[j].width = mode->mode.width;
+ size[j].height = mode->mode.height;
+ if (output->mmWidth && output->mmHeight) {
+ size[j].mmWidth = output->mmWidth;
+ size[j].mmHeight = output->mmHeight;
+ } else {
+ size[j].mmWidth = pScreen->mmWidth;
+ size[j].mmHeight = pScreen->mmHeight;
+ }
+ size[j].nRates = 0;
+ size[j].pRates = &refresh[data->nrefresh];
+ data->nsize++;
+ }
+ vRefresh = RRVerticalRefresh (&mode->mode);
+ for (k = 0; k < size[j].nRates; k++)
+ if (vRefresh == size[j].pRates[k].rate)
+ break;
+ if (k == size[j].nRates)
+ {
+ size[j].pRates[k].rate = vRefresh;
+ size[j].pRates[k].mode = mode;
+ size[j].nRates++;
+ data->nrefresh++;
+ }
+ if (mode == output->crtc->mode)
+ {
+ data->size = j;
+ data->refresh = vRefresh;
+ }
+ }
+ return data;
+}
+
+int
+ProcRRGetScreenInfo (ClientPtr client)
+{
+ REQUEST(xRRGetScreenInfoReq);
+ xRRGetScreenInfoReply rep;
+ WindowPtr pWin;
+ int n;
+ ScreenPtr pScreen;
+ rrScrPrivPtr pScrPriv;
+ CARD8 *extra;
+ unsigned long extraLen;
+ RROutputPtr output;
+
+ 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)
+ 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;
+ 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;
+ }
+
+ SECURITY_VERIFY_DRAWABLE(pDraw, stuff->drawable, client,
+ SecurityWriteAccess);
+
+ 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++)
+ {
+ rep.status = RRCrtcSet (pScrPriv->crtcs[c], NULL, 0, 0, RR_Rotate_0,
+ 0, NULL);
+ if (rep.status != Success)
+ goto sendReply;
+ }
+ if (!RRScreenSizeSet (pScreen, mode->mode.width, mode->mode.height,
+ pScreen->mmWidth, pScreen->mmHeight))
+ {
+ rep.status = RRSetConfigFailed;
+ goto sendReply;
+ }
+ }
+
+ rep.status = RRCrtcSet (output->crtc, mode, 0, 0, stuff->rotation,
+ 1, &output);
+
+ /*
+ * 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..771ed0976
--- /dev/null
+++ b/randr/rrxinerama.c
@@ -0,0 +1,431 @@
+/*
+ * 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;
+ ScreenPtr pScreen;
+ rrScrPrivPtr pScrPriv;
+ Bool active = FALSE;
+
+ REQUEST_SIZE_MATCH(xPanoramiXGetStateReq);
+ pWin = LookupWindow(stuff->window, client);
+ if(!pWin) return BadWindow;
+
+ 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;
+
+ REQUEST_SIZE_MATCH(xPanoramiXGetScreenCountReq);
+ pWin = LookupWindow(stuff->window, client);
+ if(!pWin) return BadWindow;
+
+ rep.type = X_Reply;
+ rep.length = 0;
+ rep.sequenceNumber = client->sequence;
+ rep.ScreenCount = 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;
+
+ REQUEST_SIZE_MATCH(xPanoramiXGetScreenSizeReq);
+ pWin = LookupWindow (stuff->window, client);
+ if(!pWin) return BadWindow;
+
+ 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/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/XKBAlloc.c b/xkb/XKBAlloc.c
index 8356e47e7..c474733d0 100644
--- a/xkb/XKBAlloc.c
+++ b/xkb/XKBAlloc.c
@@ -324,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/ddxBeep.c b/xkb/ddxBeep.c
index ff9dd99cf..53f3a6f9c 100644
--- a/xkb/ddxBeep.c
+++ b/xkb/ddxBeep.c
@@ -39,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
@@ -116,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/ddxLoad.c b/xkb/ddxLoad.c
index 5795f8b0d..6e8f8921c 100644
--- a/xkb/ddxLoad.c
+++ b/xkb/ddxLoad.c
@@ -403,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/xkb.c b/xkb/xkb.c
index f892c431f..2c97e05db 100644
--- a/xkb/xkb.c
+++ b/xkb/xkb.c
@@ -347,6 +347,7 @@ ProcXkbSelectEvents(ClientPtr client)
/***====================================================================***/
+/* FIXME: Needs to ding on all core-sending devices. */
int
ProcXkbBell(ClientPtr client)
{
@@ -534,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;
}
@@ -666,7 +678,7 @@ ProcXkbGetControls(ClientPtr client)
int
ProcXkbSetControls(ClientPtr client)
{
- DeviceIntPtr dev;
+ DeviceIntPtr dev, tmpd;
XkbSrvInfoPtr xkbi;
XkbControlsPtr ctrl;
XkbControlsRec new,old;
@@ -677,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)
{
@@ -1261,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;
@@ -2263,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)
{
@@ -2579,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)
{
@@ -2856,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)
{
@@ -3019,6 +3086,7 @@ ProcXkbGetNamedIndicator(ClientPtr client)
return client->noClientException;
}
+/* FIXME: Needs to set indicator on all core-sending devices. */
int
ProcXkbSetNamedIndicator(ClientPtr client)
{
@@ -3507,6 +3575,7 @@ char * str;
return True;
}
+/* FIXME: Needs to set names on all core-sending devices. */
int
ProcXkbSetNames(ClientPtr client)
{
@@ -4804,6 +4873,7 @@ char * wire;
return Success;
}
+/* FIXME: Needs to set geom on all core-sending devices. */
int
ProcXkbSetGeometry(ClientPtr client)
{
@@ -5084,6 +5154,7 @@ int
ProcXkbGetKbdByName(ClientPtr client)
{
DeviceIntPtr dev;
+ DeviceIntPtr tmpd;
XkbFileInfo finfo;
xkbGetKbdByNameReply rep;
xkbGetMapReply mrep;
@@ -5099,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);
@@ -5169,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;
@@ -5365,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;
@@ -5634,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));
@@ -5643,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)
@@ -5940,6 +6025,7 @@ DeviceIntPtr kbd;
return (char *)ledWire;
}
+/* FIXME: Needs to set info on all core-sending devices. */
int
ProcXkbSetDeviceInfo(ClientPtr client)
{
@@ -5957,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 7b57611e2..0ab3dadf6 100644
--- a/xkb/xkbAccessX.c
+++ b/xkb/xkbAccessX.c
@@ -361,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,
@@ -530,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 0cbf8d007..e0bf89c7b 100644
--- a/xkb/xkbActions.c
+++ b/xkb/xkbActions.c
@@ -868,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;
diff --git a/xkb/xkbEvents.c b/xkb/xkbEvents.c
index 86a40e02f..139221f3f 100644
--- a/xkb/xkbEvents.c
+++ b/xkb/xkbEvents.c
@@ -816,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/xkbLEDs.c b/xkb/xkbLEDs.c
index ec8e7b14a..e94e0bff4 100644
--- a/xkb/xkbLEDs.c
+++ b/xkb/xkbLEDs.c
@@ -675,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;
@@ -753,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);
@@ -834,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) {
@@ -918,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/xkbUtils.c b/xkb/xkbUtils.c
index 26ff35e89..c9c5ed018 100644
--- a/xkb/xkbUtils.c
+++ b/xkb/xkbUtils.c
@@ -28,6 +28,7 @@ THE USE OR PERFORMANCE OF THIS SOFTWARE.
#include <dix-config.h>
#endif
+#include "os.h"
#include <stdio.h>
#include <ctype.h>
#include <math.h>
@@ -44,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)
{
@@ -91,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)) {
@@ -121,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)) {
@@ -241,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
@@ -559,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;
}
@@ -969,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;
+}